Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yboichuk/sdk/nvs config #77

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

black-ghost-off
Copy link
Collaborator

Add support for save and read config from nvs for keira OS

Now setting have only one field, named as "language", but here we can story any what for save from boot to boot

` lilka::Configuration config;

// Load the configuration
lilka::loadConfiguration(config);

// Print the language from the configuration
Serial.print("Current language: ");
Serial.println(config.language);`

@and3rson
Copy link
Owner

and3rson commented Mar 28, 2024

Не впевнений, чи варто це робити, бо в нас вже є Preferences, а додаткова абстракція поверх нього - це додаткові потенційні проблеми. Наприклад, reinterpret_cast<const char*>(&config), sizeof(Configuration)) поламається, якщо зміниться структура Configuration. Краще вже всі налаштування зберігати окремими ключами в неймспейсі keira.

@black-ghost-off
Copy link
Collaborator Author

black-ghost-off commented Mar 29, 2024

Покажи де то вже використовується, бо я ще не бачив нині?

@black-ghost-off
Copy link
Collaborator Author

black-ghost-off commented Mar 29, 2024

@and3rson , я вважаю що network preferences і ftp потрібно винести в одне і якщо вдруг все попливе по налаштуваннях, то завжди можна викликати функцію з абрстракції setDefaultConfiguration()

p.s. Як варіант робити бекап і вигружати все в INI файл в SD карту, або SPIFFS і звідти ж завантажувати

@black-ghost-off black-ghost-off added the wip Work in progress label Mar 29, 2024
@and3rson
Copy link
Owner

and3rson commented Apr 3, 2024

@black-ghost-off оскільки Preferences не вміє отримувати список всіх ключів або всіх неймспейсів, можливо і справді є сенс тримати все в одному неймспейсі - keira. Це дозволить нам просто дропнути весь неймспейс.
Але Ця зміна має бути в Кірі, оскільки бібліотека lilka не має перекладів чи конфігурацій, вона - лише такий собі HAL для Лілки.
TL;DR: Думаю, варто заімплементити це на рівні Кіри - наприклад, зробити так:

// keiraprefs.h
#pragma once

#include <Preferences.h>

class KeiraPrefs : public Preferences {
    KeiraPrefs(bool readOnly);
}

KeiraPrefs::KeiraPrefs(bool readOnly) : Preferences("keira", readOnly) {}

...і тоді по всього проєкту keira замітити Preferences prefs("...", ro) на KeiraPrefs prefs(ro)

Інший варіант - зробити в Кірі якийсь config.h, який визначить ключ KEIRA_PREFS_NS, і тоді робити всюди таке:

Preferences prefs(KEIRA_PREFS_NS, ro);

Але перший варіант дозволить нам додати якісь додаткові методи - скажімо, factoryReset(), чи якийсь кастомний механізм лістінгу ключів, чи гетери/сетери для кастомних типів.

@and3rson and3rson force-pushed the main branch 2 times, most recently from 4563cc8 to 14a952c Compare April 17, 2024 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants