diff --git a/docs/Settings.md b/docs/Settings.md index cfe805f57a..f6c32e62c3 100644 --- a/docs/Settings.md +++ b/docs/Settings.md @@ -4762,6 +4762,16 @@ A limitation to overall amount of correction Flight PID can request on each axis --- +### pilot_name + +Pilot name + +| Default | Min | Max | +| --- | --- | --- | +| _empty_ | | MAX_NAME_LENGTH | + +--- + ### pinio_box1 Mode assignment for PINIO#1 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.c b/src/main/fc/config.c index 37b92d18af..3c6a09c688 100755 --- a/src/main/fc/config.c +++ b/src/main/fc/config.c @@ -118,7 +118,8 @@ PG_RESET_TEMPLATE(systemConfig_t, systemConfig, .cpuUnderclock = SETTING_CPU_UNDERCLOCK_DEFAULT, #endif .throttle_tilt_compensation_strength = SETTING_THROTTLE_TILT_COMP_STR_DEFAULT, // 0-100, 0 - disabled - .name = SETTING_NAME_DEFAULT + .craftName = SETTING_NAME_DEFAULT, + .pilotName = SETTING_NAME_DEFAULT ); PG_REGISTER_WITH_RESET_TEMPLATE(beeperConfig_t, beeperConfig, PG_BEEPER_CONFIG, 2); 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 eb2875fe51..ee5c8f0397 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -1419,7 +1419,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++); } @@ -2789,7 +2789,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src) case MSP_SET_NAME: if (dataSize <= MAX_NAME_LENGTH) { - char *name = systemConfigMutable()->name; + char *name = systemConfigMutable()->craftName; int len = MIN(MAX_NAME_LENGTH, (int)dataSize); sbufReadData(src, name, len); memset(&name[len], '\0', (MAX_NAME_LENGTH + 1) - len); 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 4b1991f4ca..52ac928d28 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; } } @@ -2085,6 +2098,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); @@ -3550,6 +3567,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, 3); osdLayoutsConfig->item_pos[0][OSD_VTX_CHANNEL] = OSD_POS(8, 6); #ifdef USE_SERIALRX_CRSF @@ -4152,9 +4170,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