FIX 1.修改校准

master
wangbo 5 months ago
commit c3e22e5958

@ -51,7 +51,12 @@ typedef struct
uint16_t vbat; // 电池电压,单位:mv
uint16_t vin; // 工作电压,单位:mv
int16_t temperature; // 设备温度,单位:0.1℃
uint8_t reserve[2];
uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态
uint8_t reserve[3];
uint32_t run; // 设备持续运行时间
uint32_t time; // 设备时间
uint32_t elec[8]; // 工频电流有效值mA
int16_t elec_defect_max[4]; // 缺陷电流最大值mA
uint32_t elec_fault[8]; // 故障工频电流有效值mA

@ -101,6 +101,7 @@
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
#define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器
#define DAU_REG_ADDR_GFTTHR 0x0208 // 全局控制寄存器 - 故障电流触发间隔寄存器
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器
@ -252,7 +253,6 @@ extern uint8_t dau_adj_state;
/* Extern functions ----------------------------------------------------------*/
extern void dau_init(void);
extern void dau_adj_init(void);
extern void dau_spi_rw(int8_t rw, uint16_t addr, uint16_t len);
extern void dau_show(void);

@ -44,8 +44,8 @@
/* Define --------------------------------------------------------------------*/
/* 版本信息. */
#define VERSION_MAJOR 128
#define VERSION_MINOR 102
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define COMPILE_TIME (__DATE__" "__TIME__)
#define DEV_CAPABILITY_LEN 16
@ -142,8 +142,8 @@ typedef struct
{
uint8_t bitmap;
uint8_t is_voltage_adj;
uint16_t turns;
uint16_t elec;
uint8_t turns;
uint8_t elec;
} dev_adj_power_t;
/* 校准参数信息. */

@ -100,10 +100,13 @@ typedef struct
uint16_t vin; // 工作电压, 单位: mv
uint16_t vbat; // 电池电压, 单位: mv
uint16_t vsc; // 超级电容电压, 单位: mv
uint16_t defect[4]; // 缺陷电流最大值 mA
uint16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A
uint16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA
uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA
uint8_t col_flag; // DAU 采集标志位
uint8_t reserve[3]; // Reserve
uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态
} fd_data_t;
typedef struct

