diff --git a/src/main/blackbox/blackbox.c b/src/main/blackbox/blackbox.c index e4b8dc1d67..bcf47a3481 100644 --- a/src/main/blackbox/blackbox.c +++ b/src/main/blackbox/blackbox.c @@ -1809,7 +1809,7 @@ static bool blackboxWriteSysinfo(void) BLACKBOX_PRINT_HEADER_LINE("Firmware revision", "INAV %s (%s) %s", FC_VERSION_STRING, shortGitRevision, targetName); BLACKBOX_PRINT_HEADER_LINE("Firmware date", "%s %s", buildDate, buildTime); BLACKBOX_PRINT_HEADER_LINE("Log start datetime", "%s", blackboxGetStartDateTime(buf)); - BLACKBOX_PRINT_HEADER_LINE("Craft name", "%s", systemConfig()->name); + BLACKBOX_PRINT_HEADER_LINE("Craft name", "%s", systemConfig()->craftName); BLACKBOX_PRINT_HEADER_LINE("P interval", "%u/%u", blackboxConfig()->rate_num, blackboxConfig()->rate_denom); BLACKBOX_PRINT_HEADER_LINE("minthrottle", "%d", getThrottleIdleValue()); BLACKBOX_PRINT_HEADER_LINE("maxthrottle", "%d", motorConfig()->maxthrottle); diff --git a/src/main/fc/config.h b/src/main/fc/config.h index b416de86d8..b7a8d40b66 100644 --- a/src/main/fc/config.h +++ b/src/main/fc/config.h @@ -80,7 +80,8 @@ typedef struct systemConfig_s { uint8_t cpuUnderclock; #endif uint8_t throttle_tilt_compensation_strength; // the correction that will be applied at throttle_correction_angle. - char name[MAX_NAME_LENGTH + 1]; + char craftName[MAX_NAME_LENGTH + 1]; + char pilotName[MAX_NAME_LENGTH + 1]; } systemConfig_t; PG_DECLARE(systemConfig_t, systemConfig); diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index 62b0c8e5a8..18c26b284c 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -1398,7 +1398,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF case MSP_NAME: { - const char *name = systemConfig()->name; + const char *name = systemConfig()->craftName; while (*name) { sbufWriteU8(dst, *name++); } diff --git a/src/main/fc/settings.yaml b/src/main/fc/settings.yaml index 82136143b6..ee5d5b2fa5 100644 --- a/src/main/fc/settings.yaml +++ b/src/main/fc/settings.yaml @@ -3576,6 +3576,12 @@ groups: - name: name description: "Craft name" default_value: "" + field: craftName + max: MAX_NAME_LENGTH + - name: pilot_name + description: "Pilot name" + default_value: "" + field: pilotName max: MAX_NAME_LENGTH - name: PG_MODE_ACTIVATION_OPERATOR_CONFIG diff --git a/src/main/io/osd.c b/src/main/io/osd.c index c24320f08b..f2a3fb298b 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -763,12 +763,25 @@ static void osdFormatCoordinate(char *buff, char sym, int32_t val) static void osdFormatCraftName(char *buff) { - if (strlen(systemConfig()->name) == 0) + if (strlen(systemConfig()->craftName) == 0) strcpy(buff, "CRAFT_NAME"); else { for (int i = 0; i < MAX_NAME_LENGTH; i++) { - buff[i] = sl_toupper((unsigned char)systemConfig()->name[i]); - if (systemConfig()->name[i] == 0) + buff[i] = sl_toupper((unsigned char)systemConfig()->craftName[i]); + if (systemConfig()->craftName[i] == 0) + break; + } + } +} + +void osdFormatPilotName(char *buff) +{ + if (strlen(systemConfig()->pilotName) == 0) + strcpy(buff, "PILOT_NAME"); + else { + for (int i = 0; i < MAX_NAME_LENGTH; i++) { + buff[i] = sl_toupper((unsigned char)systemConfig()->pilotName[i]); + if (systemConfig()->pilotName[i] == 0) break; } } @@ -2077,6 +2090,10 @@ static bool osdDrawSingleElement(uint8_t item) osdFormatCraftName(buff); break; + case OSD_PILOT_NAME: + osdFormatPilotName(buff); + break; + case OSD_THROTTLE_POS: { osdFormatThrottlePosition(buff, false, &elemAttr); @@ -3551,6 +3568,7 @@ void pgResetFn_osdLayoutsConfig(osdLayoutsConfig_t *osdLayoutsConfig) osdLayoutsConfig->item_pos[0][OSD_HORIZON_SIDEBARS] = OSD_POS(8, 6); osdLayoutsConfig->item_pos[0][OSD_CRAFT_NAME] = OSD_POS(20, 2); + osdLayoutsConfig->item_pos[0][OSD_PILOT_NAME] = OSD_POS(20, 2); osdLayoutsConfig->item_pos[0][OSD_VTX_CHANNEL] = OSD_POS(8, 6); #ifdef USE_SERIALRX_CRSF @@ -4153,9 +4171,9 @@ static void osdShowArmed(void) displayWrite(osdDisplayPort, (osdDisplayPort->cols - strlen(buf)) / 2, y, buf); y += 2; - if (strlen(systemConfig()->name) > 0) { + if (strlen(systemConfig()->craftName) > 0) { osdFormatCraftName(craftNameBuf); - displayWrite(osdDisplayPort, (osdDisplayPort->cols - strlen(systemConfig() -> name)) / 2, y, craftNameBuf ); + displayWrite(osdDisplayPort, (osdDisplayPort->cols - strlen(systemConfig()->craftName)) / 2, y, craftNameBuf ); y += 1; } if (posControl.waypointListValid && posControl.waypointCount > 0) { diff --git a/src/main/io/osd.h b/src/main/io/osd.h index e34dc8bd14..9cb4eaabd8 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -270,6 +270,7 @@ typedef enum { OSD_NAV_WP_MULTI_MISSION_INDEX, OSD_GROUND_COURSE, // 140 OSD_CROSS_TRACK_ERROR, + OSD_PILOT_NAME, OSD_ITEM_COUNT // MUST BE LAST } osd_items_e; diff --git a/src/main/io/osd_dji_hd.c b/src/main/io/osd_dji_hd.c index 70b14a69cb..074a23cd47 100644 --- a/src/main/io/osd_dji_hd.c +++ b/src/main/io/osd_dji_hd.c @@ -1192,7 +1192,7 @@ static mspResult_e djiProcessMspCommand(mspPacket_t *cmd, mspPacket_t *reply, ms djiSerializeCraftNameOverride(dst); } else { #endif - sbufWriteData(dst, systemConfig()->name, (int)strlen(systemConfig()->name)); + sbufWriteData(dst, systemConfig()->craftName, (int)strlen(systemConfig()->craftName)); #if defined(USE_OSD) } #endif