1、修复CBR0寿命与31天记录落盘失败(比较缓冲128→256)
2、APP换灯直接写DP3,DP4本版忽略;上电用restore灌RAM;读/全量打包权威剩余秒数
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* ⚠ DP0 上报**实际吸合态**:本文件的赋值只表达"手动请求",app_function_poll
|
||||
* (20ms)会把它覆盖为过零后的真值,协议层差分上报读到的即实际态。
|
||||
* ⚠ DP3 剩余寿命 / DP25 告警由 app_light_life 维护并写 gDevData,本文件只做
|
||||
* APP 写 DP3/DP4 时的入口转发。
|
||||
* APP 写 DP3 时的入口转发。DP4 灯泡复位本版写忽略(APP 直接写 DP3)。
|
||||
* ================================================================ */
|
||||
|
||||
#include "jb_product.h"
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "app_nvm.h"
|
||||
#include "app_function.h"
|
||||
#include "app_light_life.h"
|
||||
#include "board_pin.h"
|
||||
|
||||
#define LOG_TAG_CONST APP
|
||||
#define LOG_TAG "[JB_PRD]"
|
||||
@@ -41,7 +42,7 @@ static volatile uint32_t timerMs;
|
||||
|
||||
/* ════════════════════════════════════════════════════════════════
|
||||
* userInit — DP 默认值(剩余寿命/告警在 app_light_life_init 与
|
||||
* app_nvm_load 恢复,这里先置 0 与首上电语义一致)
|
||||
* app_nvm_load 恢复,这里先置额定值与首上电语义一致)
|
||||
* ════════════════════════════════════════════════════════════════ */
|
||||
void userInit(void)
|
||||
{
|
||||
@@ -50,8 +51,10 @@ void userInit(void)
|
||||
gDevData.heat_switch = 0; /* DP0 灯泡开关 0=关 1=开(由 VM 恢复) */
|
||||
gDevData.temp_control_switch = 0; /* DP1 温控开关(本版写忽略) */
|
||||
gDevData.light_work_time = 0; /* DP2 灯泡总工作时长(写忽略,上报恒 0) */
|
||||
gDevData.lighe_remain_time = 0; /* DP3 灯泡剩余寿命(app_light_life 维护) */
|
||||
gDevData.light_reset = 0; /* DP4 灯泡复位(WO,脉冲) */
|
||||
#if BOARD_LIGHT_LIFE_ENABLE
|
||||
gDevData.lighe_remain_time = BOARD_LIGHT_RATED_SEC; /* DP3:先额定,VM 有效时 restore 覆盖 */
|
||||
#endif
|
||||
gDevData.light_reset = 0; /* DP4 灯泡复位(WO,本版写忽略) */
|
||||
memset(gDevData.temp_control_time, 0, 4); /* DP5 温控时间(本版写忽略) */
|
||||
gDevData.mode = 0; /* DP6 模式(本版写忽略) */
|
||||
gDevData.min_temp = 0.0f; /* DP7 最低温度(本版写忽略) */
|
||||
@@ -116,10 +119,12 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
log_info("dp0 light request=%d\n", gDevData.heat_switch);
|
||||
break;
|
||||
|
||||
/* ── DP1/DP2/DP5~8:本版写忽略(规格书 9 章 / 15 章)。
|
||||
* 不更新 gDevData → 不动作、不回显、不落盘 ── */
|
||||
/* ── DP1/DP2/DP4/DP5~8:本版写忽略(规格书 9 章 / 15 章)。
|
||||
* 不更新 gDevData → 不动作、不回显、不落盘。
|
||||
* 灯泡复位走 APP 写 DP3(写 2592000 即换灯),不认 DP4 ── */
|
||||
case DP_ID_TEMP_CONTROL_SWITCH: /* DP1 温控开关 */
|
||||
case DP_ID_LIGHT_WORK_TIME: /* DP2 灯泡总工作时长(恒 0) */
|
||||
case DP_ID_LIGHT_RESET: /* DP4 灯泡复位(预留) */
|
||||
case DP_ID_TEMP_CONTROL_TIME: /* DP5 温控时间 */
|
||||
case DP_ID_MODE: /* DP6 模式 */
|
||||
case DP_ID_MIN_TEMP: /* DP7 最低温度 */
|
||||
@@ -132,15 +137,6 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
app_light_life_set_remain(ctrl->lighe_remain_time);
|
||||
break;
|
||||
|
||||
/* ── DP4 灯泡复位(WO,13.2):写 1 → 回额定值 2,592,000、告警 0、
|
||||
* 立刻落盘;写 0 无动作;WO 不上报,值清回 0 ── */
|
||||
case DP_ID_LIGHT_RESET:
|
||||
if (ctrl->light_reset) {
|
||||
app_light_life_reset();
|
||||
}
|
||||
gDevData.light_reset = 0;
|
||||
break;
|
||||
|
||||
/* ── DP9 当前温度(WO):服务器下发 → 联动用温度(10.2/8 章)。
|
||||
* 协议层不打包不上报;联动引擎关时也只存 RAM ── */
|
||||
case DP_ID_CURRENT_TEMP:
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "jb_common.h"
|
||||
#include "jb_product.h"
|
||||
#include "jb_ringbuffer.h"
|
||||
#include "app_light_life.h"
|
||||
#include "stdio.h"
|
||||
|
||||
/* ════════════════════════════════════════════════════════════════
|
||||
@@ -179,7 +180,8 @@ static uint16_t jbPackDps(const jb_data_point_t *dp,
|
||||
if (mask[DP_ID_LIGHE_REMAIN_TIME / 8] & (1 << (DP_ID_LIGHE_REMAIN_TIME % 8)))
|
||||
{
|
||||
bitmap[DP_ID_LIGHE_REMAIN_TIME / 8] |= (1 << (DP_ID_LIGHE_REMAIN_TIME % 8));
|
||||
jbWriteU32BE(&out[valIdx], (uint32_t)dp->lighe_remain_time);
|
||||
/* 打包权威剩余寿命,避免 60s 节流导致读请求/全量同步最多落后 59s */
|
||||
jbWriteU32BE(&out[valIdx], app_light_life_get_remain());
|
||||
valIdx += 4;
|
||||
}
|
||||
/* DP5 温控时间 (raw, 4B, RW) */
|
||||
|
||||
@@ -176,12 +176,12 @@ void usr_jb_le_recieve_data(u8 *data, u16 len)
|
||||
void usr_timer_loop(void)
|
||||
{
|
||||
userHandle();
|
||||
app_light_life_loop(); /* 先同步 DP3/告警,本拍 0x07 才能带上到期/60s */
|
||||
jbProtocolHandle(&gDevData);
|
||||
app_th_scan_tick(); /* P2:断连时 500ms 重连广播/500ms 扫描交替 */
|
||||
app_linkage_run(500); /* P2:联动引擎(任务上下文;仲裁见 app_arbiter) */
|
||||
app_timer_run(500); /* P2:定时引擎(RTC 门闩 + 窗判断) */
|
||||
app_runrec_rotate_if_needed(); /* P2:跨天旋转/落盘/灌 DP20 */
|
||||
app_light_life_loop(); /* 灯泡寿命:60s 节流同步 / 边沿立刻落盘(13.2) */
|
||||
app_function_loop(); /* VM 防抖落盘 + 配对/OTA 动作落地 */
|
||||
|
||||
#if (BOARD_ZC_ENABLE && BOARD_ZC_DIAG_LOG)
|
||||
|
||||
Reference in New Issue
Block a user