#include <stdio.h>
#include <ME218_C32.h>
#include <timers12.h>
#include "PWMS12.h"
#include "IO_Definitions.h"
#include "Constants.h"
#include "ConfigureInitialize.h"
#include "ADS12.h"

char CheckEvents(void);

char CheckEvents(void) {

  static char goalie_direction_flag = OFF;
/********* Left Flipper *************/
/* Is the left flipper on and its timer expired? */
  if ((PTAD & SWING_LEFT) && 
        (TMRS12_IsTimerExpired(LEFT_FLPR_TMR) == TMRS12_EXPIRED)) 
  {
        if (PTAD & LF_DIR) return L_FLIPPER_RTN; 
        else return L_FLIPPER_DONE;
  }

/* Is the left flipper being actuated (currently off)? */
  if (!(PTAD & SWING_LEFT) && (PTAD & L_FLIPPER_IN)) 
  {
        return LT_FLIPPER_SWING;
  }

/********* Right Flipper *************/

/* Is the right flipper on and its timer expired? */
  if ((PTAD & SWING_RIGHT) && 
        (TMRS12_IsTimerActive(RIGHT_FLPR_TMR) != TMRS12_ACTIVE)) 
  {
        if (PTM & RF_DIR) return R_FLIPPER_RTN; 
        else return R_FLIPPER_DONE;
  }

/* Is the left flipper being actuated (currently off)? */
  if (!(PTAD & SWING_RIGHT) && (PTAD & R_FLIPPER_IN)) 
  {
        return RT_FLIPPER_SWING;
  }
    
/******** Goal Sensors **************/
  if (!(PTM & PLYR_GOAL)) return PLYR;
  if (!(PTM & OPP_GOAL))  return OPP;

/******** Goalie Switches ***********/
/* Need to use timer to handle 2nd player */
    
  if (!(PTAD & GOALIE_CHANGE_DIR) && 
        (TMRS12_IsTimerExpired(GOALIE_TIMER) == TMRS12_EXPIRED)) 
  {
      TMRS12_InitTimer(GOALIE_TIMER, GOALIE_CHANGE_TIME);
      TMRS12_StartTimer(GOALIE_TIMER);
      return GOALIE_CHANGE;
  }
  
  
/******** Game Clock ****************/
  if (TMRS12_IsTimerExpired(GAME_CLOCK) == TMRS12_EXPIRED) return TIME_OVER;
  if (TMRS12_IsTimerExpired(SECOND_TMR) == TMRS12_EXPIRED) return SECOND_ELAPSED;
  
  else return ERROR;
}

