Index: fw/sdk/yc_bt.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_bt.h	(revision 644)
+++ /YC3121_SDK/fw/sdk/yc_bt.h	(working copy)
@@ -2,8 +2,8 @@
   ******************************************************************************
   * @file    yc_bt.h
   * @author  Yichip
-  * @version V1.0
-  * @date    07-june-2018
+  * @version V1.1
+  * @date    28-May-2020
   * @brief   Yichip bluetooth encapsulation.The HCI protocol refers to YC Dual mode module spec-v4.15
 *
   ******************************************************************************
@@ -245,7 +245,7 @@
 /**
   * @brief  get the bluetooth module firmware version number
   * @param  none
-  * @retval firmware version number(the value is 1~65535)
+  * @retval firmware version number(the value is 1~65535),0 is fail
   *                  
   */
 uint32_t BT_GetVersion(void);
@@ -315,7 +315,7 @@
   *               0x02:pass key
   *               0x81:secure connect just work
   *               0x82:secure connect numeric
-  *               0x00:secure connect pass key
+  *               0x83:secure connect pass key
   * @retval TRUE:set ble paring success
   *         FALSE:set ble paring  failed
   */
@@ -410,8 +410,8 @@
   *                2:5db
   *                3:-3db
   *                4:-5db
-  * @retval TRUE:set fixed passkey  success.
-  *         FALSE:set ble fixed passkey failed
+  * @retval TRUE:set SetTxPower  success.
+  *         FALSE:set SetTxPower failed
   */
 Boolean BT_SetTxPower(uint8_t power);
 
Index: fw/sdk/yc_bt.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_bt.c	(revision 644)
+++ /YC3121_SDK/fw/sdk/yc_bt.c	(working copy)
@@ -155,57 +155,57 @@
   {
 		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BT_ADDR))
 		{
-				return TRUE;
+			return TRUE;
 		}
   }while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms
-    return FALSE;
+	return FALSE;
 }
 
 
 Boolean BT_SetBleAddr(uint8_t * bt_addr)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SET_BLE_ADDR;
-    msg.DataLen = 6;
-		msg.p_data = bt_addr;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms    
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_BLE_ADDR;
+	msg.DataLen = 6;
+	msg.p_data = bt_addr;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_ADDR))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms    
+	return FALSE;
 }
 
 Boolean BT_SetVisibility(Boolean bt_discoverable, Boolean bt_connectability, Boolean ble_discoverable)
 {
-    HCI_TypeDef msg;
-    uint8_t visibility_data = 0;
-    if (bt_discoverable == 1)
-        visibility_data = visibility_data | 0x01;
-    if (bt_connectability == 1)
-        visibility_data = visibility_data | 0x02;
-    if (ble_discoverable == 1)
-        visibility_data = visibility_data | 0x04;
+	HCI_TypeDef msg;
+	uint8_t visibility_data = 0;
+	if (bt_discoverable == 1)
+		visibility_data = visibility_data | 0x01;
+	if (bt_connectability == 1)
+		visibility_data = visibility_data | 0x02;
+	if (ble_discoverable == 1)
+		visibility_data = visibility_data | 0x04;
 
-    msg.opcode = HCI_CMD_SET_VISIBILITY;
-    msg.DataLen = 0x01;
+	msg.opcode = HCI_CMD_SET_VISIBILITY;
+	msg.DataLen = 0x01;
 	msg.p_data = &visibility_data;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));   
-    return FALSE;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_VISIBILITY))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));   
+	return FALSE;
 }
 
 Boolean BT_SetBtName(uint8_t * bt_name, uint16_t name_len)
@@ -219,54 +219,53 @@
 	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BT_NAME))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BT_NAME))
 		{
     		return TRUE;
 		}
   }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT)); 
-    return FALSE;
+	return FALSE;
 }
 
 
 Boolean BT_SetBleName(uint8_t* ble_name, uint16_t name_len)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SET_BLE_NAME;
-    msg.DataLen = name_len;
-		msg.p_data  = ble_name;        
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_BLE_NAME;
+	msg.DataLen = name_len;
+	msg.p_data  = ble_name;        
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_BLE_NAME))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
 }
 
 
 Boolean BT_SendSppData(uint8_t * spp_data, uint16_t DataLen)
 {
-    _ASSERT(DataLen>0);
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SEND_SPP_DATA;
-    msg.DataLen = DataLen;
-		msg.p_data = spp_data;	
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA);
-    SendCMD(&msg);
-		StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return FALSE;
-
+	_ASSERT(DataLen>0);
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SEND_SPP_DATA;
+	msg.DataLen = DataLen;
+	msg.p_data = spp_data;	
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_SPP_DATA))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
 }
 
 Boolean BT_SendBleData(uint8_t * ble_data, uint16_t DataLen)
