/**************************************************************************** Module ES_Configure.h Description This file contains macro definitions that are edited by the user to adapt the Events and Services framework to a particular application. Notes History When Who What/Why -------------- --- -------- 12/19/16 20:19 jec removed EVENT_CHECK_HEADER definition. This goes with the V2.3 move to a single wrapper for event checking headers 10/11/15 18:00 jec added new event type ES_SHORT_TIMEOUT 10/21/13 20:54 jec lots of added entries to bring the number of timers and services up to 16 each 08/06/13 14:10 jec removed PostKeyFunc stuff since we are moving that functionality out of the framework and putting it explicitly into the event checking functions 01/15/12 10:03 jec started coding *****************************************************************************/ #ifndef ES_CONFIGURE_H #define ES_CONFIGURE_H /****************************************************************************/ // The maximum number of services sets an upper bound on the number of // services that the framework will handle. Reasonable values are 8 and 16 // corresponding to an 8-bit(uint8_t) and 16-bit(uint16_t) Ready variable size #define MAX_NUM_SERVICES 16 /****************************************************************************/ // This macro determines that nuber of services that are *actually* used in // a particular application. It will vary in value from 1 to MAX_NUM_SERVICES #define NUM_SERVICES 9 /****************************************************************************/ // These are the definitions for Service 0, the lowest priority service. // Every Events and Services application must have a Service 0. Further // services are added in numeric sequence (1,2,3,...) with increasing // priorities // the header file with the public function prototypes #define SERV_0_HEADER "GameplayHSM.h" // the name of the Init function #define SERV_0_INIT InitGameplayMasterSM // the name of the run function #define SERV_0_RUN RunGameplayMasterSM // How big should this services Queue be? #define SERV_0_QUEUE_SIZE 5 /****************************************************************************/ // The following sections are used to define the parameters for each of the // services. You only need to fill out as many as the number of services // defined by NUM_SERVICES /****************************************************************************/ // These are the definitions for Service 1 #if NUM_SERVICES > 1 // the header file with the public function prototypes #define SERV_1_HEADER "TestHarnessService0.h" // the name of the Init function #define SERV_1_INIT InitTestHarnessService0 // the name of the run function #define SERV_1_RUN RunTestHarnessService0 // How big should this services Queue be? #define SERV_1_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 2 #if NUM_SERVICES > 2 // the header file with the public function prototypes #define SERV_2_HEADER "CompassService.h" // the name of the Init function #define SERV_2_INIT InitCompassService // the name of the run function #define SERV_2_RUN RunCompassService // How big should this services Queue be? #define SERV_2_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 3 #if NUM_SERVICES > 3 // the header file with the public function prototypes #define SERV_3_HEADER "GameControlService.h" // the name of the Init function #define SERV_3_INIT InitGameControlService // the name of the run function #define SERV_3_RUN RunGameControlService // How big should this services Queue be? #define SERV_3_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 4 #if NUM_SERVICES > 4 // the header file with the public function prototypes #define SERV_4_HEADER "BallSortingService.h" // the name of the Init function #define SERV_4_INIT InitBallSortingService // the name of the run function #define SERV_4_RUN RunBallSortingService // How big should this services Queue be? #define SERV_4_QUEUE_SIZE 5 #endif /****************************************************************************/ // These are the definitions for Service 5 #if NUM_SERVICES > 5 // the header file with the public function prototypes #define SERV_5_HEADER "I2CService.h" // the name of the Init function #define SERV_5_INIT InitI2CService // the name of the run function #define SERV_5_RUN RunI2CService // How big should this services Queue be? #define SERV_5_QUEUE_SIZE 5 #endif /****************************************************************************/ // These are the definitions for Service 6 #if NUM_SERVICES > 6 // the header file with the public function prototypes #define SERV_6_HEADER "TapeService.h" // the name of the Init function #define SERV_6_INIT InitTapeService // the name of the run function #define SERV_6_RUN RunTapeDebounce // How big should this services Queue be? #define SERV_6_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 7 #if NUM_SERVICES > 7 // the header file with the public function prototypes #define SERV_7_HEADER "LimitSwitchDebounce.h" // the name of the Init function #define SERV_7_INIT InitLimitSwitchDebounce // the name of the run function #define SERV_7_RUN RunLimitSwitchDebounce // How big should this services Queue be? #define SERV_7_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 8 #if NUM_SERVICES > 8 // the header file with the public function prototypes #define SERV_8_HEADER "MotorSM.h" // the name of the Init function #define SERV_8_INIT InitMotorSM // the name of the run function #define SERV_8_RUN RunMotorSM // How big should this services Queue be? #define SERV_8_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 9 #if NUM_SERVICES > 9 // the header file with the public function prototypes #define SERV_9_HEADER "TestHarnessService9.h" // the name of the Init function #define SERV_9_INIT InitTestHarnessService9 // the name of the run function #define SERV_9_RUN RunTestHarnessService9 // How big should this services Queue be? #define SERV_9_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 10 #if NUM_SERVICES > 10 // the header file with the public function prototypes #define SERV_10_HEADER "TestHarnessService10.h" // the name of the Init function #define SERV_10_INIT InitTestHarnessService10 // the name of the run function #define SERV_10_RUN RunTestHarnessService10 // How big should this services Queue be? #define SERV_10_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 11 #if NUM_SERVICES > 11 // the header file with the public function prototypes #define SERV_11_HEADER "TestHarnessService11.h" // the name of the Init function #define SERV_11_INIT InitTestHarnessService11 // the name of the run function #define SERV_11_RUN RunTestHarnessService11 // How big should this services Queue be? #define SERV_11_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 12 #if NUM_SERVICES > 12 // the header file with the public function prototypes #define SERV_12_HEADER "TestHarnessService12.h" // the name of the Init function #define SERV_12_INIT InitTestHarnessService12 // the name of the run function #define SERV_12_RUN RunTestHarnessService12 // How big should this services Queue be? #define SERV_12_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 13 #if NUM_SERVICES > 13 // the header file with the public function prototypes #define SERV_13_HEADER "TestHarnessService13.h" // the name of the Init function #define SERV_13_INIT InitTestHarnessService13 // the name of the run function #define SERV_13_RUN RunTestHarnessService13 // How big should this services Queue be? #define SERV_13_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 14 #if NUM_SERVICES > 14 // the header file with the public function prototypes #define SERV_14_HEADER "TestHarnessService14.h" // the name of the Init function #define SERV_14_INIT InitTestHarnessService14 // the name of the run function #define SERV_14_RUN RunTestHarnessService14 // How big should this services Queue be? #define SERV_14_QUEUE_SIZE 3 #endif /****************************************************************************/ // These are the definitions for Service 15 #if NUM_SERVICES > 15 // the header file with the public function prototypes #define SERV_15_HEADER "TestHarnessService15.h" // the name of the Init function #define SERV_15_INIT InitTestHarnessService15 // the name of the run function #define SERV_15_RUN RunTestHarnessService15 // How big should this services Queue be? #define SERV_15_QUEUE_SIZE 3 #endif /****************************************************************************/ // Name/define the events of interest // Universal events occupy the lowest entries, followed by user-defined events typedef enum { ES_NO_EVENT = 0, ES_ERROR, /* used to indicate an error from the service */ ES_INIT, /* used to transition from initial pseudo-state */ ES_TIMEOUT, /* signals that the timer has expired */ ES_SHORT_TIMEOUT, /* signals that a short timer has expired */ /* User-defined events start here */ ES_ENTRY, // 5 ES_ENTRY_HISTORY, // 6 ES_EXIT, // 7 GAME_STARTED, // 8 GAME_OVER, // 9 MOTOR_COMMAND, // 10 ROBOT_COLLISION, RECYCLE_FULL, TRASH_FULL, START_DUMPING, RECYCLING_CHANGE, // 15 RECYCLE_EMPTY, TRASH_EMPTY, FRONT_LIMIT_HIT_L_RAW, FRONT_LIMIT_HIT_R_RAW, REAR_LIMIT_HIT_L_RAW, // 20 REAR_LIMIT_HIT_R_RAW, FRONT_LIMIT_HIT_L, FRONT_LIMIT_HIT_R, REAR_LIMIT_HIT_L, REAR_LIMIT_HIT_R, // 25 BEACON_DETECTED, TEAM_SELECT, DATA_RECEIVED, REG_COMPLETE, KEEP_TRACK_OF_TAPE, // 30 TAPE_EDGE, TAPE_DETECTED, ES_NEW_KEY, /* signals a new key received from terminal */ ES_LOCK, ES_UNLOCK, // 35 EV_I2C_ReadClear, EV_I2C_ReadRed, EV_I2C_ReadGreen, EV_I2C_ReadBlue, EV_I2C_ReadAll, EV_I2C_StepFinished, EV_I2C_InitSensor, EV_I2C_NextStep, EV_I2C_EOS, EV_I2C_Wait4Busy, EV_I2C_Wait4Time, BALL_AT_COLOR_SENSOR, }ES_EventType_t; /****************************************************************************/ // These are the definitions for the Distribution lists. Each definition // should be a comma separated list of post functions to indicate which // services are on that distribution list. #define NUM_DIST_LISTS 1 #if NUM_DIST_LISTS > 0 #define DIST_LIST0 PostMotorSM, PostGameplayMasterSM #endif #if NUM_DIST_LISTS > 1 #define DIST_LIST1 PostTestHarnessService1, PostTestHarnessService1 #endif #if NUM_DIST_LISTS > 2 #define DIST_LIST2 PostTemplateFSM #endif #if NUM_DIST_LISTS > 3 #define DIST_LIST3 PostTemplateFSM #endif #if NUM_DIST_LISTS > 4 #define DIST_LIST4 PostTemplateFSM #endif #if NUM_DIST_LISTS > 5 #define DIST_LIST5 PostTemplateFSM #endif #if NUM_DIST_LISTS > 6 #define DIST_LIST6 PostTemplateFSM #endif #if NUM_DIST_LISTS > 7 #define DIST_LIST7 PostTemplateFSM #endif /****************************************************************************/ // This is the list of event checking functions #define EVENT_CHECK_LIST Check4Keystroke, LimitSwitchChecker, IsI2C0Finished, \ CheckNewBall, Check4Tape /****************************************************************************/ // These are the definitions for the post functions to be executed when the // corresponding timer expires. All 16 must be defined. If you are not using // a timer, then you should use TIMER_UNUSED // Unlike services, any combination of timers may be used and there is no // priority in servicing them #define TIMER_UNUSED ((pPostFunc)0) #define TIMER0_RESP_FUNC ES_PostList00 // post to motor + gameplay #define TIMER1_RESP_FUNC PostGameplayMasterSM #define TIMER2_RESP_FUNC PostCompassService #define TIMER3_RESP_FUNC PostCompassService #define TIMER4_RESP_FUNC PostGameControlService #define TIMER5_RESP_FUNC PostMotorSM #define TIMER6_RESP_FUNC PostMotorSM #define TIMER7_RESP_FUNC PostBallSortingService #define TIMER8_RESP_FUNC PostI2CService #define TIMER9_RESP_FUNC PostTapeService #define TIMER10_RESP_FUNC PostLimitSwitchDebounce #define TIMER11_RESP_FUNC PostLimitSwitchDebounce #define TIMER12_RESP_FUNC PostLimitSwitchDebounce #define TIMER13_RESP_FUNC PostLimitSwitchDebounce #define TIMER14_RESP_FUNC TIMER_UNUSED #define TIMER15_RESP_FUNC TIMER_UNUSED /****************************************************************************/ // Give the timer numbers symbolc names to make it easier to move them // to different timers if the need arises. Keep these definitions close to the // definitions for the response functions to make it easier to check that // the timer number matches where the timer event will be routed // These symbolic names should be changed to be relevant to your application #define SERVICE0_TIMER 15 /**************************************************************************/ // uncomment this ine to get some basic framework operation debugging on // PF1 & PF2 //#define _INCLUDE_BASIC_FRAMEWORK_DEBUG_ #ifndef _INCLUDE_BASIC_FRAMEWORK_DEBUG_ /**************************************************************************/ // uncomment the next line to get byte-wide debugging on the '595 // uses PF1, PF2 & PF3 //#define _INCLUDE_BYTE_DEBUG_ #endif /* _INCLUDE_BASIC_FRAMEWORK_DEBUG_ */ #endif /* ES_CONFIGURE_H */