fork test

Dependencies:   BLE_API WIFI_API_32kRAM mbed nRF51822

Fork of NNN40_CLI by Delta

Revision:
3:38ec8ad317f4
Parent:
0:5c195ab2f696
Child:
4:b52035367aee
--- a/CLI_Source/ble_cli.cpp	Fri Sep 11 07:52:06 2015 +0000
+++ b/CLI_Source/ble_cli.cpp	Fri Oct 02 10:36:29 2015 +0000
@@ -4,7 +4,7 @@
  *
  * Copyright 2014 by CYNTEC Corporation.  All rights reserved.
  */
- 
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
@@ -22,10 +22,11 @@
 #include "PinNames.h"
 //#include "custom_helper.h"
 extern "C" {
-	#include "ble_advdata.h"
+#include "ble_advdata.h"
 }
 
-#define S110_BLE_PERIPHERAL
+//#define S110_BLE_PERIPHERAL
+//#define S120_BLE_CENTRAL
 
 #define APP_ADV_INTERVAL           64                     /**< The advertising interval (in units of 0.625 ms. This value corresponds to 40 ms). */
 #define APP_ADV_TIMEOUT_IN_SECONDS 180                    /**< The advertising timeout (in units of seconds). */
@@ -48,37 +49,44 @@
 #define CLI_FWVERION "DELTA_CLI_V1.6"
 #define MODULE_NAME "DFCM-NNN40-DT1R"
 #define ADVERTISING_LED_PIN_NO LED1
-#define DELTA_DEBUG	1
+//#define DELTA_DEBUG
 //#define LBS_UUID_BASE {0x23, 0xD1, 0xBC, 0xEA, 0x5F, 0x78, 0x23, 0x15, 0xDE, 0xEF, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00}
 #define NEW_VS_SERVICE 0x0001
-
+#define DEFAULT_SCAN_INTERVAL 500
+#define DEFAULT_SCAN_WINDOW 400
+#define DEFAULT_SCAN_TIMEOUT 5
+#define BLE_MAX_ADDRESS_NUMBER 10
 
 static ble_gap_addr_t m_peer_addr;
 extern Serial console;
 BLE deltaBLE; //gill 0904
 extern const char* cyntecCommandErrorNames[];
-extern void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason);
-// gill 0904
-static bool connState = false;
+static bool connState = false; // gill 0904
 
 typedef struct bufferGattChar {
 //	bool flag;
-	uint8_t mode;
-	ble_uuid_t char_uuid;
-	//uint8_t value[MAX_VALUE_LENGTH];
-	uint16_t char_value_handle;
-	uint8_t valueLength;
+    uint8_t mode;
+    ble_uuid_t char_uuid;
+    //uint8_t value[MAX_VALUE_LENGTH];
+    uint16_t char_value_handle;
+    uint8_t valueLength;
 } bufferGattChar_t;
 
 typedef struct bufferGattService {
 //	uint16_t service_uuid_vs[8];
 //	uint16_t service_uuid;
 //	bool flag;
-	ble_uuid_t service_uuid;
-	bufferGattChar_t bufferGattChar[CLI_CHAR_MAX_NUM];
-	uint16_t service_handle;
+    ble_uuid_t service_uuid;
+    bufferGattChar_t bufferGattChar[CLI_CHAR_MAX_NUM];
+    uint16_t service_handle;
 } bufferGattService_t;
 
+// gill 20150916 for scan
+typedef struct {
+    const uint8_t     * p_data;                                                      /**< Pointer to data. */
+    uint8_t      data_len;                                                    /**< Length of data. */
+} data_t;
+
 /* save entry services */
 bufferGattService_t bufferGattTest;
 bufferGattService_t bufferService[CLI_SERVICE_MAX_NUM];
@@ -89,6 +97,9 @@
 uint8_t char_count=0;
 static uint16_t test_conn_handle; //Connection handle, assign after connected
 extern bool advState; // currently no use
+static Gap::Address_t saveAddr[BLE_MAX_ADDRESS_NUMBER]; // check in advertisementCallback
+static uint8_t bleDevInd;
+static Gap::GapState_t nowState;
 
 DigitalOut led1(p7);
 DigitalOut led2(p13);
@@ -99,7 +110,7 @@
 
 void onTimeoutCallback(Gap::TimeoutSource_t source)
 {
-	led1 = !led1;
+    led1 = !led1;
 }
 
 void onConnectionCallback(const Gap::ConnectionCallbackParams_t *params)
@@ -113,38 +124,109 @@
 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
 {
     //console.printf("connState:%d\r\n",connState);
+    //Gap::GapState_t->connected = 0;
     connState = false;
 }
 
 
 static void cyntecPrintOk(void)
 {
-	console.printf("\r\nOK\r\n\r\n");
+    console.printf("\r\nOK\r\n\r\n");
 }
 
 static void cyntecPrintError(uint8_t errIdx)
 {
-	console.printf("\r\nERROR;");
-	console.printf(cyntecCommandErrorNames[errIdx]);
-	console.printf("\r\n\r\n");
+    console.printf("\r\nERROR;");
+    console.printf(cyntecCommandErrorNames[errIdx]);
+    console.printf("\r\n\r\n");
+}
+
+
+static uint32_t adv_report_parse(uint8_t type, data_t * p_advdata, data_t * p_typedata)
+{
+    uint32_t index = 0;
+    const uint8_t * p_data;
+
+    p_data = p_advdata->p_data;
+
+    while (index < p_advdata->data_len) {
+        uint8_t field_length = p_data[index];
+        uint8_t field_type   = p_data[index+1];
+
+        if (field_type == type) {
+            p_typedata->p_data   = &p_data[index+2];
+            p_typedata->data_len = field_length-1;
+            return NRF_SUCCESS;
+        }
+        index += field_length+1;
+    }
+    return NRF_ERROR_NOT_FOUND;
 }
 
-#ifdef S120_BLE_CENTRAL
-/**
- * @brief Scan parameters requested for scanning and connection.
- */
-static const ble_gap_scan_params_t m_scan_param =
+void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params)
 {
-     0,                       // Active scanning set.
-     0,                       // Selective scanning not set.
-     NULL,                    // White-list not set.
-     (uint16_t)SCAN_INTERVAL, // Scan interval.
-     (uint16_t)SCAN_WINDOW,   // Scan window.
-     0                        // Never stop scanning unless explicit asked to.
-};
+    bool flagRepeat=false;
+    Gap::Address_t newAddr[6];
+    memcpy(newAddr,params->peerAddr,6);
+
+    for(int i=0; i<BLE_MAX_ADDRESS_NUMBER; i++) {
+        if (memcmp(newAddr,saveAddr[i],6)==0) {
+#ifdef DELTA_DEBUG
+            console.printf("Repeated\r\n");
+#endif
+            flagRepeat = true;
+            //return;
+        }
+    }
+
+#ifdef DELTA_DEBUG
+    console.printf("addr cmp result :%i\r\n",memcmp(newAddr,params->peerAddr,6));
+    console.printf("ADV data:%X,%i\r\n",&(params->advertisingData),params->advertisingDataLen);
+#endif
+    data_t adv_data;
+    data_t type_data;
+    //Initialize advertisement report for parsing.
+    adv_data.p_data = params->advertisingData;
+    adv_data.data_len = params->advertisingDataLen;
+	// Parsing Device Name
+    uint32_t err_code = adv_report_parse(BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME,
+                                         &adv_data,
+                                         &type_data);
+#ifdef DELTA_DEBUG
+    console.printf("error code:%X\r\n",err_code);
+    console.printf("type_data.data_len:%i\r\n",type_data.data_len);
 #endif
+    if (flagRepeat == false) {
+        if (err_code == 0) {
+            for (int i=0; i<type_data.data_len; i++) {
+                console.printf("%c",type_data.p_data[i]);
+            }
+            //console.printf("\r\n");
+        }
+        console.printf(",ADV,[%02X %02X %02X %02X %02X %02X],%d,%u\r\n",params->peerAddr[5], params->peerAddr[4], params->peerAddr[3],
+                       params->peerAddr[2], params->peerAddr[1], params->peerAddr[0],params->rssi,params->type);
+        memcpy(saveAddr[bleDevInd],params->peerAddr,6);
+        bleDevInd++;
+    }
+    
+    /*
+    Check short name, not implemented
+    */
+    //else
+//    {
+//    	uint32_t err_code_2 = adv_report_parse(BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME,
+//                                         &adv_data,
+//                                         &type_data);
+//        console.printf("error code:%X\r\n",err_code_2);
+//        console.printf("%i\r\n",type_data.data_len);
+//    	console.printf("%s\r\n",type_data.p_data);
+//
+//    }
+    //ble.gap().connect(params->peerAddr, Gap::ADDR_TYPE_RANDOM_STATIC, NULL, NULL);
+}
 
-#ifdef S110_BLE_PERIPHERAL
+
+
 /**@brief   Function for the Advertising functionality initialization.
  *
  * @details Encodes the required advertising data and passes it to the stack.
@@ -156,7 +238,7 @@
     ble_advdata_t advdata;
     ble_advdata_t scanrsp;
     //uint8_t       flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
-	
+
     ble_uuid_t adv_uuids[] = {{bufferService[0].service_uuid.uuid, 0x01}};
 
     memset(&advdata, 0, sizeof(advdata));
@@ -169,7 +251,7 @@
     memset(&scanrsp, 0, sizeof(scanrsp));
     scanrsp.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
     scanrsp.uuids_complete.p_uuids  = adv_uuids;
-    
+
     err_code = ble_advdata_set(&advdata, &scanrsp);
     APP_ERROR_CHECK(err_code);
 }
@@ -181,10 +263,10 @@
 {
     uint32_t             err_code;
     ble_gap_adv_params_t adv_params;
-    
+
     // Start advertising
     memset(&adv_params, 0, sizeof(adv_params));
-    
+
     adv_params.type        = BLE_GAP_ADV_TYPE_ADV_IND; /**< Connectable undirected. */
     adv_params.p_peer_addr = NULL;
     adv_params.fp          = BLE_GAP_ADV_FP_ANY; /**< Allow scan requests and connect requests from any device. */