@@ -282,12 +281,12 @@
 	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_BLE_DATA))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SEND_BLE_DATA))
 		{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-    return FALSE;
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 
@@ -296,14 +295,15 @@
 	HCI_TypeDef msg;
 	msg.opcode = HCI_CMD_STATUS_REQUEST;
 	msg.DataLen = 0;
+	msg.p_data=NULL;
 	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST);
 	SendCMD(&msg);
 	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_STATUS_REQUEST))
 		{
-				return CmdRepData[0];
+			return CmdRepData[0];
 		}
 	} while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));//ms
   return 0x80;
@@ -311,23 +311,22 @@
 
 Boolean BT_SetParingMode(uint8_t mode)
 {
-   _ASSERT(mode<=0x03);
-		uint8_t tmode = mode ;
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SET_PAIRING_MODE;
-    msg.DataLen = 1;
-    msg.p_data = &tmode;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));	
-    return FALSE;
+	uint8_t tmode = mode ;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_PAIRING_MODE;
+	msg.DataLen = 1;
+	msg.p_data = &tmode;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PAIRING_MODE))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));	
+	return FALSE;
 }
 
 Boolean BT_SetPincode(uint8_t* Pincode,uint8_t DataLen)
@@ -341,96 +340,95 @@
 	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE))
 		{
 			return TRUE;
 		}
 	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-		return FALSE;
+	return FALSE;
 }
 
 
 
 Boolean BT_BtDisconnect(void)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_BT_DISCONNECT;
-    msg.DataLen = 0;
-		msg.p_data = NULL;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT))
-    	{
-    		return TRUE;
-    	}
-    }while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_BT_DISCONNECT;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BT_DISCONNECT))
+		{
+			return TRUE;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 uint32_t BT_GetVersion(void)
 {
 	HCI_TypeDef msg;
 	uint32_t TempVersion=0;
-   	msg.opcode = HCI_CMD_VERSION_REQUEST;
-    msg.DataLen = 0;
-		msg.p_data = NULL;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_VERSION);
-    SendCMD(&msg);	
-   	StartTick=SysTick_GetTick();
-   	do
-  	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_GET_VERSION))
-    	{
+	msg.opcode = HCI_CMD_VERSION_REQUEST;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_VERSION);
+	SendCMD(&msg);	
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_GET_VERSION))
+		{
 			TempVersion=(CmdRepData[0]<<8) |(CmdRepData[1]);
-    		return TempVersion;
-    	}
-  	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-		
-    return 1<<BIT_GET_VERSION;
+			return TempVersion;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return 0;
 }
 
 
 Boolean BT_BleDisconnect(void)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_BLE_DISCONNECT;
-    msg.DataLen = 0;
-		msg.p_data = NULL;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_BLE_DISCONNECT;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_BLE_DISCONNECT))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 
 Boolean BT_SetNVRAM(uint8_t * NvData)
 {
 #define NDLen 0xaa
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SET_NVRAM;
-    msg.DataLen = NDLen;
-		msg.p_data = NvData;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_NVRAM;
+	msg.DataLen = NDLen;
+	msg.p_data = NvData;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_NVRAM))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 
@@ -447,34 +445,34 @@
 
 Boolean BT_ConfirmGkey(uint8_t isMatching)
 {
-    HCI_TypeDef msg;
-		uint8_t tmismatching = isMatching;
-    msg.opcode = HCI_CMD_CONFIRM_GKEY;
-    msg.DataLen =1;
-    msg.p_data = &tmismatching;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY))
-    	{
-     		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-    return FALSE;
+	HCI_TypeDef msg;
+	uint8_t tmismatching = isMatching;
+	msg.opcode = HCI_CMD_CONFIRM_GKEY;
+	msg.DataLen =1;
+	msg.p_data = &tmismatching;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_CONFIRM_GKEY))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 Boolean BT_SetSppFlowcontrol(uint8_t packetNum)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_GET_CREADIT_GIVEN;
-    msg.DataLen =0;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_GET_CREADIT_GIVEN;
+	msg.DataLen =0;
 	uint8_t temp_packetNum=packetNum;
-    msg.p_data = &temp_packetNum;
-    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_CREADIT_GIVEN);
-    SendCMD(&msg);
-    return TRUE;//no event responce
+	msg.p_data = &temp_packetNum;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_GET_CREADIT_GIVEN);
+	SendCMD(&msg);
+	return TRUE;//no event responce
 }
 
 
@@ -490,90 +488,91 @@
 	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_PASSKEY_ENTRY))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_PASSKEY_ENTRY))
 		{
 			return TRUE;
 		}
 	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));	