@ -39,6 +39,7 @@
#include "math.h"
#include "usart.h"
#include "rtc.h"
#include "common.h"
#include "dev_config.h"
@ -94,7 +95,8 @@ typedef struct
uint16_t defect_thr; // 隐患阈值, 单位: mA.
uint16_t fault_thr; // 故障阈值, 单位: A.
uint8_t APN[DEV_APN_LEN]; // APN 名字.
uint8_t reserve[20];
uint16_t fault_inr; // 故障间隔, 单位: s.
uint8_t reserve[18];
} debug_config_t;
/* Private macro -------------------------------------------------------------*/
@ -113,6 +115,10 @@ static dev_adj_defect_zero_t debug_adj_defect;
dev_adj_fault_zero_t debug_adj_fault;
dev_adj_power_t debug_adj_power;
static RTC_DateTypeDef debug_date;
static RTC_TimeTypeDef debug_time;
static struct tm debug_tm;
/* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/
/* 报文头校验. */
@ -469,9 +475,7 @@ static void _debug_pkt_update_fpga(void)
mul_head_t *m_head = (mul_head_t*)(debug_buf.buf + sizeof(proto_head_t));
uint8_t *data = (uint8_t*)(debug_buf.buf + sizeof(proto_head_t) + sizeof(mul_head_t));
uint32_t addr = TFTP_APP_ADDRESS;
uint32_t app_len = 0;
uint32_t *crc = NULL;
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
/* index 为 0 表示是首保, 需要擦除 FLASH. */
if (0 == m_head->index)
@ -510,10 +514,9 @@ static void _debug_pkt_update_fpga(void)
if(m_head->len < DEBUG_FLASH_BUF_SIZE)
{
/* 校验数据. */
app_len = addr - TFTP_APP_ADDRESS + m_head->len;
dau_ctrl.update_flag = TRUE;
dau_ctrl.update_len = app_len;
dau_ctrl.update_rt = DAU_UPD_NONE;
dau_ctrl.update_len = addr - TFTP_APP_ADDRESS + m_head->len;
dau_ctrl.update_rt_dbg = DAU_UPD_NONE;
}
/* 封装报文头. */
@ -1049,6 +1052,20 @@ static void _debug_pkt_data_get(void)
data->temperature = ADC_ctrl.ADCi_temp;
data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin;
HAL_RTC_GetTime(&hrtc, &debug_time, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &debug_date, RTC_FORMAT_BIN);
debug_tm.tm_year = debug_date.Year + 100;
debug_tm.tm_mon = debug_date.Month - 1;
debug_tm.tm_mday = debug_date.Date;
debug_tm.tm_hour = debug_time.Hours;
debug_tm.tm_min = debug_time.Minutes;
debug_tm.tm_sec = debug_time.Seconds;
data->time = mktime(&debug_tm);
data->run = HAL_GetTick() / 1000;
data->state_wir = wl_ctrl.state;
data->is_bat_charge = st_data.is_bat_charge;
data->is_utc_valid = dau_ctrl.is_utc_valid;
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
data->elec[i] = dau_ctrl.reg_elec[i];
@ -1269,7 +1286,7 @@ static void _debug_pkt_adj_defect(void)
continue;
}
temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i];
temp = 3276;
//temp = 3276;
dev_config.defect_adj[i] = debug_adj_defect.defect_elec * 32768 / temp;
}
@ -1580,7 +1597,7 @@ static void _debug_pkt_update_fpga_result()
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(int32_t), DEBUG_CT_PRV_REPLY);
head->cmd_type = DEBUG_CT_PRV_REPLY;
head->cmd = DEBUG_PRV_UPDATE_RT;
*res = (dau_ctrl.update_rt != DAU_UPD_OK);
*res = (dau_ctrl.update_rt_dbg != DAU_UPD_OK);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
@ -1807,10 +1824,10 @@ void debug_start(void)
{
common_watchdog_set(COM_WDG_CLI);
if (dau_ctrl.update_rt == DAU_UPD_OK)
if (dau_ctrl.update_rt_dbg != DAU_UPD_NONE)
{
_debug_pkt_update_fpga_result();
dau_ctrl.update_rt = DAU_UPD_NONE;
dau_ctrl.update_rt_dbg = DAU_UPD_NONE;
}
/* 开启串口空闲中断 DMA 收包. 注意这里会收到空闲中断, DMA 收一半中断, 全收中断, 注意中断处理. */

@ -862,8 +862,6 @@ void _cli_init(void)
/* 命令行线程开始函数. */
void cli_start(void const * argument)
{
/******** START INIT ********/
/* 以下代码是freeRTOS启动后第一个运行的任务,因为优先级最高,且最早创建.所以需要在freeRTOS启动后再初始化
* . */
@ -894,15 +892,8 @@ void cli_start(void const * argument)
/* 初始化 ADC 采样任务. */
ADC_init();
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ))
{
dau_adj_init();
}
else
{
/* 初始化 DAU 任务. */
dau_init();
}
/* 初始化 DAU 任务. */
dau_init();
/* 初始化无线通讯任务. */
if (!IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)