@@ -193,138 +275,125 @@
 
     err_code = sd_ble_gap_adv_start(&adv_params);
     //APP_ERROR_CHECK(err_code);
-	  return err_code;
+    return err_code;
 }
 
 
 
 static void cynAdvertiseStartCommand(void)
 {
-	// adv start or adv stop or syntax error
-	uint8_t argLen = 0;
-	uint8_t *arg;
-	/* arg0 is start or stop advertising */
-	uint8_t *action = cyntecGetCommandArgument(0,&argLen);
-	uint16_t advInterval;
-	uint16_t advTimeout;
-	
-				switch (cyntecGetCommandTokenCnt())
-				{
-					case 2:
-					advInterval = APP_ADV_INTERVAL;
-					advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
-					break;
-					
-					case 3:
-					/* arg1 is adv interval parameter */
-					arg = cyntecGetCommandArgument(1,&argLen);
-					advInterval = cyntecAtoiUint16( arg, argLen );
-					advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
-					break;
-					
-					case 4:
-					arg = cyntecGetCommandArgument(1,&argLen);
-					advInterval = cyntecAtoiUint16( arg, argLen );
-					arg = cyntecGetCommandArgument(2,&argLen);
-					advTimeout = cyntecAtoiUint16( arg, argLen );
-					break;
-					
-					default:
-					advInterval = APP_ADV_INTERVAL;
-					advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
-					break;
-				} 
+    // adv start or adv stop or syntax error
+    uint8_t argLen = 0;
+    uint8_t *arg;
+    /* arg0 is start or stop advertising */
+    uint8_t *action = cyntecGetCommandArgument(0,&argLen);
+    uint16_t advInterval;
+    uint16_t advTimeout;
+
+    switch (cyntecGetCommandTokenCnt()) {
+        case 2:
+            advInterval = APP_ADV_INTERVAL;
+            advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
+            break;
 
-				if ( advInterval< APP_ADV_INTERVAL_MIN | advInterval> APP_ADV_INTERVAL_MAX | advTimeout < 1| advTimeout > BLE_GAP_ADV_TIMEOUT_LIMITED_MAX )
-					{
-						cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
-						return;
-					}
-//#ifdef DELTA_DEBUG			
+        case 3:
+            /* arg1 is adv interval parameter */
+            arg = cyntecGetCommandArgument(1,&argLen);
+            advInterval = cyntecAtoiUint16( arg, argLen );
+            advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
+            break;
+
+        case 4:
+            arg = cyntecGetCommandArgument(1,&argLen);
+            advInterval = cyntecAtoiUint16( arg, argLen );
+            arg = cyntecGetCommandArgument(2,&argLen);
+            advTimeout = cyntecAtoiUint16( arg, argLen );
+            break;
+
+        default:
+            advInterval = APP_ADV_INTERVAL;
+            advTimeout = APP_ADV_TIMEOUT_IN_SECONDS;
+            break;
+    }
+
+    //if ( advInterval< APP_ADV_INTERVAL_MIN | advInterval> APP_ADV_INTERVAL_MAX | advTimeout < 1| advTimeout > BLE_GAP_ADV_TIMEOUT_LIMITED_MAX ) {
+//        cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+//        return;
+//    }
+//#ifdef DELTA_DEBUG
 //sprintf((char *)&debugMess[0],"[%d][%d]", advInterval,advTimeout);
 //console.printf(debugMess);
 //#endif
 //				service_Test();
-				advertising_init();
-				uint8_t error_code = advertising_start(advInterval, advTimeout);
-					
-					if (error_code==NRF_SUCCESS)
-					{
-						cyntecPrintOk();
-						nrf_gpio_pin_set(ADVERTISING_LED_PIN_NO); 
-					}
-					else if  (error_code==NRF_ERROR_INVALID_STATE)
-					{
-						cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
-						return;
-					}
-					else
-					{
-						console.printf("ERROR;\r\n");
-					}
+    advertising_init();
+    uint8_t error_code = advertising_start(advInterval, advTimeout);
+
+    if (error_code==NRF_SUCCESS) {
+        cyntecPrintOk();
+        nrf_gpio_pin_set(ADVERTISING_LED_PIN_NO);
+    } else if  (error_code==NRF_ERROR_INVALID_STATE) {
+        cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
+        return;
+    } else {
+        console.printf("ERROR;\r\n");
+    }
 }
 
 /**@brief Function for stop advertising.
  */
 static void cynAdvertiseStopCommand(void)
 {
-  uint8_t advStopErr = 0; 
-	advStopErr = sd_ble_gap_adv_stop();
-	if (advStopErr == NRF_SUCCESS)
-	{
-		cyntecPrintOk();
-		nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
-	}
-	else if (advStopErr==NRF_ERROR_INVALID_STATE)
-	{
-						cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-						return;
-	}
-	else{
-		console.printf("ERROR;\r\n");
-	}
+    uint8_t advStopErr = 0;
+    advStopErr = sd_ble_gap_adv_stop();
+    if (advStopErr == NRF_SUCCESS) {
+        cyntecPrintOk();
+        nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
+    } else if (advStopErr==NRF_ERROR_INVALID_STATE) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    } else {
+        console.printf("ERROR;\r\n");
+    }
 }
 
 //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 = '*';
-		//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;
-		for(i = 0; i < cyntecGetTotalIndex()-12; i++) {  
-			console.printf("%c",argName2[11+i]);
-		}
-		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) {
-			cyntecPrintOk();
-		}
-		else {
-			console.printf("ERROR;%04X\r\n",err_code);
-		}																	
-		APP_ERROR_CHECK(err_code);
-		
-		
-//#ifdef DELTADEBUG																					
-		//console.printf("\r\nSet BLE Name: ");																			
+    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;
+            for(i = 0; i < cyntecGetTotalIndex()-12; i++) {
+                console.printf("%c",argName2[11+i]);
+            }
+            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) {
+                cyntecPrintOk();
+            } else {
+                console.printf("ERROR;%04X\r\n",err_code);
+            }
+            APP_ERROR_CHECK(err_code);
+
+
+//#ifdef DELTADEBUG
+            //console.printf("\r\nSet BLE Name: ");
 //		uint8_t i = 0;
 //		for(i = 0; i < nameLen; i++)
 //		{
@@ -332,42 +401,39 @@
 //		}
 
 //#endif
-		//console.printf("\r\nPrint buffer:\r\n");
-		//console.printf("%s\r\n",cyntecGetCommandTotalBuffer());
-		
-		/* Re-init application setting */
-		//cyntecCLIAppInit();
-		}
-		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);
-		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;
-	}		
+            //console.printf("\r\nPrint buffer:\r\n");
+            //console.printf("%s\r\n",cyntecGetCommandTotalBuffer());
+
+            /* Re-init application setting */
+            //cyntecCLIAppInit();
+        } 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);
+        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;
+    }
 }
-#endif
+
 
 static void cynBLEInfoCommand(void)
 {
-	console.printf("\r\nOK;F/W version:");
-	console.printf(CLI_FWVERION);
-	console.printf(";Module name:");
-	console.printf(MODULE_NAME);
-	console.printf("\r\n\r\n");
+    console.printf("\r\nOK;F/W version:");
+    console.printf(CLI_FWVERION);
+    console.printf(";Module name:");
+    console.printf(MODULE_NAME);
+    console.printf("\r\n\r\n");
 }
 
 /**@brief Set the radio's transmit power.
@@ -378,474 +444,443 @@
  */
 static void cynBLESetTxPowerCommand (void)
 {
-	if (cyntecGetCommandTokenCnt() == 3)
-	{
-		uint32_t err_code;
-		uint8_t txLen=0;
-		uint8_t *arg = cyntecGetCommandArgument(0,&txLen);
-		
+    if (cyntecGetCommandTokenCnt() == 3) {
+        uint32_t err_code;
+        uint8_t txLen=0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&txLen);
+
 //		uint8_t *arg = cyntecGetMinusArgument(0,&txLen);
-		
+
 //		cyntecGetMinusArgument();
 //		const char *value  = (const char *)arg;
 //		sprintf((char *)&debugMess[0],"\r\n[%i]\r\n",*value);
 //		console.printf(debugMess);
-		const uint8_t NUM_TXPOW = 9;
-		bool inputSwitch = false; // if find matched case in TxPow, assign true 
-	
-		int8_t validTxPow[NUM_TXPOW] = {-40, -30, -20, -16, -12, -8, -4, 0, 4};
-		uint8_t i;
-		int8_t setValue;
-		
-		if ( arg != NULL ) {
-			setValue = atoi((const char *)arg);
+        const uint8_t NUM_TXPOW = 9;
+        bool inputSwitch = false; // if find matched case in TxPow, assign true
+
+        int8_t validTxPow[NUM_TXPOW] = {-40, -30, -20, -16, -12, -8, -4, 0, 4};
+        uint8_t i;
+        int8_t setValue;
+
+        if ( arg != NULL ) {
+            setValue = atoi((const char *)arg);
 //			sprintf((char *)&debugMess[0],"\r\n[%i]\r\n",setValue);
 //			console.printf(debugMess);
-			for (i = 0; i < NUM_TXPOW; i++)
-			{
-				if (setValue == validTxPow[i])
-				{
-					err_code = sd_ble_gap_tx_power_set(setValue);
-					APP_ERROR_CHECK(err_code);
-					inputSwitch = true;
-					break;
-				}
-			}
-			
-			if ( inputSwitch )
-				cyntecPrintOk();
-			else
-				console.printf("\r\nWrong Input; Accept Tx Pow: -40, -30, -20, -16, -12, -8, -4, 0, 4\r\n");
-		}
-		clearBuffer(); // clear the commandState.buffer
-		return;
-	}
-	else{
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-		return;
-	}
+            for (i = 0; i < NUM_TXPOW; i++) {
+                if (setValue == validTxPow[i]) {
+                    err_code = sd_ble_gap_tx_power_set(setValue);
+                    APP_ERROR_CHECK(err_code);
+                    inputSwitch = true;
+                    break;
+                }
+            }
+
+            if ( inputSwitch )
+                cyntecPrintOk();
+            else
+                console.printf("\r\nWrong Input; Accept Tx Pow: -40, -30, -20, -16, -12, -8, -4, 0, 4\r\n");
+        }
+        clearBuffer(); // clear the commandState.buffer
+        return;
+    } else {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    }
 }
 
 static void cynBLEAddressCommand(void)
 {
-	if (cyntecGetCommandTokenCnt() == 3)
-	{
-		uint8_t argLen = 0;
-		uint8_t *arg = cyntecGetCommandArgument(0, &argLen);
-		uint32_t err_code;
-		uint8_t addr,i;
-		
-		/* should with "0x" + 12 len addr */
-		if (argLen == 14) {
-			if (arg[0] != '0' || arg[1] != 'x') {
-				cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
-				return;				
-			}
-				
-			m_peer_addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
+    if (cyntecGetCommandTokenCnt() == 3) {
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0, &argLen);
+        uint32_t err_code;
+        uint8_t addr,i;
+
+        /* should with "0x" + 12 len addr */
+        if (argLen == 14) {
+            if (arg[0] != '0' || arg[1] != 'x') {
+                cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
+                return;
+            }
 
-			for ( i = 1 ; i < 7 ; i++)
-			{
-				addr = cyntecArgToUint8(arg+2*i, 2);
-				/* 5 - (i-1) */
-				m_peer_addr.addr[6-i] = addr; 
-			}					
-			
-			err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &m_peer_addr);
-			APP_ERROR_CHECK(err_code);
-			
-		} else {  //argLen != 14
-			cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
-			return;
-		}
+            m_peer_addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
+
+            for ( i = 1 ; i < 7 ; i++) {
+                addr = cyntecArgToUint8(arg+2*i, 2);
+                /* 5 - (i-1) */
+                m_peer_addr.addr[6-i] = addr;
+            }
+
+            err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &m_peer_addr);
+            APP_ERROR_CHECK(err_code);
+
+        } else {  //argLen != 14
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
+            return;
+        }
 
 //#ifdef DELTADEBUG
 //		uint8_t buf2[20];
 //		console.printf("\r\nSet BLE Address: ");
