Index: inc/HalBt.h
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/inc/HalBt.h	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/inc/HalBt.h	(working copy)
@@ -1,5 +1,5 @@
 /*******************************************************************************
-文件名: halIFLASH.h
+文件名: HalBt.h
 描  述:
 版  权: 1.0
 作  者: YJK
@@ -24,8 +24,19 @@
 // 类/结构声明
 
 // 全局函数声明
-
-
+s32 halBtOpen(void);
+s32 halBtClose(void);
+s32 halBtSetNamePin(s8 *pcdevName, s8 *pcPin);
+s32 halBtSetMac (u8 *pucMac);
+s32 halBtGetMac (u8 *pucMac);
+s32 halBtGetStatus (u8 *pucStatus);
+s32 halBtGetSN (u8 *pucSN);
+s32 halBtDisconnect(void);
+s32 halBtSendData(u8 *pucSendBuf, u32 uiSendLen);
+s32 halBtRecvData(u8 *pucRecvBuf, u32 uiRecvLen);
+void halBtProc(void);
+s32 halBtRfCtrl(u8 ucMode);
+s32 halBtRfSet(u8 ucRfValue);
 #ifdef __cplusplus
 }
 #endif
Index: make/YC3121_hal.uvoptx
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/make/YC3121_hal.uvoptx	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/make/YC3121_hal.uvoptx	(working copy)
@@ -735,7 +735,7 @@
 
   <Group>
     <GroupName>HalApp</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -775,7 +775,7 @@
 
   <Group>
     <GroupName>HalBt</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -795,7 +795,7 @@
 
   <Group>
     <GroupName>HalCommon</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -915,7 +915,7 @@
 
   <Group>
     <GroupName>HalIFlash</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -935,7 +935,7 @@
 
   <Group>
     <GroupName>HalInt</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
Index: make/YC3121_hal.uvprojx
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/make/YC3121_hal.uvprojx	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/make/YC3121_hal.uvprojx	(working copy)
@@ -653,7 +653,7 @@
                   <RVCTZI>0</RVCTZI>
                   <RVCTOtherData>0</RVCTOtherData>
                   <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>0</IncludeInBuild>
+                  <IncludeInBuild>1</IncludeInBuild>
                   <AlwaysBuild>2</AlwaysBuild>
                   <GenerateAssemblyFile>2</GenerateAssemblyFile>
                   <AssembleAssemblyFile>2</AssembleAssemblyFile>
Index: src/HalApp/main.c
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/src/HalApp/main.c	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/src/HalApp/main.c	(working copy)
@@ -71,37 +71,25 @@
 	SYSCTRL_AHBPeriphClockCmd(SYSCTRL_AHBPeriph_UART,ENABLE);
 	NVIC_Configuration();
 	printf_uart_init(UART0);
-	//testUart();
-  //halUsbInit(0);
-	//testTrng();	
-	testRtc();
+	MyPrintf("-------< YC3121_HAL_V0.028>------ \r\n");
+	MyPrintf("\r\nData:%s-%s\r\n",__DATE__,__TIME__);
+	//testCommon();
+	//testTrng();
+	//testIFlash();
+	//testPwm();
+	//testSpi();
 	//testEncrypt();
-	while (1)
-	{
-		//MyPrintf("-------< YC3121_HAL_V0.028>------ \n");
-	//	MyPrintf("\r\nData:%s-%s",__DATE__,__TIME__);
-	//	delay_ms(500);
-	}
-	//while (1)
-	//check_power_key();
-
-    //testCommon();
-    //testTrng();
-    //testIFlash();
-    //testPwm();
-    //testSpi();
-    //testEncrypt();
-    //testGpio();
-    //testMag();
-    //testAdc();
-    //testNfc();
-    //testSecurity_jhl();
-    //testICC();
-    //kbInit();
-	//testBt_jhl();
-    //testSleep();
-    //testUsb();
-    while (1);
+	//testGpio();
+	//testMag();
+	//testAdc();
+	//testNfc();
+	//testSecurity_jhl();
+	//testICC();
+	//kbInit();
+	testBt_jhl();
+	//testSleep();
+	//testUsb();
+	while (1);
 }
 #endif
 
Index: src/HalBt/HalBt.c
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/src/HalBt/HalBt.c	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/src/HalBt/HalBt.c	(working copy)
@@ -14,6 +14,7 @@
 #include "yc_bt.h"
 #include "..\core\yc3121.h"
 #include "halIFlash.h"
+#include "yc_qspi.h"
 
 #define HAL_MAX_NAME_LENGTH	    29
 #define HAL_MAX_PIN_LENGTH		16
@@ -25,10 +26,12 @@
 #define HAL_MAX_BLE_DATA_LENGTH	180
 #define HAL_BLE_DATA_HANDLE		0x2A
 
+#define BT_STATUS_CONNECT 1
+
 u8 BT_Wake = 0;
 u8 BtDataBuff[MAX_BLUETOOTH_DATA_LEN+1] = {0x00};
 
-static T_BT_CALL_BACK_FUNC tBtCallBackFunc; // 定义函数指针结构体
+//static T_BT_CALL_BACK_FUNC tBtCallBackFunc; // 定义函数指针结构体
 
 
 /*******************************************************************************
@@ -41,11 +44,11 @@
 --------------------------------------------------------------------------------
 修改信息: 2019.12.17    jqdeng    创建
 *******************************************************************************/