@ -285,15 +285,22 @@ static void _dau_data_save(void)
fd_data.vbat = ADC_ctrl.ADCi_vbat;
fd_data.vin = ADC_ctrl.ADCi_vin;
fd_data.vsc = ADC_ctrl.ADCi_vsc;
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{
fd_data.fault[i] = dau_ctrl.reg_port_state.FMAX[i];
}
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{
fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i];
}
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
fd_data.elec[i] = dau_ctrl.reg_elec[i];
}
fd_data.col_flag = dau_ctrl.col_flag;
fd_data.is_bat_charge = st_data.is_bat_charge;
fd_data.is_utc_valid = dau_ctrl.is_utc_valid;
fd_data.state_wir = wl_ctrl.state;
fd_write(&fd_data);
}
@ -312,6 +319,9 @@ int32_t _dau_update(void)
uint32_t addr = TFTP_APP_ADDRESS;
int32_t rv = HAL_ERROR;
/* 校验报文. */
E_RETURN(debug_app_check(TFTP_APP_ADDRESS, app_len, 3));
/* 发送升级数据 */
while(1)
{
@ -582,57 +592,6 @@ int32_t _dau_wave_col_defect(void)
vty_print("#D reg end addr %x\r\n", addr);
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
return rv;
#if 0
uint8_t i = 0;
uint8_t j = 0;
uint8_t is_exceed = FALSE;
uint32_t addr = 0;
int32_t rv = HAL_ERROR;
/* 比较缺陷波形是否超过阈值 */
//E_RETURN(_dau_reg_read_port_state());
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
dau_ctrl.reg_defect_max[i] = 100 +i;
if (dau_ctrl.reg_defect_max[i] > dev_config.wave_threshold)
{
is_exceed = TRUE;
}
}
/* 没有超过阈值并没有强制录波直接返回 */
if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
{
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
return HAL_OK;
}
/* 擦除 flash */
addr = dau_ctrl.addr_reg;
vty_print("#D3 %x\r\n", addr);
for(i = 0; i < 2; i++)
{
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE));
addr += SPI_FLASH_BLOCK64_SIZE;
}
/* 数据地址应该是被擦除过的地址 (当前地址向前偏移 128k). */
addr = dau_ctrl.addr_reg;
/* 读取缺陷数据 */
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
memset(&dau_ctrl.buf_dau_rx[2], i, DAU_PKT_FAULT_BYTE_CNT);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{
E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_DEFECT_BYTE_CNT));
addr += DAU_PKT_DEFECT_BYTE_CNT;
}
}
vty_print("#D4 %x\r\n", addr);
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
return rv;
#endif
}
/* description: 工频波形采集
@ -840,6 +799,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
return HAL_OK;
}
flash_log_write(FLASH_LOG_TYPE_WARNING, "Fhault triggering!\r\n");
/* 采集波形 */
E_RETURN(_dau_wave_col_fault());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
@ -847,6 +808,7 @@ int32_t _dau_wave_col_trigger_by_fault(void)
/* 置标志位 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
_dau_data_save();
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
@ -941,9 +903,9 @@ int32_t _dau_wave_col_trigger_by_reg(void)
_dau_power_calculate(DAU_SOURCE_REG);
/* 置标志位, 保存数据 */
_dau_data_save();
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
dau_ctrl.col_time = tick;
_dau_data_save();
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
@ -1050,10 +1012,6 @@ static void _dau_init(void)
HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
osDelay(2000);
//common_watchdog_set(COM_WDG_DAU);
//osDelay(10000);
//common_watchdog_set(COM_WDG_DAU);
//osDelay(10000);
/* 读取 FPGA 版本信息 */
if (HAL_OK == _dau_reg_read_global_state())
@ -1076,7 +1034,7 @@ static void _dau_init(void)
/* 触发阈值 */
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
*temp = 0;
*temp = 0x7fff;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
osDelay(500);
/* 开启 */
@ -1109,13 +1067,13 @@ static void _dau_start(void *argument)
}
/* utc 对时处理 */
//_dau_utc();
_dau_utc();
/* 故障电流采集 */
_dau_wave_col_trigger_by_fault();
/* 循环工频缺陷电流采集 */
//_dau_wave_col_trigger_by_reg();
_dau_wave_col_trigger_by_reg();
/* 处理升级 */
if (dau_ctrl.update_flag)
@ -1190,6 +1148,25 @@ int32_t _dau_adj_reg_write_port(uint32_t port)
return rv;
}
/* description: 缺陷波形采集
param:
return: HAL_xxx */
int32_t _dau_adj_wave_col_defect(void)
{
uint8_t i = 0;
int32_t rv = HAL_ERROR;
/* 比较缺陷波形是否超过阈值 */
E_RETURN(_dau_reg_read_port_state());
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
}
/* 直接返回 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
return HAL_OK;
}
/* description: 寄存器触发波形采集
param:
return: HAL_xxx */
@ -1198,74 +1175,12 @@ int32_t _dau_adj_wave_col_trigger_by_reg(void)
int32_t rv = HAL_ERROR;
E_RETURN(_dau_wave_col_start());
E_RETURN(_dau_adj_wave_col_defect());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint32_t addr = dau_ctrl.addr_reg;
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
//for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("DEFECT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_DEFECT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 1
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
//for(i = 5; i < DAU_PORT_POWER_CNT; i++)
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.reg_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
vty_print("reg_elec:%d\r\n", dau_ctrl.reg_elec[0]);
#endif
return rv;
}
/* description: DAU 校准任务循环
param:
return: */
@ -1323,6 +1238,7 @@ static void _dau_adj_start(void *argument)
_dau_reg_write_port(i);
}
/* 重启 FPGA 触发故障采集 */
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_RESET);
osDelay(1000);
@ -1331,8 +1247,7 @@ static void _dau_adj_start(void *argument)
osDelay(2000);
/* 触发阈值 */
//*temp = 0x2800;
*temp = 0x0;
*temp = 0x2800;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
/* 开启 */
osDelay(500);
@ -1350,7 +1265,7 @@ static void _dau_adj_start(void *argument)
/* 读取最大值. */
_dau_reg_read_port_state();
/* 开启 */
/* 关闭 */
osDelay(500);
*temp = 0;
_dau_reg_write(0xf, sizeof(uint16_t));
@ -1365,6 +1280,146 @@ static void _dau_adj_start(void *argument)
}
}
/* description: 故障触发波形采集
param:
return: HAL_xxx */
int32_t _dau_continue_wave_col_trigger_by_fault(void)
{
int32_t rv = HAL_ERROR;
/* 没有触发直接退出 */
if (!((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_Msk) >> DAU_GFTR_FAULT_Pos))
{
return HAL_OK;
}
/* 采集波形 */
E_RETURN(_dau_wave_col_fault());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
_dau_power_calculate(DAU_SOURCE_FAULT);
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
uint32_t addr = dau_ctrl.addr_fault;
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
//for(j = 0; j < 1; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
uint16_t *buf = NULL;
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.fault_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
return HAL_OK;
}
/* description: DAU 主任务循环
param:
return: */
static void _dau_continue_start(void *argument)
{
int32_t rv = HAL_ERROR;
/* 状态初始化 */
_dau_init();
vty_print("DAU start...\r\n");
for (;;)
{
common_watchdog_set(COM_WDG_DAU);
osDelay(4250);
/* 读取全局状态寄存器 */
rv = _dau_reg_read_global_state();
if (rv != HAL_OK)
{
continue;
}
/* utc 对时处理 */
_dau_utc();
/* 故障电流采集 */
_dau_continue_wave_col_trigger_by_fault();
/* 循环工频缺陷电流采集 */
_dau_adj_wave_col_trigger_by_reg();
_dau_power_calculate(DAU_SOURCE_REG);
/* 处理升级 */
if (dau_ctrl.update_flag)
{
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update start!\r\n");
dau_ctrl.update_flag = FALSE;
if (HAL_OK == _dau_update())
{
dau_ctrl.update_rt = DAU_UPD_OK;
dau_ctrl.update_rt_dbg = DAU_UPD_OK;
}
else
{
dau_ctrl.update_rt = DAU_UPD_ERROR;
dau_ctrl.update_rt_dbg = DAU_UPD_ERROR;
}
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR");
}
if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE))
{
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
_dau_reg_write_port(dau_ctrl.reg_data);
}
}
}
/* description: GPS 报文处理 ($GNZDA,235949.012,05,01,1980,,*4F)
param:
@ -1506,20 +1561,22 @@ static void _dau_gps_start(void *argument)
return: */
void dau_init(void)
{
dau_ctrl.dau_handle = osThreadNew(_dau_start, NULL, &dau_attributes);
dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes);
}
/* description: DAU 采集校准任务初始化
param:
return: */
void dau_adj_init(void)
{
dau_ctrl.dau_handle = osThreadNew(_dau_adj_start, NULL, &dau_adj_attributes);
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ))
{
dau_ctrl.dau_handle = osThreadNew(_dau_adj_start, NULL, &dau_adj_attributes);
}
else if(IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY))
{
dau_ctrl.dau_handle = osThreadNew(_dau_continue_start, NULL, &dau_adj_attributes);
}
else
{
/* 初始化 DAU 任务. */
dau_ctrl.dau_handle = osThreadNew(_dau_start, NULL, &dau_attributes);
}
dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes);
}
/* description: spi 接口测试函数
param:
return: */

