64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
/**
|
|
* @file menu_data.h
|
|
* @brief 菜单组件共享全局变量(用户无需关心,内部仅通过接口访问)
|
|
*/
|
|
#ifndef MENU_DATA_H
|
|
#define MENU_DATA_H
|
|
|
|
#include "menu_core.h"
|
|
|
|
/************************** 共享全局变量(声明,内部可见) **************************/
|
|
/**
|
|
* @brief 菜单核心上下文(全局,仅内部访问)
|
|
*/
|
|
extern MenuCoreCtx s_menu_core_ctx;
|
|
|
|
/**
|
|
* @brief 参数管理上下文(启用参数时有效,全局)
|
|
*/
|
|
#if MENU_CONFIG_ENABLE_PARAM
|
|
typedef struct {
|
|
uint16_t id; ///< 参数ID
|
|
MenuParamType type; ///< 参数类型
|
|
float min_val; ///< 最小值
|
|
float max_val; ///< 最大值
|
|
float scale; ///< 缩放因子
|
|
union { ///< 共用体:减少内存占用
|
|
int8_t i8;
|
|
uint8_t u8;
|
|
int16_t i16;
|
|
uint16_t u16;
|
|
int32_t i32;
|
|
uint32_t u32;
|
|
float f;
|
|
} value; ///< 当前值
|
|
union { ///< 默认值
|
|
int8_t i8;
|
|
uint8_t u8;
|
|
int16_t i16;
|
|
uint16_t u16;
|
|
int32_t i32;
|
|
uint32_t u32;
|
|
float f;
|
|
} default_val;
|
|
bool is_registered; ///< 是否已注册
|
|
} MenuParam;
|
|
|
|
extern MenuParam s_menu_params[MENU_CONFIG_MAX_PARAMS];
|
|
#endif // MENU_CONFIG_ENABLE_PARAM
|
|
|
|
/**
|
|
* @brief 多语言上下文(启用多语言时有效,全局)
|
|
*/
|
|
#if MENU_CONFIG_ENABLE_LANG
|
|
typedef struct {
|
|
const char* str; ///< 语言字符串
|
|
uint16_t str_id; ///< 字符串ID
|
|
uint8_t lang_id; ///< 语言ID
|
|
} MenuLangStr;
|
|
|
|
extern MenuLangStr s_menu_lang_strs[MENU_CONFIG_MAX_NODES * MENU_CONFIG_MAX_LANGS];
|
|
extern uint8_t s_current_lang_id;
|
|
#endif // MENU_CONFIG_ENABLE_LANG
|
|
|
|
#endif // MENU_DATA_H
|