更新DP编号以确保连续性,调整定时相关DP的ID,从DP13-21改为DP7-15,修正文档和代码中的相关引用,确保与最新协议一致。
This commit is contained in:
@@ -50,30 +50,30 @@ void userInit(void)
|
||||
gDevData.current_humi = 0; /* DP4 当前湿度 */
|
||||
gDevData.linkage_delete = 0; /* DP5 联动删除(脉冲,写 1 触发后清回 0) */
|
||||
memset(gDevData.linkage_config, 0, 20); /* DP6 联动配置(20B,10.2 布局) */
|
||||
gDevData.time_en = 0; /* DP13 定时使能 0=关 1=开 */
|
||||
memset(gDevData.time_config1, 0, 8); /* DP14 定时配置1 */
|
||||
memset(gDevData.time_config2, 0, 8); /* DP15 定时配置2 */
|
||||
memset(gDevData.time_config3, 0, 8); /* DP16 定时配置3 */
|
||||
memset(gDevData.time_config4, 0, 8); /* DP17 定时配置4 */
|
||||
memset(gDevData.time_config5, 0, 8); /* DP18 定时配置5 */
|
||||
memset(gDevData.time_config6, 0, 8); /* DP19 定时配置6 */
|
||||
memset(gDevData.time_config7, 0, 8); /* DP20 定时配置7 */
|
||||
memset(gDevData.run_record, 0, 124); /* DP21 运行记录(RO,由 app_runrec 填) */
|
||||
gDevData.heartbeat = 0; /* DP22 心跳(本版忽略) */
|
||||
gDevData.fault_en = 0; /* DP23 设备故障使能 */
|
||||
gDevData.fault_code = 0; /* DP24 设备故障 */
|
||||
gDevData.alarm_en = 0; /* DP25 设备告警使能 */
|
||||
gDevData.alarm_code = 0; /* DP26 设备告警(保持 0) */
|
||||
gDevData.factory_reset = 0; /* DP27 恢复出厂设置(WO,写 1 触发) */
|
||||
gDevData.reserva_dp1 = 0; /* DP28 预留DP1 */
|
||||
gDevData.reserva_dp2 = 0; /* DP29 预留DP2 */
|
||||
gDevData.reserva_dp3 = 0; /* DP30 预留DP3 */
|
||||
gDevData.time_en = 0; /* DP7 定时使能 0=关 1=开 */
|
||||
memset(gDevData.time_config1, 0, 8); /* DP8 定时配置1 */
|
||||
memset(gDevData.time_config2, 0, 8); /* DP9 定时配置2 */
|
||||
memset(gDevData.time_config3, 0, 8); /* DP10 定时配置3 */
|
||||
memset(gDevData.time_config4, 0, 8); /* DP11 定时配置4 */
|
||||
memset(gDevData.time_config5, 0, 8); /* DP12 定时配置5 */
|
||||
memset(gDevData.time_config6, 0, 8); /* DP13 定时配置6 */
|
||||
memset(gDevData.time_config7, 0, 8); /* DP14 定时配置7 */
|
||||
memset(gDevData.run_record, 0, 124); /* DP15 运行记录(RO,由 app_runrec 填) */
|
||||
gDevData.heartbeat = 0; /* DP16 心跳(本版忽略) */
|
||||
gDevData.fault_en = 0; /* DP17 设备故障使能 */
|
||||
gDevData.fault_code = 0; /* DP18 设备故障 */
|
||||
gDevData.alarm_en = 0; /* DP19 设备告警使能 */
|
||||
gDevData.alarm_code = 0; /* DP20 设备告警(保持 0) */
|
||||
gDevData.factory_reset = 0; /* DP21 恢复出厂设置(WO,写 1 触发) */
|
||||
gDevData.reserva_dp1 = 0; /* DP22 预留DP1 */
|
||||
gDevData.reserva_dp2 = 0; /* DP23 预留DP2 */
|
||||
gDevData.reserva_dp3 = 0; /* DP24 预留DP3 */
|
||||
}
|
||||
|
||||
/* ════════════════════════════════════════════════════════════════
|
||||
* userHandle — 用户数据采集(500ms 由 usr_timer_loop 调用)
|
||||
* 只填温湿度上报 DP;档位/模式/fault 由 app_function_poll(20ms)同步;
|
||||
* DP21 运行记录由 app_runrec 在任务上下文灌
|
||||
* DP15 运行记录由 app_runrec 在任务上下文灌
|
||||
* ════════════════════════════════════════════════════════════════ */
|
||||
void userHandle(void)
|
||||
{
|
||||
@@ -135,13 +135,13 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
app_linkage_set_config();
|
||||
break;
|
||||
|
||||
/* ── DP13 定时使能 ── */
|
||||
/* ── DP7 定时使能 ── */
|
||||
case DP_ID_TIME_EN:
|
||||
gDevData.time_en = ctrl->time_en ? 1 : 0;
|
||||
app_timer_set_en(gDevData.time_en);
|
||||
break;
|
||||
|
||||
/* ── DP14~20 定时配置(8 字节)── */
|
||||
/* ── DP8~14 定时配置(8 字节)── */
|
||||
case DP_ID_TIME_CONFIG1:
|
||||
memcpy(gDevData.time_config1, ctrl->time_config1, 8);
|
||||
app_timer_set_config(1);
|
||||
@@ -171,16 +171,16 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
app_timer_set_config(7);
|
||||
break;
|
||||
|
||||
/* ── DP21 运行记录:RO,禁止 APP 写(规格书第 15 章)── */
|
||||
/* ── DP15 运行记录:RO,禁止 APP 写(规格书第 15 章)── */
|
||||
case DP_ID_RUN_RECORD:
|
||||
break;
|
||||
|
||||
/* ── DP22 心跳:本版忽略(规格书 0 章第 11 条 / 15 章)。
|
||||
/* ── DP16 心跳:本版忽略(规格书 0 章第 11 条 / 15 章)。
|
||||
* 写了也不停温湿度上报,不做 12s 停报 ── */
|
||||
case DP_ID_HEARTBEAT:
|
||||
break;
|
||||
|
||||
/* ── DP23/25 使能:原样存,P0 不做位级过滤 ── */
|
||||
/* ── DP17/19 使能:原样存,P0 不做位级过滤 ── */
|
||||
case DP_ID_FAULT_EN:
|
||||
gDevData.fault_en = ctrl->fault_en;
|
||||
break;
|
||||
@@ -188,7 +188,7 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
gDevData.alarm_en = ctrl->alarm_en;
|
||||
break;
|
||||
|
||||
/* ── DP27 恢复出厂设置(原 DP25):清业务 VM(留配对)+ RAM 复位,
|
||||
/* ── DP21 恢复出厂设置:清业务 VM(留配对)+ RAM 复位,
|
||||
* 不断开不软复位(规格书第 14 章)── */
|
||||
case DP_ID_FACTORY_RESET:
|
||||
gDevData.factory_reset = ctrl->factory_reset ? 1 : 0;
|
||||
@@ -197,7 +197,7 @@ int8_t jbEventProcess(jb_event_info_t *info, jb_data_point_t *ctrl)
|
||||
}
|
||||
break;
|
||||
|
||||
/* ── DP28~30 预留:存 RAM,可不实现动作 ── */
|
||||
/* ── DP22~24 预留:存 RAM,可不实现动作 ── */
|
||||
case DP_ID_RESERVA_DP1:
|
||||
gDevData.reserva_dp1 = ctrl->reserva_dp1;
|
||||
break;
|
||||
|
||||
@@ -201,107 +201,107 @@ static uint16_t jbPackDps(const jb_data_point_t *dp,
|
||||
memcpy(&out[valIdx], dp->linkage_config, 20);
|
||||
valIdx += 20;
|
||||
}
|
||||
/* DP13 定时使能 (bool, 1B, RW) */
|
||||
/* DP7 定时使能 (bool, 1B, RW) */
|
||||
if (mask[DP_ID_TIME_EN / 8] & (1 << (DP_ID_TIME_EN % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_EN / 8] |= (1 << (DP_ID_TIME_EN % 8));
|
||||
out[valIdx++] = dp->time_en ? 1 : 0;
|
||||
}
|
||||
/* DP14 定时配置1 (raw, 8B, RW) */
|
||||
/* DP8 定时配置1 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG1 / 8] & (1 << (DP_ID_TIME_CONFIG1 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG1 / 8] |= (1 << (DP_ID_TIME_CONFIG1 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config1, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP15 定时配置2 (raw, 8B, RW) */
|
||||
/* DP9 定时配置2 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG2 / 8] & (1 << (DP_ID_TIME_CONFIG2 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG2 / 8] |= (1 << (DP_ID_TIME_CONFIG2 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config2, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP16 定时配置3 (raw, 8B, RW) */
|
||||
/* DP10 定时配置3 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG3 / 8] & (1 << (DP_ID_TIME_CONFIG3 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG3 / 8] |= (1 << (DP_ID_TIME_CONFIG3 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config3, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP17 定时配置4 (raw, 8B, RW) */
|
||||
/* DP11 定时配置4 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG4 / 8] & (1 << (DP_ID_TIME_CONFIG4 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG4 / 8] |= (1 << (DP_ID_TIME_CONFIG4 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config4, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP18 定时配置5 (raw, 8B, RW) */
|
||||
/* DP12 定时配置5 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG5 / 8] & (1 << (DP_ID_TIME_CONFIG5 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG5 / 8] |= (1 << (DP_ID_TIME_CONFIG5 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config5, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP19 定时配置6 (raw, 8B, RW) */
|
||||
/* DP13 定时配置6 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG6 / 8] & (1 << (DP_ID_TIME_CONFIG6 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG6 / 8] |= (1 << (DP_ID_TIME_CONFIG6 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config6, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP20 定时配置7 (raw, 8B, RW) */
|
||||
/* DP14 定时配置7 (raw, 8B, RW) */
|
||||
if (mask[DP_ID_TIME_CONFIG7 / 8] & (1 << (DP_ID_TIME_CONFIG7 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_TIME_CONFIG7 / 8] |= (1 << (DP_ID_TIME_CONFIG7 % 8));
|
||||
memcpy(&out[valIdx], dp->time_config7, 8);
|
||||
valIdx += 8;
|
||||
}
|
||||
/* DP21 运行记录 (raw, 124B, RO) */
|
||||
/* DP15 运行记录 (raw, 124B, RO) */
|
||||
if (mask[DP_ID_RUN_RECORD / 8] & (1 << (DP_ID_RUN_RECORD % 8)))
|
||||
{
|
||||
bitmap[DP_ID_RUN_RECORD / 8] |= (1 << (DP_ID_RUN_RECORD % 8));
|
||||
memcpy(&out[valIdx], dp->run_record, 124);
|
||||
valIdx += 124;
|
||||
}
|
||||
/* DP23 设备故障使能 (uint8, 1B, RW) */
|
||||
/* DP17 设备故障使能 (uint8, 1B, RW) */
|
||||
if (mask[DP_ID_FAULT_EN / 8] & (1 << (DP_ID_FAULT_EN % 8)))
|
||||
{
|
||||
bitmap[DP_ID_FAULT_EN / 8] |= (1 << (DP_ID_FAULT_EN % 8));
|
||||
out[valIdx++] = (uint8_t)dp->fault_en;
|
||||
}
|
||||
/* DP24 设备故障 (uint8, 1B, RO) */
|
||||
/* DP18 设备故障 (uint8, 1B, RO) */
|
||||
if (mask[DP_ID_FAULT_CODE / 8] & (1 << (DP_ID_FAULT_CODE % 8)))
|
||||
{
|
||||
bitmap[DP_ID_FAULT_CODE / 8] |= (1 << (DP_ID_FAULT_CODE % 8));
|
||||
out[valIdx++] = (uint8_t)dp->fault_code;
|
||||
}
|
||||
/* DP25 设备告警使能 (uint8, 1B, RW) */
|
||||
/* DP19 设备告警使能 (uint8, 1B, RW) */
|
||||
if (mask[DP_ID_ALARM_EN / 8] & (1 << (DP_ID_ALARM_EN % 8)))
|
||||
{
|
||||
bitmap[DP_ID_ALARM_EN / 8] |= (1 << (DP_ID_ALARM_EN % 8));
|
||||
out[valIdx++] = (uint8_t)dp->alarm_en;
|
||||
}
|
||||
/* DP26 设备告警 (uint8, 1B, RO) */
|
||||
/* DP20 设备告警 (uint8, 1B, RO) */
|
||||
if (mask[DP_ID_ALARM_CODE / 8] & (1 << (DP_ID_ALARM_CODE % 8)))
|
||||
{
|
||||
bitmap[DP_ID_ALARM_CODE / 8] |= (1 << (DP_ID_ALARM_CODE % 8));
|
||||
out[valIdx++] = (uint8_t)dp->alarm_code;
|
||||
}
|
||||
/* DP28 预留DP1 (uint32, 4B, RW) */
|
||||
/* DP22 预留DP1 (uint32, 4B, RW) */
|
||||
if (mask[DP_ID_RESERVA_DP1 / 8] & (1 << (DP_ID_RESERVA_DP1 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_RESERVA_DP1 / 8] |= (1 << (DP_ID_RESERVA_DP1 % 8));
|
||||
jbWriteU32BE(&out[valIdx], (uint32_t)dp->reserva_dp1);
|
||||
valIdx += 4;
|
||||
}
|
||||
/* DP29 预留DP2 (uint32, 4B, RW) */
|
||||
/* DP23 预留DP2 (uint32, 4B, RW) */
|
||||
if (mask[DP_ID_RESERVA_DP2 / 8] & (1 << (DP_ID_RESERVA_DP2 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_RESERVA_DP2 / 8] |= (1 << (DP_ID_RESERVA_DP2 % 8));
|
||||
jbWriteU32BE(&out[valIdx], (uint32_t)dp->reserva_dp2);
|
||||
valIdx += 4;
|
||||
}
|
||||
/* DP30 预留DP3 (uint32, 4B, RW) */
|
||||
/* DP24 预留DP3 (uint32, 4B, RW) */
|
||||
if (mask[DP_ID_RESERVA_DP3 / 8] & (1 << (DP_ID_RESERVA_DP3 % 8)))
|
||||
{
|
||||
bitmap[DP_ID_RESERVA_DP3 / 8] |= (1 << (DP_ID_RESERVA_DP3 % 8));
|
||||
@@ -387,7 +387,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_LINKAGE_CONFIG;
|
||||
}
|
||||
}
|
||||
/* DP13 定时使能 (bool, 1B, RW) */
|
||||
/* DP7 定时使能 (bool, 1B, RW) */
|
||||
if (bitmap[DP_ID_TIME_EN / 8] & (1 << (DP_ID_TIME_EN % 8)))
|
||||
{
|
||||
if (valIdx < valLen)
|
||||
@@ -399,7 +399,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_EN;
|
||||
}
|
||||
}
|
||||
/* DP14 定时配置1 (raw, 8B, RW) */
|
||||
/* DP8 定时配置1 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG1 / 8] & (1 << (DP_ID_TIME_CONFIG1 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -412,7 +412,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG1;
|
||||
}
|
||||
}
|
||||
/* DP15 定时配置2 (raw, 8B, RW) */
|
||||
/* DP9 定时配置2 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG2 / 8] & (1 << (DP_ID_TIME_CONFIG2 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -425,7 +425,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG2;
|
||||
}
|
||||
}
|
||||
/* DP16 定时配置3 (raw, 8B, RW) */
|
||||
/* DP10 定时配置3 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG3 / 8] & (1 << (DP_ID_TIME_CONFIG3 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -438,7 +438,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG3;
|
||||
}
|
||||
}
|
||||
/* DP17 定时配置4 (raw, 8B, RW) */
|
||||
/* DP11 定时配置4 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG4 / 8] & (1 << (DP_ID_TIME_CONFIG4 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -451,7 +451,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG4;
|
||||
}
|
||||
}
|
||||
/* DP18 定时配置5 (raw, 8B, RW) */
|
||||
/* DP12 定时配置5 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG5 / 8] & (1 << (DP_ID_TIME_CONFIG5 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -464,7 +464,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG5;
|
||||
}
|
||||
}
|
||||
/* DP19 定时配置6 (raw, 8B, RW) */
|
||||
/* DP13 定时配置6 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG6 / 8] & (1 << (DP_ID_TIME_CONFIG6 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -477,7 +477,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG6;
|
||||
}
|
||||
}
|
||||
/* DP20 定时配置7 (raw, 8B, RW) */
|
||||
/* DP14 定时配置7 (raw, 8B, RW) */
|
||||
if (bitmap[DP_ID_TIME_CONFIG7 / 8] & (1 << (DP_ID_TIME_CONFIG7 % 8)))
|
||||
{
|
||||
if (valIdx + 8 <= valLen)
|
||||
@@ -490,7 +490,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_TIME_CONFIG7;
|
||||
}
|
||||
}
|
||||
/* DP22 心跳 (bool, 1B, WO) */
|
||||
/* DP16 心跳 (bool, 1B, WO) */
|
||||
if (bitmap[DP_ID_HEARTBEAT / 8] & (1 << (DP_ID_HEARTBEAT % 8)))
|
||||
{
|
||||
if (valIdx < valLen)
|
||||
@@ -502,7 +502,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_HEARTBEAT;
|
||||
}
|
||||
}
|
||||
/* DP23 设备故障使能 (uint8, 1B, RW) */
|
||||
/* DP17 设备故障使能 (uint8, 1B, RW) */
|
||||
if (bitmap[DP_ID_FAULT_EN / 8] & (1 << (DP_ID_FAULT_EN % 8)))
|
||||
{
|
||||
if (valIdx < valLen)
|
||||
@@ -514,7 +514,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_FAULT_EN;
|
||||
}
|
||||
}
|
||||
/* DP25 设备告警使能 (uint8, 1B, RW) */
|
||||
/* DP19 设备告警使能 (uint8, 1B, RW) */
|
||||
if (bitmap[DP_ID_ALARM_EN / 8] & (1 << (DP_ID_ALARM_EN % 8)))
|
||||
{
|
||||
if (valIdx < valLen)
|
||||
@@ -526,7 +526,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_ALARM_EN;
|
||||
}
|
||||
}
|
||||
/* DP27 恢复出厂设置 (bool, 1B, WO) */
|
||||
/* DP21 恢复出厂设置 (bool, 1B, WO) */
|
||||
if (bitmap[DP_ID_FACTORY_RESET / 8] & (1 << (DP_ID_FACTORY_RESET % 8)))
|
||||
{
|
||||
if (valIdx < valLen)
|
||||
@@ -538,7 +538,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_FACTORY_RESET;
|
||||
}
|
||||
}
|
||||
/* DP28 预留DP1 (uint32, 4B, RW) */
|
||||
/* DP22 预留DP1 (uint32, 4B, RW) */
|
||||
if (bitmap[DP_ID_RESERVA_DP1 / 8] & (1 << (DP_ID_RESERVA_DP1 % 8)))
|
||||
{
|
||||
if (valIdx + 4 <= valLen)
|
||||
@@ -551,7 +551,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_RESERVA_DP1;
|
||||
}
|
||||
}
|
||||
/* DP29 预留DP2 (uint32, 4B, RW) */
|
||||
/* DP23 预留DP2 (uint32, 4B, RW) */
|
||||
if (bitmap[DP_ID_RESERVA_DP2 / 8] & (1 << (DP_ID_RESERVA_DP2 % 8)))
|
||||
{
|
||||
if (valIdx + 4 <= valLen)
|
||||
@@ -564,7 +564,7 @@ static void jbUnpackDps(const uint8_t *bitmap, const uint8_t *values,
|
||||
info->dp_ids[info->count++] = DP_ID_RESERVA_DP2;
|
||||
}
|
||||
}
|
||||
/* DP30 预留DP3 (uint32, 4B, RW) */
|
||||
/* DP24 预留DP3 (uint32, 4B, RW) */
|
||||
if (bitmap[DP_ID_RESERVA_DP3 / 8] & (1 << (DP_ID_RESERVA_DP3 % 8)))
|
||||
{
|
||||
if (valIdx + 4 <= valLen)
|
||||
@@ -632,93 +632,93 @@ static uint8_t jbBuildDiffMask(const jb_data_point_t *last,
|
||||
mask[DP_ID_LINKAGE_CONFIG / 8] |= (1 << (DP_ID_LINKAGE_CONFIG % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP13 定时使能 */
|
||||
/* DP7 定时使能 */
|
||||
if (last->time_en != cur->time_en)
|
||||
{
|
||||
mask[DP_ID_TIME_EN / 8] |= (1 << (DP_ID_TIME_EN % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP14 定时配置1 */
|
||||
/* DP8 定时配置1 */
|
||||
if (memcmp(last->time_config1, cur->time_config1, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG1 / 8] |= (1 << (DP_ID_TIME_CONFIG1 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP15 定时配置2 */
|
||||
/* DP9 定时配置2 */
|
||||
if (memcmp(last->time_config2, cur->time_config2, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG2 / 8] |= (1 << (DP_ID_TIME_CONFIG2 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP16 定时配置3 */
|
||||
/* DP10 定时配置3 */
|
||||
if (memcmp(last->time_config3, cur->time_config3, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG3 / 8] |= (1 << (DP_ID_TIME_CONFIG3 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP17 定时配置4 */
|
||||
/* DP11 定时配置4 */
|
||||
if (memcmp(last->time_config4, cur->time_config4, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG4 / 8] |= (1 << (DP_ID_TIME_CONFIG4 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP18 定时配置5 */
|
||||
/* DP12 定时配置5 */
|
||||
if (memcmp(last->time_config5, cur->time_config5, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG5 / 8] |= (1 << (DP_ID_TIME_CONFIG5 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP19 定时配置6 */
|
||||
/* DP13 定时配置6 */
|
||||
if (memcmp(last->time_config6, cur->time_config6, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG6 / 8] |= (1 << (DP_ID_TIME_CONFIG6 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP20 定时配置7 */
|
||||
/* DP14 定时配置7 */
|
||||
if (memcmp(last->time_config7, cur->time_config7, 8))
|
||||
{
|
||||
mask[DP_ID_TIME_CONFIG7 / 8] |= (1 << (DP_ID_TIME_CONFIG7 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP21 运行记录:每秒都在变,不参与差分上报(避免 2s 防抖推 124B)。
|
||||
/* DP15 运行记录:每秒都在变,不参与差分上报(避免 2s 防抖推 124B)。
|
||||
* 读请求与 REPORT_PERIOD 全量仍带当前 gDevData.run_record。 */
|
||||
/* DP23 设备故障使能 */
|
||||
/* DP17 设备故障使能 */
|
||||
if (last->fault_en != cur->fault_en)
|
||||
{
|
||||
mask[DP_ID_FAULT_EN / 8] |= (1 << (DP_ID_FAULT_EN % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP24 设备故障 */
|
||||
/* DP18 设备故障 */
|
||||
if (last->fault_code != cur->fault_code)
|
||||
{
|
||||
mask[DP_ID_FAULT_CODE / 8] |= (1 << (DP_ID_FAULT_CODE % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP25 设备告警使能 */
|
||||
/* DP19 设备告警使能 */
|
||||
if (last->alarm_en != cur->alarm_en)
|
||||
{
|
||||
mask[DP_ID_ALARM_EN / 8] |= (1 << (DP_ID_ALARM_EN % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP26 设备告警 */
|
||||
/* DP20 设备告警 */
|
||||
if (last->alarm_code != cur->alarm_code)
|
||||
{
|
||||
mask[DP_ID_ALARM_CODE / 8] |= (1 << (DP_ID_ALARM_CODE % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP28 预留DP1 */
|
||||
/* DP22 预留DP1 */
|
||||
if (last->reserva_dp1 != cur->reserva_dp1)
|
||||
{
|
||||
mask[DP_ID_RESERVA_DP1 / 8] |= (1 << (DP_ID_RESERVA_DP1 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP29 预留DP2 */
|
||||
/* DP23 预留DP2 */
|
||||
if (last->reserva_dp2 != cur->reserva_dp2)
|
||||
{
|
||||
mask[DP_ID_RESERVA_DP2 / 8] |= (1 << (DP_ID_RESERVA_DP2 % 8));
|
||||
hasChange = 1;
|
||||
}
|
||||
/* DP30 预留DP3 */
|
||||
/* DP24 预留DP3 */
|
||||
if (last->reserva_dp3 != cur->reserva_dp3)
|
||||
{
|
||||
mask[DP_ID_RESERVA_DP3 / 8] |= (1 << (DP_ID_RESERVA_DP3 % 8));
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* ════════════════════════════════════════════════════════════════ */
|
||||
#define PKT_HEAD_0 0x55
|
||||
#define PKT_HEAD_1 0xAA
|
||||
/* ⚠ 生成器给的是 128,必须改回 256:DP21 run_record 124B,加 bitmap(4B) 与
|
||||
/* ⚠ 生成器给的是 128,必须改回 256:DP15 run_record 124B,加 bitmap(4B) 与
|
||||
* cmd/sn/cksum 开销后 128B 组不出完整帧(规格书第 0 章第 1 条 / 第 19 章)。
|
||||
* 每次从生成器重新拷贝 jb_protocol.h 后都要重新确认本值。 */
|
||||
#define MAX_PACKAGE_LEN 256
|
||||
@@ -128,24 +128,24 @@ typedef enum
|
||||
DP_ID_CURRENT_HUMI = 4, /* 当前湿度 (uint8, RO) */
|
||||
DP_ID_LINKAGE_DELETE = 5, /* 联动删除 (bool, RW) */
|
||||
DP_ID_LINKAGE_CONFIG = 6, /* 联动配置 (raw, RW) */
|
||||
DP_ID_TIME_EN = 13, /* 定时使能 (bool, RW) */
|
||||
DP_ID_TIME_CONFIG1 = 14, /* 定时配置1 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG2 = 15, /* 定时配置2 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG3 = 16, /* 定时配置3 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG4 = 17, /* 定时配置4 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG5 = 18, /* 定时配置5 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG6 = 19, /* 定时配置6 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG7 = 20, /* 定时配置7 (raw, RW) */
|
||||
DP_ID_RUN_RECORD = 21, /* 运行记录 (raw, RO) */
|
||||
DP_ID_HEARTBEAT = 22, /* 心跳 (bool, WO) */
|
||||
DP_ID_FAULT_EN = 23, /* 设备故障使能 (uint8, RW) */
|
||||
DP_ID_FAULT_CODE = 24, /* 设备故障 (uint8, RO) */
|
||||
DP_ID_ALARM_EN = 25, /* 设备告警使能 (uint8, RW) */
|
||||
DP_ID_ALARM_CODE = 26, /* 设备告警 (uint8, RO) */
|
||||
DP_ID_FACTORY_RESET = 27, /* 恢复出厂设置 (bool, WO) */
|
||||
DP_ID_RESERVA_DP1 = 28, /* 预留DP1 (uint32, RW) */
|
||||
DP_ID_RESERVA_DP2 = 29, /* 预留DP2 (uint32, RW) */
|
||||
DP_ID_RESERVA_DP3 = 30, /* 预留DP3 (uint32, RW) */
|
||||
DP_ID_TIME_EN = 7, /* 定时使能 (bool, RW) */
|
||||
DP_ID_TIME_CONFIG1 = 8, /* 定时配置1 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG2 = 9, /* 定时配置2 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG3 = 10, /* 定时配置3 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG4 = 11, /* 定时配置4 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG5 = 12, /* 定时配置5 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG6 = 13, /* 定时配置6 (raw, RW) */
|
||||
DP_ID_TIME_CONFIG7 = 14, /* 定时配置7 (raw, RW) */
|
||||
DP_ID_RUN_RECORD = 15, /* 运行记录 (raw, RO) */
|
||||
DP_ID_HEARTBEAT = 16, /* 心跳 (bool, WO) */
|
||||
DP_ID_FAULT_EN = 17, /* 设备故障使能 (uint8, RW) */
|
||||
DP_ID_FAULT_CODE = 18, /* 设备故障 (uint8, RO) */
|
||||
DP_ID_ALARM_EN = 19, /* 设备告警使能 (uint8, RW) */
|
||||
DP_ID_ALARM_CODE = 20, /* 设备告警 (uint8, RO) */
|
||||
DP_ID_FACTORY_RESET = 21, /* 恢复出厂设置 (bool, WO) */
|
||||
DP_ID_RESERVA_DP1 = 22, /* 预留DP1 (uint32, RW) */
|
||||
DP_ID_RESERVA_DP2 = 23, /* 预留DP2 (uint32, RW) */
|
||||
DP_ID_RESERVA_DP3 = 24, /* 预留DP3 (uint32, RW) */
|
||||
DP_ID_MAX
|
||||
} dp_id_t;
|
||||
|
||||
@@ -210,24 +210,24 @@ typedef struct
|
||||
uint8_t current_humi; /* DP4 当前湿度 */
|
||||
uint8_t linkage_delete;/* DP5 联动删除 */
|
||||
uint8_t linkage_config[20];/* DP6 联动配置 */
|
||||
uint8_t time_en; /* DP13 定时使能 */
|
||||
uint8_t time_config1[8];/* DP14 定时配置1 */
|
||||
uint8_t time_config2[8];/* DP15 定时配置2 */
|
||||
uint8_t time_config3[8];/* DP16 定时配置3 */
|
||||
uint8_t time_config4[8];/* DP17 定时配置4 */
|
||||
uint8_t time_config5[8];/* DP18 定时配置5 */
|
||||
uint8_t time_config6[8];/* DP19 定时配置6 */
|
||||
uint8_t time_config7[8];/* DP20 定时配置7 */
|
||||
uint8_t run_record[124];/* DP21 运行记录 */
|
||||
uint8_t heartbeat; /* DP22 心跳 */
|
||||
uint8_t fault_en; /* DP23 设备故障使能 */
|
||||
uint8_t fault_code; /* DP24 设备故障 */
|
||||
uint8_t alarm_en; /* DP25 设备告警使能 */
|
||||
uint8_t alarm_code; /* DP26 设备告警 */
|
||||
uint8_t factory_reset;/* DP27 恢复出厂设置 */
|
||||
uint32_t reserva_dp1; /* DP28 预留DP1 */
|
||||
uint32_t reserva_dp2; /* DP29 预留DP2 */
|
||||
uint32_t reserva_dp3; /* DP30 预留DP3 */
|
||||
uint8_t time_en; /* DP7 定时使能 */
|
||||
uint8_t time_config1[8];/* DP8 定时配置1 */
|
||||
uint8_t time_config2[8];/* DP9 定时配置2 */
|
||||
uint8_t time_config3[8];/* DP10 定时配置3 */
|
||||
uint8_t time_config4[8];/* DP11 定时配置4 */
|
||||
uint8_t time_config5[8];/* DP12 定时配置5 */
|
||||
uint8_t time_config6[8];/* DP13 定时配置6 */
|
||||
uint8_t time_config7[8];/* DP14 定时配置7 */
|
||||
uint8_t run_record[124];/* DP15 运行记录 */
|
||||
uint8_t heartbeat; /* DP16 心跳 */
|
||||
uint8_t fault_en; /* DP17 设备故障使能 */
|
||||
uint8_t fault_code; /* DP18 设备故障 */
|
||||
uint8_t alarm_en; /* DP19 设备告警使能 */
|
||||
uint8_t alarm_code; /* DP20 设备告警 */
|
||||
uint8_t factory_reset;/* DP21 恢复出厂设置 */
|
||||
uint32_t reserva_dp1; /* DP22 预留DP1 */
|
||||
uint32_t reserva_dp2; /* DP23 预留DP2 */
|
||||
uint32_t reserva_dp3; /* DP24 预留DP3 */
|
||||
} jb_data_point_t;
|
||||
|
||||
/* 控制事件信息 */
|
||||
|
||||
Reference in New Issue
Block a user