Compare commits

..

No commits in common. 'ede556c5e569786112a6372f477d1d2c9824bea0' and 'e7defc61e51389dcd749ecbbba5bf713b350c8d3' have entirely different histories.

@ -183,15 +183,14 @@ typedef struct
uint16_t vin_adj; uint16_t vin_adj;
/* 各种 bool 类型配置, 见 DEV_FLAG_E. 8byte */ /* 各种 bool 类型配置, 见 DEV_FLAG_E. 8byte */
uint32_t flag; uint32_t flag;
uint16_t keepalive; // 保活间隔单位: min uint32_t keepalive; // 保活间隔单位: ms
uint8_t reserve0[2];
/* 采样间隔配置. 8byte */ /* 采样间隔配置. 8byte */
uint16_t collect_interval; // 单位: min uint16_t collect_interval; // 单位: min
uint16_t power_threshold; uint16_t power_threshold;
uint16_t fault_threshold; uint16_t fault_threshold;
uint16_t defect_threshold; uint16_t defect_threshold;
/* APN 配置. 128byte */ /* APN 配置. 128byte */
char APN[DEV_APN_LEN]; uint8_t APN[DEV_APN_LEN];
/* 保证配置区 8K 的保留位. */ /* 保证配置区 8K 的保留位. */
uint8_t reserve[300]; uint8_t reserve[300];
/* INIT_DONE_MAGIC. 4byte */ /* INIT_DONE_MAGIC. 4byte */

