Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of NNN40_CLI by
Diff: CLI_Source/ble_cli.cpp
- Revision:
- 12:a91455702763
- Parent:
- 10:5f1fa331d07c
- Child:
- 13:7eaec228ad23
diff -r ea5ed0d37456 -r a91455702763 CLI_Source/ble_cli.cpp --- a/CLI_Source/ble_cli.cpp Tue Jan 26 09:36:28 2016 +0000 +++ b/CLI_Source/ble_cli.cpp Thu Feb 18 07:59:26 2016 +0000 @@ -8,8 +8,8 @@ #include "ble_cli.h" // All #include define in ble_cli.h // Genral configuration parameters -//#define BLE_DEBUG - #define MAX_DEVNAME_LEN 32 +//#define BLE_DEBUG +#define MAX_DEVNAME_LEN 32 #define CLI_FWVERION "DELTA_CLI_V1.9" #define MODULE_NAME "DFCM-NNN40-DT1R" @@ -148,10 +148,10 @@ console.printf("handle:%04X\r\n",params->handle); console.printf("conn_handle:%04X,writeOp:%d,offset:%04X\r\n",params->connHandle,params->writeOp,params->offset); #endif - console.printf("w%d,",params->writeOp); + console.printf("w%d,",params->writeOp); const uint8_t* cpSerBaseUUID; const uint8_t* cpCharBaseUUID; - + // Find specific handle Characteristic for ( int i = 0 ; i < service_count ; i++ ) { for (int j = 0 ; j < CLI_CHAR_MAX_NUM ; j++ ) { @@ -268,69 +268,95 @@ } //gill modify 20150904 for accept blank in name +//static void cynBLENameCommand(void) +//{ +// if (cyntecGetCommandTokenCnt() >= 3) { +// uint8_t tempNameLen = 0; +// // check first and last char is " +// uint8_t *argName1 = cyntecGetCommandArgument(0, &tempNameLen); +// uint8_t *argNameLast = cyntecGetCommandArgument(cyntecGetCommandTokenCnt() - 3, &tempNameLen); +// char bracket = '*'; +// if (!memcmp(&argName1[0],&bracket,sizeof(char)) && !memcmp(&argNameLast[tempNameLen - 1],&bracket,sizeof(char))) +// { +// uint8_t nameLen = 0; +// uint8_t * argName2 = cyntecGetCommandTotalBuffer(); +// uint32_t err_code; +// ble_gap_conn_sec_mode_t sec_mode; +// uint8_t i = 0; +// BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); +// err_code = sd_ble_gap_device_name_set(&sec_mode, +// (const uint8_t *) &argName2[11], +// (uint16_t) (cyntecGetTotalIndex()-12)); +// if (err_code == NRF_SUCCESS) { +// console.printf("\r\nOK;"); +// for(i = 0; i < cyntecGetTotalIndex()-12; i++) { +// console.printf("%c",argName2[11+i]); +// } +// console.printf("\r\n"); +// } else { +// console.printf("ERROR;%04X\r\n",err_code); +// } +// } else { +// cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR); +// } +// } else if (cyntecGetCommandTokenCnt() == 2) { +// uint8_t bleName[BLE_GAP_DEVNAME_MAX_LEN] = {"\0"}; +// uint16_t bleLen = BLE_GAP_DEVNAME_MAX_LEN - APP_ADV_DATA_OFFSET; +// uint32_t err_code; +// err_code = sd_ble_gap_device_name_get(&bleName[APP_ADV_DATA_OFFSET], &bleLen); +// console.printf("\r\nOK;"); +// console.printf("%s",bleName+APP_ADV_DATA_OFFSET); +// console.printf(";\r\n"); +// } else { +// cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS); +// return; +// } +//} + static void cynBLENameCommand(void) { - if (cyntecGetCommandTokenCnt() >= 3) { - uint8_t tempNameLen = 0; - // check first and last char is " - uint8_t *argName1 = cyntecGetCommandArgument(0, &tempNameLen); - uint8_t *argNameLast = cyntecGetCommandArgument(cyntecGetCommandTokenCnt() - 3, &tempNameLen); - char bracket = '*'; - //console.printf("%02X\r\n",tempNameLen); - if (!memcmp(&argName1[0],&bracket,sizeof(char)) && !memcmp(&argNameLast[tempNameLen - 1],&bracket,sizeof(char))) - //if (!memcmp(&argName1[0],&bracket,sizeof(char))) - { - uint8_t nameLen = 0; - uint8_t *argName = cyntecGetCommandArgument(0, &nameLen); - uint8_t * argName2 = cyntecGetCommandTotalBuffer(); - uint32_t err_code; - ble_gap_conn_sec_mode_t sec_mode; - //console.printf("%02X\r\n",cyntecGetTotalIndex()); - //console.printf("\r\nSet BLE Name: "); - uint8_t i = 0; + uint8_t nameLen = 0; // Name char number, max is TARGET_DEVNAME_LEN + uint8_t nameLenCharNum = 0; // Name length number is 1 or 2 + uint8_t *nameLeng = cyntecGetCommandArgument(0,&nameLenCharNum); + nameLen = cyntecAtoi(nameLeng,nameLenCharNum); +#ifdef BLE_DEUG + console.printf("nameLenCharNum:%i\r\nOK;",nameLenCharNum); + console.printf("nameLen:%i\r\nOK;",nameLen); +#endif + uint8_t bleName[BLE_GAP_DEVNAME_MAX_LEN] = {"\0"}; + uint16_t bleLen = BLE_GAP_DEVNAME_MAX_LEN - APP_ADV_DATA_OFFSET; + ble_gap_conn_sec_mode_t sec_mode; + uint32_t err_code; + uint8_t * argName2 = cyntecGetCommandTotalBuffer(); - BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); - err_code = sd_ble_gap_device_name_set(&sec_mode, - (const uint8_t *) &argName2[11], - (uint16_t) (cyntecGetTotalIndex()-12)); - if (err_code == NRF_SUCCESS) { - console.printf("\r\nOK;"); - for(i = 0; i < cyntecGetTotalIndex()-12; i++) { - console.printf("%c",argName2[11+i]); - } - console.printf("\r\n"); - } else { - console.printf("ERROR;%04X\r\n",err_code); - } - //APP_ERROR_CHECK(err_code); -//#ifdef BLE_DEBUG - //console.printf("\r\nSet BLE Name: "); -// uint8_t i = 0; -// for(i = 0; i < nameLen; i++) -// { -// console.printf("%c",argName[i]); -// } -//#endif - } else { - cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR); - } - } else if (cyntecGetCommandTokenCnt() == 2) { - uint8_t bleName[BLE_GAP_DEVNAME_MAX_LEN] = {"\0"}; - uint16_t bleLen = BLE_GAP_DEVNAME_MAX_LEN - APP_ADV_DATA_OFFSET; - uint32_t err_code; - + // Get name string + if (cyntecGetCommandTokenCnt() == 2) { err_code = sd_ble_gap_device_name_get(&bleName[APP_ADV_DATA_OFFSET], &bleLen); - //APP_ERROR_CHECK(err_code); - console.printf("\r\nOK;"); console.printf("%s",bleName+APP_ADV_DATA_OFFSET); console.printf(";\r\n"); - } else { - cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS); - return; + } + // Set name + if (cyntecGetCommandTokenCnt() >= 3) { + if (nameLen>TARGET_DEVNAME_LEN || nameLen <=0) + cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE); + BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); + err_code = sd_ble_gap_device_name_set(&sec_mode, + (const uint8_t *) &argName2[11+nameLenCharNum], + (uint16_t) nameLen);//(uint16_t) (cyntecGetTotalIndex()-11-nameLenCharNum)); + if (err_code == NRF_SUCCESS) + cyntecPrintOk(); + else + cyntecPrintError(CYNTEC_CMD_ERR_CALL_FAIL); +#ifdef BLE_DEUG + console.printf("LengNum:%i,string:%s,index:%i\r\n",nameLenCharNum,(const uint8_t *) &argName2[11+nameLenCharNum],cyntecGetTotalIndex()); +#endif } } + + + static void cynBLEInfoCommand(void) { console.printf("\r\nOK;"); @@ -660,6 +686,7 @@ cyntecPrintOk(); } else { cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS); + return; } sd_power_system_off(); } @@ -1033,18 +1060,18 @@ deltaBLE.onConnection(onConnectionCallback); deltaBLE.onTimeout(onTimeoutCallback); deltaBLE.gattServer().onDataRead(triggerRead); - + cyntecPrintOk(); } static void cynBLEDataIntCommand(void) { - cyntecPrintOk(); - deltaBLE.gattServer().onDataWritten().add(onDataWrittenCallback); + cyntecPrintOk(); + deltaBLE.gattServer().onDataWritten().add(onDataWrittenCallback); } static void cynBLEDisDataIntCommand(void) { - cyntecPrintOk(); - deltaBLE.gattServer().onDataWritten().detach(onDataWrittenCallback); + cyntecPrintOk(); + deltaBLE.gattServer().onDataWritten().detach(onDataWrittenCallback); } #ifdef BLE_DEBUG