HW_Lib/demo/oled/page.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);
}