Size: a a a

2021 April 26

RC

Roman Clor in Embedded Group
надо уменьшить число рутинных операций при добавлении очередной страницы в меню.
источник

AM

Aleksander Mironov in Embedded Group
А сколько вам надо данных на страрицу вбивать?
источник

RC

Roman Clor in Embedded Group
сейчас надо написать заголовок, подключить его в стену кода где все структуры со страницами собираются и понатыкать экстернов если не все зависимые страницы объявлены, или там круговые зависимости.
источник

ОS

Олег SoftFAN in Embedded Group
Имхо, стоит макрос хотя бы разбить на два три связаных.
источник

RC

Roman Clor in Embedded Group
typedef struct MenuPage {
 struct MenuPage **pNextPages;
 const uint8_t nextPagesCount;
 struct MenuPage *pPrevPage;
 void *pContext;
 void (*init)(struct MenuPage *self, uint8_t isNext);
 void (*renderTitle)(struct MenuPage *self, uint8_t x, uint8_t y, char focusMode);
 void (*update)(struct MenuPage *self);
 void (*forseSetHomePage)(struct MenuPage *self);
} __attribute__((__packed__)) MenuPage;
вот есть такая структура, она крутится в роутере страниц
источник

AM

Aleksander Mironov in Embedded Group
Если у вас знания о соседней страницы лежат в данных другой - что то не хорошее случилось.
источник

RC

Roman Clor in Embedded Group
ну надо же знать следующую и предыдущую. Как иначе то?
источник

AM

Aleksander Mironov in Embedded Group
Это задача связвающего кода
источник

RC

Roman Clor in Embedded Group
это он и есть
источник

RC

Roman Clor in Embedded Group
сама страница это методы
 void (*init)(struct MenuPage *self, uint8_t isNext);
 void (*renderTitle)(struct MenuPage *self, uint8_t x, uint8_t y, char focusMode);
 void (*update)(struct MenuPage *self);
источник

RC

Roman Clor in Embedded Group
это стандартное решение, ну как минимум для игровых движков. renderTitle нужен для списков чтобы в именах пунктов иметь динамическую информацию.
источник

AM

Aleksander Mironov in Embedded Group
Сама страница должна быть данными, методами должна быть либа.
источник

AM

Aleksander Mironov in Embedded Group
Не так ли?
источник

AM

Aleksander Mironov in Embedded Group
Я ща с просону мб туплю.
источник

RC

Roman Clor in Embedded Group
логика работы страницы кому принадлежит?
источник

RC

Roman Clor in Embedded Group
тут менеджер управляет циклом жизни страницы, инициализация, обновление и закрытие.
источник

RC

Roman Clor in Embedded Group
просто переход на следующую страницу это последний апдейт
источник

AM

Aleksander Mironov in Embedded Group
Эм но типо страница это отображаемые данные, у нее логики работы быть недолжно, это типо просто данные для отображения.
источник

RC

Roman Clor in Embedded Group
Это очень примитивное меню выйдет
источник

AM

Aleksander Mironov in Embedded Group
Как они меняются должно быть в другом месте.
источник