Commit b04094c8 authored by 薛晓虎's avatar 薛晓虎

feat: 添加蓝牙应用逻辑;整理代码

parent 920aec97
......@@ -3,6 +3,8 @@
"protocol_user.h": "c",
"protocol_lib.h": "c",
"protocol_crc16.h": "c",
"gatts_table_creat_demo.h": "c"
"gatts_table_creat_demo.h": "c",
"app_ble_user.h": "c",
"main_user.h": "c"
}
}
\ No newline at end of file
......@@ -7,5 +7,6 @@ idf_component_register(SRCS "gatts_table_creat_demo.c"
"Protocol_User.c"
"MCU_Core_Protocol.c"
"app_Ble_User.c"
"main_user.c"
INCLUDE_DIRS "."
EMBED_TXTFILES ${project_dir}/server_certs/ca_cert.pem)
......@@ -5,6 +5,8 @@
#include "Protocol_User.h"
#include "gatts_table_creat_demo.h"
#include "app_Ble_User.h"
void Uart_ID10_process(void)
{
if(1)
......@@ -24,21 +26,17 @@ void Uart_ID01_process(void)
{
uint8_t ID01[6] = {0x00,0x00,0x00,0x00,0x00,0x00};
if(1/*正在导航*/)
if(Ble_Sts_Ctrl.Navi_Updat)
{
ID01[0] = 0x33;
}
else
{
ID01[0] = 0x35;//或者直接将收到的蓝牙值赋值过来
ID01[0] = Ble_Navi_Data.Navi_Sts;
ID01[1] = Ble_Navi_Data.Navi_Turn;//赋值为蓝牙收到的转向编码值
ID01[2] = Ble_Navi_Data.Navi_Dte[0];
ID01[3] = Ble_Navi_Data.Navi_Dte[1];
ID01[4] = Ble_Navi_Data.Navi_Dte[2];
ID01[5] = Ble_Navi_Data.Navi_Dte[3];
}
ID01[1] = 0x00;//赋值为蓝牙收到的转向编码值
Protocol_uint32_t Ble_distance = 0;
ID01[2] = Ble_distance >> 24 & 0x11;
ID01[3] = Ble_distance >> 16 & 0x11;
ID01[4] = Ble_distance >> 8 & 0x11;
ID01[5] = Ble_distance >> 0 & 0x11;
Protocol_Send(0x01,ID01,6);
}
......@@ -46,7 +44,7 @@ void Uart_ID01_process(void)
void Uart_ID12_process(void)
{
uint8_t ID12[2] = {0x00,0x00};
ID12[1] = ble_status;
ID12[1] = Ble_Sts_Ctrl.Ble_Sts;
Protocol_Send(0x12,ID12,2);
}
......@@ -71,7 +69,7 @@ void Uart_ID21_process(void)//底板给ESP32发
void MCU_T_32(void)
{
printf("MCU_T_32!!\r\n");
// printf("MCU_T_32!!\r\n");
Protocol_Service();
if(ID21_num >= 5)
{
......
......@@ -25,6 +25,7 @@
#include "driver/gpio.h"
#include "MCU_Core_Protocol.h"
#include "Protocol_Lib.h"
#include "app_Ble_User.h"
#define UART_TX_MAX_DEPTH 1024UL //(2 * 1024UL) // 4K
#define UART_RX_MAX_DEPTH (2 * 1024UL) // 4K
......@@ -137,10 +138,10 @@ void Protocol_Send_Service(void)
//memcpy(Uart_Data.data, UsartDataBuf, SendLen);
int i = 0;
for(i = 0;i < SendLen;i++)
printf("data is %x !!!\r\n",UsartDataBuf[i]);
// printf("data is %x !!!\r\n",UsartDataBuf[i]);
sendData(TX_TASK_TAG, (const char*)UsartDataBuf,SendLen);
//UART_Ch1_Send_Multiple_Byte(UsartDataBuf, SendLen);/*ESP32底层*/
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
......@@ -256,10 +257,18 @@ static void Protocol_UartHandle(const Protocol_Data_t *pData)
{
Uart_ID12_process();//TX
}
else if(pData->CmdID == MCU_TO_BLE_INFO )
else if((pData->CmdID & 0x3f) == MCU_TO_BLE_INFO )
{
if((pData->CmdID & 0xC0) == 0X40)
{
if(Wifi_OTA_Request == 0)
{
Wifi_OTA_Request = 1;
}
}
printf("ID21 IS in!!!\r\n");
Uart_ID21_process();//RX
// Uart_ID21_process();//RX
}
else
{
......
......@@ -7,23 +7,34 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "freertos/semphr.h"
#include "MCU_Core_Protocol.h"
#include "Protocol_User.h"
#include "main_user.h"
#define TAG "APP_BLE_USER"
Ble_User_Control_Struct Ble_User_Ctrl;
app_Ble_User_Data_Union BleRecData;
app_Ble_User_Data_Union BleTransData;
app_Ble_Rec_Data_Ctrl_Struct RecCtrl;
void Ble_Connect_Event_Pro(void )
{
Ble_User_Ctrl.Ble_Sts = Ble_Conn;
}
uint8_t Wifi_OTA_Request = 0;
uint8_t ble_key[32] = "1BJ7J8S";
uint8_t ble_uerid[32] = {0};
uint8_t ble_pwd[32] = {0};
uint8_t flavor[4] = {0x33, 0, 0, 0};
void Ble_DisConnect_Event_Pro(void )
{
Ble_User_Ctrl.Ble_Sts = Ble_Idle;
}
SemaphoreHandle_t BleRecSuc_Semaphore;
Ble_User_Control_Struct Ble_Sts_Ctrl;
Ble_Navi_Info_Struct Ble_Navi_Data;
uint8_t tp_Ble_Crc(uint8_t *data, uint32_t len )
......@@ -38,55 +49,88 @@ uint8_t tp_Ble_Crc(uint8_t *data, uint32_t len )
return val;
}
typedef union
void Ble_Clear_Rx_Buffer(void )
{
struct
for(int i = 0; i< sizeof(BleRecData.Data); i++)
{
uint8_t FrameHeader;
uint8_t Instruct;
uint8_t Lenth;
uint8_t Param[252];
}Msg;
uint8_t Data[255];
}app_Ble_User_Data_Rec_Union;
app_Ble_User_Data_Rec_Union BleRec;
app_Ble_User_Data_Rec_Union BleTrans;
BleRecData.Data[i] = 0;
}
}
typedef struct
void Ble_Clear_Tx_Buffer(void )
{
uint32_t RecLen;
uint32_t TotalLen;
uint8_t Sts;
for(int i = 0; i< sizeof(BleTransData.Data); i++)
{
BleTransData.Data[i] = 0;
}
}
uint8_t Receive;
}app_Ble_Rec_Data_Ctrl_Struct;
app_Ble_Rec_Data_Ctrl_Struct RecCtrl;
uint8_t ble_key[32] = "1BJ7J8S";
uint8_t ble_uerid[32] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0x30, 0x31,0x32,0x33,0x34,0x35,0x36,0x00};
uint8_t ble_pwd[32] = {'A','D','E','B','O','N','2','0','2','3','Z', 'H','I','D','O','U'};
uint8_t flavor[4] = {0, 0, 0, 0x33};
/**************************************************************************/
void Clear_Rx_Buffer(void )
{
for(int i = 0; i< sizeof(BleRec.Data); i++)
{
BleRec.Data[i] = 0;
}
}
/**************************************************************************/
uint8_t Ble_Get_User_Info(void )
{
uint8_t i = 0;
for(i = 0; i<32;i++)
{
ble_uerid[i] = i;
ble_pwd[i] = i+64;
for(i = 24; i<32;i++)
{
ble_uerid[i] = 0x30+i-24;
ble_pwd[i] = 0x30+i-24;
}
ble_uerid[0] = 'v';
ble_uerid[1] = 'i';
ble_uerid[2] = 'v';
ble_uerid[3] = 'a';
ble_uerid[4] = 'v';
ble_uerid[5] = 'i';
ble_uerid[6] = 'v';
ble_uerid[7] = 'a';
ble_uerid[8] = 'v';
ble_uerid[9] = 'i';
ble_uerid[10] = 'v';
ble_uerid[11] = 'a';
ble_uerid[12] = 'v';
ble_uerid[13] = 'i';
ble_uerid[14] = 'v';
ble_uerid[15] = 'a';
ble_uerid[16] = 'v';
ble_uerid[17] = 'i';
ble_uerid[18] = 'v';
ble_uerid[19] = 'a';
ble_uerid[20] = 'v';
ble_uerid[21] = 'i';
ble_uerid[22] = 'v';
ble_uerid[23] = 'a';
ble_pwd[0] = 'C';
ble_pwd[1] = 'C';
ble_pwd[2] = 'N';
ble_pwd[3] = 'C';
ble_pwd[4] = 'v';
ble_pwd[5] = 'i';
ble_pwd[6] = 'v';
ble_pwd[7] = 'a';
ble_pwd[8] = 'v';
ble_pwd[9] = 'i';
ble_pwd[10] = 'v';
ble_pwd[11] = 'a';
ble_pwd[12] = 'v';
ble_pwd[13] = 'i';
ble_pwd[14] = 'v';
ble_pwd[15] = 'a';
ble_pwd[16] = 'v';
ble_pwd[17] = 'i';
ble_pwd[18] = 'v';
ble_pwd[19] = 'a';
ble_pwd[20] = 'v';
ble_pwd[21] = 'i';
ble_pwd[22] = 'v';
ble_pwd[23] = 'a';
}
return 1;
}
......@@ -105,7 +149,6 @@ void Get_Ble_Raw_Data(uint8_t *data, uint32_t len)
{
if(RecCtrl.Sts == BleRec_Idle)
{
printf("receive data:");
for(uint16_t i = 0; i< len; i++)
{
......@@ -116,31 +159,33 @@ void Get_Ble_Raw_Data(uint8_t *data, uint32_t len)
printf("\r\n");
RecCtrl.RecLen = 0;
memcpy(( uint8_t * )&BleRec.Data[RecCtrl.RecLen], data, len);
RecCtrl.TotalLen = BleRec.Msg.Lenth +1 ;
memcpy(( uint8_t * )&BleRecData.Data[RecCtrl.RecLen], data, len);
RecCtrl.TotalLen = BleRecData.Msg.Lenth +1 ;
RecCtrl.RecLen += len;
if(RecCtrl.RecLen >= RecCtrl.TotalLen)
{
crc = tp_Ble_Crc(BleRec.Data, RecCtrl.TotalLen - 2);
crc = tp_Ble_Crc(BleRecData.Data, RecCtrl.TotalLen - 2);
printf("receive data:");
for(uint16_t i = 0; i< RecCtrl.TotalLen; i++)
{
printf(" %x ", BleRec.Data[i]);
printf(" %x ", BleRecData.Data[i]);
}
printf("\r\n");
printf("rec crc = %d\r\n", crc);
if((BleRec.Data[RecCtrl.TotalLen - 1] != 0x0A) || (crc != BleRec.Data[RecCtrl.TotalLen - 2]))
if((BleRecData.Data[RecCtrl.TotalLen - 1] != 0x0A) || (crc != BleRecData.Data[RecCtrl.TotalLen - 2]))
{
Clear_Rx_Buffer();
RecCtrl.Sts = Ble_Idle;
Ble_Clear_Rx_Buffer();
RecCtrl.Sts = BleRec_Idle;
}
else
{
RecCtrl.Sts = BleRec_Suc;
xSemaphoreGive(BleRecSuc_Semaphore);
}
}
else
......@@ -157,92 +202,89 @@ void Get_Ble_Raw_Data(uint8_t *data, uint32_t len)
{
if((RecCtrl.RecLen+len) <= RecCtrl.TotalLen)
{
printf("receive data:");
for(uint16_t i = 0; i< len; i++)
{
printf(" %x ", data[i]);
}
printf("\r\n");
printf("\r\n");
memcpy(( uint8_t * )&BleRec.Data[RecCtrl.RecLen], data, len);
memcpy(( uint8_t * )&BleRecData.Data[RecCtrl.RecLen], data, len);
RecCtrl.RecLen += len;
if(RecCtrl.RecLen >= RecCtrl.TotalLen)
{
crc = tp_Ble_Crc(BleRec.Data, RecCtrl.TotalLen - 2);
crc = tp_Ble_Crc(BleRecData.Data, RecCtrl.TotalLen - 2);
printf("receive data:");
for(uint16_t i = 0; i< RecCtrl.TotalLen; i++)
{
printf(" %x ", BleRec.Data[i]);
printf(" %x ", BleRecData.Data[i]);
}
printf("\r\n");
printf("rec crc = %d\r\n", crc);
if((BleRec.Data[RecCtrl.TotalLen - 1] != 0x0A) || (crc != BleRec.Data[RecCtrl.TotalLen - 2]))
if((BleRecData.Data[RecCtrl.TotalLen - 1] != 0x0A) || (crc != BleRecData.Data[RecCtrl.TotalLen - 2]))
{
Clear_Rx_Buffer();
RecCtrl.Sts = Ble_Idle;
Ble_Clear_Rx_Buffer();
RecCtrl.Sts = BleRec_Idle;
}
else
{
RecCtrl.Sts = BleRec_Suc;
xSemaphoreGive(BleRecSuc_Semaphore);
}
}
}
else
{
//len err
Clear_Rx_Buffer();
RecCtrl.Sts = Ble_Idle;
Ble_Clear_Rx_Buffer();
RecCtrl.Sts = BleRec_Idle;
}
}
}
}
/**************************************************************************/
/**************************************************************************/
void Ble_Msg_Authr_RLY(void )
{
uint8_t total_frame = 0;
uint8_t trans_len = 0;
if(RecCtrl.Sts == BleRec_Suc)
{
if(BleRec.Msg.Instruct == 0x30)
{
int err;
//Authr suc
BleTrans.Msg.FrameHeader = 0x24;
BleTrans.Msg.Instruct = 0x58;
BleTrans.Msg.Lenth = 104;
if((BleTrans.Msg.Lenth+1) % 20 == 0)
BleTransData.Msg.FrameHeader = 0x24;
BleTransData.Msg.Cmd = 0x58;
BleTransData.Msg.Lenth = 104;
if((BleTransData.Msg.Lenth+1) % 20 == 0)
{
total_frame = (BleTrans.Msg.Lenth+1) / 20;
total_frame = (BleTransData.Msg.Lenth+1) / 20;
}
else
{
total_frame = (BleTrans.Msg.Lenth+1) / 20 + 1;
total_frame = (BleTransData.Msg.Lenth+1) / 20 + 1;
}
if(Ble_Get_User_Info())
{
memcpy(( uint8_t * )&BleTrans.Msg.Param[0], ble_key, 32);
memcpy(( uint8_t * )&BleTrans.Msg.Param[32], ble_uerid, 32);
memcpy(( uint8_t * )&BleTrans.Msg.Param[64], ble_pwd, 32);
memcpy(( uint8_t * )&BleTrans.Msg.Param[96], flavor, 4);
memcpy(( uint8_t * )&BleTransData.Msg.Param[0], ble_key, 32);
memcpy(( uint8_t * )&BleTransData.Msg.Param[32], ble_uerid, 32);
memcpy(( uint8_t * )&BleTransData.Msg.Param[64], ble_pwd, 32);
memcpy(( uint8_t * )&BleTransData.Msg.Param[96], flavor, 4);
}
BleTrans.Data[BleTrans.Msg.Lenth - 1] = tp_Ble_Crc(BleTrans.Data, BleTrans.Msg.Lenth - 1);
BleTrans.Data[BleTrans.Msg.Lenth] = 0x0A;
BleTransData.Data[BleTransData.Msg.Lenth - 1] = tp_Ble_Crc(BleTransData.Data, BleTransData.Msg.Lenth - 1);
BleTransData.Data[BleTransData.Msg.Lenth] = 0x0A;
for(uint8_t i = 0; i < total_frame; i++)
{
if(((BleTrans.Msg.Lenth+1) - 20*i) >= 20)
if(((BleTransData.Msg.Lenth+1) - 20*i) >= 20)
{
trans_len = 20;
}
else
{
trans_len = (BleTrans.Msg.Lenth+1) - 20*i;
trans_len = (BleTransData.Msg.Lenth+1) - 20*i;
}
printf("trans_len = %d\r\n", trans_len);
......@@ -250,120 +292,206 @@ void Get_Ble_Raw_Data(uint8_t *data, uint32_t len)
printf("trans data:");
for(uint16_t j = 0; j< trans_len; j++)
{
printf(" %x ", BleTrans.Data[j + i*20]);
printf(" %x ", BleTransData.Data[j + i*20]);
}
printf("\r\n");
printf("\r\n");
bsp_Ble_Gatts_Send_Indicate( trans_len, &BleTrans.Data[i*20]);
err = bsp_Ble_Gatts_Send_Indicate( trans_len, &BleTransData.Data[i*20]);
// vTaskDelay(1);
}
}
void Ble_MsgRec_Authr_Result_Analysis(void )
{
//Authr result
if(BleRecData.Msg.Param[0] == 0)
{
Ble_Sts_Ctrl.Ble_Sts = Ble_Authr;
Ble_Sts_Ctrl.Request_Navi = 1;
}
}
}
void Ble_Msg_RequestNavi_RLY(void )
{
uint8_t total_frame = 0;
uint8_t trans_len = 0;
if(Ble_Sts_Ctrl.Request_Navi)
{
BleTransData.Msg.FrameHeader = 0x24;
BleTransData.Msg.Cmd = 0x14;
BleTransData.Msg.Lenth = 9;
if((BleTransData.Msg.Lenth+1) % 20 == 0)
{
total_frame = (BleTransData.Msg.Lenth+1) / 20;
}
else
{
}
RecCtrl.Sts = BleRec_Idle;
total_frame = (BleTransData.Msg.Lenth+1) / 20 + 1;
}
BleTransData.Msg.Param[0] = 1;
BleTransData.Msg.Param[1] = 80;
BleTransData.Msg.Param[2] = 0;
BleTransData.Msg.Param[3] = 3;
BleTransData.Msg.Param[4] = 0;
BleTransData.Data[BleTransData.Msg.Lenth - 1] = tp_Ble_Crc(BleTransData.Data, BleTransData.Msg.Lenth - 1);
BleTransData.Data[BleTransData.Msg.Lenth] = 0x0A;
for(uint8_t i = 0; i < total_frame; i++)
{
if(((BleTransData.Msg.Lenth+1) - 20*i) >= 20)
{
trans_len = 20;
}
else
{
trans_len = (BleTransData.Msg.Lenth+1) - 20*i;
}
printf("trans_len = %d\r\n", trans_len);
printf("trans data:");
for(uint16_t j = 0; j< trans_len; j++)
{
printf(" %x ", BleTransData.Data[j + i*20]);
}
printf("\r\n");
printf("\r\n");
bsp_Ble_Gatts_Send_Indicate( trans_len, &BleTransData.Data[i*20]);
// vTaskDelay(1);
}
Ble_Sts_Ctrl.Request_Navi = 0;
}
}
void Ble_MsgRec_Navi_Analysis(void )
{
//Navi data
Ble_Navi_Data.Navi_Sts = BleRecData.Msg.Param[0];
Ble_Navi_Data.Navi_Turn = BleRecData.Msg.Param[1];
Ble_Navi_Data.Navi_Dte[0] = BleRecData.Msg.Param[2];
Ble_Navi_Data.Navi_Dte[1] = BleRecData.Msg.Param[3];
Ble_Navi_Data.Navi_Dte[2] = BleRecData.Msg.Param[4];
Ble_Navi_Data.Navi_Dte[3] = BleRecData.Msg.Param[5];
Ble_Sts_Ctrl.Navi_Updat = 1;
}
void test_test(void )
{
uint8_t total_frame = 0;
uint8_t trans_len = 0;
vTaskDelay(5000);
if(RecCtrl.Sts == BleRec_Idle)
void Ble_Rec_Msg_Analysis_Process(void )
{
if (pdTRUE == xSemaphoreTake(BleRecSuc_Semaphore, portMAX_DELAY))
{
}
else
if(RecCtrl.Sts == BleRec_Suc)
{
return;
if(BleRecData.Msg.Cmd == EC_BTP_P2C_CLIENT_INFO)
{
Ble_Msg_Authr_RLY();
}
BleTrans.Msg.FrameHeader = 0x24;
BleTrans.Msg.Instruct = 0x14;
BleTrans.Msg.Lenth = 9;
if((BleTrans.Msg.Lenth+1) % 20 == 0)
else if(BleRecData.Msg.Cmd == EC_BTP_P2C_CHECK_AUTH_RESULT)
{
total_frame = (BleTrans.Msg.Lenth+1) / 20;
Ble_MsgRec_Authr_Result_Analysis();
Ble_Msg_RequestNavi_RLY();
}
else
else if(BleRecData.Msg.Cmd == EC_BTP_P2C_HUD)
{
total_frame = (BleTrans.Msg.Lenth+1) / 20 + 1;
Ble_MsgRec_Navi_Analysis();
}
BleTrans.Msg.Param[0] = 1;
BleTrans.Msg.Param[1] = 80;
BleTrans.Msg.Param[2] = 0;
BleTrans.Msg.Param[3] = 3;
BleTrans.Msg.Param[4] = 0;
// if(Ble_Get_User_Info())
// {
// memcpy(( uint8_t * )&BleTrans.Msg.Param[0], ble_key, 32);
// memcpy(( uint8_t * )&BleTrans.Msg.Param[32], ble_uerid, 32);
// memcpy(( uint8_t * )&BleTrans.Msg.Param[64], ble_pwd, 32);
// memcpy(( uint8_t * )&BleTrans.Msg.Param[96], flavor, 4);
// }
BleTrans.Data[BleTrans.Msg.Lenth - 1] = tp_Ble_Crc(BleTrans.Data, BleTrans.Msg.Lenth - 1);
BleTrans.Data[BleTrans.Msg.Lenth] = 0x0A;
for(uint8_t i = 0; i < total_frame; i++)
{
if(((BleTrans.Msg.Lenth+1) - 20*i) >= 20)
{
trans_len = 20;
Ble_Clear_Tx_Buffer();
Ble_Clear_Rx_Buffer();
RecCtrl.Sts = BleRec_Idle;
}
else
{
trans_len = (BleTrans.Msg.Lenth+1) - 20*i;
}
printf("trans_len = %d\r\n", trans_len);
}
printf("trans data:");
for(uint16_t j = 0; j< trans_len; j++)
void Ble_Connect_Event_Pro(void )
{
Ble_Sts_Ctrl.Ble_Sts = Ble_Conn;
Ble_Sts_Ctrl.Request_Navi = 0;
Ble_Sts_Ctrl.Navi_Updat = 0;
Ble_Clear_Tx_Buffer();
Ble_Clear_Rx_Buffer();
}
void Ble_DisConnect_Event_Pro(void )
{
Ble_Sts_Ctrl.Ble_Sts = Ble_Idle;
Ble_Sts_Ctrl.Request_Navi = 0;
Ble_Sts_Ctrl.Navi_Updat = 0;
RecCtrl.RecLen = 0;
RecCtrl.TotalLen = 0;
RecCtrl.Sts = BleRec_Idle;
Ble_Navi_Data.Navi_Sts = 0;
Ble_Navi_Data.Navi_Turn = 0;
for(uint8_t i=0; i<sizeof(Ble_Navi_Data.Navi_Dte); i++)
{
printf(" %x ", BleTrans.Data[j + i*20]);
Ble_Navi_Data.Navi_Dte[i] = 0;
}
printf("\r\n");
printf("\r\n");
bsp_Ble_Gatts_Send_Indicate( trans_len, &BleTrans.Data[i*20]);
Ble_Clear_Tx_Buffer();
Ble_Clear_Rx_Buffer();
}
void Ble_User_Task(void *pvParameter)
{
while (1)
{
Ble_Rec_Msg_Analysis_Process();
}
vTaskDelete(NULL);
}
void Ble_User_Init(void )
{
BleRecSuc_Semaphore = xSemaphoreCreateBinary();
Ble_Sts_Ctrl.Ble_Sts = Ble_Idle;
Ble_Sts_Ctrl.Request_Navi = 0;
Ble_Sts_Ctrl.Navi_Updat = 0;
RecCtrl.RecLen = 0;
RecCtrl.TotalLen = 0;
RecCtrl.Sts = BleRec_Idle;
Ble_Navi_Data.Navi_Sts = 0;
Ble_Navi_Data.Navi_Turn = 0;
for(uint8_t i=0; i<sizeof(Ble_Navi_Data.Navi_Dte); i++)
{
Ble_Navi_Data.Navi_Dte[i] = 0;
}
}
Ble_Clear_Tx_Buffer();
Ble_Clear_Rx_Buffer();
xTaskCreatePinnedToCore(Ble_User_Task, "Ble_User", 4096, NULL, 10, NULL, 0);
}
......@@ -16,22 +16,209 @@ typedef enum
{
BleRec_Idle = 0,
BleRec_Start,
BleRec_Suc,
}Ble_Rec_Sts;
typedef struct
{
uint8_t Ble_Sts;
uint8_t Request_Navi;
uint8_t Navi_Updat;
}Ble_User_Control_Struct;
extern Ble_User_Control_Struct Ble_User_Ctrl;
typedef struct
{
uint8_t Navi_Sts;
uint8_t Navi_Turn;
uint8_t Navi_Dte[4];
}Ble_Navi_Info_Struct;
typedef union
{
struct
{
uint8_t FrameHeader;
uint8_t Cmd;
uint8_t Lenth;
uint8_t Param[252];
}Msg;
uint8_t Data[255];
}app_Ble_User_Data_Union;
typedef struct
{
uint32_t RecLen;
uint32_t TotalLen;
uint8_t Sts;
}app_Ble_Rec_Data_Ctrl_Struct;
extern Ble_User_Control_Struct Ble_Sts_Ctrl;
extern Ble_Navi_Info_Struct Ble_Navi_Data;
extern uint8_t Wifi_OTA_Request;
void Get_Ble_Raw_Data(uint8_t *data, uint32_t len);
void test_test(void );
#define EC_BTP_VERSION "1.0.5"
#define EC_BTP_OK 0
#define EC_BTP_ERR_FAIL -1
/** @brief 手机向车机汇报客户端信息
* @reqCmd EC_BTP_P2C_CLIENT_INFO
* @rlyCmd N/A
* @reqData
* {
* phoneType: 0 ///< 数据类型为int, 0是Android,1是IOS。
* phoneID:"zzz", ///< 数据类型为string, 手机ID,可以为IMME或者设备唯一编号,住授权过的手车机端会记机ID。
* }
* @rlyData N/A
*/
#define EC_BTP_P2C_CLIENT_INFO 0x30
/** @brief 车机应答clientinfo
* @reqCmd EC_BTP_C2P_CLIENT_INFO_RLY
* @rlyCmd N/A
* @reqData 字段 字节数 内容
* key 32BYTE 格式:字符串。由卡比特项目经理提供
* uuid 32BYTE 格式:字符串。代表每一块仪表的唯一标识,每个仪表都不同。
* pwd 32BYTE 格式:字符串。默认为空,如需要,在卡比特指导下填写。
* flavor 4BYTE 格式:uint32_t。由卡比特项目经理提供。
*/
#define EC_BTP_C2P_CLIENT_INFO_RLY 0x58
/** @brief 授权结果
* @reqCmd EC_BTP_P2C_CHECK_AUTH_RESULT
* @rlyCmd N/A
* @reqData 字段 字节数 内容
* license 1BYTE 校验结果。0:校验成功;其他值校验失败
* msg 64BYTE 如果license不合法,此字段附带错误类型
* @rlyData N/A
*/
#define EC_BTP_P2C_CHECK_AUTH_RESULT 0x60
/**
* @brief HUD导航图标类型
*
*/
#define NaviIconType_NONE 0 ///< 导航段转向图标类型 无定义,自定义转向图标数组,请忽略这个元素,从左转图标开始
#define NaviIconType_DEFAULT 1 ///< 导航段转向图标类型 自车图标,自定义转向图标数组,请忽略这个元素,从左转图标开始
#define NaviIconType_LEFT 2 ///< 导航段转向图标类型 左转图标
#define NaviIconType_RIGHT 3 ///< 导航段转向图标类型 右转图标
#define NaviIconType_LEFT_FRONT 4 ///< 导航段转向图标类型 左前方图标
#define NaviIconType_RIGHT_FRONT 5 ///< 导航段转向图标类型 右前方图标
#define NaviIconType_LEFT_BACK 6 ///< 导航段转向图标类型 左后方图
#define NaviIconType_RIGHT_BACK 7 ///< 导航段转向图标类型 右后方图标
#define NaviIconType_LEFT_TURN_AROUND 8 ///< 导航段转向图标类型 左转掉头图标
#define NaviIconType_STRAIGHT 9 ///< 导航段转向图标类型 直行图标
#define NaviIconType_ARRIVED_WAYPOINT 10 ///< 导航段转向图标类型 到达途经点图标
#define NaviIconType_ENTER_ROUNDABOUT 11 ///< 导航段转向图标类型 进入环岛图标
#define NaviIconType_OUT_ROUNDABOUT 12 ///< 导航段转向图标类型 驶出环岛图标
#define NaviIconType_ARRIVED_SERVICE_AREA 13 ///< 导航段转向图标类型 到达服务区图标
#define NaviIconType_ARRIVED_TOLLGATE 14 ///< 导航段转向图标类型 到达收费站图标
#define NaviIconType_ARRIVED_DESTINATION 15 ///< 导航段转向图标类型 到达目的地图标
#define NaviIconType_ARRIVED_TUNNEL 16 ///< 导航段转向图标类型 到达隧道图标
#define NaviIconType_CROSSWALK 17 ///< 导航段转向图标类型:通过人行横道图标
#define NaviIconType_OVERPASS 18 ///< 导航段转向图标类型:通过过街天桥图标
#define NaviIconType_UNDERPASS 19 ///< 导航段转向图标类型:通过地下通道图标
#define NaviIconType_SQUARE 20 ///< 导航段转向图标类型:通过广场图标
#define NaviIconType_PARK 21 ///< 导航段转向图标类型:通过公园图标
#define NaviIconType_STAIRCASE 22 ///< 导航段转向图标类型:通过扶梯图标
#define NaviIconType_LIFT 23 ///< 导航段转向图标类型:通过直梯图标
#define NaviIconType_CABLEWAY 24 ///< 导航段转向图标类型:通过索道图标
#define NaviIconType_SKY_CHANNEL 25 ///< 导航段转向图标类型:通过空中通道图标
#define NaviIconType_CHANNEL 26 ///< 导航段转向图标类型:通过通道、建筑物穿越通道图标
#define NaviIconType_WALK_ROAD 27 ///< 导航段转向图标类型:通过行人道路图标
#define NaviIconType_CRUISE_ROUTE 28 ///< 导航段转向图标类型:通过游船路线图标
#define NaviIconType_SIGHTSEEING_BUSLINE 29 ///< 导航段转向图标类型:通过观光车路线图标
#define NaviIconType_SLIDEWAY 30 ///< 导航段转向图标类型:通过滑道图标
#define NaviIconType_LADDER 31 ///< 导航段转向图标类型:通过阶梯图标
#define NaviIconType_MERGE_LEFT 51 ///< 导航段转向图标类型:靠左行驶
#define NaviIconType_MERGE_RIGHT 52 ///< 导航段转向图标类型:靠右行驶
#define NaviIconType_SLOW 53 ///< 导航段转向图标类型:减速慢行
#define NaviIconType_ENTRY_RING_LEFT 54 ///< 标准小环岛 绕环岛左转,右侧通行地区的逆时针环岛
#define NaviIconType_ENTRY_RING_RIGHT 55 ///< 标准小环岛 绕环岛右转,右侧通行地区的逆时针环岛
#define NaviIconType_ENTRY_RING_CONTINUE 56 ///< 标准小环岛 绕环岛直行,右侧通行地区的逆时针环岛
#define NaviIconType_ENTRY_RING_UTURN 57 ///< 标准小环岛 绕环岛调头,右侧通行地区的逆时针环岛
#define NaviIconType_ENTRY_LEFT_RING 58 ///< 进入环岛图标,左侧通行地区的顺时针环岛
#define NaviIconType_LEAVE_LEFT_RING 59 ///< 驶出环岛图标,左侧通行地区的顺时针环岛
#define NaviIconType_UTURN_RIGHT 60 ///< 右转掉头图标,左侧通行地区的掉头
#define NaviIconType_SPECIAL_CONTINUE 61 ///< 顺行图标(和直行有区别,顺行图标带有虚线)
#define NaviIconType_ENTRY_LEFT_RING_LEFT 62 ///< 标准小环岛 绕环岛左转,左侧通行地区的顺时针环岛
#define NaviIconType_ENTRY_LEFT_RING_RIGHT 63 ///< 标准小环岛 绕环岛右转,左侧通行地区的顺时针环岛
#define NaviIconType_ENTRY_LEFT_RING_CONTINUE 64 ///< 标准小环岛 绕环岛直行,左侧通行地区的顺时针环岛
#define NaviIconType_ENTRY_LEFT_RING_UTURN 65 ///< 标准小环岛 绕环岛调头,左侧通行地区的顺时针环岛
#define NaviIconType_SLOPE 66 ///< 通过斜坡图标
#define NaviIconType_BRIDGE 67 ///< 通过桥图标
#define NaviIconType_FERRYBOAT 68 ///< 通过渡轮图标
#define NaviIconType_SUBWAY 69 ///< 通过地铁图标
#define NaviIconType_ENTER_BUILDING 70 ///< 进入建筑物图标
#define NaviIconType_LEAVE_BUILDING 71 ///< 离开建筑物图标
#define NaviIconType_BY_ELEVATOR 72 ///< 电梯换层图标
#define NaviIconType_BY_STAIR 73 ///< 楼梯换层图标
#define NaviIconType_ESCALATOR 74 ///< 扶梯换层图标
#define NaviIconType_LOW_TRAFFIC_CROSS 75 ///< 非导航段通过红绿灯路口图标
#define NaviIconType_LOW_CROSS 76 ///< 非导航段通过普通路口图标
#define NaviIconType_ROTARY_SHARP_LEFT 77 ///< 环岛左后转,右侧通行地区的逆时针环岛
#define NaviIconType_ROTARY_SHARP_RIGHT 78 ///< 环岛后右转,右侧通行地区的逆时针环岛
#define NaviIconType_ROTARY_SLIGHT_LEFT 79 ///< 环岛左前转,右侧通行地区的逆时针环岛
#define NaviIconType_ROTARY_SLIGHT_RIGHT 80 ///< 环岛右前转,右侧通行地区的逆时针环岛
/**
* @brief HUD导航功能枚举
*/
#define EC_BTP_HUD_FUNCITON_SUPPORT_LOAD 0x01 ///< 路口放大图
#define EC_BTP_HUD_FUNCITON_SUPPORT_LINE 0x02 ///< 车道引导图
/** @brief
* @reqCmd EC_BTP_C2P_HUD
* @reqData 字段 字节数 内容
* enable 1BYTE 0:关闭HUD数据,1:开启HUD数据,一次生命周期内只需要发送一次命令。
* maxNaviIcon 2BYTE 车机端支持的导航图标最大值
* funciton 2BYTE 车机端支持的功能,参考 EC_BTP_HUD_FUNCITON_SUPPORT*
* @rlyData EC_BTP_P2C_HUD
*/
#define EC_BTP_C2P_HUD 0x14
#define EC_BTP_NAVI_STATUS_STOPED 0x35 ///< 未导航或导航结束
#define EC_BTP_NAVI_STATUS_RUNNING 0x33 ///< 正在导航
/** @brief
* @reqCmd EC_BTP_P2C_HUD
* @reqData 字段 字节数 内容
* 导航状态 1BYTE 参见:EC_BTP_NAVI_STATUS_*
* 导航转向编码 1BYTE 参见:NaviIconType_*
* 转向距离 4BYTE 距离转向的距离(单位:米)
* 转向⽬的地字节数 1BYTE 转向⽬的地UTF-8所占字节数
* 转向⽬的地 60BYTE 最多60个字节(UTF-8编码)
* 当前时速 4BYTE ⻋速(单位:1千米/⼩时)
* 导航剩余⾥程 4BYTE 剩余⾥程(单位:米)
* 预计到达时间 19BYTE 预计到达时间(格式为:dd.MM.yyyy HH:mm:ss)
* 剩余时间 2BYTE 离终点预估剩余时间(单位:分钟)
*/
#define EC_BTP_P2C_HUD 0x14
void Ble_Rec_Msg_Analysis_Process(void );
void Ble_Connect_Event_Pro(void );
void Ble_DisConnect_Event_Pro(void );
void Ble_User_Init(void );
#endif
\ No newline at end of file
......@@ -63,9 +63,8 @@ typedef struct
} _QJ_UART_Ctrl;
_QJ_UART_Ctrl QJ_UARTRX;
uint8_t ble_status;
void init_U(void) {
void init_Uart(void) {
const uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
......@@ -84,34 +83,11 @@ int sendData(const char* logName, const char* data , unsigned int len)
{
// const int len = strlen(data);
const int txBytes = uart_write_bytes(UART_NUM_1, data, len);
ESP_LOGI(logName, "Wrote %d bytes", txBytes);
// ESP_LOGI(logName, "Wrote %d bytes", txBytes);
return txBytes;
}
static void tx_task(void *arg)
{
while (1) {
// uint8_t bbb[2] = {0x55,0x99};
// Protocol_Send(0x11,bbb,2);
//sendData(TX_TASK_TAG, (const char*)Uart_Data.data);
// Protocol_Send_Service();
uint8_t temp[20];
for(int i=0; i<20; i++)
{
temp[i] = i+0x55;
}
test_test();
vTaskDelay(10 / portTICK_PERIOD_MS);
// bsp_Ble_Gatts_Send_Indicate( 20, temp);
}
}
static void rx_task(void *arg)
{
......@@ -124,7 +100,7 @@ static void rx_task(void *arg)
if (rxBytes < 255)
{
QJ_UARTRX.Rxlen = rxBytes;
printf("CPY!!\r\n");
// printf("CPY!!\r\n");
memcpy(QJ_UARTRX.Rxbuff, data, rxBytes);
}
for (uint16_t i = 0; i < QJ_UARTRX.Rxlen; i++)
......@@ -141,6 +117,33 @@ static void rx_task(void *arg)
free(data);
}
void bsp_Uart_Init(void )
{
init_Uart();
Protocol_KL30_Wakeup_Init();
xTaskCreatePinnedToCore(rx_task, "Ble_User", 4096, NULL, 4, NULL, 1);
}
extern void simple_ota_main(void);
void simple_ota_service(void)
{
if(Wifi_OTA_Request == 1)
{
Wifi_OTA_Request = 2;
simple_ota_main();
}
}
static uint8_t device_name[] = "QIANJIANGViva";
#define GATTS_TABLE_TAG "GATTS_TABLE_DEMO"
......@@ -278,7 +281,6 @@ const uint16_t GATTS_CHAR_UUID_TEST_B = 0xFF02;
const uint16_t GATTS_CHAR_UUID_TEST_C = 0xFF03;
const uint16_t device_info_service_uuid = ESP_GATT_UUID_DEVICE_INFO_SVC;
const uint16_t serial_number_str_uuid = ESP_GATT_UUID_SERIAL_NUMBER_STR;
const uint16_t primary_service_uuid = ESP_GATT_UUID_PRI_SERVICE;
const uint16_t character_declaration_uuid = ESP_GATT_UUID_CHAR_DECLARE;
......@@ -291,6 +293,16 @@ const uint8_t heart_measurement_ccc[2] = {0X00, 0X00};
uint8_t char_value[12] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L' };
const uint16_t Dev_Svc_2A29_Str = 0x2A29;
const uint16_t Dev_Svc_2A24_Str = 0x2A24;
const uint16_t Dev_Svc_2A25_Str = 0x2A25;
const uint16_t Dev_Svc_2A27_Str = 0x2A27;
const uint16_t Dev_Svc_2A26_Str = 0x2A26;
const uint16_t Dev_Svc_2A28_Str = 0x2A28;
const uint16_t Dev_Svc_2A23_Str = 0x2A23;
const uint16_t Dev_Svc_2A2A_Str = 0x2A2A;
const uint16_t Dev_Svc_2A50_Str = 0x2A50;
const uint8_t char_prop_write_writenr_notify =
ESP_GATT_CHAR_PROP_BIT_WRITE_NR|ESP_GATT_CHAR_PROP_BIT_WRITE|ESP_GATT_CHAR_PROP_BIT_NOTIFY;
......@@ -309,18 +321,146 @@ static const esp_gatts_attr_db_t gatt_db[HRS_IDX_NB] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
sizeof(uint16_t), sizeof(device_info_service_uuid), (uint8_t *)&device_info_service_uuid}},
/* Characteristic Declaration */
[IDX_CHAR_A] =
[IDX_CHAR_2A29] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_A] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&serial_number_str_uuid, ESP_GATT_PERM_READ ,
[IDX_CHAR_VAL_2A29] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A29_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A29] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
/* Characteristic Declaration */
[IDX_CHAR_2A24] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A24] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A24_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A24] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
/* Characteristic Declaration */
[IDX_CHAR_2A25] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A25] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A25_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(char_value), (uint8_t *)char_value}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_A] =
[IDX_CHAR_CFG_2A25] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
/* Characteristic Declaration */
[IDX_CHAR_2A27] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A27] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A27_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A27] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
/* Characteristic Declaration */
[IDX_CHAR_2A26] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A26] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A26_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A26] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
[IDX_CHAR_2A28] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A28] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A28_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A28] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
[IDX_CHAR_2A23] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A23] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A23_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A23] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
[IDX_CHAR_2A2A] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A2A] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A2A_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A2A] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
[IDX_CHAR_2A50] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read }},
/* Characteristic Value */
[IDX_CHAR_VAL_2A50] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&Dev_Svc_2A50_Str, ESP_GATT_PERM_READ ,
GATTS_DEMO_CHAR_VAL_LEN_MAX, 0, (uint8_t *)((void *)0)}},
/* Client Characteristic Configuration Descriptor */
[IDX_CHAR_CFG_2A50] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
};
......@@ -331,12 +471,12 @@ static const esp_gatts_attr_db_t gatt_db2[HRS_IDX_NB2] =
{
// Service Declaration
[IDX_SVC2] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
sizeof(uint16_t), sizeof(service_1_uuid), (uint8_t *)&service_1_uuid}},
/* Characteristic Declaration */
[IDX_CHAR_A2] =
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ ,
{{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_write_writenr_notify }},
/* Characteristic Value */
......@@ -352,95 +492,42 @@ static const esp_gatts_attr_db_t gatt_db2[HRS_IDX_NB2] =
void bsp_Ble_Gatts_Send_Indicate( uint8_t len, uint8_t *data)
int bsp_Ble_Gatts_Send_Indicate( uint8_t len, uint8_t *data)
{
// if(Ble_User_Ctrl.Ble_Sts != Ble_Idle)
int err = ESP_FAIL;
uint8_t retry = 5;
if(Ble_Sts_Ctrl.Ble_Sts != Ble_Idle)
{
// if(en)
{
esp_ble_gatts_send_indicate(heart_rate_profile_tab[0].gatts_if,
heart_rate_profile_tab[0].conn_id,
46,
len, data, false);
}
}
}
typedef struct
{
uint8_t en;
uint8_t read_cnt;
uint8_t time_cnt;
uint8_t start;
}wifi_ota_struct;
wifi_ota_struct wifi_ota;
void wifi_ota_request_service(void )
{
// uint8_t step = 0;
int i = 0;
// if(wifi_ota.en == 0)
// {
// vTaskDelay(5000 / portTICK_PERIOD_MS);
// printf("\n");
// printf("==========================================================\n");
// for(i = 5; i > 0; i--)
// {
// printf("=========== start simple_ota_task in %d second. ===========\n", i);
// vTaskDelay(1000 / portTICK_PERIOD_MS);
// }
// printf("=========== simple_ota_service starting... ===========\n");
// printf("==========================================================\n");
// printf("\n");
// wifi_ota.en = 1;
// }
if(wifi_ota.read_cnt && wifi_ota.read_cnt <= 3)
while(retry -- )
{
if(wifi_ota.time_cnt < 50)
if(err != ESP_OK)
{
wifi_ota.time_cnt ++;
err = esp_ble_gatts_send_indicate(heart_rate_profile_tab[0].gatts_if,
heart_rate_profile_tab[0].conn_id,
heart_rate_handle_table2[IDX_CHAR_VAL_A2],
len, data, false);
}
else
{
wifi_ota.time_cnt = 0;
if(wifi_ota.read_cnt == 3)
{
printf("\n");
printf("==========================================================\n");
for(i = 5; i > 0; i--)
{
printf("=========== start simple_ota_task in %d second. ===========\n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
break;
}
printf("=========== simple_ota_service starting... ===========\n");
printf("==========================================================\n");
printf("\n");
wifi_ota.en = 1;
// wifi_ota.read_cnt = 0;
// printf("wifi_ota.en = %d\r\n", wifi_ota.en);
}
else
if(err != ESP_OK)
{
wifi_ota.en = 0;
wifi_ota.read_cnt = 0;
}
printf("ble trans fail!!\r\n");
}
}
else
{
wifi_ota.en = 0;
wifi_ota.read_cnt = 0;
wifi_ota.time_cnt = 0;
}
return err;
}
static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param)
{
switch (event) {
......@@ -605,12 +692,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
break;
case ESP_GATTS_READ_EVT:
if(wifi_ota.read_cnt < 250)
{
wifi_ota.read_cnt++;
printf("read_cnt = %d\r\n", wifi_ota.read_cnt);
}
ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_READ_EVT");
break;
case ESP_GATTS_WRITE_EVT:
......@@ -634,29 +716,29 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
if (descr_value == 0x0001){
ESP_LOGI(GATTS_TABLE_TAG, "notify enable");
uint8_t notify_data[15];
for (int i = 0; i < sizeof(notify_data); ++i)
{
notify_data[i] = i % 0xff;
}
//the size of notify_data[] need less than MTU size
esp_ble_gatts_send_indicate(gatts_if, param->write.conn_id, heart_rate_handle_table2[IDX_CHAR_CFG_A2],
sizeof(notify_data), notify_data, false);
// uint8_t notify_data[15];
// for (int i = 0; i < sizeof(notify_data); ++i)
// {
// notify_data[i] = i % 0xff;
// }
// //the size of notify_data[] need less than MTU size
// esp_ble_gatts_send_indicate(gatts_if, param->write.conn_id, heart_rate_handle_table2[IDX_CHAR_CFG_A2],
// sizeof(notify_data), notify_data, false);
}else if (descr_value == 0x0002){
ESP_LOGI(GATTS_TABLE_TAG, "indicate enable");
uint8_t indicate_data[15];
for (int i = 0; i < sizeof(indicate_data); ++i)
{
indicate_data[i] = i % 0xff;
}
// ESP_LOGI(GATTS_TABLE_TAG, "indicate enable");
// uint8_t indicate_data[15];
// for (int i = 0; i < sizeof(indicate_data); ++i)
// {
// indicate_data[i] = i % 0xff;
// }
// if want to change the value in server database, call:
// esp_ble_gatts_set_attr_value(heart_rate_handle_table[IDX_CHAR_VAL_A], sizeof(indicate_data), indicate_data);
// // if want to change the value in server database, call:
// // esp_ble_gatts_set_attr_value(heart_rate_handle_table[IDX_CHAR_VAL_2A25], sizeof(indicate_data), indicate_data);
//the size of indicate_data[] need less than MTU size
esp_ble_gatts_send_indicate(gatts_if, param->write.conn_id, heart_rate_handle_table[IDX_CHAR_VAL_A],
sizeof(indicate_data), indicate_data, true);
// //the size of indicate_data[] need less than MTU size
// esp_ble_gatts_send_indicate(gatts_if, param->write.conn_id, heart_rate_handle_table2[IDX_CHAR_CFG_A2],
// sizeof(indicate_data), indicate_data, true);
}
else if (descr_value == 0x0000){
ESP_LOGI(GATTS_TABLE_TAG, "notify/indicate disable ");
......@@ -699,6 +781,8 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
}
break;
case ESP_GATTS_CONNECT_EVT:
Ble_Connect_Event_Pro();
ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_CONNECT_EVT, conn_id = %d", param->connect.conn_id);
esp_log_buffer_hex(GATTS_TABLE_TAG, param->connect.remote_bda, 6);
esp_ble_conn_update_params_t conn_params = {0};
......@@ -710,12 +794,14 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_
conn_params.timeout = 400; // timeout = 400*10ms = 4000ms
//start sent the update connection parameters to the peer device.
esp_ble_gap_update_conn_params(&conn_params);
ble_status = 1;
break;
case ESP_GATTS_DISCONNECT_EVT:
Ble_DisConnect_Event_Pro();
ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_DISCONNECT_EVT, reason = 0x%x", param->disconnect.reason);
esp_ble_gap_start_advertising(&adv_params);
ble_status = 0;
break;
case ESP_GATTS_CREAT_ATTR_TAB_EVT:{
if(create_tab1 == false) {
......@@ -841,41 +927,12 @@ void Get_Mac_Init(void )
}
}
static void timer_cnt_task(void *arg)
{
while(1)
{
wifi_ota_request_service();
vTaskDelay(pdMS_TO_TICKS(100));
}
}
extern void simple_ota_main(void);
void simple_ota_service(void)
{
if(wifi_ota.en == 1)
{
wifi_ota.en = 2;
simple_ota_main();
}
}
static void simple_ota_task(void *arg)
{
while(1)
{
simple_ota_service();
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void app_main(void)
void bsp_Ble_Init(void)
{
esp_err_t ret;
Get_Mac_Init();
init_U();
Protocol_KL30_Wakeup_Init();
/* Initialize NVS. */
ret = nvs_flash_init();
......@@ -937,8 +994,80 @@ void app_main(void)
}
xTaskCreate(timer_cnt_task, "timer_cnt", 4096*2, NULL, 10, NULL);
xTaskCreate(rx_task, "uart_rx_task", 1024*2, NULL, configMAX_PRIORITIES, NULL);
xTaskCreate(tx_task, "uart_tx_task", 1024*2, NULL, configMAX_PRIORITIES-1, NULL);
xTaskCreate(simple_ota_task, "simple_ota", 1024*2, NULL, 10, NULL);
// /* set the security iocap & auth_req & key size & init key response key parameters to the stack*/
// esp_ble_auth_req_t auth_req = ESP_LE_AUTH_REQ_SC_MITM_BOND; //bonding with peer device after authentication
// esp_ble_io_cap_t iocap = ESP_IO_CAP_NONE; //set the IO capability to No output No input
// uint8_t key_size = 16; //the key size should be 7~16 bytes
// uint8_t init_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;
// uint8_t rsp_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;
// uint8_t oob_support = ESP_BLE_OOB_DISABLE;
// esp_ble_gap_set_security_param(ESP_BLE_SM_AUTHEN_REQ_MODE, &auth_req, sizeof(uint8_t));
// esp_ble_gap_set_security_param(ESP_BLE_SM_IOCAP_MODE, &iocap, sizeof(uint8_t));
// esp_ble_gap_set_security_param(ESP_BLE_SM_MAX_KEY_SIZE, &key_size, sizeof(uint8_t));
// esp_ble_gap_set_security_param(ESP_BLE_SM_OOB_SUPPORT, &oob_support, sizeof(uint8_t));
// /* If your BLE device act as a Slave, the init_key means you hope which types of key of the master should distribute to you,
// and the response key means which key you can distribute to the Master;
// If your BLE device act as a master, the response key means you hope which types of key of the slave should distribute to you,
// and the init key means which key you can distribute to the slave. */
// esp_ble_gap_set_security_param(ESP_BLE_SM_SET_INIT_KEY, &init_key, sizeof(uint8_t));
// esp_ble_gap_set_security_param(ESP_BLE_SM_SET_RSP_KEY, &rsp_key, sizeof(uint8_t));
/* set the security iocap & auth_req & key size & init key response key parameters to the stack*/
esp_ble_auth_req_t auth_req = ESP_LE_AUTH_REQ_SC_MITM_BOND; //bonding with peer device after authentication
esp_ble_io_cap_t iocap = ESP_IO_CAP_NONE; //set the IO capability to No output No input
uint8_t key_size = 16; //the key size should be 7~16 bytes
uint8_t init_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;
uint8_t rsp_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;
//set static passkey
uint32_t passkey = 123456;
uint8_t auth_option = ESP_BLE_ONLY_ACCEPT_SPECIFIED_AUTH_DISABLE;
uint8_t oob_support = ESP_BLE_OOB_DISABLE;
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, sizeof(uint32_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_AUTHEN_REQ_MODE, &auth_req, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_IOCAP_MODE, &iocap, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_MAX_KEY_SIZE, &key_size, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_ONLY_ACCEPT_SPECIFIED_SEC_AUTH, &auth_option, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_OOB_SUPPORT, &oob_support, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
/* If your BLE device acts as a Slave, the init_key means you hope which types of key of the master should distribute to you,
and the response key means which key you can distribute to the master;
If your BLE device acts as a master, the response key means you hope which types of key of the slave should distribute to you,
and the init key means which key you can distribute to the slave. */
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_SET_INIT_KEY, &init_key, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
ret = esp_ble_gap_set_security_param(ESP_BLE_SM_SET_RSP_KEY, &rsp_key, sizeof(uint8_t));
if(ret)
{
printf("!!!!!!!!!!!!!!\r\n");
}
}
......@@ -13,25 +13,42 @@ enum
{
IDX_SVC,
// IDX_CHAR_2A29,
// IDX_CHAR_VAL_2A29,
// IDX_CHAR_CFG_2A29,
IDX_CHAR_2A29,
IDX_CHAR_VAL_2A29,
IDX_CHAR_CFG_2A29,
// IDX_CHAR_2A24,
// IDX_CHAR_VAL_2A24,
// IDX_CHAR_CFG_2A24,
IDX_CHAR_2A24,
IDX_CHAR_VAL_2A24,
IDX_CHAR_CFG_2A24,
IDX_CHAR_A,
IDX_CHAR_VAL_A,
IDX_CHAR_CFG_A,
IDX_CHAR_2A25,
IDX_CHAR_VAL_2A25,
IDX_CHAR_CFG_2A25,
// IDX_CHAR_2A27,
// IDX_CHAR_VAL_2A27,
// IDX_CHAR_CFG_2A27,
IDX_CHAR_2A27,
IDX_CHAR_VAL_2A27,
IDX_CHAR_CFG_2A27,
// IDX_CHAR_2A26,
// IDX_CHAR_VAL_2A26,
// IDX_CHAR_CFG_2A26,
IDX_CHAR_2A26,
IDX_CHAR_VAL_2A26,
IDX_CHAR_CFG_2A26,
IDX_CHAR_2A28,
IDX_CHAR_VAL_2A28,
IDX_CHAR_CFG_2A28,
IDX_CHAR_2A23,
IDX_CHAR_VAL_2A23,
IDX_CHAR_CFG_2A23,
IDX_CHAR_2A2A,
IDX_CHAR_VAL_2A2A,
IDX_CHAR_CFG_2A2A,
IDX_CHAR_2A50,
IDX_CHAR_VAL_2A50,
IDX_CHAR_CFG_2A50,
HRS_IDX_NB,
};
......@@ -51,10 +68,13 @@ enum
HRS_IDX_NB2,
};
void bsp_Ble_Init(void);
void bsp_Uart_Init(void );
int bsp_Ble_Gatts_Send_Indicate(uint8_t len, uint8_t *data);
void simple_ota_service(void);
void bsp_Ble_Gatts_Send_Indicate(uint8_t len, uint8_t *data);
extern uint8_t ble_status;
extern int sendData(const char* logName, const char* data , unsigned int len);
#endif
\ No newline at end of file
#include "app_Ble_User.h"
#include "gatts_table_creat_demo.h"
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "gatts_table_creat_demo.h"
#include "main_user.h"
#include "Protocol_CRC16.h"
#include "Protocol_User.h"
#define TAG "MAIN_USER"
uint32_t Sys_1ms_Cnt;
#define SYS_RUN_TASK_1MS (1)
#define SYS_RUN_TASK_10MS (Sys_1ms_Cnt % 10 == 1)
#define SYS_RUN_TASK_20MS (Sys_1ms_Cnt % 20 == 2)
#define SYS_RUN_TASK_50MS (Sys_1ms_Cnt % 50 == 3)
#define SYS_RUN_TASK_100MS (Sys_1ms_Cnt % 100 == 4)
#define SYS_RUN_TASK_1000MS (Sys_1ms_Cnt % 1000 == 5)
uint32_t testcnt;
static void Sys_Run_Tasks(void *arg)
{
uint8_t i = 0;
while(1)
{
if(Sys_1ms_Cnt < 499)
{
Sys_1ms_Cnt ++ ;
}
else
{
Sys_1ms_Cnt = 0;
}
if(SYS_RUN_TASK_1MS)
{
}
if(SYS_RUN_TASK_10MS)
{
Protocol_Send_Service();
}
if(SYS_RUN_TASK_20MS)
{
}
if(SYS_RUN_TASK_50MS)
{
}
if(SYS_RUN_TASK_100MS)
{
}
if(SYS_RUN_TASK_1000MS)
{
testcnt++;
if(testcnt >= 2)
{
testcnt = 0;
// printf("Ble_Sts_Ctrl.Ble_Sts = %d\r\n", Ble_Sts_Ctrl.Ble_Sts);
// printf("Ble_Sts_Ctrl.Navi_Updat = %d\r\n", Ble_Sts_Ctrl.Navi_Updat);
}
simple_ota_service();
}
vTaskDelay(1);
}
vTaskDelete(NULL);
}
void app_main(void)
{
Ble_User_Init();
bsp_Ble_Init();
bsp_Uart_Init();
xTaskCreatePinnedToCore(Sys_Run_Tasks, "Sys_Run_Tasks", 4096, NULL, 3, NULL, 1);
}
#ifndef _MAIN_USER_H_
#define _MAIN_USER_H_
#endif
\ No newline at end of file
......@@ -53,13 +53,14 @@ CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9
CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12
CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y
CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y
CONFIG_SOC_IDCACHE_PER_CORE=y
CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=5
CONFIG_SOC_CPU_CORES_NUM=2
CONFIG_SOC_CPU_INTR_NUM=32
CONFIG_SOC_CPU_HAS_FPU=y
CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINT_SIZE=64
CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64
CONFIG_SOC_DAC_PERIPH_NUM=2
CONFIG_SOC_DAC_RESOLUTION=8
CONFIG_SOC_GPIO_PORT=1
......@@ -217,6 +218,14 @@ CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y
# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
CONFIG_BOOTLOADER_LOG_LEVEL=3
#
# Serial Flash Configurations
#
# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
# end of Serial Flash Configurations
# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
# CONFIG_BOOTLOADER_FACTORY_RESET is not set
......@@ -231,7 +240,6 @@ CONFIG_BOOTLOADER_WDT_TIME_MS=9000
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
# end of Bootloader config
#
......@@ -425,8 +433,12 @@ CONFIG_BT_GATT_MAX_SR_ATTRIBUTES=100
# CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MANUAL is not set
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_AUTO=y
CONFIG_BT_GATTS_SEND_SERVICE_CHANGE_MODE=0
# CONFIG_BT_GATTS_ROBUST_CACHING_ENABLED is not set
# CONFIG_BT_GATTS_DEVICE_NAME_WRITABLE is not set
# CONFIG_BT_GATTS_APPEARANCE_WRITABLE is not set
CONFIG_BT_GATTC_ENABLE=y
CONFIG_BT_GATTC_MAX_CACHE_CHAR=40
CONFIG_BT_GATTC_NOTIF_REG_MAX=5
# CONFIG_BT_GATTC_CACHE_NVS_FLASH is not set
CONFIG_BT_GATTC_CONNECT_RETRY_COUNT=3
CONFIG_BT_BLE_SMP_ENABLE=y
......@@ -612,10 +624,13 @@ CONFIG_BT_MULTI_CONNECTION_ENBALE=y
# CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY is not set
# CONFIG_BT_BLE_HOST_QUEUE_CONG_CHECK is not set
CONFIG_BT_SMP_ENABLE=y
CONFIG_BT_SMP_MAX_BONDS=15
# CONFIG_BT_BLE_ACT_SCAN_REP_ADV_SCAN is not set
CONFIG_BT_BLE_ESTAB_LINK_CONN_TOUT=30
CONFIG_BT_MAX_DEVICE_NAME_LEN=32
# CONFIG_BT_BLE_RPA_SUPPORTED is not set
CONFIG_BT_BLE_RPA_TIMEOUT=900
# CONFIG_BT_BLE_HIGH_DUTY_ADV_INTERVAL is not set
# end of Bluedroid Options
#
......@@ -750,6 +765,7 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# RMT Configuration
#
# CONFIG_RMT_ISR_IRAM_SAFE is not set
# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set
# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_RMT_ENABLE_DEBUG_LOG is not set
# end of RMT Configuration
......@@ -829,6 +845,7 @@ CONFIG_ETH_RMII_CLK_IN_GPIO=0
CONFIG_ETH_DMA_BUFFER_SIZE=512
CONFIG_ETH_DMA_RX_BUFFER_NUM=10
CONFIG_ETH_DMA_TX_BUFFER_NUM=10
# CONFIG_ETH_IRAM_OPTIMIZATION is not set
CONFIG_ETH_USE_SPI_ETHERNET=y
# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
......@@ -924,11 +941,12 @@ CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
# Sleep Config
#
# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set
CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y
# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set
CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000
CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y
# end of Sleep Config
#
......@@ -979,6 +997,7 @@ CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32
CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
CONFIG_ESP_NETIF_TCPIP_LWIP=y
# CONFIG_ESP_NETIF_LOOPBACK is not set
# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set
# CONFIG_ESP_NETIF_L2_TAP is not set
# CONFIG_ESP_NETIF_BRIDGE_EN is not set
# end of ESP NETIF Adapter
......@@ -1019,9 +1038,9 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0
# ESP System Settings
#
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160
# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 is not set
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240
#
# Memory
......@@ -1126,6 +1145,10 @@ CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP32_WIFI_TX_BA_WIN=6
......@@ -1147,6 +1170,8 @@ CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set
CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set
# end of Wi-Fi
#
......@@ -1217,7 +1242,7 @@ CONFIG_FATFS_PER_FILE_CACHE=y
#
# CONFIG_FREERTOS_SMP is not set
# CONFIG_FREERTOS_UNICORE is not set
CONFIG_FREERTOS_HZ=100
CONFIG_FREERTOS_HZ=1000
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
......@@ -1307,6 +1332,7 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
#
CONFIG_LWIP_LOCAL_HOSTNAME="QJ500-7C"
# CONFIG_LWIP_NETIF_API is not set
CONFIG_LWIP_TCPIP_TASK_PRIO=18
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
......@@ -1320,6 +1346,7 @@ CONFIG_LWIP_SO_REUSE=y
CONFIG_LWIP_SO_REUSE_RXTOALL=y
# CONFIG_LWIP_SO_RCVBUF is not set
# CONFIG_LWIP_NETBUF_RECVINFO is not set
CONFIG_LWIP_IP_DEFAULT_TTL=64
CONFIG_LWIP_IP4_FRAG=y
CONFIG_LWIP_IP6_FRAG=y
# CONFIG_LWIP_IP4_REASSEMBLY is not set
......@@ -1372,6 +1399,8 @@ CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
CONFIG_LWIP_TCP_WND_DEFAULT=5744
CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6
CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4
# CONFIG_LWIP_TCP_SACK_OUT is not set
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
......@@ -1402,6 +1431,8 @@ CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
# CONFIG_LWIP_PPP_SUPPORT is not set
CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
CONFIG_LWIP_ND6=y
# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set
# CONFIG_LWIP_SLIP_SUPPORT is not set
#
......@@ -1427,6 +1458,14 @@ CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
# end of SNTP
CONFIG_LWIP_BRIDGEIF_MAX_PORTS=50
#
# DNS
#
CONFIG_LWIP_DNS_MAX_SERVERS=3
# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set
# end of DNS
CONFIG_LWIP_ESP_LWIP_ASSERT=y
#
......@@ -1489,6 +1528,7 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200
# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
CONFIG_MBEDTLS_CMAC_C=y
CONFIG_MBEDTLS_HARDWARE_AES=y
# CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER is not set
CONFIG_MBEDTLS_HARDWARE_MPI=y
CONFIG_MBEDTLS_HARDWARE_SHA=y
CONFIG_MBEDTLS_ROM_MD5=y
......@@ -1569,12 +1609,12 @@ CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y
# CONFIG_MBEDTLS_POLY1305_C is not set
# CONFIG_MBEDTLS_CHACHA20_C is not set
# CONFIG_MBEDTLS_HKDF_C is not set
# CONFIG_MBEDTLS_THREADING_C is not set
# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
# CONFIG_MBEDTLS_SECURITY_RISKS is not set
# end of mbedTLS
#
......@@ -1650,6 +1690,27 @@ CONFIG_MMU_PAGE_MODE="64KB"
CONFIG_MMU_PAGE_SIZE=0x10000
# end of MMU Config
#
# Main Flash configuration
#
#
# SPI Flash behavior when brownout
#
CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y
CONFIG_SPI_FLASH_BROWNOUT_RESET=y
# end of SPI Flash behavior when brownout
#
# Optional and Experimental Features (READ DOCS FIRST)
#
#
# Features here require specific hardware (READ DOCS FIRST!)
#
# end of Optional and Experimental Features (READ DOCS FIRST)
# end of Main Flash configuration
#
# SPI Flash driver
#
......@@ -1669,13 +1730,6 @@ CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set
#
# SPI Flash behavior when brownout
#
CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y
CONFIG_SPI_FLASH_BROWNOUT_RESET=y
# end of SPI Flash behavior when brownout
#
# Auto-detect flash chips
#
......@@ -1804,7 +1858,6 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
CONFIG_WPA_MBEDTLS_CRYPTO=y
CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
# CONFIG_WPA_WAPI_PSK is not set
# CONFIG_WPA_SUITE_B_192 is not set
# CONFIG_WPA_DEBUG_PRINT is not set
# CONFIG_WPA_TESTING_OPTIONS is not set
# CONFIG_WPA_WPS_STRICT is not set
......@@ -2089,9 +2142,9 @@ CONFIG_ESP32_PHY_MAX_TX_POWER=20
# CONFIG_SPIRAM_SUPPORT is not set
# CONFIG_ESP32_SPIRAM_SUPPORT is not set
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
# CONFIG_ESP32_PANIC_PRINT_HALT is not set
CONFIG_ESP32_PANIC_PRINT_REBOOT=y
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment