From d3cfc5f1cbe6ceb71a694c5b17afc03184e83741 Mon Sep 17 00:00:00 2001 From: KiteAnton Date: Wed, 13 Jul 2016 19:37:36 +0200 Subject: [PATCH 1/6] Added name command to CLI --- src/main/config/config.c | 2 ++ src/main/config/config.h | 2 ++ src/main/config/config_master.h | 3 +++ src/main/io/serial_cli.c | 19 +++++++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/src/main/config/config.c b/src/main/config/config.c index 06ba7c9c09..7841ef9328 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -441,6 +441,7 @@ static void resetConf(void) featureSet(FEATURE_VBAT); #endif + masterConfig.version = EEPROM_CONF_VERSION; masterConfig.mixerMode = MIXER_QUADX; @@ -657,6 +658,7 @@ static void resetConf(void) targetConfiguration(); #endif + // copy first profile into remaining profile for (int i = 1; i < MAX_PROFILE_COUNT; i++) { memcpy(&masterConfig.profile[i], currentProfile, sizeof(profile_t)); diff --git a/src/main/config/config.h b/src/main/config/config.h index 5a46a78c33..ffcbea1691 100644 --- a/src/main/config/config.h +++ b/src/main/config/config.h @@ -24,6 +24,8 @@ #endif #define MAX_RATEPROFILES 3 #define ONESHOT_FEATURE_CHANGED_DELAY_ON_BOOT_MS 1500 +#define MAX_NAME_LENGTH 32 + typedef enum { FEATURE_RX_PPM = 1 << 0, diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index c6f01b4029..37ecaa8258 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -161,6 +161,9 @@ typedef struct master_t { uint8_t magic_ef; // magic number, should be 0xEF uint8_t chk; // XOR checksum + + char name[MAX_NAME_LENGTH]; + } master_t; extern master_t masterConfig; diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index c0f3a8c417..5624fd1b7c 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -119,6 +119,7 @@ void cliDumpRateProfile(uint8_t rateProfileIndex) ; static void cliExit(char *cmdline); static void cliFeature(char *cmdline); static void cliMotor(char *cmdline); +static void cliName(char *cmdline); static void cliPlaySound(char *cmdline); static void cliProfile(char *cmdline); static void cliRateProfile(char *cmdline); @@ -340,6 +341,7 @@ const clicmd_t cmdTable[] = { #ifdef VTX CLI_COMMAND_DEF("vtx", "vtx channels on switch", NULL, cliVtx), #endif + CLI_COMMAND_DEF("name", "Name of vessel", NULL, cliName), }; #define CMD_COUNT (sizeof(cmdTable) / sizeof(clicmd_t)) @@ -1953,6 +1955,7 @@ static void cliDump(char *cmdline) cliPrint("\r\n# version\r\n"); cliVersion(NULL); + cliName(""); cliPrint("\r\n# dump master\r\n"); cliPrint("\r\n# mixer\r\n"); @@ -2494,6 +2497,22 @@ static void cliMotor(char *cmdline) cliPrintf("motor %d: %d\r\n", motor_index, motor_disarmed[motor_index]); } +static void cliName(char *cmdline) +{ + + uint32_t len = strlen(cmdline); + if (isEmpty(cmdline)) { + cliPrintf("name %s\r\n", masterConfig.name); + } else if (len <= MAX_NAME_LENGTH) { + strcpy(masterConfig.name, cmdline); + cliPrintf("name %s\r\n", masterConfig.name); + } else { + cliPrintf("Max allowed name size is %d\r\n", MAX_NAME_LENGTH); + } + + return; +} + static void cliPlaySound(char *cmdline) { #if FLASH_SIZE <= 64 From fbdd6547f2af3d7076f78a9aebadd8735ba981be Mon Sep 17 00:00:00 2001 From: KiteAnton Date: Wed, 13 Jul 2016 19:44:11 +0200 Subject: [PATCH 2/6] MSP cleanup, commands should really be in order --- src/main/io/serial_cli.c | 2 +- src/main/io/serial_msp.h | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 5624fd1b7c..54e99fd7b3 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -2507,7 +2507,7 @@ static void cliName(char *cmdline) strcpy(masterConfig.name, cmdline); cliPrintf("name %s\r\n", masterConfig.name); } else { - cliPrintf("Max allowed name size is %d\r\n", MAX_NAME_LENGTH); + cliPrintf("Max allowed name length is %d\r\n", MAX_NAME_LENGTH); } return; diff --git a/src/main/io/serial_msp.h b/src/main/io/serial_msp.h index 1a63b2b20d..1287955d02 100644 --- a/src/main/io/serial_msp.h +++ b/src/main/io/serial_msp.h @@ -147,6 +147,23 @@ static const char * const boardIdentifier = TARGET_BOARD_IDENTIFIER; #define MSP_ARMING_CONFIG 61 //out message Returns auto_disarm_delay and disarm_kill_switch parameters #define MSP_SET_ARMING_CONFIG 62 //in message Sets auto_disarm_delay and disarm_kill_switch parameters +// +// Baseflight MSP commands (if enabled they exist in Cleanflight) +// +#define MSP_RX_MAP 64 //out message get channel map (also returns number of channels total) +#define MSP_SET_RX_MAP 65 //in message set rx map, numchannels to set comes from MSP_RX_MAP + +// FIXME - Provided for backwards compatibility with configurator code until configurator is updated. +// DEPRECATED - DO NOT USE "MSP_BF_CONFIG" and MSP_SET_BF_CONFIG. In Cleanflight, isolated commands already exist and should be used instead. +#define MSP_BF_CONFIG 66 //out message baseflight-specific settings that aren't covered elsewhere +#define MSP_SET_BF_CONFIG 67 //in message baseflight-specific settings save + +#define MSP_REBOOT 68 //in message reboot settings + +// DEPRECATED - Use MSP_BUILD_INFO instead +#define MSP_BF_BUILD_INFO 69 //out message build date as well as some space for future expansion + + #define MSP_DATAFLASH_SUMMARY 70 //out message - get description of dataflash chip #define MSP_DATAFLASH_READ 71 //out message - get content of dataflash chip #define MSP_DATAFLASH_ERASE 72 //in message - erase dataflash chip @@ -177,22 +194,6 @@ static const char * const boardIdentifier = TARGET_BOARD_IDENTIFIER; #define MSP_VTX_CONFIG 88 //in message Get vtx settings #define MSP_SET_VTX_CONFIG 89 //out message Set vtx settings -// -// Baseflight MSP commands (if enabled they exist in Cleanflight) -// -#define MSP_RX_MAP 64 //out message get channel map (also returns number of channels total) -#define MSP_SET_RX_MAP 65 //in message set rx map, numchannels to set comes from MSP_RX_MAP - -// FIXME - Provided for backwards compatibility with configurator code until configurator is updated. -// DEPRECATED - DO NOT USE "MSP_BF_CONFIG" and MSP_SET_BF_CONFIG. In Cleanflight, isolated commands already exist and should be used instead. -#define MSP_BF_CONFIG 66 //out message baseflight-specific settings that aren't covered elsewhere -#define MSP_SET_BF_CONFIG 67 //in message baseflight-specific settings save - -#define MSP_REBOOT 68 //in message reboot settings - -// DEPRECATED - Use MSP_BUILD_INFO instead -#define MSP_BF_BUILD_INFO 69 //out message build date as well as some space for future expansion - // Betaflight Additional Commands #define MSP_PID_ADVANCED_CONFIG 90 #define MSP_SET_PID_ADVANCED_CONFIG 91 From 1e4a0c72fcea680ea9a67fb4cd7a74eaa8f69f7f Mon Sep 17 00:00:00 2001 From: KiteAnton Date: Wed, 13 Jul 2016 20:47:38 +0200 Subject: [PATCH 3/6] MSP_NAME --- src/main/io/serial_msp.c | 7 +++++++ src/main/io/serial_msp.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index 80e4717fde..5fb8003fb5 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -750,6 +750,13 @@ static bool processOutCommand(uint8_t cmdMSP) serialize16(constrain(averageSystemLoadPercent, 0, 100)); break; + case MSP_NAME: + headSerialReply(MAX_NAME_LENGTH); + for (uint8_t i=0; i Date: Wed, 13 Jul 2016 23:29:51 +0200 Subject: [PATCH 4/6] MSP_SET_NAME --- src/main/io/serial_cli.c | 3 +++ src/main/io/serial_msp.c | 6 ++++++ src/main/io/serial_msp.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 54e99fd7b3..945b93ea1d 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -2505,6 +2505,9 @@ static void cliName(char *cmdline) cliPrintf("name %s\r\n", masterConfig.name); } else if (len <= MAX_NAME_LENGTH) { strcpy(masterConfig.name, cmdline); + for (uint8_t i = len; i Date: Thu, 14 Jul 2016 21:45:17 +0200 Subject: [PATCH 5/6] Fixes after feedback --- src/main/config/config.h | 2 +- src/main/config/config_master.h | 2 +- src/main/io/serial_cli.c | 20 ++++++++++---------- src/main/io/serial_msp.c | 13 +++++++++---- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/main/config/config.h b/src/main/config/config.h index ffcbea1691..b18febe8cd 100644 --- a/src/main/config/config.h +++ b/src/main/config/config.h @@ -24,7 +24,7 @@ #endif #define MAX_RATEPROFILES 3 #define ONESHOT_FEATURE_CHANGED_DELAY_ON_BOOT_MS 1500 -#define MAX_NAME_LENGTH 32 +#define MAX_NAME_LENGTH 16 typedef enum { diff --git a/src/main/config/config_master.h b/src/main/config/config_master.h index 37ecaa8258..4f8f4903fb 100644 --- a/src/main/config/config_master.h +++ b/src/main/config/config_master.h @@ -162,7 +162,7 @@ typedef struct master_t { uint8_t magic_ef; // magic number, should be 0xEF uint8_t chk; // XOR checksum - char name[MAX_NAME_LENGTH]; + char name[MAX_NAME_LENGTH+1]; } master_t; diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 945b93ea1d..4d1fdb9364 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -341,7 +341,7 @@ const clicmd_t cmdTable[] = { #ifdef VTX CLI_COMMAND_DEF("vtx", "vtx channels on switch", NULL, cliVtx), #endif - CLI_COMMAND_DEF("name", "Name of vessel", NULL, cliName), + CLI_COMMAND_DEF("name", "Name of craft", NULL, cliName), }; #define CMD_COUNT (sizeof(cmdTable) / sizeof(clicmd_t)) @@ -1955,7 +1955,8 @@ static void cliDump(char *cmdline) cliPrint("\r\n# version\r\n"); cliVersion(NULL); - cliName(""); + cliPrint("\r\n# name\r\n"); + cliName(NULL); cliPrint("\r\n# dump master\r\n"); cliPrint("\r\n# mixer\r\n"); @@ -2501,16 +2502,15 @@ static void cliName(char *cmdline) { uint32_t len = strlen(cmdline); - if (isEmpty(cmdline)) { - cliPrintf("name %s\r\n", masterConfig.name); - } else if (len <= MAX_NAME_LENGTH) { - strcpy(masterConfig.name, cmdline); - for (uint8_t i = len; idataSize); i++) { masterConfig.name[i] = read8(); } + if (masterConfig.name[0] == '-') { + memset(masterConfig.name, '\0', MAX_NAME_LENGTH); + } break; default: // we do not know how to handle the (valid) message, indicate error MSP $M! From 6c63aa78cabd18754d2f773d17a7ee5dd5d2108b Mon Sep 17 00:00:00 2001 From: KiteAnton Date: Fri, 15 Jul 2016 19:18:11 +0200 Subject: [PATCH 6/6] Additional fixes after feedback --- src/main/io/serial_cli.c | 2 +- src/main/io/serial_msp.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index 4d1fdb9364..c5b2eea77c 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -2502,7 +2502,7 @@ static void cliName(char *cmdline) { uint32_t len = strlen(cmdline); - if (*cmdline == 0) { + if (len == 0) { cliPrintf("name %s\r\n", masterConfig.name); } else if ('-' == cmdline[0]) { memset(masterConfig.name, '\0', MAX_NAME_LENGTH); diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index 2db9951554..2feb08b052 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -1878,7 +1878,7 @@ static bool processInCommand(void) break; case MSP_SET_NAME: - memset(masterConfig.name, '\0', MAX_NAME_LENGTH); + memset(masterConfig.name, 0, MAX_NAME_LENGTH+1); for (i = 0; i < MIN(MAX_NAME_LENGTH, currentPort->dataSize); i++) { masterConfig.name[i] = read8(); }