126 lines
6.1 KiB
C
126 lines
6.1 KiB
C
#ifndef _MENU_PACK_HANDLER_H_
|
|
#define _MENU_PACK_HANDLER_H_
|
|
|
|
#include <board.h>
|
|
#include <rtthread.h>
|
|
#include <rtdevice.h>
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include "menu_pack_load.h"
|
|
#include "menu_pack_key.h"
|
|
|
|
#define DEFAULT_EMPTY_STRING " "
|
|
#define DEFAULT_ENGINEER_PASSWORD 2008
|
|
|
|
#ifndef ARRAY_SIZE
|
|
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
|
|
#endif
|
|
|
|
typedef enum EMenuPackCommand
|
|
{
|
|
MENU_PACK_KEY_PRESS = 0,
|
|
MENU_PACK_BEFORE_ENTER_SUB,
|
|
MENU_PACK_AFTER_EXIT_SUB
|
|
} EMenuPackCommand;
|
|
|
|
typedef struct TMenuPackLevel
|
|
{
|
|
int8_t menu_index;
|
|
int8_t item_select;
|
|
int8_t item_select_adjust;
|
|
int8_t item_display_start;
|
|
int8_t select_row;
|
|
} TMenuPackLevel;
|
|
|
|
typedef struct TCommRegisterInfo
|
|
{
|
|
uint32_t reg_addr;
|
|
uint8_t reg_count;
|
|
int8_t bit;
|
|
bool is_float;
|
|
bool is_big_endian;
|
|
} TCommRegisterInfo;
|
|
|
|
int32_t MenuPack_SearchCommIndex(TMenuPackFileInfo *pinfo, TCommRegisterInfo *pstcCommReg);
|
|
void MenuPack_ProcessFunc(EMenuPackCommand cmd, const struct TMenuItemInfo *pmenu_info, int key);
|
|
void MenuPack_DispMenu(const TMenuPackFileInfo *pinfo);
|
|
void MenuPack_ModifyMenu(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info);
|
|
void MenuPack_ProcessMenu(const TMenuPackFileInfo *pinfo, int key);
|
|
|
|
void MenuPack_ToUpperLayer(const TMenuPackFileInfo *pinfo, int key);
|
|
void MenuPack_EnterMainMenu(const TMenuPackFileInfo *pinfo);
|
|
void MenuPack_QuitToMainMenu(const TMenuPackFileInfo *pinfo);
|
|
|
|
|
|
bool MenuPack_ModifyDefault(int modify_row, int modify_col, char *buf, const char *max_format, const char *min_format);
|
|
int MenuPack_GetSelectItemIndex(const TMenuPackFileInfo *pinfo);
|
|
const struct TMenuDescriptionItem* MenuPack_SearchMenuDescription(const TMenuPackFileInfo *pinfo);
|
|
const struct TMenuDescriptionItem *MenuPack_MenuIndexDescription(const TMenuPackFileInfo *pinfo, int menu_index);
|
|
|
|
TMenuPackLevel *MenuPack_GetActiveLevel(const TMenuPackFileInfo *pinfo);
|
|
const char *MenuPack_GetStringFromOffset(const TMenuPackFileInfo *pinfo, uint16_t offset);
|
|
TCommRegisterInfo MenuPack_UpdateCommInfo(const char *preg_addr_key_str);
|
|
|
|
const struct TMenuItemInfo *MenuPack_GetSelectItem(const TMenuPackFileInfo *pinfo);
|
|
|
|
const char *MenuPack_GetDisplayAliasString(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
void MenuPack_GetDisplayNormalString(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off, char *pbuf, int buf_size);
|
|
|
|
int MenuPack_SearchAliasIndex(const TMenuPackFileInfo *pinfo, const char *alias_name);
|
|
|
|
const char *MenuPack_GetStringAlias(const TMenuPackFileInfo *pinfo, int alias_index, int16_t alias_value);
|
|
const char *MenuPack_MenuItemGetStringAlias(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int16_t alias_value);
|
|
|
|
int MenuPack_SearchMenuIndex(const TMenuPackFileInfo *pinfo, const char *pstr_menu_name);
|
|
void MenuPack_EnterSubMenu(int sub_menu_index);
|
|
|
|
void MenuPack_DisplayItem(int disp_row, int disp_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
int MenuPack_ModifyItem(int modify_row, int modify_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
|
|
void MenuPack_DisplayAlias(int disp_row, int disp_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
int MenuPack_ModifyAlias(int modify_row, int modify_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
|
|
void MenuPack_DisplayNormal(int disp_row, int disp_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
int MenuPack_ModifyNormal(int modify_row, int modify_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int reg_addr_off);
|
|
void MenuPack_SelectItem(const TMenuPackFileInfo *pinfo, int item_select_row);
|
|
void MenuPack_ExecuteSelectItem(const TMenuPackFileInfo *pinfo);
|
|
//weak function
|
|
|
|
void MenuPack_ModifyBufCallBack(char *buf);
|
|
|
|
const char *MenuPack_GetDisplayUnit(const char *punit, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info);
|
|
bool MenuPack_CheckVisible(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info);
|
|
|
|
int MenuPack_RegisterValueRead(TCommRegisterInfo *pstcCommReg, void *pbuf, int max_buf_items);
|
|
bool MenuPack_RegisterValueWrite(TCommRegisterInfo *pstcCommReg, void *pdata);
|
|
|
|
void MenuPack_DisplayFlush(void);
|
|
void MenuPack_Clear(void);
|
|
void MenuPack_CommReinit(void);
|
|
void MenuPack_DisplayModifyString(int modify_row, int modify_col, const char *str, int sel_bit);
|
|
void MenuPack_AfterDisplayMenu(const TMenuPackFileInfo *pinfo, const char *pstr_action, int menu_index);
|
|
void MenuPack_BeforeDisplayMenu(const TMenuPackFileInfo *pinfo, const char *pstr_action, int menu_index);
|
|
|
|
void MenuPack_DisplayDefaultAction(int disp_row,
|
|
int disp_col,
|
|
const TMenuPackFileInfo *pinfo,
|
|
const struct TMenuItemInfo *pmenu_info,
|
|
const char *pstr_action);
|
|
|
|
//pmenu_info may be NULL
|
|
void MenuPack_BrotherMenuEnterCallBack(const TMenuPackFileInfo *pinfo, int brother_menu_index, int key);
|
|
|
|
void MenuPack_MenuItemDisplay(const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info, int disp_line);
|
|
bool MenuPack_ActionItemModify(int modify_row, int modify_col, const TMenuPackFileInfo *pinfo, const struct TMenuItemInfo *pmenu_info);
|
|
void MenuPack_MenuActionProcess(const TMenuPackFileInfo *pinfo, const char *pstr_action, int menu_index, int *pkey);
|
|
bool MenuPack_InputPassword(const TMenuPackFileInfo *pinfo, uint16_t *pvalue_password);
|
|
bool MenuPack_CheckPasswordSuccess(const TMenuPackFileInfo *pinfo);
|
|
|
|
int COMM_ReadRegisters(uint16_t *resp, uint16_t reg_addr, uint16_t range);
|
|
bool COMM_WriteRegisters(uint16_t *recv, uint16_t reg_addr, uint16_t range);
|
|
int COMM_ReadBitRegisters(uint8_t *pbuf, uint16_t reg_addr, uint16_t range);
|
|
bool COMM_WriteBitRegisters(uint8_t *recv, uint16_t reg_addr, uint16_t range);
|
|
|
|
#endif /* _MAIN_H_ */
|