@ -890,7 +890,7 @@ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap)
/* 设置开始操作. */ /* 设置开始操作. */
HAL_E_RETURN(_debug_adj_start()); HAL_E_RETURN(_debug_adj_start());
//for(i = 0; i < DAU_PORT_POWER_CNT; i++) //for(i = 0; i < DAU_PORT_POWER_CNT; i++)
for(i = 0; i < 1; i++) for(i = 0; i < 1; i++)
{ {
/* 过滤不需要的通道. */ /* 过滤不需要的通道. */
@ -914,15 +914,15 @@ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap)
} }
/* 开始自动校准, 注意不同变比的通道不能一起校准. */ /* 开始自动校准, 注意不同变比的通道不能一起校准. */
for (j = 0; j < 1; j++) // 只校准一个分段点 2024/12/11 for (j = 0; j < 1; j++) // 只校准一个分段点 2024/12/11
{ {
HAL_E_RETURN(_debug_adj_source_set(bitmap_new, j)); HAL_E_RETURN(_debug_adj_source_set(bitmap_new, j));
osDelay(3000); osDelay(3000);
g_is_adj_status = 1; g_is_adj_status = 1;
while (g_is_adj_status != 2) while (g_is_adj_status != 2)
{ {
common_watchdog_set(COM_WDG_CLI); common_watchdog_set(COM_WDG_CLI);
osDelay(2000); osDelay(2000);
} }
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n"); DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
HAL_E_RETURN(_dau_base_auto(bitmap_new, j + 1)); HAL_E_RETURN(_dau_base_auto(bitmap_new, j + 1));
@ -949,7 +949,7 @@ static HAL_StatusTypeDef _debug_adj_autoEx(uint8_t bitmap, uint16_t elec, uint8_
/* 设置开始操作. */ /* 设置开始操作. */
HAL_E_RETURN(_debug_adj_start()); HAL_E_RETURN(_debug_adj_start());
//for(i = 0; i < DAU_PORT_POWER_CNT; i++) //for(i = 0; i < DAU_PORT_POWER_CNT; i++)
for(i = 0; i < 1; i++) for(i = 0; i < 1; i++)
{ {
/* 过滤不需要的通道. */ /* 过滤不需要的通道. */
@ -976,16 +976,16 @@ static HAL_StatusTypeDef _debug_adj_autoEx(uint8_t bitmap, uint16_t elec, uint8_
//for (j = 0; j < DAU_POWER_ADJ_CNT; j++) //for (j = 0; j < DAU_POWER_ADJ_CNT; j++)
{ {
HAL_E_RETURN(_debug_adj_source_setEx(bitmap_new, index-1, elec)); HAL_E_RETURN(_debug_adj_source_setEx(bitmap_new, index-1, elec));
osDelay(5000); osDelay(5000);
g_is_adj_status = 1; g_is_adj_status = 1;
while (g_is_adj_status != 2) while (g_is_adj_status != 2)
{ {
common_watchdog_set(COM_WDG_CLI); common_watchdog_set(COM_WDG_CLI);
osDelay(2000); osDelay(2000);
} }
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n"); DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
HAL_E_RETURN(_dau_base_auto(bitmap_new, index)); HAL_E_RETURN(_dau_base_auto(bitmap_new, index));
g_is_adj_status = 0; g_is_adj_status = 0;
} }
} }
@ -1056,7 +1056,7 @@ void _debug_pkt_adj_autoEx(uint16_t elec, uint8_t index)
data->ch_selecet = 1; data->ch_selecet = 1;
if (data->ch_selecet == 1) if (data->ch_selecet == 1)
{ {
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
} }
rv = _debug_adj_autoEx(data->ch_selecet, elec, index); rv = _debug_adj_autoEx(data->ch_selecet, elec, index);
if (rv == HAL_OK) if (rv == HAL_OK)

@ -537,10 +537,10 @@ static BaseType_t _cli_show(const char *string)
vty_print("Force sleep up: %d\r\n", st_data.force_sleep_up); vty_print("Force sleep up: %d\r\n", st_data.force_sleep_up);
vty_print("BAT charge: %d\r\n", HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin)); vty_print("BAT charge: %d\r\n", HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin));
vty_print("Collect interval: %dmin\r\n", dev_config.collect_interval); vty_print("Collect interval: %dmin\r\n", dev_config.collect_interval);
vty_print("Power threshold: %dA\r\n", dev_config.power_threshold); vty_print("Power threshold: %dmV\r\n", dev_config.power_threshold);
vty_print("Defect threshold: %dA\r\n", dev_config.defect_threshold); vty_print("Defect threshold: %dmV\r\n", dev_config.defect_threshold);
vty_print("Fault threshold: %dA\r\n", dev_config.fault_threshold); vty_print("Fault threshold: %dA\r\n", dev_config.fault_threshold);
vty_print("Keepalive: %dmin\r\n", dev_config.keepalive); vty_print("Keepalive: %dms\r\n", dev_config.keepalive);
} }
else if(0 == strncmp(param, "state", param_len)) else if(0 == strncmp(param, "state", param_len))
{ {
@ -887,24 +887,24 @@ void cli_start(void const * argument)
/* 默认开启的 debug. */ /* 默认开启的 debug. */
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI)) if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI))
{ {
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU); dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G); dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN); dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG); dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG);
} }
/* 初始化 ADC 采样任务. */ /* 初始化 ADC 采样任务. */
ADC_init(); ADC_init();
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)) if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ))
{ {
dau_adj_init(); dau_adj_init();
} }
else else
{ {
/* 初始化 DAU 任务. */ /* 初始化 DAU 任务. */
dau_init(); dau_init();
} }
/* 初始化无线通讯任务. */ /* 初始化无线通讯任务. */

