From 2b7272acaab43c6f2308642208834251c63b6693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=A9=AC=5F666?= <13089258+pony-six-hundred-and-sixty-six@user.noreply.gitee.com> Date: Thu, 5 Dec 2024 09:13:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=98=80=E9=97=A8=E7=A8=8B=E5=BA=8F=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/inc/at_device_ml307.h | 2 +- bsp/inc/bsp_ml307.h | 3 +-- bsp/src/at_device_ml307.c | 25 +++++++++++---------- bsp/src/bsp_flash.c | 2 +- bsp/src/bsp_ml307.c | 47 ++++++++++++++++++++++++--------------- 5 files changed, 45 insertions(+), 34 deletions(-) diff --git a/bsp/inc/at_device_ml307.h b/bsp/inc/at_device_ml307.h index 38c1f0f..9aaa693 100644 --- a/bsp/inc/at_device_ml307.h +++ b/bsp/inc/at_device_ml307.h @@ -77,7 +77,7 @@ typedef struct __attribute__((packed)) uint8_t iccid[20]; uint8_t imsi[15]; uint8_t rssi; // RSSI - uint8_t rsrq; // RSRP + uint8_t rsrp; // RSRP } ml307_sys_info; extern ml307_sys_info ml307; diff --git a/bsp/inc/bsp_ml307.h b/bsp/inc/bsp_ml307.h index 5e55d4e..0cfae0f 100644 --- a/bsp/inc/bsp_ml307.h +++ b/bsp/inc/bsp_ml307.h @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-11-30 15:46:21 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2024-12-04 18:49:45 + * @LastEditTime: 2024-12-05 09:08:12 * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\inc\bsp_ml307.h * @Description: * @ @@ -181,7 +181,6 @@ struct __attribute__((packed)) DataBody uint8_t device_status; // 设备失效状态 rt_uint8_t valve_num; // 阀门数量 struct valve_data valve_data[MAX_VALVE_NUM]; - // valve_data_t* valve_data; // 阀门数据指针 }; // 定义数据帧结构体 diff --git a/bsp/src/at_device_ml307.c b/bsp/src/at_device_ml307.c index cf79717..00c09a0 100644 --- a/bsp/src/at_device_ml307.c +++ b/bsp/src/at_device_ml307.c @@ -2,7 +2,7 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-09-04 13:33:49 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2024-12-04 16:23:57 + * @LastEditTime: 2024-12-05 09:06:18 * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\at_device_ml307.c * @Description : * @@ -45,7 +45,7 @@ #define ML307_WAIT_CONNECT_TIME 5000 #define ML307_THREAD_STACK_SIZE 4096 #define ML307_THREAD_PRIORITY (RT_THREAD_PRIORITY_MAX / 2) -char data_buf[AT_CLIENT_RECV_BUFF_LEN] = {0}; + ml307_sys_info ml307 = {0}; struct rt_completion ml307_init_complate; @@ -224,18 +224,20 @@ static int ml307_wakeup(struct at_device *device) return (RT_EOK); } #endif - +char data_buf[AT_CLIENT_RECV_BUFF_LEN] = {0}; static void urc_tcp_recv(struct at_client *client, const char *data, rt_size_t size) { - rt_uint8_t id; + int id; int len = 0; rt_uint16_t crc16 = 0; rt_uint16_t rec_crc16 = 0; char crc16_buf[6] = {0}; + rt_uint8_t recv_byte_buf[AT_CLIENT_RECV_BUFF_LEN] = {0}; rt_memset(data_buf, 0, sizeof(data_buf)); + LOG_D("ml307 recv data: %s", data); /*+MIPURC: "rtcp",,,*/ - if (sscanf(data, "+MIPURC:\"rtcp\",%d,%d,%s", &id, &len, data_buf) == 3) + if (sscanf(data, "+MIPURC: \"rtcp\",%d,%d,%s", &id, &len, data_buf) == 3) { if (id == socket_id) { @@ -1464,16 +1466,15 @@ rt_err_t Ml307_Get_Signal_Info(struct at_device *device) { if (at_obj_exec_cmd(device->client, resp, "AT+CESQ") == RT_EOK) { - rt_uint8_t rsrp = 0, rsrq = 0; + rt_uint8_t rsrp = 0; - if (at_resp_parse_line_args_by_kw(resp, "+CESQ:", "+CESQ:%*[^,],%*[^,],%*[^,],%*[^,],%d,%d", &rsrq, &rsrp) > 0) + if (at_resp_parse_line_args_by_kw(resp, "+CESQ:", "+CESQ:%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%d", &rsrp) > 0) { - if ((rsrp < 97) && (rsrp > 0) && ((rsrq < 34) && (rsrq > 0))) + if ((rsrp < 97) && (rsrp > 0)) { - LOG_D("%s device signal rsrp: %d, rsrq: %d", - device->name, rsrp, rsrq); -// ml307.rsrp = rsrp; - ml307.rsrq = rsrq; + LOG_D("%s device signal rsrp: %d", + device->name, rsrp); + ml307.rsrp = rsrp; break; } } diff --git a/bsp/src/bsp_flash.c b/bsp/src/bsp_flash.c index 971e325..08e3a1d 100644 --- a/bsp/src/bsp_flash.c +++ b/bsp/src/bsp_flash.c @@ -82,7 +82,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 = 0x0001; // 120分钟一次 rt_uint16_t sys_alarm_h_value = 0x0032; // 50 rt_uint16_t sys_alarm_l_value = 0x09C4; // 10 rt_uint8_t sys_temp_alarm_threshold = 0x32; diff --git a/bsp/src/bsp_ml307.c b/bsp/src/bsp_ml307.c index 7a5e90f..b22a5f7 100644 --- a/bsp/src/bsp_ml307.c +++ b/bsp/src/bsp_ml307.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-11-30 15:46:21 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2024-12-04 18:54:55 + * @LastEditTime: 2024-12-05 09:01:42 * @FilePath: \ble_bjq_ch303rct6_ml307\bsp\src\bsp_ml307.c * @Description: * @@ -417,7 +417,6 @@ int Ml307_Send_Data(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, ret = _Send_Handle(ops, data_num, cmd, data_buf); if (ret != RT_EOK) { - // rt_free(ops->body->valve_data); return -ret; } } @@ -428,7 +427,7 @@ int Ml307_Send_Data(struct Ml307_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd, LOG_E("ml307_conncet_tcp_flag = 0"); ret = -RT_ERROR; } - // rt_free(ops->body->valve_data); + return ret; } @@ -936,9 +935,9 @@ int Compare_HeaderToTail(struct Ml307_Ops *ops) void Handle_Server_Reply(struct Ml307_Ops *ops) { - if (ops->recv->recv_data.event_type == INSTRUCTION_HEART_BEAT) + if ((ops->recv->recv_data.event_type == INSTRUCTION_HEART_BEAT)||(ops->recv->recv_data.event_type == EVENT_TYPE_POWER_ON)) { - LOG_D("ml307 send data success\n"); + LOG_D("服务器响应成功,响应码:[%02X]\n", ops->recv->recv_data.event_type); } } @@ -1196,7 +1195,7 @@ void Handle_Sever_Addr_Set(struct Ml307_Ops *ops) rt_memcpy(data, (ops->recv->recv_data.res_data + 9), FLASH_SERVER_LEN); LOG_D("data[%d] = %x data[%d] = %x data[%d] = %x data[%d] = %x data[%d] = %x data[%d] = %x", 0, data[0], 1, data[1], 2, data[2], 3, data[3], 4, data[4], 5, data[5]); Flash_Set_Sever_Addr_Info(data); - if (Flash_Get_Sever_Addr_Info(&sever_info) != RT_EOK) + if (Flash_Get_Sever_Addr_Info(&sever_info) == RESET) { LOG_E("服务器地址修改失败\n"); } @@ -1214,31 +1213,43 @@ rt_err_t Handle_Valve_Add(struct Ml307_Ops *ops) char imei[16] = {0}; char temp[32] = "0"; rt_uint8_t cnt = Flash_Get_Valve_Num(); - + rt_uint8_t mac_addr[FLASH_VALVE_MAC_ADDR_LEN + 1] = {0}; Get_Iot_Imei(imei, FLASH_NB_IMEI_LEN); String2Hex(temp, imei); // 将字符串转为十六进制字符串 if (cnt > MAX_VALVE_NUM) { LOG_E("阀门设备数量超过最大值\n"); - ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_OTHER_ERROR); + 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; } 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 (Flash_Set_Mac_Addr(&data[1], data[0]) != RT_EOK) + if (Flash_Get_Mac_Addr(mac_addr, data[0]) != RESET) { - 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; + if ((mac_addr[0] != 0xe3) && (mac_addr[0] != 0xe9)) + { + if (Flash_Set_Mac_Addr(&data[1], data[0]) == RESET) + { + 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; + } + LOG_D("新增阀门设备成功\n"); + Flash_Set_Valve_Num(cnt + 1); + ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_SUCCESS); + return RT_EOK; + } + else + { + LOG_E("该阀门设备已存在,请选择更换阀门编号后重试\n"); + ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_OTHER_ERROR); + return RT_EOK; + } } - LOG_D("新增阀门设备成功\n"); - Flash_Set_Valve_Num(cnt + 1); - ops->Resp(ops, DATA_SERIAL_NUM, CMD_TYPE_INSTRUCTION_REPLY, DEVICE_TYPE_ML307, INSTRUCTION_DOWN_VALVE_ADD, temp, RESPONSE_CODE_SUCCESS); - return RT_EOK; + } /*更换阀门设备*/ @@ -1253,7 +1264,7 @@ rt_err_t Handle_Valve_Replace(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 (Flash_Set_Mac_Addr(&data[1], data[0]) != RT_EOK) + if (Flash_Set_Mac_Addr(&data[1], data[0]) == RESET) { 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);