加了本地删除阀门数据信息的功能
This commit is contained in:
parent
dac836d401
commit
4468240528
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-10-23 17:14:16
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-25 17:03:21
|
||||
* @LastEditTime: 2025-01-02 09:51:27
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\applications\main.c
|
||||
* @Descrt_thread_
|
||||
*
|
||||
|
@ -14,7 +14,7 @@
|
|||
#include "drivers/pin.h"
|
||||
#include <board.h>
|
||||
#include "drv_gpio.h"
|
||||
|
||||
#include "bsp_emv.h"
|
||||
#include "bsp_beep.h"
|
||||
#include "bsp_led.h"
|
||||
#include "bsp_rtc.h"
|
||||
|
@ -106,31 +106,20 @@ int _Self_Check_Mode(void)
|
|||
LED_STOP(r);
|
||||
LED_STOP(g);
|
||||
LED_STOP(y);
|
||||
|
||||
LED_CTRL(g, "500,500", 1);
|
||||
rt_thread_mdelay(500);
|
||||
LED_CTRL(g, "500,2500", 1);
|
||||
LED_START(g);
|
||||
rt_thread_mdelay(500);
|
||||
|
||||
LED_CTRL(y, "500,500", 1);
|
||||
rt_thread_mdelay(1000);
|
||||
LED_CTRL(y, "500,2500", 1);
|
||||
LED_START(y);
|
||||
rt_thread_mdelay(500);
|
||||
|
||||
LED_CTRL(r, "500,500", 1);
|
||||
rt_thread_mdelay(1000);
|
||||
LED_CTRL(r, "500,2500", 1);
|
||||
LED_START(r);
|
||||
rt_thread_mdelay(500);
|
||||
rt_thread_mdelay(1000);
|
||||
LED_STOP(r);
|
||||
LED_STOP(g);
|
||||
LED_STOP(y);
|
||||
BEEP_SELF_CHECK;
|
||||
rt_thread_mdelay(2000);
|
||||
// 第5s关闭电磁阀
|
||||
LOG_I("自检电磁阀动作");
|
||||
Bt_Valve_Handler(kValveCmdCtr, 0, RT_NULL);
|
||||
if (rt_sem_take(&bt_ctr_sem, 10000) == RT_EOK)
|
||||
{
|
||||
LOG_D("电磁阀动作完成");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_E("电磁阀动作失败");
|
||||
}
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
|
@ -291,21 +280,37 @@ int main(void)
|
|||
|
||||
if (Sensor_device.detection_flag == kSensorAlarm)
|
||||
{
|
||||
LED_G_NORMAL;
|
||||
rt_thread_mdelay(500);
|
||||
Send_Laser_Alarm_Event(kAlarmEvent);
|
||||
}
|
||||
else if (Sensor_device.detection_flag == kSensorFault)
|
||||
{
|
||||
Send_Laser_Alarm_Event(kFaultEvent);
|
||||
}
|
||||
else if (Sensor_device.detection_flag == kSensorEndOfLife)
|
||||
if (Sensor_device.end_of_life == 1)
|
||||
{
|
||||
Send_Laser_Alarm_Event(kSensorFailureEvent);
|
||||
}
|
||||
else
|
||||
else if (Sensor_device.detection_flag == kSensorFault)
|
||||
{
|
||||
LOG_D("正常检测模式");
|
||||
LED_G_NORMAL;
|
||||
LOG_D("LED_G_NORMAL");
|
||||
rt_thread_mdelay(500);
|
||||
Send_Laser_Alarm_Event(kFaultEvent);
|
||||
}
|
||||
if (SysControl.last_status == kSelfCheckEvent)
|
||||
{
|
||||
rt_thread_mdelay(5000);
|
||||
// 第5s关闭电磁阀
|
||||
LOG_I("自检机械手动作");
|
||||
EMV_FORWARD_ON(50);
|
||||
rt_thread_mdelay(10);
|
||||
EMV_BACKWARD_ON(50);
|
||||
Bt_Valve_Handler(kValveCmdCtr, 0, RT_NULL); // 自检无线阀门
|
||||
if (rt_sem_take(&bt_ctr_sem, 10000) == RT_EOK)
|
||||
{
|
||||
LOG_D("电磁阀动作完成");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_E("电磁阀动作失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (received_event & Get_Sys_Event_Flag(kAlarmExceptionEvent)) // 浓度异常
|
||||
|
@ -434,10 +439,10 @@ int main(void)
|
|||
SysControl.status = kSelfCheckEvent;
|
||||
|
||||
_Self_Check_Mode();
|
||||
Send_Laser_Alarm_Event(kNormalDetectionEvents);
|
||||
#if (IOT_MODULE_SWITCH == 1)
|
||||
Ml307_Send_Event(kMl307SelfCheckEvent);
|
||||
#endif
|
||||
Send_Laser_Alarm_Event(kNormalDetectionEvents);
|
||||
}
|
||||
else if (received_event & Get_Sys_Event_Flag(kSensorFailureEvent)) // 失效
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-11-30 15:46:21
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-03 17:41:41
|
||||
* @LastEditTime: 2025-01-02 10:11:17
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\inc\bsp_beep.h
|
||||
* @Description:
|
||||
* @
|
||||
|
@ -73,7 +73,7 @@ extern agile_led_t *beep;
|
|||
#define BEEP_SELF_CHECK \
|
||||
do \
|
||||
{ \
|
||||
BEEP_CTRL("500,500", 3); \
|
||||
BEEP_CTRL("500,500", 1); \
|
||||
BEEP_START; \
|
||||
} while (0U)
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ typedef enum
|
|||
kValveCmdReg,
|
||||
kValveCmdRem,
|
||||
kValveCmdRep,
|
||||
kValveCmdRemAll,
|
||||
kValveCmdMax
|
||||
} ValveCmdType;
|
||||
|
||||
|
@ -48,9 +49,9 @@ typedef enum
|
|||
kValveEventReg,
|
||||
kValveEventRem,
|
||||
kValveEventRep,
|
||||
kValveEventRemAll,
|
||||
kValveEventStatus,
|
||||
kValveEventMax
|
||||
|
||||
}ValveEventType;
|
||||
|
||||
typedef struct __attribute__((packed))
|
||||
|
|
|
@ -74,7 +74,7 @@ extern agile_led_t *led_y;
|
|||
LED_STOP(r); \
|
||||
LED_STOP(g); \
|
||||
LED_STOP(y); \
|
||||
LED_CTRL(g, "200,200", 3);\
|
||||
LED_CTRL(g, "500,500", -1);\
|
||||
LED_START(g);\
|
||||
} while (0U)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-11-30 15:46:21
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-05 09:08:12
|
||||
* @LastEditTime: 2025-01-02 10:08:44
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\inc\bsp_ml307.h
|
||||
* @Description:
|
||||
* @
|
||||
|
@ -231,5 +231,7 @@ struct Ml307_Ops
|
|||
extern struct Ml307_Ops ml307_ops;
|
||||
extern rt_sem_t ml307_recv_sem;
|
||||
extern rt_uint8_t ml307_conncet_tcp_flag;
|
||||
extern rt_uint8_t power_on_send_flag;
|
||||
|
||||
extern rt_sem_t ml307_life_sem;
|
||||
void Ml307_Send_Event(Ml307Event event_type);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author : stark1898y 1658608470@qq.com
|
||||
* @Date : 2024-09-04 13:33:49
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-27 13:03:07
|
||||
* @LastEditTime: 2025-01-02 10:16:34
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\at_device_ml307.c
|
||||
* @Description :
|
||||
*
|
||||
|
@ -150,8 +150,10 @@ static void urc_tcp_recv(struct at_client *client, const char *data, rt_size_t s
|
|||
{
|
||||
rt_memset(ml307_ops.recv, 0, sizeof(struct Ml307RecvData)); // 清空结构体
|
||||
rt_memcpy(ml307_ops.recv, recv_byte_buf, sizeof(struct Ml307RecvData));
|
||||
|
||||
rt_sem_release(ml307_recv_sem);
|
||||
if (ml307_ops.recv->recv_data.event_type != INSTRUCTION_HEART_BEAT)//加这个的原因就是如果有指令下发,会出现两个信号量,指令会执行两次,所以排除心跳包才释放信号量
|
||||
{
|
||||
rt_sem_release(ml307_recv_sem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -176,7 +178,6 @@ static void urc_tcp_connect_state(struct at_client *client, const char *data, rt
|
|||
{
|
||||
if (id == socket_id)
|
||||
{
|
||||
LOG_D("ml307 connect to tcp server success");
|
||||
ml307_conncet_tcp_flag = 1;
|
||||
rt_sem_release(ml307_connect_sem);
|
||||
}
|
||||
|
@ -302,6 +303,15 @@ static int at_device_ml307_connect_tcp(struct at_device *device)
|
|||
LOG_E("ml307 connect to tcp server failed");
|
||||
}
|
||||
}
|
||||
else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 552") == RT_EOK)//已经连接了
|
||||
{
|
||||
ret = RT_EOK;
|
||||
break;
|
||||
}
|
||||
else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 559") == RT_EOK)//SOCKET错误
|
||||
{
|
||||
at_device_ml307_disconnect_tcp(device);
|
||||
}
|
||||
}
|
||||
rt_thread_mdelay(3000);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-12-03 10:31:45
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-27 13:08:43
|
||||
* @LastEditTime: 2025-01-02 14:11:22
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -189,6 +189,26 @@ int BSP_Bt_Remove_Valve(rt_uint8_t id, rt_uint8_t *mac_addr)
|
|||
return RT_ERROR;
|
||||
}
|
||||
|
||||
/*移除所有阀门信息*/
|
||||
int BSP_Bt_Remove_All_Valve(void)
|
||||
{
|
||||
rt_uint8_t ret = 0;
|
||||
|
||||
BtData_t *ptr = (BtData_t *)rt_malloc(sizeof(BtData_t) + 7);
|
||||
ptr->cmd = kValveCmdRemAll;
|
||||
ptr->buf[0] = 0;
|
||||
BT_GenerateRawFrame(&bt_frame, (rt_uint8_t *)ptr, 2);
|
||||
rt_free(ptr);
|
||||
|
||||
ret = BSP_Bt_Send_Data((rt_uint8_t *)&bt_frame.buf[0], bt_frame.len);
|
||||
if (ret == bt_frame.len)
|
||||
{
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
return RT_ERROR;
|
||||
}
|
||||
|
||||
/*更换阀门信息*/
|
||||
int BSP_Bt_Replace_Valve(rt_uint8_t id, rt_uint8_t *mac_addr, rt_uint8_t *new_mac_addr)
|
||||
{
|
||||
|
@ -211,25 +231,26 @@ int BSP_Bt_Replace_Valve(rt_uint8_t id, rt_uint8_t *mac_addr, rt_uint8_t *new_ma
|
|||
return RT_ERROR;
|
||||
}
|
||||
|
||||
// 这个ID是真实id减一,例:第一个阀门,则为 1 - 1 = 0
|
||||
/*data 数据用作阀门更换时的新MAC参数6字节*/
|
||||
int Bt_Valve_Handler(ValveCmdType type, rt_uint8_t id, rt_uint8_t *data)
|
||||
{
|
||||
int ret = RT_EOK;
|
||||
switch (type)
|
||||
{
|
||||
case kValveCmdCtr: // 阀门控制
|
||||
ret = BSP_Bt_Valve_Ctr(valve[id].valve_id, valve[id].valve_mac, WirelessValveClose); // 关阀门
|
||||
ret = BSP_Bt_Valve_Ctr(id, &data[0], WirelessValveClose); // 关阀门
|
||||
break;
|
||||
case kValveCmdReg: // 阀门注册
|
||||
ret = BSP_Bt_Register_Valve(valve[id].valve_id, valve[id].valve_mac);
|
||||
ret = BSP_Bt_Register_Valve(id, &data[0]);
|
||||
break;
|
||||
case kValveCmdRem: // 阀门移除
|
||||
ret = BSP_Bt_Remove_Valve(valve[id].valve_id, valve[id].valve_mac);
|
||||
ret = BSP_Bt_Remove_Valve(id, &data[0]);
|
||||
break;
|
||||
case kValveCmdRep: // 阀门更换
|
||||
ret = BSP_Bt_Replace_Valve(valve[id].valve_id, valve[id].valve_mac, data);
|
||||
ret = BSP_Bt_Replace_Valve(id, &data[0], &data[6]);
|
||||
break;
|
||||
case kValveCmdRemAll: // 阀门更换
|
||||
ret = BSP_Bt_Remove_All_Valve();
|
||||
break;
|
||||
default:
|
||||
ret = -RT_ERROR;
|
||||
LOG_E("unknown valve command type");
|
||||
|
@ -337,6 +358,15 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
LOG_E("阀门更换失败");
|
||||
}
|
||||
break;
|
||||
case kValveEventRemAll:
|
||||
LOG_I("接收到移除所有阀门信息回应");
|
||||
LOG_HEX("bt_rx_data:", 16, data_buf, fram_len);
|
||||
if (data_buf[fram_len - 3] == RT_TRUE) // 移除成功
|
||||
{
|
||||
LOG_D("移除阀门响应成功");
|
||||
rt_sem_release(&bt_rem_sem);
|
||||
}
|
||||
break;
|
||||
case kValveEventStatus:
|
||||
LOG_I("接收到阀门心跳数据:");
|
||||
LOG_HEX("bt_rx_data:", 16, data_buf, fram_len);
|
||||
|
@ -345,6 +375,7 @@ int BSP_Bt_Process(uint8_t *data, uint16_t len)
|
|||
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]);
|
||||
break;
|
||||
|
|
|
@ -59,25 +59,33 @@ static void _CommonBtnEvtCb(void *arg)
|
|||
if ((flex_button_event_read(&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_LONG_HOLD) || (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_LONG_HOLD))
|
||||
{
|
||||
LOG_I("本地清除阀门信息");
|
||||
LED_ON(r);
|
||||
rt_uint8_t mac_addr[6] = {0};
|
||||
Bt_Valve_Handler(kValveCmdRem, 0, RT_NULL);
|
||||
if(Flash_Get_Valve_Num() == 0)
|
||||
{
|
||||
LOG_I("本地没有阀门信息");
|
||||
}
|
||||
else
|
||||
{
|
||||
//清空本地阀门信息
|
||||
if (Flash_Set_Mac_Addr(mac_addr, 1) != RESET)
|
||||
{
|
||||
LOG_E("本地阀门信息清空完成");
|
||||
}
|
||||
}
|
||||
Bt_Valve_Handler(kValveCmdRemAll, RT_NULL, RT_NULL);
|
||||
if (rt_sem_take(&bt_rem_sem, 10000) == RT_EOK) // 如果没刷掉数据,则黄灯会亮一秒,如果刷成功了,则红灯闪一下黄灯不会亮
|
||||
{
|
||||
if (Flash_Set_Mac_Addr(mac_addr, 0) != -RT_ERROR) // 将flash数据清掉
|
||||
{
|
||||
rt_thread_mdelay(100);
|
||||
LED_OFF(r);
|
||||
LOG_I("本地清除阀门信息成功");
|
||||
}
|
||||
LED_ON(r);
|
||||
rt_thread_mdelay(100);
|
||||
LED_OFF(r);
|
||||
LOG_I("本地清除阀门信息成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_E("本地清除阀门信息错误");
|
||||
LED_OFF(r);
|
||||
LED_OFF(g);
|
||||
LED_ON(y);
|
||||
rt_thread_mdelay(1000);
|
||||
rt_thread_mdelay(100);
|
||||
LED_OFF(y);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-10-09 08:42:14
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-05 15:44:33
|
||||
* @LastEditTime: 2025-01-02 09:45:39
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_emv.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -164,7 +164,6 @@ static void TEST_Jxs(int argc, char **argv)
|
|||
{
|
||||
EMV_BACKWARD_ON(time);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT(TEST_Jxs,"TEST_Jxs 方向 时间ms");
|
||||
|
|
|
@ -21,6 +21,17 @@ struct flash_sever_info sever_info =
|
|||
// .server_url = "8.135.10.183",
|
||||
};
|
||||
|
||||
/*默认的系统配置*/
|
||||
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 = 0x000A; // 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;
|
||||
rt_uint8_t sys_emagnetic_switch = 0x04; // 具备阀门功能
|
||||
rt_uint8_t sys_relay_switch = 0x04; // 具备继电器功能
|
||||
|
||||
extern int Convert_To_Hex(const struct flash_sever_info *sever_info, uint8_t *hex_array);
|
||||
#define GETATTR(info, id) ((id) == kHwVerId ? (&(info)->hw_ver) \
|
||||
: (id) == kSwVerId ? (&(info)->sw_ver) \
|
||||
|
@ -87,16 +98,6 @@ const rt_uint32_t hr_sys_cfg_info_len[kCnt] = {
|
|||
|
||||
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 = 0x000A; // 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;
|
||||
rt_uint8_t sys_emagnetic_switch = 0x04; // 具备阀门功能
|
||||
rt_uint8_t sys_relay_switch = 0x04; // 具备继电器功能
|
||||
|
||||
static void BSP_Flash_UnLock(void)
|
||||
{
|
||||
|
@ -361,27 +362,16 @@ int Flash_Set_Mac_Addr(rt_uint8_t *mac_addr, rt_uint8_t number)
|
|||
/*读取MAC地址 number :1-8*/
|
||||
int Flash_Get_Mac_Addr(rt_uint8_t *mac_addr, rt_uint8_t number)
|
||||
{
|
||||
rt_uint8_t data[FLASH_VALVE_MAC_ADDR_LEN];
|
||||
char mac[16] = {20};
|
||||
rt_memcpy(data, (rt_uint8_t *)(FLASH_VALVE_1_MAC_ADDR_ADDR + (number - 1) * FLASH_VALVE_MAC_ADDR_LEN), FLASH_VALVE_MAC_ADDR_LEN);
|
||||
if (data == RT_NULL)
|
||||
if (*(rt_uint16_t *)(FLASH_VALVE_1_MAC_ADDR_ADDR + (number - 1) * FLASH_VALVE_MAC_ADDR_LEN) == 0xe339)
|
||||
{
|
||||
LOG_E("Flash_Get_Mac_Addr failed");
|
||||
return -RT_ERROR;
|
||||
}
|
||||
// 判断读出来的数是否是flash的默认值 如果默认值是0xe3e9的话
|
||||
if ((data[0] == 0xe3 || data[0] == 0xe9) &&
|
||||
(data[1] == 0xe3 || data[1] == 0xe9) &&
|
||||
(data[2] == 0xe3 || data[2] == 0xe9) &&
|
||||
(data[3] == 0xe3 || data[3] == 0xe9) &&
|
||||
(data[4] == 0xe3 || data[4] == 0xe9) &&
|
||||
(data[5] == 0xe3 || data[5] == 0xe9))
|
||||
{
|
||||
rt_memset(data, 0, 6);
|
||||
rt_memcpy(mac_addr, data, FLASH_VALVE_MAC_ADDR_LEN);
|
||||
return RT_EOK;
|
||||
LOG_D("无阀门数据");
|
||||
return -1;
|
||||
}
|
||||
|
||||
rt_uint8_t data[FLASH_VALVE_MAC_ADDR_LEN];
|
||||
char mac[16] = {20};
|
||||
|
||||
rt_memcpy(data, (rt_uint8_t *)(FLASH_VALVE_1_MAC_ADDR_ADDR + (number - 1) * FLASH_VALVE_MAC_ADDR_LEN), FLASH_VALVE_MAC_ADDR_LEN);
|
||||
rt_snprintf(mac, 20, "%02x:%02x:%02x:%02x:%02x:%02x",
|
||||
data[5], data[4], data[3], data[2], data[1], data[0]);
|
||||
LOG_I("mac_addr:%s", mac);
|
||||
|
|
|
@ -11,11 +11,17 @@
|
|||
#include "bsp_led.h"
|
||||
#include "rtthread.h"
|
||||
#include "pin.h"
|
||||
#include "user_sys.h"
|
||||
#include "bsp_ml307.h"
|
||||
|
||||
#define LOG_TAG "bsp.led"
|
||||
#define LOG_LVL LOG_LVL_DBG
|
||||
#include <ulog.h>
|
||||
|
||||
ALIGN(4)
|
||||
static char user_led_thread_stack[512];
|
||||
static struct rt_thread user_led_thread;
|
||||
|
||||
//用到了atoi
|
||||
#include <stdlib.h>
|
||||
|
||||
|
@ -23,6 +29,44 @@ agile_led_t *led_r = RT_NULL;
|
|||
agile_led_t *led_g = RT_NULL;
|
||||
agile_led_t *led_y = RT_NULL;
|
||||
|
||||
static void BSP_Led_thread_entry(void *param)
|
||||
{
|
||||
// static rt_bool_t led_state_flag = RT_FALSE;
|
||||
while (1)
|
||||
{
|
||||
#if 0
|
||||
if (mb26_conncet_tcp_flag)
|
||||
{
|
||||
if ((SysControl.status == kNormalDetectionEvents) && (led_state_flag != RT_TRUE))
|
||||
{
|
||||
LED_G_INTERNET;
|
||||
led_state_flag = RT_TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((SysControl.status == kNormalDetectionEvents) && (led_state_flag != RT_FALSE))
|
||||
{
|
||||
LED_G_NORMAL;
|
||||
led_state_flag = RT_FALSE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (SysControl.status == kNormalDetectionEvents)
|
||||
{
|
||||
if ((power_on_send_flag))
|
||||
{
|
||||
LED_G_INTERNET;
|
||||
}
|
||||
else if ((!power_on_send_flag))
|
||||
{
|
||||
LED_G_NORMAL;
|
||||
}
|
||||
}
|
||||
rt_thread_mdelay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int BSP_LED_Init(void)
|
||||
{
|
||||
|
@ -30,8 +74,20 @@ int BSP_LED_Init(void)
|
|||
led_g = agile_led_create(LED_G_PIN, PIN_LOW, "100,100", 0);
|
||||
led_y = agile_led_create(LED_Y_PIN, PIN_LOW, "100,100", 0);
|
||||
|
||||
LOG_D("BSP_LED_Init");
|
||||
rt_err_t ret = rt_thread_init(&user_led_thread,
|
||||
"user_led_thread",
|
||||
BSP_Led_thread_entry,
|
||||
RT_NULL,
|
||||
&user_led_thread_stack[0],
|
||||
sizeof(user_led_thread_stack),
|
||||
5, 5);
|
||||
|
||||
if (ret == RT_EOK)
|
||||
{
|
||||
rt_thread_startup(&user_led_thread);
|
||||
}
|
||||
|
||||
LOG_D("BSP_LED_Init");
|
||||
return RT_EOK;
|
||||
}
|
||||
INIT_DEVICE_EXPORT(BSP_LED_Init);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-11-30 15:46:21
|
||||
* @LastEditors: mbw && 1600520629@qq.com
|
||||
* @LastEditTime: 2024-12-27 17:49:25
|
||||
* @LastEditTime: 2025-01-02 10:41:22
|
||||
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c
|
||||
* @Description:
|
||||
*
|
||||
|
@ -885,10 +885,10 @@ void Handle_Self_Check(struct Ml307_Ops *ops)
|
|||
char temp[32] = "0";
|
||||
String2Hex(temp, imei); // 将字符串转为十六进制字符串
|
||||
LOG_D("temp: %s", temp);
|
||||
|
||||
Send_Laser_Alarm_Event(kSelfCheckEvent);
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_SELF_CHECK, temp, RESPONSE_CODE_SUCCESS);
|
||||
|
||||
Send_Laser_Alarm_Event(SysControl.status); // 自检完要恢复当前系统状态,恢复现场
|
||||
Send_Laser_Alarm_Event(kNormalDetectionEvents);//先返回正常状态,然后跳转到所处的状态
|
||||
}
|
||||
|
||||
void Handle_Mute(struct Ml307_Ops *ops)
|
||||
|
@ -952,7 +952,7 @@ rt_err_t Handle_Close_Valve(struct Ml307_Ops *ops)
|
|||
if (i == FLASH_VALVE_MAC_ADDR_LEN)
|
||||
{
|
||||
LOG_D("mac地址匹配成功,执行关阀动作\n");
|
||||
if (Bt_Valve_Handler(kValveCmdCtr, 0, RT_NULL) != RT_EOK)
|
||||
if (Bt_Valve_Handler(kValveCmdCtr, data[0], &data[1]) != RT_EOK)
|
||||
{
|
||||
LOG_E("关阀失败\n");
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_CLOSE_VALVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||
|
@ -1195,7 +1195,7 @@ rt_err_t Handle_Valve_Add(struct Ml307_Ops *ops)
|
|||
|
||||
valve[data[0] - 1].valve_id = data[0];//更新阀门ID
|
||||
rt_memcpy(valve[data[0] - 1].valve_mac, &data[1], FLASH_VALVE_MAC_ADDR_LEN); // 更新MAC地址
|
||||
if (Bt_Valve_Handler(kValveCmdReg, data[0] - 1, RT_NULL) != RT_EOK)//更新蓝牙端mac地址
|
||||
if (Bt_Valve_Handler(kValveCmdReg, data[0], &data[1]) != RT_EOK)//更新蓝牙端mac地址
|
||||
{
|
||||
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);
|
||||
|
@ -1253,7 +1253,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[1]) != RT_EOK)
|
||||
if (Bt_Valve_Handler(kValveCmdRep, data[0], &data[1]) != 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);
|
||||
|
@ -1314,7 +1314,7 @@ rt_err_t Handle_Remove_Valve(struct Ml307_Ops *ops)
|
|||
}
|
||||
rt_memcpy(data, (ops->recv->recv_data.res_data + 8), FLASH_VALVE_MAC_ADDR_LEN + 1);
|
||||
LOG_D("data[0] = %x data[1] = %x data[2] = %x data[3] = %x data[4] = %x, data[5] = %x", data[0], data[1], data[2], data[3], data[4], data[5], data[6]);
|
||||
if (Bt_Valve_Handler(kValveCmdRem, 0, RT_NULL) != RT_EOK)
|
||||
if (Bt_Valve_Handler(kValveCmdRem, data[0], &data[1]) != RT_EOK)
|
||||
{
|
||||
LOG_E("移除阀门设备失败\n");
|
||||
ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_REMOVE, temp, RESPONSE_CODE_ACTION_FAILURE);
|
||||
|
@ -1706,7 +1706,6 @@ static void Ml307_Life_Thread_Entry(void *parameter)
|
|||
}
|
||||
}
|
||||
|
||||
// 定时器回调函数,当1分钟内没有数据交互时,关闭tcp连接
|
||||
static void Ml307_Upload_Timer_Cb(void *parameter)
|
||||
{
|
||||
Ml307_Send_Event(kMl307TimeCalibrationEvent); // 更新下时间
|
||||
|
|
Loading…
Reference in New Issue