将标定值改为1600,预热时间改为3min,加了断电关阀功能

This commit is contained in:
小马_666 2025-01-04 16:08:24 +08:00
parent d446e2a999
commit 9a7c78302f
8 changed files with 234 additions and 276 deletions

View File

@ -2,7 +2,7 @@
* @Author: mbw * @Author: mbw
* @Date: 2024-10-23 17:14:16 * @Date: 2024-10-23 17:14:16
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-01-02 17:29:27 * @LastEditTime: 2025-01-04 16:01:41
* @FilePath: \ble_bjq_ch303rct6_ml307\applications\main.c * @FilePath: \ble_bjq_ch303rct6_ml307\applications\main.c
* @Descrt_thread_ * @Descrt_thread_
* *
@ -149,8 +149,8 @@ void Preheat_Timer_Callback(void *parameter)
int main(void) int main(void)
{ {
// 定义超时时间,单位为毫秒 // 定义超时时间,单位为毫秒
// #define TIMEOUT_MS 3 * 60 * 1000 #define TIMEOUT_MS 3 * 60 * 1000
#define TIMEOUT_MS 8 * 1000 // #define TIMEOUT_MS 8 * 1000
#define WORK_TIMER_CNT (1000 * 60 * 60 * 24) #define WORK_TIMER_CNT (1000 * 60 * 60 * 24)
rt_err_t result = RT_EINVAL; rt_err_t result = RT_EINVAL;
rt_uint32_t received_event; rt_uint32_t received_event;
@ -381,7 +381,7 @@ int main(void)
Flash_Write_Record(kRecordFault); Flash_Write_Record(kRecordFault);
LED_Y_FAULT; LED_Y_FAULT;
BEEP_FAULT; // BEEP_FAULT;
#if (IOT_MODULE_SWITCH == 1) #if (IOT_MODULE_SWITCH == 1)
Ml307_Send_Event(kMl307FaultEvent); Ml307_Send_Event(kMl307FaultEvent);
@ -421,7 +421,7 @@ int main(void)
SysControl.last_status = SysControl.status; SysControl.last_status = SysControl.status;
SysControl.status = kPowerDownEvent; SysControl.status = kPowerDownEvent;
GAS_POWER_CLOSE;
// 写入掉电记录 // 写入掉电记录
Flash_Write_Record(kRecordPowerDown); Flash_Write_Record(kRecordPowerDown);
@ -431,7 +431,9 @@ int main(void)
#endif #endif
if (Flash_Get_Valve_Num()) if (Flash_Get_Valve_Num())
{ {
Bt_Valve_Handler(kValveCmdCtr, 0, RT_NULL); rt_uint8_t mac_addr[6];
Flash_Get_Mac_Addr(mac_addr, 1);
Bt_Valve_Handler(kValveCmdCtr, 1, mac_addr);
if (rt_sem_take(&bt_ctr_sem, 10000) == RT_EOK) if (rt_sem_take(&bt_ctr_sem, 10000) == RT_EOK)
{ {
LOG_D("电磁阀动作完成"); LOG_D("电磁阀动作完成");
@ -441,7 +443,7 @@ int main(void)
LOG_E("电磁阀动作失败"); LOG_E("电磁阀动作失败");
} }
} }
GAS_POWER_CLOSE;
LOG_D("Enter AnalogWatchdog Interrupt"); LOG_D("Enter AnalogWatchdog Interrupt");
// 等待30s,要是还没断电就重启 // 等待30s,要是还没断电就重启
for (uint8_t i = 0; i < 30; i++) for (uint8_t i = 0; i < 30; i++)

View File

@ -17,7 +17,7 @@
#define SYS_PREHEAT_TIME_S (10U) #define SYS_PREHEAT_TIME_S (10U)
#define SYS_MUTE_TIME_S (uint8_t)(10 * 3) #define SYS_MUTE_TIME_S (uint8_t)(10 * 3)
#define MAX_EXPIRATION_DAYS (uint16_t)(365 * 10 + 30 * 3) #define MAX_EXPIRATION_DAYS (uint16_t)(365 * 5 + 30 * 3)
typedef enum typedef enum
{ {

View File

@ -67,14 +67,14 @@ extern agile_led_t *led_y;
LED_ON(g); \ LED_ON(g); \
} while (0U) } while (0U)
//网络连接指示灯 //网络连接断开指示灯
#define LED_G_INTERNET \ #define LED_G_INTERNET \
do \ do \
{ \ { \
LED_STOP(r); \ LED_STOP(r); \
LED_STOP(g); \ LED_STOP(g); \
LED_STOP(y); \ LED_STOP(y); \
LED_CTRL(g, "500,500", -1);\ LED_CTRL(g, "500,1000", -1);\
LED_START(g);\ LED_START(g);\
} while (0U) } while (0U)

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-09-04 13:33:49 * @Date : 2024-09-04 13:33:49
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-01-03 16:44:30 * @LastEditTime: 2025-01-04 15:48:16
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\at_device_ml307.c * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\at_device_ml307.c
* @Description : * @Description :
* *
@ -46,7 +46,6 @@
#define ML307_THREAD_STACK_SIZE (4096) #define ML307_THREAD_STACK_SIZE (4096)
#define ML307_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX / 2) #define ML307_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX / 2)
ml307_sys_info ml307 = {0}; ml307_sys_info ml307 = {0};
struct rt_completion ml307_init_complate; struct rt_completion ml307_init_complate;
volatile rt_uint8_t socket_id = 0; volatile rt_uint8_t socket_id = 0;
@ -155,7 +154,7 @@ 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_memset(ml307_ops.recv, 0, sizeof(struct Ml307RecvData)); // 清空结构体
rt_memcpy(ml307_ops.recv, recv_byte_buf, sizeof(struct Ml307RecvData)); rt_memcpy(ml307_ops.recv, recv_byte_buf, sizeof(struct Ml307RecvData));
if (ml307_ops.recv->recv_data.event_type != INSTRUCTION_HEART_BEAT)//加这个的原因就是如果有指令下发,会出现两个信号量,指令会执行两次,所以排除心跳包才释放信号量 if (ml307_ops.recv->recv_data.event_type != INSTRUCTION_HEART_BEAT) // 加这个的原因就是如果有指令下发,会出现两个信号量,指令会执行两次,所以排除心跳包才释放信号量
{ {
rt_sem_release(ml307_recv_sem); rt_sem_release(ml307_recv_sem);
} }
@ -186,25 +185,24 @@ static void urc_tcp_connect_state(struct at_client *client, const char *data, rt
switch (err_code) switch (err_code)
{ {
case 0: case 0:
LOG_D("TCP connect success");
ml307_conncet_tcp_flag = 1; ml307_conncet_tcp_flag = 1;
break; break;
case 571: case 571:
LOG_D("PDP激活失败"); LOG_D("PDP激活失败");
ml307_conncet_tcp_flag = 0; ml307_conncet_tcp_flag = 0;
rt_sem_release(ml307_disconnect_sem);
break; break;
default: default:
LOG_D("连接失败"); LOG_D("连接失败");
ml307_conncet_tcp_flag = 0; ml307_conncet_tcp_flag = 0;
rt_sem_release(ml307_disconnect_sem);
break; break;
} }
rt_sem_release(ml307_connect_flag_sem);//用于返回连接的标志量在连接函数中 rt_sem_release(ml307_connect_flag_sem); // 用于返回连接的标志量在连接函数中
rt_sem_release(ml307_disconnect_sem);
} }
} }
} }
static void urc_tcp_disconnect(struct at_client *client, const char *data, rt_size_t size) static void urc_tcp_disconnect(struct at_client *client, const char *data, rt_size_t size)
{ {
size_t state = 0, id; size_t state = 0, id;
@ -236,7 +234,7 @@ static void urc_tcp_disconnect(struct at_client *client, const char *data, rt_si
} }
} }
static void urc_sim_remove(struct at_client *client, const char *data, rt_size_t size) void urc_sim_remove(struct at_client *client, const char *data, rt_size_t size)
{ {
LOG_D("SIM removed"); LOG_D("SIM removed");
Send_Laser_Alarm_Event(kFaultEvent); Send_Laser_Alarm_Event(kFaultEvent);
@ -247,7 +245,7 @@ static const struct at_urc urc_table[] = {
{"+MIPURC: \"disconn\"", "\r\n", urc_tcp_disconnect}, {"+MIPURC: \"disconn\"", "\r\n", urc_tcp_disconnect},
{"+MIPURC: \"rtcp\"", "\r\n", urc_tcp_recv}, {"+MIPURC: \"rtcp\"", "\r\n", urc_tcp_recv},
{"+MATREADY", "\r\n", urc_device_reset}, {"+MATREADY", "\r\n", urc_device_reset},
{"+CPIN: SIM REMOVED", "\r\n", urc_sim_remove}, // {"+CPIN: SIM REMOVED", "\r\n", urc_sim_remove},
}; };
void show_resp_info(at_response_t resp) void show_resp_info(at_response_t resp)
@ -330,12 +328,12 @@ static int at_device_ml307_connect_tcp(struct at_device *device)
} }
} }
} }
else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 552") == RT_EOK)//已经连接了 else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 552") == RT_EOK) // 已经连接了
{ {
ret = RT_EOK; ret = RT_EOK;
break; break;
} }
else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 559") == RT_EOK)//SOCKET错误 else if (at_resp_get_line_by_kw(resp, "+CME ERROR: 559") == RT_EOK) // SOCKET错误
{ {
ml307_conncet_tcp_flag = 0; ml307_conncet_tcp_flag = 0;
rt_sem_release(ml307_disconnect_sem); rt_sem_release(ml307_disconnect_sem);
@ -370,7 +368,7 @@ int at_send_data(struct at_device *device, const char *data, rt_size_t send_len)
size_t len = 0; size_t len = 0;
if (at_resp_parse_line_args_by_kw(resp, "+MIPSEND:", "+MIPSEND:%*d,%d", &len) > 0) if (at_resp_parse_line_args_by_kw(resp, "+MIPSEND:", "+MIPSEND:%*d,%d", &len) > 0)
{ {
if(len == send_len) if (len == send_len)
{ {
LOG_D("send data success, len:%d", len); LOG_D("send data success, len:%d", len);
at_delete_resp(resp); at_delete_resp(resp);
@ -399,6 +397,21 @@ static int ml307_check_link_status(struct at_device *device)
LOG_E("no memory for resp create."); LOG_E("no memory for resp create.");
return -RT_ERROR; return -RT_ERROR;
} }
if (at_obj_exec_cmd(device->client, resp, "AT+MIPCALL?") < 0)
{
result = -RT_ERROR;
goto __exit;
}
//// 查询拨号状态
if (at_resp_parse_line_args_by_kw(resp, "+MIPCALL:", "+MIPCALL: %d,%*d,%*s", &link_stat) > 0)
{
if (link_stat == 1)
{
result = RT_EOK;
}
}
if (at_obj_exec_cmd(device->client, resp, "AT+CGACT?") < 0) if (at_obj_exec_cmd(device->client, resp, "AT+CGACT?") < 0)
{ {
result = -RT_ERROR; result = -RT_ERROR;
@ -455,6 +468,7 @@ static int ml307_netdev_set_info(struct netdev *netdev)
result = -RT_ENOMEM; result = -RT_ENOMEM;
goto __exit; goto __exit;
} }
device->class->device_ops->control(device, AT_DEVICE_CTRL_NET_CONN, RT_NULL); // 打开连接
/* set network interface device IP address */ /* set network interface device IP address */
{ {
#define IP_ADDR_SIZE_MAX 16 #define IP_ADDR_SIZE_MAX 16
@ -512,20 +526,26 @@ static void ml307_check_link_status_entry(void *parameter)
LOG_E("get device(%s) failed.", netdev->name); LOG_E("get device(%s) failed.", netdev->name);
return; return;
} }
at_response_t resp = at_create_resp(ML307_IMEI_RESP_SIZE, 0, ML307_INFO_RESP_TIMO);
if (resp == RT_NULL)
{
LOG_E("no memory for resp create.");
return;
}
while (1) while (1)
{ {
link_status = ml307_check_link_status(device); link_status = ml307_check_link_status(device);
if (link_status < 0) if (link_status < 0)
{ {
rt_thread_mdelay(ML307_LINK_DELAY_TIME); rt_thread_mdelay(ML307_LINK_DELAY_TIME);
at_exec_cmd(resp, "AT+MIPCALL=1,1");
continue; continue;
} }
/* check the network interface device link status */ // /* check the network interface device link status */
if ((ML307_LINK_STATUS_OK == link_status) != netdev_is_link_up(netdev)) // if ((ML307_LINK_STATUS_OK == link_status) != netdev_is_link_up(netdev))
{ // {
netdev_low_level_set_link_status(netdev, (ML307_LINK_STATUS_OK == link_status)); // netdev_low_level_set_link_status(netdev, (ML307_LINK_STATUS_OK == link_status));
} // }
rt_thread_delay(ML307_LINK_DELAY_TIME); rt_thread_delay(ML307_LINK_DELAY_TIME);
} }
} }
@ -533,7 +553,7 @@ static void ml307_check_link_status_entry(void *parameter)
int ml307_netdev_check_link_status(struct netdev *netdev) int ml307_netdev_check_link_status(struct netdev *netdev)
{ {
#define ML307_LINK_THREAD_TICK 20 #define ML307_LINK_THREAD_TICK 20
#define ML307_LINK_THREAD_STACK_SIZE (1024) #define ML307_LINK_THREAD_STACK_SIZE (2048)
#define ML307_LINK_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX - 2) #define ML307_LINK_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX - 2)
rt_thread_t tid; rt_thread_t tid;
@ -792,15 +812,15 @@ static struct netdev *ml307_netdev_add(const char *netdev_name)
/* ============================= ml307 device operations ============================= */ /* ============================= ml307 device operations ============================= */
// #define AT_SEND_CMD(client, resp, resp_line, timeout, cmd) \ #define AT_SEND_CMD(client, resp, resp_line, timeout, cmd) \
// do { \ do { \
// (resp) = at_resp_set_info((resp), 128, (resp_line), rt_tick_from_millisecond(timeout)); \ (resp) = at_resp_set_info((resp), 128, (resp_line), rt_tick_from_millisecond(timeout)); \
// if (at_obj_exec_cmd((client), (resp), (cmd)) < 0) \ if (at_obj_exec_cmd((client), (resp), (cmd)) < 0) \
// { \ { \
// result = -RT_ERROR; \ result = -RT_ERROR; \
// goto __exit; \ goto __exit; \
// } \ } \
// } while(0) } while (0)
/* initialize for ml307 */ /* initialize for ml307 */
static void ml307_init_thread_entry(void *parameter) static void ml307_init_thread_entry(void *parameter)
{ {
@ -810,7 +830,8 @@ static void ml307_init_thread_entry(void *parameter)
#define CEREG_RETRY 50 #define CEREG_RETRY 50
#define IPADDR_RETRY 10 #define IPADDR_RETRY 10
#define COMMON_RETRY 10 #define COMMON_RETRY 10
#define ML307_AT_DEFAULT_TIMEOUT 1000 #define CGATT_RETRY 10
#define ML307_AT_DEFAULT_TIMEOUT 5000
int i; int i;
rt_uint8_t retry_num = INIT_RETRY; rt_uint8_t retry_num = INIT_RETRY;
rt_err_t result = RT_EOK; rt_err_t result = RT_EOK;
@ -831,9 +852,9 @@ static void ml307_init_thread_entry(void *parameter)
while (retry_num--) while (retry_num--)
{ {
/* power on the ml307 device */ /* power on the ml307 device */
rt_thread_mdelay(500);
ml307_power_on(device);
rt_thread_mdelay(1000); rt_thread_mdelay(1000);
ml307_power_on(device);
rt_thread_mdelay(2000);
LOG_D("power on %s device.", device->name); LOG_D("power on %s device.", device->name);
/* wait ml307 startup finish, send AT every 500ms, if receive OK, SYNC success*/ /* wait ml307 startup finish, send AT every 500ms, if receive OK, SYNC success*/
if (at_client_obj_wait_connect(client, ML307_WAIT_CONNECT_TIME)) if (at_client_obj_wait_connect(client, ML307_WAIT_CONNECT_TIME))
@ -843,11 +864,7 @@ static void ml307_init_thread_entry(void *parameter)
} }
/* disable echo */ /* disable echo */
if (at_obj_exec_cmd(device->client, resp, "ATE0") != RT_EOK) AT_SEND_CMD(client, resp, 0, ML307_AT_DEFAULT_TIMEOUT, "ATE0");
{
result = -RT_ERROR;
goto __exit;
}
/* get module version */ /* get module version */
if (at_obj_exec_cmd(device->client, resp, "ATI") != RT_EOK) if (at_obj_exec_cmd(device->client, resp, "ATI") != RT_EOK)
{ {
@ -898,6 +915,7 @@ static void ml307_init_thread_entry(void *parameter)
result = -RT_ERROR; result = -RT_ERROR;
goto __exit; goto __exit;
} }
{ {
#define ML307_NETDEV_HWADDR_LEN 8 #define ML307_NETDEV_HWADDR_LEN 8
#define ML307_IMEI_LEN 15 #define ML307_IMEI_LEN 15
@ -941,7 +959,7 @@ static void ml307_init_thread_entry(void *parameter)
} }
} }
} }
rt_thread_mdelay(1000); rt_thread_mdelay(3000);
} }
if (i == CPIN_RETRY) if (i == CPIN_RETRY)
{ {
@ -949,41 +967,23 @@ static void ml307_init_thread_entry(void *parameter)
result = -RT_ERROR; result = -RT_ERROR;
goto __exit; goto __exit;
} }
// /*网络注册 */ if (at_obj_exec_cmd(device->client, resp, "AT+MIPCALL=1,1") != RT_EOK)
// for (i = 0; i < CSQ_RETRY; i++) {
// { result = -RT_ERROR;
// if (at_obj_exec_cmd(device->client, resp, "AT+CREG=1") == RT_EOK) goto __exit;
// { }
// rt_uint8_t state; char parsed_data[10] = {0};
// if (at_resp_parse_line_args_by_kw(resp, "+CREG:", "+CREG:%d", &state) > 0) for (i = 0; i < CGATT_RETRY; i++)
// { {
// if (state == 1) AT_SEND_CMD(client, resp, 0, ML307_AT_DEFAULT_TIMEOUT, "AT+CGATT?");
// { at_resp_parse_line_args_by_kw(resp, "+CGATT:", "+CGATT: %s", &parsed_data);
// LOG_D("%s device network registration success.", device->name); if (!rt_strncmp(parsed_data, "1", 1))
// /* code */ {
// } LOG_D("%s device Packet domain attach.", device->name);
// else break;
// { }
// LOG_E("%s device network registration failed.", device->name); rt_thread_mdelay(1000);
// result = -RT_ERROR; }
// goto __exit;
// }
// }
// else
// {
// LOG_D("%s device prase \"AT+CREG=1\" cmd error.", device->name);
// result = -RT_ERROR;
// goto __exit;
// }
// }
// rt_thread_mdelay(1000);
// }
// if (i == CSQ_RETRY)
// {
// LOG_D("%s device network registration failed.", device->name);
// result = -RT_ERROR;
// goto __exit;
// }
/* set network interface device hardware iccid */ /* set network interface device hardware iccid */
{ {
@ -1036,34 +1036,6 @@ static void ml307_init_thread_entry(void *parameter)
Flash_Sys_Cfg(kIotImsiId, ml307.imsi, ML307_IMSI_LEN); Flash_Sys_Cfg(kIotImsiId, ml307.imsi, ML307_IMSI_LEN);
} }
/* check signal strength */
for (i = 0; i < CSQ_RETRY; i++)
{
if (at_obj_exec_cmd(device->client, resp, "AT+CSQ") == RT_EOK)
{
int signal_strength = 0, err_rate = 0;
if (at_resp_parse_line_args_by_kw(resp, "+CSQ:", "+CSQ: %d,%d", &signal_strength, &err_rate) > 0)
{
if ((signal_strength != 99) && (signal_strength != 0))
{
LOG_D("%s device signal strength: %d, channel bit err_rate: %d",
device->name, signal_strength, err_rate);
ml307.rssi = signal_strength;
break;
}
}
}
rt_thread_mdelay(1000);
}
if (i == CSQ_RETRY)
{
LOG_E("%s device signal strength check failed", device->name);
result = -RT_ERROR;
goto __exit;
}
/* check the GPRS network is registered */ /* check the GPRS network is registered */
for (i = 0; i < CEREG_RETRY; i++) for (i = 0; i < CEREG_RETRY; i++)
{ {
@ -1147,7 +1119,7 @@ static void ml307_init_thread_entry(void *parameter)
/* set network interface device status and address information */ /* set network interface device status and address information */
ml307_netdev_set_info(device->netdev); ml307_netdev_set_info(device->netdev);
/* check and create link staus sync thread */ /* check and create link staus sync thread */
// ml307_netdev_check_link_status(device->netdev); ml307_netdev_check_link_status(device->netdev);
LOG_I("%s device network initialize success.", device->name); LOG_I("%s device network initialize success.", device->name);
rt_completion_done(&ml307_init_complate); // 通知初始化完成 rt_completion_done(&ml307_init_complate); // 通知初始化完成
} }

