Index: fw/sdk/yc_bt.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_bt.h	(revision 900)
+++ /YC3121_SDK/fw/sdk/yc_bt.h	(working copy)
@@ -22,7 +22,7 @@
 #define MAX_BLUETOOTH_DATA_LEN            255
 #define MAX_TCP_DATA_LEN                  235
 #define MAX_BIG_DATA_LEN                  1360
-
+#define BT_ADDR_LEN                       6
 
 
 /*BIT judge*/
@@ -70,6 +70,7 @@
 #define BIT_BNEP_SEND_TCP_BIG_DATA_STATUS 41
 #define BIT_SET_GPIO_WAKEUPE              43
 #define BIT_SET_RTC_WAKEUP                44
+#define BIT_CREAT_BT_RECONNECT            45
 /*CMD*/
 #define HCI_CMD_SET_BT_ADDR               0x00  //设置 BT3.0 地址
 #define HCI_CMD_SET_BLE_ADDR              0x01  //设置 BLE 地址
@@ -111,6 +112,7 @@
 #define HCI_CMD_DNS_REQ                   0x82 //域名解析指令
 #define HCI_CMD_SEND_UDP_DATA             0x84 //发送UDP数据
 #define HCI_CMD_SEND_BIG_DATA             0x85 //发送TCP大包数据
+#define HCI_CMD_CREAT_BT_RECONNECT        0xB1 //BT开始回连
 #define HCI_CMD_SET_LPM_MODE              0xff //开关低功耗
 
 
@@ -148,6 +150,11 @@
 #define HCI_EVENT_BIG_DATA_FINISH         0x3a  /*大数据分包发送完成事件*/
 #define HCI_EVENT_BIG_DATA_STATUS         0x3b  /*大数据分包发送状态*/
 
+#define HCI_EVENT_BT_ENC_INFO             0xB0  /*BT配对信息*/
+#define HCI_EVENT_BT_RECONNECT_FAIL       0xB1  /*BT回连失败*/
+#define HCI_EVENT_HFP_CONNECTED           0xB2  /*HFP连接*/
+#define HCI_EVENT_HFP_START_DIALING       0xB3  /*HFP来电*/
+#define HCI_EVENT_HFP_STOP_DIALING        0xB4  /*HFP来电取消*/
 
 /**
   * @brief  event code enum definition
@@ -178,11 +185,28 @@
     BB_DISCONNECT        		=HCI_EVENT_BB_DISCONNECT,
     BT_NAME              		=HCI_EVENT_BT_NAME,
     UDP_INFO             		=HCI_EVENT_UDP_INFO,
-    BNEP_RECEIVE_UDP_DATA		=HCI_EVENT_BNEP_RECEIVE_UDP_DATA
-
+    BNEP_RECEIVE_UDP_DATA		=HCI_EVENT_BNEP_RECEIVE_UDP_DATA,
+    BT_ENC_INFO                 =HCI_EVENT_BT_ENC_INFO,
+	BT_RECONNECT_FAIL           =HCI_EVENT_BT_RECONNECT_FAIL,
+    HFP_CONNECT                 =HCI_EVENT_HFP_CONNECTED,
+    HFP_START_DIALING           =HCI_EVENT_HFP_START_DIALING,
+    HFP_STOP_DIALING            =HCI_EVENT_HFP_STOP_DIALING
 } BT_EventCodeEnum;
 
-
+/**
+  * @brief  PARING MODE
+  *         0x00:pincode
+  *         0x01:just work
+  *         0x02:passkey
+  *         0x03:confirm
+ **/
+typedef enum
+{
+  BT_PARING_MODE_PINCODE = 0,
+  BT_PARING_MODE_JUSTWORK,
+  BT_PARING_MODE_PASSKEY,
+  BT_PARING_MODE_CONFIRM,
+}BT_PARING_MODE_Def;
 
 typedef struct
 {
@@ -285,7 +309,7 @@
                 0x03:confirm
   * @retval	   ture or FALSE
   */
-Boolean BT_SetParingMode(uint8_t mode);
+Boolean BT_SetParingMode(BT_PARING_MODE_Def mode);
 
 
 
@@ -325,6 +349,14 @@
   */
 Boolean BT_SetNVRAM(uint8_t * NvData,int len);
 
+/**
+  * @brief  bt creat reconnect
+  * @param  NvData nv data
+  * @param  len: data len is 28
+  * @retval TRUE or FASLE
+  *
+  */
+Boolean BT_Creat_Reconnect(uint8_t *NvData, int len);
 
 /**
   * @brief  Bt Enter Sleep mode(enter_hibernate)
Index: fw/sdk/yc_bt.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_bt.c	(revision 900)
+++ /YC3121_SDK/fw/sdk/yc_bt.c	(working copy)
@@ -378,7 +378,7 @@
     return 0x80;
 }
 
-Boolean BT_SetParingMode(uint8_t mode)
+Boolean BT_SetParingMode(BT_PARING_MODE_Def mode)
 {
     uint8_t tmode = mode ;
     HCI_TypeDef msg;
@@ -499,6 +499,24 @@
     return FALSE;
 }
 
+Boolean BT_Creat_Reconnect(uint8_t *NvData, int len)
+{
+    HCI_TypeDef msg;
+    msg.opcode = HCI_CMD_CREAT_BT_RECONNECT;
+    msg.DataLen = len;
+    msg.p_data = NvData;
+    BT_BIT_CLEAR(HCI_CMD_BIT_FLAG, BIT_CREAT_BT_RECONNECT);
+    SendCMD(&msg);
+    StartTick = SysTick_GetTick();
+    do
+    {
+        if (BT_BIT_GET(HCI_CMD_BIT_FLAG, BIT_CREAT_BT_RECONNECT))
+        {
+            return TRUE;
+        }
+    }while (!SysTick_IsTimeOut(StartTick, BTTIMEOUT));
+    return FALSE;
+}
 
 Boolean BT_EnterSleepMode(void)
 {
@@ -1160,7 +1178,11 @@
             case HCI_EVENT_BB_DISCONNECT:
             case HCI_EVENT_BT_NAME:
             case HCI_EVENT_UDP_INFO:
-
+            case HCI_EVENT_BT_ENC_INFO:
+            case HCI_EVENT_BT_RECONNECT_FAIL:
+            case HCI_EVENT_HFP_CONNECTED:
+            case HCI_EVENT_HFP_START_DIALING:
+            case HCI_EVENT_HFP_STOP_DIALING:
 
                 //		SaveData((uint8_t *)&hci_bt,hci_bt.DataLen+3);
                 SaveData((uint8_t*)&hci_bt,3);
@@ -1409,6 +1431,12 @@
                     }
                     break;
 
+                case HCI_CMD_CREAT_BT_RECONNECT:
+                    if (!hci_bt.p_data[1])
+                    {
+                        BT_BIT_SET(HCI_CMD_BIT_FLAG, BIT_CREAT_BT_RECONNECT);
+                    }
+                    break;
                 default:
 #ifdef BT_ERROR_LOG
                     MyPrintf("bt 06 cmd err\n");
@@ -1488,7 +1516,11 @@
             TempOpcode==BNEP_DISCONNECT||\
             TempOpcode==BNEP_CHIP_ERROR||\
             TempOpcode==HCI_EVENT_BB_DISCONNECT||\
-            TempOpcode==PASSKEY)
+            TempOpcode==PASSKEY||\
+            TempOpcode==BT_RECONNECT_FAIL||\
+            TempOpcode==HFP_CONNECT||\
+            TempOpcode==HFP_STOP_DIALING
+		)
     {
         SkipData(3);
     }
