暂存+1
This commit is contained in:
parent
6b0ae4194e
commit
81964ccc97
|
@ -24,6 +24,7 @@ encoding//libraries/hal_libraries/bmsis/source/startup_ch32v30x.S=GBK
|
|||
encoding//libraries/hal_libraries/ch32v303_hal/include/ch32v30x_gpio.h=GBK
|
||||
encoding//libraries/hal_libraries/ch32v303_hal/include/ch32v30x_rcc.h=GBK
|
||||
encoding//libraries/hal_libraries/ch32v303_hal/source/ch32v30x_gpio.c=GBK
|
||||
encoding//obj/ble_bjq_ch303rct6_ml307.map=GBK
|
||||
encoding//packages/at_device-2.1.0/at_device.c=GBK
|
||||
encoding//packages/at_device-2.1.0/at_device.h=GBK
|
||||
encoding//packages/rt_vsnprintf_full-master/rt_vsnprintf.c=GBK
|
||||
|
|
|
@ -4,8 +4,8 @@ Series=CH32V307
|
|||
RTOS=NoneOS
|
||||
MCU=CH32V307RVT6
|
||||
Link=WCH-Link
|
||||
PeripheralVersion==========1.4
|
||||
Description==========ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools.
|
||||
PeripheralVersion=================1.4
|
||||
Description=================ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools.
|
||||
Mcu Type=CH32V30x
|
||||
Address=0x08000000
|
||||
Target Path=obj\ble_bjq_ch303rct6_ml307.hex
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifdef BUTTON_USE_THREAD
|
||||
#define BUTTON_THREAD_PRIORITY 5 // 优先级拉高,这时按键响应快点
|
||||
#define BUTTON_THREAD_TICKS 10
|
||||
#define BUTTON_THREAD_STACK_SIZE 512 /**< button_thread 线程堆栈大小 */
|
||||
#define BUTTON_THREAD_STACK_SIZE 768 /**< button_thread 线程堆栈大小 */
|
||||
#endif // !BUTTON_USE_THREAD
|
||||
|
||||
|
||||
|
|
|
@ -148,10 +148,8 @@ typedef struct
|
|||
无线调压阀出口压力
|
||||
无线调压阀大气压
|
||||
*/
|
||||
typedef struct valve_data valve_data_t;
|
||||
|
||||
|
||||
struct __attribute__((packed)) valve_data
|
||||
typedef struct valve_t valve_data;
|
||||
struct __attribute__((packed)) valve_t
|
||||
{
|
||||
uint8_t valve_id;
|
||||
uint8_t valve_mac[6];
|
||||
|
@ -180,7 +178,7 @@ struct __attribute__((packed)) DataBody
|
|||
uint16_t work_duration; //工作时长
|
||||
uint8_t device_status; // 设备失效状态
|
||||
rt_uint8_t valve_num; // 阀门数量
|
||||
struct valve_data valve_data[MAX_VALVE_NUM];
|
||||
struct valve_t valve_data[MAX_VALVE_NUM];
|
||||
};
|
||||
|
||||
// 定义数据帧结构体
|
||||
|
|
|
@ -146,7 +146,7 @@ int BSP_ADC_Init(void)
|
|||
return 0;
|
||||
}
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
INIT_BOARD_EXPORT(BSP_ADC_Init);
|
||||
INIT_DEVICE_EXPORT(BSP_ADC_Init);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
108
bsp/src/bsp_bt.c
108
bsp/src/bsp_bt.c
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-03 10:31:45
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-13 18:09:14
|
||||
* @LastEditTime: 2024-12-16 11:09:26
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -42,7 +42,7 @@ lwrb_t bt_lwrb_rx;
|
|||
static char bt_rx_buffer[256] = {0};
|
||||
BTFrameData bt_frame = {0};
|
||||
|
||||
valve_data_t valve_t[MAX_VALVE_NUM];
|
||||
valve_data valve[MAX_VALVE_NUM];
|
||||
|
||||
rt_size_t BSP_Bt_Send_Data(uint8_t *data, size_t size)
|
||||
{
|
||||
|
@ -61,10 +61,10 @@ int BSP_BT_Init(void)
|
|||
{
|
||||
for (size_t i = 0; i < MAX_VALVE_NUM; i++)
|
||||
{
|
||||
valve_t[i].valve_id = (i + 1); // 1-8
|
||||
if (Flash_Get_Mac_Addr(valve_t[i].valve_mac, i) == RT_EOK)
|
||||
valve[i].valve_id = (i + 1); // 1-8
|
||||
if (Flash_Get_Mac_Addr(valve[i].valve_mac, i) == RT_EOK)
|
||||
{
|
||||
rt_memcpy(valve_t[i].valve_mac, mac_buf, 6);
|
||||
rt_memcpy(valve[i].valve_mac, mac_buf, 6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ int BSP_BT_Init(void)
|
|||
{
|
||||
for (size_t i = 0; i < MAX_VALVE_NUM; i++)
|
||||
{
|
||||
rt_memset(&valve_t[i], 0, sizeof(valve_data_t));
|
||||
rt_memset(&valve[i], 0, sizeof(struct valve_t));
|
||||
}
|
||||
}
|
||||
return RT_EOK;
|
||||
|
@ -111,14 +111,14 @@ static int bt_recv_readline(void)
|
|||
{
|
||||
is_full = RT_TRUE;
|
||||
}
|
||||
if ((ch == '\n' && last_ch == '\r') || ch == 0x55)
|
||||
if (ch == '\n' && last_ch == '\r')
|
||||
{
|
||||
if (is_full)
|
||||
{
|
||||
LOG_E("read line failed. The line data length is out of buffer size(%d)!", lwrb_get_free(&bt_lwrb_rx));
|
||||
return -RT_EFULL;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
last_ch = ch;
|
||||
|
@ -245,20 +245,20 @@ int Bt_Valve_Handler(ValveCmdType type, rt_uint8_t id, rt_uint8_t *data)
|
|||
switch (type)
|
||||
{
|
||||
case kValveCmdCtr: // 阀门控制
|
||||
ret = BSP_Bt_Valve_Ctr(valve_t[id].valve_id, valve_t[id].valve_mac, WirelessValveClose); // 关阀门
|
||||
ret = BSP_Bt_Valve_Ctr(valve[id].valve_id, valve[id].valve_mac, WirelessValveClose); // 关阀门
|
||||
break;
|
||||
case kValveCmdReg: // 阀门注册
|
||||
ret = BSP_Bt_Register_Valve(valve_t[id].valve_id, valve_t[id].valve_mac);
|
||||
ret = BSP_Bt_Register_Valve(valve[id].valve_id, valve[id].valve_mac);
|
||||
break;
|
||||
case kValveCmdRem: // 阀门移除
|
||||
ret = BSP_Bt_Remove_Valve(valve_t[id].valve_id, valve_t[id].valve_mac);
|
||||
ret = BSP_Bt_Remove_Valve(valve[id].valve_id, valve[id].valve_mac);
|
||||
break;
|
||||
case kValveCmdRep: // 阀门更换
|
||||
ret = BSP_Bt_Replace_Valve(valve_t[id].valve_id, valve_t[id].valve_mac, data);
|
||||
ret = BSP_Bt_Replace_Valve(valve[id].valve_id, valve[id].valve_mac, data);
|
||||
if (ret == RT_EOK)
|
||||
{
|
||||
rt_memcpy(valve_t[id].valve_mac, data, 6);
|
||||
Flash_Set_Mac_Addr(valve_t[id].valve_mac, valve_t[id].valve_id - 1);
|
||||
rt_memcpy(valve[id].valve_mac, data, 6);
|
||||
Flash_Set_Mac_Addr(valve[id].valve_mac, valve[id].valve_id - 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -272,82 +272,87 @@ int Bt_Valve_Handler(ValveCmdType type, rt_uint8_t id, rt_uint8_t *data)
|
|||
|
||||
int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
||||
{
|
||||
int ret = 0;
|
||||
uint16_t index = 0;
|
||||
int ret = 0;
|
||||
uint16_t index = 0;
|
||||
uint8_t data_buf[256] = {0};
|
||||
// 解析接收到的数据帧,先寻找AA开头,然后再找AA下一个字节,其代表了数据长度,然后找到代表长度的值的长度的下一位,其为校验码,校验码后为结束码0x55,
|
||||
// 如果数据正确,则提取数据,不正确,则不处理
|
||||
LOG_HEX("BT_RX_DATA", 16, data, len);
|
||||
// LOG_HEX("BT_RX_DATA", 16, data, len);
|
||||
LOG_D("len = %d", len);
|
||||
if (len < 4)
|
||||
{ // 至少需要 4 个字节:起始码、长度、校验码、结束码
|
||||
LOG_E("BT_RX_DATA_LEN_ERROR");
|
||||
LOG_E("长度不对 [1]");
|
||||
;
|
||||
return 1;
|
||||
}
|
||||
while (index < len && data[index] != 0xAA) // 寻找起始码 0xAA
|
||||
{
|
||||
index++;
|
||||
}
|
||||
if (index >= len - 3) // 不够空间容纳长度、校验码和结束码
|
||||
{
|
||||
LOG_E("BT_RX_DATA_LEN_ERROR");
|
||||
return 2;
|
||||
}
|
||||
|
||||
LOG_D("index = %d", index);
|
||||
uint16_t datalength = data[index + 1]; // 读取数据长度
|
||||
if (index + 2 + datalength + 1 >= len) // 检查数据长度是否合理 数据长度 + 校验码 + 结束码
|
||||
{
|
||||
LOG_E("BT_RX_DATA_LEN_ERROR");
|
||||
return 3; //
|
||||
}
|
||||
LOG_D("datalength = %d", datalength);
|
||||
|
||||
uint8_t rx_sum = data[index + 2 + datalength]; // 读取校验码
|
||||
uint8_t calculated_sum = XOR_CheckSum(&data[0], datalength + 2); // 计算校验码
|
||||
uint8_t rx_sum = data[index + 2 + datalength]; // 读取校验码
|
||||
uint8_t calculated_sum = XOR_CheckSum(&data[index], datalength + 2); // 计算校验码
|
||||
if (rx_sum != calculated_sum)
|
||||
{
|
||||
LOG_E("BT_RX_DATA_SUM_ERROR");
|
||||
LOG_E("校验和不对 rx_sum[%02X] != calculated_sum[%02X]", rx_sum, calculated_sum);
|
||||
LOG_HEX("bt_rx_data:", 16, data, len);
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (data[index + 2 + datalength + 1] != 0x55) // 检查结束码
|
||||
{
|
||||
LOG_E("BT_RX_DATA_END_ERROR");
|
||||
LOG_E("结束码错误");
|
||||
return 5;
|
||||
}
|
||||
rt_uint8_t fram_len = datalength + 4;
|
||||
// 当程序走到这里时,就说明接收到了正确的数据帧,开始解析响应
|
||||
rt_memcpy(data_buf, &data[index + 3], datalength);
|
||||
rt_memcpy(data_buf, &data[index], fram_len);
|
||||
switch (data[index + 2])
|
||||
{
|
||||
case kValveEventCtr:
|
||||
LOG_D("valve control event");
|
||||
if (data[index + datalength - 3] == WirelessValveClose) // 关闭成功
|
||||
if (data_buf[fram_len - 3] == WirelessValveClose) // 关闭成功
|
||||
{
|
||||
rt_sem_release(&bt_ctr_sem);
|
||||
}
|
||||
break;
|
||||
case kValveEventReg:
|
||||
LOG_D("valve register event");
|
||||
if (data[index + datalength - 3] == RT_TRUE) // 注册成功
|
||||
if (data_buf[fram_len - 3] == RT_TRUE) // 注册成功)
|
||||
{
|
||||
LOG_I("接收到阀门注册响应:");
|
||||
LOG_HEX("bt_rx_data:", 16, data_buf, fram_len);
|
||||
|
||||
Flash_Set_Mac_Addr(&data_buf[4], data[index + 3] - 1);
|
||||
rt_uint8_t num = Flash_Get_Valve_Num();
|
||||
Flash_Set_Valve_Num(num + 1);
|
||||
|
||||
rt_sem_release(&bt_reg_sem);
|
||||
}
|
||||
break;
|
||||
case kValveEventRem:
|
||||
LOG_D("valve remove event");
|
||||
if (data[index + datalength - 3] == RT_TRUE) // 移除成功
|
||||
if (data_buf[fram_len - 3] == RT_TRUE) // 移除成功
|
||||
{
|
||||
LOG_D("移除阀门响应成功");
|
||||
rt_sem_release(&bt_rem_sem);
|
||||
}
|
||||
break;
|
||||
case kValveEventRep:
|
||||
LOG_D("valve replace event");
|
||||
if (data[index + datalength - 3] == RT_TRUE) // 更换成功
|
||||
if (data_buf[index + datalength - 3] == RT_TRUE) // 更换成功
|
||||
{
|
||||
LOG_D("阀门更换响应成功");
|
||||
rt_sem_release(&bt_rep_sem);
|
||||
}
|
||||
break;
|
||||
case kValveEventStatus:
|
||||
LOG_D("valve status event");
|
||||
LOG_I("接收到阀门心跳数据:");
|
||||
LOG_HEX("bt_rx_data:", 16, data_buf, fram_len);
|
||||
// TODO:添加阀门数据处理函数
|
||||
rt_memcpy(&valve[data_buf[3] - 1], &data_buf[3], sizeof(struct valve_t));
|
||||
LOG_HEX("valve_data:", 16, (rt_uint8_t *)&valve[data_buf[3] - 1], sizeof(struct valve_t));
|
||||
|
||||
break;
|
||||
default:
|
||||
LOG_W("unknow cmd: %02X", data[index + 2]);
|
||||
|
@ -359,7 +364,6 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
|
||||
static void BSP_Bt_Parse_Data(void)
|
||||
{
|
||||
LOG_D("parse data:");
|
||||
rt_size_t len = lwrb_get_full(&bt_lwrb_rx);
|
||||
char *rx_ptr = rt_calloc(1, len + 1);
|
||||
BSP_Bt_Recv_Data(rx_ptr, len);
|
||||
|
@ -370,14 +374,15 @@ static void BSP_Bt_Parse_Data(void)
|
|||
|
||||
static void Bt_Thread_Entry(void *parameter)
|
||||
{
|
||||
//初始化阀门信息
|
||||
valve_t[0].valve_id = 1;
|
||||
valve_t[0].valve_mac[0] = 0xb6;
|
||||
valve_t[0].valve_mac[1] = 0xb4;
|
||||
valve_t[0].valve_mac[2] = 0x8f;
|
||||
valve_t[0].valve_mac[3] = 0x10;
|
||||
valve_t[0].valve_mac[4] = 0x53;
|
||||
valve_t[0].valve_mac[5] = 0x5c;
|
||||
// 初始化阀门信息
|
||||
valve[0].valve_id = 1;
|
||||
valve[0].valve_mac[0] = 0XA2;
|
||||
valve[0].valve_mac[1] = 0xB4;
|
||||
valve[0].valve_mac[2] = 0x8F;
|
||||
valve[0].valve_mac[3] = 0x10;
|
||||
valve[0].valve_mac[4] = 0x53;
|
||||
valve[0].valve_mac[5] = 0x5C;
|
||||
|
||||
LOG_D("Bt_Thread_Entry");
|
||||
while (1)
|
||||
{
|
||||
|
@ -450,6 +455,7 @@ static void TEST_BT_Send_Data(int argc, char **argv)
|
|||
{
|
||||
int mode = atoi(argv[1]);
|
||||
int id = atoi(argv[2]) - 1;
|
||||
LOG_D("send data mode: %d id :%d", mode, id);
|
||||
switch (mode)
|
||||
{
|
||||
case 1:
|
||||
|
|
|
@ -93,7 +93,7 @@ static rt_base_t interrupt_value;
|
|||
rt_uint8_t sys_hw_ver = 0x10;
|
||||
rt_uint8_t sys_sw_ver = 0x11;
|
||||
rt_uint8_t sys_nb_retry = 0x03; // 重试次数3次
|
||||
rt_uint16_t sys_nb_upload_cycle = 0x0078; // 120分钟一次
|
||||
rt_uint16_t sys_nb_upload_cycle = 0x001; // 120分钟一次
|
||||
rt_uint16_t sys_alarm_h_value = 0x0032; // 50
|
||||
rt_uint16_t sys_alarm_l_value = 0x09C4; // 2500
|
||||
rt_uint8_t sys_temp_alarm_threshold = 0x32;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-11-30 15:46:21
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-11 13:04:23
|
||||
* @LastEditTime: 2024-12-15 17:09:30
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -60,13 +60,13 @@ Ml307EventIndex ml307_event_index;
|
|||
rt_uint8_t power_on_send_flag = 0;
|
||||
rt_mutex_t ml307_mutex;
|
||||
|
||||
extern valve_data_t valve_t[MAX_VALVE_NUM];
|
||||
extern valve_data valve[MAX_VALVE_NUM];
|
||||
|
||||
int BSP_Ml307_Init(struct Ml307_Ops *ops, rt_uint8_t version);
|
||||
int BSP_Ml307_Update(struct Ml307_Ops *ops, rt_uint8_t device_type, rt_uint8_t event_type);
|
||||
int Ml307_Send_Data(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, rt_uint8_t device_type, rt_uint8_t event_type);
|
||||
int Data_Resp(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, rt_uint8_t device_type, rt_uint8_t event_type, char *data, rt_uint8_t res);
|
||||
int Ml307_Recv_Data(struct Ml307_Ops *ops, char *data);
|
||||
// int Ml307_Recv_Data(struct Ml307_Ops *ops, char *data);
|
||||
|
||||
static struct DataBody body;
|
||||
static struct Ml307DataFrame frame;
|
||||
|
@ -306,40 +306,20 @@ int BSP_Ml307_Init(struct Ml307_Ops *ops, rt_uint8_t version)
|
|||
|
||||
int _Update_Valve_Data(struct Ml307_Ops *ops)
|
||||
{
|
||||
valve_data_t valve_data_t[MAX_VALVE_NUM] = {0};
|
||||
rt_uint8_t id = 0;
|
||||
rt_uint8_t mac_addr[FLASH_VALVE_MAC_ADDR_LEN] = {0};
|
||||
ops->body->valve_num = Flash_Get_Valve_Num();
|
||||
ops->body->valve_num = Flash_Get_Valve_Num();
|
||||
if (ops->body->valve_num == 0) // 确保至少有一个阀门数据体
|
||||
{
|
||||
LOG_D("No valve data");
|
||||
rt_memset(&ops->body->valve_data, 0, sizeof(struct valve_data)); // 直接全部发送0
|
||||
// rt_memcpy(&ops->body->valve_data, &valve_data_t[0], sizeof(struct valve_data));
|
||||
rt_memset(&ops->body->valve_data, 0, sizeof(struct valve_t)); // 直接全部发送0
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < MAX_VALVE_NUM; i++)
|
||||
{
|
||||
size_t j = 0;
|
||||
Flash_Get_Mac_Addr(mac_addr, i);
|
||||
for (; j < FLASH_VALVE_MAC_ADDR_LEN; j++)
|
||||
{
|
||||
if ((mac_addr[j] == 0xe3) || (mac_addr[j] == 0x39))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == FLASH_VALVE_MAC_ADDR_LEN)
|
||||
{
|
||||
rt_memcmp(valve_t[i].valve_mac, mac_addr, FLASH_VALVE_MAC_ADDR_LEN);
|
||||
rt_memcpy(&ops->body->valve_data[id], &valve_t[i], sizeof(valve_data_t));
|
||||
ops->body->valve_data[id].valve_id = (i + 1);
|
||||
id++;
|
||||
}
|
||||
}
|
||||
LOG_D("valve_num: %d", ops->body->valve_num);
|
||||
rt_memcpy(&ops->body->valve_data[0], &valve[0], sizeof(struct valve_t));
|
||||
}
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
// 更新函数
|
||||
int BSP_Ml307_Update(struct Ml307_Ops *ops, rt_uint8_t device_type, rt_uint8_t event_type)
|
||||
{
|
||||
|
@ -387,11 +367,11 @@ int Ml307_Send_Data(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd,
|
|||
{
|
||||
if (ops->body->valve_num == 0)
|
||||
{
|
||||
lenght = (sizeof(struct DataBody) - (MAX_VALVE_NUM - 1) * sizeof(struct valve_data)); // 至少要发送一个阀门数据体
|
||||
lenght = (sizeof(struct DataBody) - (MAX_VALVE_NUM - 1) * sizeof(struct valve_t)); // 至少要发送一个阀门数据体
|
||||
}
|
||||
else
|
||||
{
|
||||
lenght = (sizeof(struct DataBody) - (MAX_VALVE_NUM - ops->body->valve_num) * sizeof(struct valve_data)); // 至少要发送一个阀门数据体
|
||||
lenght = (sizeof(struct DataBody) - (MAX_VALVE_NUM - ops->body->valve_num) * sizeof(struct valve_t)); // 至少要发送一个阀门数据体
|
||||
}
|
||||
for (int i = 0; i < lenght; i++)
|
||||
{
|
||||
|
@ -436,6 +416,7 @@ int Data_Resp(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, rt_uin
|
|||
return _Send_Handle(ops, data_num, cmd, data_buf);
|
||||
}
|
||||
|
||||
#if 0
|
||||
int Ml307_Recv_Data(struct Ml307_Ops *ops, char *data)
|
||||
{
|
||||
// ops->body = (struct DataBody *)rt_malloc(sizeof(struct DataBody));
|
||||
|
@ -443,6 +424,7 @@ int Ml307_Recv_Data(struct Ml307_Ops *ops, char *data)
|
|||
// rt_free(ops->body);
|
||||
return RT_EOK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/***************************************发送处理函数************************************************ */
|
||||
/**
|
||||
|
@ -1221,16 +1203,16 @@ rt_err_t Handle_Valve_Add(struct Ml307_Ops *ops)
|
|||
{
|
||||
if (mac_addr[0] == 0) // 无MAC地址数据,写入MAC地址数据
|
||||
{
|
||||
valve_t[data[0] - 1].valve_id = data[0];
|
||||
rt_memcpy(valve_t[data[0] - 1].valve_mac, &data[1], FLASH_VALVE_MAC_ADDR_LEN);//将信息更新
|
||||
valve[data[0] - 1].valve_id = data[0];
|
||||
rt_memcpy(valve[data[0] - 1].valve_mac, &data[1], FLASH_VALVE_MAC_ADDR_LEN); // 将信息更新
|
||||
if (Bt_Valve_Handler(kValveCmdReg, data[0] - 1, RT_NULL) != RT_EOK)
|
||||
{
|
||||
LOG_E("新增阀门设备失败\n");
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||
return RT_ERROR;
|
||||
}
|
||||
//TODO:此处需要等待蓝牙响应数据
|
||||
if(rt_sem_take(&bt_reg_sem, 10000) != RT_EOK) //等待十秒获取信号量
|
||||
// TODO:此处需要等待蓝牙响应数据
|
||||
if (rt_sem_take(&bt_reg_sem, 10000) != RT_EOK) // 等待十秒获取信号量
|
||||
{
|
||||
LOG_E("获取信号量失败\n");
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||
|
@ -1290,7 +1272,7 @@ rt_err_t Handle_Valve_Replace(struct Ml307_Ops *ops)
|
|||
data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11], data[12]);
|
||||
if (i == FLASH_VALVE_MAC_ADDR_LEN)
|
||||
{
|
||||
if (Bt_Valve_Handler(kValveCmdRep, data[0] - 1, &data[2]) != RT_EOK)
|
||||
if (Bt_Valve_Handler(kValveCmdRep, data[0] - 1, &data[2]) != RT_EOK)
|
||||
{
|
||||
LOG_E("更换阀门设备失败\n");
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REPLACE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
#define AT_SW_VERSION_NUM 0x10301
|
||||
/* end of Network */
|
||||
|
||||
#define IOT_MODULE_SWITCH 0 // 开启NB物联网功能
|
||||
#define IOT_MODULE_SWITCH 1 // 开启NB物联网功能
|
||||
/* Utilities */
|
||||
|
||||
#define TEST_ENABLE //打开所有的终端测试程序
|
||||
|
|
Loading…
Reference in New Issue