160 lines
3.2 KiB
C
160 lines
3.2 KiB
C
#include "ble.h"
|
|
|
|
void ble_send(UART_HandleTypeDef *huart, uint8_t *data)
|
|
{
|
|
usart_printf(huart, (char *)data);
|
|
}
|
|
|
|
int8_t write_ble_id(char *id)
|
|
{
|
|
if(!id) return -1;
|
|
|
|
char str_id[50] = {0};
|
|
|
|
sprintf(str_id,"AT+NAME=%s\r\n",id);
|
|
usart_printf(&huart6, str_id);
|
|
return 1;
|
|
}
|
|
|
|
void write_ble_cmd(char *cmd)
|
|
{
|
|
if(!cmd) return;
|
|
|
|
usart_printf(&huart6, cmd);
|
|
}
|
|
|
|
uint8_t ble_init_step = 0;
|
|
uint8_t ble_cnt = 0;
|
|
uint8_t ble_init(void)
|
|
{
|
|
uint8_t result = 0;
|
|
|
|
switch (ble_init_step)
|
|
{
|
|
case 0:
|
|
{
|
|
if(ble_cnt == 0)
|
|
{
|
|
//不能超过20字节
|
|
char ble_id[20];
|
|
strncpy (ble_id, "GSDT_SGGT_V1.0", 20);
|
|
|
|
write_ble_id(ble_id); //修改蓝牙名称
|
|
ble_cnt++;
|
|
}
|
|
else
|
|
{
|
|
ble_cnt++;
|
|
if( (ble_cnt * BLE_TASK_PERIOD) > 500)
|
|
{
|
|
ble_cnt = 0;
|
|
ble_init_step++;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 1:
|
|
{
|
|
if(ble_cnt == 0)
|
|
{
|
|
write_ble_cmd("AT+UUIDS=FFF0\r\n"); //主服务通道
|
|
|
|
ble_cnt++;
|
|
}
|
|
else
|
|
{
|
|
ble_cnt++;
|
|
if( (ble_cnt * BLE_TASK_PERIOD) > 500)
|
|
{
|
|
ble_cnt = 0;
|
|
ble_init_step++;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
{
|
|
if(ble_cnt == 0)
|
|
{
|
|
write_ble_cmd("AT+UUIDN=FFF1\r\n"); //读通道FFF1
|
|
|
|
ble_cnt++;
|
|
}
|
|
else
|
|
{
|
|
ble_cnt++;
|
|
if( (ble_cnt * BLE_TASK_PERIOD) > 500)
|
|
{
|
|
ble_cnt = 0;
|
|
ble_init_step++;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
{
|
|
if(ble_cnt == 0)
|
|
{
|
|
write_ble_cmd("AT+UUIDW=FFF2\r\n"); //写通道FFF2
|
|
|
|
ble_cnt++;
|
|
}
|
|
else
|
|
{
|
|
ble_cnt++;
|
|
if( (ble_cnt * BLE_TASK_PERIOD) > 500)
|
|
{
|
|
ble_cnt = 0;
|
|
ble_init_step++;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
{
|
|
if(ble_cnt == 0)
|
|
{
|
|
write_ble_cmd("AT+REBOOT=1\r\n"); //重启
|
|
|
|
ble_cnt++;
|
|
}
|
|
else
|
|
{
|
|
ble_cnt++;
|
|
if( (ble_cnt * BLE_TASK_PERIOD) > 1000)
|
|
{
|
|
ble_cnt = 0;
|
|
ble_init_step++;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 5:
|
|
{
|
|
//清空缓存区(蓝牙配置时收获的响应)
|
|
memset(scom6_ble.rx_buff, 0, sizeof(scom6_ble.rx_buff));
|
|
scom6_ble.rx_len = 0;
|
|
|
|
ble_init_step++;
|
|
}
|
|
break;
|
|
|
|
case 6:
|
|
{
|
|
result = 1;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|