This project integrates a real-time clock calendar with a queue and a scheduler, all developed in C, tested with Ceedling, and documented with Doxygen.
The real time clock calendar has a control structure which stores time (hour:minutes:seconds) as well as date (day/month/year) and weekday. It also has the capacity of storing an alarm value (hours:minutes). The calendar values are updated ever time periodic task is called, it also determines if the registered alarm is active.
For more info check the documentation for rtcc.h and rtcc.c
The queue is basically a circular buffer that can handle any kind of data, its operations are related to write and read which are achieved thanks to the Tail (read index) and Head (write index) as well as the memcpy function.
For more info check the documentation for queue.h and queue.c
The scheduler manages the execution of timers and tasks registered in their corresponding buffers according to their timeouts and periodicity values established, this is verified every time a tick passes.
For more info check the documentation for scheduler_t.h and scheduler_t.c
The integration uses an scheduler timer for updating the real time clock calendar every second as well as 2 tasks; one for obtaining the actual time and date values and the other for printing those values, both tasks are interconnected using a queue.
For more info check the documentation for integration.h, integration.c and integration_main.c
The gcov code coverage report is in build/build_ceedling/artifacts/GcovCoverageResults.html
For more info of the unit test cases check: test_queue.c, test_scheduler_t.c and test_rtcc.c