Index: user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BNEP/user/main.c	(revision 723)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BNEP/user/main.c	(working copy)
@@ -30,12 +30,12 @@
 #include "yc_qspi.h"
 #include "yc_exti.h"
 #include "yc_ipc.h"
+#include "board_config.h"
 
 
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-#define uartBaud 115200
 #define IPC_UART UART0
 //#define UART_TO_IPC
 
@@ -77,8 +77,6 @@
 	
 //write flash 
 uint8_t   ReserveNV(uint8_t* nvram);
-uint8_t   Get_menue(void);
-//void UART0_IRQHandler(void);
 extern tick SystickCount;
 #ifdef UART_TO_IPC
 HCI_TypeDef HCI_Tx;
@@ -158,7 +156,7 @@
 	uint8_t dns_data[]= "www.baidu.com";
 	uint8_t phone_mac_addr[22];
 	uint8_t tcp_ip_addr[7]={0x00,0x8b,0xe0,0x38,0x57,0x30,0x39};//139.224.56.87:12345
-	uint8_t bt_addr[6] =  {0x00,0x00,0x00,0x33,0x22,0x11};
+	uint8_t bt_addr[6] =  {0x00,0x00,0x00,0x33,0x22,0x10};//The lowest bit of the highest byte of a BNEP device MAC address must be 0
 	uint8_t chip_id[6]={0};
 	uint8_t tmpCmd;
 	unsigned char newDomainString[]={0x00};
@@ -420,8 +418,8 @@
 	UART_InitTypeDef UART_InitStruct;
 
 	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(GPIOA, GPIO_Pin_1, UART0_TXD);
-	GPIO_Config(GPIOA, GPIO_Pin_0, UART0_RXD);
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
 
 	/* USARTx configured as follow:
   - BaudRate = 115200 baud  
@@ -431,7 +429,11 @@
   - Hardware flow control disabled (RTS and CTS signals)
   - Receive and transmit enabled
   */
-	UART_InitStruct.BaudRate = uartBaud;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	#ifdef UART_TO_IPC
+	UART_InitStruct.BaudRate = 115200;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	#else
+	UART_InitStruct.BaudRate = UARTBAUD;
+	#endif
 	UART_InitStruct.DataBits = Databits_8b;
 	UART_InitStruct.StopBits = StopBits_1;
 	UART_InitStruct.Parity = Parity_None;
@@ -439,13 +441,6 @@
 	UART_InitStruct.Mode = Mode_duplex;
 	
 	UART_Init(UART0, &UART_InitStruct);
-	#ifdef UART_TO_IPC
-	GPIO_Config(GPIOA, GPIO_Pin_14, UART1_TXD);
-	GPIO_Config(GPIOA, GPIO_Pin_15, UART1_RXD);
-	UART_Init(UART1, &UART_InitStruct);
-	#endif
-	
-	
 }
 
 
@@ -454,8 +449,16 @@
   * @param  None
   * @retval None
   */
-
-
+#define NAME_OFFSET_INDEX			0
+#define NAME_LEN_INDEX				1
+#define NAME_START_INDEX			2
+#define NAME_MAC_INDEX				16
+#define NAME_MAC_LEN				6
+#define NAME_LINKKEY_INDEX			22
+#define NAME_LINKKEY_LEN			16
+#define MAX_SUBPACKAGE_NAME_LEN		14
+#define MAX_BT_MASTER_NAME_LEN		(MAX_SUBPACKAGE_NAME_LEN*4+1)
+uint8_t bt_master_name[MAX_BT_MASTER_NAME_LEN];
 void BT_Progress()
 {	
 	switch(BT_GetEventOpcode())
@@ -875,6 +878,43 @@
 			}
 		break;
 			
+		case PAIRING_STATE:
+			{
+				uint8_t PairingData[MAX_BLUETOOTH_DATA_LEN];
+				int PairingDataLen=0;
+				uint16_t pairing_status=0;
+				PairingDataLen=BT_ReadBTData(PairingData);
+				if(PairingDataLen>0)
+				{
+					pairing_status |=PairingData[0];
+					pairing_status |=(PairingData[1]<<8);
+					switch(pairing_status)
+					{
+						case 0x0001:
+							MyPrintf("BT Pairing Success\r\n");
+						break;
+						
+						case 0x0101:
+							MyPrintf("BT Pairing fail\r\n");
+						break;
+						
+						case 0x0080:
+							MyPrintf("BLE Pairing Success\r\n");
+						break;
+						
+						case 0x0180:
+							MyPrintf("BLE Pairing fail\r\n");
+						break;
+						
+						default:
+							MyPrintf("unknown pairing_status[%04x]\r\n",pairing_status);
+						break;
+					}
+				}
+				else	MyPrintf("read PAIRING_STATE error");
+			}
+		break;
+			
 		case BT_NAME:
 			{
 				uint8_t btName[MAX_BLUETOOTH_DATA_LEN];
@@ -882,14 +922,34 @@
 				btNameLen=BT_ReadBTData(btName);
 				if(btNameLen>0)
 				{
-					btName[btName[0]+btName[1]]=0;
-					MyPrintf("receive bt master name:%s\n",btName[btName[0]]);
-					MyPrintf("mac:");
-					for(int i=0;i<6;i++)	MyPrintf("%02x ",btName[16+i]);
-					MyPrintf("\r\n");
-					MyPrintf("link key:");
-					for(int i=0;i<16;i++)	MyPrintf("%02x ",btName[22+i]);
-					MyPrintf("\r\n");
+					//bt master name join
+					if((btName[NAME_OFFSET_INDEX]+MAX_SUBPACKAGE_NAME_LEN)<MAX_BT_MASTER_NAME_LEN)
+					{
+						memcpy(bt_master_name+btName[NAME_OFFSET_INDEX],btName+NAME_START_INDEX,MAX_SUBPACKAGE_NAME_LEN);
+						if((btName[NAME_OFFSET_INDEX]+MAX_SUBPACKAGE_NAME_LEN)>=btName[NAME_LEN_INDEX])
+						{
+							bt_master_name[btName[NAME_LEN_INDEX]]=0;
+							MyPrintf("receive bt master name:%s\n",bt_master_name);
+							MyPrintf("mac:");
+							for(int i=0;i<NAME_MAC_LEN;i++)	MyPrintf("%02x ",btName[NAME_MAC_INDEX+i]);
+							MyPrintf("\r\n");
+							MyPrintf("link key:");
+							for(int i=0;i<NAME_LINKKEY_LEN;i++)	MyPrintf("%02x ",btName[NAME_LINKKEY_INDEX+i]);
+							MyPrintf("\r\n");
+						}
+					}
+					else
+					{
+						bt_master_name[MAX_BT_MASTER_NAME_LEN-1]=0;
+						MyPrintf("bt master name len[%d]>MAX_BT_MASTER_NAME_LEN[%d]\r\n",btName[NAME_LEN_INDEX],MAX_BT_MASTER_NAME_LEN-1);
+						MyPrintf("receive bt master name:%s...\n",bt_master_name);
+						MyPrintf("mac:");
+						for(int i=0;i<NAME_MAC_LEN;i++)	MyPrintf("%02x ",btName[NAME_MAC_INDEX+i]);
+						MyPrintf("\r\n");
+						MyPrintf("link key:");
+						for(int i=0;i<NAME_LINKKEY_LEN;i++)	MyPrintf("%02x ",btName[NAME_LINKKEY_INDEX+i]);
+						MyPrintf("\r\n");
+					}
 				}
 				else	MyPrintf("read bt master name error");
 			}
@@ -902,7 +962,7 @@
 
 uint8_t   ReserveNV(uint8_t* nvram)
 {
-	MyPrintf("new nvram data,updata to flash ");
+	MyPrintf("new nvram data,updata to flash\r\n");
 	qspi_flash_sectorerase(IFLASH_NVRAM_ADDR);
 	return qspi_flash_write(IFLASH_NVRAM_ADDR,nvram,NVRAM_LEN);
 }
