完成了增加阀门程序部分

This commit is contained in:
小马_666 2024-12-05 09:13:31 +08:00
parent 039fca89a4
commit 2b7272acaa
5 changed files with 45 additions and 34 deletions

View File

@ -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;

View File

@ -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; // 阀门数据指针
};
// 定义数据帧结构体

View File

@ -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",<connect_id>,<recv_length>,<data>*/
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;
}
}

View File

@ -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;

View File

@ -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,22 +1213,25 @@ 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)
{
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);
@ -1239,6 +1241,15 @@ rt_err_t Handle_Valve_Add(struct Ml307_Ops *ops)
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;
}
}
}
/*更换阀门设备*/
@ -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);