chore: use single target to support nv14/el18/pl18/pl18ev/nb4p (#5397)

This commit is contained in:
richardclli
2025-02-04 11:57:12 +10:00
committed by GitHub
parent 80d831832f
commit 0325bd776b
35 changed files with 1913 additions and 461 deletions
+1 -1
View File
@@ -352,7 +352,7 @@ elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T16)
set(FLAVOUR t16)
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL T18)
set(FLAVOUR t18)
elseif(PCB STREQUAL NV14 AND PCBREV STREQUAL EL18)
elseif(PCB STREQUAL PL18 AND PCBREV STREQUAL EL18)
set(FLAVOUR el18)
elseif(PCB STREQUAL PL18 AND PCBREV STREQUAL PL18EV)
set(FLAVOUR pl18ev)
+4 -4
View File
@@ -73,7 +73,7 @@ static inline void check_struct()
CHKSIZE(TimerData, 17);
CHKSIZE(ModelHeader, 131);
CHKSIZE(CustomScreenData, 1892);
#if defined(PCBNV14) || defined(RADIO_NB4P)
#if defined(PCBNV14) || defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
CHKTYPE(TopBarPersistentData, 704);
#else
CHKTYPE(TopBarPersistentData, 1048);
@@ -104,14 +104,14 @@ static inline void check_struct()
CHKSIZE(ModelData, 6770);
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE)
CHKSIZE(ModelData, 6329);
#elif defined(PCBNV14)
CHKSIZE(ModelData, 26463);
#elif defined(PCBPL18)
#if defined(RADIO_NB4P)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
CHKSIZE(ModelData, 26499);
#else
CHKSIZE(ModelData, 26845);
#endif
#elif defined(PCBNV14)
CHKSIZE(ModelData, 26463);
#elif defined(RADIO_T15)
CHKSIZE(ModelData, 26834);
#elif defined(PCBHORUS)
+2
View File
@@ -27,6 +27,8 @@ elseif(PCB STREQUAL NV14)
elseif(PCB STREQUAL PL18)
if(PCBREV STREQUAL NB4P)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_nb4p.cpp)
elseif(PCBREV STREQUAL NV14)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_nv14_family.cpp)
else()
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_pl18.cpp)
endif()
+4 -2
View File
@@ -36,14 +36,16 @@
#else
#include "yaml_datastructs_x10.cpp"
#endif
#elif defined(PCBNV14)
#include "yaml_datastructs_nv14.cpp"
#elif defined(PCBPL18)
#if defined(RADIO_NB4P)
#include "yaml_datastructs_nb4p.cpp"
#elif defined(RADIO_NV14_FAMILY)
#include "yaml_datastructs_nv14_family.cpp"
#else
#include "yaml_datastructs_pl18.cpp"
#endif
#elif defined(PCBNV14)
#include "yaml_datastructs_nv14.cpp"
#elif defined(PCBX7)
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_BUMBLEBEE)
#include "yaml_datastructs_tpro.cpp"
@@ -0,0 +1,919 @@
// generated by generate_yaml.py
//
// Enums first
//
const struct YamlIdStr enum_HatsMode[] = {
{ HATSMODE_TRIMS_ONLY, "TRIMS_ONLY" },
{ HATSMODE_KEYS_ONLY, "KEYS_ONLY" },
{ HATSMODE_SWITCHABLE, "SWITCHABLE" },
{ HATSMODE_GLOBAL, "GLOBAL" },
{ 0, NULL }
};
const struct YamlIdStr enum_BacklightMode[] = {
{ e_backlight_mode_off, "backlight_mode_off" },
{ e_backlight_mode_keys, "backlight_mode_keys" },
{ e_backlight_mode_sticks, "backlight_mode_sticks" },
{ e_backlight_mode_all, "backlight_mode_all" },
{ e_backlight_mode_on, "backlight_mode_on" },
{ 0, NULL }
};
const struct YamlIdStr enum_AntennaModes[] = {
{ ANTENNA_MODE_INTERNAL, "MODE_INTERNAL" },
{ ANTENNA_MODE_ASK, "MODE_ASK" },
{ ANTENNA_MODE_PER_MODEL, "MODE_PER_MODEL" },
{ ANTENNA_MODE_EXTERNAL, "MODE_EXTERNAL" },
{ 0, NULL }
};
const struct YamlIdStr enum_ModuleType[] = {
{ MODULE_TYPE_NONE, "TYPE_NONE" },
{ MODULE_TYPE_PPM, "TYPE_PPM" },
{ MODULE_TYPE_XJT_PXX1, "TYPE_XJT_PXX1" },
{ MODULE_TYPE_ISRM_PXX2, "TYPE_ISRM_PXX2" },
{ MODULE_TYPE_DSM2, "TYPE_DSM2" },
{ MODULE_TYPE_CROSSFIRE, "TYPE_CROSSFIRE" },
{ MODULE_TYPE_MULTIMODULE, "TYPE_MULTIMODULE" },
{ MODULE_TYPE_R9M_PXX1, "TYPE_R9M_PXX1" },
{ MODULE_TYPE_R9M_PXX2, "TYPE_R9M_PXX2" },
{ MODULE_TYPE_R9M_LITE_PXX1, "TYPE_R9M_LITE_PXX1" },
{ MODULE_TYPE_R9M_LITE_PXX2, "TYPE_R9M_LITE_PXX2" },
{ MODULE_TYPE_GHOST, "TYPE_GHOST" },
{ MODULE_TYPE_R9M_LITE_PRO_PXX2, "TYPE_R9M_LITE_PRO_PXX2" },
{ MODULE_TYPE_SBUS, "TYPE_SBUS" },
{ MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" },
{ MODULE_TYPE_FLYSKY_AFHDS2A, "TYPE_FLYSKY_AFHDS2A" },
{ MODULE_TYPE_FLYSKY_AFHDS3, "TYPE_FLYSKY_AFHDS3" },
{ MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" },
{ 0, NULL }
};
const struct YamlIdStr enum_TrainerMultiplex[] = {
{ TRAINER_OFF, "OFF" },
{ TRAINER_ADD, "ADD" },
{ TRAINER_REPL, "REPL" },
{ 0, NULL }
};
const struct YamlIdStr enum_BeeperMode[] = {
{ e_mode_quiet, "mode_quiet" },
{ e_mode_alarms, "mode_alarms" },
{ e_mode_nokeys, "mode_nokeys" },
{ e_mode_all, "mode_all" },
{ 0, NULL }
};
const struct YamlIdStr enum_BluetoothModes[] = {
{ BLUETOOTH_OFF, "OFF" },
{ BLUETOOTH_TELEMETRY, "TELEMETRY" },
{ BLUETOOTH_TRAINER, "TRAINER" },
{ 0, NULL }
};
const struct YamlIdStr enum_Functions[] = {
{ FUNC_OVERRIDE_CHANNEL, "OVERRIDE_CHANNEL" },
{ FUNC_TRAINER, "TRAINER" },
{ FUNC_INSTANT_TRIM, "INSTANT_TRIM" },
{ FUNC_RESET, "RESET" },
{ FUNC_SET_TIMER, "SET_TIMER" },
{ FUNC_ADJUST_GVAR, "ADJUST_GVAR" },
{ FUNC_VOLUME, "VOLUME" },
{ FUNC_SET_FAILSAFE, "SET_FAILSAFE" },
{ FUNC_RANGECHECK, "RANGECHECK" },
{ FUNC_BIND, "BIND" },
{ FUNC_PLAY_SOUND, "PLAY_SOUND" },
{ FUNC_PLAY_TRACK, "PLAY_TRACK" },
{ FUNC_PLAY_VALUE, "PLAY_VALUE" },
{ FUNC_PLAY_SCRIPT, "PLAY_SCRIPT" },
{ FUNC_BACKGND_MUSIC, "BACKGND_MUSIC" },
{ FUNC_BACKGND_MUSIC_PAUSE, "BACKGND_MUSIC_PAUSE" },
{ FUNC_VARIO, "VARIO" },
{ FUNC_HAPTIC, "HAPTIC" },
{ FUNC_LOGS, "LOGS" },
{ FUNC_BACKLIGHT, "BACKLIGHT" },
{ FUNC_SCREENSHOT, "SCREENSHOT" },
{ FUNC_RACING_MODE, "RACING_MODE" },
{ FUNC_DISABLE_TOUCH, "DISABLE_TOUCH" },
{ FUNC_SET_SCREEN, "SET_SCREEN" },
{ FUNC_DISABLE_AUDIO_AMP, "DISABLE_AUDIO_AMP" },
{ FUNC_RGB_LED, "RGB_LED" },
{ FUNC_TEST, "TEST" },
{ 0, NULL }
};
const struct YamlIdStr enum_TimerModes[] = {
{ TMRMODE_OFF, "OFF" },
{ TMRMODE_ON, "ON" },
{ TMRMODE_START, "START" },
{ TMRMODE_THR, "THR" },
{ TMRMODE_THR_REL, "THR_REL" },
{ TMRMODE_THR_START, "THR_START" },
{ 0, NULL }
};
const struct YamlIdStr enum_MixerMultiplex[] = {
{ MLTPX_ADD, "ADD" },
{ MLTPX_MUL, "MUL" },
{ MLTPX_REPL, "REPL" },
{ 0, NULL }
};
const struct YamlIdStr enum_MixSources[] = {
{ MIXSRC_NONE, "NONE" },
{ MIXSRC_MIN, "MIN" },
{ MIXSRC_MAX, "MAX" },
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
{ MIXSRC_TX_TIME, "TX_TIME" },
{ MIXSRC_TX_GPS, "TX_GPS" },
{ 0, NULL }
};
const struct YamlIdStr enum_LogicalSwitchesFunctions[] = {
{ LS_FUNC_NONE, "FUNC_NONE" },
{ LS_FUNC_VEQUAL, "FUNC_VEQUAL" },
{ LS_FUNC_VALMOSTEQUAL, "FUNC_VALMOSTEQUAL" },
{ LS_FUNC_VPOS, "FUNC_VPOS" },
{ LS_FUNC_VNEG, "FUNC_VNEG" },
{ LS_FUNC_APOS, "FUNC_APOS" },
{ LS_FUNC_ANEG, "FUNC_ANEG" },
{ LS_FUNC_AND, "FUNC_AND" },
{ LS_FUNC_OR, "FUNC_OR" },
{ LS_FUNC_XOR, "FUNC_XOR" },
{ LS_FUNC_EDGE, "FUNC_EDGE" },
{ LS_FUNC_EQUAL, "FUNC_EQUAL" },
{ LS_FUNC_GREATER, "FUNC_GREATER" },
{ LS_FUNC_LESS, "FUNC_LESS" },
{ LS_FUNC_DIFFEGREATER, "FUNC_DIFFEGREATER" },
{ LS_FUNC_ADIFFEGREATER, "FUNC_ADIFFEGREATER" },
{ LS_FUNC_TIMER, "FUNC_TIMER" },
{ LS_FUNC_STICKY, "FUNC_STICKY" },
{ 0, NULL }
};
const struct YamlIdStr enum_SwashType[] = {
{ SWASH_TYPE_NONE, "TYPE_NONE" },
{ SWASH_TYPE_120, "TYPE_120" },
{ SWASH_TYPE_120X, "TYPE_120X" },
{ SWASH_TYPE_140, "TYPE_140" },
{ SWASH_TYPE_90, "TYPE_90" },
{ 0, NULL }
};
const struct YamlIdStr enum_SwitchSources[] = {
{ SWSRC_NONE, "NONE" },
{ SWSRC_ON, "ON" },
{ SWSRC_ONE, "ONE" },
{ SWSRC_TELEMETRY_STREAMING, "TELEMETRY_STREAMING" },
{ SWSRC_RADIO_ACTIVITY, "RADIO_ACTIVITY" },
{ SWSRC_TRAINER_CONNECTED, "TRAINER_CONNECTED" },
{ SWSRC_OFF, "OFF" },
{ 0, NULL }
};
const struct YamlIdStr enum_PotsWarnMode[] = {
{ POTS_WARN_OFF, "WARN_OFF" },
{ POTS_WARN_MANUAL, "WARN_MANUAL" },
{ POTS_WARN_AUTO, "WARN_AUTO" },
{ 0, NULL }
};
const struct YamlIdStr enum_ModelOverridableEnable[] = {
{ OVERRIDE_GLOBAL, "GLOBAL" },
{ OVERRIDE_OFF, "OFF" },
{ OVERRIDE_ON, "ON" },
{ 0, NULL }
};
const struct YamlIdStr enum_FailsafeModes[] = {
{ FAILSAFE_NOT_SET, "NOT_SET" },
{ FAILSAFE_HOLD, "HOLD" },
{ FAILSAFE_CUSTOM, "CUSTOM" },
{ FAILSAFE_NOPULSES, "NOPULSES" },
{ FAILSAFE_RECEIVER, "RECEIVER" },
{ 0, NULL }
};
const struct YamlIdStr enum_TelemetrySensorFormula[] = {
{ TELEM_FORMULA_ADD, "FORMULA_ADD" },
{ TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" },
{ TELEM_FORMULA_MIN, "FORMULA_MIN" },
{ TELEM_FORMULA_MAX, "FORMULA_MAX" },
{ TELEM_FORMULA_MULTIPLY, "FORMULA_MULTIPLY" },
{ TELEM_FORMULA_TOTALIZE, "FORMULA_TOTALIZE" },
{ TELEM_FORMULA_CELL, "FORMULA_CELL" },
{ TELEM_FORMULA_CONSUMPTION, "FORMULA_CONSUMPTION" },
{ TELEM_FORMULA_DIST, "FORMULA_DIST" },
{ 0, NULL }
};
const struct YamlIdStr enum_TelemetrySensorType[] = {
{ TELEM_TYPE_CUSTOM, "TYPE_CUSTOM" },
{ TELEM_TYPE_CALCULATED, "TYPE_CALCULATED" },
{ 0, NULL }
};
const struct YamlIdStr enum_ZoneOptionValueEnum[] = {
{ ZOV_Unsigned, "Unsigned" },
{ ZOV_Signed, "Signed" },
{ ZOV_Bool, "Bool" },
{ ZOV_String, "String" },
{ ZOV_Source, "Source" },
{ ZOV_Color, "Color" },
{ 0, NULL }
};
const struct YamlIdStr enum_USBJoystickIfMode[] = {
{ USBJOYS_JOYSTICK, "JOYSTICK" },
{ USBJOYS_GAMEPAD, "GAMEPAD" },
{ USBJOYS_MULTIAXIS, "MULTIAXIS" },
{ 0, NULL }
};
const struct YamlIdStr enum_USBJoystickCh[] = {
{ USBJOYS_CH_NONE, "CH_NONE" },
{ USBJOYS_CH_BUTTON, "CH_BUTTON" },
{ USBJOYS_CH_AXIS, "CH_AXIS" },
{ USBJOYS_CH_SIM, "CH_SIM" },
{ 0, NULL }
};
//
// Structs last
//
static const struct YamlNode struct_CalibData[] = {
YAML_IDX_CUST("calib",r_calib,w_calib),
YAML_SIGNED( "mid", 16 ),
YAML_SIGNED( "spanNeg", 16 ),
YAML_SIGNED( "spanPos", 16 ),
YAML_END
};
static const struct YamlNode struct_signed_16[] = {
YAML_IDX,
YAML_SIGNED( "val", 16 ),
YAML_END
};
static const struct YamlNode struct_TrainerMix[] = {
YAML_IDX,
YAML_UNSIGNED( "srcChn", 6 ),
YAML_ENUM("mode", 2, enum_TrainerMultiplex),
YAML_SIGNED( "studWeight", 8 ),
YAML_END
};
static const struct YamlNode struct_TrainerData[] = {
YAML_ARRAY("calib", 16, 4, struct_signed_16, NULL),
YAML_ARRAY("mix", 16, 4, struct_TrainerMix, NULL),
YAML_END
};
static const struct YamlNode struct_anonymous_1[] = {
YAML_STRING("name", 8),
YAML_END
};
static const struct YamlNode struct_anonymous_2[] = {
YAML_SIGNED( "val", 16 ),
YAML_UNSIGNED( "mode", 8 ),
YAML_UNSIGNED( "param", 8 ),
YAML_SIGNED( "val2", 32 ),
YAML_END
};
static const struct YamlNode struct_anonymous_3[] = {
YAML_SIGNED( "val1", 32 ),
YAML_SIGNED( "val2", 32 ),
YAML_END
};
static const struct YamlNode union_anonymous_0_elmts[] = {
YAML_STRUCT("play", 64, struct_anonymous_1, NULL),
YAML_STRUCT("all", 64, struct_anonymous_2, NULL),
YAML_STRUCT("clear", 64, struct_anonymous_3, NULL),
YAML_END
};
static const struct YamlNode struct_CustomFunctionData[] = {
YAML_IDX,
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
YAML_ENUM("func", 6, enum_Functions),
YAML_CUSTOM("def",r_customFn,w_customFn),
YAML_PADDING( 64 ),
YAML_PADDING( 1 ),
YAML_PADDING( 7 ),
YAML_END
};
static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "manuallyEdited", 1 ),
YAML_SIGNED( "timezoneMinutes", 3 ),
YAML_UNSIGNED( "ppmunit", 2 ),
YAML_ENUM("hatsMode", 2, enum_HatsMode),
YAML_CUSTOM("semver",nullptr,w_semver),
YAML_CUSTOM("board",nullptr,w_board),
YAML_ARRAY("calib", 48, 20, struct_CalibData, NULL),
YAML_PADDING( 16 ),
YAML_SIGNED( "currModel", 8 ),
YAML_UNSIGNED( "contrast", 8 ),
YAML_UNSIGNED( "vBatWarn", 8 ),
YAML_SIGNED( "txVoltageCalibration", 8 ),
YAML_ENUM("backlightMode", 3, enum_BacklightMode),
YAML_ENUM("antennaMode", 2, enum_AntennaModes),
YAML_UNSIGNED( "disableRtcWarning", 1 ),
YAML_UNSIGNED( "keysBacklight", 1 ),
YAML_UNSIGNED( "dontPlayHello", 1 ),
YAML_ENUM("internalModule", 8, enum_ModuleType),
YAML_STRUCT("trainer", 128, struct_TrainerData, NULL),
YAML_UNSIGNED( "view", 8 ),
YAML_PADDING( 2 ),
YAML_UNSIGNED( "fai", 1 ),
YAML_SIGNED_CUST( "beepMode", 2, r_beeperMode, w_beeperMode ),
YAML_UNSIGNED( "alarmsFlash", 1 ),
YAML_UNSIGNED( "disableMemoryWarning", 1 ),
YAML_UNSIGNED( "disableAlarmWarning", 1 ),
YAML_UNSIGNED( "stickMode", 2 ),
YAML_SIGNED( "timezone", 5 ),
YAML_UNSIGNED( "adjustRTC", 1 ),
YAML_UNSIGNED( "inactivityTimer", 8 ),
YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr),
YAML_UNSIGNED( "internalModuleBaudrate", 3 ),
YAML_SIGNED( "splashMode", 3 ),
YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ),
YAML_SIGNED( "switchesDelay", 8 ),
YAML_UNSIGNED( "lightAutoOff", 8 ),
YAML_UNSIGNED( "templateSetup", 8 ),
YAML_SIGNED( "PPM_Multiplier", 8 ),
YAML_SIGNED_CUST( "hapticLength", 8, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "beepLength", 3, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "hapticStrength", 3, r_5pos, w_5pos ),
YAML_UNSIGNED( "gpsFormat", 1 ),
YAML_UNSIGNED( "audioMuteEnable", 1 ),
YAML_UNSIGNED_CUST( "speakerPitch", 8, r_spPitch, w_spPitch ),
YAML_SIGNED_CUST( "speakerVolume", 8, r_vol, w_vol ),
YAML_SIGNED_CUST( "vBatMin", 8, r_vbat_min, w_vbat_min ),
YAML_SIGNED_CUST( "vBatMax", 8, r_vbat_max, w_vbat_max ),
YAML_UNSIGNED( "backlightBright", 8 ),
YAML_UNSIGNED( "globalTimer", 32 ),
YAML_UNSIGNED( "bluetoothBaudrate", 4 ),
YAML_ENUM("bluetoothMode", 4, enum_BluetoothModes),
YAML_UNSIGNED( "countryCode", 2 ),
YAML_SIGNED( "pwrOnSpeed", 3 ),
YAML_SIGNED( "pwrOffSpeed", 3 ),
YAML_CUSTOM("jitterFilter",r_jitterFilter,nullptr),
YAML_UNSIGNED( "noJitterFilter", 1 ),
YAML_UNSIGNED( "imperial", 1 ),
YAML_UNSIGNED( "disableRssiPoweroffAlarm", 1 ),
YAML_UNSIGNED( "USBMode", 2 ),
YAML_UNSIGNED( "jackMode", 2 ),
YAML_PADDING( 1 ),
YAML_STRING("ttsLanguage", 2),
YAML_SIGNED_CUST( "beepVolume", 4, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "wavVolume", 4, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "varioVolume", 4, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "backgroundVolume", 4, r_5pos, w_5pos ),
YAML_SIGNED_CUST( "varioPitch", 8, r_vPitch, w_vPitch ),
YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ),
YAML_SIGNED( "varioRepeat", 8 ),
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("sticksConfig", 0, MAX_STICKS, struct_stickConfig, stick_name_valid),
YAML_ARRAY("slidersConfig", 0, MAX_POTS, struct_sliderConfig, nullptr),
YAML_ARRAY("potsConfig", 4, 16, struct_potConfig, nullptr),
YAML_ARRAY("switchConfig", 2, 32, struct_switchConfig, nullptr),
YAML_ARRAY("flexSwitches", 0, MAX_FLEX_SWITCHES, struct_flexSwitch, flex_sw_valid),
YAML_STRING("currModelFilename", 17),
YAML_UNSIGNED( "modelQuickSelect", 1 ),
YAML_UNSIGNED( "blOffBright", 7 ),
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_CUSTOM("rotEncDirection",r_rotEncDirection,nullptr),
YAML_UNSIGNED( "rotEncMode", 3 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_STRING("selectedTheme", 26),
YAML_UNSIGNED( "labelSingleSelect", 1 ),
YAML_UNSIGNED( "labelMultiMode", 1 ),
YAML_UNSIGNED( "favMultiMode", 1 ),
YAML_UNSIGNED( "modelSelectLayout", 2 ),
YAML_UNSIGNED( "radioThemesDisabled", 1 ),
YAML_UNSIGNED( "radioGFDisabled", 1 ),
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
YAML_UNSIGNED( "modelFMDisabled", 1 ),
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
YAML_UNSIGNED( "modelGVDisabled", 1 ),
YAML_UNSIGNED( "modelLSDisabled", 1 ),
YAML_UNSIGNED( "modelSFDisabled", 1 ),
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
YAML_IDX,
YAML_UNSIGNED( "val", 8 ),
YAML_END
};
static const struct YamlNode struct_ModelHeader[] = {
YAML_STRING("name", 15),
YAML_ARRAY("modelId", 8, 2, struct_unsigned_8, NULL),
YAML_STRING("bitmap", 14),
YAML_STRING("labels", 100),
YAML_END
};
static const struct YamlNode struct_TimerData[] = {
YAML_IDX,
YAML_UNSIGNED( "start", 22 ),
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
YAML_SIGNED( "value", 22 ),
YAML_ENUM("mode", 3, enum_TimerModes),
YAML_UNSIGNED( "countdownBeep", 2 ),
YAML_UNSIGNED( "minuteBeep", 1 ),
YAML_UNSIGNED( "persistent", 2 ),
YAML_SIGNED( "countdownStart", 2 ),
YAML_UNSIGNED( "showElapsed", 1 ),
YAML_UNSIGNED( "extraHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_STRING("name", 8),
YAML_END
};
static const struct YamlNode struct_CurveRef[] = {
YAML_UNSIGNED( "type", 5 ),
YAML_SIGNED_CUST( "value", 11, r_sourceNumVal, w_sourceNumVal ),
YAML_END
};
static const struct YamlNode struct_MixData[] = {
YAML_UNSIGNED( "destCh", 5 ),
YAML_SIGNED_CUST( "srcRaw", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_UNSIGNED( "carryTrim", 1 ),
YAML_UNSIGNED( "mixWarn", 2 ),
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
YAML_UNSIGNED( "delayPrec", 1 ),
YAML_UNSIGNED( "speedPrec", 1 ),
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
YAML_PADDING( 1 ),
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
YAML_STRUCT("curve", 16, struct_CurveRef, NULL),
YAML_UNSIGNED( "delayUp", 8 ),
YAML_UNSIGNED( "delayDown", 8 ),
YAML_UNSIGNED( "speedUp", 8 ),
YAML_UNSIGNED( "speedDown", 8 ),
YAML_STRING("name", 6),
YAML_END
};
static const struct YamlNode struct_LimitData[] = {
YAML_IDX,
YAML_SIGNED_CUST( "min", 11, in_read_weight, in_write_weight ),
YAML_SIGNED_CUST( "max", 11, in_read_weight, in_write_weight ),
YAML_SIGNED( "ppmCenter", 10 ),
YAML_SIGNED_CUST( "offset", 11, in_read_weight, in_write_weight ),
YAML_UNSIGNED( "symetrical", 1 ),
YAML_UNSIGNED( "revert", 1 ),
YAML_PADDING( 3 ),
YAML_SIGNED( "curve", 8 ),
YAML_STRING("name", 6),
YAML_END
};
static const struct YamlNode struct_ExpoData[] = {
YAML_UNSIGNED( "mode", 2 ),
YAML_UNSIGNED( "scale", 14 ),
YAML_CUSTOM("carryTrim",r_carryTrim,nullptr),
YAML_SIGNED( "trimSource", 6 ),
YAML_SIGNED_CUST( "srcRaw", 10, r_mixSrcRawEx, w_mixSrcRawEx ),
YAML_UNSIGNED_CUST( "weight", 11, r_sourceNumVal, w_sourceNumVal ),
YAML_UNSIGNED_CUST( "offset", 11, r_sourceNumVal, w_sourceNumVal ),
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
YAML_STRUCT("curve", 16, struct_CurveRef, NULL),
YAML_UNSIGNED( "chn", 5 ),
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
YAML_PADDING( 2 ),
YAML_STRING("name", 6),
YAML_END
};
static const struct YamlNode struct_CurveHeader[] = {
YAML_IDX,
YAML_UNSIGNED( "type", 1 ),
YAML_UNSIGNED( "smooth", 1 ),
YAML_SIGNED( "points", 6 ),
YAML_STRING("name", 3),
YAML_END
};
static const struct YamlNode struct_signed_8[] = {
YAML_IDX,
YAML_SIGNED( "val", 8 ),
YAML_END
};
static const struct YamlNode struct_LogicalSwitchData[] = {
YAML_IDX,
YAML_ENUM("func", 8, enum_LogicalSwitchesFunctions),
YAML_CUSTOM("def",r_logicSw,w_logicSw),
YAML_PADDING( 10 ),
YAML_PADDING( 10 ),
YAML_SIGNED_CUST( "andsw", 10, r_swtchSrc, w_swtchSrc ),
YAML_UNSIGNED( "lsPersist", 1 ),
YAML_UNSIGNED( "lsState", 1 ),
YAML_PADDING( 16 ),
YAML_UNSIGNED( "delay", 8 ),
YAML_UNSIGNED( "duration", 8 ),
YAML_END
};
static const struct YamlNode struct_SwashRingData[] = {
YAML_ENUM("type", 8, enum_SwashType),
YAML_UNSIGNED( "value", 8 ),
YAML_UNSIGNED_CUST( "collectiveSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
YAML_UNSIGNED_CUST( "aileronSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
YAML_UNSIGNED_CUST( "elevatorSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
YAML_SIGNED( "collectiveWeight", 8 ),
YAML_SIGNED( "aileronWeight", 8 ),
YAML_SIGNED( "elevatorWeight", 8 ),
YAML_END
};
static const struct YamlNode struct_trim_t[] = {
YAML_IDX,
YAML_SIGNED( "value", 11 ),
YAML_UNSIGNED( "mode", 5 ),
YAML_END
};
static const struct YamlNode struct_FlightModeData[] = {
YAML_IDX,
YAML_ARRAY("trim", 16, 8, struct_trim_t, NULL),
YAML_STRING("name", 10),
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "fadeIn", 8 ),
YAML_UNSIGNED( "fadeOut", 8 ),
YAML_ARRAY("gvars", 16, 9, struct_signed_16, gvar_is_active),
YAML_END
};
static const struct YamlNode struct_GVarData[] = {
YAML_IDX,
YAML_STRING("name", 3),
YAML_UNSIGNED( "min", 12 ),
YAML_UNSIGNED( "max", 12 ),
YAML_UNSIGNED( "popup", 1 ),
YAML_UNSIGNED( "prec", 1 ),
YAML_UNSIGNED( "unit", 2 ),
YAML_PADDING( 4 ),
YAML_END
};
static const struct YamlNode struct_VarioData[] = {
YAML_UNSIGNED_CUST( "source", 7, r_tele_sensor, w_tele_sensor ),
YAML_UNSIGNED( "centerSilent", 1 ),
YAML_SIGNED( "centerMax", 8 ),
YAML_SIGNED( "centerMin", 8 ),
YAML_SIGNED( "min", 8 ),
YAML_SIGNED( "max", 8 ),
YAML_END
};
static const struct YamlNode struct_RssiAlarmData[] = {
YAML_CUSTOM("disabled",r_rssiDisabled,nullptr),
YAML_CUSTOM("warning",r_rssiWarning,nullptr),
YAML_CUSTOM("critical",r_rssiCritical,nullptr),
YAML_END
};
static const struct YamlNode struct_RFAlarmData[] = {
YAML_SIGNED( "warning", 8 ),
YAML_SIGNED( "critical", 8 ),
YAML_END
};
static const struct YamlNode struct_PpmModule[] = {
YAML_SIGNED( "delay", 6 ),
YAML_UNSIGNED( "pulsePol", 1 ),
YAML_UNSIGNED( "outputType", 1 ),
YAML_SIGNED( "frameLength", 8 ),
YAML_END
};
static const struct YamlNode struct_anonymous_5[] = {
YAML_PADDING( 8 ),
YAML_UNSIGNED( "disableTelemetry", 1 ),
YAML_UNSIGNED( "disableMapping", 1 ),
YAML_UNSIGNED( "autoBindMode", 1 ),
YAML_UNSIGNED( "lowPowerMode", 1 ),
YAML_UNSIGNED( "receiverTelemetryOff", 1 ),
YAML_UNSIGNED( "receiverHigherChannels", 1 ),
YAML_PADDING( 2 ),
YAML_SIGNED( "optionValue", 8 ),
YAML_END
};
static const struct YamlNode struct_anonymous_6[] = {
YAML_UNSIGNED( "power", 2 ),
YAML_PADDING( 2 ),
YAML_UNSIGNED( "receiverTelemetryOff", 1 ),
YAML_UNSIGNED( "receiverHigherChannels", 1 ),
YAML_SIGNED( "antennaMode", 2 ),
YAML_PADDING( 8 ),
YAML_END
};
static const struct YamlNode struct_anonymous_7[] = {
YAML_PADDING( 6 ),
YAML_UNSIGNED( "noninverted", 1 ),
YAML_PADDING( 1 ),
YAML_SIGNED( "refreshRate", 8 ),
YAML_END
};
static const struct YamlNode struct_string_64[] = {
YAML_IDX,
YAML_STRING("val", 8),
YAML_END
};
static const struct YamlNode struct_anonymous_8[] = {
YAML_UNSIGNED( "receivers", 7 ),
YAML_UNSIGNED( "racingMode", 1 ),
YAML_ARRAY("receiverName", 64, 3, struct_string_64, NULL),
YAML_END
};
static const struct YamlNode struct_anonymous_9[] = {
YAML_ARRAY("rx_id", 8, 4, struct_unsigned_8, NULL),
YAML_UNSIGNED( "mode", 3 ),
YAML_UNSIGNED( "rfPower", 1 ),
YAML_UNSIGNED( "reserved", 4 ),
YAML_ARRAY("rx_freq", 8, 2, struct_unsigned_8, NULL),
YAML_END
};
static const struct YamlNode struct_anonymous_10[] = {
YAML_UNSIGNED( "emi", 2 ),
YAML_UNSIGNED( "telemetry", 1 ),
YAML_UNSIGNED( "phyMode", 3 ),
YAML_UNSIGNED( "reserved", 2 ),
YAML_UNSIGNED( "rfPower", 8 ),
YAML_END
};
static const struct YamlNode struct_anonymous_11[] = {
YAML_UNSIGNED( "raw12bits", 1 ),
YAML_UNSIGNED( "telemetryBaudrate", 3 ),
YAML_PADDING( 4 ),
YAML_END
};
static const struct YamlNode struct_anonymous_12[] = {
YAML_UNSIGNED( "telemetryBaudrate", 3 ),
YAML_UNSIGNED( "crsfArmingMode", 1 ),
YAML_PADDING( 4 ),
YAML_SIGNED_CUST( "crsfArmingTrigger", 10, r_swtchSrc, w_swtchSrc ),
YAML_SIGNED( "spare3", 6 ),
YAML_END
};
static const struct YamlNode struct_anonymous_13[] = {
YAML_UNSIGNED( "flags", 8 ),
YAML_END
};
static const struct YamlNode union_anonymous_4_elmts[] = {
YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL),
YAML_STRUCT("ppm", 16, struct_PpmModule, NULL),
YAML_STRUCT("multi", 24, struct_anonymous_5, NULL),
YAML_STRUCT("pxx", 16, struct_anonymous_6, NULL),
YAML_STRUCT("sbus", 16, struct_anonymous_7, NULL),
YAML_STRUCT("pxx2", 200, struct_anonymous_8, NULL),
YAML_STRUCT("flysky", 56, struct_anonymous_9, NULL),
YAML_STRUCT("afhds3", 16, struct_anonymous_10, NULL),
YAML_STRUCT("ghost", 8, struct_anonymous_11, NULL),
YAML_STRUCT("crsf", 24, struct_anonymous_12, NULL),
YAML_STRUCT("dsmp", 8, struct_anonymous_13, NULL),
YAML_END
};
static const struct YamlNode struct_ModuleData[] = {
YAML_IDX,
YAML_UNSIGNED_CUST( "type", 8, r_moduleType, w_moduleType ),
YAML_CUSTOM("subType",r_modSubtype,w_modSubtype),
YAML_UNSIGNED( "channelsStart", 8 ),
YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ),
YAML_ENUM("failsafeMode", 4, enum_FailsafeModes),
YAML_PADDING( 4 ),
YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type),
YAML_END
};
static const struct YamlNode struct_TrainerModuleData[] = {
YAML_UNSIGNED_CUST( "mode", 8, r_trainerMode, w_trainerMode ),
YAML_UNSIGNED( "channelsStart", 8 ),
YAML_SIGNED( "channelsCount", 8 ),
YAML_SIGNED( "frameLength", 8 ),
YAML_SIGNED( "delay", 6 ),
YAML_UNSIGNED( "pulsePol", 1 ),
YAML_PADDING( 1 ),
YAML_END
};
static const struct YamlNode union_ScriptDataInput_elmts[] = {
YAML_SIGNED( "value", 16 ),
YAML_UNSIGNED_CUST( "source", 16, r_mixSrcRaw, w_mixSrcRaw ),
YAML_END
};
static const struct YamlNode union_ScriptDataInput[] = {
YAML_IDX,
YAML_UNION("u", 16, union_ScriptDataInput_elmts, select_script_input),
YAML_END
};
static const struct YamlNode struct_ScriptData[] = {
YAML_IDX,
YAML_STRING("file", 6),
YAML_STRING("name", 6),
YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL),
YAML_END
};
static const struct YamlNode struct_string_32[] = {
YAML_IDX,
YAML_STRING("val", 4),
YAML_END
};
static const struct YamlNode union_anonymous_14_elmts[] = {
YAML_UNSIGNED( "id", 16 ),
YAML_UNSIGNED( "persistentValue", 16 ),
YAML_END
};
static const struct YamlNode struct_anonymous_16[] = {
YAML_UNSIGNED( "physID", 5 ),
YAML_UNSIGNED( "rxIndex", 3 ),
YAML_END
};
static const struct YamlNode union_anonymous_15_elmts[] = {
YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL),
YAML_UNSIGNED( "instance", 8 ),
YAML_ENUM("formula", 8, enum_TelemetrySensorFormula),
YAML_END
};
static const struct YamlNode struct_anonymous_18[] = {
YAML_UNSIGNED( "ratio", 16 ),
YAML_SIGNED( "offset", 16 ),
YAML_END
};
static const struct YamlNode struct_anonymous_19[] = {
YAML_UNSIGNED( "source", 8 ),
YAML_UNSIGNED( "index", 8 ),
YAML_PADDING( 16 ),
YAML_END
};
static const struct YamlNode struct_anonymous_20[] = {
YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL),
YAML_END
};
static const struct YamlNode struct_anonymous_21[] = {
YAML_UNSIGNED( "source", 8 ),
YAML_PADDING( 24 ),
YAML_END
};
static const struct YamlNode struct_anonymous_22[] = {
YAML_UNSIGNED( "gps", 8 ),
YAML_UNSIGNED( "alt", 8 ),
YAML_PADDING( 16 ),
YAML_END
};
static const struct YamlNode union_anonymous_17_elmts[] = {
YAML_STRUCT("custom", 32, struct_anonymous_18, NULL),
YAML_STRUCT("cell", 32, struct_anonymous_19, NULL),
YAML_STRUCT("calc", 32, struct_anonymous_20, NULL),
YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL),
YAML_STRUCT("dist", 32, struct_anonymous_22, NULL),
YAML_UNSIGNED( "param", 32 ),
YAML_END
};
static const struct YamlNode struct_TelemetrySensor[] = {
YAML_IDX,
YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1),
YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2),
YAML_STRING("label", 4),
YAML_UNSIGNED( "subId", 8 ),
YAML_ENUM("type", 1, enum_TelemetrySensorType),
YAML_PADDING( 1 ),
YAML_UNSIGNED( "unit", 6 ),
YAML_UNSIGNED( "prec", 2 ),
YAML_UNSIGNED( "autoOffset", 1 ),
YAML_UNSIGNED( "filter", 1 ),
YAML_UNSIGNED( "logs", 1 ),
YAML_UNSIGNED( "persistent", 1 ),
YAML_UNSIGNED( "onlyPositive", 1 ),
YAML_PADDING( 1 ),
YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg),
YAML_END
};
static const struct YamlNode union_ZoneOptionValue_elmts[] = {
YAML_UNSIGNED( "unsignedValue", 32 ),
YAML_SIGNED( "signedValue", 32 ),
YAML_UNSIGNED( "boolValue", 32 ),
YAML_STRING("stringValue", 12),
YAML_CUSTOM("source",r_zov_source,w_zov_source),
YAML_CUSTOM("color",r_zov_color,w_zov_color),
YAML_END
};
static const struct YamlNode struct_ZoneOptionValueTyped[] = {
YAML_IDX,
YAML_ENUM("type", 32, enum_ZoneOptionValueEnum),
YAML_UNION("value", 96, union_ZoneOptionValue_elmts, select_zov),
YAML_END
};
static const struct YamlNode struct_WidgetPersistentData[] = {
YAML_ARRAY("options", 128, 10, struct_ZoneOptionValueTyped, NULL),
YAML_END
};
static const struct YamlNode struct_ZonePersistentData[] = {
YAML_IDX,
YAML_STRING("widgetName", 12),
YAML_STRUCT("widgetData", 1280, struct_WidgetPersistentData, NULL),
YAML_END
};
static const struct YamlNode struct_LayoutPersistentData[] = {
YAML_ARRAY("zones", 1376, 10, struct_ZonePersistentData, NULL),
YAML_ARRAY("options", 128, 10, struct_ZoneOptionValueTyped, NULL),
YAML_END
};
static const struct YamlNode struct_CustomScreenData[] = {
YAML_IDX,
YAML_STRING("LayoutId", 12),
YAML_STRUCT("layoutData", 15040, struct_LayoutPersistentData, NULL),
YAML_END
};
static const struct YamlNode struct_TopBarPersistentData[] = {
YAML_ARRAY("zones", 1376, 4, struct_ZonePersistentData, NULL),
YAML_ARRAY("options", 128, 1, struct_ZoneOptionValueTyped, NULL),
YAML_END
};
static const struct YamlNode struct_USBJoystickChData[] = {
YAML_IDX,
YAML_ENUM("mode", 3, enum_USBJoystickCh),
YAML_UNSIGNED( "inversion", 1 ),
YAML_UNSIGNED( "param", 4 ),
YAML_UNSIGNED( "btn_num", 5 ),
YAML_UNSIGNED( "switch_npos", 3 ),
YAML_END
};
static const struct YamlNode struct_ModelData[] = {
YAML_CUSTOM("semver",nullptr,w_semver),
YAML_STRUCT("header", 1048, struct_ModelHeader, NULL),
YAML_ARRAY("timers", 136, 3, struct_TimerData, NULL),
YAML_UNSIGNED( "telemetryProtocol", 3 ),
YAML_UNSIGNED( "thrTrim", 1 ),
YAML_UNSIGNED( "noGlobalFunctions", 1 ),
YAML_UNSIGNED( "displayTrims", 2 ),
YAML_UNSIGNED( "ignoreSensorIds", 1 ),
YAML_SIGNED( "trimInc", 3 ),
YAML_UNSIGNED( "disableThrottleWarning", 1 ),
YAML_UNSIGNED( "displayChecklist", 1 ),
YAML_UNSIGNED( "extendedLimits", 1 ),
YAML_UNSIGNED( "extendedTrims", 1 ),
YAML_UNSIGNED( "throttleReversed", 1 ),
YAML_UNSIGNED( "enableCustomThrottleWarning", 1 ),
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
YAML_UNSIGNED( "showInstanceIds", 1 ),
YAML_UNSIGNED( "checklistInteractive", 1 ),
YAML_ENUM("hatsMode", 2, enum_HatsMode),
YAML_PADDING( 2 ),
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
YAML_UNSIGNED( "beepANACenter", 16 ),
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),
YAML_ARRAY("limitData", 104, 32, struct_LimitData, NULL),
YAML_ARRAY("expoData", 144, 64, struct_ExpoData, NULL),
YAML_ARRAY("curves", 32, 32, struct_CurveHeader, NULL),
YAML_ARRAY("points", 8, 512, struct_signed_8, NULL),
YAML_ARRAY("logicalSw", 72, 64, struct_LogicalSwitchData, NULL),
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_STRUCT("swashR", 64, struct_SwashRingData, swash_is_active),
YAML_ARRAY("flightModeData", 384, 9, struct_FlightModeData, fmd_is_active),
YAML_UNSIGNED_CUST( "thrTraceSrc", 8, r_thrSrc, w_thrSrc ),
YAML_CUSTOM("switchWarningState",r_swtchWarn,nullptr),
YAML_ARRAY("switchWarning", 3, 21, struct_swtchWarn, nullptr),
YAML_PADDING(1),
YAML_ARRAY("gvars", 56, 9, struct_GVarData, NULL),
YAML_STRUCT("varioData", 40, struct_VarioData, NULL),
YAML_UNSIGNED_CUST( "rssiSource", 8, r_tele_sensor, w_tele_sensor ),
YAML_STRUCT("rssiAlarms", 0, struct_RssiAlarmData, NULL),
YAML_STRUCT("rfAlarms", 16, struct_RFAlarmData, NULL),
YAML_UNSIGNED( "thrTrimSw", 3 ),
YAML_ENUM("potsWarnMode", 2, enum_PotsWarnMode),
YAML_ENUM("jitterFilter", 2, enum_ModelOverridableEnable),
YAML_PADDING( 1 ),
YAML_ARRAY("moduleData", 232, 2, struct_ModuleData, NULL),
YAML_ARRAY("failsafeChannels", 16, 32, struct_signed_16, NULL),
YAML_STRUCT("trainerData", 40, struct_TrainerModuleData, NULL),
YAML_ARRAY("scriptsData", 192, 9, struct_ScriptData, NULL),
YAML_ARRAY("inputNames", 32, 32, struct_string_32, NULL),
YAML_UNSIGNED( "potsWarnEnabled", 16 ),
YAML_ARRAY("potsWarnPosition", 8, 16, struct_signed_8, NULL),
YAML_ARRAY("telemetrySensors", 112, 60, struct_TelemetrySensor, NULL),
YAML_ARRAY("screenData", 15136, 10, struct_CustomScreenData, NULL),
YAML_STRUCT("topbarData", 5632, struct_TopBarPersistentData, NULL),
YAML_ARRAY("topbarWidgetWidth", 8, 4, struct_unsigned_8, NULL),
YAML_UNSIGNED( "view", 8 ),
YAML_STRING("modelRegistrationID", 8),
YAML_UNSIGNED( "usbJoystickExtMode", 1 ),
YAML_ENUM("usbJoystickIfMode", 3, enum_USBJoystickIfMode),
YAML_UNSIGNED( "usbJoystickCircularCut", 4 ),
YAML_ARRAY("usbJoystickCh", 16, 26, struct_USBJoystickChData, NULL),
YAML_ENUM("radioThemesDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("radioGFDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("radioTrainerDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelHeliDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelFMDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelCurvesDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelGVDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelLSDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable),
YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable),
YAML_END
};
static const struct YamlNode struct_PartialModel[] = {
YAML_STRUCT("header", 1048, struct_ModelHeader, NULL),
YAML_ARRAY("timers", 136, 3, struct_TimerData, NULL),
YAML_END
};
#define MAX_RADIODATA_MODELDATA_PARTIALMODEL_STR_LEN 29
static const struct YamlNode __RadioData_root_node = YAML_ROOT( struct_RadioData );
const YamlNode* get_radiodata_nodes()
{
return &__RadioData_root_node;
}
static const struct YamlNode __ModelData_root_node = YAML_ROOT( struct_ModelData );
const YamlNode* get_modeldata_nodes()
{
return &__ModelData_root_node;
}
static const struct YamlNode __PartialModel_root_node = YAML_ROOT( struct_PartialModel );
const YamlNode* get_partialmodel_nodes()
{
return &__PartialModel_root_node;
}
+1 -1
View File
@@ -423,7 +423,7 @@
#define BT_TX_GPIO GPIO_PIN(GPIOB, 10) // PB.10
#define BT_RX_GPIO GPIO_PIN(GPIOB, 11) // PB.11
#define BT_EN_GPIO GPIO_PIN(GPIOI, 8) // PI.08
#define BT_CONNECTED_GPIO GPIO_PIN(GPIOJ, 10) // PJ.10
#define BT_CONNECTED_GPIO GPIO_PIN(GPIOJ, 1) // PJ.01
#define BT_CMD_MODE_GPIO GPIO_PIN(GPIOH, 6) // PH.06
// Millisecond timer
+60 -20
View File
@@ -1,10 +1,13 @@
option(DISK_CACHE "Enable SD card disk cache" ON)
option(UNEXPECTED_SHUTDOWN "Enable the Unexpected Shutdown screen" ON)
option(STICKS_DEAD_ZONE "Enable sticks dead zone" YES)
option(PXX1 "PXX1 protocol support" ON)
option(PXX2 "PXX2 protocol support" OFF)
option(AFHDS3 "AFHDS3 TX Module" ON)
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON)
option(GHOST "Ghost TX Module" ON)
option(MODULE_SIZE_STD "Standard size TX Module" ON)
option(USE_RTC_CLOCK "RTC Clock" ON)
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
set(CPU_TYPE STM32F4)
@@ -19,11 +22,6 @@ set(PPM_LIMITS_SYMETRICAL YES)
set(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)")
set(HARDWARE_EXTERNAL_MODULE YES)
#option(STICKS_DEAD_ZONE "Enable sticks dead zone" YES)
#option(AFHDS2 "Support for AFHDS2" OFF)
option(USE_RTC_CLOCK "RTC Clock" ON)
# for size report script
set(CPU_TYPE_FULL STM32F429xI)
set(TARGET_LINKER_DIR stm32f429_sdram)
@@ -31,20 +29,44 @@ set(TARGET_SDRAM_START 0xC0000000)
set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM1=8192")
#set(RF_BAUD_RATE 921600 230400 115200 57600 38400 19200 9600 4800 2400 1200)
#set(PCB_RF_BAUD 921600 CACHE STRING "INTERNAL_MODULE_BAUDRATE: ${RF_BAUD_RATE}")
#set_property(CACHE PCB_RF_BAUD PROPERTY STRINGS ${RF_BAUD_RATE})
set(RF_BAUD_RATE 921600 230400 115200 57600 38400 19200 9600 4800 2400 1200)
set(PCB_RF_BAUD 921600 CACHE STRING "INTERNAL_MODULE_BAUDRATE: ${RF_BAUD_RATE}")
set_property(CACHE PCB_RF_BAUD PROPERTY STRINGS ${RF_BAUD_RATE})
add_definitions(-DPCBPL18 -DPCBFLYSKY)
add_definitions(-DBATTERY_CHARGE)
add_definitions(-DSOFTWARE_VOLUME)
add_definitions(-DSPI_FLASH)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
if(PCBREV STREQUAL NB4P)
if (PCBREV STREQUAL EL18)
set(FLAVOUR el18)
add_definitions(-DRADIO_EL18 -DRADIO_NV14_FAMILY -DPCBNV14 -DUSE_HATS_AS_KEYS)
set(DISK_CACHE ON)
set(FLYSKY_GIMBAL ON)
set(USE_VS1053B ON)
set(AFHDS3 ON)
# defines existing internal modules
set(INTERNAL_MODULES AFHDS3;CRSF CACHE STRING "Internal modules")
set(DEFAULT_INTERNAL_MODULE FLYSKY_AFHDS3 CACHE STRING "Default internal module")
elseif(PCBREV STREQUAL NV14)
set(FLAVOUR nv14)
add_definitions(-DRADIO_NV14 -DRADIO_NV14_FAMILY -DPCBNV14)
add_definitions(-DUSE_HATS_AS_KEYS -DAFHDS2_BAUDRATE=${PCB_RF_BAUD})
set(DISK_CACHE ON)
set(FLYSKY_GIMBAL ON)
set(USE_VS1053B ON)
set(AFHDS2 ON)
set(AFHDS3 ON)
# defines existing internal modules
set(INTERNAL_MODULES AFHDS2A CACHE STRING "Internal modules")
set(DEFAULT_INTERNAL_MODULE FLYSKY_AFHDS2A CACHE STRING "Default internal module")
elseif(PCBREV STREQUAL NB4P)
set(FLAVOUR nb4p)
add_definitions(-DRADIO_NB4P)
add_definitions(-DRADIO_NB4P -DSPI_FLASH)
set(ROTARY_ENCODER YES)
set(LED_STRIP ON)
set(AFHDS3 ON)
set(KEY_DRIVER nb4p_key_driver.cpp)
# Defines internal modules for PL18 via UART7
@@ -52,15 +74,19 @@ if(PCBREV STREQUAL NB4P)
set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module")
elseif(PCBREV STREQUAL PL18EV)
set(FLAVOUR pl18ev)
add_definitions(-DRADIO_PL18EV -DUSE_HATS_AS_KEYS)
add_definitions(-DRADIO_PL18EV -DSPI_FLASH -DUSE_HATS_AS_KEYS)
set(WIRELESS_CHARGER YES)
set(FLYSKY_GIMBAL ON)
set(LED_STRIP ON)
set(AFHDS3 ON)
set(KEY_DRIVER key_driver.cpp)
else()
set(FLAVOUR pl18)
add_definitions(-DRADIO_PL18 -DUSE_HATS_AS_KEYS)
add_definitions(-DRADIO_PL18 -DSPI_FLASH -DUSE_HATS_AS_KEYS)
set(WIRELESS_CHARGER YES)
set(FLYSKY_GIMBAL ON)
set(LED_STRIP ON)
set(AFHDS3 ON)
set(KEY_DRIVER key_driver.cpp)
# Defines internal modules for PL18 via UART7
@@ -110,8 +136,6 @@ if(NOT UNEXPECTED_SHUTDOWN)
add_definitions(-DNO_UNEXPECTED_SHUTDOWN)
endif()
set(AFHDS3 ON)
# VCP CLI
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(CLI ON CACHE BOOL "Enable CLI")
@@ -120,7 +144,6 @@ set(TARGET_SRC_DIR targets/${TARGET_DIR})
set(BOARD_COMMON_SRC
${TARGET_SRC_DIR}/board.cpp
${TARGET_SRC_DIR}/led_driver.cpp
${TARGET_SRC_DIR}/${KEY_DRIVER}
${TARGET_SRC_DIR}/haptic_driver.cpp
${TARGET_SRC_DIR}/backlight_driver.cpp
@@ -144,6 +167,13 @@ if(ROTARY_ENCODER)
)
endif()
if(DISK_CACHE)
set(BOARD_COMMON_SRC ${BOARD_COMMON_SRC}
disk_cache.cpp
)
add_definitions(-DDISK_CACHE)
endif()
# Bootloader board library
add_library(board_bl OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
@@ -155,10 +185,8 @@ set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $<TARGET_OBJECTS:board_bl>)
# Firmware board library
add_library(board OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
${BOARD_SPECIFIC_SRC}
${TARGET_SRC_DIR}/${TOUCH_DRIVER}
${TARGET_SRC_DIR}/battery_driver.cpp
targets/common/arm/stm32/audio_dac_driver.cpp
targets/common/arm/stm32/delays_driver.cpp
targets/common/arm/stm32/heartbeat_driver.cpp
targets/common/arm/stm32/mixer_scheduler_driver.cpp
@@ -166,7 +194,6 @@ add_library(board OBJECT EXCLUDE_FROM_ALL
targets/common/arm/stm32/stm32_pulse_driver.cpp
targets/common/arm/stm32/stm32_softserial_driver.cpp
targets/common/arm/stm32/stm32_switch_driver.cpp
targets/common/arm/stm32/stm32_ws2812.cpp
targets/common/arm/stm32/trainer_driver.cpp
targets/common/arm/stm32/spi_flash.cpp
targets/common/arm/stm32/diskio_spi_flash.cpp
@@ -178,6 +205,19 @@ if(PCBREV STREQUAL NB4P)
target_sources(board PRIVATE ${TARGET_SRC_DIR}/nb4p_switch_driver.cpp)
endif()
if(USE_VS1053B)
target_sources(board PRIVATE targets/common/arm/stm32/vs1053b.cpp)
else()
target_sources(board PRIVATE targets/common/arm/stm32/audio_dac_driver.cpp)
add_definitions(-DSOFTWARE_VOLUME)
endif()
if(LED_STRIP)
target_sources(board PRIVATE ${TARGET_SRC_DIR}/led_driver.cpp)
target_sources(board PRIVATE targets/common/arm/stm32/stm32_ws2812.cpp)
endif()
set(FIRMWARE_SRC
${FIRMWARE_SRC}
targets/common/arm/loadboot.cpp
+5 -1
View File
@@ -26,7 +26,7 @@
#define __BATTERY_DRIVER_C__
#define BATTERY_W 140
#define BATTERY_H 200
#define BATTERY_H (LCD_H - 120)
#define BATTERY_TOP ((LCD_H - BATTERY_H)/2)
#define BATTERY_CONNECTOR_W 32
#define BATTERY_CONNECTOR_H 10
@@ -298,6 +298,7 @@ void battery_charge_init()
}
void ledChargingInfo(uint16_t chargeState) {
#if defined(LED_STRIP_GPIO)
static int ledIdx = 0;
ledIdx--;
if (ledIdx < 0) {
@@ -311,6 +312,7 @@ void ledChargingInfo(uint16_t chargeState) {
}
}
rgbLedColorApply();
#endif
}
void drawChargingInfo(uint16_t chargeState) {
@@ -418,11 +420,13 @@ void handle_battery_charge(uint32_t last_press_time)
sprintf(buffer, "%d,%d,%d,%d,%d,", uCharger.isChargingDetectionReady, uCharger.isChargeEnd, IS_UCHARGER_CHARGE_END_ACTIVE(), uCharger.chargingSamplingCount, uCharger.chargeEndSamplingCount);
lcd->drawSizedText(100, 40, buffer, strlen(buffer), CENTERED | COLOR_THEME_PRIMARY2);
#if defined(WIRELESS_CHARGER)
sprintf(buffer, "%d,%d,%d,%d,%d", wCharger.isChargerDetectionReady, wCharger.hasCharger, IS_WCHARGER_ACTIVE(), wCharger.chargerSamplingCount, wCharger.isHighCurrent);
lcd->drawSizedText(100, 70, buffer, strlen(buffer), CENTERED | COLOR_THEME_PRIMARY2);
sprintf(buffer, "%d,%d,%d,%d,%d,", wCharger.isChargingDetectionReady, wCharger.isChargeEnd, IS_WCHARGER_CHARGE_END_ACTIVE(), wCharger.chargingSamplingCount, wCharger.chargeEndSamplingCount);
lcd->drawSizedText(100, 100, buffer, strlen(buffer), CENTERED | COLOR_THEME_PRIMARY2);
#endif
sprintf(buffer, "%d", isChargerActive());
lcd->drawSizedText(100, 130, buffer, strlen(buffer), CENTERED | COLOR_THEME_PRIMARY2);
-17
View File
@@ -42,23 +42,6 @@ enum ChargeState
CHARGE_FINISHED
};
#if defined(UCHARGER_GPIO_PIN_INV)
#define IS_UCHARGER_ACTIVE() gpio_read(UCHARGER_GPIO) ? 0 : 1
#else
#define IS_UCHARGER_ACTIVE() gpio_read(UCHARGER_GPIO) ? 1 : 0
#endif
#if defined(UCHARGER_CHARGE_END_GPIO_PIN_INV)
#define IS_UCHARGER_CHARGE_END_ACTIVE() gpio_read(UCHARGER_CHARGE_END_GPIO) ? 0 : 1
#else
#define IS_UCHARGER_CHARGE_END_ACTIVE() gpio_read(UCHARGER_CHARGE_END_GPIO) ? 1 : 0
#endif
#if defined(UCHARGER_EN_GPIO)
#define ENABLE_UCHARGER() gpio_set(UCHARGER_EN_GPIO)
#define DISABLE_UCHARGER() gpio_clear(UCHARGER_EN_GPIO)
#else
#define ENABLE_UCHARGER()
#define DISABLE_UCHARGER()
#endif
#define IS_WCHARGER_ACTIVE() gpio_read(WCHARGER_GPIO) ? 1 : 0
#define IS_WCHARGER_CHARGE_END_ACTIVE() gpio_read(WCHARGER_CHARGE_END_GPIO) ? 1 : 0
#define ENABLE_WCHARGER() gpio_set(WCHARGER_EN_GPIO)
+117 -23
View File
@@ -21,13 +21,8 @@
#include "stm32_adc.h"
#include "stm32_gpio.h"
#include "stm32_gpio_driver.h"
#include "stm32_ws2812.h"
#include "boards/generic_stm32/rgb_leds.h"
#include "board.h"
#include "boards/generic_stm32/module_ports.h"
#include "stm32_spi.h"
#include "hal/adc_driver.h"
#include "hal/trainer_driver.h"
@@ -38,11 +33,19 @@
#include "hal/gpio.h"
#include "hal/rotary_encoder.h"
#include "board.h"
#include "boards/generic_stm32/module_ports.h"
#include "boards/generic_stm32/rgb_leds.h"
#include "globals.h"
#include "sdcard.h"
#include "touch.h"
#include "debug.h"
#if defined(AUDIO_SPI)
#include "vs1053b.h"
#endif
#if defined(FLYSKY_GIMBAL)
#include "flysky_gimbal_driver.h"
#endif
@@ -59,9 +62,6 @@
// Common ADC driver
extern const etx_hal_adc_driver_t _adc_driver;
// Common LED driver
extern const stm32_pulse_timer_t _led_timer;
#if defined(SEMIHOSTING)
extern "C" void initialise_monitor_handles();
#endif
@@ -70,6 +70,68 @@ extern "C" void initialise_monitor_handles();
extern "C" void flushFTL();
#endif
#if defined(RADIO_NV14_FAMILY)
HardwareOptions hardwareOptions;
static uint8_t boardGetPcbRev()
{
gpio_init(INTMODULE_PWR_GPIO, GPIO_IN, GPIO_PIN_SPEED_LOW);
delay_ms(1); // delay to let the input settle, else it does not work properly
// detect NV14 vs EL18
if (gpio_read(INTMODULE_PWR_GPIO)) {
// pull-up connected: EL18
return PCBREV_EL18;
} else {
// pull-down connected: NV14
return PCBREV_NV14;
}
}
#endif
#if defined(AUDIO_SPI)
static void audio_set_rst_pin(bool set)
{
gpio_write(AUDIO_RST_GPIO, set);
}
static void audio_set_mute_pin(bool set)
{
#if defined(INVERTED_MUTE_PIN)
gpio_write(AUDIO_MUTE_GPIO, !set);
#else
gpio_write(AUDIO_MUTE_GPIO, set);
#endif
}
static void audioInit()
{
static stm32_spi_t spi_dev = {
.SPIx = AUDIO_SPI,
.SCK = AUDIO_SPI_SCK_GPIO,
.MISO = AUDIO_SPI_MISO_GPIO,
.MOSI = AUDIO_SPI_MOSI_GPIO,
.CS = AUDIO_CS_GPIO,
};
static vs1053b_t vs1053 = {
.spi = &spi_dev,
.XDCS = AUDIO_XDCS_GPIO,
.DREQ = AUDIO_DREQ_GPIO,
.set_rst_pin = audio_set_rst_pin,
.set_mute_pin = audio_set_mute_pin,
.mute_delay_ms = AUDIO_MUTE_DELAY,
.unmute_delay_ms = AUDIO_UNMUTE_DELAY,
};
gpio_init(AUDIO_RST_GPIO, GPIO_OUT, 0);
gpio_init(AUDIO_MUTE_GPIO, GPIO_OUT, 0);
audio_set_mute_pin(true);
vs1053b_init(&vs1053);
}
#endif
void delay_self(int count)
{
for (int i = 50000; i > 0; i--)
@@ -78,6 +140,10 @@ void delay_self(int count)
}
}
#if defined(LED_STRIP_GPIO)
// Common LED driver
extern const stm32_pulse_timer_t _led_timer;
void ledStripOff()
{
for (uint8_t i = 0; i < LED_STRIP_LENGTH; i++) {
@@ -85,6 +151,7 @@ void ledStripOff()
}
ws2812_update(&_led_timer);
}
#endif
#if defined(RADIO_NB4P)
void disableVoiceChip()
@@ -98,6 +165,15 @@ void boardBLEarlyInit()
{
// USB charger status pins
gpio_init(UCHARGER_GPIO, GPIO_IN, GPIO_PIN_SPEED_LOW);
#if defined(USB_SW_GPIO)
gpio_init(USB_SW_GPIO, GPIO_OUT, GPIO_PIN_SPEED_LOW);
#endif
#if defined(RADIO_NV14_FAMILY)
// detect NV14 vs EL18
hardwareOptions.pcbrev = boardGetPcbRev();
#endif
}
#if defined(RADIO_NB4P)
@@ -107,6 +183,13 @@ void boardBLPreJump()
}
#endif
static void monitorInit()
{
#if defined(VBUS_MONITOR_GPIO)
gpio_init(VBUS_MONITOR_GPIO, GPIO_IN, GPIO_PIN_SPEED_LOW);
#endif
}
void boardInit()
{
#if defined(SEMIHOSTING)
@@ -118,13 +201,27 @@ void boardInit()
__enable_irq();
#endif
#if defined(RADIO_NV14_FAMILY)
// detect NV14 vs EL18
hardwareOptions.pcbrev = boardGetPcbRev();
TRACE("\n%s board started :)",
hardwareOptions.pcbrev == PCBREV_NV14 ?
"NV14" : "EL18");
#else
TRACE("\nPL18 board started :)");
#endif
delay_ms(10);
TRACE("RCC->CSR = %08x", RCC->CSR);
pwrInit();
boardInitModulePorts();
#if defined(AUDIO_SPI)
gpio_init(AUDIO_RST_GPIO, GPIO_OUT, GPIO_PIN_SPEED_MEDIUM);
gpio_init(AUDIO_MUTE_GPIO, GPIO_OUT, GPIO_PIN_SPEED_MEDIUM);
#endif
board_trainer_init();
battery_charge_init();
@@ -136,8 +233,10 @@ void boardInit()
touchPanelInit();
usbInit();
#if defined(LED_STRIP_GPIO)
ws2812_init(&_led_timer, LED_STRIP_LENGTH, WS2812_GRB);
ledStripOff();
#endif
uint32_t press_start = 0;
uint32_t press_end = 0;
@@ -178,7 +277,9 @@ void boardInit()
#if defined(RADIO_NB4P)
disableVoiceChip();
#endif
audioInit();
monitorInit();
adcInit(&_adc_driver);
hapticInit();
@@ -186,19 +287,11 @@ void boardInit()
#if defined(RTCLOCK)
rtcInit(); // RTC must be initialized before rambackupRestore() is called
#endif
#if defined(LED_STRIP_GPIO)
ledBlue();
#endif
lcdSetInitalFrameBuffer(lcdFront->getData());
#if defined(DEBUG)
/* DBGMCU_APB1PeriphConfig(
DBGMCU_IWDG_STOP | DBGMCU_TIM1_STOP | DBGMCU_TIM2_STOP |
DBGMCU_TIM3_STOP | DBGMCU_TIM4_STOP | DBGMCU_TIM5_STOP |
DBGMCU_TIM6_STOP | DBGMCU_TIM7_STOP | DBGMCU_TIM8_STOP |
DBGMCU_TIM9_STOP | DBGMCU_TIM10_STOP | DBGMCU_TIM11_STOP |
DBGMCU_TIM12_STOP | DBGMCU_TIM13_STOP | DBGMCU_TIM14_STOP,
ENABLE);*/
#endif
}
extern void rtcDisableBackupReg();
@@ -219,7 +312,9 @@ void boardOff()
rtcDisableBackupReg();
#if !defined(BOOT)
#if defined(LED_STRIP_GPIO)
ledStripOff();
#endif
if (isChargerActive())
{
// RTC->BKP0R = SOFTRESET_REQUEST;
@@ -253,15 +348,13 @@ void boardOff()
}
}
#if !defined(RADIO_NV14_FAMILY)
int usbPlugged()
{
static uint8_t debouncedState = 0;
static uint8_t lastState = 0;
uint8_t state = gpio_read(UCHARGER_GPIO) ? 1 : 0;
#if defined(UCHARGER_GPIO_PIN_INV)
state = !state;
#endif
uint8_t state = IS_UCHARGER_ACTIVE();
if (state == lastState)
debouncedState = state;
@@ -270,3 +363,4 @@ int usbPlugged()
return debouncedState;
}
#endif
+78 -11
View File
@@ -59,13 +59,44 @@ void boardOff();
#define LEN_CPU_UID (3*8+2)
void getCPUUniqueID(char * s);
#if defined(RADIO_NV14_FAMILY)
enum {
PCBREV_NV14 = 0,
PCBREV_EL18 = 1,
};
#define HAS_HARDWARE_OPTIONS
typedef struct {
uint8_t pcbrev;
} HardwareOptions;
extern HardwareOptions hardwareOptions;
#endif
// SDRAM driver
extern "C" void SDRAM_Init();
// Pulses driver
#if !defined(SIMU)
#if defined(RADIO_NB4P)
#if defined(RADIO_NV14_FAMILY)
#define INTERNAL_MODULE_OFF() \
do { \
if (hardwareOptions.pcbrev == PCBREV_NV14) \
gpio_set(INTMODULE_PWR_GPIO); \
else \
gpio_clear(INTMODULE_PWR_GPIO); \
} while (0)
#define INTERNAL_MODULE_ON() \
do { \
if (hardwareOptions.pcbrev == PCBREV_NV14) \
gpio_clear(INTMODULE_PWR_GPIO); \
else \
gpio_set(INTMODULE_PWR_GPIO); \
} while (0)
#elif defined(RADIO_NB4P)
#define INTERNAL_MODULE_ON() gpio_clear(INTMODULE_PWR_GPIO)
#define INTERNAL_MODULE_OFF() gpio_set(INTMODULE_PWR_GPIO);
#else
@@ -81,7 +112,7 @@ extern "C" void SDRAM_Init();
#define IS_INTERNAL_MODULE_ON() (false)
#define IS_EXTERNAL_MODULE_ON() (gpio_read(EXTMODULE_PWR_GPIO) ? 1 : 0)
#else
#else // defined(SIMU)
#define INTERNAL_MODULE_OFF()
#define INTERNAL_MODULE_ON()
@@ -101,14 +132,23 @@ extern "C" void SDRAM_Init();
#define NUM_TRIMS 8
#define DEFAULT_STICK_DEADZONE 2
#define BATTERY_WARN 37 // 3.7V
#define BATTERY_MIN 35 // 3.4V
#define BATTERY_MAX 43 // 4.3V
#if defined(RADIO_NB4P)
#define BATTERY_DIVIDER 3102 // = 2047 * (10k / 10k + 10k) * 10 / 3.3V
#if defined(RADIO_NV14_FAMILY)
#define BATTERY_WARN 36 // 3.6V
#define BATTERY_MIN 35 // 3.5V
#define BATTERY_MAX 42 // 4.2V
#else
#define BATTERY_DIVIDER 962 // = 2047 * (22k / 120k + 22k) * 10 / 3.3V
// LiHV battery thresholds
#define BATTERY_WARN 37 // 3.7V
#define BATTERY_MIN 35 // 3.4V
#define BATTERY_MAX 43 // 4.3V
#endif
#if defined(RADIO_NV14_FAMILY)
#define BATTERY_DIVIDER 3102 // = 2047 * 510k / (510k + 510k) * 10 / 3.3V
#elif defined(RADIO_NB4P)
#define BATTERY_DIVIDER 3102 // = 2047 * 10k / (10k + 10k) * 10 / 3.3V
#else
#define BATTERY_DIVIDER 962 // = 2047 * 22k / (120k + 22k) * 10 / 3.3V
#endif
#if defined(__cplusplus) && !defined(SIMU)
@@ -188,8 +228,35 @@ bool isBacklightEnabled();
}
#endif
// Audio driver
void audioInit();
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
#define IS_UCHARGER_ACTIVE() gpio_read(UCHARGER_GPIO) ? (gpio_read(UCHARGER_CHARGE_END_GPIO) ? 0 : 1) : 1
#else
#define IS_UCHARGER_ACTIVE() gpio_read(UCHARGER_GPIO) ? 1 : 0
#endif
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
#define IS_UCHARGER_CHARGE_END_ACTIVE() gpio_read(UCHARGER_CHARGE_END_GPIO) ? 0 : 1
#else
#define IS_UCHARGER_CHARGE_END_ACTIVE() gpio_read(UCHARGER_CHARGE_END_GPIO) ? 1 : 0
#endif
#if defined(UCHARGER_EN_GPIO)
#if defined(RADIO_NV14_FAMILY)
#define ENABLE_UCHARGER() gpio_clear(UCHARGER_EN_GPIO)
#define DISABLE_UCHARGER() gpio_set(UCHARGER_EN_GPIO)
#else
#define ENABLE_UCHARGER() gpio_set(UCHARGER_EN_GPIO)
#define DISABLE_UCHARGER() gpio_clear(UCHARGER_EN_GPIO)
#endif
#else
#define ENABLE_UCHARGER()
#define DISABLE_UCHARGER()
#endif
#if !defined(AUDIO_SPI)
// DAC Audio driver
void audioInit();
#endif
// Telemetry driver
#define INTMODULE_FIFO_SIZE 512
@@ -124,12 +124,17 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
y += 35;
#endif
#if defined(USB_SW_GPIO)
#if defined(RADIO_NV14_FAMILY)
if(hardwareOptions.pcbrev == PCBREV_EL18)
#endif
{
lcd->drawText(menuItemX, y, LV_SYMBOL_WIFI, BL_FOREGROUND);
npos = lcd->drawText(menuItemX + 24, y, TR_BL_RF_USB_ACCESS, BL_FOREGROUND);
npos += 8;
if (npos > pos)
pos = npos;
y += 35;
}
#endif
lcd->drawText(menuItemX, y, LV_SYMBOL_NEW_LINE, BL_FOREGROUND);
lcd->drawText(menuItemX + 24, y, TR_BL_EXIT, BL_FOREGROUND);
@@ -318,11 +323,14 @@ void bootloaderDrawFilename(const char* str, uint8_t line, bool selected)
}
uint32_t bootloaderGetMenuItemCount(int baseCount)
{
uint8_t n = 0;
#if defined(USB_SW_GPIO)
return baseCount+1;
#else
return baseCount;
#if defined(RADIO_NV14_FAMILY)
if(hardwareOptions.pcbrev == PCBREV_EL18)
#endif
n = 1;
#endif
return baseCount + n;
}
bool bootloaderRadioMenu(uint32_t menuItem, event_t event)
+233 -64
View File
@@ -51,7 +51,127 @@
// PL18/PL18EV only has virtual keys via trim buttons
// #define KEYS_GPIO_PIN_PGUP /* for activating PGUP in keys diagnose screen */
#if defined(RADIO_NB4P)
#if defined(RADIO_NV14_FAMILY)
// Trims
#define TRIMS_GPIO_REG_RHL GPIOD
#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_7 // PD.07
#define TRIMS_GPIO_REG_RHR GPIOG
#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_10 // PG.10
#define TRIMS_GPIO_REG_RVD GPIOJ
#define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_0 // PJ.00
#define TRIMS_GPIO_REG_RVU GPIOB
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 // PB.15
#define TRIMS_GPIO_REG_LHL GPIOH
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_2 // PH.02
#define TRIMS_GPIO_REG_LHR GPIOG
#define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02
#define TRIMS_GPIO_REG_LVU GPIOH
#define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_7 // PH.07
#define TRIMS_GPIO_REG_LVD GPIOJ
#define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_12 // PJ.12
// Keys
#define KEYS_GPIO_REG_ENTER GPIOC
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PC.13
#define KEYS_GPIO_REG_EXIT GPIOG
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_11 // PG.11
// Monitor pin
#define VBUS_MONITOR_GPIO GPIO_PIN(GPIOJ, 14) // PJ.14
// Switches
#define HARDWARE_SWITCH_A
#define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_B
#define STORAGE_SWITCH_B
#define HARDWARE_SWITCH_C
#define STORAGE_SWITCH_C
#define HARDWARE_SWITCH_D
#define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_E
#define STORAGE_SWITCH_E
#define HARDWARE_SWITCH_F
#define STORAGE_SWITCH_F
#define HARDWARE_SWITCH_G
#define STORAGE_SWITCH_G
#define HARDWARE_SWITCH_H
#define STORAGE_SWITCH_H
// Index of all switches / trims
#define KEYS_GPIO_ACTIVE_HIGH
#define TRIMS_GPIO_ACTIVE_HIGH
// ADC
#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02
#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03
#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_4 // PA.04
#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_5 // PA.05
#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA
#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_4 // PC.04 VRB
#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_1 // PB.01
#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_8 // PF.08
#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PB.00
#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_10 // PF.10
#define ADC_GPIO_PIN_SWE LL_GPIO_PIN_0 // PC.00
#define ADC_GPIO_PIN_SWF LL_GPIO_PIN_1 // PC.01
#define ADC_GPIO_PIN_SWG LL_GPIO_PIN_2 // PC.02
#define ADC_GPIO_PIN_SWH LL_GPIO_PIN_7 // PA.07
#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH \
| ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SWH)
#define ADC_GPIOB_PINS (ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWC)
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWF | ADC_GPIO_PIN_SWG | ADC_GPIO_PIN_BATT)
#define ADC_GPIOF_PINS (ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_SWD)
#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2
#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3
#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_4 // ADC12_IN4 -> ADC1_IN4
#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5
#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14
#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_9 // ADC12_IN9 -> ADC1_IN9
#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_6 // ADC3_IN6 -> ADC3_IN6
#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8
#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_8 // ADC3_IN8 -> ADC3_IN8
#define ADC_CHANNEL_SWE LL_ADC_CHANNEL_10 // ADC123_IN10-> ADC1_IN10
#define ADC_CHANNEL_SWF LL_ADC_CHANNEL_11 // ADC123_IN11-> ADC1_IN11
#define ADC_CHANNEL_SWG LL_ADC_CHANNEL_12 // ADC123_IN12-> ADC1_IN12
#define ADC_CHANNEL_SWH LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15
#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18
#define ADC_MAIN ADC1
#define ADC_EXT ADC3
#define ADC_EXT_CHANNELS { ADC_CHANNEL_SWB, ADC_CHANNEL_SWD }
#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES
#define ADC_DMA DMA2
#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0
#define ADC_DMA_STREAM LL_DMA_STREAM_4
#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn
#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler
#define ADC_EXT_DMA DMA2
#define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2
#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0
#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn
#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler
#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES
#define ADC_VREF_PREC2 660
#define ADC_DIRECTION \
{ 0 /*STICK1*/, 0 /*STICK2*/, 0 /*STICK3*/, 0 /*STICK4*/, \
-1 /*POT1*/, 0 /*POT2*/, 0 /*TX_VOLTAGE*/, 0 /*TX_VBAT*/, \
0 /*SWA*/, 0 /*SWB*/, 0 /*SWC*/, 0 /*SWD*/, 0 /*SWE*/, \
-1 /*SWF*/, -1 /*SWG*/, 0 /*SWH*/ \
}
#elif defined(RADIO_NB4P)
// Trims
#define TRIMS_GPIO_REG_T1L
#define TRIMS_GPIO_PIN_T1L
@@ -113,7 +233,7 @@
0 /* rtc_bat */ \
}
#else // !defined(RADIO_NB4P)
#else // !defined(RADIO_NB4P) && !defined(RADIO_NV14_FAMILY)
// Trims
#define TRIMS_GPIO_REG_LHL
@@ -369,21 +489,19 @@
#endif
// Power
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 11) // PI.11
#define PWR_ON_GPIO GPIO_PIN(GPIOI, 14) // PI.14
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 11) // PI.11
#define PWR_ON_GPIO GPIO_PIN(GPIOI, 14) // PI.14
// Chargers (USB and wireless)
#define UCHARGER_GPIO GPIO_PIN(GPIOB, 14) // PB.14 input
#define UCHARGER_CHARGE_END_GPIO GPIO_PIN(GPIOB, 13) // PB.13 input
#if defined(RADIO_NB4P)
#define UCHARGER_GPIO_PIN_INV
#define UCHARGER_CHARGE_END_GPIO_PIN_INV
#endif
#define UCHARGER_GPIO GPIO_PIN(GPIOB, 14) // PB.14 input
#define UCHARGER_CHARGE_END_GPIO GPIO_PIN(GPIOB, 13) // PB.13 input
#if defined(RADIO_PL18) || defined(RADIO_PL18EV)
#define UCHARGER_EN_GPIO GPIO_PIN(GPIOG, 3) // PG.03 output
#define UCHARGER_EN_GPIO GPIO_PIN(GPIOG, 3) // PG.03 output
#elif defined(RADIO_NV14_FAMILY)
#define UCHARGER_EN_GPIO GPIO_PIN(GPIOH, 11) // PH.11 output
// #define UCHARGER_EN_GPIO_INV
#endif
#if defined (WIRELESS_CHARGER)
@@ -463,11 +581,15 @@
// USB
#define USB_RCC_AHB1Periph_GPIO RCC_AHB1Periph_GPIOA
#define USB_GPIO GPIOA
// #define USB_GPIO_VBUS GPIO_PIN(GPIOA,9) // PA.09
#define USB_GPIO_DM GPIO_PIN(GPIOA, 11) // PA.11
#define USB_GPIO_DP GPIO_PIN(GPIOA, 12) // PA.12
#define USB_GPIO_AF GPIO_AF10
#if defined(RADIO_NV14_FAMILY)
#define USB_GPIO_VBUS GPIO_PIN(GPIOA, 9) // PA.09
#define USB_SW_GPIO GPIO_PIN(GPIOI, 10) // PI.10
#endif
// LCD
#define LCD_NRST_GPIO GPIO_PIN(GPIOG, 9) // PG.09
#define LCD_SPI_CS_GPIO GPIO_PIN(GPIOE, 4) // PE.04
@@ -480,7 +602,7 @@
// Backlight
// TODO TIM3, TIM8, TIM14, review the channel in backlight_driver.cpp according to the chosen timer
#define BACKLIGHT_RCC_APB2Periph 0
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 15)
#define BACKLIGHT_GPIO GPIO_PIN(GPIOA, 15) // PA.15
#define BACKLIGHT_TIMER TIM2
#define BACKLIGHT_GPIO_AF GPIO_AF1
#define BACKLIGHT_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
@@ -509,6 +631,19 @@
#define ROTARY_ENCODER_TIMER_IRQHandler TIM8_UP_TIM13_IRQHandler
#endif
#if defined(RADIO_NV14_FAMILY)
// SD card
#define SD_PRESENT_GPIO GPIO_PIN(GPIOH, 10) // PH.10
#define SD_SDIO_DMA DMA2
#define SD_SDIO_DMA_STREAM DMA2_Stream3
#define SD_SDIO_DMA_CHANNEL LL_DMA_CHANNEL_4
#define SD_SDIO_DMA_IRQn DMA2_Stream3_IRQn
#define SD_SDIO_DMA_IRQHANDLER DMA2_Stream3_IRQHandler
#define SD_SDIO_CLK_DIV(fq) ((48000000 / (fq)) - 2)
#define SD_SDIO_INIT_CLK_DIV SD_SDIO_CLK_DIV(400000)
#define SD_SDIO_TRANSFER_CLK_DIV SD_SDIO_CLK_DIV(24000000)
#endif
// SPI NOR Flash
#define FLASH_SPI SPI6
#define FLASH_SPI_CS_GPIO GPIO_PIN(GPIOG, 6) // PG.06
@@ -519,25 +654,47 @@
#define FLASH_SPI_DMA_CHANNEL LL_DMA_CHANNEL_1
#define FLASH_SPI_DMA_TX_STREAM LL_DMA_STREAM_5
#define FLASH_SPI_DMA_RX_STREAM LL_DMA_STREAM_6
#define STORAGE_USE_SPI_FLASH
#if defined(RADIO_NV14_FAMILY)
#define STORAGE_USE_SDIO
#else
#define STORAGE_USE_SPI_FLASH
#endif
// SDRAM
#define SDRAM_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOH)
#define SDRAM_RCC_AHB3Periph RCC_AHB3Periph_FMC
// Audio
#define AUDIO_RCC_APB1Periph (RCC_APB1Periph_TIM6 | RCC_APB1Periph_DAC)
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#define AUDIO_OUTPUT_GPIO GPIO_PIN(GPIOA, 4) // PA.04
#define AUDIO_DMA_Stream DMA1_Stream5
#define AUDIO_DMA_Stream_IRQn DMA1_Stream5_IRQn
#define AUDIO_TIM_IRQn TIM6_DAC_IRQn
#define AUDIO_TIM_IRQHandler TIM6_DAC_IRQHandler
#define AUDIO_DMA_Stream_IRQHandler DMA1_Stream5_IRQHandler
#define AUDIO_TIMER TIM6
#define AUDIO_DMA DMA1
#if defined(RADIO_NV14_FAMILY)
#define AUDIO_XDCS_GPIO GPIO_PIN(GPIOH, 14) // PH.14
#define AUDIO_CS_GPIO GPIO_PIN(GPIOH, 13) // PH.13
#define AUDIO_DREQ_GPIO GPIO_PIN(GPIOH, 15) // PH.15
#define AUDIO_RST_GPIO GPIO_PIN(GPIOD, 4) // PD.04
#define AUDIO_SPI SPI1
#define AUDIO_SPI_GPIO_AF LL_GPIO_AF_5
#define AUDIO_SPI_SCK_GPIO GPIO_PIN(GPIOB, 3) // PB.03
#define AUDIO_SPI_MISO_GPIO GPIO_PIN(GPIOB, 4) // PB.04
#define AUDIO_SPI_MOSI_GPIO GPIO_PIN(GPIOB, 5) // PB.05
#else
#define AUDIO_RCC_APB1Periph (RCC_APB1Periph_TIM6 | RCC_APB1Periph_DAC)
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#define AUDIO_OUTPUT_GPIO GPIO_PIN(GPIOA, 4) // PA.04
#define AUDIO_DMA_Stream DMA1_Stream5
#define AUDIO_DMA_Stream_IRQn DMA1_Stream5_IRQn
#define AUDIO_TIM_IRQn TIM6_DAC_IRQn
#define AUDIO_TIM_IRQHandler TIM6_DAC_IRQHandler
#define AUDIO_DMA_Stream_IRQHandler DMA1_Stream5_IRQHandler
#define AUDIO_TIMER TIM6
#define AUDIO_DMA DMA1
#endif
#if defined(RADIO_NB4P)
#if defined(RADIO_NV14_FAMILY)
#define AUDIO_MUTE_GPIO GPIO_PIN(GPIOH, 8) // PH.08 audio amp control pin
#define AUDIO_UNMUTE_DELAY 120 // ms
#define AUDIO_MUTE_DELAY 500 // ms
#define INVERTED_MUTE_PIN
#elif defined(RADIO_NB4P)
#define AUDIO_MUTE_GPIO GPIO_PIN(GPIOH, 9) // PH.09 audio amp control pin
#define AUDIO_UNMUTE_DELAY 120 // ms
#define AUDIO_MUTE_DELAY 500 // ms
@@ -603,21 +760,22 @@
#define FLYSKY_HALL_DMA_Stream_TX LL_DMA_STREAM_4
// LED Strip
#define LED_STRIP_LENGTH 4
#define LED_STRIP_GPIO GPIO_PIN(GPIOH, 12) // PH.12 / TIM5_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_2 // TIM3/4/5
#define LED_STRIP_TIMER TIM5
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#if !defined(RADIO_NV14_FAMILY)
#define LED_STRIP_LENGTH 4
#define LED_STRIP_GPIO GPIO_PIN(GPIOH, 12) // PH.12 / TIM5_CH3
#define LED_STRIP_GPIO_AF LL_GPIO_AF_2 // TIM3/4/5
#define LED_STRIP_TIMER TIM5
#define LED_STRIP_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#define LED_STRIP_TIMER_CHANNEL LL_TIM_CHANNEL_CH3
#define LED_STRIP_TIMER_DMA DMA1
#define LED_STRIP_TIMER_DMA_CHANNEL LL_DMA_CHANNEL_6
#define LED_STRIP_TIMER_DMA_STREAM LL_DMA_STREAM_0
#define LED_STRIP_TIMER_DMA_IRQn DMA1_Stream0_IRQn
#define LED_STRIP_TIMER_DMA_IRQHandler DMA1_Stream0_IRQHandler
#define LED_STRIP_REFRESH_PERIOD 50 //ms
#define STATUS_LEDS
#endif
// Internal Module
#if defined(RADIO_PL18)
@@ -660,6 +818,27 @@
#define INTMODULE_RX_DMA_STREAM LL_DMA_STREAM_1
#define INTMODULE_RX_DMA_CHANNEL LL_DMA_CHANNEL_4
#define INTMODULE_TIMER TIM3
#define INTMODULE_TIMER_IRQn TIM3_IRQn
#define INTMODULE_TIMER_IRQHandler TIM3_IRQHandler
#define INTMODULE_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
#elif defined(RADIO_NV14_FAMILY)
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOH, 9) // PH.09
#define INTMODULE_TX_GPIO GPIO_PIN(GPIOF, 7) // PF.07
#define INTMODULE_RX_GPIO GPIO_PIN(GPIOF, 6) // PF.06
#define INTMODULE_USART UART7
#define INTMODULE_USART_IRQn UART7_IRQn
#define INTMODULE_DMA DMA1
#define INTMODULE_DMA_STREAM LL_DMA_STREAM_1
#define INTMODULE_DMA_STREAM_IRQ DMA1_Stream1_IRQn
#define INTMODULE_DMA_CHANNEL LL_DMA_CHANNEL_5
#define INTMODULE_RX_DMA DMA1
#define INTMODULE_RX_DMA_STREAM LL_DMA_STREAM_3
#define INTMODULE_RX_DMA_CHANNEL LL_DMA_CHANNEL_5
// #define INTMODULE_RX_DMA_Stream_IRQn DMA1_Stream3_IRQn
// #define INTMODULE_RX_DMA_Stream_IRQHandler DMA1_Stream_IRQHandler
#define INTMODULE_TIMER TIM3
#define INTMODULE_TIMER_IRQn TIM3_IRQn
#define INTMODULE_TIMER_IRQHandler TIM3_IRQHandler
@@ -670,6 +849,9 @@
#define EXTMODULE
#define EXTMODULE_PULSES
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 11) // PD.11
#if defined(RADIO_NV14_FAMILY)
#define EXTMODULE_PWR_FIX_GPIO GPIO_PIN(GPIOA, 2) // PA.02
#endif
#define EXTMODULE_TX_GPIO GPIO_PIN(GPIOC, 6) // PC.06
#define EXTMODULE_RX_GPIO GPIO_PIN(GPIOC, 7) // PC.07
#define EXTMODULE_TX_GPIO_AF LL_GPIO_AF_3 // TIM8_CH1
@@ -733,30 +915,17 @@
//ROTARY emulation for trims as buttons
#define ROTARY_ENCODER_NAVIGATION
//BLUETOOTH
// Bluetooth
#if !defined(RADIO_NB4P)
#define BT_EN_GPIO GPIOI
#define BT_EN_GPIO_PIN GPIO_Pin_8 // PI.8
#define BT_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOI | RCC_AHB1Periph_GPIOH)
#define BT_RCC_APB1Periph (RCC_APB1Periph_USART3)
#define BT_RCC_APB2Periph 0
#define BT_USART USART3
#define BT_GPIO_AF GPIO_AF_USART3
#define BT_USART_IRQn USART3_IRQn
#define BT_GPIO_TXRX GPIOB
#define BT_TX_GPIO_PIN GPIO_Pin_10 // PB.10
#define BT_RX_GPIO_PIN GPIO_Pin_11 // PB.11
#define BT_TX_GPIO_PinSource GPIO_PinSource10
#define BT_RX_GPIO_PinSource GPIO_PinSource11
#define BT_USART_IRQHandler USART3_IRQHandler
#define BT_CONNECTED_GPIO GPIOJ
#define BT_CONNECTED_GPIO_PIN GPIO_Pin_1 // PJ.01
#define BT_CMD_MODE_GPIO GPIOH
#define BT_CMD_MODE_GPIO_PIN GPIO_Pin_6 // PH.6
#define BLUETOOTH_ON_GPIO GPIO_PIN(GPIOI, 8) // PI.8
#define BT_USART USART3
#define BT_USART_IRQn USART3_IRQn
#define BT_GPIO_TXRX GPIOB
#define BT_TX_GPIO GPIO_PIN(GPIOB, 10) // PB.10
#define BT_RX_GPIO GPIO_PIN(GPIOB, 11) // PB.11
#define BT_EN_GPIO GPIO_PIN(GPIOI, 8) // PI.08
#define BT_CONNECTED_GPIO GPIO_PIN(GPIOJ, 1) // PJ.01
#define BT_CMD_MODE_GPIO GPIO_PIN(GPIOH, 6) // PH.06
#endif
// Millisecond timer
@@ -773,7 +942,7 @@
// SDRAM
#define SDRAM_BANK1
#if defined(RADIO_NB4P)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
#define PORTRAIT_LCD true
#define LANDSCAPE_LCD false
#define LCD_W 320
+77 -19
View File
@@ -66,10 +66,25 @@
#define TOUCH_CHSC5448_EVT_CONTACT 0x08
#define TOUCH_CHSC5448_MAX_POINTS 5
typedef enum {TC_NONE, TC_FT6236, TC_CST340, TC_CHSC5448} TouchController;
// CST836U definitions
#define TOUCH_CST836U_I2C_ADDRESS 0x15
#define TOUCH_CST836U_REG_NUM 0x02
#define TOUCH_CST836U_REG_P1_XH 0x03
#define TOUCH_CST836U_EVT_SHIFT 6
#define TOUCH_CST836U_EVT_MASK (3 << TOUCH_FT6206_EVT_SHIFT)
#define TOUCH_CST836U_EVT_CONTACT 0x02
#define TOUCH_CST836U_FW_VERSION_L_REG 0xa6
#define TOUCH_CST836U_FW_VERSION_H_REG 0xa7
#define TOUCH_CST836U_MODULE_VERSION_REG 0xa8
#define TOUCH_CST836U_PROJECT_NAME_REG 0xa9
#define TOUCH_CST836U_CHIP_TYPE_L_REG 0xaa
#define TOUCH_CST836U_CHIP_TYPE_H_REG 0xab
typedef enum {TC_NONE, TC_FT6236, TC_CST836U, TC_CST340, TC_CHSC5448} TouchController;
#if defined(DEBUG)
const char TOUCH_CONTROLLER_STR[][10] = {"", "FT6236", "CST340", "CHSC5448"};
const char TOUCH_CONTROLLER_STR[][10] = {"", "FT6236", "CST836U", "CST340", "CHSC5448"};
#endif
TouchController touchController = TC_NONE;
@@ -141,12 +156,12 @@ static void _i2c_init(void)
static void _i2c_reInit(void)
{
// stm32_i2c_deinit(TOUCH_I2C_BUS);
_i2c_init();
// _i2c_init();
}
static int _i2c_read(uint8_t addr, uint32_t reg, uint8_t regSize, uint8_t* data, uint16_t len, uint32_t timeout)
{
if (regSize > 2) {
if (touchController == TC_CST836U || regSize > 2) {
if(stm32_i2c_master_tx(TOUCH_I2C_BUS, addr, (uint8_t*) &reg, regSize, 3) < 0)
return false;
delay_us(5);
@@ -179,6 +194,11 @@ static uint16_t _i2c_readMultipleRetry(uint8_t addr, uint32_t reg, uint8_t regSi
return length;
}
static bool defaultHasTouchEvent()
{
return touchEventOccured;
}
static bool ft6236TouchRead(uint16_t * X, uint16_t * Y)
{
// Read register FT6206_TD_STAT_REG to check number of touches detection
@@ -202,11 +222,6 @@ static bool ft6236TouchRead(uint16_t * X, uint16_t * Y)
return false;
}
static bool ft6236HasTouchEvent()
{
return touchEventOccured;
}
static void ft6236PrintDebugInfo()
{
#if defined(DEBUG)
@@ -222,6 +237,38 @@ static void ft6236PrintDebugInfo()
}
static bool cst836uTouchRead(uint16_t * X, uint16_t * Y)
{
// Read register TOUCH_CST836U_REG_NUM to check number of touches detection
uint8_t nbTouch = _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_REG_NUM, 1);
bool hasTouch = nbTouch > 0;
if (hasTouch) {
uint8_t dataxy[4];
// Read X and Y positions and event
_i2c_readMultipleRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_REG_P1_XH, 1, dataxy, sizeof(dataxy));
// Send back ready X position to caller
*X = ((dataxy[0] & 0x0f) << 8) | dataxy[1];
// Send back ready Y position to caller
*Y = ((dataxy[2] & 0x0f) << 8) | dataxy[3];
uint8_t event = (dataxy[0] & TOUCH_CST836U_EVT_MASK) >> TOUCH_CST836U_EVT_SHIFT;
return event == TOUCH_CST836U_EVT_CONTACT;
}
return false;
}
static void cst836uPrintDebugInfo(void)
{
#if defined(DEBUG)
TRACE("cst836u: fw ver 0x%02X %02X", _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_FW_VERSION_H_REG, 1), _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_FW_VERSION_L_REG, 1));
TRACE("cst836u: module version 0x%02X", _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_MODULE_VERSION_REG, 1));
TRACE("cst836u: project name 0x%02X", _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_PROJECT_NAME_REG, 1));
TRACE("cst836u: chip type 0x%02X 0x%02X", _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_CHIP_TYPE_H_REG, 1), _i2c_readRetry(TOUCH_CST836U_I2C_ADDRESS, TOUCH_CST836U_CHIP_TYPE_L_REG, 1));
#endif
}
static bool cst340TouchRead(uint16_t * X, uint16_t * Y)
{
uint8_t data[4];
@@ -277,11 +324,6 @@ static bool chsc5448TouchRead(uint16_t * X, uint16_t * Y)
return ptCnt > 0 && event == TOUCH_CHSC5448_EVT_CONTACT;
}
static bool chsc5448HasTouchEvent()
{
return touchEventOccured;
}
static void chsc5448PrintDebugInfo()
{
// TODO, when necessary
@@ -289,10 +331,22 @@ static void chsc5448PrintDebugInfo()
static const TouchControllerDescriptor FT6236 =
{
.hasTouchEvent = ft6236HasTouchEvent,
.hasTouchEvent = defaultHasTouchEvent,
.touchRead = ft6236TouchRead,
.printDebugInfo = ft6236PrintDebugInfo,
#if defined(RADIO_NB4P)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
.rotate = DEG_180,
#else
.rotate = DEG_270,
#endif
};
static const TouchControllerDescriptor CST836U =
{
.hasTouchEvent = defaultHasTouchEvent,
.touchRead = cst836uTouchRead,
.printDebugInfo = cst836uPrintDebugInfo,
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
.rotate = DEG_180,
#else
.rotate = DEG_270,
@@ -304,7 +358,7 @@ static const TouchControllerDescriptor CST340 =
.hasTouchEvent = cst340HasTouchEvent,
.touchRead = cst340TouchRead,
.printDebugInfo = cst340PrintDebugInfo,
#if defined(RADIO_NB4P)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
.rotate = DEG_180,
#else
.rotate = DEG_270,
@@ -313,7 +367,7 @@ static const TouchControllerDescriptor CST340 =
static const TouchControllerDescriptor CHSC5448 =
{
.hasTouchEvent = chsc5448HasTouchEvent,
.hasTouchEvent = defaultHasTouchEvent,
.touchRead = chsc5448TouchRead,
.printDebugInfo = chsc5448PrintDebugInfo,
.rotate = DEG_0,
@@ -331,11 +385,15 @@ void _detect_touch_controller()
tcd = &CHSC5448;
TouchControllerType = 0;
boardTouchType = "CHSC5448";
} else if (stm32_i2c_is_dev_ready(TOUCH_I2C_BUS, TOUCH_CST836U_I2C_ADDRESS, 3, 5) == 0) {
touchController = TC_CST836U;
tcd = &CST836U;
boardTouchType = "CST836U";
} else {
touchController = TC_FT6236;
tcd = &FT6236;
boardTouchType = "FT6236";
#if defined(RADIO_NB4P)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
TouchControllerType = 0;
#else
TouchControllerType = 1;
+9 -1
View File
@@ -21,7 +21,15 @@
#pragma once
#if defined(RADIO_NB4P)
#if defined(RADIO_EL18)
#define USB_NAME "Flysky EL18"
#define USB_MANUFACTURER 'F', 'l', 'y', 's', 'k', 'y', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'E', 'L', '1', '8', ' ', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_NV14)
#define USB_NAME "Flysky NV14"
#define USB_MANUFACTURER 'F', 'l', 'y', 's', 'k', 'y', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'N', 'V', '1', '4', ' ', ' ', ' ', ' ' /* 8 Bytes */
#elif defined(RADIO_NB4P)
#define USB_NAME "FlySky NB4+"
#define USB_MANUFACTURER 'F', 'l', 'y', 'S', 'k', 'y', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'N', 'B', '4', '+', ' ', ' ', ' ', ' ' /* 8 Bytes */
+21 -16
View File
@@ -1063,27 +1063,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1078,27 +1078,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Aktualni firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Povoleno"
#define TR_BL_DISABLE "Zakazano"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] pro vybrani souboru"
#define TR_BL_FLASH_KEY "Drzet dlouze [R TRIM] pro nahrani"
#define TR_BL_ERASE_KEY "Drzet dlouze [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] pro ukonceni"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] pro vybrani souboru"
#define TR_BL_FLASH_KEY "Drzet dlouze [SW1A] pro nahrani"
#define TR_BL_ERASE_KEY "Drzet dlouze [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] pro ukonceni"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] pro vybrani souboru"
#define TR_BL_FLASH_KEY "Drzet dlouze [TR4 Dn] pro nahrani"
#define TR_BL_ERASE_KEY "Drzet dlouze [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] pro ukonceni"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] pro vybrani souboru"
#define TR_BL_FLASH_KEY "Drzet dlouze [R TRIM] pro nahrani"
#define TR_BL_EXIT_KEY " [L TRIM] pro ukonceni"
#define TR_BL_ENABLE "Povoleno"
#define TR_BL_DISABLE "Zakazano"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Povoleno"
#define TR_BL_DISABLE "Zakazano"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] pro vybrani souboru"
#define TR_BL_FLASH_KEY "Drzet dlouze [ENT] pro nahrani"
+22 -15
View File
@@ -1066,28 +1066,35 @@
#define TR_BL_RF_USB_ACCESS "RF USB adgang"
#define TR_BL_CURRENT_FW "Current firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Aktiver"
#define TR_BL_DISABLE "Deaktiver"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] for at bruge fil"
#define TR_BL_FLASH_KEY "Hold [R TRIM] laenge, for at starte"
#define TR_BL_ERASE_KEY "Hold [R TRIM] laenge, for at slette"
#define TR_BL_EXIT_KEY "[L TRIM] for at forlade"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] for at bruge fil"
#define TR_BL_FLASH_KEY "Hold [SW1A] laenge, for at starte"
#define TR_BL_ERASE_KEY "Hold [SW1A] laenge, for at slette"
#define TR_BL_EXIT_KEY "[SW1B] for at forlade"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] for at bruge fil"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] laenge, for at starte"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] laenge, for at slette"
#define TR_BL_EXIT_KEY "[TR4 Up] for at forlade"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] for at bruge fil"
#define TR_BL_FLASH_KEY "[R TRIM] laenge, for at starte"
#define TR_BL_EXIT_KEY "[L TRIM] for at forlade"
#define TR_BL_ENABLE "Aktiver"
#define TR_BL_DISABLE "Deaktiver"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] for at bruge fil"
#define TR_BL_FLASH_KEY "Hold [SW1A] laenge, for braending"
#define TR_BL_ERASE_KEY "Hold [SW1A] laenge, for sletning"
#define TR_BL_EXIT_KEY "[SW1B] for at forlade"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] for at bruge fil"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] laenge, for braending"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] laenge, for sletning"
#define TR_BL_EXIT_KEY "[TR4 Up] for at forlade"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] for at bruge fil"
#define TR_BL_FLASH_KEY "[ENT] laenge, for at starte"
#define TR_BL_FLASH_KEY "Hold [ENT] laenge, for at starte"
#define TR_BL_ERASE_KEY "Hold [ENT] laenge, for at slette"
#define TR_BL_EXIT_KEY "[RTN] for at forlade"
#endif
+22 -17
View File
@@ -1056,31 +1056,36 @@
#define TR_BL_RF_USB_ACCESS "RF USB Zugriff"
#define TR_BL_CURRENT_FW "Aktuelle Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Aktivieren"
#define TR_BL_DISABLE "Deaktivieren"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] um Datei auszuwählen"
#define TR_BL_FLASH_KEY "Halte [R TRIM] gedrückt, zum schreiben"
#define TR_BL_ERASE_KEY "Halte [R TRIM] gedrückt, to erase"
#define TR_BL_EXIT_KEY "[L TRIM] zum beenden"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] um Datei auszuwählen"
#define TR_BL_FLASH_KEY "Halte [SW1A] gedrückt, zum schreiben"
#define TR_BL_ERASE_KEY "Halte [SW1A] gedrückt, to erase"
#define TR_BL_EXIT_KEY "[SW1B] zum beenden"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] um Datei auszuwählen"
#define TR_BL_FLASH_KEY "Halte [TR4 Dn] gedrückt, zum schreiben"
#define TR_BL_ERASE_KEY "Halte [TR4 Dn] gedrückt, to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] zum beenden"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] um Datei auszuwählen"
#define TR_BL_FLASH_KEY "Halte [R TRIM] gedrückt, zum schreiben"
#define TR_BL_EXIT_KEY " [L TRIM] zum beenden"
#define TR_BL_ENABLE "Aktivieren"
#define TR_BL_DISABLE "Deaktivieren"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Aktivieren"
#define TR_BL_DISABLE "Deaktivieren"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] um Datei auszuwählen"
#define TR_BL_FLASH_KEY "Halte [ENT] gedrückt, zum schreiben"
#define TR_BL_ERASE_KEY "Hold [ENT] long to erase"
#define TR_BL_ERASE_KEY "Halte [ENT] gedrückt, to erase"
#define TR_BL_EXIT_KEY "[RTN] zum beenden"
#endif
+21 -16
View File
@@ -1069,27 +1069,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1064,27 +1064,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1076,27 +1076,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+22 -17
View File
@@ -1077,31 +1077,36 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Firmware actuel:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Activer"
#define TR_BL_DISABLE "Désactiver"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] pour sélect. fichier"
#define TR_BL_FLASH_KEY "Appui long [R TRIM] pour flasher"
#define TR_BL_ERASE_KEY "Appui long [R TRIM] to erase"
#define TR_BL_EXIT_KEY "[L TRIM] pour quitter"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] pour sélect. fichier"
#define TR_BL_FLASH_KEY "Appui long [SW1A] pour flasher"
#define TR_BL_ERASE_KEY "Appui long [SW1A] to erase"
#define TR_BL_EXIT_KEY "[SW1B] pour quitter"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] pour sélect. fichier"
#define TR_BL_FLASH_KEY "Appui long [TR4 Dn] pour flasher"
#define TR_BL_ERASE_KEY "Appui long [TR4 Dn] to erase"
#define TR_BL_EXIT_KEY "[TR4 U] pour quitter"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] pour sélect. fichier"
#define TR_BL_FLASH_KEY "Appui long [R TRIM] pour flasher"
#define TR_BL_EXIT_KEY " [L TRIM] pour quitter"
#define TR_BL_ENABLE "Activer"
#define TR_BL_DISABLE "Désactiver"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Activer"
#define TR_BL_DISABLE "Désactiver"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] pour select. fichier"
#define TR_BL_FLASH_KEY "Appui long [ENT] pour flasher"
#define TR_BL_ERASE_KEY "Hold [ENT] long to erase"
#define TR_BL_ERASE_KEY "Appui long [ENT] to erase"
#define TR_BL_EXIT_KEY "[RTN] pour quitter"
#endif
+21 -16
View File
@@ -1066,27 +1066,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1060,27 +1060,32 @@
#define TR_BL_ERASE_FLASH_MSG "This may take up to 200s"
#define TR_BL_RF_USB_ACCESS "RF USB access"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Abilita"
#define TR_BL_DISABLE "Disabilita"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] per scegliere il file"
#define TR_BL_FLASH_KEY "Tener premuto [R TRIM] per scrivere"
#define TR_BL_ERASE_KEY "Tener premuto [R TRIM] to erase"
#define TR_BL_EXIT_KEY "[L TRIM] per uscire"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] per scegliere il file"
#define TR_BL_FLASH_KEY "Tener premuto [SW1A] per scrivere"
#define TR_BL_ERASE_KEY "Tener premuto [SW1A] to erase"
#define TR_BL_EXIT_KEY "[SW1B] per uscire"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] per scegliere il file"
#define TR_BL_FLASH_KEY "Tener premuto [TR4 Dn] per scrivere"
#define TR_BL_ERASE_KEY "Tener premuto [TR4 Dn] to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] per uscire"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] per scegliere il file"
#define TR_BL_FLASH_KEY "Tener premuto [R TRIM] per scrivere"
#define TR_BL_EXIT_KEY " [L TRIM] per uscire"
#define TR_BL_ENABLE "Abilita"
#define TR_BL_DISABLE "Disabilita"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Abilita"
#define TR_BL_DISABLE "Disabilita"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] per scegliere il file"
#define TR_BL_FLASH_KEY "Tenere premuto [ENT] per scrivere"
+21 -16
View File
@@ -1066,27 +1066,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1069,27 +1069,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1063,27 +1063,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Obecny firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [R TRIM] aby flashowac"
#define TR_BL_ERASE_KEY "Przytrzymaj [R TRIM] to erase"
#define TR_BL_EXIT_KEY "[L TRIM] aby wyjsc"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [SW1A] aby flashowac"
#define TR_BL_ERASE_KEY "Przytrzymaj [SW1A] to erase"
#define TR_BL_EXIT_KEY "[SW1B] aby wyjsc"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [TR4 Dn] aby flashowac"
#define TR_BL_ERASE_KEY "Przytrzymaj [TR4 Dn] to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] aby wyjsc"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [R TRIM] aby flashowac"
#define TR_BL_EXIT_KEY " [L TRIM] aby wyjsc"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [SW1A] aby flashowac"
#define TR_BL_ERASE_KEY "Przytrzymaj [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] aby wyjsc"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [TR4 Dn] aby flashowac"
#define TR_BL_ERASE_KEY "Przytrzymaj [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] aby wyjsc"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] aby wybrac plik"
#define TR_BL_FLASH_KEY "Przytrzymaj [ENT] aby flashowac"
+21 -16
View File
@@ -1070,27 +1070,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1069,27 +1069,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+22 -17
View File
@@ -1092,29 +1092,34 @@
#define TR_BL_RF_USB_ACCESS "RF USB-access"
#define TR_BL_CURRENT_FW "Nuvarande firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Aktivera"
#define TR_BL_DISABLE "Inaktivera"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] foer att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [R TRIM] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [R TRIM] foer att radera"
#define TR_BL_EXIT_KEY "[L TRIM] foer att avsluta"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] foer att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [SW1A] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [SW1A] foer att radera"
#define TR_BL_EXIT_KEY "[SW1B] foer att avsluta"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] foer att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [TR4 Dn] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [TR4 Dn] foer att radera"
#define TR_BL_EXIT_KEY "[TR4 Up] foer att avsluta"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] foer att vaelja fil"
#define TR_BL_FLASH_KEY "[R TRIM] foer att flasha"
#define TR_BL_EXIT_KEY " [L TRIM] foer att avbryta"
#define TR_BL_ENABLE "Aktivera"
#define TR_BL_DISABLE "Inaktivera"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Aktivera"
#define TR_BL_DISABLE "Inaktivera"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] för att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [SW1A] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [SW1A] foer att radera"
#define TR_BL_EXIT_KEY "[SW1B] foer att avbryta"
#else
#define TR_BL_SELECT_KEY "[TR4 Ner] för att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [TR4 Dn] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [TR4 Dn] foer att radera"
#define TR_BL_EXIT_KEY "[TR4 Upp] foer att avbryta"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] för att vaelja fil"
#define TR_BL_SELECT_KEY "[ENT] foer att vaelja fil"
#define TR_BL_FLASH_KEY "Haall ner [ENT] foer att flasha"
#define TR_BL_ERASE_KEY "Haall ner [ENT] foer att radera"
#define TR_BL_EXIT_KEY "[RTN] foer att avbryta"
+21 -16
View File
@@ -1068,27 +1068,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - ASCII characters only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+21 -16
View File
@@ -1069,27 +1069,32 @@
#define TR_BL_RF_USB_ACCESS "RF USB access"
#define TR_BL_CURRENT_FW "Current Firmware:"
#if defined(PCBNV14)
#if defined(PCBPL18)
// Bootloader PL18/NB4+ specific - Ascii only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NV14_FAMILY)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_ERASE_KEY "Hold [R TRIM] long to erase"
#define TR_BL_EXIT_KEY "[L TRIM] to exit"
#elif defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#elif defined(PCBNV14)
#define TR_BL_SELECT_KEY "[R TRIM] to select file"
#define TR_BL_FLASH_KEY "Hold [R TRIM] long to flash"
#define TR_BL_EXIT_KEY " [L TRIM] to exit"
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#elif defined(PCBPL18)
// Bootloader PL18/NB4+ specific - Ascii only
#define TR_BL_ENABLE "Enable"
#define TR_BL_DISABLE "Disable"
#if defined(RADIO_NB4P)
#define TR_BL_SELECT_KEY "[SW1A] to select file"
#define TR_BL_FLASH_KEY "Hold [SW1A] long to flash"
#define TR_BL_ERASE_KEY "Hold [SW1A] long to erase"
#define TR_BL_EXIT_KEY "[SW1B] to exit"
#else
#define TR_BL_SELECT_KEY "[TR4 Dn] to select file"
#define TR_BL_FLASH_KEY "Hold [TR4 Dn] long to flash"
#define TR_BL_ERASE_KEY "Hold [TR4 Dn] long to erase"
#define TR_BL_EXIT_KEY "[TR4 Up] to exit"
#endif
#else
#define TR_BL_SELECT_KEY "[ENT] to select file"
#define TR_BL_FLASH_KEY "Hold [ENT] long to flash"
+8 -2
View File
@@ -131,12 +131,18 @@ get_target_build_options() {
v16)
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=V16"
;;
nv14)
nv14-old)
BUILD_OPTIONS+="-DPCB=NV14"
;;
el18)
el18-old)
BUILD_OPTIONS+="-DPCB=NV14 -DPCBREV=EL18"
;;
nv14)
BUILD_OPTIONS+="-DPCB=PL18 -DPCBREV=NV14"
;;
el18)
BUILD_OPTIONS+="-DPCB=PL18 -DPCBREV=EL18"
;;
pl18)
BUILD_OPTIONS+="-DPCB=PL18"
;;
+2 -2
View File
@@ -9,8 +9,8 @@ import tempfile
boards = {
"NV14": { "PCB": "NV14" },
"EL18": { "PCB": "NV14", "PCBREV": "EL18" },
"NV14": { "PCB": "PL18", "PCBREV": "NV14" },
"EL18": { "PCB": "PL18", "PCBREV": "EL18" },
"PL18": { "PCB": "PL18" },
"PL18EV": { "PCB": "PL18", "PCBREV": "PL18EV" },
}