Professional Documents
Culture Documents
#include "BITDEFS.H"
#include "ES_Configure.h"
#include "EventCheckers.h"
#include "ES_Framework.h"
#include "ES_DeferRecall.h"
#include "ES_ShortTimer.h"
#include "MarathonServiceSM.h"
#include "ShiftRegisterWrite.h"
#include "ADMulti.h"
#include "PWM16Tiva.h"
#define PLAYER_START_LINE 0
#define PLAYER_FINISH_LINE 1
#define OPPONENT_START_LINE 2
#define OPPONENT_FINISH_LINE 3
#define FLAG_START_POSITION 4
#define FLAG_FINISH_POSITION 5
#define FAN_CHANNEL 0
#define STALL_PWM 0
#define FLAG_ON_PWM 80
//Buzzer channels
#define BUTTON_1_CHANNEL 4
#define BUTTON_2_CHANNEL 5
#define BUTTON_3_CHANNEL 6
#define BUTTON_4_CHANNEL 7
#define NUM_MOTORS 8
//Pattern that runs forever as the system waits for someone to interact
//with it
static uint16_t WelcomePatternBank[NUM_PATTERNS] = {
65535, 0, 65535, 0, 8, 12, 14, 15, 31, 287, 4383, 12575, 28959, 61727,
63775, 63903, 63967, 63999, 64511, 65535, 64511, 65023, 65503, 65471,
65407, 63487, 32767, 49151, 57343, 61439, 65279, 65519, 65534, 65533,
65531, 65527, 65535, 0, 65535, 0
};
TurnOffHandLEDs();
HandLEDsOn = false;
NumVoteTimeouts = 0;
SR_Write16(0);
SR_WriteMapAllOff();
CurrentState = InitialState;
index = 0;
return true;
}
bool Check4Lever(void)
{
ES_Event ThisEvent;
ThisEvent.EventType = LEVER_PULLED;
uint8_t CurrentLeverState;
bool ReturnVal = false;
bool Check4Fence(void)
{
bool ReturnVal = false;
if (CurrentPinStateD0 != LastPinStateD0)
{
if (CurrentPinStateD0 == 0)
{
ThisEvent.EventParam = PLAYER_FINISH_LINE;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
if (CurrentPinStateD1 != LastPinStateD1)
{
if (CurrentPinStateD1 == 0)
{
ThisEvent.EventParam = PLAYER_START_LINE;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
if (CurrentPinStateD2 != LastPinStateD2)
{
if (CurrentPinStateD2 == 0)
{
ThisEvent.EventParam = OPPONENT_FINISH_LINE;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
if (CurrentPinStateD3 != LastPinStateD3)
{
if (CurrentPinStateD3 == 0)
{
ThisEvent.EventParam = OPPONENT_START_LINE;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
if (CurrentPinStateF4 != LastPinStateF4)
{
if (CurrentPinStateF4 == 0)
{
ThisEvent.EventParam = FLAG_START_POSITION;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
if (CurrentPinStateD7 != LastPinStateD7)
{
if (CurrentPinStateD7 == 0)
{
ThisEvent.EventParam = FLAG_FINISH_POSITION;
ES_PostList00(ThisEvent);
ReturnVal = true;
}
}
}
LastPinStates = CurrentPinStates;
LastPinStateD0 = CurrentPinStateD0;
LastPinStateD1 = CurrentPinStateD1;
LastPinStateD2 = CurrentPinStateD2;
LastPinStateD3 = CurrentPinStateD3;
LastPinStateF4 = CurrentPinStateF4;
LastPinStateD7 = CurrentPinStateD7;
return ReturnVal;
}
HandLEDsOn = true;
}
}
break;
case TorchState:
{
if ((ThisEvent.EventType == FENCE_HIT) &&
(ThisEvent.EventParam == FLAG_FINISH_POSITION))
{
ES_Timer_StopTimer(IR_TIMER);
SR_Write16(0);
NextState = PauseState;
HandLEDsOn = false;
SR_Write16(0);