#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); }