Goldsmith писал(а):IMHO программа должна достаточно легко читаться, если клиент будет взаимодействовать с модулем календаря только через этот интерфейс (само собой, подправить в случае хранения строк во FLASH/EPROM).
А как можно модифицировать такую структуру:
Код: Выделить всё
typedef struct PROGMEM{
void *Next;
void *NextView;
void *Parent;
void *Child;
uint8_t Type;
uint8_t Variable;
uint8_t Max;
uint8_t Min;
uint8_t Adress;
uint8_t X;
uint8_t Y;
const char Text[3][36];
} menuItem;Инициализация:
Код: Выделить всё
#define MAKE_MENU(Name, Next, NextView, Parent, Child, Type, Variable, Max, Min, Adress, X, Y, Text1, Text2, Text3) \
extern menuItem Next; \
extern menuItem NextView; \
extern menuItem Parent; \
extern menuItem Child; \
menuItem Name = {(void*)&Next, (void*)&NextView, (void*)&Parent, (void*)&Child, (uint8_t)Type, (uint8_t)Variable, (uint8_t)Max, (uint8_t)Min, (uint8_t)Adress, (uint8_t)X, (uint8_t)Y, {{ Text1 }, { Text2 }, { Text3 }}}
и
menuItem Null_Menu = {(void*)0, (void*)0, (void*)0, (void*)0, 0, 0, 0, 0, 0, 0, 0, {{0x00}, {0x00}, {0x00}}};
// NEXT, PREVIOUS PARENT, CHILD
MAKE_MENU(m_s1i1, m_s1i1, NULL_ENTRY, NULL_ENTRY, m_s2i1, VARIABLE_TEXT, MODE, 5, 0, 0, 0, 0, "", " ", " ");
MAKДля хранения в указателя на переменную ?
Так работает:
Код: Выделить всё
uint8_t letter = 5;
char * const ptr PROGMEM = &letter; Но при попытке передать указатель макросу - выкидывает ошибку значение не известно.


