Index: BlueTooth/BT&BLE/prj/MDK/Objects/YC3121_Keil.axf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: BlueTooth/BT&BLE/prj/MDK/Objects/YC3121_Keil.axf
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvoptx	(revision 570)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -113,7 +113,7 @@
         <tDllPa></tDllPa>
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
-        <tIfile></tIfile>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
@@ -196,7 +196,7 @@
 
   <Group>
     <GroupName>core</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -207,7 +207,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\core\misc.c</PathWithFileName>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
       <FilenameWithoutPath>misc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -216,23 +216,11 @@
       <GroupNumber>1</GroupNumber>
       <FileNumber>2</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\core\system.c</PathWithFileName>
-      <FilenameWithoutPath>system.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\core\rom_main.c</PathWithFileName>
-      <FilenameWithoutPath>rom_main.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -246,7 +234,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
+      <FileNumber>3</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -258,7 +246,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>5</FileNumber>
+      <FileNumber>4</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -278,24 +266,36 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
+      <FileNumber>5</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_gpio.c</PathWithFileName>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
       <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
       <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_bt.c</PathWithFileName>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_bt.c</PathWithFileName>
       <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -307,7 +307,7 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_systick.c</PathWithFileName>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
       <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -319,8 +319,8 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_ipc.c</PathWithFileName>
-      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_qspi.c</PathWithFileName>
+      <FilenameWithoutPath>yc_qspi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -331,8 +331,8 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_uart.c</PathWithFileName>
-      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -343,7 +343,19 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_timer.c</PathWithFileName>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
       <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
@@ -358,7 +370,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -370,7 +382,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
Index: BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvprojx	(revision 570)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -184,7 +184,6 @@
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
@@ -338,7 +337,7 @@
               <MiscControls></MiscControls>
               <Define>__USEKEILCOMPILE__</Define>
               <Undefine></Undefine>
-              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\..\YC3121_SDK\fw\core;..\..\..\..\..\..\YC3121_SDK\fw\sdk</IncludePath>
+              <IncludePath>..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\core;..\..\user</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -385,17 +384,12 @@
             <File>
               <FileName>misc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\core\misc.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
             </File>
             <File>
               <FileName>system.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\core\system.c</FilePath>
-            </File>
-            <File>
-              <FileName>rom_main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\core\rom_main.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
             </File>
           </Files>
         </Group>
@@ -420,32 +414,42 @@
             <File>
               <FileName>yc_gpio.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_gpio.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
             </File>
             <File>
               <FileName>yc_bt.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_bt.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_bt.c</FilePath>
             </File>
             <File>
               <FileName>yc_systick.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_systick.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_qspi.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_qspi.c</FilePath>
             </File>
             <File>
               <FileName>yc_ipc.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_ipc.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
             </File>
             <File>
-              <FileName>yc_uart.c</FileName>
+              <FileName>yc_otp.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_uart.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
             </File>
             <File>
               <FileName>yc_timer.c</FileName>
               <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\..\YC3121_SDK\fw\sdk\yc_timer.c</FilePath>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
             </File>
           </Files>
         </Group>
Index: BlueTooth/BT&BLE/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/user/main.c	(revision 570)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT&BLE/user/main.c	(working copy)
@@ -1,10 +1,10 @@
 /**
   ******************************************************************************
-  * @file    3121Demo\ModuleDemo\UART\UART_TX_Sendbuf\user\main.c 
+  * @file    3121Demo\ModuleDemo\BlueTooth\BT&BLE\user\main.c
   * @author  Yichip Application Team
   * @version V1.0.0
-  * @date    15-July-2019
-  * @brief   UART TX SendBuf test program.
+  * @date    18-Feb-2020
+  * @brief   BT&BLE test program.
   ******************************************************************************
   * @attention
   *
@@ -25,19 +25,20 @@
 #include "yc3121.h"
 #include "yc_gpio.h"
 #include "yc_uart.h"
-//#include "yc_ipc.h"
 #include "yc_bt.h"
 #include "yc_systick.h"
+#include "yc_qspi.h"
+
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
 #define uartBaud 115200
 #define PRINT_UART UART0
+
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 void UART_Configuration(void);
 
-
 /* Private define ------------------------------------------------------------*/
 #define BT_TEST_CMD_SetVisibility	'0'
 #define BT_TEST_CMD_SetNameAndAdr	'1'
