62 lines
1.9 KiB
C
62 lines
1.9 KiB
C
/**
|
||
* @file menu_data.h
|
||
* @brief 菜单组件共享全局变量(用户无需关心,内部仅通过接口访问)
|
||
*/
|
||
#ifndef MENU_DATA_H
|
||
#define MENU_DATA_H
|
||
|
||
#include "../api/menu.h"
|
||
#include "menu_core.h"
|
||
#include "menu_modbus.h"
|
||
#include "menu_param.h"
|
||
|
||
/************************** 共享上下文结构(替代全局变量) **************************/
|
||
/**
|
||
* @brief 参数管理上下文(启用参数时有效)
|
||
*/
|
||
#if MENU_CONFIG_ENABLE_PARAM
|
||
typedef struct {
|
||
MenuParam params[MENU_CONFIG_MAX_PARAMS]; ///< 参数数组
|
||
uint16_t count; ///< 已注册参数数量
|
||
} MenuParamCtx;
|
||
#endif // MENU_CONFIG_ENABLE_PARAM
|
||
|
||
/**
|
||
* @brief 多语言上下文(启用多语言时有效)
|
||
*/
|
||
#if MENU_CONFIG_ENABLE_LANG
|
||
typedef struct {
|
||
MenuLangStr strs[MENU_CONFIG_MAX_NODES * MENU_CONFIG_MAX_LANGS]; ///< 语言字符串数组
|
||
uint8_t count; ///< 已注册字符串数量
|
||
uint8_t current_lang_id; ///< 当前语言ID
|
||
} MenuLangCtx;
|
||
#endif // MENU_CONFIG_ENABLE_LANG
|
||
|
||
/**
|
||
* @brief Modbus映射上下文(启用Modbus映射时有效)
|
||
*/
|
||
#if MENU_CONFIG_ENABLE_MODBUS_MAP
|
||
typedef struct {
|
||
ModbusMapInternal maps[MENU_CONFIG_MAX_MODBUS_MAPS]; ///< Modbus映射数组
|
||
uint16_t count; ///< 已注册映射数量
|
||
} MenuModbusCtx;
|
||
#endif // MENU_CONFIG_ENABLE_MODBUS_MAP
|
||
|
||
/**
|
||
* @brief 菜单组件全局上下文(替代所有全局变量)
|
||
*/
|
||
struct MenuGlobalCtx {
|
||
MenuCoreCtx core; ///< 核心上下文
|
||
#if MENU_CONFIG_ENABLE_PARAM
|
||
MenuParamCtx param; ///< 参数上下文
|
||
#endif
|
||
#if MENU_CONFIG_ENABLE_LANG
|
||
MenuLangCtx lang; ///< 多语言上下文
|
||
#endif
|
||
#if MENU_CONFIG_ENABLE_MODBUS_MAP
|
||
MenuModbusCtx modbus; ///< Modbus映射上下文
|
||
#endif
|
||
bool is_initialized; ///< 是否已初始化
|
||
};
|
||
|
||
#endif // MENU_DATA_H
|