Необходимо написать переиспользуемую библиотеку на C++ для работы с дисплеем SSD1306 (128x64)
Библиотека должна экспортировать класс меню, обладающего следующими свойствами:
Меню может быть вложенное, должна быть возможность генерировать пункты меню и подменю (любой глубины) из основного тела программы.
У меню должны быть реализованы методы "next_item", "prev_item" и "select_item", которые листают меню вниз, наверх и выбирают текущий пункт меню.
При выборе пункта меню, если у него нет вложенных подменю, должен выполняться колбэк, в который передается указатель на переменную, которую необходимо изменить, а возвращается bool значение, был ли вызван колбэк. Если у пункта меню есть подменю, должно открываться подменю, где один из пунктов "назад". У корневого меню нет пункта "назад".
У каждого пункта меню есть иконка (Иконки у меня есть, размером 16х16), при создании пункта меню должна быть возможность указать ссылку на эту иконку.
В меню отображено 3 пункта меню предыдущий, выбранный и следующий. Текущий написан текстом в 2 раза больше основного. Вокруг текущего пункта есть рамка.
Пункты меню должны располагаться от 16 пикселя сверху экрана, верхние 16 пикселей занимает отображение названия текущего меню и статус (вайфай, батарея, и еще одна иконка они есть)
Библиотека должна использовать библиотеку Adafruit_SSD1306
Библиотека должна состоять из заголовочного файла и с файла с реализацией.
Для разработки пригодится эмулятор, я создал проект, в котором уже есть реализованный блок статуса, подключены провода и есть предполагаемый способ взаимодействия с классом меню, а так же есть колбэк для примера (необходимо переписать)
wokwi.com/projects/388332... Библиотека будет выложена на мой GitHub в открытом виде с указанием ссылки на вас (по желанию)