@@ -51,12 +52,15 @@
 #define BT_TEST_CMD_BLEDisConnect	'b'
 #define BT_TEST_CMD_BT_GetCreadIT_GIVEN 'c'
 
-
-uint8_t BT_Wake = 0;
 uint8_t bt_addr[6] =  {0x22,0x33,0x88,0x55,0x66,0x66};
-uint8_t ble_addr[6] = {0x95,0x66,0x99,0x33,0x66,0x66};
 uint8_t spp_data[] = {0x064,0x65,0x67,0x68,0x69,0x30,0x40};
 uint8_t ble_data[] = {06,0x00,0x03,0x04,0x05,0x06,0x07,0x08};
+#define IFLASH_NVRAM_ADDR 0x1000000+0x40000
+#define NVRAM_LEN 170//Nvram 长度170bytes,每个设备信息34个字节.
+
+//write flash 
+uint8_t   ReserveNV(uint8_t* nvram);
+
 extern tick SystickCount;;
 void BT_IRQHandler()
 {
@@ -69,12 +73,12 @@
 	BT_CONFIG &= (~(1<<BT_INIT_FLAG));
 }
 
-
-
 void SYSTICK_IRQHandler()
 {
 	SystickCount++;
 }
+
+uint8_t NvramData[MAX_BLUETOOTH_DATA_LEN]={0};
 /**
   * @brief  Main program
   * @param  None
@@ -82,13 +86,12 @@
   */
 int main(void)
 {
-
-	uint8_t blename[] = "Yc3121yyy";
-	uint8_t btname[] =  "Yc3121y2";
+	uint8_t blename[] = "Yc3121BLE";
+	uint8_t btname[] =  "Yc3121BT";
 
 	int UARTCMD = 0;
 	uint8_t getbtstatus = 0;
-	
+	int i = 0;
 	UART_Configuration();
 
 	SysTick_Config(CPU_MHZ/1000);
@@ -96,11 +99,17 @@
 	enable_intr(INTR_BT);
 
 	MyPrintf("bt ble demo\n");
-	if(BT_SetBleName(blename,sizeof(blename))==TRUE) 
+	if(BT_SetBleName(blename,sizeof(blename)-1)==TRUE) 
 		MyPrintf("SetBleName_suc ble name:%s\n",blename);
 	else 
 		MyPrintf("SetBleName_failed\n");
-	if(BT_SetBleAddr(ble_addr) == TRUE) 
+	
+	if(BT_SetBtName(btname,sizeof(btname)-1) == TRUE)//bt与ble名字地址可以设置成一样
+		MyPrintf("SetbtName_suc\n");
+	else 
+		MyPrintf("SetbtName_fail\n");
+	
+	if(BT_SetBleAddr(bt_addr) == TRUE) 
 		MyPrintf("SetBleAddr_suc\n");
 	else 
 		MyPrintf("SetBleAddr_fail\n"); 
@@ -109,10 +118,31 @@
 		MyPrintf("SetBtAddr_suc\n");
 	else 
 		MyPrintf("SetBtAddr_fail\n");
+	
+	if(BT_SetParingMode(0x03) == TRUE)//设置配对模式为confirmkey
+		MyPrintf("set confirmkey mode success\n");
+	else
+		MyPrintf("set confirmkey mode failed\n");
+	
+	memset(NvramData,0xff,170);
+	qspi_flash_read(IFLASH_NVRAM_ADDR,NvramData,NVRAM_LEN);
+	//nvram 包含5个设备信息
+	
+	i=0;
+	if(BT_SetNVRAM(NvramData) == TRUE)
+	{
+		MyPrintf("set nvram success:\n");
+		while(i<170)
+			MyPrintf("0x%02X ",NvramData[i++]);
+		MyPrintf("\n");
+	}
+	else
+		MyPrintf("set nvram failed\n");
+
 	while (1)
 	{
 		BT_Progress();
-		if(UART_IsRXFIFONotEmpty(PRINT_UART))
+		if(UART_IsRXFIFONotEmpty(PRINT_UART))//通过串口发指令测试蓝牙操作接口
 		{
 			UARTCMD = UART_ReceiveData(PRINT_UART);
 			MyPrintf("recv cmd\n");
@@ -126,7 +156,7 @@
 					case BT_TEST_CMD_SetNameAndAdr: 
 						if(BT_SetBleName(blename,9)==TRUE) MyPrintf("SetBleName_suc\n");
 						else MyPrintf("SetBleName_failed\n");
-						if(BT_SetBleAddr(ble_addr) == TRUE) MyPrintf("SetBleAddr_suc\n");
+						if(BT_SetBleAddr(bt_addr) == TRUE) MyPrintf("SetBleAddr_suc\n");
 						else MyPrintf("SetBleAddr_fail\n"); 
 					
 						if(BT_SetBtAddr(bt_addr) == TRUE)MyPrintf("SetBtAddr_suc\n");
@@ -280,8 +310,10 @@
 						MyPrintf("%02X ",NvramData[i]);
 					}
 					MyPrintf("\n");
+					ReserveNV(NvramData);//将最新的5个设备信息（NVRAM） 写入flash ,
 				}
-				else	MyPrintf("read Nvram data error");
+				else	
+					MyPrintf("read Nvram data error");
 			}
 		break;
 
@@ -292,15 +324,20 @@
 				GkeyDataLen=BT_ReadBTData(GkeyData);
 				if(GkeyDataLen>0)
 				{
-					MyPrintf("receive %dbytes Nvramdata:",GkeyDataLen);
+					MyPrintf("receive %dbytes CONFIRM_GKEY:",GkeyDataLen);
 					for(int i=0;i<GkeyDataLen;i++)
 					{
 						MyPrintf("%02X ",GkeyData[i]);
 					}
 					MyPrintf("\n");
 				}
-				else	MyPrintf("read Nvram data error");
-			}
+				else	MyPrintf("read CONFIRM_GKEY data error");
+			
+				if(BT_ConfirmGkey(0) == TRUE)//BT_ConfirmGkey参数为0则继续配对，1则取消配对。
+					MyPrintf("set confirmkey  success");
+				else
+					MyPrintf("set confirmkey  failed\n");
+		}
 		break;
 
 		case PASSKEY:
@@ -314,7 +351,7 @@
 				PairingDataLen=BT_ReadBTData(PairingData);
 				if(PairingDataLen>0)
 				{
-					MyPrintf("receive %dbytes Nvramdata:",PairingDataLen);
+					MyPrintf("receive %dbytes paring data:",PairingDataLen);
 					for(int i=0;i<PairingDataLen;i++)
 					{
 						MyPrintf("%02X ",PairingData[i]);
@@ -330,15 +367,12 @@
 	}
 }
 
-//void CmdListPrint(void)
-//{
-//	MyPrintf(" BT_TEST_CMD_SetVisibility	'0'\nBT_TEST_CMD_SetNameAndAdr	'1'\nBT_TEST_CMD_SendSPPData		'2'\n	");
-//	MyPrintf(" BT_TEST_CMD_SenBleData		'3'\nBT_TEST_CMD_GetBTStatus		'4'\nBT_TEST_CMD_SetParingMode	'5'\n	");
-//	MyPrintf(" BT_TEST_CMD_SetPincode		'6'\nBT_TEST_CMD_BT_GetVersion	'9'\nBT_TEST_CMD_BTDisConnect	'a'\n	");
-//	MyPrintf(" BT_TEST_CMD_BLEDisConnect	'b'\nBT_TEST_CMD_BT_GetCreadIT_GIVEN 'c'\n	");
-
-//}
-
-
+uint8_t   ReserveNV(uint8_t* nvram)
+{
+	MyPrintf("new nvram data,updata to flash ");
+	qspi_flash_sectorerase(IFLASH_NVRAM_ADDR);
+	return qspi_flash_write(IFLASH_NVRAM_ADDR,nvram,NVRAM_LEN);
+}
 
 /************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
+

