73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
#include "page.h"
|
|
#include "list.h"
|
|
|
|
uint8_t pageid = 0, cur = 1, cnt = 0;
|
|
|
|
static List_t list;
|
|
Page_L_t mainp = {0, 3, 0, 0, mainpage};
|
|
Page_L_t ap = {1, 2, 0, 0, pageA};
|
|
Page_L_t bp = {2, 2, 0, 0, pageB};
|
|
Page_L_t cp = {3, 2, 0, 0, pageC};
|
|
|
|
void pageinit() {
|
|
list_init(&list);
|
|
list_insert(&list, &mainp);
|
|
list_insert(&list, &ap);
|
|
list_insert(&list, &bp);
|
|
list_insert(&list, &cp);
|
|
}
|
|
|
|
int compare_page(const void *s1, const void *s2) {
|
|
Page_L_t *data1 = (Page_L_t *) s1;
|
|
uint8_t *data2 = (uint8_t *) s2;
|
|
|
|
return (data1->id - *data2);
|
|
}
|
|
|
|
Page_L_t pagesearch(uint8_t id) {
|
|
Page_L_t *ret;
|
|
ret = list_search(&list, &id, compare_page);
|
|
return *ret;
|
|
}
|
|
|
|
void pagecur(OLED_T *dev) {
|
|
if (cnt % 2) {
|
|
if (cur > 0 && cur <= pagesearch(pageid).next)OLED_ShowString(dev, 26, cur * 12, ">", 12);
|
|
else
|
|
cur = 1;
|
|
}
|
|
cnt++;
|
|
}
|
|
|
|
void mainpage(OLED_T *dev) {
|
|
OLED_CLS(dev);
|
|
OLED_ShowString(dev, 32, 0, "Main Page", 12);
|
|
OLED_ShowString(dev, 36, 12, "1.PageA", 12);
|
|
OLED_ShowString(dev, 36, 24, "2.PageB", 12);
|
|
OLED_ShowString(dev, 36, 36, "3.PageC", 12);
|
|
pagecur(dev);
|
|
}
|
|
|
|
void pageA(OLED_T *dev) {
|
|
OLED_CLS(dev);
|
|
OLED_ShowString(dev, 32, 0, " A Page", 12);
|
|
OLED_ShowString(dev, 36, 12, "1.contx", 12);
|
|
OLED_ShowString(dev, 36, 24, " back", 12);
|
|
pagecur(dev);
|
|
}
|
|
|
|
void pageB(OLED_T *dev) {
|
|
OLED_CLS(dev);
|
|
OLED_ShowString(dev, 32, 0, " B Page", 12);
|
|
OLED_ShowString(dev, 36, 12, "1.contx", 12);
|
|
OLED_ShowString(dev, 36, 24, " back", 12);
|
|
pagecur(dev);
|
|
}
|
|
|
|
void pageC(OLED_T *dev) {
|
|
OLED_CLS(dev);
|
|
OLED_ShowString(dev, 32, 0, " C Page", 12);
|
|
OLED_ShowString(dev, 36, 12, "1.contx", 12);
|
|
OLED_ShowString(dev, 36, 24, " back", 12);
|
|
pagecur(dev);
|
|
} |