diff --git a/libraries/oleddrv/menu.h b/libraries/oleddrv/menu.h new file mode 100644 --- /dev/null +++ b/libraries/oleddrv/menu.h @@ -0,0 +1,86 @@ +/******************************************************************************* +* File Name : menu.h +* Author : lxyppc +* Version : V1.0 +* Date : 10-03-05 +* Description : menu header +*******************************************************************************/ +#ifndef MENU_H +#define MENU_H + +// Menu message definition +#define MSG_SCROLL 0x00000001ul +#define MSG_KEY_UP 0x00000002ul +#define MSG_KEY_DOWN 0x00000003ul +#define MSG_SECOND 0x00000004ul +#define MSG_SENSE 0x00000005ul +#define MSG_INIT 0x00000006ul +#define MSG_POWER 0x00000007ul +#define MSG_GRAV_XY 0x00000008ul +#define MSG_GRAV_Z 0x00000009ul + +#define MakeMsgGrav_XY(pMsg,x,y) \ + {\ + (pMsg)->message = MSG_GRAV_XY;\ + (pMsg)->param = (void*)((x) | (((unsigned long)(y))<<16));\ + } +#define MakeMsgGrav_Z(pMsg,z) \ + {\ + (pMsg)->message = MSG_GRAV_Z;\ + (pMsg)->param = (void*)(z);\ + } + +// Here Gravity X is MMA Y axis output +#define GetGravX(pMsg) (u16)(((u32)(pMsg)->param>>16) & 0x0FFF) +// Here Gravity Y is MMA X axis output +#define GetGravY(pMsg) (u16)((u32)(pMsg)->param & 0x0FFF) +#define GetGravZ(pMsg) (u16)((u32)(pMsg)->param & 0x0FFF) + +// POWER mode definition +#define PWR_CHG 0x0001 +#define PWR_GOOD 0x0002 +#define GetBatValue(pMsg) (u16)(((u32)(pMsg)->param)>>16) + +// Menu type definition +#define MT_NULL 0x00 +#define MT_SUB 0x01 // Has sub menu +#define MT_CHECK 0x02 // Has check box + +typedef const char* LPCSTR; + +typedef struct _Msg +{ + void* param; + unsigned long message; +}Msg; + +typedef enum{ + MR_Finish, + MR_Error, + MR_Continue, +}MenuResult; + +typedef MenuResult(*MenuFunc_t)(void* param, Msg* pVoid); + +typedef struct _MenuItem +{ + const struct _MenuItem* parent; + union{ + const void* justMakeInitialEasy; + const MenuFunc_t pfnMenu; + const struct _MenuItem* child; + }; + unsigned char index; // menu index + unsigned char cnt; // menu count + unsigned char res; // menu resource + unsigned char type; +}MenuItem; + +MenuFunc_t InitialMenu(); + +unsigned long MenuProcess(Msg* msg); +MenuResult PopupMenu(const MenuItem* menu); +unsigned long GetMessage(Msg* msg); +unsigned long PostMessage(Msg* msg); + +#endif