Merge branch 'master' into dig-volume-view-283370226187
This commit is contained in:
@@ -1090,14 +1090,14 @@ uint8_t ui_data_comm_pending(void) {
|
||||
|
||||
/* ── 通道六:故障录波(wave)注入与包装 ─────────────────────────────────────
|
||||
* 包装层零判据:未注入统一按「无录波段」态返(页面显式空态文案,绝不
|
||||
* 画平线——设计 §8.1 空态行);六件的参数校验只到指针级,语义判定
|
||||
* 画平线——设计 §8.1 空态行);七件的参数校验只到指针级,语义判定
|
||||
* (卷忙/段损坏)全在执行侧,与通道四/五同一条分层纪律。
|
||||
*/
|
||||
static const ui_data_wave_ops_t *s_wave = NULL;
|
||||
|
||||
/*
|
||||
* 函数功能:注入录波执行侧函数表(启动期一次)
|
||||
* 入口参数:ops - 六件齐;NULL = 撤销注入
|
||||
* 入口参数:ops - 七件齐;NULL = 撤销注入
|
||||
* 返回值:0 - 已注入/已撤销;-1 - 残表(存量不动,理由逐字同 comm bind) int
|
||||
* 限定条件:uiTask 启动期,先于 ui_menu_init()
|
||||
*/
|
||||
@@ -1106,7 +1106,8 @@ int ui_data_wave_bind(const ui_data_wave_ops_t *a_ops) {
|
||||
s_wave = NULL;
|
||||
return 0;
|
||||
}
|
||||
if ((a_ops->manual_req == NULL) || (a_ops->seg_first == NULL) ||
|
||||
if ((a_ops->manual_req == NULL) || (a_ops->wave_enter == NULL) ||
|
||||
(a_ops->seg_first == NULL) ||
|
||||
(a_ops->seg_prev == NULL) || (a_ops->seg_next == NULL) ||
|
||||
(a_ops->seg_head == NULL) || (a_ops->seg_win == NULL)) {
|
||||
return -1;
|
||||
@@ -1123,6 +1124,13 @@ int ui_data_wave_manual_req(void) {
|
||||
return s_wave->manual_req();
|
||||
}
|
||||
|
||||
/* 函数功能:开页 / 空态再探盘的作废钩子(未注入 = 什么都不做,零副作用) void */
|
||||
void ui_data_wave_enter(void) {
|
||||
if (s_wave != NULL) {
|
||||
s_wave->wave_enter();
|
||||
}
|
||||
}
|
||||
|
||||
/* 函数功能:录波通道三态查询的统一未注入兜底(返 NONE 显空态,不崩) int */
|
||||
static int wp_wave_none(void) {
|
||||
return UI_WAVE_NONE;
|
||||
|
||||
@@ -947,14 +947,20 @@ uint8_t ui_data_comm_pending(void);
|
||||
#define UI_WAVE_BAD 2
|
||||
|
||||
/*
|
||||
* 录波执行侧注入表(六件齐全;ui_data_wave_bind 拒绝残表)
|
||||
* 返回值约定:除 manual_req 外,各件返回 UI_WAVE_OK / NONE / BAD 三态;
|
||||
* seg_win 的出参仅在返 UI_WAVE_OK 时可读(通道五同一条出参契约)。
|
||||
* 录波执行侧注入表(七件齐全;ui_data_wave_bind 拒绝残表)
|
||||
* 返回值约定:除 manual_req 与 wave_enter(两件是动作位,不产三态)外,
|
||||
* 各件返回 UI_WAVE_OK / NONE / BAD 三态;seg_win 的出参仅在返
|
||||
* UI_WAVE_OK 时可读(通道五同一条出参契约)。
|
||||
*/
|
||||
typedef struct {
|
||||
/* 投一次手动录波请求。返回值:0 - 已受理;非零 - 拒收(含未落段通道
|
||||
* 不可用),页面据此走确认链的 ERR 支 */
|
||||
int (*manual_req)(void);
|
||||
/* 回放页开页 / 空态再探盘时作废段表与段头缓存(#93 F1 方案 A/B 的
|
||||
* 作废钩子;纯内存零 I/O——重扫仍懒在首次取数,开页链零 I/O 不破;
|
||||
* 页内按键不调它(空态再探除外),11-02 钉表防抖纪律原样保留)。
|
||||
* 返回值:无 */
|
||||
void (*wave_enter)(void);
|
||||
/* 取盘上数值最大的段号(回放页开屏落点;左右键从此起环游)。
|
||||
* 回绕后本序不保证时间最新,页顶段号即自证;时间序要靠段头
|
||||
* frame_seq/t0,代价是 100 次开文件,本波不做(lead 裁定 2026-10-29) */
|
||||
@@ -980,7 +986,7 @@ typedef struct {
|
||||
|
||||
/*
|
||||
* 函数功能:注入录波执行侧函数表(启动期一次;形状对齐 ui_data_comm_bind)
|
||||
* 入口参数:ops - 函数表(六件都不得为 NULL);NULL = 撤销注入(宿主测试用)
|
||||
* 入口参数:ops - 函数表(七件都不得为 NULL);NULL = 撤销注入(宿主测试用)
|
||||
* 返回值:0 - 已注入/已撤销;-1 - 残表(存量不动) int
|
||||
* 限定条件:uiTask 启动期、先于 ui_menu_init()
|
||||
*/
|
||||
@@ -992,6 +998,13 @@ int ui_data_wave_bind(const ui_data_wave_ops_t *a_ops);
|
||||
*/
|
||||
int ui_data_wave_manual_req(void);
|
||||
|
||||
/*
|
||||
* 函数功能:回放页开页 / 空态再探盘时作废段表与段头缓存(#93 F1 方案
|
||||
* A/B 的作废钩子;纯内存零 I/O,重扫懒在首帧取数)
|
||||
* 返回值:无(未注入 = 什么都不做,页面取数行为不变) void
|
||||
*/
|
||||
void ui_data_wave_enter(void);
|
||||
|
||||
/*
|
||||
* 函数功能:取数值最大段号(排序口径见 ui_data.c 同名胶水注释:回绕后本序
|
||||
* 不保证时间最新,页顶段号即自证;真时间序要逐段读 frame_seq/t0,
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
* 空态显式文案「无录波段」/「该段不可读」——画成一条直线等于
|
||||
* 伪造证据(§8.1 空态行,此判据优先于「页面上总得画点东西」)。
|
||||
* 键位:上下切通道、左右切段(key_intercept=1 才能把 LEFT 从
|
||||
* 「关页」手里要来);ESC 关页。
|
||||
* 「关页」手里要来);ESC 关页。页的**缓存作废面**:本文件不持
|
||||
* 任何缓存,开页(pg_init)与空态再探盘(pg_key IDLE 支)各调
|
||||
* 一次注入表的 wave_enter 作废钩子(#93 F1 方案 A/B,纯内存
|
||||
* 零 I/O)——开页后盘上新落盘 / 新投放的段即随重扫进表。
|
||||
* 取数纪律:本文件零 App include——段号/段头/窗口码值/峰值 mV 全部经
|
||||
* ui_data.h 录波注入表进来(波形算式与定点换算在执行侧,页面
|
||||
* 连 b_codes 都不碰,收到的码值已并偏移);首帧绘制才懒取数
|
||||
@@ -33,6 +36,10 @@
|
||||
* 本页 key_cb 返回 true(接管键),框架不再替本页失效重绘,状态变了
|
||||
* 屏上却纹丝不动——该病在枚举修复前整页恒空、从未有键可切,故随
|
||||
* 2026-11-02 回放页修复首次上板才暴露(真机实证见 PR #67)。
|
||||
* v1.2 2026-11-07 DTU 项目组 #93 F1:开页(pg_init)与空态左右键
|
||||
* 再探(pg_key IDLE 支)各调注入表新增的 wave_enter 作废钩子——
|
||||
* 开机后新落盘/新投放的段重开页即见、空态再探不再被钉表短路;
|
||||
* 本页像素形态与键位语义不变(黄金参考不刷),重扫仍懒在首帧。
|
||||
*/
|
||||
|
||||
/* 头文件包含区 */
|
||||
@@ -320,14 +327,18 @@ static const char *wp_eng_word(uint8_t a_eng) {
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:开页复位(框架 init_cb)——通道回到 UA、数据回到未取态
|
||||
* 函数功能:开页复位(框架 init_cb)——通道回到 UA、数据回到未取态,
|
||||
* 并调执行侧作废钩子丢掉钉住的段表/段头缓存(#93 F1 方案 A:
|
||||
* 开机后新落盘的段开合一次页即进表;作废是纯内存动作,首帧
|
||||
* 懒取数链原样,开页链零 I/O 不破)
|
||||
* 入口参数:无
|
||||
* 返回值:无
|
||||
* 限定条件:框架开页链内;只清状态零 I/O(懒取数在首帧绘制)
|
||||
* 限定条件:框架开页链内;只清状态与翻作废旗标、零 I/O(懒取数在首帧绘制)
|
||||
*/
|
||||
static void pg_init(void) {
|
||||
s_state = WP_ST_IDLE;
|
||||
s_ch = 0u;
|
||||
ui_data_wave_enter();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -406,6 +417,7 @@ static bool pg_key(lv_key_t a_key) {
|
||||
case LV_KEY_LEFT:
|
||||
case LV_KEY_RIGHT:
|
||||
if (s_state == WP_ST_IDLE) {
|
||||
ui_data_wave_enter(); /* #93 F1 方案 B:先作废钉表,再探才探得出新段 */
|
||||
wp_ensure(); /* 空态下按左右 = 再探一次盘(新段可能已落) */
|
||||
ui_content_page_invalidate();
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user