@ -163,7 +163,7 @@ static struct tm _dau_tm;
int8_t _dau_spi_rw; int8_t _dau_spi_rw;
uint16_t _dau_spi_addr; uint16_t _dau_spi_addr;
uint16_t _dau_spi_len; uint16_t _dau_spi_len;
int8_t g_is_adj_status = 0; // 1:采集 2:采集完成 int8_t g_is_adj_status = 0; // 1:采集 2:采集完成
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/ /* Internal functions --------------------------------------------------------*/
@ -869,7 +869,7 @@ void _dau_power_calculate(DAU_SOURCE_E source)
/* dau data base 自动计算. */ /* dau data base 自动计算. */
HAL_StatusTypeDef _dau_base_auto(uint8_t ch_bitmap, uint8_t index) HAL_StatusTypeDef _dau_base_auto(uint8_t ch_bitmap, uint8_t index)
{ {
int16_t (*val)[DAU_POWER_DATE_LEN] = dau_ctrl.reg_power; int16_t (*val)[DAU_POWER_DATE_LEN] = dau_ctrl.reg_power;
//uint32_t *power = dau_ctrl.reg_elec; //uint32_t *power = dau_ctrl.reg_elec;
uint8_t ch = 0; uint8_t ch = 0;
uint16_t i = 0; uint16_t i = 0;
@ -1237,54 +1237,54 @@ static void _dau_adj_start(void *argument)
osDelay(10000); osDelay(10000);
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
if (g_is_adj_status == 1) if (g_is_adj_status == 1)
{ {
memset(dau_ctrl.reg_power, 0, sizeof(dau_ctrl.reg_power)); memset(dau_ctrl.reg_power, 0, sizeof(dau_ctrl.reg_power));
/* 读取全局状态寄存器 */ /* 读取全局状态寄存器 */
rv = _dau_reg_read_global_state(); rv = _dau_reg_read_global_state();
if (rv != HAL_OK) if (rv != HAL_OK)
{ {
vty_print("rv=%d\r\n", rv); vty_print("rv=%d\r\n", rv);
continue; continue;
} }
/* 循环工频缺陷电流采集 */ /* 循环工频缺陷电流采集 */
dau_ctrl.col_time = 600000; dau_ctrl.col_time = 600000;
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
_dau_wave_col_trigger_by_reg(); _dau_wave_col_trigger_by_reg();
#if 1 #if 1
//for(i = 0; i < DAU_PORT_POWER_CNT; i++) //for(i = 0; i < DAU_PORT_POWER_CNT; i++)
for(i = 0; i < 1; i++) for(i = 0; i < 1; i++)
{ {
vty_print("POWER %d\r\n", i); vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.reg_power[i]; buf = (uint16_t*)dau_ctrl.reg_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++) for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{ {
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
for(k = 0; k < 512;) for(k = 0; k < 512;)
{ {
vty_print("%-04x ", buf[k++]); vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40) if(0 == (j*512+k ) % 40)
{ {
osDelay(100); osDelay(100);
vty_print("\r\n"); vty_print("\r\n");
} }
} }
/*if((j*512+k ) % 40 != 0) /*if((j*512+k ) % 40 != 0)
{ {
osDelay(100); osDelay(100);
vty_print("\r\n"); vty_print("\r\n");
}*/ }*/
buf += 512; buf += 512;
} }
vty_print("\r\n"); vty_print("\r\n");
} }
#endif #endif
g_is_adj_status = 2; g_is_adj_status = 2;
_dau_base_auto(1, 0); _dau_base_auto(1, 0);
} }
} }
} }

@ -186,9 +186,9 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
dev_config.vin = DEV_VIN_ADJ_DEFAULT; dev_config.vin = DEV_VIN_ADJ_DEFAULT;
dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT; dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT;
dev_config.keepalive = 5; dev_config.keepalive = 300000;
dev_config.collect_interval = 10; dev_config.collect_interval = 10;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT"); snprintf((char*)dev_config.APN, DEV_APN_LEN, "CMIOT");
dev_config.magic_bak = INIT_DONE_MAGIC; dev_config.magic_bak = INIT_DONE_MAGIC;

