82 lines
2.2 KiB
C
82 lines
2.2 KiB
C
/******************************************************************************
|
||
* @file app_runrec.h
|
||
* @brief CBR2 31 天运行记录(规格书 14.1 节,DP18 RO,124B):泵实际导通计秒
|
||
* @author cyWu <1917507415@qq.com>
|
||
* @date 2026.09.09
|
||
* @version V1.0.0,首次发布
|
||
*
|
||
* @note 什么叫在运行:app_pump_get()==1(PC2 与 PA6 **都已导通**)。
|
||
* 间隔等待、作业态为开但泵已关都不计。日期轴:未对时只往 slot[0]
|
||
* 加不旋转;对时后按本地日历左移。落盘:每累计 600s 写一次 VM;
|
||
* 跨天立刻写。
|
||
******************************************************************************/
|
||
|
||
#ifndef __APP_RUNREC_H__
|
||
#define __APP_RUNREC_H__
|
||
|
||
#include <stdint.h>
|
||
#include "board_pin.h"
|
||
|
||
#define APP_RUNREC_PACK_LEN (BOARD_RUN_RECORD_DAYS * 4u) /**< 124B */
|
||
|
||
/**
|
||
* @brief 初始化(未对时:只往 slot0 加,不旋转)
|
||
* @return 无
|
||
*/
|
||
void app_runrec_init(void);
|
||
|
||
/**
|
||
* @brief 20ms 节拍:继电器实际吸合则累计秒,满 10 分钟打脏(不写 flash)
|
||
* @param dt 距上次调用的毫秒数
|
||
* @return 无
|
||
*/
|
||
void app_runrec_tick(uint16_t dt);
|
||
|
||
/**
|
||
* @brief 500ms 任务上下文:收下 pending 秒并灌 DP17;对时后跨天左移旋转
|
||
* @return 无
|
||
*/
|
||
void app_runrec_rotate_if_needed(void);
|
||
|
||
/**
|
||
* @brief 读某天秒数(0=今天)
|
||
* @param day 0~30
|
||
* @return 秒
|
||
*/
|
||
uint32_t app_runrec_get(uint8_t day);
|
||
|
||
/**
|
||
* @brief 打包 124B(每格 uint32 大端),灌 gDevData.run_record
|
||
* @param out 输出缓冲(≥124B)
|
||
* @return 无
|
||
*/
|
||
void app_runrec_pack(uint8_t *out);
|
||
|
||
/**
|
||
* @brief 从 VM 解包 124B(uint32 大端)
|
||
* @param in 输入缓冲
|
||
* @return 无
|
||
*/
|
||
void app_runrec_unpack(const uint8_t *in);
|
||
|
||
/**
|
||
* @brief slot[0] 对应本地日期(yyyymmdd 打包)
|
||
* @return 日期
|
||
*/
|
||
uint32_t app_runrec_get_slot0_date(void);
|
||
|
||
/**
|
||
* @brief 设置 slot[0] 日期(对时/旋转后写回)
|
||
* @param ymd yyyymmdd
|
||
* @return 无
|
||
*/
|
||
void app_runrec_set_slot0_date(uint32_t ymd);
|
||
|
||
/**
|
||
* @brief 清零 31 天记录与日期(出厂重置)
|
||
* @return 无
|
||
*/
|
||
void app_runrec_reset(void);
|
||
|
||
#endif /* __APP_RUNREC_H__ */
|