fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

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