-static void btCallBackFuncStructInit(T_BT_CALL_BACK_FUNC *ptBtCallBackFunc)
-{
-    ptBtCallBackFunc->pfnBtPairingDataGet = NULL;
-    ptBtCallBackFunc->pfnBtPairingDataSet = NULL;
-}
+//static void btCallBackFuncStructInit(T_BT_CALL_BACK_FUNC *ptBtCallBackFunc)
+//{
+//    ptBtCallBackFunc->pfnBtPairingDataGet = NULL;
+//    ptBtCallBackFunc->pfnBtPairingDataSet = NULL;
+//}
 
 
 /*******************************************************************************
@@ -175,41 +178,41 @@
 --------------------------------------------------------------------------------
 修改信息: 2019.11.29    jqdeng    创建
 *******************************************************************************/
-s32 btSaveNvramDataInFlash(u8 *pucNvram, u16 unLen)
-{
-    u8 ucTempBuff[NDLen] = {0};
-    u8 ucCnt = 0;
-
-    if (unLen > NDLen)
-    {
-        return HAL_ERROR;
-    }
-
-#if 1
-    if (NULL != tBtCallBackFunc.pfnBtPairingDataSet)
-    {
-        tBtCallBackFunc.pfnBtPairingDataSet(pucNvram, unLen);
-    }
-#else
-    ucCnt = 3;
-    do
-    {
-        halIFlashRead(BT_NVRAM_DATA_ADDR, ucTempBuff, unLen);
-        if (memcmp(ucTempBuff, pucNvram, unLen) == 0)
-        {
-            break;
-        }
-        halIFlashWrite(BT_NVRAM_DATA_ADDR, pucNvram, unLen);
-        ucCnt--;
-    } while(ucCnt);
-
-    if (0 == ucCnt)
-    {
-        return HAL_ERROR;
-    }
-#endif
-    return HAL_OK;
-}
+//s32 btSaveNvramDataInFlash(u8 *pucNvram, u16 unLen)
+//{
+//    u8 ucTempBuff[NDLen] = {0};
+//    u8 ucCnt = 0;
+
+//    if (unLen > NDLen)
+//    {
+//        return HAL_ERROR;
+//    }
+
+//#if 1
+//    if (NULL != tBtCallBackFunc.pfnBtPairingDataSet)
+//    {
+//        tBtCallBackFunc.pfnBtPairingDataSet(pucNvram, unLen);
+//    }
+//#else
+//    ucCnt = 3;
+//    do
+//    {
+//        halIFlashRead(BT_NVRAM_DATA_ADDR, ucTempBuff, unLen);
+//        if (memcmp(ucTempBuff, pucNvram, unLen) == 0)
+//        {
+//            break;
+//        }
+//        halIFlashWrite(BT_NVRAM_DATA_ADDR, pucNvram, unLen);
+//        ucCnt--;
+//    } while(ucCnt);
+
+//    if (0 == ucCnt)
+//    {
+//        return HAL_ERROR;
+//    }
+//#endif
+//    return HAL_OK;
+//}
 
 /*******************************************************************************
 函数功能: 从flash读取配对数据
@@ -222,19 +225,19 @@
 --------------------------------------------------------------------------------
 修改信息: 2019.11.29    jqdeng    创建
 *******************************************************************************/