-    return FALSE;
+	return FALSE;
 }
 
 Boolean BT_SetLEParing(uint8_t mode)
 {
-    _ASSERT(mode<=0x03);
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_LE_SET_PAIRING;
-    msg.DataLen = 1;
-    msg.p_data[0] = mode;		
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));	
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_PAIRING;
+	msg.DataLen = 1;
+	uint8_t temp_mode=mode;
+	msg.p_data = &temp_mode;		
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));	
+	return FALSE;
 }
 
 Boolean BT_SetLEAdvData(uint8_t* adv_data, int DataLen)
 {
-		HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_LE_SET_ADV_DATA;
-    msg.DataLen = DataLen;
-		msg.p_data = adv_data;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-     return FALSE;     
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_ADV_DATA;
+	msg.DataLen = DataLen;
+	msg.p_data = adv_data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_DATA))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;     
 }
 
 Boolean BT_SetLEScanData(uint8_t* scan_data, int DataLen)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_LE_SET_SCAN_DATA;
-    msg.DataLen = DataLen;
-		msg.p_data = scan_data;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-     return FALSE;     
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_SCAN_DATA;
+	msg.DataLen = DataLen;
+	msg.p_data = scan_data;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_SCAN_DATA))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;     
 }
 
 Boolean BT_SetLESendConnUpdate(uint8_t *data,int len)
 {
 	if(0x08 != len) 
 		return FALSE;
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_LE_SEND_CONN_UPDATE_REQ;
-    msg.DataLen = len;	
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SEND_CONN_UPDATE_REQ;
+	msg.DataLen = len;	
 	msg.p_data = data;	
-    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-     do
-    {
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
 		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SEND_CONN_UPDATE))
-    	{
-    		return TRUE;
-    	}
-    } while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return FALSE;
+		{
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
 }
 
 Boolean BT_SetLEAdvParm(uint8_t*nvdata,int DataLen)//bt code did not exist
@@ -581,64 +580,63 @@
 	if(0 == DataLen) 
 		return FALSE;
     
-		HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_LE_SET_ADV_PARM;
-    msg.DataLen = DataLen;	
-		msg.p_data = nvdata;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM);
-	  SendCMD(&msg);
-		StartTick=SysTick_GetTick();
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_LE_SET_ADV_PARM;
+	msg.DataLen = DataLen;	
+	msg.p_data = nvdata;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
 	do
 	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_ADV_PARM))
 		{
 			return TRUE;
 		}
-    } while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-	
-		return FALSE;
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
 }
 
 
 
 Boolean BT_RejectJustWork(uint8_t justwork)
 {
-		uint8_t td = justwork;
-		HCI_TypeDef msg;
-		msg.opcode = HCI_CMD_REJECT_JUSTWORK;
-		msg.DataLen = 0x01;  
-		msg.p_data = &td;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK);
-		SendCMD(&msg);
-		StartTick=SysTick_GetTick();
-		do
+	uint8_t td = justwork;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_REJECT_JUSTWORK;
+	msg.DataLen = 0x01;  
+	msg.p_data = &td;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK))
 		{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_REJECT_JUSTWORK))
-			{
-					return TRUE;
-			}
-    } while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
 	return FALSE;
 }
 
 Boolean BT_SetTxPower(uint8_t power)
 {
-		uint8_t tpower = power;	
-		HCI_TypeDef msg;
-		msg.opcode = HCI_CMD_SET_TX_POWER;
-		msg.DataLen = 0x01;	
-		msg.p_data = &tpower;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER);
-		SendCMD(&msg);
-		StartTick=SysTick_GetTick();
-		do
+	uint8_t tpower = power;	
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_TX_POWER;
+	msg.DataLen = 0x01;	
+	msg.p_data = &tpower;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER))
 		{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER))
-			{
-					return TRUE;
-			}
-    } while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-		return FALSE;
+			return TRUE;
+		}
+	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return FALSE;
 }
 
 Boolean BT_Set_FixedPasskey(uint8_t* key)
@@ -652,95 +650,93 @@
   StartTick=SysTick_GetTick();
   do
   {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_FIXED_PASSKEY))
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_LE_SET_FIXED_PASSKEY))
 		{
 			return TRUE;
 		}
 	} while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return FALSE;
+	return FALSE;
 }
 
 Boolean BT_SetCOD(uint8_t * bt_cod)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_SET_COD;