@ -116,9 +116,8 @@ typedef struct
uint8_t FPGA_version[DEV_VERSION_STR_LEN]; uint8_t FPGA_version[DEV_VERSION_STR_LEN];
uint8_t factory_time[DEV_COMPILE_TIME_LEN]; uint8_t factory_time[DEV_COMPILE_TIME_LEN];
/* 设备其他信息. 160byte */ /* 设备其他信息. 160byte */
char name[DEV_NAME_LEN]; uint8_t name[DEV_NAME_LEN];
char QCCID[WL_QCCID_LEN]; char QCCID[WL_QCCID_LEN];
char APN[DEV_APN_LEN];
} wl_proto_wakeup_t; } wl_proto_wakeup_t;
/* 实时数据传输结构体 */ /* 实时数据传输结构体 */
@ -152,8 +151,6 @@ typedef struct
uint16_t threshold_power; uint16_t threshold_power;
uint16_t threshold_defect; uint16_t threshold_defect;
uint16_t threshold_fault; uint16_t threshold_fault;
uint16_t keepalive;
uint8_t reserve[2];
} wl_proto_config_t; } wl_proto_config_t;
typedef struct typedef struct
@ -452,12 +449,6 @@ static void _wl_4G_recv_contect(uint8_t *cmd, uint32_t len)
dev_config.fault_threshold = cfg->threshold_fault; dev_config.fault_threshold = cfg->threshold_fault;
} }
if (cfg->keepalive != dev_config.keepalive)
{
is_cfg_save = TRUE;
dev_config.keepalive = cfg->keepalive;
}
if (is_cfg_save) if (is_cfg_save)
{ {
common_sys_set(COM_SYS_SAVE_CONFIG, 0); common_sys_set(COM_SYS_SAVE_CONFIG, 0);
@ -588,12 +579,6 @@ static void _wl_4G_recv_cfg_set(uint8_t *cmd, uint32_t len)
dev_config.fault_threshold = cfg->threshold_fault; dev_config.fault_threshold = cfg->threshold_fault;
} }
if (cfg->keepalive != dev_config.keepalive)
{
is_cfg_save = TRUE;
dev_config.keepalive = cfg->keepalive;
}
if (is_cfg_save) if (is_cfg_save)
{ {
common_sys_set(COM_SYS_SAVE_CONFIG, 0); common_sys_set(COM_SYS_SAVE_CONFIG, 0);
@ -815,7 +800,7 @@ static void _wl_4G_recv_update_fpga(uint8_t *cmd, uint32_t len)
uint32_t addr = TFTP_APP_ADDRESS; uint32_t addr = TFTP_APP_ADDRESS;
uint32_t app_len = 0; uint32_t app_len = 0;
/* index 为 0 表示是首包, 需要擦除 FLASH */ /* index 为 0 表示是首保, 需要擦除 FLASH. */
if (0 == m_head->index) if (0 == m_head->index)
{ {
while(addr != TFTP_APP_ADDRESS_END) while(addr != TFTP_APP_ADDRESS_END)
@ -1137,10 +1122,9 @@ static void _wl_4G_send_contact(void)
_wl_4G_head_init(sizeof(proto_head_t) + sizeof(wl_proto_wakeup_t), DEBUG_CT_REPLY, DEBUG_C_CONTACT, wl_ctrl.pkt_id); _wl_4G_head_init(sizeof(proto_head_t) + sizeof(wl_proto_wakeup_t), DEBUG_CT_REPLY, DEBUG_C_CONTACT, wl_ctrl.pkt_id);
/* 封装数据. */ /* 封装数据. */
memcpy(data, &dev_info.type_m, sizeof(wl_proto_wakeup_t) - DEV_NAME_LEN - WL_QCCID_LEN - DEV_APN_LEN); memcpy(data, &dev_info.type_m, sizeof(wl_proto_wakeup_t) - DEV_NAME_LEN);
memcpy(data->name, dev_config.host, DEV_NAME_LEN); memcpy(data->name, dev_config.host, DEV_NAME_LEN);
memcpy(data->QCCID, wl_ctrl.QCCID, WL_QCCID_LEN); memcpy(data->QCCID, wl_ctrl.QCCID, WL_QCCID_LEN);
memcpy(data->APN, dev_config.APN, DEV_APN_LEN);
/* 计算校验和. */ /* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len); crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
@ -1734,18 +1718,21 @@ void _wl_4G_send(void)
} }
else if (WL_STATE_UPDATE_RT == wl_ctrl.state) else if (WL_STATE_UPDATE_RT == wl_ctrl.state)
{ {
/* 设备保活报文发送. */
_wl_4G_send_update_rt(); _wl_4G_send_update_rt();
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
break; break;
} }
else if (WL_STATE_UPDATE_FPGA_RT == wl_ctrl.state) else if (WL_STATE_UPDATE_FPGA_RT == wl_ctrl.state)
{ {
/* 设备保活报文发送. */
_wl_4G_send_update_fpga_rt(); _wl_4G_send_update_fpga_rt();
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
break; break;
} }
else if (WL_STATE_KEEPALIVE == wl_ctrl.state) else if (WL_STATE_KEEPALIVE == wl_ctrl.state)
{ {
/* 设备保活报文发送. */
_wl_4G_send_keepalive(); _wl_4G_send_keepalive();
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
break; break;
@ -1757,29 +1744,25 @@ void _wl_4G_send(void)
} }
} }
/* 发状态机改变 */ /* 发送数据状态机改变 */
void _wl_4G_state_chg(void) void _wl_4G_state_chg(void)
{ {
if (dau_ctrl.update_rt != DAU_UPD_NONE) if (dau_ctrl.update_rt != DAU_UPD_NONE)
{ {
/* FPGA 升级结果回复 */
wl_ctrl.state = WL_STATE_UPDATE_FPGA_RT; wl_ctrl.state = WL_STATE_UPDATE_FPGA_RT;
} }
else if(!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP)) else if(!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP))
{ {
/* 故障定位数据上送 */
wl_ctrl.state = WL_STATE_REALDATA_FAULT; wl_ctrl.state = WL_STATE_REALDATA_FAULT;
} }
else if(!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) else if(!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{ {
/* 定时数据上送 */
wl_ctrl.state = WL_STATE_REALDATA; wl_ctrl.state = WL_STATE_REALDATA;
} }
else if(wl_ctrl.keepalive < HAL_GetTick()) else if(wl_ctrl.keepalive < HAL_GetTick())
{ {
/* 保活报文上送 */
wl_ctrl.state = WL_STATE_KEEPALIVE; wl_ctrl.state = WL_STATE_KEEPALIVE;
wl_ctrl.keepalive = HAL_GetTick() + dev_config.keepalive * 60000; wl_ctrl.keepalive = dev_config.keepalive + HAL_GetTick();
} }
} }
@ -1809,7 +1792,6 @@ void _wl_4G_init_soft(void)
if ((WL_STATE_SOFT == wl_ctrl.state) && is_timeout) if ((WL_STATE_SOFT == wl_ctrl.state) && is_timeout)
{ {
/* 等待 RDY 字符串 */
wl_ctrl.time_send = 0; wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0; wl_ctrl.send_cnt = 0;
wl_ctrl.state++; wl_ctrl.state++;
@ -1824,18 +1806,20 @@ void _wl_4G_init_soft(void)
{ {
/* 修改波特率. */ /* 修改波特率. */
_wl_4G_init_cmd_send("AT+IPR=230400\r\n", 1100); _wl_4G_init_cmd_send("AT+IPR=230400\r\n", 1100);
//_wl_4G_init_cmd_send("AT+IPR=115200\r\n", 1100);
//_wl_4G_init_cmd_send("AT+IPR=19200\r\n", 1100);
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
} }
else if ((WL_STATE_AT_QICSGP == wl_ctrl.state) && is_timeout) else if ((WL_STATE_AT_QICSGP == wl_ctrl.state) && is_timeout)
{ {
/* 创建场景 */ /* 创建场景. */
snprintf((char*)wl_ctrl.dma_tx_buf, WL_DMA_TX_BUF_LEN, "AT+QICSGP=1,1,\"%s\",\"\",\"\",1\r\n", dev_config.APN); snprintf((char*)wl_ctrl.dma_tx_buf, WL_DMA_TX_BUF_LEN, "AT+QICSGP=1,1,\"%s\",\"\",\"\",1\r\n", dev_config.APN);
_wl_4G_init_cmd_send(wl_ctrl.dma_tx_buf, 1100); _wl_4G_init_cmd_send(wl_ctrl.dma_tx_buf, 1100);
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
} }
else if ((WL_STATE_AT_QIACT == wl_ctrl.state) && is_timeout) else if ((WL_STATE_AT_QIACT == wl_ctrl.state) && is_timeout)
{ {
/* 使能场景 */ /* 使能场景. */
_wl_4G_init_cmd_send("AT+QIACT=1\r\n", 33000); _wl_4G_init_cmd_send("AT+QIACT=1\r\n", 33000);
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
} }
@ -1885,8 +1869,7 @@ void _wl_4G_init_soft(void)
} }
else if (wl_ctrl.state > WL_STATE_AT_COMP) else if (wl_ctrl.state > WL_STATE_AT_COMP)
{ {
/* 理论上进不来 */ vty_print("#W4 %d\r\n", wl_ctrl.state);
vty_print("#WE0 %d\r\n", wl_ctrl.state);
wl_ctrl.state = WL_STATE_AT_ATE; wl_ctrl.state = WL_STATE_AT_ATE;
wl_ctrl.time_send = 0; wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0; wl_ctrl.send_cnt = 0;
@ -1906,31 +1889,28 @@ static void _wl_4G_hw_init(void)
HAL_GPIO_WritePin(G4G_RST_GPIO_Port, G4G_RST_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(G4G_RST_GPIO_Port, G4G_RST_Pin, GPIO_PIN_RESET);
} }
/* 重启 4G 模块硬件 */ /* 重启 4G 模块硬件. */
static void _wl_4G_hw_restart(void) static void _wl_4G_hw_restart(void)
{ {
DBG(DBG_M_4G, "4G restart(%d)\r\n", wl_ctrl.err_cnt); DBG(DBG_M_4G, "4G restart(%d)\r\n", wl_ctrl.err_cnt);
/* 关闭 4G 模块硬件 */ /* 初始化 4G 模块硬件. */
HAL_GPIO_WritePin(POWER_4G_GPIO_Port, POWER_4G_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(POWER_4G_GPIO_Port, POWER_4G_Pin, GPIO_PIN_RESET);
HAL_UART_Abort(wl_ctrl.uart); HAL_UART_Abort(wl_ctrl.uart);
HAL_UART_DeInit(wl_ctrl.uart); HAL_UART_DeInit(wl_ctrl.uart);
memset(&wl_buf_list_rx, 0, sizeof(wl_buf_list_t));
MX_USART3_UART_Init();
HAL_UARTEx_ReceiveToIdle_DMA(wl_ctrl.uart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN);
osDelay(10000);
/* 20s 内要收到 4G 模块发出的 RDY. */
wl_ctrl.state = 0; wl_ctrl.state = 0;
wl_ctrl.send_cnt = 0; wl_ctrl.send_cnt = 0;
wl_ctrl.mul_idx = 0; wl_ctrl.mul_idx = 0;
wl_ctrl.cmd_buf_index = 0; wl_ctrl.cmd_buf_index = 0;
wl_ctrl.time_send = HAL_GetTick() + 20000; wl_ctrl.time_send = HAL_GetTick() + 20000;
wl_ctrl.err_cnt++; wl_ctrl.err_cnt++;
memset(&wl_buf_list_rx, 0, sizeof(wl_buf_list_t));
/* 初始化硬件 */
osDelay(10000);
MX_USART3_UART_Init();
_wl_4G_hw_init(); _wl_4G_hw_init();
/* 开启串口空闲中断收包 */
HAL_UARTEx_ReceiveToIdle_DMA(wl_ctrl.uart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN);
/* 4G 掉线后不能阻止波形采集, 掉线后默认上传完成 */ /* 4G 掉线后不能阻止波形采集, 掉线后默认上传完成 */
if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{ {
@ -1958,12 +1938,12 @@ static void _wl_4G_hw_restart(void)
#endif #endif
} }
/* 无线模块主任务循环 */ /* 无线模块主任务循环. */
static void _wl_4G_start(void *argument) static void _wl_4G_start(void *argument)
{ {
uint32_t notify_value = 0; uint32_t notify_value = 0;
/* 等待完成首次 ADC 采样 */ /* 等待完成 1 次 ADC 采样. */
while(1) while(1)
{ {
if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC)) if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC))
@ -1973,7 +1953,7 @@ static void _wl_4G_start(void *argument)
osDelay(1000); osDelay(1000);
} }
/* 初始化 4G 模块硬件 */ /* 初始化 4G 模块硬件. */
MX_USART3_UART_Init(); MX_USART3_UART_Init();
_wl_4G_hw_init(); _wl_4G_hw_init();
@ -1994,7 +1974,7 @@ static void _wl_4G_start(void *argument)
if (wl_ctrl.state < WL_STATE_CONTACT) if (wl_ctrl.state < WL_STATE_CONTACT)
{ {
/* 进入软件初始化 */ /* 进入软件初始化. */
_wl_4G_init_soft(); _wl_4G_init_soft();
} }
else else
@ -2009,43 +1989,41 @@ static void _wl_4G_start(void *argument)
} }
else if (WL_STATE_END == wl_ctrl.state) else if (WL_STATE_END == wl_ctrl.state)
{ {
/* 发包状态机改变 */ /* 计算状态机 */
_wl_4G_state_chg(); _wl_4G_state_chg();
} }
/* 根据状态机状态发送报文 */ /* 进入数据交互模式. */
_wl_4G_send(); _wl_4G_send();
} }
/* 喂狗. */
common_watchdog_set(COM_WDG_WIR); common_watchdog_set(COM_WDG_WIR);
/* 等待 DMA 收包中断 */ /* 等待 DMA 收包中断. */
notify_value = ulTaskNotifyTake(pdTRUE, WL_RX_TIMEOUT); notify_value = ulTaskNotifyTake(pdTRUE, WL_RX_TIMEOUT);
/* 收包超时, 返回循环头部. */
if (0 == notify_value) if (0 == notify_value)
{ {
continue; continue;
} }
/* 收包处理 */ /* 收包处理. */
_wl_4G_receive(); _wl_4G_receive();
} }
} }
/* Interface functions -------------------------------------------------------*/ /* Interface functions -------------------------------------------------------*/
/* description: 无线通讯任务初始化 /* 无线通讯任务初始化. */
param:
return: */
void wl_init(void) void wl_init(void)
{ {
wl_ctrl.uart = &huart3; wl_ctrl.uart = &huart3;
wl_ctrl.handle = osThreadNew(_wl_4G_start, NULL, &WL_attributes); wl_ctrl.handle = osThreadNew(_wl_4G_start, NULL, &WL_attributes);
} }
/* description: 无线通讯调试显示接口
param:
return: */
void wl_show(void) void wl_show(void)
{ {
vty_print("ST: %-03d %d\r\n\n", wl_ctrl.state, wl_ctrl.send_cnt); vty_print("ST\r\n");
vty_print("%-03d %d\r\n\n", wl_ctrl.state, wl_ctrl.send_cnt);
} }
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