View File

@ -2,7 +2,7 @@
* @Author: mbw * @Author: mbw
* @Date: 2024-12-03 10:31:45 * @Date: 2024-12-03 10:31:45
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-01-03 14:57:36 * @LastEditTime: 2025-01-04 15:42:19
* @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_bt.c
* @Description: * @Description:
* *
@ -411,7 +411,7 @@ void BSP_Bt_Valve_Updata(void)
if (Flash_Get_Mac_Addr(mac, i) == 0) // 说明有MAC数据 if (Flash_Get_Mac_Addr(mac, i) == 0) // 说明有MAC数据
{ {
rt_memcpy(valve[cnt].valve_mac, mac, 6); // 这样做的目的就是读取方便只需要根据flash中读取到的数量进行读取前N个值 rt_memcpy(valve[cnt].valve_mac, mac, 6); // 这样做的目的就是读取方便只需要根据flash中读取到的数量进行读取前N个值
valve[cnt].valve_id = i + 1; valve[cnt].valve_id = i;
LOG_D("updata valve_id: %d, valve_mac: %02X %02X %02X %02X %02X %02X", LOG_D("updata valve_id: %d, valve_mac: %02X %02X %02X %02X %02X %02X",
valve[cnt].valve_id, valve[cnt].valve_id,
valve[cnt].valve_mac[0], valve[cnt].valve_mac[0],

View File

@ -5,6 +5,7 @@
#include "at_device_ml307.h" #include "at_device_ml307.h"
#include <rtthread.h> #include <rtthread.h>
#include <rthw.h> #include <rthw.h>
#include "rtdef.h"
#define LOG_TAG "bsp_flash" #define LOG_TAG "bsp_flash"
#define LOG_LVL LOG_LVL_DBG #define LOG_LVL LOG_LVL_DBG
@ -24,8 +25,8 @@ rt_uint8_t sys_hw_ver = 0x10;
rt_uint8_t sys_sw_ver = 0x11; rt_uint8_t sys_sw_ver = 0x11;
rt_uint8_t sys_nb_retry = 0x03; // 重试次数3次 rt_uint8_t sys_nb_retry = 0x03; // 重试次数3次
rt_uint16_t sys_nb_upload_cycle = 0x0001; // 120分钟一次 rt_uint16_t sys_nb_upload_cycle = 0x0001; // 120分钟一次
rt_uint16_t sys_alarm_h_value = 0x0032; // 50 rt_uint16_t sys_alarm_h_value = 0x09C4; // 2500
rt_uint16_t sys_alarm_l_value = 0x09C4; // 2500 rt_uint16_t sys_alarm_l_value = 0x0640; // 1600
rt_uint8_t sys_temp_alarm_threshold = 0x32; rt_uint8_t sys_temp_alarm_threshold = 0x32;
rt_uint8_t sys_emagnetic_switch = 0x04; // 具备阀门功能 rt_uint8_t sys_emagnetic_switch = 0x04; // 具备阀门功能
rt_uint8_t sys_relay_switch = 0x04; // 具备继电器功能 rt_uint8_t sys_relay_switch = 0x04; // 具备继电器功能
@ -895,8 +896,8 @@ int BSP_Flash_Init(void)
Flash_Write(FLASH_INIT_FLAG_ADDR, flash_init_flag, Flash_Write(FLASH_INIT_FLAG_ADDR, flash_init_flag,
sizeof(flash_init_flag)); sizeof(flash_init_flag));
Flash_SetProductTimeLimit(2024, 9, 8, 13, 58, 20, kFactoryTimeId); Flash_SetProductTimeLimit(2025, 1, 6, 11, 20, 50, kFactoryTimeId);
Flash_SetProductTimeLimit(2024 + 8, 9, 8, 13, 58, 20, kExpirationTimeId); Set_ExpirationTime(MAX_EXPIRATION_DAYS);
sci.hw_ver = sys_hw_ver; sci.hw_ver = sys_hw_ver;
sci.sw_ver = sys_sw_ver; sci.sw_ver = sys_sw_ver;

View File

@ -54,14 +54,14 @@ static void BSP_Led_thread_entry(void *param)
#endif #endif
if (SysControl.status == kNormalDetectionEvents) if (SysControl.status == kNormalDetectionEvents)
{ {
if ((power_on_send_flag)) if ((ml307_conncet_tcp_flag))
{
LED_G_INTERNET;
}
else if ((!power_on_send_flag))
{ {
LED_G_NORMAL; LED_G_NORMAL;
} }
else
{
LED_G_INTERNET;
}
} }
rt_thread_mdelay(1000); rt_thread_mdelay(1000);
} }

View File

@ -806,7 +806,7 @@ int Ml307_Process_Events(Ml307Event ml307_recv_event, struct at_device *device,
LOG_E("ml307 send cmd failed\n"); LOG_E("ml307 send cmd failed\n");
} }
else else
return RT_EOK;// 函数执行完毕返回0 return RT_EOK; // 函数执行完毕返回0
} }
} }
else else
@ -1506,20 +1506,6 @@ static void Ml307_Send_Thread_Entry(void *param)
RT_WAITING_FOREVER, &ml307_recv_event); // 这个事件一般是设备端发生了变化,发送到服务器时调用 RT_WAITING_FOREVER, &ml307_recv_event); // 这个事件一般是设备端发生了变化,发送到服务器时调用
if (result == RT_EOK) if (result == RT_EOK)
{
LOG_D("ml307 recv event OK\n");
if (ml307_conncet_tcp_flag != 1)
{
if (device->class->device_ops->control(device, AT_DEVICE_CTRL_NET_CONN, RT_NULL) == RT_EOK) // 打开连接
{
LOG_I("ml307 connect tcp success\n");
}
else
{
LOG_E("ml307 connect tcp failed\n");
}
}
if (ml307_conncet_tcp_flag)
{ {
if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307PowerOnEvent)) if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307PowerOnEvent))
{ {
@ -1538,7 +1524,7 @@ static void Ml307_Send_Thread_Entry(void *param)
rt_timer_start(ml307_upload_timer); rt_timer_start(ml307_upload_timer);
} }
} }
if (power_on_send_flag) if(power_on_send_flag)
{ {
if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307HeartbeatEvent)) if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307HeartbeatEvent))
{ {
@ -1643,7 +1629,6 @@ static void Ml307_Send_Thread_Entry(void *param)
LOG_E("ml307 send data failed result = [%d]\n", result); LOG_E("ml307 send data failed result = [%d]\n", result);
} }
ml307_event_initialized = RT_FALSE; // 当接收到掉电事件时,不再接收其他事件 ml307_event_initialized = RT_FALSE; // 当接收到掉电事件时,不再接收其他事件
// rt_event_detach(&at_device_event);
} }
else if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307DeviceFailureEvent)) else if (ml307_recv_event & Ml307_Get_Event_Flag(kMl307DeviceFailureEvent))
{ {
@ -1654,8 +1639,6 @@ static void Ml307_Send_Thread_Entry(void *param)
} }
} }
} }
rt_thread_mdelay(1); // 释放下线程
}
} }
} }
} }