Skip to content

Commit 405d363

Browse files
committed
initial cpp port
1 parent 201a21e commit 405d363

190 files changed

Lines changed: 879 additions & 757 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.

lib/cbor/include/cbor.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
#include <stdbool.h>
44
#include <stdint.h>
55

6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
610
typedef enum {
711
CBOR_OK = 0,
812
CBOR_ERR_EOF = -1,
@@ -95,4 +99,8 @@ cbor_result_t cbor_encode_tstr(cbor_value_t *enc, const uint8_t *buf, uint32_t l
9599
cbor_result_t cbor_encode_str(cbor_value_t *enc, const char *buf);
96100

97101
cbor_result_t cbor_encode_tag(cbor_value_t *enc, const uint32_t *val);
98-
cbor_result_t cbor_encode_bool(cbor_value_t *enc, const bool *val);
102+
cbor_result_t cbor_encode_bool(cbor_value_t *enc, const bool *val);
103+
104+
#ifdef __cplusplus
105+
}
106+
#endif

script/post_script.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def before_upload(source, target, env):
2424
time.sleep(2)
2525

2626

27-
remove_flags = ["gcc", "stdc++", "nosys", "--specs=nosys.specs"]
27+
remove_flags = ["gcc", "nosys", "--specs=nosys.specs"]
2828
for scope in ("ASFLAGS", "CCFLAGS", "LINKFLAGS", "LIBS"):
2929
for option in remove_flags:
3030
while option in env[scope]:

script/pre_script.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@
1414
system_flags = [s for s in env.GetProjectOption("system_flags", "").splitlines() if s]
1515

1616
common_flags = [
17-
"-std=gnu11",
1817
"-Wdouble-promotion",
1918
"-fsingle-precision-constant",
20-
"-fno-exceptions",
2119
"-fno-strict-aliasing",
2220
"-fstack-usage",
2321
"-fno-stack-protector",
@@ -28,6 +26,15 @@
2826
"-fmerge-all-constants",
2927
]
3028

29+
c_flags = [
30+
"-std=gnu11",
31+
]
32+
33+
cxx_flags = [
34+
"-std=gnu++17",
35+
"-fno-exceptions",
36+
]
37+
3138
if env.GetBuildType() == "release":
3239
common_flags.insert(0, "-flto=auto")
3340
common_flags.insert(0, "-Ofast")
@@ -51,8 +58,10 @@
5158
BUILD_UNFLAGS=["-Og", "-Os", "-DDEBUG"],
5259
ASFLAGS=system_flags + common_flags,
5360
CCFLAGS=system_flags + common_flags,
61+
CFLAGS=c_flags,
62+
CXXFLAGS=cxx_flags,
5463
CPPDEFINES=[("GIT_VERSION", git_version)],
55-
LINKFLAGS=system_flags + common_flags,
64+
LINKFLAGS=system_flags + common_flags + cxx_flags,
5665
)
5766

5867

