
fork test
Dependencies: BLE_API WIFI_API_32kRAM mbed nRF51822
Fork of NNN40_CLI by
Diff: CLI_Source/ble_cli.cpp
- Revision:
- 12:a91455702763
- Parent:
- 10:5f1fa331d07c
- Child:
- 13:7eaec228ad23
--- 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