mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-14 03:50:02 +03:00
Rename 'display_name' to 'pilot_name'; rename 'name' to 'craft_name'; Add the 'MSP2_GET_TEXT' and 'MSP2_SET_TEXT' MSP commands
- add the 'MSP2_GET_TEXT' and 'MSP2_SET_TEXT' MSP2 commands - Support getting/setting the 'MSP2TEXT_PILOT_DISPLAY_NAME' config prop ('pilotConfigMutable()->displayName') - rename 'display_name' to 'pilot_name' - Add the new 'OSD_PILOT_NAME' OSD element in place of the 'OSD_DISPLAY_NAME' one (as they are semantically identical) - Add the 'osd_pilot_name_pos' cli prop in place of 'osd_display_name_pos' - rename 'pilotConfigMutable()'s 'name' to 'craftName' - remove the legacy 'GET_NAME' / 'SET_NAME' MSP commands - replace the 'name' CLI prop for 'craft_name' - add the 'MSP2TEXT_CRAFT_NAME' constant for 'MSP2_GET_TEXT' and 'MSP2_SET_TEXT'
This commit is contained in:
parent
aafcd26fb5
commit
e7df32f020
12 changed files with 99 additions and 49 deletions
|
@ -1291,7 +1291,7 @@ static bool blackboxWriteSysinfo(void)
|
|||
BLACKBOX_PRINT_HEADER_LINE("Board information", "%s %s", getManufacturerId(), getBoardName());
|
||||
#endif
|
||||
BLACKBOX_PRINT_HEADER_LINE("Log start datetime", "%s", blackboxGetStartDateTime(buf));
|
||||
BLACKBOX_PRINT_HEADER_LINE("Craft name", "%s", pilotConfig()->name);
|
||||
BLACKBOX_PRINT_HEADER_LINE("Craft name", "%s", pilotConfig()->craftName);
|
||||
BLACKBOX_PRINT_HEADER_LINE("I interval", "%d", blackboxIInterval);
|
||||
BLACKBOX_PRINT_HEADER_LINE("P interval", "%d", blackboxPInterval);
|
||||
BLACKBOX_PRINT_HEADER_LINE("P ratio", "%d", (uint16_t)(blackboxIInterval / blackboxPInterval));
|
||||
|
|
|
@ -3117,10 +3117,10 @@ static void cliSimplifiedTuning(const char *cmdName, char *cmdline)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void printName(dumpFlags_t dumpMask, const pilotConfig_t *pilotConfig)
|
||||
static void printCraftName(dumpFlags_t dumpMask, const pilotConfig_t *pilotConfig)
|
||||
{
|
||||
const bool equalsDefault = strlen(pilotConfig->name) == 0;
|
||||
cliDumpPrintLinef(dumpMask, equalsDefault, "\r\n# name: %s", equalsDefault ? emptyName : pilotConfig->name);
|
||||
const bool equalsDefault = strlen(pilotConfig->craftName) == 0;
|
||||
cliDumpPrintLinef(dumpMask, equalsDefault, "\r\n# name: %s", equalsDefault ? emptyName : pilotConfig->craftName);
|
||||
}
|
||||
|
||||
#if defined(USE_BOARD_INFO)
|
||||
|
@ -6286,7 +6286,7 @@ static void printConfig(const char *cmdName, char *cmdline, bool doDiff)
|
|||
}
|
||||
|
||||
if (!(dumpMask & HARDWARE_ONLY)) {
|
||||
printName(dumpMask, &pilotConfig_Copy);
|
||||
printCraftName(dumpMask, &pilotConfig_Copy);
|
||||
}
|
||||
|
||||
#ifdef USE_RESOURCE_MGMT
|
||||
|
|
|
@ -1363,7 +1363,7 @@ const clivalue_t valueTable[] = {
|
|||
{ "osd_wh_drawn_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_WATT_HOURS_DRAWN]) },
|
||||
{ "osd_motor_diag_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_MOTOR_DIAG]) },
|
||||
{ "osd_craft_name_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_CRAFT_NAME]) },
|
||||
{ "osd_display_name_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_DISPLAY_NAME]) },
|
||||
{ "osd_pilot_name_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_PILOT_NAME]) },
|
||||
{ "osd_gps_speed_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_GPS_SPEED]) },
|
||||
{ "osd_gps_lon_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_GPS_LON]) },
|
||||
{ "osd_gps_lat_pos", VAR_UINT16 | MASTER_VALUE, .config.minmaxUnsigned = { 0, OSD_POSCFG_MAX }, PG_OSD_ELEMENT_CONFIG, offsetof(osdElementConfig_t, item_pos[OSD_GPS_LAT]) },
|
||||
|
@ -1678,9 +1678,9 @@ const clivalue_t valueTable[] = {
|
|||
{ "stats_mah_used", VAR_UINT32 | MASTER_VALUE, .config.u32Max = UINT32_MAX, PG_STATS_CONFIG, offsetof(statsConfig_t, stats_mah_used) },
|
||||
#endif
|
||||
#endif
|
||||
{ "name", VAR_UINT8 | MASTER_VALUE | MODE_STRING, .config.string = { 1, MAX_NAME_LENGTH, STRING_FLAGS_NONE }, PG_PILOT_CONFIG, offsetof(pilotConfig_t, name) },
|
||||
{ "craft_name", VAR_UINT8 | MASTER_VALUE | MODE_STRING, .config.string = { 1, MAX_NAME_LENGTH, STRING_FLAGS_NONE }, PG_PILOT_CONFIG, offsetof(pilotConfig_t, craftName) },
|
||||
#ifdef USE_OSD
|
||||
{ "display_name", VAR_UINT8 | MASTER_VALUE | MODE_STRING, .config.string = { 1, MAX_NAME_LENGTH, STRING_FLAGS_NONE }, PG_PILOT_CONFIG, offsetof(pilotConfig_t, displayName) },
|
||||
{ "pilot_name", VAR_UINT8 | MASTER_VALUE | MODE_STRING, .config.string = { 1, MAX_NAME_LENGTH, STRING_FLAGS_NONE }, PG_PILOT_CONFIG, offsetof(pilotConfig_t, pilotName) },
|
||||
#endif
|
||||
|
||||
// PG_POSITION
|
||||
|
|
|
@ -105,7 +105,7 @@ const OSD_Entry menuOsdActiveElemsEntries[] =
|
|||
#endif
|
||||
{"ANTI GRAVITY", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_ANTI_GRAVITY]},
|
||||
{"FLY MODE", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_FLYMODE]},
|
||||
{"NAME", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_CRAFT_NAME]},
|
||||
{"CRAFT NAME", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_CRAFT_NAME]},
|
||||
{"THROTTLE", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_THROTTLE_POS]},
|
||||
#ifdef USE_VTX_CONTROL
|
||||
{"VTX CHAN", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_VTX_CHANNEL]},
|
||||
|
@ -161,7 +161,7 @@ const OSD_Entry menuOsdActiveElemsEntries[] =
|
|||
{"STICK OVERLAY LEFT", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_STICK_OVERLAY_LEFT]},
|
||||
{"STICK OVERLAY RIGHT",OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_STICK_OVERLAY_RIGHT]},
|
||||
#endif
|
||||
{"DISPLAY NAME", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_DISPLAY_NAME]},
|
||||
{"PILOT NAME", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_PILOT_NAME]},
|
||||
{"RC CHANNELS", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_RC_CHANNELS]},
|
||||
{"CAMERA FRAME", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_CAMERA_FRAME]},
|
||||
{"TOTAL FLIGHTS", OME_VISIBLE | DYNAMIC, NULL, &osdConfig_item_pos[OSD_TOTAL_FLIGHTS]},
|
||||
|
|
|
@ -105,11 +105,11 @@ pidProfile_t *currentPidProfile;
|
|||
#define RX_SPI_DEFAULT_PROTOCOL 0
|
||||
#endif
|
||||
|
||||
PG_REGISTER_WITH_RESET_TEMPLATE(pilotConfig_t, pilotConfig, PG_PILOT_CONFIG, 1);
|
||||
PG_REGISTER_WITH_RESET_TEMPLATE(pilotConfig_t, pilotConfig, PG_PILOT_CONFIG, 2);
|
||||
|
||||
PG_RESET_TEMPLATE(pilotConfig_t, pilotConfig,
|
||||
.name = { 0 },
|
||||
.displayName = { 0 },
|
||||
.craftName = { 0 },
|
||||
.pilotName = { 0 },
|
||||
);
|
||||
|
||||
PG_REGISTER_WITH_RESET_TEMPLATE(systemConfig_t, systemConfig, PG_SYSTEM_CONFIG, 3);
|
||||
|
|
|
@ -34,8 +34,8 @@ typedef enum {
|
|||
} configurationState_e;
|
||||
|
||||
typedef struct pilotConfig_s {
|
||||
char name[MAX_NAME_LENGTH + 1];
|
||||
char displayName[MAX_NAME_LENGTH + 1];
|
||||
char craftName[MAX_NAME_LENGTH + 1];
|
||||
char pilotName[MAX_NAME_LENGTH + 1];
|
||||
} pilotConfig_t;
|
||||
|
||||
PG_DECLARE(pilotConfig_t, pilotConfig);
|
||||
|
|
|
@ -1140,15 +1140,6 @@ static bool mspProcessOutCommand(mspDescriptor_t srcDesc, int16_t cmdMSP, sbuf_t
|
|||
}
|
||||
break;
|
||||
|
||||
case MSP_NAME:
|
||||
{
|
||||
const int nameLen = strlen(pilotConfig()->name);
|
||||
for (int i = 0; i < nameLen; i++) {
|
||||
sbufWriteU8(dst, pilotConfig()->name[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef USE_SERVOS
|
||||
case MSP_SERVO:
|
||||
sbufWriteData(dst, &servo, MAX_SUPPORTED_SERVOS * 2);
|
||||
|
@ -2487,6 +2478,38 @@ static mspResult_e mspFcProcessOutCommandWithArg(mspDescriptor_t srcDesc, int16_
|
|||
}
|
||||
|
||||
break;
|
||||
|
||||
case MSP2_GET_TEXT:
|
||||
{
|
||||
// type byte, then length byte followed by the actual characters
|
||||
const uint8_t textType = sbufBytesRemaining(src) ? sbufReadU8(src) : 0;
|
||||
|
||||
char* textVar;
|
||||
|
||||
switch (textType) {
|
||||
case MSP2TEXT_PILOT_NAME:
|
||||
textVar = pilotConfigMutable()->pilotName;
|
||||
break;
|
||||
|
||||
case MSP2TEXT_CRAFT_NAME:
|
||||
textVar = pilotConfigMutable()->craftName;
|
||||
break;
|
||||
|
||||
default:
|
||||
return MSP_RESULT_ERROR;
|
||||
}
|
||||
|
||||
const uint8_t textLength = strlen(textVar);
|
||||
|
||||
// type byte, then length byte followed by the actual characters
|
||||
sbufWriteU8(dst, textType);
|
||||
sbufWriteU8(dst, textLength);
|
||||
for (unsigned int i = 0; i < textLength; i++) {
|
||||
sbufWriteU8(dst, textVar[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return MSP_RESULT_CMD_UNKNOWN;
|
||||
}
|
||||
|
@ -3760,16 +3783,6 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, int16_t cmdMSP,
|
|||
break;
|
||||
#endif
|
||||
|
||||
case MSP_SET_NAME:
|
||||
memset(pilotConfigMutable()->name, 0, ARRAYLEN(pilotConfig()->name));
|
||||
for (unsigned int i = 0; i < MIN(MAX_NAME_LENGTH, dataSize); i++) {
|
||||
pilotConfigMutable()->name[i] = sbufReadU8(src);
|
||||
}
|
||||
#ifdef USE_OSD
|
||||
osdAnalyzeActiveElements();
|
||||
#endif
|
||||
break;
|
||||
|
||||
#ifdef USE_RTC_TIME
|
||||
case MSP_SET_RTC:
|
||||
{
|
||||
|
@ -3840,6 +3853,40 @@ static mspResult_e mspProcessInCommand(mspDescriptor_t srcDesc, int16_t cmdMSP,
|
|||
|
||||
break;
|
||||
#endif
|
||||
|
||||
case MSP2_SET_TEXT:
|
||||
{
|
||||
// type byte, then length byte followed by the actual characters
|
||||
const uint8_t textType = sbufReadU8(src);
|
||||
|
||||
char* textVar;
|
||||
const uint8_t textLength = MIN(MAX_NAME_LENGTH, sbufReadU8(src));
|
||||
switch (textType) {
|
||||
case MSP2TEXT_PILOT_NAME:
|
||||
textVar = pilotConfigMutable()->pilotName;
|
||||
break;
|
||||
|
||||
case MSP2TEXT_CRAFT_NAME:
|
||||
textVar = pilotConfigMutable()->craftName;
|
||||
break;
|
||||
|
||||
default:
|
||||
return MSP_RESULT_ERROR;
|
||||
}
|
||||
|
||||
memset(textVar, 0, strlen(textVar));
|
||||
for (unsigned int i = 0; i < textLength; i++) {
|
||||
textVar[i] = sbufReadU8(src);
|
||||
}
|
||||
|
||||
#ifdef USE_OSD
|
||||
if (textType == MSP2TEXT_PILOT_NAME || textType == MSP2TEXT_CRAFT_NAME) {
|
||||
osdAnalyzeActiveElements();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// we do not know how to handle the (valid) message, indicate error MSP $M!
|
||||
return MSP_RESULT_ERROR;
|
||||
|
|
|
@ -101,9 +101,6 @@
|
|||
#define MSP_BOARD_INFO 4 //out message
|
||||
#define MSP_BUILD_INFO 5 //out message
|
||||
|
||||
#define MSP_NAME 10 //out message Returns user set board name - betaflight
|
||||
#define MSP_SET_NAME 11 //in message Sets board name - betaflight
|
||||
|
||||
//
|
||||
// MSP commands for Cleanflight original features
|
||||
//
|
||||
|
|
|
@ -24,3 +24,9 @@
|
|||
#define MSP2_SEND_DSHOT_COMMAND 0x3003
|
||||
#define MSP2_GET_VTX_DEVICE_STATUS 0x3004
|
||||
#define MSP2_GET_OSD_WARNINGS 0x3005 // returns active OSD warning message text
|
||||
#define MSP2_GET_TEXT 0x3006
|
||||
#define MSP2_SET_TEXT 0x3007
|
||||
|
||||
// MSP2_SET_TEXT and MSP2_GET_TEXT variable types
|
||||
#define MSP2TEXT_PILOT_NAME 1
|
||||
#define MSP2TEXT_CRAFT_NAME 2
|
||||
|
|
|
@ -149,7 +149,7 @@ typedef enum {
|
|||
OSD_FLIGHT_DIST,
|
||||
OSD_STICK_OVERLAY_LEFT,
|
||||
OSD_STICK_OVERLAY_RIGHT,
|
||||
OSD_DISPLAY_NAME,
|
||||
OSD_PILOT_NAME,
|
||||
OSD_ESC_RPM_FREQ,
|
||||
OSD_RATE_PROFILE_NAME,
|
||||
OSD_PID_PROFILE_NAME,
|
||||
|
|
|
@ -797,10 +797,10 @@ static void toUpperCase(char* dest, const char* src, unsigned int maxSrcLength)
|
|||
|
||||
static void osdBackgroundCraftName(osdElementParms_t *element)
|
||||
{
|
||||
if (strlen(pilotConfig()->name) == 0) {
|
||||
if (strlen(pilotConfig()->craftName) == 0) {
|
||||
strcpy(element->buff, "CRAFT_NAME");
|
||||
} else {
|
||||
toUpperCase(element->buff, pilotConfig()->name, MAX_NAME_LENGTH);
|
||||
toUpperCase(element->buff, pilotConfig()->craftName, MAX_NAME_LENGTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -874,12 +874,12 @@ static void osdElementDisarmed(osdElementParms_t *element)
|
|||
}
|
||||
}
|
||||
|
||||
static void osdBackgroundDisplayName(osdElementParms_t *element)
|
||||
static void osdBackgroundPilotName(osdElementParms_t *element)
|
||||
{
|
||||
if (strlen(pilotConfig()->displayName) == 0) {
|
||||
strcpy(element->buff, "DISPLAY_NAME");
|
||||
if (strlen(pilotConfig()->pilotName) == 0) {
|
||||
strcpy(element->buff, "PILOT_NAME");
|
||||
} else {
|
||||
toUpperCase(element->buff, pilotConfig()->displayName, MAX_NAME_LENGTH);
|
||||
toUpperCase(element->buff, pilotConfig()->pilotName, MAX_NAME_LENGTH);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1525,7 +1525,7 @@ static void osdElementWarnings(osdElementParms_t *element)
|
|||
}
|
||||
#endif // USE_RX_LINK_QUALITY_INFO
|
||||
}
|
||||
strncpy(pilotConfigMutable()->name, element->buff, MAX_NAME_LENGTH - 1);
|
||||
strncpy(pilotConfigMutable()->craftName, element->buff, MAX_NAME_LENGTH - 1);
|
||||
}
|
||||
#endif // USE_CRAFTNAME_MSGS
|
||||
}
|
||||
|
@ -1579,7 +1579,7 @@ static const uint8_t osdElementDisplayOrder[] = {
|
|||
#ifdef USE_ACC
|
||||
OSD_FLIP_ARROW,
|
||||
#endif
|
||||
OSD_DISPLAY_NAME,
|
||||
OSD_PILOT_NAME,
|
||||
#ifdef USE_RTC_TIME
|
||||
OSD_RTC_DATETIME,
|
||||
#endif
|
||||
|
@ -1711,7 +1711,7 @@ const osdElementDrawFn osdElementDrawFunction[OSD_ITEM_COUNT] = {
|
|||
[OSD_STICK_OVERLAY_LEFT] = osdElementStickOverlay,
|
||||
[OSD_STICK_OVERLAY_RIGHT] = osdElementStickOverlay,
|
||||
#endif
|
||||
[OSD_DISPLAY_NAME] = NULL, // only has background
|
||||
[OSD_PILOT_NAME] = NULL, // only has background
|
||||
#if defined(USE_DSHOT_TELEMETRY) || defined(USE_ESC_SENSOR)
|
||||
[OSD_ESC_RPM_FREQ] = osdElementEscRpmFreq,
|
||||
#endif
|
||||
|
@ -1746,7 +1746,7 @@ const osdElementDrawFn osdElementBackgroundFunction[OSD_ITEM_COUNT] = {
|
|||
[OSD_STICK_OVERLAY_LEFT] = osdBackgroundStickOverlay,
|
||||
[OSD_STICK_OVERLAY_RIGHT] = osdBackgroundStickOverlay,
|
||||
#endif
|
||||
[OSD_DISPLAY_NAME] = osdBackgroundDisplayName,
|
||||
[OSD_PILOT_NAME] = osdBackgroundPilotName,
|
||||
};
|
||||
|
||||
static void osdAddActiveElement(osd_items_e element)
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
#define PG_RX_CHANNEL_RANGE_CONFIG 44
|
||||
#define PG_MODE_COLOR_CONFIG 45 // part of led strip, structs OK
|
||||
#define PG_SPECIAL_COLOR_CONFIG 46 // part of led strip, structs OK
|
||||
#define PG_PILOT_CONFIG 47 // does not exist in betaflight
|
||||
#define PG_PILOT_CONFIG 47 // used for pilot and craft name from 4.4
|
||||
#define PG_MSP_SERVER_CONFIG 48 // does not exist in betaflight
|
||||
#define PG_VOLTAGE_METER_CONFIG 49 // renamed from PG_VOLTAGE_METER_CONFIG // deprecated
|
||||
#define PG_AMPERAGE_METER_CONFIG 50 // renamed from PG_AMPERAGE_METER_CONFIG // deprecated
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue