Active calendar store. It owns the appmessage calendar channel and its place on the shared cadence, so a face just hands it the rules (live / poll interval), optionally seeds it, then reads the events and subscribes for repaints. The phone data flows straight in and nobody wires it. More...
Go to the source code of this file.
Data Structures | |
| struct | CalendarConfig |
| The rules a face hands the store, built from its own settings so the store names no SETTING_*. More... | |
| struct | CalendarSeed |
| Optional prefill: shown until the first real reading lands, or pinned when live = false. More... | |
Functions | |
| void | calendar_store_init (CalendarConfig cfg, const CalendarSeed *seed) |
| Start the store with its rules. Pass seed = NULL for normal use. | |
| void | calendar_store_reconfigure (CalendarConfig cfg) |
| Re-apply the rules (e.g. the poll interval changed). Moves the next poll to the new interval, and switching the store off here stops it asking the phone. | |
| void | calendar_store_subscribe (void(*cb)(void)) |
| Hand it the function to call when the agenda changes (the screen redraw). | |
| const CalendarStrip * | calendar_store_strip (void) |
| The whole agenda strip. count is 0 until a reading lands. | |
| const CalendarEvent * | calendar_store_event (uint8_t index) |
| One event by index, or NULL when the index is past what is filled. | |
| int | calendar_store_age_s (void) |
| How many seconds since the last reading turned up, or -1 if we have none. | |
Active calendar store. It owns the appmessage calendar channel and its place on the shared cadence, so a face just hands it the rules (live / poll interval), optionally seeds it, then reads the events and subscribes for repaints. The phone data flows straight in and nobody wires it.