update:
设备屏蔽功能 适配新版界面
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
#include "app_com.h"
|
||||
#include "app_leakage.h"
|
||||
#include "bsp_w25q.h"
|
||||
#include <string.h>
|
||||
#include "proto_modbus_master_leakage.h"
|
||||
|
||||
/*com<6F>ڶ<EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>*/
|
||||
@@ -11,32 +13,91 @@ bsp_uart_t *com_to_uart[APP_COM_NUM] =
|
||||
&com_uart6,
|
||||
};
|
||||
|
||||
static void app_com_uart_class_rate_set(app_com_class_t * p_com,u16 baud_rate);
|
||||
static void app_com_class_baud_rate_set(app_com_class_t *p_com, u32 baud_enum);
|
||||
static void app_com_class_update(void );
|
||||
static void app_com_init(void);
|
||||
static void app_com_save_baudrate_to_flash(void);
|
||||
static void app_com_load_baudrate_from_flash(void);
|
||||
|
||||
app_com_t app_com=
|
||||
{
|
||||
.init = app_com_init,
|
||||
.class_update = app_com_class_update,
|
||||
.save_flah = app_com_save_baudrate_to_flash,
|
||||
};
|
||||
|
||||
|
||||
static void app_com_init(void)
|
||||
{
|
||||
u8 i;
|
||||
for(i=0;i<APP_COM_NUM;i++)
|
||||
{
|
||||
app_com.com[i].com_uart = com_to_uart[i];
|
||||
app_com.com[i].set.baud_rate = app_com_class_baud_rate_set;
|
||||
app_com.com[i].flash_data.baudrate = 4;
|
||||
}
|
||||
app_com_class_update();
|
||||
app_com_load_baudrate_from_flash();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void app_com_class_baud_rate_set(app_com_class_t * p_com,u16 baud_rate)
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ֵ<EFBFBD><D6B5>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD> */
|
||||
static void app_com_class_baud_rate_set(app_com_class_t *p_com, u32 baud_enum)
|
||||
{
|
||||
p_com->com_uart->set.baud_rate(p_com->com_uart,baud_rate);
|
||||
u32 baud_value;
|
||||
switch (baud_enum) {
|
||||
case 0: baud_value = 4800; break;
|
||||
case 1: baud_value = 9600; break;
|
||||
case 2: baud_value = 19200; break;
|
||||
case 3: baud_value = 57600; break;
|
||||
case 4: baud_value = 115200; break;
|
||||
default: baud_value = 115200; break;
|
||||
}
|
||||
if (p_com->com_uart && p_com->com_uart->set.baud_rate) {
|
||||
p_com->com_uart->set.baud_rate(p_com->com_uart, baud_value);
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><>Flash<73><68><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ڴ沢Ӧ<E6B2A2><D3A6> */
|
||||
static void app_com_load_baudrate_from_flash(void)
|
||||
{
|
||||
u8 baud_vals[APP_COM_NUM];
|
||||
w25q32.read(W25Q32_COM_BAUDRATE_ADDR, baud_vals, APP_COM_NUM);
|
||||
|
||||
for (u8 i = 0; i < APP_COM_NUM; i++) {
|
||||
if (baud_vals[i] == 0xFF) { // δ<><CEB4>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC>115200
|
||||
app_com.com[i].flash_data.baudrate = 4;
|
||||
} else {
|
||||
app_com.com[i].flash_data.baudrate = baud_vals[i];
|
||||
}
|
||||
// Ӧ<>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>
|
||||
app_com_class_baud_rate_set(&app_com.com[i], app_com.com[i].flash_data.baudrate);
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>浽Flash */
|
||||
static void app_com_save_baudrate_to_flash(void)
|
||||
{
|
||||
u8 current_vals[APP_COM_NUM];
|
||||
u8 flash_vals[APP_COM_NUM];
|
||||
|
||||
/*<2A><>ǰ<EFBFBD>ڴ<EFBFBD><DAB4>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>ֵ*/
|
||||
for (u8 i = 0; i < APP_COM_NUM; i++) {
|
||||
current_vals[i] = app_com.com[i].flash_data.baudrate;
|
||||
}
|
||||
|
||||
/*<2A><> Flash <20><>ȡ<EFBFBD>Ѵ洢<D1B4><E6B4A2>ֵ*/
|
||||
w25q32.read(W25Q32_COM_BAUDRATE_ADDR, flash_vals, APP_COM_NUM);
|
||||
|
||||
// <20>Ƚ<EFBFBD><C8BD>Ƿ<EFBFBD><C7B7><EFBFBD>ȫ<EFBFBD><C8AB>ͬ
|
||||
if (memcmp(current_vals, flash_vals, APP_COM_NUM) == 0) {
|
||||
// û<>б仯<D0B1><E4BBAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
return;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4K<34><4B><EFBFBD>룩
|
||||
uint32_t erase_addr = W25Q32_COM_BAUDRATE_ADDR & ~(W25Q32_SECTOR_SIZE - 1);
|
||||
w25q32_sector_erase(erase_addr);
|
||||
w25q32.write(W25Q32_COM_BAUDRATE_ADDR, current_vals, APP_COM_NUM);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,10 +122,18 @@ static void app_com_class_update(void )
|
||||
/********************************************COM<4F>ڻ<EFBFBD><DABB><EFBFBD>******************************************************/
|
||||
com_index = leakage.sub_device_data[i].flash_data.com;
|
||||
id = leakage.sub_device_data[i].flash_data.modbus_id;
|
||||
|
||||
proto_sensor_class_t *p_sensor = &modbus_leakage[com_index].sensor[modbus_leakage[com_index].sensor_num];
|
||||
|
||||
/* <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9> */
|
||||
memset(p_sensor, 0, sizeof(proto_sensor_class_t));
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>modbus id*/
|
||||
modbus_leakage[com_index].sensor[modbus_leakage[com_index].sensor_num].comm.id = id;
|
||||
p_sensor->comm.id = id;
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
modbus_leakage[com_index].sensor[modbus_leakage[com_index].sensor_num].comm.leakage_data_index = i;
|
||||
p_sensor->comm.leakage_data_index = i;
|
||||
/* <20><> <20><><EFBFBD>ó<EFBFBD>ʼ״̬ΪĬ<CEAA>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
p_sensor->comm.state = PROTO_LEAKAGE_COMM_STATE_DEFAULT;
|
||||
/*comm<6D><6D><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>++*/
|
||||
modbus_leakage[com_index].sensor_num++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user