mirror of
https://github.com/dimoniche/solarium.vlad.git
synced 2026-01-30 13:03:30 +03:00
115 lines
2.5 KiB
C
115 lines
2.5 KiB
C
#ifndef _MENU_H_
|
|
#define _MENU_H_
|
|
|
|
#include "cpu.h"
|
|
|
|
#ifdef CONFIG_LCD_1602A
|
|
#define MENU_LINES_NUMBER 2
|
|
#define MENU_SYMB_NUMBER 16
|
|
#else
|
|
#define MENU_LINES_NUMBER 4
|
|
#define MENU_SYMB_NUMBER 20
|
|
#endif
|
|
|
|
|
|
// ñëóæåáíûå ñèìâîëû
|
|
#define SYMB_GO_UP 0x87
|
|
#define SYMB_GO_DOWN 0x86
|
|
|
|
#ifdef CONFIG_LCD_1602A
|
|
#define SYMB_RIGHT_ARROW '>'
|
|
#else
|
|
#define SYMB_RIGHT_ARROW '>' //0x13
|
|
#endif
|
|
|
|
#define SYMB_DESC_MARK '>'//0x84
|
|
#define SYMB_IND_MARK '<'//0x85
|
|
#define SYMB_POINT_MARK '*'//0xDF
|
|
|
|
|
|
#define MENU_MAX_INPUT_STRING_LEN 16
|
|
|
|
|
|
// ñòðóêòóðà îïèñàíèÿ ïóíêòà ìåíþ
|
|
typedef struct{
|
|
|
|
// òèï ïóíêòà ìåíþ
|
|
CPU_INT08U LineType;
|
|
#define MENU_LINE_STRING 0 // ïðîñòî ñòðîêà
|
|
#define MENU_LINE_GOTO_MENU 1 // ïåðåõîä íà äðóãîå ìåíþ
|
|
#define MENU_LINE_SHOW_DESC 2 // îòîáðàæåíèå ïàðàìåòðà
|
|
#define MENU_LINE_INDEX 3 // èíäåêñ ìàññèâà
|
|
|
|
// äîï. ôëàãè
|
|
CPU_INT08U Flags;
|
|
#define MENU_FIXED_LINE 0x01 // ôèêñèðîâàííàÿ ñòðîêà
|
|
#define MENU_INDEX_LINE 0x02 // ñòðîêà ñ èíäåêñîì ìàññèâà
|
|
|
|
// óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
|
void* Ptr;
|
|
|
|
// ïàíåëü äëÿ ïåðåõîäà
|
|
void* GoToPtr;
|
|
|
|
}TMenuLine;
|
|
|
|
|
|
// äëÿ ìàññèâà ñòðîê
|
|
typedef struct{
|
|
const TMenuLine* pMenuLine;
|
|
}TMenuLineArray;
|
|
|
|
|
|
// ñòðóêòóðà îïèñàíèÿ ïàíåëè ìåíþ
|
|
typedef struct{
|
|
|
|
// óêàçàòåëü íà ìàññèâ ñòðîê
|
|
const TMenuLineArray* LineArray;
|
|
|
|
// óêàçàòåëü íà ôóíêöèþ, âûïîëíÿåìóþ ïåðåä âõîäîì â ïàíåëü
|
|
void (*InitFunc)(void);
|
|
|
|
// ÷èñëî ñòðîê â äàííîì ìåíþ
|
|
CPU_INT08U LineNum;
|
|
|
|
// òèï ïàíåëè
|
|
CPU_INT08U PanelType;
|
|
#define MENU_PANEL_STANDARD 0 // îáû÷íàÿ ïàíåëü, ñ ïåðåìåùåíèåì ïî ìåíþ
|
|
#define MENU_PANEL_STATIC 1 // ñòàòè÷åñêàÿ ïàíåëü
|
|
|
|
}TMenuPanel;
|
|
|
|
|
|
// ýëåìåíò ñòåêà âîçâðàòîâ ìåíþ
|
|
typedef struct{
|
|
|
|
// óêàçàòåëü íà ïðåäûäóùåå ìåíþ
|
|
const TMenuPanel* PrevMenu;
|
|
// àêòèâíàÿ ëèíèÿ â ïðåäûäóùåì ìåíþ
|
|
CPU_INT08U PrevActiveLine;
|
|
|
|
}TMenuStack;
|
|
|
|
|
|
///////////////////////////////////
|
|
// ôóíêöèè äëÿ ðàáîòû ñ ìåíþ
|
|
///////////////////////////////////
|
|
// èíèöèàëèçàöèÿ ìåíþ
|
|
extern void InitMenu(void);
|
|
// ïåðåõîä íà çàäàííóþ ïàíåëü ìåíþ
|
|
extern void GoToMenu(const TMenuPanel* Menu);
|
|
extern void SetMenu(const TMenuPanel* Menu);
|
|
// âîçâðàò â ïðåäûäóùåå ìåíþ
|
|
extern void GoToPreviousMenu(void);
|
|
// ïåðåçàïóñê ìåíþ
|
|
extern void ReInitMenu(void);
|
|
|
|
extern void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val);
|
|
extern TMenuPanel* GetCurrentMenu(void);
|
|
extern void RefreshMenu(void);
|
|
extern void MenuCursorOn(CPU_INT08U x, CPU_INT08U y);
|
|
extern void MenuCursorOff(void);
|
|
|
|
|
|
#endif //#ifndef _MENU_H_
|