-s32 btGetNvramDataFromFlash(u8 *pucNvram, u16 unLen)
-{
-#if 1
-    if (NULL != tBtCallBackFunc.pfnBtPairingDataGet)
-    {
-        tBtCallBackFunc.pfnBtPairingDataGet(pucNvram, unLen);
-    }
-#else
-    halIFlashRead(BT_NVRAM_DATA_ADDR, pucNvram, unLen);
-#endif
+//s32 btGetNvramDataFromFlash(u8 *pucNvram, u16 unLen)
+//{
+//#if 1
+//    if (NULL != tBtCallBackFunc.pfnBtPairingDataGet)
+//    {
+//        tBtCallBackFunc.pfnBtPairingDataGet(pucNvram, unLen);
+//    }
+//#else
+//    halIFlashRead(BT_NVRAM_DATA_ADDR, pucNvram, unLen);
+//#endif
 
-    return HAL_OK;
-}
+//    return HAL_OK;
+//}
 
 
 /*******************************************************************************
@@ -252,11 +255,10 @@
 {
 	if (BT_Wake == 0)
 	{
-        btCallBackFuncStructInit(&tBtCallBackFunc);
-		BT_Init();
+		//btCallBackFuncStructInit(&tBtCallBackFunc);
+				BT_Init();
         enable_intr(BT_IRQn);
-    }
-
+   }
 	return HAL_OK;
 }
 
@@ -296,9 +298,7 @@
 {
 	u8 cdevNameLen=0,cPinLen = 0;
 	s8 *TempPoint;
-
-	MyPrintf("name length is %d\nPin length is %d\n",cdevNameLen,cPinLen);
-
+	MyPrintf("name is:%s\r\nPin is:%s\r\n",pcdevName,pcPin);
 	TempPoint=pcdevName;
 	while(*TempPoint != 00)
 	{
@@ -316,17 +316,11 @@
 		if(cPinLen >HAL_MAX_PIN_LENGTH)
 			return HAL_ERROR;
 	}
-
 	MyPrintf("name length is %d\nPin length is %d\n",cdevNameLen,cPinLen);
-
-	if(BT_SetBleName((u8*)pcdevName,cdevNameLen)==FALSE)
-		return HAL_ERROR;
-
+	if(BT_SetBleName((u8*)pcdevName,cdevNameLen)==FALSE)	return HAL_ERROR;
 	MyPrintf("SetBleName_suc ble name:%s\n",pcdevName);
 
-	if(BT_SetBtName((u8*)pcdevName,cdevNameLen)==FALSE)
-		return HAL_ERROR;
-
+	if(BT_SetBtName((u8*)pcdevName,cdevNameLen)==FALSE)	return HAL_ERROR;
 	MyPrintf("SetBtName_suc bt name:%s\n",pcdevName);
 
 	if(BT_SetParingMode(0)==FALSE)
@@ -414,7 +408,7 @@
 *******************************************************************************/
 s32 halBtGetStatus(u8 *pucStatus)
 {
-	s8 BtStatus = Bt_GetBtStatus();
+	u8 BtStatus = Bt_GetBtStatus();
 	if(BtStatus == 0x80)
 	{
 		//MyPrintf("Get Bt Status error\n");
@@ -469,7 +463,7 @@
 *******************************************************************************/
 s32 halBtDisconnect(void)
 {
-	s8 BtStatus = Bt_GetBtStatus();
+	u8 BtStatus = Bt_GetBtStatus();
 	if(BtStatus == 0x80)
 	{
 		MyPrintf("Get Bt Status error\n");
@@ -511,7 +505,7 @@
 *******************************************************************************/
 s32 halBtSendData(u8 *pucSendBuf, u32 uiSendLen)
 {
-	s8 BtStatus = Bt_GetBtStatus();
+	u8 BtStatus = Bt_GetBtStatus();
 	s8 DataLen = 0;
 
 	if(uiSendLen==0)
@@ -701,24 +695,38 @@
 --------------------------------------------------------------------------------
 修改信息: 2019.12.17    jqdeng    创建
 *******************************************************************************/
-void halBtRegistFun(T_BT_CALL_BACK_FUNC *ptBtCallBackFunc)
-{
-    tBtCallBackFunc.pfnBtPairingDataGet = ptBtCallBackFunc->pfnBtPairingDataGet;
-    tBtCallBackFunc.pfnBtPairingDataSet = ptBtCallBackFunc->pfnBtPairingDataSet;
-}
+//void halBtRegistFun(T_BT_CALL_BACK_FUNC *ptBtCallBackFunc)
+//{
+//    tBtCallBackFunc.pfnBtPairingDataGet = ptBtCallBackFunc->pfnBtPairingDataGet;
+//    tBtCallBackFunc.pfnBtPairingDataSet = ptBtCallBackFunc->pfnBtPairingDataSet;
+//}
 
 //##############################################################################
 //############################################################## 测试函数
 
+static uint8_t hex_lookup[16] = { '0', '1', '2', '3', '4', '5', '6', '7','8','9', 'a', 'b', 'c', 'd', 'e', 'f' };
+static void array2hex(uint8_t* in, int inlen, uint8_t* out)
+{
+	int i;
+	for (i = 0; i < inlen; i++)
+	{
+		out[2 * i] = hex_lookup[in[inlen-1-i] >> 4];
+		out[2 * i + 1] = hex_lookup[in[inlen-1-i] & 0x0f];
+	}
+}
+	
 
 void testBt_jhl(void)
 {
     s32 iRet = 0;
     u8 ucBtStatus = 0;
     u8 ucDataBuff[256] = {0};
-
-    halPrintf("<test bluetooth start>\n");
-
+		s8 bt_name[15] = "YC3121bt";
+		s8 bt_addr[6] =  {0x00,0x00,0x00,0x33,0x22,0x10};
+		u8 chip_id[6]={0};
+		s8 temp_handle;
+    //halPrintf("<test bluetooth start>\n");
+		 MyPrintf("<test bluetooth start>\n");
 #if 0
     memset(ucDataBuff, 0x00, sizeof(ucDataBuff));
     btGetNvramDataFromFlash(ucDataBuff, NDLen);
@@ -735,30 +743,38 @@
 
 #if 1
     iRet = halBtOpen();
-    halPrintf("halBtOpen ret:%d\n", iRet);
-
-    iRet = halBtSetNamePin("yc3121-jqdeng", "1234");
-    halPrintf("halBtSetNamePin ret:%d\n", iRet);
-
-    iRet = halBtSetMac("\x01\x02\x03\xA1\xA2\xA3");
-    halPrintf("halBtSetMac ret:%d\n", iRet);
-
+   // halPrintf("halBtOpen ret:%d\n", iRet);
+		MyPrintf("halBtOpen ret:%d\n", iRet);
+    halGetMcuID(chip_id);		//// 读取芯片ID  十进制
+		array2hex(chip_id,3,(u8*)bt_name+8);			// 将芯片ID转成十六进制
+		bt_name[14]='\0';
+		memcpy(bt_addr,chip_id,3);		// 将前3个id字节复制到bt地址
+		
+		iRet = halBtSetMac((u8*)bt_addr);
+    //halPrintf("halBtSetMac ret:%d\n", iRet);
+		MyPrintf("halBtSetMac ret:%d\n", iRet);
+		
+		iRet = halBtSetNamePin(bt_name, "1234");
+    //halPrintf("halBtSetNamePin ret:%d\n", iRet);
+		MyPrintf("halBtSetNamePin ret:%d\n", iRet);
+		
     // 测试收发
     while (1)
     {
-        BT_Progress();
+        halBtProc();
         iRet = halBtGetStatus(&ucBtStatus);
         if (BT_STATUS_CONNECT == ucBtStatus)
         {
             iRet = halBtRecvData(ucDataBuff, 255);
             if (iRet > 0)
             {
-                halPrintf("halBtRecvData : %d\n", iRet);
-
+                //halPrintf("halBtRecvData : %d\n", iRet);
+								MyPrintf("halBtRecvData : %d\n", iRet);
                 if ((0x02 == iRet) && (memcmp(ucDataBuff, "\x00\x02", 2) == 0))
                 {
                     iRet = halBtDisconnect();
-                    halPrintf("halBtDisconnect ret: %d\n", iRet);
+                    //halPrintf("halBtDisconnect ret: %d\n", iRet);
+										MyPrintf("halBtDisconnect ret: %d\n", iRet);
                 }
                 else
                 {
Index: src/HalInt/halInt.c
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/src/HalInt/halInt.c	(revision 747)
+++ /YC3121_SDK/fw/hal/jinghongling/src/HalInt/halInt.c	(working copy)
@@ -140,8 +140,8 @@
 
 void BT_IRQHandler(void)
 {
-    halPrintf("BT_IRQHandler\n");
-    //btIntIsr();
+    //halPrintf("BT_IRQHandler\n");
+    btIntIsr();
 }
 
 
