# HELP — RTC Service ## Что делает модуль Поддерживает: - инициализацию RTC; - валидацию даты/времени; - сохранение последнего корректного времени в резервной области NVR; - восстановление времени после перезагрузки по backup-данным. ## API ```c RtcService_Result RtcService_Init(const RtcService_InitConfig* cfg, RtcService_Status* status); RtcService_Result RtcService_GetDateTime(RtcService_DateTime* dt); RtcService_Result RtcService_SetDateTime(const RtcService_DateTime* dt); const char* RtcService_ResultToText(RtcService_Result res); ``` ## Пример использования ```c RtcService_InitConfig cfg = { .preferred_clock_source = RTC_SERVICE_CLOCK_SOURCE_AUTO, .fallback_datetime = { .year = 25, .month = 1, .day = 1, .weekday = 2, .hour = 12, .minute = 0, .second = 0 } }; RtcService_Status status = {0}; RtcService_Result res = RtcService_Init(&cfg, &status); ``` ```c RtcService_DateTime now; if (RtcService_GetDateTime(&now) == RTC_SERVICE_RESULT_OK) { // now готов для чтения полей } ``` ## Конфигурация 1. Выберите `RtcService_InitConfig`: - `preferred_clock_source` — пока рекомендуется `RTC_SERVICE_CLOCK_SOURCE_AUTO`; - `fallback_datetime` — базовая дата на случай первого старта/коррупции. 2. Передайте структуру в `RtcService_Init`. 3. Используйте `RtcService_GetDateTime` для получения времени. 4. Для установки времени — `RtcService_SetDateTime`. ## Коды ошибок `RtcService_ResultToText` возвращает строку: - `OK` - `INVALID_ARGUMENT` - `INVALID_DATETIME` - `HW_NOT_SUPPORTED` - `BACKUP_CORRUPT` - `BACKUP_UNAVAILABLE` - `FAILED` ## Ограничения - Проверка флага power-on reset в текущей платформенной части пока заглушка; если нужно строгое поведение, в `rtc_service_port_k1921vk028.c` добавить чтение реестра причины сброса/статуса. - Выбор LSE/LSI на текущий момент реализован как `UNSUPPORTED` до появления подходящего HAL-подхода.