This release depends on the sequence of 5 Tasks and 6 functions that work in synchronization to handle tasks
-
Init_Task is used to initialize the system with clock and passing clock to specific peripherals that used in system. Initialize all GPIO pins with output push-pull. Initialize uart pins (TX-RX) with each specific purpose. Initialize LCD pins with each specific purpose. Delete initialization task at the end. Here is a sample for Main Doxgen sequence diagrame for more illustration.
-
ManagerTask Transmits the list of options for the user on the putty screen and stops for input from the user then sends this option to queue and notify ActionTask then suspends itself to exist from scheduling and gives permission for lower priority task to run.
-
ActionTask stop to notification from ManagerTask then receive option from queue. Depending on this option, It will notify LedUpdate or LcdUpdate then suspends itself to exist from scheduling and give permission for lower priority tasks to run.
-
LedUpdate asks about the shape of LEDs that user wants by text which send to putty screen and stop for any option from choosing. And call a function that meets the wanted option from 1:4. Then Resume every task that is suspended to enter the scheduling sequence again.
-
LcdUpdate waits on characters that the user is given till he enters '#' to ensure that the statement that he wants to display is finished. Then Resume every task that is suspended to enter the scheduling sequence again.
-
vApplicationIdleHook is call_back_task that calls in the background when the system is in sleep mode to refresh hardware resources.