-//		sprintf((char *)&buf2[0],(const char *)"[%02X %02X %02X %02X %02X %02X]", 
-//						m_peer_addr.addr[0], m_peer_addr.addr[1], m_peer_addr.addr[2], 
-//						m_peer_addr.addr[3], m_peer_addr.addr[4], m_peer_addr.addr[5]);			
+//		sprintf((char *)&buf2[0],(const char *)"[%02X %02X %02X %02X %02X %02X]",
+//						m_peer_addr.addr[0], m_peer_addr.addr[1], m_peer_addr.addr[2],
+//						m_peer_addr.addr[3], m_peer_addr.addr[4], m_peer_addr.addr[5]);
 //		console.printf(buf2);
-//#endif		
-		
-		cyntecPrintOk();
-	} else if (cyntecGetCommandTokenCnt() == 2){
+//#endif
+
+        cyntecPrintOk();
+    } else if (cyntecGetCommandTokenCnt() == 2) {
 
-		uint32_t err_code;
-		err_code = sd_ble_gap_address_get(&m_peer_addr);
-		APP_ERROR_CHECK(err_code);
-		
-		cyntecPrintOk();
-				
-		console.printf("[%02X %02X %02X %02X %02X %02X]", 
-						m_peer_addr.addr[5], m_peer_addr.addr[4], m_peer_addr.addr[3], 
-						m_peer_addr.addr[2], m_peer_addr.addr[1], m_peer_addr.addr[0]);
-	}
-	else { //cyntecGetCommandTokenCnt() not equal to 2 or 3
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-	}
-	return;
+        uint32_t err_code;
+        err_code = sd_ble_gap_address_get(&m_peer_addr);
+        APP_ERROR_CHECK(err_code);
+
+        cyntecPrintOk();
+
+        console.printf("[%02X %02X %02X %02X %02X %02X]",
+                       m_peer_addr.addr[5], m_peer_addr.addr[4], m_peer_addr.addr[3],
+                       m_peer_addr.addr[2], m_peer_addr.addr[1], m_peer_addr.addr[0]);
+    } else { //cyntecGetCommandTokenCnt() not equal to 2 or 3
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+    }
+    return;
 }
 
-#ifdef S120_BLE_CENTRAL
-/**@breif Function to start scanning.
+
+/**@brief Function to start scanning.
  */
 static void scan_start(void)
 {
-    uint32_t err_code = sd_ble_gap_scan_start(&m_scan_param);
-    APP_ERROR_CHECK(err_code);
+    deltaBLE.gap().startScan(advertisementCallback);
+    //APP_ERROR_CHECK(err_code);
 }
 
-/**@breif Function to start scanning.
- */
 static void scan_stop(void)
 {
-    uint32_t err_code = sd_ble_gap_scan_stop();
-    APP_ERROR_CHECK(err_code);
+    deltaBLE.stopScan();
+    //APP_ERROR_CHECK(err_code);
 }
 
+// gill 20150916 modify
 static void cynBLEScanCommand(void)
 {
-	uint8_t *arg = cyntecGetCommandArgument(0,NULL);
+    uint8_t argLen = 0;
+    uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+    uint16_t setInterval = DEFAULT_SCAN_INTERVAL;
+    uint16_t setWindow = DEFAULT_SCAN_WINDOW;
+    uint16_t setTimeout = DEFAULT_SCAN_TIMEOUT;
+    setInterval = cyntecAtoiUint16( arg, argLen );
+    arg = cyntecGetCommandArgument(1,&argLen);
+    setWindow = cyntecAtoiUint16( arg, argLen );
+    arg = cyntecGetCommandArgument(2,&argLen);
+    setTimeout = cyntecAtoiUint16( arg, argLen );
+#ifdef DELTA_DEBUG 
+    console.printf("%i\r\n",setTimeout);
+#endif
+	memset(saveAddr,0,sizeof(saveAddr)); // Clear saving address set
 	
-	if ( arg != NULL ) {
-		if ( arg[0] == '1' ) {
-			console.printf("\r\nStart Scanning");
-			scan_start();
-		}
-		else if ( arg[0] == '0' ) {
-			console.printf("\r\nStop Scanning");
-			scan_stop();
-		}
-		else
-			console.printf("\r\nUsage: cynb scan <1|0>");
-			console.printf("\r\n");
-	}	
+    deltaBLE.gap().setScanParams(setInterval,setWindow,setTimeout,1);
+	console.printf("Start Scanning\r\n");
+    scan_start();
+    
+}
+
+static void cynBLEScanStopCommand(void)
+{
+    console.printf("\r\nStop Scanning");
+    scan_stop();
 }
 
