LED Display Service

This service is responsible for sending characters to the LED display matrix based on inputs from the state machine.

Constants and Module Variables

Module Defines

LEDServiceState_t CurrentState, static uint8_t MyPriority

Module Functions

QueryLEDServiceFSM

No input

Return CurrentState


PostDoorSensorService

Input: ES_Event_t

Post to service(priority, event)

Service Initialization

InitLEDServiceFSM

Inputs: priority

Initialize SPI, DM_Display

Set CurrentState to Idle

Post initial ES_INIT 

Service Run

RunDoorSensorService

Input: Event ThisEvent


Declare ReturnEvent to be ES_NO_EVENT

Declare PostEvent to be ES_NO_EVENT



Switch statement for CurrentState

Case InitPState:

If CurrentEvent is ES_INIT:

Set CurrentState to Idle

Break;

Case Idle:

Switch statement for CurrentEvent

Case ES_CHAR_PRESS:

Declare ES_Event_t newEvent, set EventType to ES_UPDATING

Call DM_AddChar2DisplayBuffer(CurrentEvent.EventParam)

Scroll the display buffer

Post an event to LEDServiceFSM

Set CurrentState to Writing

Break;

Break;

Case Writing:

Switch statement for CurrentEvent

Case ES_UPDATING:

If Display is not Updated:

Declare ES_Event_t newEvent

set EventType to ES_UPDATING

Post an event to LEDServiceFSM

Else:

Set CurrentState to Idle

Break;

Case ES_CHAR_PRESS:

Declare ES_Event_t newEvent

set EventType to ES_UPDATING

Post an event to LEDServiceFSM


Break;

Break;

Return ReturnEvent