-    msg.DataLen = 3;
-		msg.p_data = bt_cod;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_COD);
-    SendCMD(&msg);	
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_COD))
-    	{
-    		return TRUE;
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms    
-    return FALSE;
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_SET_COD;
+	msg.DataLen = 3;
+	msg.p_data = bt_cod;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_SET_COD);
+	SendCMD(&msg);	
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_SET_COD))
+		{
+			return TRUE;
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));//ms    
+	return FALSE;
 }
 
 
 Boolean BT_DeleteService(void)
 {
 	HCI_TypeDef msg;
-	uint32_t TempVersion=0;
-   	msg.opcode = HCI_CMD_DELETE_CUSTOMIZE_SERVICE;
-    msg.DataLen = 0;
-		msg.p_data = NULL;
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE);
-    SendCMD(&msg);	
-   	StartTick=SysTick_GetTick();
-   	do
-  	{
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE))
-    	{			
-    		return TRUE;
-    	}
-  	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
-		
-    return 1<<BIT_DELETE_SERVICE;
+	msg.opcode = HCI_CMD_DELETE_CUSTOMIZE_SERVICE;
+	msg.DataLen = 0;
+	msg.p_data = NULL;
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE);
+	SendCMD(&msg);	
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_DELETE_SERVICE))
+		{			
+			return TRUE;
+		}
+	}while(!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+	return FALSE;
 }
 
 uint16_t BT_AddBleService(uint8_t* ble_service_uuid, uint16_t service_uuid_len)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_ADD_SERVICE_UUID;
-    msg.DataLen = service_uuid_len;
-		msg.p_data  = ble_service_uuid;        
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
-    	{
-    		return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return 0x00;
-	}
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_ADD_SERVICE_UUID;
+	msg.DataLen = service_uuid_len;
+	msg.p_data  = ble_service_uuid;        
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
+		{
+			return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return 0x00;
+}
 
 
 	
 	
 uint16_t BT_AddBleCharacteristic(uint8_t* ble_Characteristic_uuid, uint16_t service_Characteristic_payload_len)
 {
-    HCI_TypeDef msg;
-    msg.opcode = HCI_CMD_ADD_CHARACTERISTIC_UUID;
-    msg.DataLen = service_Characteristic_payload_len;
-		msg.p_data  = ble_Characteristic_uuid;        
-		BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
-    SendCMD(&msg);
-    StartTick=SysTick_GetTick();
-    do
-    {
-			if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
-    	{
-    		return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
-    	}
-    }  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
-    return 0x00;
-	}
+	HCI_TypeDef msg;
+	msg.opcode = HCI_CMD_ADD_CHARACTERISTIC_UUID;
+	msg.DataLen = service_Characteristic_payload_len;
+	msg.p_data  = ble_Characteristic_uuid;        
+	BT_BIT_CLEAR(HCI_CMD_BIT_FLAG,BIT_ADD_UUID);
+	SendCMD(&msg);
+	StartTick=SysTick_GetTick();
+	do
+	{
+		if(BT_BIT_GET(HCI_CMD_BIT_FLAG,BIT_ADD_UUID))
+		{
+			return (uint16_t)(CmdRepData[0]|(CmdRepData[1]<<8));
+		}
+	}  while(!SysTick_IsTimeOut(StartTick,BTTIMEOUT));
+	return 0x00;
+}
 
 
 void BT_ParseBTData()
@@ -859,8 +855,22 @@
 								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_PINCODE);
 							}
 							break;
+							
+						case HCI_CMD_VERSION_REQUEST:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_GET_VERSION);
+								CmdRepData[0] = hci_bt.p_data[2];
+								CmdRepData[1] = hci_bt.p_data[3];
+							}
+							break;
 
-						
+						case HCI_CMD_LE_SET_PAIRING:
+							if(!hci_bt.p_data[1])
+							{
+								BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_LE_SET_PARING);
+							}
+							break;
 
 						case HCI_CMD_BT_DISCONNECT:
 							if(!hci_bt.p_data[1])
@@ -923,6 +933,13 @@
 						}							
 						break;
 						
+					case HCI_CMD_SET_TX_POWER:
+						if(!hci_bt.p_data[1])
+						{
+							 BT_BIT_SET(HCI_CMD_BIT_FLAG,BIT_SET_TXPOWER);
+						}							
+						break;
+						
 						case HCI_CMD_REJECT_JUSTWORK:
 						if(!hci_bt.p_data[1])
 						{
@@ -1006,10 +1023,10 @@
 		TempOpcode==BT_DISCONNECTED||\
 		TempOpcode==BLE_DISCONNECTED||\
 		TempOpcode==PASSKEY)
-	   {
-	   	SkipData(3);
-	   }
-	   PacketNum--;
+	{
+		SkipData(3);
+	}
+	PacketNum--;
 	return TempOpcode;
 }
 