-static void cynBLEConnectCommand(void)
-{
-	if (cyntecGetCommandTokenCnt() == 3)
-	{	
-		uint8_t devNameLen = 0;
-		uint8_t *argDevName = cyntecGetCommandArgument(0, &devNameLen);
-		
-		if ( argDevName != NULL ) {
-			uint8_t i;
-			for (i = 0; i < devNameLen; i++) {
-				targetDevName[i] = argDevName[i];
-			}
-			if (i < devNameLen)
-				targetDevName[i] = '\0';
-		}
-		
-		console.printf("\r\nSearch for device name:");
-		console.printf(argDevName);
-		
-		scan_start();
-	} else {
-			console.printf("\r\nUsage: cynb connect <Device Name>");
-			console.printf("\r\n(Ex:cynb connect CYN_DEVICE");		
-	}
-}
-#endif
+//static void cynBLEConnectCommand(void)
+//{
+//	if (cyntecGetCommandTokenCnt() == 3)
+//	{
+//		uint8_t devNameLen = 0;
+//		uint8_t *argDevName = cyntecGetCommandArgument(0, &devNameLen);
+//		uint8_t *targetDevName[devNameLen];
+//		if ( argDevName != NULL ) {
+//			uint8_t i;
+//			for (i = 0; i < devNameLen; i++) {
+//				targetDevName[i] = argDevName[i];
+//			}
+//			if (i < devNameLen)
+//				targetDevName[i] = '\0';
+//		}
+//#ifdef DELTA_DEBUG
+//		console.printf("\r\nSearch for device name:");
+//		console.printf(argDevName);
+//#endif
+//		scan_start();
+//	} else {
+//			console.printf("\r\nUsage: cynb connect <Device Name>");
+//			console.printf("\r\n(Ex:cynb connect CYN_DEVICE");
+//	}
+//}
+
 
 static void cynBLEDisconnectCommand(void)
 {
-	uint32_t err_code;
-#ifdef S110_BLE_PERIPHERAL
-	//marcus need to modify
-	err_code = sd_ble_gap_disconnect(test_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
-#endif	
-	
-#ifdef S120_BLE_CENTRAL
-	err_code = sd_ble_gap_connect_cancel();	// No function defined currently
-#endif
-	if (err_code == NRF_SUCCESS)
-	{
+    uint32_t err_code;
+
+    //marcus need to modify
+    err_code = sd_ble_gap_disconnect(test_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
+
+
+
+    err_code = sd_ble_gap_connect_cancel();	// No function defined currently
 
-		cyntecPrintOk();
+    if (err_code == NRF_SUCCESS) {
+
+        cyntecPrintOk();
 //	APP_ERROR_CHECK(err_code);
-	}
-	else  if (err_code ==NRF_ERROR_INVALID_STATE){
-		cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
-	}
-	else {
-		console.printf("ERROR;\r\n");
-	}
+    } else  if (err_code ==NRF_ERROR_INVALID_STATE) {
+        cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
+    } else {
+        console.printf("ERROR;\r\n");
+    }
 }
 
-static uint8_t isValidGPIO(uint8_t num)
+uint8_t isValidGPIO(uint8_t num)
 {
-	uint8_t cfgPin[] = {0,1,2,3,4,5,6,7,13,16,17,23,24,25,29};
-	uint8_t i;
-	
-	for ( i = 0; i < sizeof(cfgPin) ; i++ )
-	{
-			if ( num == cfgPin[i] )
-				return 1;
-	}
-	
-	return 0;
+    uint8_t cfgPin[] = {0,1,2,3,4,5,6,7,13,16,17,23,24,25,29};
+    uint8_t i;
+
+    for ( i = 0; i < sizeof(cfgPin) ; i++ ) {
+        if ( num == cfgPin[i] )
+            return 1;
+    }
+
+    return 0;
 }
 
 static void cynBLESystemOffCommand(void)
 {
-	if (cyntecGetCommandTokenCnt() == 3)
-	{
-		uint8_t argLen = 0;
-		uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
-		uint8_t gpioNum = cyntecAtoi( arg, argLen );
-		// Can only use 0,1,2,3,4,5,6,7,13,16,17,23,24,25,29
-		if (!isValidGPIO(gpioNum))
-		{
-			cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
-			return;
-		}
-		nrf_gpio_cfg_sense_input(gpioNum,
-														 NRF_GPIO_PIN_PULLUP, 
-														 NRF_GPIO_PIN_SENSE_LOW);	
-		cyntecPrintOk();		
-	} else if (cyntecGetCommandTokenCnt() == 2){
-		/* default wake up pin is uart Rx pin */
-		nrf_gpio_cfg_sense_input(RX_PIN_NUMBER,
-														 NRF_GPIO_PIN_PULLUP, 
-														 NRF_GPIO_PIN_SENSE_LOW);
-		cyntecPrintOk();
-	} else{
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-	}
-	sd_power_system_off();
+    if (cyntecGetCommandTokenCnt() == 3) {
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+        uint8_t gpioNum = cyntecAtoi( arg, argLen );
+        // Can only use 0,1,2,3,4,5,6,7,13,16,17,23,24,25,29
+        if (!isValidGPIO(gpioNum)) {
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+            return;
+        }
+        nrf_gpio_cfg_sense_input(gpioNum,
+                                 NRF_GPIO_PIN_PULLUP,
+                                 NRF_GPIO_PIN_SENSE_LOW);
+        cyntecPrintOk();
+    } else if (cyntecGetCommandTokenCnt() == 2) {
+        /* default wake up pin is uart Rx pin */
+        nrf_gpio_cfg_sense_input(RX_PIN_NUMBER,
+                                 NRF_GPIO_PIN_PULLUP,
+                                 NRF_GPIO_PIN_SENSE_LOW);
+        cyntecPrintOk();
+    } else {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+    }
+    sd_power_system_off();
 }
 
 static void cynBLEGPIOCommand(void)
 {
-	
-	if (cyntecGetCommandTokenCnt() == 4)
-	{
-		uint8_t argLen = 0;
-		uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
-		uint8_t gpioNum = cyntecAtoi( arg, argLen );
-		
-		if (!isValidGPIO(gpioNum))
-		{
-			cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
-			return;
-		}
-		
-		/* arg2 is set or clear */
-		uint8_t *action = cyntecGetCommandArgument(1,&argLen);
-		
-		if ( cyntecStrCmp(action,(unsigned char *)"set",argLen) == 1 )
-		{
-			nrf_gpio_cfg_output(gpioNum);
-			nrf_gpio_pin_set(gpioNum);
-			cyntecPrintOk();
-		} else if ( cyntecStrCmp(action,(unsigned char *)"clear",argLen) == 1 ) {
-			nrf_gpio_cfg_output(gpioNum);
-			nrf_gpio_pin_clear(gpioNum);
-			cyntecPrintOk();
-		} else {
-			cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
-		}
-	} else {
-			cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-	}
+
+    if (cyntecGetCommandTokenCnt() == 4) {
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+        uint8_t gpioNum = cyntecAtoi( arg, argLen );
+
+        if (!isValidGPIO(gpioNum)) {
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_OUT_OF_RANGE);
+            return;
+        }
+
+        /* arg2 is set or clear */
+        uint8_t *action = cyntecGetCommandArgument(1,&argLen);
+
+        if ( cyntecStrCmp(action,(unsigned char *)"set",argLen) == 1 ) {
+            nrf_gpio_cfg_output(gpioNum);
+            nrf_gpio_pin_set(gpioNum);
+            cyntecPrintOk();
+        } else if ( cyntecStrCmp(action,(unsigned char *)"clear",argLen) == 1 ) {
+            nrf_gpio_cfg_output(gpioNum);
+            nrf_gpio_pin_clear(gpioNum);
+            cyntecPrintOk();
+        } else {
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
+        }
+    } else {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+    }
 }
 
 static void cynResetCommand(void)
 {
-	cyntecPrintOk();
-	// On assert, the system can only recover with a reset.
-  NVIC_SystemReset();
+    cyntecPrintOk();
+    // On assert, the system can only recover with a reset.
+    NVIC_SystemReset();
 }
 
 // gill modify for update value in non-connect state 20150904
-// Change set value connection handle 
+// Change set value connection handle
 static void cynBLEUpdateUUIDCommand(void)
 {
-	uint8_t i,j;
-	uint8_t value[MAX_VALUE_LENGTH];
-	memset(value, 0, sizeof(value));
+    uint8_t i,j;
+    uint8_t value[MAX_VALUE_LENGTH];
+    memset(value, 0, sizeof(value));
 //	uint8_t buf_char_uuid_type;
-	ble_uuid_t buf_service_uuid;
-	ble_uuid_t buf_char_uuid;
-	uint8_t argLen = 0;
-	uint8_t *arg;
-	uint8_t valueLengthBuffer = 0;
-	uint8_t modeType;
-	bool updatematchFlag = false; // Check matched characteristic found
-	uint16_t len = MAX_VALUE_LENGTH;
-	uint32_t err_code;
-	// check if argument count is right
-	if (cyntecGetCommandTokenCnt() != 5)
-	{
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-		return;
-	}
-	else
-	{
-			arg = cyntecGetCommandArgument(0,&argLen);
-			if (arg[0] != '0' | arg[1] != 'x' | argLen%2 != 0) {
-				cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
-				return;					 
-			}
-			else {
-						// Handle input parameter - Service UUID
-					arg = cyntecGetCommandArgument(0,&argLen);
-					
-					if (argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-					{
-						buf_service_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-						buf_service_uuid.type = BLE_UUID_TYPE_BLE;
-					}
-					if (argLen == 34 && arg[0] == '0' && arg[1] == 'x')
-					{
-						buf_service_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
-						buf_service_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
-					}
-					
-					// Handle input parameter -  Characteristic UUID
-					argLen = 0;
-					arg = cyntecGetCommandArgument(1,&argLen);
-					
-					if (argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-					{
-						buf_char_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-						buf_char_uuid.type = BLE_UUID_TYPE_BLE;
-					}
-					if (argLen == 34 && arg[0] == '0' && arg[1] == 'x')
-					{
-						buf_char_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
-						buf_char_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
-					}
+    ble_uuid_t buf_service_uuid;
+    ble_uuid_t buf_char_uuid;
+    uint8_t argLen = 0;
+    uint8_t *arg;
+    uint8_t valueLengthBuffer = 0;
+    uint8_t modeType;
+    bool updatematchFlag = false; // Check matched characteristic found
+    uint16_t len = MAX_VALUE_LENGTH;
+    uint32_t err_code;
+    // check if argument count is right
+    if (cyntecGetCommandTokenCnt() != 5) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    } else {
+        arg = cyntecGetCommandArgument(0,&argLen);
+        if (arg[0] != '0' | arg[1] != 'x' | argLen%2 != 0) {
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
+            return;
+        } else {
+            // Handle input parameter - Service UUID
+            arg = cyntecGetCommandArgument(0,&argLen);
+
+            if (argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+                buf_service_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+                buf_service_uuid.type = BLE_UUID_TYPE_BLE;
+            }
+            if (argLen == 34 && arg[0] == '0' && arg[1] == 'x') {
+                buf_service_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
+                buf_service_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
+            }
+
+            // Handle input parameter -  Characteristic UUID
+            argLen = 0;
+            arg = cyntecGetCommandArgument(1,&argLen);
+
+            if (argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+                buf_char_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+                buf_char_uuid.type = BLE_UUID_TYPE_BLE;
+            }
+            if (argLen == 34 && arg[0] == '0' && arg[1] == 'x') {
+                buf_char_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
+                buf_char_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
+            }
 //					sprintf((char *)&debugMess[0],"buf_service_uuid[%d,%4X]\r\n",buf_service_uuid.type,buf_service_uuid.uuid);
 //					console.printf(debugMess);
-					
-					// Handle input parameter -  value
-					arg = cyntecGetCommandArgument(2,&argLen);
-					valueLengthBuffer = (argLen-2)/2;
-				 for (i=0 ; i < (argLen-2)/2; i++)
-					{
-						value[i]  = cyntecArgToUint8(arg+2*(i+1), 2);
-						// debug
-		//							sprintf((char *)&buf[0],"[%2X]",value[i]);
-		//							console.printf(buf);
-					}
-					
-				}
-					// debug message
+
+            // Handle input parameter -  value
+            arg = cyntecGetCommandArgument(2,&argLen);
+            valueLengthBuffer = (argLen-2)/2;
+            for (i=0 ; i < (argLen-2)/2; i++) {
+                value[i]  = cyntecArgToUint8(arg+2*(i+1), 2);
+                // debug
+                //							sprintf((char *)&buf[0],"[%2X]",value[i]);
+                //							console.printf(buf);
+            }
+
+        }
+        // debug message
 //					sprintf((char *)&buf[0],"value:[%02X]", value);
 //					console.printf(buf);
-	
-			for ( i = 0 ; i < CLI_SERVICE_MAX_NUM ; i++ )
-				{
-					if ( (bufferService[i].service_uuid.uuid == buf_service_uuid.uuid) &(bufferService[i].service_uuid.type == buf_service_uuid.type)& (updatematchFlag == false))
-					{
-							//readmatchFlag = true;
-							for ( j = 0 ; j < CLI_CHAR_MAX_NUM ; j++ )
-							{
-								if ( (bufferService[i].bufferGattChar[j].char_uuid.uuid == buf_char_uuid.uuid) &(bufferService[i].bufferGattChar[j].char_uuid.type == buf_char_uuid.type)& (updatematchFlag == false))
-								{
-									modeType = bufferService[i].bufferGattChar[j].mode;
-								//memset(bufferService[i].bufferGattChar[j].value, 0, sizeof(bufferService[i].bufferGattChar[j].value));								
-								// Identify characteristic property is notify or indicate
-								if (((modeType & (1 << CLI_CHAR_MODE_INDICATE)) | (modeType & (1 << CLI_CHAR_MODE_NOTIFY))) )
-								{
-										if (bufferService[i].bufferGattChar[j].mode & (1 << CLI_CHAR_MODE_INDICATE))
-											modeType = BLE_GATT_HVX_INDICATION ;
-										if (bufferService[i].bufferGattChar[j].mode & (1 << CLI_CHAR_MODE_NOTIFY))
-											modeType = BLE_GATT_HVX_NOTIFICATION;
-										ble_gatts_hvx_params_t hvx_params;
-										memset(&hvx_params, 0, sizeof(hvx_params));
-										hvx_params.handle   = bufferService[i].bufferGattChar[j].char_value_handle;
-										hvx_params.type     = modeType;
-										hvx_params.offset   = 0;
-										hvx_params.p_len    = &len;
-										hvx_params.p_data   = value;
-										if (connState) // If connected, send notification/indication 
-										{
-											err_code = sd_ble_gatts_hvx(test_conn_handle, &hvx_params);
-									
-											if (err_code == NRF_SUCCESS)
-											{
-												//do nothing
-											}
-											else if ((err_code != NRF_SUCCESS) &&
-											(err_code != NRF_ERROR_INVALID_STATE) &&
-											(err_code != BLE_ERROR_NO_TX_BUFFERS) &&
-											(err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING)
-											)
-											{
-												console.printf("HVX ERROR;%04X\r\n",err_code);
-											}
-										}
-										
-								}
-							
-								// Update database
-								bufferService[i].bufferGattChar[j].valueLength = valueLengthBuffer;
-								ble_gatts_value_t bufGattsValue;
-								memset(&bufGattsValue, 0, sizeof(bufGattsValue));
-								bufGattsValue.len = len;
-								bufGattsValue.offset = 0;
-								bufGattsValue.p_value = value;
-								//err_code = sd_ble_gatts_value_set(bufferService[i].bufferGattChar[j].char_value_handle, 
-//												 0, 
-//												 &len, 
+
+        for ( i = 0 ; i < CLI_SERVICE_MAX_NUM ; i++ ) {
+            if ( (bufferService[i].service_uuid.uuid == buf_service_uuid.uuid) &(bufferService[i].service_uuid.type == buf_service_uuid.type)& (updatematchFlag == false)) {
+                //readmatchFlag = true;
+                for ( j = 0 ; j < CLI_CHAR_MAX_NUM ; j++ ) {
+                    if ( (bufferService[i].bufferGattChar[j].char_uuid.uuid == buf_char_uuid.uuid) &(bufferService[i].bufferGattChar[j].char_uuid.type == buf_char_uuid.type)& (updatematchFlag == false)) {
+                        modeType = bufferService[i].bufferGattChar[j].mode;
+                        //memset(bufferService[i].bufferGattChar[j].value, 0, sizeof(bufferService[i].bufferGattChar[j].value));
+                        // Identify characteristic property is notify or indicate
+                        if (((modeType & (1 << CLI_CHAR_MODE_INDICATE)) | (modeType & (1 << CLI_CHAR_MODE_NOTIFY))) ) {
+                            if (bufferService[i].bufferGattChar[j].mode & (1 << CLI_CHAR_MODE_INDICATE))
+                                modeType = BLE_GATT_HVX_INDICATION ;
+                            if (bufferService[i].bufferGattChar[j].mode & (1 << CLI_CHAR_MODE_NOTIFY))
+                                modeType = BLE_GATT_HVX_NOTIFICATION;
+                            ble_gatts_hvx_params_t hvx_params;
+                            memset(&hvx_params, 0, sizeof(hvx_params));
+                            hvx_params.handle   = bufferService[i].bufferGattChar[j].char_value_handle;
+                            hvx_params.type     = modeType;
+                            hvx_params.offset   = 0;
+                            hvx_params.p_len    = &len;
+                            hvx_params.p_data   = value;
+                            if (connState) { // If connected, send notification/indication
+                                err_code = sd_ble_gatts_hvx(test_conn_handle, &hvx_params);
+
+                                if (err_code == NRF_SUCCESS) {
+                                    //do nothing
+                                } else if ((err_code != NRF_SUCCESS) &&
+                                           (err_code != NRF_ERROR_INVALID_STATE) &&
+                                           (err_code != BLE_ERROR_NO_TX_BUFFERS) &&
+                                           (err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING)
+                                          ) {
+                                    console.printf("HVX ERROR;%04X\r\n",err_code);
+                                }
+                            }
+
+                        }
+
+                        // Update database
+                        bufferService[i].bufferGattChar[j].valueLength = valueLengthBuffer;
+                        ble_gatts_value_t bufGattsValue;
+                        memset(&bufGattsValue, 0, sizeof(bufGattsValue));
+                        bufGattsValue.len = len;
+                        bufGattsValue.offset = 0;
+                        bufGattsValue.p_value = value;
+                        //err_code = sd_ble_gatts_value_set(bufferService[i].bufferGattChar[j].char_value_handle,
+//												 0,
+//												 &len,
 //												 value);
-								err_code = sd_ble_gatts_value_set(
-								//test_conn_handle,
-								BLE_CONN_HANDLE_INVALID, // User can update in non-connected state 
-								bufferService[i].bufferGattChar[j].char_value_handle,
-								&bufGattsValue
-								);
-								
-								if (err_code == NRF_SUCCESS)
-								{
-									cyntecPrintOk();
-								}
-								else
-								{
-									console.printf("Set ERROR;%04X\r\n",err_code);
-								}
-								updatematchFlag = true;
-								return;
-							}
-						}
-					}	
-			}
-			if (updatematchFlag == false){
-					cyntecPrintError(CYNTEC_CMD_ERR_NO_MATCHED_ARGUMENT);
-			} 
-		}
+                        err_code = sd_ble_gatts_value_set(
+                                       //test_conn_handle,
+                                       BLE_CONN_HANDLE_INVALID, // User can update in non-connected state
+                                       bufferService[i].bufferGattChar[j].char_value_handle,
+                                       &bufGattsValue
+                                   );
+
+                        if (err_code == NRF_SUCCESS) {
+                            cyntecPrintOk();
+                        } else {
+                            console.printf("Set ERROR;%04X\r\n",err_code);
+                        }
+                        updatematchFlag = true;
+                        return;
+                    }
+                }
+            }
+        }
+        if (updatematchFlag == false) {
+            cyntecPrintError(CYNTEC_CMD_ERR_NO_MATCHED_ARGUMENT);
+        }
+    }
 }
 
 static void cynBLEReadDataCommand(void)
-{ 
-		
-	if (cyntecGetCommandTokenCnt() != 4)
-		{
-			cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-		}
-		else
-		{
-			//uint16_t buf_char_uuid ;
-			uint8_t i,j;
-			uint8_t value[MAX_VALUE_LENGTH];
-			//uint8_t buf[20];
+{
+
+    if (cyntecGetCommandTokenCnt() != 4) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+    } else {
+        //uint16_t buf_char_uuid ;
+        uint8_t i,j;
+        uint8_t value[MAX_VALUE_LENGTH];
+        //uint8_t buf[20];
 //			uint8_t buf_char_uuid_type;
-			ble_uuid_t buf_service_uuid;
-			ble_uuid_t buf_char_uuid;
-			uint8_t valueLengthBuffer;
-			bool readmatchFlag = false;
-						// debug message
+        ble_uuid_t buf_service_uuid;
+        ble_uuid_t buf_char_uuid;
+        uint8_t valueLengthBuffer;
+        bool readmatchFlag = false;
+        // debug message
 //						sprintf((char *)&debugMess[0],"buf_char_uuid:[%04X]", buf_char_uuid);
 //						console.printf(debugMess);
-			uint8_t argLen = 0;
-			uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
-			
-			// Print out the service & char uuids table
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+
+        // Print out the service & char uuids table
 //			for (  i = 0 ; i < CLI_SERVICE_MAX_NUM ; i++ )
 //		{
 //			for (  j = 0 ; j < CLI_SERVICE_MAX_NUM ; j++ )
@@ -855,94 +890,85 @@
 //					}
 //		}
 
-			// Handle input parameter - Service UUID
-			if (argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-			{
-				buf_service_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-				buf_service_uuid.type = BLE_UUID_TYPE_BLE;
-			}
-			if (argLen == 34 && arg[0] == '0' && arg[1] == 'x')
-			{
-				buf_service_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
-				buf_service_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
-			}
-			
-			// Handle input parameter -  Characteristic UUID
-			argLen = 0;
-			arg = cyntecGetCommandArgument(1,&argLen);
-			if (argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-			{
-				buf_char_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-				buf_char_uuid.type = BLE_UUID_TYPE_BLE;
-			}
-			if (argLen == 34 && arg[0] == '0' && arg[1] == 'x')
-			{
-				buf_char_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
-				buf_char_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
-			}
+        // Handle input parameter - Service UUID
+        if (argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+            buf_service_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+            buf_service_uuid.type = BLE_UUID_TYPE_BLE;
+        }
+        if (argLen == 34 && arg[0] == '0' && arg[1] == 'x') {
+            buf_service_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
+            buf_service_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
+        }
+
+        // Handle input parameter -  Characteristic UUID
+        argLen = 0;
+        arg = cyntecGetCommandArgument(1,&argLen);
+        if (argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+            buf_char_uuid.uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+            buf_char_uuid.type = BLE_UUID_TYPE_BLE;
+        }
+        if (argLen == 34 && arg[0] == '0' && arg[1] == 'x') {
+            buf_char_uuid.uuid = cyntecArgToUint16( (arg + 6), 4);
+            buf_char_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
+        }
 //			sprintf((char *)&debugMess[0],"buf_service_uuid[%d,%4X]\r\n",buf_service_uuid.type,buf_service_uuid.uuid);
 //			console.printf(debugMess);
-						for ( i = 0 ; i < CLI_SERVICE_MAX_NUM ; i++ )
-						{
-							if ( (bufferService[i].service_uuid.uuid == buf_service_uuid.uuid) &(bufferService[i].service_uuid.type == buf_service_uuid.type)& (readmatchFlag == false))
-							{
-									//readmatchFlag = true;
-									for ( j = 0 ; j < CLI_CHAR_MAX_NUM ; j++ )
-									{
-										if ( (bufferService[i].bufferGattChar[j].char_uuid.uuid == buf_char_uuid.uuid) &(bufferService[i].bufferGattChar[j].char_uuid.type == buf_char_uuid.type)& (readmatchFlag == false))
-										{
-		//									uint8_t value[] = "88";
-											uint16_t len = MAX_VALUE_LENGTH;
-											ble_gatts_value_t bufGattsValue;
-											memset(&bufGattsValue, 0, sizeof(bufGattsValue));
-											bufGattsValue.len = len;
-											bufGattsValue.offset = 0;
-											bufGattsValue.p_value = value;
-											//sd_ble_gatts_value_get(bufferService[i].bufferGattChar[j].char_value_handle,
+        for ( i = 0 ; i < CLI_SERVICE_MAX_NUM ; i++ ) {
+            if ( (bufferService[i].service_uuid.uuid == buf_service_uuid.uuid) &(bufferService[i].service_uuid.type == buf_service_uuid.type)& (readmatchFlag == false)) {
+                //readmatchFlag = true;
+                for ( j = 0 ; j < CLI_CHAR_MAX_NUM ; j++ ) {
+                    if ( (bufferService[i].bufferGattChar[j].char_uuid.uuid == buf_char_uuid.uuid) &(bufferService[i].bufferGattChar[j].char_uuid.type == buf_char_uuid.type)& (readmatchFlag == false)) {
+                        //									uint8_t value[] = "88";
+                        uint16_t len = MAX_VALUE_LENGTH;
+                        ble_gatts_value_t bufGattsValue;
+                        memset(&bufGattsValue, 0, sizeof(bufGattsValue));
+                        bufGattsValue.len = len;
+                        bufGattsValue.offset = 0;
+                        bufGattsValue.p_value = value;
+                        //sd_ble_gatts_value_get(bufferService[i].bufferGattChar[j].char_value_handle,
 //														 0,
 //														 &len,
 //														 value);
-											sd_ble_gatts_value_get( test_conn_handle,
-																	bufferService[i].bufferGattChar[j].char_value_handle,
-																	&bufGattsValue
-											);
-											console.printf("\r\nOK;0x");
-											valueLengthBuffer = bufferService[i].bufferGattChar[j].valueLength;
-		//									sprintf((char *)&debugMess[0],"[%i]",valueLengthBuffer);
-		//									console.printf(debugMess);
-											
-											for (i=0 ; i < valueLengthBuffer; i++)
-											{
-												console.printf("%02X",value[i]);
-											}
-											console.printf(";\r\n");
-											readmatchFlag = true;
-											return;
-									}
-								}
-						}
-					}
-						// no matched case, can not read
-						if (readmatchFlag == false){
-							cyntecPrintError(CYNTEC_CMD_ERR_NO_MATCHED_ARGUMENT);
-						}
-				}
-				
-	
+                        sd_ble_gatts_value_get( test_conn_handle,
+                                                bufferService[i].bufferGattChar[j].char_value_handle,
+                                                &bufGattsValue
+                                              );
+                        console.printf("\r\nOK;0x");
+                        valueLengthBuffer = bufferService[i].bufferGattChar[j].valueLength;
+                        //									sprintf((char *)&debugMess[0],"[%i]",valueLengthBuffer);
+                        //									console.printf(debugMess);
+
+                        for (i=0 ; i < valueLengthBuffer; i++) {
+                            console.printf("%02X",value[i]);
+                        }
+                        console.printf(";\r\n");
+                        readmatchFlag = true;
+                        return;
+                    }
+                }
+            }
+        }
+        // no matched case, can not read
+        if (readmatchFlag == false) {
+            cyntecPrintError(CYNTEC_CMD_ERR_NO_MATCHED_ARGUMENT);
+        }
+    }
+
+
 }
 /* Set characteristics */
 static void cyntecInsertCharUUID(ble_uuid_t char_UUID, uint16_t charValueHandle,uint8_t valueLengthBuffer,uint8_t mode)
 {
-		uint8_t j;
-		j=char_count;
+    uint8_t j;
+    j=char_count;
 //			sprintf((char *)&debugMess[0],"char_uuid:%4X\r\n",char_UUID.uuid);
-//			console.printf(debugMess);	
-		bufferService[service_count-1].bufferGattChar[j].char_uuid.uuid = char_UUID.uuid;
-		bufferService[service_count-1].bufferGattChar[j].char_uuid.type = char_UUID.type;
-		bufferService[service_count-1].bufferGattChar[j].valueLength = valueLengthBuffer;
-		bufferService[service_count-1].bufferGattChar[j].mode = mode;
-		bufferService[service_count-1].bufferGattChar[j].char_value_handle = charValueHandle;
-		return;
+//			console.printf(debugMess);
+    bufferService[service_count-1].bufferGattChar[j].char_uuid.uuid = char_UUID.uuid;
+    bufferService[service_count-1].bufferGattChar[j].char_uuid.type = char_UUID.type;
+    bufferService[service_count-1].bufferGattChar[j].valueLength = valueLengthBuffer;
+    bufferService[service_count-1].bufferGattChar[j].mode = mode;
+    bufferService[service_count-1].bufferGattChar[j].char_value_handle = charValueHandle;
+    return;
 }
 
 static void cynGattCharCommand(void)
@@ -950,158 +976,148 @@
 //	uint16_t 					service_uuid_ble;
 //	uint8_t 					service_uuid_vs[16];
 
-	uint8_t 					attrMode=0; 
-	uint8_t 					attrValue[MAX_VALUE_LENGTH];
-	memset(&attrValue, 0, sizeof(attrValue));
-	
-	uint8_t 					i;
+    uint8_t 					attrMode=0;
+    uint8_t 					attrValue[MAX_VALUE_LENGTH];
+    memset(&attrValue, 0, sizeof(attrValue));
+
+    uint8_t 					i;
 //	uint8_t 					valueBuffer;
-	uint8_t 					err_code;
-	uint16_t 					buffer_char_uuid;
+    uint8_t 					err_code;
+    uint16_t 					buffer_char_uuid;
 //	uint16_t          buffer_char_uuid_ble;
-	uint16_t       		buffer_uuid_vs[8];
-	ble_uuid_t        char_uuid;
-	ble_uuid128_t     char_uuid_vs;
-	
-	ble_gatts_char_md_t char_md;
-  ble_gatts_attr_t    attr_char_value;
-    
-	ble_gatts_attr_md_t cccd_md;
-  ble_gatts_attr_md_t attr_md;
-//    uint8_t             init_value_encoded[2] = "77";	
+    uint16_t       		buffer_uuid_vs[8];
+    ble_uuid_t        char_uuid;
+    ble_uuid128_t     char_uuid_vs;
+
+    ble_gatts_char_md_t char_md;
+    ble_gatts_attr_t    attr_char_value;
+
+    ble_gatts_attr_md_t cccd_md;
+    ble_gatts_attr_md_t attr_md;
+//    uint8_t             init_value_encoded[2] = "77";
 //  uint8_t             init_value_len;
-	uint8_t 						valueLengthBuffer;
-	extern uint8_t 			char_count;
-	
-	if (cyntecGetCommandTokenCnt() != 5)
-	{
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-		return;
-	}
-	else
-	{
-				
-//#ifdef DELTA_DEBUG			
+    uint8_t 						valueLengthBuffer;
+    extern uint8_t 			char_count;
+
+    if (cyntecGetCommandTokenCnt() != 5) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    } else {
+
+//#ifdef DELTA_DEBUG
 //sprintf((char *)&debugMess[0],"[%04X]", service_uuid);
 //console.printf(debugMess);
 //#endif
-			
-			/* handle second parameter -  UUID */
-			uint8_t argLen = 0;
-			uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
-			
-			/* len: 6 => 0xXXXX */
-			if ( argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-			{				
-					buffer_char_uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-					BLE_UUID_BLE_ASSIGN(char_uuid, buffer_char_uuid);
-				char_uuid.type = BLE_UUID_TYPE_BLE;
-			}
-			
-			if ( argLen == 34 && arg[0] == '0' && arg[1] == 'x' )
-			{
-					for ( i=0;i<8;i++)
-					{
-						buffer_uuid_vs[7-i] = cyntecArgToUint16( (arg + 2+4*i), 4);
-						if (i==1)
-						{
-							char_uuid.uuid = cyntecArgToUint16( (arg + 2+4*i), 4);
-						}
+
+        /* handle second parameter -  UUID */
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+
+        /* len: 6 => 0xXXXX */
+        if ( argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+            buffer_char_uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+            BLE_UUID_BLE_ASSIGN(char_uuid, buffer_char_uuid);
+            char_uuid.type = BLE_UUID_TYPE_BLE;
+        }
+
+        if ( argLen == 34 && arg[0] == '0' && arg[1] == 'x' ) {
+            for ( i=0; i<8; i++) {
+                buffer_uuid_vs[7-i] = cyntecArgToUint16( (arg + 2+4*i), 4);
+                if (i==1) {
+                    char_uuid.uuid = cyntecArgToUint16( (arg + 2+4*i), 4);
+                }
 //#ifdef DELTA_DEBUG
 //						sprintf((char *)&debugMess[0],"%2X/",buffer_uuid_vs[7-i]);
 //						console.printf(debugMess);
 //#endif
-					}
-					memcpy(&char_uuid_vs,buffer_uuid_vs,16);
-					err_code = sd_ble_uuid_vs_add(&char_uuid_vs, &char_uuid.type);
-			}
+            }
+            memcpy(&char_uuid_vs,buffer_uuid_vs,16);
+            err_code = sd_ble_uuid_vs_add(&char_uuid_vs, &char_uuid.type);
+        }
 //#ifdef DELTA_DEBUG
 //			sprintf((char *)&debugMess[0],"char_uuid_type:[%d]\r\n",char_uuid.type);
 //						console.printf(debugMess);
 //#endif
-					
-					
-//#ifdef DELTA_DEBUG 
+
+
+//#ifdef DELTA_DEBUG
 //					sprintf((char *)&debugMess[0],"vs_add_Error:%d\r\n",err_code);
 //						console.printf(debugMess);
-//#endif 
-			
-			/* handle 3rd parameter -  attribute mode */
-			argLen = 0;
-			arg = cyntecGetCommandArgument(1,&argLen);
-		
-			for ( i = 0 ; i < argLen ; i++ )
-			{
-				switch(arg[i]) {
-					case 'r':
-						attrMode |= (1 << CLI_CHAR_MODE_READ);
-						break;
-					case 'w':
-						attrMode |= (1 << CLI_CHAR_MODE_WRITE);
-						break;
-					case 'i':
-						attrMode |= (1 << CLI_CHAR_MODE_INDICATE);
-						break;
-					case 'n':
-						attrMode |= (1 << CLI_CHAR_MODE_NOTIFY);
-						break;
-					default:
-						break;
-				}
-			}
-			
-			/* handle 4th parameter -  attribute value */
-			argLen = 0;
-			arg = cyntecGetCommandArgument(2,&argLen);
-			
-			if (arg[0] != '0' || arg[1] != 'x' | argLen%2 != 0) {
-				cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
-				return;					 
-			  }
-			else {
-				valueLengthBuffer = (argLen-2)/2;
-       for (i=0 ; i < (argLen-2)/2; i++)
-				{
-					attrValue[i]  = cyntecArgToUint8(arg+2*(i+1), 2);
-					
-				}
-					//cyntecInsertCharUUID(service_uuid, char_uuid, attrMode, attrValue,valueLengthBuffer);
-					//cyntecPrintOk();
-				}
-		  }
-			
-	
-    		//debug
+//#endif
+
+        /* handle 3rd parameter -  attribute mode */
+        argLen = 0;
+        arg = cyntecGetCommandArgument(1,&argLen);
+
+        for ( i = 0 ; i < argLen ; i++ ) {
+            switch(arg[i]) {
+                case 'r':
+                    attrMode |= (1 << CLI_CHAR_MODE_READ);
+                    break;
+                case 'w':
+                    attrMode |= (1 << CLI_CHAR_MODE_WRITE);
+                    break;
+                case 'i':
+                    attrMode |= (1 << CLI_CHAR_MODE_INDICATE);
+                    break;
+                case 'n':
+                    attrMode |= (1 << CLI_CHAR_MODE_NOTIFY);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        /* handle 4th parameter -  attribute value */
+        argLen = 0;
+        arg = cyntecGetCommandArgument(2,&argLen);
+
+        if (arg[0] != '0' || arg[1] != 'x' | argLen%2 != 0) {
+            cyntecPrintError(CYNTEC_CMD_ERR_ARGUMENT_SYNTAX_ERROR);
+            return;
+        } else {
+            valueLengthBuffer = (argLen-2)/2;
+            for (i=0 ; i < (argLen-2)/2; i++) {
+                attrValue[i]  = cyntecArgToUint8(arg+2*(i+1), 2);
+
+            }
+            //cyntecInsertCharUUID(service_uuid, char_uuid, attrMode, attrValue,valueLengthBuffer);
+            //cyntecPrintOk();
+        }
+    }
+
+
+    //debug
 //    sprintf((char *)&debugMess[0],"value:[%02X][%02X]", value[0],value[1]);
 //		console.printf(debugMess);
-	
-		//write read permission
-		ble_gap_conn_sec_mode_t local_all_perm;
-		local_all_perm.lv = 1;
-		local_all_perm.sm = 1;
-		
-		memset(&cccd_md, 0, sizeof(cccd_md));
+
+    //write read permission
+    ble_gap_conn_sec_mode_t local_all_perm;
+    local_all_perm.lv = 1;
+    local_all_perm.sm = 1;
+
+    memset(&cccd_md, 0, sizeof(cccd_md));
     BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
     cccd_md.write_perm = local_all_perm;
     cccd_md.vloc       = BLE_GATTS_VLOC_STACK;
-	
+
     memset(&char_md, 0, sizeof(char_md));
-    
-		if ( attrMode & (1 << CLI_CHAR_MODE_READ))
-			char_md.char_props.read  = 1;
-		if (attrMode & (1 << CLI_CHAR_MODE_WRITE))
-			char_md.char_props.write = 1;
-		if (attrMode & (1 << CLI_CHAR_MODE_NOTIFY))
-			char_md.char_props.notify = 1;
-		if (attrMode & (1 << CLI_CHAR_MODE_INDICATE)) 
-			char_md.char_props.indicate = 1;
-		
+
+    if ( attrMode & (1 << CLI_CHAR_MODE_READ))
+        char_md.char_props.read  = 1;
+    if (attrMode & (1 << CLI_CHAR_MODE_WRITE))
+        char_md.char_props.write = 1;
+    if (attrMode & (1 << CLI_CHAR_MODE_NOTIFY))
+        char_md.char_props.notify = 1;
+    if (attrMode & (1 << CLI_CHAR_MODE_INDICATE))
+        char_md.char_props.indicate = 1;
+
     char_md.p_char_user_desc = NULL;
     char_md.p_char_pf        = NULL;
     char_md.p_user_desc_md   = NULL;
     char_md.p_cccd_md        = &cccd_md;
     char_md.p_sccd_md        = NULL;
-    
+
     memset(&attr_md, 0, sizeof(attr_md));
 
     attr_md.vloc       = BLE_GATTS_VLOC_STACK;
@@ -1110,9 +1126,9 @@
     attr_md.rd_auth    = 0;
     attr_md.wr_auth    = 0;
     attr_md.vlen       = 0;
-    
+
     memset(&attr_char_value, 0, sizeof(attr_char_value));
-    
+
 //		init_value_len = MAX_VALUE_LENGTH;
 
     attr_char_value.p_uuid       = &char_uuid;
@@ -1121,46 +1137,41 @@
     attr_char_value.init_offs    = 0;
     attr_char_value.max_len      = MAX_VALUE_LENGTH;
     attr_char_value.p_value      = attrValue;
-		//debug
+    //debug
 //    sprintf((char *)&debugMess[0],"value:[%s]", attr_char_value.p_value);
 //		console.printf(debugMess);
     ble_gatts_char_handles_t testHandle;
-     err_code = sd_ble_gatts_characteristic_add(bufferGattTest.service_handle,
-                                           &char_md,
-                                           &attr_char_value,
-                                           &testHandle);
+    err_code = sd_ble_gatts_characteristic_add(bufferGattTest.service_handle,
+               &char_md,
+               &attr_char_value,
+               &testHandle);
 //#ifdef DELTA_DEBUG
 //			sprintf((char *)&debugMess[0],"char_uuid:%4X\r\n",char_uuid.uuid);
-//			console.printf(debugMess);												 
+//			console.printf(debugMess);
 //#endif
-	  if (err_code == NRF_SUCCESS)
-		{
-			cyntecPrintOk();
-			cyntecInsertCharUUID(char_uuid, testHandle.value_handle,valueLengthBuffer,attrMode);
+    if (err_code == NRF_SUCCESS) {
+        cyntecPrintOk();
+        cyntecInsertCharUUID(char_uuid, testHandle.value_handle,valueLengthBuffer,attrMode);
 //			sprintf((char *)&debugMess[0],"char_count:%d\r\n",char_count);
-//			console.printf(debugMess);	
-			char_count++;
-			if (char_count>10)
-				char_count=0;
-		}
-		else if (err_code == NRF_ERROR_INVALID_STATE)
-		{
-			cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
-			return;
-		}
-		else
-		{
-			console.printf("ERROR;\r\n");				
-		}
+//			console.printf(debugMess);
+        char_count++;
+        if (char_count>10)
+            char_count=0;
+    } else if (err_code == NRF_ERROR_INVALID_STATE) {
+        cyntecPrintError(CYNTEC_CMD_ERR_INVALID_STATE_TO_PERFORM_OPERATION);
+        return;
+    } else {
+        console.printf("ERROR;\r\n");
+    }
 
 }
 
 static void cyntecInsertServiceUUID(ble_uuid_t service_UUID)
-{	
-	/* find if the service uuid is exist */			
-				bufferService[service_count].service_uuid.uuid = service_UUID.uuid;
-				bufferService[service_count].service_uuid.type = service_UUID.type;
-				return;
+{
+    /* find if the service uuid is exist */
+    bufferService[service_count].service_uuid.uuid = service_UUID.uuid;
+    bufferService[service_count].service_uuid.type = service_UUID.type;
+    return;
 
 }
 
@@ -1171,127 +1182,118 @@
 //	memset(&attrValue, 0, sizeof(attrValue));
 //	uint8_t i;
 //	uint8_t valueBuffer;
-	extern uint8_t service_count;
-	
-	uint32_t   err_code;	
-	ble_uuid_t ble_uuid;
-	ble_uuid128_t ble_uuid128;
-	uint16_t buffer_uuid;
-	uint16_t buffer_uuid_vs[8];
-	int i;
-	
-	if (cyntecGetCommandTokenCnt() != 3)
-	{
-		cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
-		return;
-	}
-	else
-	{
-			/* handle first parameter - Service UUID */
-			uint8_t argLen = 0;
-			uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
+    extern uint8_t service_count;
+
+    uint32_t   err_code;
+    ble_uuid_t ble_uuid;
+    ble_uuid128_t ble_uuid128;
+    uint16_t buffer_uuid;
+    uint16_t buffer_uuid_vs[8];
+    int i;
+
+    if (cyntecGetCommandTokenCnt() != 3) {
+        cyntecPrintError(CYNTEC_CMD_ERR_WRONG_NUMBER_OF_ARGUMENTS);
+        return;
+    } else {
+        /* handle first parameter - Service UUID */
+        uint8_t argLen = 0;
+        uint8_t *arg = cyntecGetCommandArgument(0,&argLen);
 
-			/* Service uuid is 16 bits */
-			if ( argLen == 6 && arg[0] == '0' && arg[1] == 'x')
-			{
-					buffer_uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
-					//ble_uuid.type = BLE_UUID_TYPE_BLE; //type assign in BLE_UUID_BLE_ASSIGN
-					BLE_UUID_BLE_ASSIGN(ble_uuid, buffer_uuid);
-				
-					err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &bufferGattTest.service_handle);
-					ble_uuid.type = BLE_UUID_TYPE_BLE;
-				
-			}
-		 
-			/* Service uuid is 128 bits */
-			if ( argLen == 34 && arg[0] == '0' && arg[1] == 'x' )
-			{
+        /* Service uuid is 16 bits */
+        if ( argLen == 6 && arg[0] == '0' && arg[1] == 'x') {
+            buffer_uuid = cyntecArgToUint16( (arg + 2), (argLen - 2));
+            //ble_uuid.type = BLE_UUID_TYPE_BLE; //type assign in BLE_UUID_BLE_ASSIGN
+            BLE_UUID_BLE_ASSIGN(ble_uuid, buffer_uuid);
+
+            err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &bufferGattTest.service_handle);
+            ble_uuid.type = BLE_UUID_TYPE_BLE;
+
+        }
+
+        /* Service uuid is 128 bits */
+        if ( argLen == 34 && arg[0] == '0' && arg[1] == 'x' ) {
 //					uint8_t uuid_type = custom_add_uuid_base(CFG_CUSTOM_UUID_BASE);
-					//ASSERT(uuid_type > 0, ERROR_NOT_FOUND);
-					for ( i=0;i<8;i++)
-					{
-						buffer_uuid_vs[7-i] = cyntecArgToUint16( (arg + 2+4*i), 4);
-						if (i==1)
-						{
-							ble_uuid.uuid = cyntecArgToUint16( (arg + 2+4*i), 4);
-						}
+            //ASSERT(uuid_type > 0, ERROR_NOT_FOUND);
+            for ( i=0; i<8; i++) {
+                buffer_uuid_vs[7-i] = cyntecArgToUint16( (arg + 2+4*i), 4);
+                if (i==1) {
+                    ble_uuid.uuid = cyntecArgToUint16( (arg + 2+4*i), 4);
+                }
 #ifdef DELTA_DEBUG
-						console.printf("%2X/",buffer_uuid_vs[7-i]);
+                console.printf("%2X/",buffer_uuid_vs[7-i]);
 #endif
-					}
-					memcpy(&ble_uuid128.uuid128,buffer_uuid_vs,16);
+            }
+            memcpy(&ble_uuid128.uuid128,buffer_uuid_vs,16);
 //#ifdef DELTA_DEBUG
 //					sprintf((char *)&debugMess[0],"%32X\r\n",ble_uuid128.uuid128);
 //					console.printf(debugMess);
 //#endif
-					err_code = sd_ble_uuid_vs_add(&ble_uuid128, &ble_uuid.type);
-//#ifdef DELTA_DEBUG 
+            err_code = sd_ble_uuid_vs_add(&ble_uuid128, &ble_uuid.type);
+//#ifdef DELTA_DEBUG
 //					sprintf((char *)&debugMess[0],"service_uuid_type:%d\r\n",ble_uuid.type);
 //						console.printf(debugMess);
-//#endif 
+//#endif
+
+            err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &bufferGattTest.service_handle);
+
+            ble_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
 
-					err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &bufferGattTest.service_handle);
-					
-					ble_uuid.type = BLE_UUID_TYPE_VENDOR_BEGIN;
-				
-			}
-			if (err_code == NRF_SUCCESS)
-					{
-						cyntecPrintOk();
-						cyntecInsertServiceUUID(ble_uuid);
-						service_count++;
-						char_count = 0;
+        }
+        if (err_code == NRF_SUCCESS) {
+            cyntecPrintOk();
+            cyntecInsertServiceUUID(ble_uuid);
+            service_count++;
+            char_count = 0;
 //						sprintf((char *)&debugMess[0],"service_count:%d\r\n",service_count);
 //						console.printf(debugMess);
-					}
-			else
-			{
-				console.printf("ERROR;\r\n");
-				
-			}
-			
-		}
-	}
+        } else {
+            console.printf("ERROR;\r\n");
+
+        }
+
+    }
+}
 
 static void cynBLEInitCommand(void)
 {
-		const char DEVICE_NAME[] = "DELTA_CLI";
-	
-		deltaBLE.init();
-		deltaBLE.onDisconnection(disconnectionCallback);
-		deltaBLE.onConnection(onConnectionCallback);
-		deltaBLE.onTimeout(onTimeoutCallback);
-	
-		/* Setup advertising. */
-		deltaBLE.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
-		deltaBLE.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
-		deltaBLE.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
-		deltaBLE.setAdvertisingInterval(1000);
-	
-		cyntecPrintOk();
+    const char DEVICE_NAME[] = "DELTA_CLI";
+
+    deltaBLE.init();
+    deltaBLE.onDisconnection(disconnectionCallback);
+    deltaBLE.onConnection(onConnectionCallback);
+    deltaBLE.onTimeout(onTimeoutCallback);
+
+    /* Setup advertising. */
+    deltaBLE.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
+    deltaBLE.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
+    deltaBLE.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+    deltaBLE.setAdvertisingInterval(1000);
+
+    cyntecPrintOk();
 }
 
 CyntecCommandEntry bleCommandSets[] = {
-	{"init", cynBLEInitCommand, NULL, "Init BLE stack, Usage: cynb init"},
-	{"gpio", cynBLEGPIOCommand, NULL, "Config gpio, Usage: cynb gpio <GPIO NO> <set|clear>"},
-	{"sleep", cynBLESystemOffCommand, NULL, "System off mode, Usage: cynb sleep <GPIO NO>"},
-	{"disconn", cynBLEDisconnectCommand, NULL, "Disconnection, Usage: cynb disconn"},
-  {"reset", cynResetCommand, NULL, "Soft reset, Usage: cynb reset"},
-	{"info", cynBLEInfoCommand, NULL, "Module information, Usage: cynb info"},
-#ifdef S110_BLE_PERIPHERAL
-	{"gattChar", cynGattCharCommand, NULL, "Set SIG defined characteristic or Create your own"},
-	{"gattService", cynGattServiceCommand, NULL, "Set SIG defined service or Create your own"},
-  {"name", cynBLENameCommand, NULL, "Set/Get friendly for BLE module"},	
-  {"advStart", cynAdvertiseStartCommand, NULL, "Start broadcast advertise packet"},
-	{"advStop", cynAdvertiseStopCommand, NULL, "Stop broadcast advertise packet"},
-#endif
-#ifdef S120_BLE_CENTRAL
-	{"scan", cynBLEScanCommand, NULL, "Start/Stop(1/0) to scan BLE device"},
-	{"connect", cynBLEConnectCommand, NULL, "Connect to specific BLE device by Device Name"},	
-#endif
-  {"txPow", cynBLESetTxPowerCommand, NULL, "Set BLE tx power"},
-	{"bleAddr", cynBLEAddressCommand, NULL, "Set/Get Bluetooth address"},
-	{"update", cynBLEUpdateUUIDCommand, NULL, "Update value of specific characteristics"},
-	{"readData", cynBLEReadDataCommand, NULL, "Read value of specific characteristics"},
-  {NULL, NULL, NULL, NULL},
+    {"init", cynBLEInitCommand, NULL, "Init BLE stack, Usage: cynb init"},
+    {"gpio", cynBLEGPIOCommand, NULL, "Config gpio, Usage: cynb gpio <GPIO NO> <set|clear>"},
+    {"sleep", cynBLESystemOffCommand, NULL, "System off mode, Usage: cynb sleep <GPIO NO>"},
+    {"disconn", cynBLEDisconnectCommand, NULL, "Disconnection, Usage: cynb disconn"},
+    {"reset", cynResetCommand, NULL, "Soft reset, Usage: cynb reset"},
+    {"info", cynBLEInfoCommand, NULL, "Module information, Usage: cynb info"},
+// s110
+    {"gattChar", cynGattCharCommand, NULL, "Set SIG defined characteristic or Create your own"},
+    {"gattService", cynGattServiceCommand, NULL, "Set SIG defined service or Create your own"},
+    {"name", cynBLENameCommand, NULL, "Set/Get friendly for BLE module"},
+    {"advStart", cynAdvertiseStartCommand, NULL, "Start broadcast advertise packet"},
+    {"advStop", cynAdvertiseStopCommand, NULL, "Stop broadcast advertise packet"},
+
+//s120
+    {"scanStart", cynBLEScanCommand, NULL, "Start to scan BLE device"},
+    {"scanStop", cynBLEScanStopCommand, NULL, "Stop to scan BLE device"},
+//	{"connect", cynBLEConnectCommand, NULL, "Connect to specific BLE device by Device Name"},
+
+    {"txPow", cynBLESetTxPowerCommand, NULL, "Set BLE tx power"},
+    {"bleAddr", cynBLEAddressCommand, NULL, "Set/Get Bluetooth address"},
+    {"update", cynBLEUpdateUUIDCommand, NULL, "Update value of specific characteristics"},
+    {"readData", cynBLEReadDataCommand, NULL, "Read value of specific characteristics"},
+    {NULL, NULL, NULL, NULL},
 };