@@ -134,9 +134,10 @@ static int initIdle(state_t *idle) {
134134
135135 initTransition (idle -> transitions [0 ], findState (PUMPDOWN_NAME ), genTranAction );
136136 initTransition (idle -> transitions [1 ], findState (NON_RUN_FAULT_NAME ), genTranAction );
137+ initTransition (idle -> transitions [2 ], findState (RUN_FAULT_NAME ), toRunFault );
137138 addTransition (IDLE_NAME , idle -> transitions [0 ]);
138139 addTransition (IDLE_NAME , idle -> transitions [1 ]);
139-
140+ addTransition ( IDLE_NAME , idle -> transitions [ 2 ]);
140141 idle -> fault = idle -> transitions [1 ];
141142
142143 return 0 ;
@@ -167,13 +168,11 @@ static int initPropulsion(state_t *propulsion) {
167168
168169static int initBraking (state_t * braking ) {
169170
170- initTransition (braking -> transitions [0 ], findState (CRAWL_NAME ), toCrawl );
171- initTransition (braking -> transitions [1 ], findState (STOPPED_NAME ), genTranAction );
172- initTransition (braking -> transitions [2 ], findState (RUN_FAULT_NAME ), genTranAction );
171+ initTransition (braking -> transitions [0 ], findState (STOPPED_NAME ), genTranAction );
172+ initTransition (braking -> transitions [1 ], findState (RUN_FAULT_NAME ), genTranAction );
173173 addTransition (BRAKING_NAME , braking -> transitions [0 ]);
174- addTransition (BRAKING_NAME , braking -> transitions [1 ]);
175174 addTransition (BRAKING_NAME ,
176- braking -> fault = braking -> transitions [2 ]);
175+ braking -> fault = braking -> transitions [1 ]);
177176
178177 return 0 ;
179178}
@@ -201,7 +200,7 @@ static int initStopped(state_t *stopped) {
201200
202201
203202 initTransition (stopped -> transitions [0 ], findState (POST_RUN_NAME ), genTranAction );
204- initTransition (stopped -> transitions [1 ], findState (CRAWL_NAME ), toCrawl );
203+ /* initTransition(stopped->transitions[1], findState(SERV_PRECHARGE_NAME ), toServPrecharge);*/
205204 initTransition (stopped -> transitions [2 ], findState (RUN_FAULT_NAME ), genTranAction );
206205 addTransition (STOPPED_NAME , stopped -> transitions [0 ]);
207206 addTransition (STOPPED_NAME , stopped -> transitions [1 ]);
@@ -227,6 +226,7 @@ static int initSafeToApproach(state_t *safeToApproach) {
227226 return 0 ;
228227}
229228
229+
230230/***
231231 * findTransition - Looks through a passed in states list of transitions
232232 * and identifies the one that leads to a specified target
@@ -245,11 +245,14 @@ stateTransition_t *findTransition(state_t *srcState, char *targName) {
245245 }
246246 return NULL ;
247247}
248-
249- state_t * getCurrState (void ) {
248+ state_t * getCurrState ( void );
249+ state_t * getCurrState () {
250250 return stateMachine .currState ;
251251}
252-
252+ void setCurrState (state_t * state );
253+ void setCurrState (state_t * state ) {
254+ stateMachine .currState = state ;
255+ }
253256/***
254257 * runStateMachine -
255258 * Executes the current states action. A mini control loop
@@ -277,7 +280,6 @@ void runStateMachine(void) {
277280 }
278281 /* execute the state and check if we should be transitioning */
279282 stateTransition_t * transition = stateMachine .currState -> action ();
280- printf ("curr: %s\n" , stateMachine .currState -> name );
281283 if (transition != NULL ) {
282284 if (transition -> action () == 0 )
283285 stateMachine .currState = transition -> target ;
@@ -302,7 +304,7 @@ void buildStateMachine(void) {
302304 stateMachine .allStates [i ] = malloc (sizeof (state_t ));
303305 }
304306
305- initState (stateMachine .allStates [0 ], IDLE_NAME , idleAction , 2 );
307+ initState (stateMachine .allStates [0 ], IDLE_NAME , idleAction , 4 );
306308 initState (stateMachine .allStates [1 ], PUMPDOWN_NAME , pumpdownAction , 2 );
307309 initState (stateMachine .allStates [2 ], PROPULSION_NAME , propulsionAction , 2 );
308310 initState (stateMachine .allStates [3 ], BRAKING_NAME , brakingAction , 3 );
0 commit comments