Skip to content

Commit 69a1352

Browse files
Merge pull request iNavFlight#11313 from daijoubu/add-libcanard
Add support for dronecan and initial GPS driver
2 parents 6214cbc + 46a7a89 commit 69a1352

308 files changed

Lines changed: 29559 additions & 36 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitmodules

Whitespace-only changes.

.vscode/tasks.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
"version": "2.0.0",
55
"tasks": [
66
{
7-
"label": "Build AOCODARCH7DUAL",
7+
"label": "Build MATEKH743",
88
"type": "shell",
9-
"command": "make AOCODARCH7DUAL",
9+
"command": "ninja MATEKH743",
1010
"group": "build",
1111
"problemMatcher": [],
1212
"options": {
1313
"cwd": "${workspaceFolder}/build"
1414
}
1515
},
1616
{
17-
"label": "Build AOCODARCH7DUAL",
17+
"label": "Build MATEKH743",
1818
"type": "shell",
19-
"command": "make AOCODARCH7DUAL",
19+
"command": "ninja MATEKH743",
2020
"group": {
2121
"kind": "build",
2222
"isDefault": true

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ get_git_head_revision(GIT_REFSPEC GIT_SHA1)
3737
string(SUBSTRING ${GIT_SHA1} 0 8 GIT_REV)
3838

3939
# Load settings related functions, so the tests can use them
40+
include(dsdlc_generated)
4041
include(main)
4142
include(settings)
4243

cmake/dsdlc_generated.cmake

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
2+
set(DSDLC_GENERATED_DIR "${MAIN_LIB_DIR}/main/Dronecan/dsdlc_generated")
3+
4+
set(DSDLC_GENERATED_SRC
5+
dronecan.protocol.CanStats.c
6+
dronecan.protocol.FlexDebug.c
7+
dronecan.protocol.GlobalTime.c
8+
dronecan.protocol.Stats.c
9+
dronecan.remoteid.ArmStatus.c
10+
dronecan.remoteid.BasicID.c
11+
dronecan.remoteid.Location.c
12+
dronecan.remoteid.OperatorID.c
13+
dronecan.remoteid.SecureCommand_req.c
14+
dronecan.remoteid.SecureCommand_res.c
15+
dronecan.remoteid.SelfID.c
16+
dronecan.remoteid.System.c
17+
dronecan.sensors.hygrometer.Hygrometer.c
18+
dronecan.sensors.magnetometer.MagneticFieldStrengthHiRes.c
19+
dronecan.sensors.rc.RCInput.c
20+
dronecan.sensors.rpm.RPM.c
21+
uavcan.CoarseOrientation.c
22+
uavcan.equipment.actuator.ArrayCommand.c
23+
uavcan.equipment.actuator.Command.c
24+
uavcan.equipment.actuator.Status.c
25+
uavcan.equipment.ahrs.MagneticFieldStrength2.c
26+
uavcan.equipment.ahrs.MagneticFieldStrength.c
27+
uavcan.equipment.ahrs.RawIMU.c
28+
uavcan.equipment.ahrs.Solution.c
29+
uavcan.equipment.air_data.AngleOfAttack.c
30+
uavcan.equipment.air_data.IndicatedAirspeed.c
31+
uavcan.equipment.air_data.RawAirData.c
32+
uavcan.equipment.air_data.Sideslip.c
33+
uavcan.equipment.air_data.StaticPressure.c
34+
uavcan.equipment.air_data.StaticTemperature.c
35+
uavcan.equipment.air_data.TrueAirspeed.c
36+
uavcan.equipment.camera_gimbal.AngularCommand.c
37+
uavcan.equipment.camera_gimbal.GEOPOICommand.c
38+
uavcan.equipment.camera_gimbal.Mode.c
39+
uavcan.equipment.camera_gimbal.Status.c
40+
uavcan.equipment.device.Temperature.c
41+
uavcan.equipment.esc.RawCommand.c
42+
uavcan.equipment.esc.RPMCommand.c
43+
uavcan.equipment.esc.Status.c
44+
uavcan.equipment.esc.StatusExtended.c
45+
uavcan.equipment.gnss.Auxiliary.c
46+
uavcan.equipment.gnss.ECEFPositionVelocity.c
47+
uavcan.equipment.gnss.Fix2.c
48+
uavcan.equipment.gnss.Fix.c
49+
uavcan.equipment.gnss.RTCMStream.c
50+
uavcan.equipment.hardpoint.Command.c
51+
uavcan.equipment.hardpoint.Status.c
52+
uavcan.equipment.ice.FuelTankStatus.c
53+
uavcan.equipment.ice.reciprocating.CylinderStatus.c
54+
uavcan.equipment.ice.reciprocating.Status.c
55+
uavcan.equipment.indication.BeepCommand.c
56+
uavcan.equipment.indication.LightsCommand.c
57+
uavcan.equipment.indication.RGB565.c
58+
uavcan.equipment.indication.SingleLightCommand.c
59+
uavcan.equipment.power.BatteryInfo.c
60+
uavcan.equipment.power.CircuitStatus.c
61+
uavcan.equipment.power.PrimaryPowerSupplyStatus.c
62+
uavcan.equipment.range_sensor.Measurement.c
63+
uavcan.equipment.safety.ArmingStatus.c
64+
uavcan.navigation.GlobalNavigationSolution.c
65+
uavcan.protocol.AccessCommandShell_req.c
66+
uavcan.protocol.AccessCommandShell_res.c
67+
uavcan.protocol.CANIfaceStats.c
68+
uavcan.protocol.DataTypeKind.c
69+
uavcan.protocol.debug.KeyValue.c
70+
uavcan.protocol.debug.LogLevel.c
71+
uavcan.protocol.debug.LogMessage.c
72+
uavcan.protocol.dynamic_node_id.Allocation.c
73+
uavcan.protocol.dynamic_node_id.server.AppendEntries_req.c
74+
uavcan.protocol.dynamic_node_id.server.AppendEntries_res.c
75+
uavcan.protocol.dynamic_node_id.server.Discovery.c
76+
uavcan.protocol.dynamic_node_id.server.Entry.c
77+
uavcan.protocol.dynamic_node_id.server.RequestVote_req.c
78+
uavcan.protocol.dynamic_node_id.server.RequestVote_res.c
79+
uavcan.protocol.enumeration.Begin_req.c
80+
uavcan.protocol.enumeration.Begin_res.c
81+
uavcan.protocol.enumeration.Indication.c
82+
uavcan.protocol.file.BeginFirmwareUpdate_req.c
83+
uavcan.protocol.file.BeginFirmwareUpdate_res.c
84+
uavcan.protocol.file.Delete_req.c
85+
uavcan.protocol.file.Delete_res.c
86+
uavcan.protocol.file.EntryType.c
87+
uavcan.protocol.file.Error.c
88+
uavcan.protocol.file.GetDirectoryEntryInfo_req.c
89+
uavcan.protocol.file.GetDirectoryEntryInfo_res.c
90+
uavcan.protocol.file.GetInfo_req.c
91+
uavcan.protocol.file.GetInfo_res.c
92+
uavcan.protocol.file.Path.c
93+
uavcan.protocol.file.Read_req.c
94+
uavcan.protocol.file.Read_res.c
95+
uavcan.protocol.file.Write_req.c
96+
uavcan.protocol.file.Write_res.c
97+
uavcan.protocol.GetDataTypeInfo_req.c
98+
uavcan.protocol.GetDataTypeInfo_res.c
99+
uavcan.protocol.GetNodeInfo_req.c
100+
uavcan.protocol.GetNodeInfo_res.c
101+
uavcan.protocol.GetTransportStats_req.c
102+
uavcan.protocol.GetTransportStats_res.c
103+
uavcan.protocol.GlobalTimeSync.c
104+
uavcan.protocol.HardwareVersion.c
105+
uavcan.protocol.NodeStatus.c
106+
uavcan.protocol.Panic.c
107+
uavcan.protocol.param.Empty.c
108+
uavcan.protocol.param.ExecuteOpcode_req.c
109+
uavcan.protocol.param.ExecuteOpcode_res.c
110+
uavcan.protocol.param.GetSet_req.c
111+
uavcan.protocol.param.GetSet_res.c
112+
uavcan.protocol.param.NumericValue.c
113+
uavcan.protocol.param.Value.c
114+
uavcan.protocol.RestartNode_req.c
115+
uavcan.protocol.RestartNode_res.c
116+
uavcan.protocol.SoftwareVersion.c
117+
uavcan.Timestamp.c
118+
uavcan.tunnel.Broadcast.c
119+
uavcan.tunnel.Call_req.c
120+
uavcan.tunnel.Call_res.c
121+
uavcan.tunnel.Protocol.c
122+
uavcan.tunnel.SerialConfig.c
123+
uavcan.tunnel.Targetted.c
124+
)
125+
126+
list(TRANSFORM DSDLC_GENERATED_SRC PREPEND "${DSDLC_GENERATED_DIR}/src/")
127+
128+
set(DSDLC_GENERATED_DIRS
129+
${DSDLC_GENERATED_DIR}/include
130+
)
131+
132+

cmake/main.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ set(MAIN_INCLUDE_DIRS
22
"${MAIN_LIB_DIR}"
33
"${MAIN_SRC_DIR}"
44
"${MAIN_LIB_DIR}/main/MAVLink"
5+
"${MAIN_SRC_DIR}/drivers/dronecan/libcanard"
6+
"${DSDLC_GENERATED_DIRS}"
57
)
68

79
set(MAIN_DEFINITIONS

cmake/sitl.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ main_sources(SITL_COMMON_SRC_EXCLUDES
1313

1414
main_sources(SITL_SRC
1515
config/config_streamer_file.c
16+
drivers/dronecan/libcanard/canard_sitl_driver.c
1617
drivers/serial_tcp.c
1718
drivers/serial_tcp.h
1819
target/SITL/sim/realFlight.c
@@ -64,6 +65,7 @@ if(NOT MACOSX)
6465
-Wno-error=maybe-uninitialized
6566
-fsingle-precision-constant
6667
)
68+
6769
include(CheckLinkerFlag OPTIONAL)
6870
if(COMMAND check_linker_flag)
6971
check_linker_flag(C "-Wl,--no-warn-rwx-segments" LINKER_SUPPORTS_NO_RWX_WARNING)

cmake/stm32f7.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ set(STM32F7_HAL_SRC
77
stm32f7xx_hal.c
88
stm32f7xx_hal_adc.c
99
stm32f7xx_hal_adc_ex.c
10+
stm32f7xx_hal_can.c
1011
stm32f7xx_hal_cortex.c
1112
stm32f7xx_hal_dac.c
1213
stm32f7xx_hal_dac_ex.c
@@ -77,6 +78,8 @@ main_sources(STM32F7_SRC
7778
drivers/serial_uart_stm32f7xx.c
7879
drivers/serial_uart_hal.c
7980
drivers/sdcard/sdmmc_sdio_hal.c
81+
drivers/dronecan/libcanard/canard_stm32f7xx_driver.c
82+
8083
)
8184

8285
main_sources(STM32F7_MSC_SRC

cmake/stm32h7.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ set(STM32H7_HAL_SRC
2828
# stm32h7xx_hal_eth.c
2929
# stm32h7xx_hal_eth_ex.c
3030
stm32h7xx_hal_exti.c
31-
# stm32h7xx_hal_fdcan.c
31+
stm32h7xx_hal_fdcan.c
3232
stm32h7xx_hal_flash.c
3333
stm32h7xx_hal_flash_ex.c
3434
stm32h7xx_hal_gfxmmu.c
@@ -162,6 +162,8 @@ main_sources(STM32H7_SRC
162162
drivers/serial_uart_hal.c
163163
drivers/sdio.h
164164
drivers/sdcard/sdmmc_sdio_hal.c
165+
drivers/dronecan/libcanard/canard_stm32h7xx_driver.c
166+
165167
)
166168

167169
main_sources(STM32H7_MSC_SRC

docs/Battery.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,15 @@ Configure the current meter type using the `current_meter_type` settings here:
9191

9292
| Value | Sensor Type |
9393
| ----- | ---------------------- |
94-
| 0 | None |
95-
| 1 | ADC/hardware sensor |
96-
| 2 | Virtual sensor |
94+
| NONE | Disabled |
95+
| ADC | ADC/hardware sensor |
96+
| VIRTUAL | Virtual sensor (estimated from throttle) |
97+
| FAKE | Fake sensor (for testing) |
98+
| ESC | ESC telemetry |
99+
| SMARTPORT | SmartPort telemetry |
100+
| CAN | DroneCAN battery monitor |
101+
102+
See [DroneCAN](DroneCAN.md) for information on using DroneCAN battery monitors.
97103

98104
Configure capacity using the `battery_capacity` setting, in mAh units.
99105

0 commit comments

Comments
 (0)