File diff suppressed because it is too large Load Diff

@ -86,7 +86,7 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus> <RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows> <MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>D40900000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100008D09000055840000030000000E810000080000000B8100000E0000000584000003000000108400001A00000046810000010000000D81000006000000</CommandsUsage> <CommandsUsage>D10900000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100008A09000055840000030000000E810000080000000B8100000E0000000584000003000000108400001A00000046810000010000000D81000006000000</CommandsUsage>
</MFCToolBarParameters> </MFCToolBarParameters>
<CommandManager> <CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages> <CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>

File diff suppressed because it is too large Load Diff

@ -90,11 +90,11 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus> <RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows> <MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>9D0100001300598400000100000010860000010000005684000004000000488100000500000020810000010000000F8100000400000026DE0000010000000C810000A200000055840000AB0000000E8400000600000028DE0000020000000E8100002F0000001F810000010000000B81000002000000D184000002000000058400000300000011860000010000004681000001000000108400000A000000</CommandsUsage> <CommandsUsage>9C010000130059840000010000004881000005000000568400000400000010860000010000000F8100000400000020810000010000000C810000A200000026DE00000100000055840000AA0000000E840000060000001F810000010000000E8100002F00000028DE0000020000000B810000020000000584000003000000D1840000020000001186000001000000108400000A0000004681000001000000</CommandsUsage>
</MFCToolBarParameters> </MFCToolBarParameters>
<CommandManager> <CommandManager>
<CommandsWithoutImages>35007784000007840000FFFFFFFF808C000044D500000D8400000F8400000884000054840000328100001C810000098400001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D9200000C8400003384000078840000118400004881000001000000538400007C8400007D8400007E8400008384000084840000</CommandsWithoutImages> <CommandsWithoutImages>40007784000007840000FFFFFFFF808C000044D500000D8400000F8400000884000054840000328100001C810000098400001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D9200000C8400003384000078840000118400004881000001000000538400007C8400007D8400007E84000083840000848400000484000006840000328400003084000002840000038400000E8400001084000005840000318400000A840000</CommandsWithoutImages>
<MenuUserImages>1C00048400004C000000048100001800000023920000000000003184000053000000208100002B0000000F810000230000000C81000020000000068400004E000000038400004B000000008400000B000000449200001000000030840000520000000E840000500000001F8100002A0000000E810000220000001F9200000D00000022E10000380000000B8100001F0000002D9200000F000000D18400000C000000058400004D0000000581000019000000028400004A000000328400005400000010840000510000000D810000210000000A8400004F0000002C9200000E000000</MenuUserImages> <MenuUserImages>11000481000018000000239200000000000020810000270000000F8100001F0000000C8100001C000000008400000B00000044920000100000001F810000260000000E8100001E0000001F9200000D00000022E10000380000000B8100001B0000002D9200000F000000D18400000C00000005810000190000000D8100001D0000002C9200000E000000</MenuUserImages>
</CommandManager> </CommandManager>
<Pane-59393> <Pane-59393>
<ID>0</ID> <ID>0</ID>

Loading…
Cancel
Save