@ -589,13 +589,24 @@ void dev_config_defaults_set(void)
_dev_config_mutex_lock();
/* 配置初始化. */
_dev_config_default_set();
/* 默认配置下发 */
snprintf(dev_config.host, DEV_NAME_LEN, "%s", DEV_DEFAULT_HOST);
dev_config.collect_interval = 10;
dev_config.keepalive = 5;
dev_config.power_threshold = 5;
dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");
_dev_config_save(CONFIG_ADDRESS);
_dev_config_save(CONFIG_ADDRESS_BAK);
flash_log_write(FLASH_LOG_TYPE_INFO, "Config default system reset!\r\n");
common_sys_set(COM_SYS_RESET, (void*)&reset_delay);
_dev_config_mutex_unlock();
return;
}
/* 保存配置文件. */

@ -1298,7 +1298,6 @@ static void _wl_4G_send_realdata(void)
wl_proto_realdata_t *data = (wl_proto_realdata_t*)(wl_ctrl.dma_tx_buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
uint8_t i = 0;
time_t temp = 0;
/* 封装报文头. */
_wl_4G_head_init(sizeof(proto_head_t) + sizeof(wl_proto_realdata_t), DEBUG_CT_PRV_REPLY, DEBUG_PRV_REALDATA, wl_ctrl.pkt_id);
@ -1317,8 +1316,7 @@ static void _wl_4G_send_realdata(void)
wl_tm.tm_hour = wl_time.Hours;
wl_tm.tm_min = wl_time.Minutes;
wl_tm.tm_sec = wl_time.Seconds;
temp = mktime(&wl_tm);
data->utc = temp;
data->utc = mktime(&wl_tm);
data->run_time = HAL_GetTick() / 1000;
for(i = 0; i < DAU_PORT_POWER_CNT; i++)

File diff suppressed because it is too large Load Diff

@ -86,7 +86,7 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>5A0B00000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100000A0B000055840000030000000E810000080000000B810000110000000584000003000000108400001F00000046810000010000000D81000007000000</CommandsUsage>
<CommandsUsage>6F0B00000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100001E0B000055840000030000000E810000080000000B810000110000000584000003000000108400002000000046810000010000000D81000007000000</CommandsUsage>
</MFCToolBarParameters>
<CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>
@ -381,7 +381,7 @@
</BasePane-34049>
<MFCToolBar-34050>
<Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000000028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34050>
<Pane-34050>
<ID>34050</ID>

Loading…
Cancel
Save