File renamed without changes.
File renamed without changes.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ static void looptime_auto_detect() {
5555
if (loop_counter == 200) {
5656
loop_avg /= 200;
5757
if (loop_avg > (state.looptime_autodetect + 5.0f)) {
58-
state.looptime_autodetect = min(500, state.looptime_autodetect * 2.0f);
58+
state.looptime_autodetect = MIN(500, state.looptime_autodetect * 2.0f);
5959
} else if (loop_avg < (state.looptime_autodetect * 0.5f)) {
60-
state.looptime_autodetect = max(LOOPTIME_MAX, state.looptime_autodetect * 0.5f);
60+
state.looptime_autodetect = MAX(LOOPTIME_MAX, state.looptime_autodetect * 0.5f);
6161
}
6262
loop_counter++;
6363
}

src/core/main.c renamed to src/core/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include "io/vtx.h"
3030
#include "osd/render.h"
3131

32-
__attribute__((__used__)) void
32+
extern "C" __attribute__((__used__)) void
3333
memory_section_init() {
3434
#ifdef USE_FAST_RAM
3535
extern uint8_t _fast_ram_start;
Lines changed: 104 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,16 @@ const profile_t default_profile = {
132132
},
133133

134134
.motor = {
135+
.digital_idle = DIGITAL_IDLE,
136+
.motor_limit = MOTOR_LIMIT,
137+
.dshot_time = DSHOT_TIME_600,
138+
.dshot_telemetry = false,
135139
#ifdef INVERT_YAW_PID
136140
.invert_yaw = 1,
137141
#else
138142
.invert_yaw = 0,
139143
#endif
140-
.motor_limit = MOTOR_LIMIT,
141-
.digital_idle = DIGITAL_IDLE,
142-
.dshot_time = DSHOT_TIME_600,
143-
.dshot_telemetry = false,
144-
144+
.gyro_orientation = GYRO_ROTATE_NONE,
145145
#ifdef TORQUE_BOOST
146146
.torque_boost = TORQUE_BOOST,
147147
#else
@@ -152,7 +152,6 @@ const profile_t default_profile = {
152152
#else
153153
.throttle_boost = 0.0,
154154
#endif
155-
.gyro_orientation = GYRO_ROTATE_NONE,
156155
.motor_pins = {
157156
MOTOR_PIN0,
158157
MOTOR_PIN1,
@@ -214,6 +213,51 @@ const profile_t default_profile = {
214213
#endif
215214
},
216215

216+
.osd = {
217+
.guac_mode = 0,
218+
.profiles = {
219+
[OSD_PROFILE_1] = {
220+
.callsign = "QUICKSILVER",
221+
.elements = {
222+
ENCODE_OSD_ELEMENT(1, 1, 9, 1, 19, 0), // OSD_CALLSIGN
223+
ENCODE_OSD_ELEMENT(1, 0, 11, 14, 21, 17), // OSD_CELL_COUNT
224+
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_FUELGAUGE_VOLTS
225+
ENCODE_OSD_ELEMENT(1, 0, 14, 14, 24, 17), // OSD_FILTERED_VOLTS
226+
ENCODE_OSD_ELEMENT(1, 0, 24, 14, 44, 17), // OSD_GYRO_TEMP
227+
ENCODE_OSD_ELEMENT(1, 0, 10, 13, 20, 16), // OSD_FLIGHT_MODE
228+
ENCODE_OSD_ELEMENT(1, 0, 24, 1, 44, 0), // OSD_RSSI
229+
ENCODE_OSD_ELEMENT(1, 0, 24, 13, 44, 16), // OSD_STOPWATCH
230+
ENCODE_OSD_ELEMENT(1, 0, 4, 6, 14, 8), // OSD_SYSTEM_STATUS
231+
ENCODE_OSD_ELEMENT(1, 0, 1, 1, 0, 0), // OSD_THROTTLE
232+
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_VTX_CHANNEL
233+
ENCODE_OSD_ELEMENT(1, 0, 1, 14, 0, 17), // OSD_CURRENT_DRAW
234+
ENCODE_OSD_ELEMENT(0, 0, 14, 6, 15, 8), // OSD_CROSSHAIR
235+
ENCODE_OSD_ELEMENT(1, 0, 1, 13, 0, 16), // OSD_CURRENT_DRAWN
236+
},
237+
},
238+
[OSD_PROFILE_2] = {
239+
.callsign = "QUICKSILVER",
240+
.elements = {
241+
ENCODE_OSD_ELEMENT(0, 1, 9, 1, 19, 0), // OSD_CALLSIGN
242+
ENCODE_OSD_ELEMENT(0, 0, 11, 14, 21, 17), // OSD_CELL_COUNT
243+
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_FUELGAUGE_VOLTS
244+
ENCODE_OSD_ELEMENT(0, 0, 14, 14, 24, 17), // OSD_FILTERED_VOLTS
245+
ENCODE_OSD_ELEMENT(0, 0, 24, 14, 44, 17), // OSD_GYRO_TEMP
246+
ENCODE_OSD_ELEMENT(0, 0, 10, 13, 20, 16), // OSD_FLIGHT_MODE
247+
ENCODE_OSD_ELEMENT(0, 0, 24, 1, 44, 0), // OSD_RSSI
248+
ENCODE_OSD_ELEMENT(0, 0, 24, 13, 44, 16), // OSD_STOPWATCH
249+
ENCODE_OSD_ELEMENT(0, 0, 4, 6, 14, 8), // OSD_SYSTEM_STATUS
250+
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_THROTTLE
251+
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_VTX_CHANNEL
252+
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_CURRENT_DRAW
253+
ENCODE_OSD_ELEMENT(0, 0, 14, 6, 15, 8), // OSD_CROSSHAIR
254+
ENCODE_OSD_ELEMENT(0, 0, 1, 13, 0, 16), // OSD_CURRENT_DRAWN
255+
},
256+
},
257+
},
258+
259+
},
260+
217261
.rate = {
218262
.profile = STICK_RATE_PROFILE_1,
219263
.rates = {
@@ -309,6 +353,53 @@ const profile_t default_profile = {
309353
.throttle_expo = THROTTLE_EXPO,
310354
},
311355

356+
.receiver = {
357+
.protocol = RX_PROTOCOL_UNIFIED_SERIAL,
358+
359+
.aux = {
360+
ARMING, // AUX_ARMING
361+
IDLE_UP, // AUX_IDLE_UP
362+
LEVELMODE, // AUX_LEVELMODE
363+
RACEMODE, // AUX_RACEMODE
364+
HORIZON, // AUX_HORIZON
365+
STICK_BOOST_PROFILE, // AUX_STICK_BOOST_PROFILE
366+
AUX_CHANNEL_OFF, // UNUSED_AUX_HIGH_RATES
367+
#ifdef BUZZER_ENABLE // AUX_BUZZER_ENABLE
368+
BUZZER_ENABLE,
369+
#else
370+
AUX_CHANNEL_OFF,
371+
#endif
372+
TURTLE, // AUX_TURTLE
373+
374+
#ifdef MOTORS_TO_THROTTLE_MODE // AUX_MOTOR_TEST
375+
MOTORS_TO_THROTTLE_MODE,
376+
#else
377+
AUX_CHANNEL_OFF,
378+
#endif
379+
RSSI,
380+
#ifdef FPV_SWITCH // AUX_FPV_SWITCH
381+
FPV_SWITCH,
382+
#else
383+
AUX_CHANNEL_OFF,
384+
#endif
385+
AUX_CHANNEL_OFF, // AUX_BLACKBOX
386+
PREARM, // AUX_PREARM
387+
AUX_CHANNEL_OFF, // AUX_OSD_PROFILE
388+
},
389+
#ifdef CHANNEL_MAPPING
390+
.channel_mapping = CHANNEL_MAPPING,
391+
#else
392+
.channel_mapping = RX_MAPPING_AETR,
393+
#endif
394+
.lqi_source = RX_LQI_SOURCE_DIRECT,
395+
.stick_calibration_limits = {
396+
{.min = -1, .max = 1}, // axis[0]
397+
{.min = -1, .max = 1}, // axis[1]
398+
{.min = -1, .max = 1}, // axis[2]
399+
{.min = 0, .max = 1} // axis[3]
400+
},
401+
},
402+
312403
//************************************PIDS****************************************
313404
.pid = {
314405
.pid_profile = PID_PROFILE_1,
@@ -345,18 +436,18 @@ const profile_t default_profile = {
345436
},
346437
//**************************** ANGLE PIDS - used in level mode to set leveling strength
347438

348-
// Leveling algorithm coefficients for small errors (normal flying)
349-
.small_angle = {
350-
.kp = 10.00, // P TERM GAIN ROLL + PITCH
351-
.kd = 3.0, // D TERM GAIN ROLL + PITCH
352-
},
353-
354439
// Leveling algorithm coefficients for large errors (stick banging or collisions)
355440
.big_angle = {
356441
.kp = 5.00, // P TERM GAIN ROLL + PITCH
357442
.kd = 0.0, // D TERM GAIN ROLL + PITCH
358443
},
359444

445+
// Leveling algorithm coefficients for small errors (normal flying)
446+
.small_angle = {
447+
.kp = 10.00, // P TERM GAIN ROLL + PITCH
448+
.kd = 3.0, // D TERM GAIN ROLL + PITCH
449+
},
450+
360451
.throttle_dterm_attenuation = {
361452
#ifdef THROTTLE_D_ATTENUATION
362453
.tda_active = THROTTLE_D_ATTENUATION_ACTIVE,
@@ -367,6 +458,7 @@ const profile_t default_profile = {
367458
.tda_percent = TDA_PERCENT,
368459
},
369460
},
461+
370462
.voltage = {
371463
#ifdef LIPO_CELL_COUNT
372464
.lipo_cell_count = LIPO_CELL_COUNT,
@@ -389,96 +481,7 @@ const profile_t default_profile = {
389481
.ibat_scale = 0,
390482
#endif
391483
},
392-
.receiver = {
393-
.protocol = RX_PROTOCOL_UNIFIED_SERIAL,
394-
395-
.aux = {
396-
ARMING, // AUX_ARMING
397-
IDLE_UP, // AUX_IDLE_UP
398-
LEVELMODE, // AUX_LEVELMODE
399-
RACEMODE, // AUX_RACEMODE
400-
HORIZON, // AUX_HORIZON
401-
STICK_BOOST_PROFILE, // AUX_STICK_BOOST_PROFILE
402-
AUX_CHANNEL_OFF, // UNUSED_AUX_HIGH_RATES
403-
#ifdef BUZZER_ENABLE // AUX_BUZZER_ENABLE
404-
BUZZER_ENABLE,
405-
#else
406-
AUX_CHANNEL_OFF,
407-
#endif
408-
TURTLE, // AUX_TURTLE
409-
410-
#ifdef MOTORS_TO_THROTTLE_MODE // AUX_MOTOR_TEST
411-
MOTORS_TO_THROTTLE_MODE,
412-
#else
413-
AUX_CHANNEL_OFF,
414-
#endif
415-
RSSI,
416-
#ifdef FPV_SWITCH // AUX_FPV_SWITCH
417-
FPV_SWITCH,
418-
#else
419-
AUX_CHANNEL_OFF,
420-
#endif
421-
AUX_CHANNEL_OFF, // AUX_BLACKBOX
422-
PREARM, // AUX_PREARM
423-
AUX_CHANNEL_OFF, // AUX_OSD_PROFILE
424-
},
425-
.lqi_source = RX_LQI_SOURCE_DIRECT,
426-
#ifdef CHANNEL_MAPPING
427-
.channel_mapping = CHANNEL_MAPPING,
428-
#else
429-
.channel_mapping = RX_MAPPING_AETR,
430-
#endif
431-
.stick_calibration_limits = {
432-
{.min = -1, .max = 1}, // axis[0]
433-
{.min = -1, .max = 1}, // axis[1]
434-
{.min = -1, .max = 1}, // axis[2]
435-
{.min = 0, .max = 1} // axis[3]
436-
},
437-
},
438-
.osd = {
439-
.guac_mode = 0,
440-
.profiles = {
441-
[OSD_PROFILE_1] = {
442-
.callsign = "QUICKSILVER",
443-
.elements = {
444-
ENCODE_OSD_ELEMENT(1, 1, 9, 1, 19, 0), // OSD_CALLSIGN
445-
ENCODE_OSD_ELEMENT(1, 0, 11, 14, 21, 17), // OSD_CELL_COUNT
446-
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_FUELGAUGE_VOLTS
447-
ENCODE_OSD_ELEMENT(1, 0, 14, 14, 24, 17), // OSD_FILTERED_VOLTS
448-
ENCODE_OSD_ELEMENT(1, 0, 24, 14, 44, 17), // OSD_GYRO_TEMP
449-
ENCODE_OSD_ELEMENT(1, 0, 10, 13, 20, 16), // OSD_FLIGHT_MODE
450-
ENCODE_OSD_ELEMENT(1, 0, 24, 1, 44, 0), // OSD_RSSI
451-
ENCODE_OSD_ELEMENT(1, 0, 24, 13, 44, 16), // OSD_STOPWATCH
452-
ENCODE_OSD_ELEMENT(1, 0, 4, 6, 14, 8), // OSD_SYSTEM_STATUS
453-
ENCODE_OSD_ELEMENT(1, 0, 1, 1, 0, 0), // OSD_THROTTLE
454-
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_VTX_CHANNEL
455-
ENCODE_OSD_ELEMENT(1, 0, 1, 14, 0, 17), // OSD_CURRENT_DRAW
456-
ENCODE_OSD_ELEMENT(0, 0, 14, 6, 15, 8), // OSD_CROSSHAIR
457-
ENCODE_OSD_ELEMENT(1, 0, 1, 13, 0, 16), // OSD_CURRENT_DRAWN
458-
},
459-
},
460-
[OSD_PROFILE_2] = {
461-
.callsign = "QUICKSILVER",
462-
.elements = {
463-
ENCODE_OSD_ELEMENT(0, 1, 9, 1, 19, 0), // OSD_CALLSIGN
464-
ENCODE_OSD_ELEMENT(0, 0, 11, 14, 21, 17), // OSD_CELL_COUNT
465-
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_FUELGAUGE_VOLTS
466-
ENCODE_OSD_ELEMENT(0, 0, 14, 14, 24, 17), // OSD_FILTERED_VOLTS
467-
ENCODE_OSD_ELEMENT(0, 0, 24, 14, 44, 17), // OSD_GYRO_TEMP
468-
ENCODE_OSD_ELEMENT(0, 0, 10, 13, 20, 16), // OSD_FLIGHT_MODE
469-
ENCODE_OSD_ELEMENT(0, 0, 24, 1, 44, 0), // OSD_RSSI
470-
ENCODE_OSD_ELEMENT(0, 0, 24, 13, 44, 16), // OSD_STOPWATCH
471-
ENCODE_OSD_ELEMENT(0, 0, 4, 6, 14, 8), // OSD_SYSTEM_STATUS
472-
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_THROTTLE
473-
ENCODE_OSD_ELEMENT(0, 0, 1, 1, 0, 0), // OSD_VTX_CHANNEL
474-
ENCODE_OSD_ELEMENT(0, 0, 1, 14, 0, 17), // OSD_CURRENT_DRAW
475-
ENCODE_OSD_ELEMENT(0, 0, 14, 6, 15, 8), // OSD_CROSSHAIR
476-
ENCODE_OSD_ELEMENT(0, 0, 1, 13, 0, 16), // OSD_CURRENT_DRAWN
477-
},
478-
},
479-
},
480484

481-
},
482485
.blackbox = {
483486
#ifdef BLACKBOX_DEBUG_FLAGS
484487
.debug_flags = BLACKBOX_DEBUG_FLAGS,

src/core/project.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,3 @@
1818
#else
1919
#define DMA_RAM
2020
#endif
21-
22-
#define static_assert(...) _Static_assert(__VA_ARGS__)

0 commit comments

Comments
 (0)