diff --git a/CablePositioning_APP_V1.0/Core/Inc/RS485_debug.h b/CablePositioning_APP_V1.0/Core/Inc/RS485_debug.h index 9a8fe8f..e8e2eb1 100644 --- a/CablePositioning_APP_V1.0/Core/Inc/RS485_debug.h +++ b/CablePositioning_APP_V1.0/Core/Inc/RS485_debug.h @@ -102,7 +102,6 @@ extern usart_buf_t debug_buf; /* Extern functions ----------------------------------------------------------*/ extern void debug_start(void); extern int32_t debug_app_check(uint32_t addr, uint32_t size, uint8_t file_type); -extern void _debug_pkt_adj_auto2(void); extern void debug_pkt_adj_defect(void); extern void debug_pkt_adj_fault(void); #endif diff --git a/CablePositioning_APP_V1.0/Core/Src/RS485_debug.c b/CablePositioning_APP_V1.0/Core/Src/RS485_debug.c index 0bbaa5c..e8b761a 100644 --- a/CablePositioning_APP_V1.0/Core/Src/RS485_debug.c +++ b/CablePositioning_APP_V1.0/Core/Src/RS485_debug.c @@ -654,110 +654,6 @@ static void _debug_pkt_config_set(void) return; } - -/* 校准参数获取报文处理. */ -static void _debug_pkt_adj_get(void) -{ - proto_head_t *head = (proto_head_t*)debug_buf.buf; - dev_adj_cfg_t *data = (dev_adj_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); - uint32_t *crc = NULL; - - /* 封装报文头. */ - _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_cfg_t), DEBUG_CT_PRV_REPLY); - - /* 封装数据, 这里减 4 是因为结构体最后 4byte 位置特殊. */ - memcpy(data->power_adj, dev_config.power_adj, 64); - data->vin_adj = dev_config.vin_adj; - - /* 计算校验和. */ - crc = (uint32_t*)(debug_buf.buf + head->len); - *crc = crc32(debug_buf.buf, head->len); - - /* 发送报文 */ - _debug_pkt_send(head->len + 4, head->len + 4); - - return; -} - -/* 校准参数设置报文处理. */ -static void _debug_pkt_adj_set_power(void) -{ - proto_head_t *head = (proto_head_t*)debug_buf.buf; - dev_adj_power_cfg_t *data = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); - uint32_t *crc = NULL; - - /* 配置参数. */ - memcpy(dev_config.power_adj, data->power_adj, 32); - dev_config.vin_adj = data->vin_adj; - - /* 封装报文头. */ - _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); - - /* 计算校验和. */ - crc = (uint32_t*)(debug_buf.buf + head->len); - *crc = crc32(debug_buf.buf, head->len); - - /* 发送报文 */ - _debug_pkt_send(head->len + 4, 20); - - /* 保存参数. */ - common_sys_set(COM_SYS_SAVE_CONFIG, 0); - - return; -} - -/* 校准参数设置报文处理. */ -static void _debug_pkt_adj_set_defect(void) -{ - proto_head_t *head = (proto_head_t*)debug_buf.buf; - dev_adj_defect_cfg_t *data = (dev_adj_defect_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); - uint32_t *crc = NULL; - - /* 配置参数. */ - memcpy(dev_config.defect_base, data->defect_base, sizeof(dev_adj_defect_cfg_t)); - - /* 封装报文头. */ - _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); - - /* 计算校验和. */ - crc = (uint32_t*)(debug_buf.buf + head->len); - *crc = crc32(debug_buf.buf, head->len); - - /* 发送报文 */ - _debug_pkt_send(head->len + 4, 20); - - /* 保存参数. */ - common_sys_set(COM_SYS_SAVE_CONFIG, 0); - - return; -} - -/* 校准参数设置报文处理. */ -static void _debug_pkt_adj_set_fault(void) -{ - proto_head_t *head = (proto_head_t*)debug_buf.buf; - dev_adj_fault_cfg_t *data = (dev_adj_fault_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); - uint32_t *crc = NULL; - - /* 配置参数. */ - memcpy(dev_config.fault_base, data->fault_base, sizeof(dev_adj_fault_cfg_t)); - - /* 封装报文头. */ - _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); - - /* 计算校验和. */ - crc = (uint32_t*)(debug_buf.buf + head->len); - *crc = crc32(debug_buf.buf, head->len); - - /* 发送报文 */ - _debug_pkt_send(head->len + 4, 20); - - /* 保存参数. */ - common_sys_set(COM_SYS_SAVE_CONFIG, 0); - - return; -} - /* 自动校准仪器通讯校验和计算. */ static uint8_t _debug_adj_checksum(uint8_t *buf, uint8_t len) { @@ -1020,7 +916,6 @@ void _debug_adj_power_cal(void) } } - /* 自动校准处理. */ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap) { @@ -1048,6 +943,368 @@ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap) return HAL_OK; } +/* 手动校准处理. */ +static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap) +{ + if (!bitmap) + { + return HAL_OK; + } + + dau_adj_state = DAU_ADJ_STATE_POWER; + while (dau_adj_state != DAU_ADJ_STATE_NONE) + { + common_watchdog_set(COM_WDG_CLI); + osDelay(1000); + } + DBG(DBG_M_RS485_DEBUG, "capture end...\r\n"); + _debug_adj_power_cal(); + return HAL_OK; +} + + +/* 校准参数获取报文处理. */ +static void _debug_pkt_adj_get(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_cfg_t *data = (dev_adj_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_cfg_t), DEBUG_CT_PRV_REPLY); + + /* 封装数据, 这里减 4 是因为结构体最后 4byte 位置特殊. */ + memcpy(data->power_adj, dev_config.power_adj, 64); + data->vin_adj = dev_config.vin_adj; + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, head->len + 4); + + return; +} + +/* 校准参数设置报文处理. */ +static void _debug_pkt_adj_set_power(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_power_cfg_t *data = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 配置参数. */ + memcpy(dev_config.power_adj, data->power_adj, 32); + dev_config.vin_adj = data->vin_adj; + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + +/* 校准参数设置报文处理. */ +static void _debug_pkt_adj_set_defect(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_defect_cfg_t *data = (dev_adj_defect_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 配置参数. */ + memcpy(dev_config.defect_base, data->defect_base, sizeof(dev_adj_defect_cfg_t)); + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + +/* 校准参数设置报文处理. */ +static void _debug_pkt_adj_set_fault(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_fault_cfg_t *data = (dev_adj_fault_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 配置参数. */ + memcpy(dev_config.fault_base, data->fault_base, sizeof(dev_adj_fault_cfg_t)); + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + +/* 设备状态获取报文处理. */ +static void _debug_pkt_adj_defect_zero(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_defect_zero_t *data = (dev_adj_defect_zero_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + uint8_t i = 0; + + /* 解析数据. */ + memcpy(&debug_adj_defect, data, sizeof(dev_adj_defect_zero_t)); + + dau_adj_state = DAU_ADJ_STATE_DEFECT_ZERO; + while(dau_adj_state != DAU_ADJ_STATE_NONE) + { + osDelay(1000); + common_watchdog_set(COM_WDG_CLI); + } + + for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) + { + if (!IS_MONITOR_BIT_SET(debug_adj_defect.bitmap, i)) + { + continue; + } + + dev_config.defect_base[i] = dau_ctrl.reg_port_state.DAVR[i]; + } + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + return; +} + +/* 设备状态获取报文处理. */ +static void _debug_pkt_adj_defect(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_defect_cfg_t *data = (dev_adj_defect_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + uint32_t temp = 0; + uint8_t i = 0; + + dau_adj_state = DAU_ADJ_STATE_DEFECT; + while(dau_adj_state != DAU_ADJ_STATE_NONE) + { + osDelay(1000); + common_watchdog_set(COM_WDG_CLI); + } + + for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) + { + if (!IS_MONITOR_BIT_SET(debug_adj_defect.bitmap, i)) + { + continue; + } + temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i]; + //temp = 3276; + dev_config.defect_adj[i] = debug_adj_defect.defect_elec * 32768 / temp; + } + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_defect_cfg_t), DEBUG_CT_PRV_REPLY); + + /* 配置参数. */ + memcpy(data->defect_base, dev_config.defect_base, sizeof(dev_adj_defect_cfg_t)); + + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + +/* 设备状态获取报文处理. */ +static void _debug_pkt_adj_fault_zero(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_fault_zero_t *data = (dev_adj_fault_zero_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 解析数据. */ + memcpy(&debug_adj_fault, data, sizeof(dev_adj_fault_zero_t)); + + dau_adj_state = DAU_ADJ_STATE_FAULT_ZERO; + while(dau_adj_state != DAU_ADJ_STATE_NONE) + { + osDelay(1000); + common_watchdog_set(COM_WDG_CLI); + } + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + return; +} + +/* 设备状态获取报文处理. */ +static void _debug_pkt_adj_fault(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_fault_cfg_t *data = (dev_adj_fault_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + uint8_t i = 0; + + dau_adj_state = DAU_ADJ_STATE_FAULT; + while(dau_adj_state != DAU_ADJ_STATE_NONE) + { + osDelay(1000); + common_watchdog_set(COM_WDG_CLI); + } + + for(i = 0; i < DAU_PORT_FAULT_CNT; i++) + { + data->fault_base[i] = dev_config.fault_base[i]; + + if (!IS_MONITOR_BIT_SET(debug_adj_fault.bitmap, i)) + { + data->fault_adj[i] = dev_config.fault_adj[i]; + continue; + } + + if (!((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_Msk) >> DAU_GFTR_FAULT_Pos)) + { + data->fault_adj[i] = 0; + continue; + } + + //data->fault_adj[i] = abs_cal_u(dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i]); + data->fault_adj[i] = 13107; + } + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_fault_cfg_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + return; +} + +/* 手动校准报文处理. */ +static void _debug_pkt_adj_manual(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_power_t *data = (dev_adj_power_t*)(debug_buf.buf + sizeof(proto_head_t)); + dev_adj_power_cfg_t *cfg = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 解析数据. */ + memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t)); + + /* 组装数据 */ + cfg->return_value = _debug_adj_manual(debug_adj_power.bitmap); + if (debug_adj_power.is_voltage_adj) + { + ADC_vbat_auto(5000); + } + memcpy(cfg->power_adj, dev_config.power_adj, 32); + //memcpy(cfg->power_adj_point, dev_config.power_adj_point, 32); + cfg->vin_adj = dev_config.vin_adj; + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_power_cfg_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + +/* 自动校准报文处理. */ +void _debug_pkt_adj_auto(void) +{ + proto_head_t *head = (proto_head_t*)debug_buf.buf; + dev_adj_power_t *data = (dev_adj_power_t*)(debug_buf.buf + sizeof(proto_head_t)); + dev_adj_power_cfg_t *cfg = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t)); + uint32_t *crc = NULL; + + /* 解析数据. */ + memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t)); + + /* 组装数据 */ + cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap); + if (debug_adj_power.is_voltage_adj) + { + ADC_vbat_auto(5000); + } + memcpy(cfg->power_adj, dev_config.power_adj, 32); + cfg->vin_adj = dev_config.vin_adj; + + /* 封装报文头. */ + _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_power_cfg_t), DEBUG_CT_PRV_REPLY); + + /* 计算校验和. */ + crc = (uint32_t*)(debug_buf.buf + head->len); + *crc = crc32(debug_buf.buf, head->len); + + /* 发送报文 */ + _debug_pkt_send(head->len + 4, 20); + + /* 保存参数. */ + common_sys_set(COM_SYS_SAVE_CONFIG, 0); + + return; +} + /* 实时数据获取报文处理. */ static void _debug_pkt_data_get(void) { diff --git a/CablePositioning_APP_V1.0/Core/Src/cli.c b/CablePositioning_APP_V1.0/Core/Src/cli.c index 1191ad4..d8c7206 100644 --- a/CablePositioning_APP_V1.0/Core/Src/cli.c +++ b/CablePositioning_APP_V1.0/Core/Src/cli.c @@ -120,7 +120,6 @@ static BaseType_t _cli_save(const char *string); static BaseType_t _cli_show(const char *string); static BaseType_t _cli_spi(const char *string); static BaseType_t _cli_work_mode(const char *string); -static BaseType_t _cli_debug_msg(const char *string); #if LD_DEBUG static BaseType_t _cli_debug(const char *string); @@ -146,7 +145,6 @@ static const CLI_Command_Definition_t cmd_save = {"save", _cli_save, 1}; static const CLI_Command_Definition_t cmd_show = {"show", _cli_show, 2}; static const CLI_Command_Definition_t cmd_test = {"spi", _cli_spi, 3}; static const CLI_Command_Definition_t cmd_work_mode = {"work-mode", _cli_work_mode, 1}; -static const CLI_Command_Definition_t cmd_debug_msg = {"msg", _cli_debug_msg, 1}; /* Internal functions --------------------------------------------------------*/ /* cli获取互斥锁. */ @@ -629,8 +627,6 @@ static BaseType_t _cli_debug_msg(const char *string) return pdFALSE; } - - /* 工作模式配置命令. */ static BaseType_t _cli_work_mode(const char *string) { @@ -802,7 +798,6 @@ static void _cli_start(void) FreeRTOS_CLIRegisterCommand(&cmd_show, CLI_NODE_COMMON); FreeRTOS_CLIRegisterCommand(&cmd_test, CLI_NODE_COMMON); FreeRTOS_CLIRegisterCommand(&cmd_work_mode, CLI_NODE_CONFIG); - FreeRTOS_CLIRegisterCommand(&cmd_debug_msg, CLI_NODE_CONFIG); for(;;) {