#ifndef _MENU_PACK_HANDLER_H_ #define _MENU_PACK_HANDLER_H_ #include #include #include #include #include #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_ */