if(fsm->state_name!=NULL)
strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+}
+
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
}
/************************************************************************
* FSM STATES DECLARATION
robot.fsm[FSM_ID_MAIN].state = &fsm_state_main_init;
robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
/* start threads and wait */
robot_start();
#include <robomath.h>
#include <map.h>
-
FSM_STATE_DECL(robot_goto_test);
FSM_STATE(init)
}
}
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
int main()
{
/* robot initialization */
FSM(MAIN)->debug_states = 1;
FSM(MOTION)->debug_states = 1;
+ robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
FSM(MAIN)->state = &fsm_state_main_init;
/* start threads and wait */
robot_move_by(0.05, NO_TURN(), NULL);
}
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
/************************************************************************
* FSM STATES DECLARATION
************************************************************************/
FSM(MAIN)->debug_states = 1;
+ robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
robot.fsm[FSM_ID_MAIN].state = &fsm_state_main_init;
/* start threads and wait */
backward = !backward;
}
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
FSM_STATE(line)
{
switch (FSM_EVENT) {
FSM(MAIN)->debug_states = 1;
/*FSM(MOVE)->debug_states = 1;*/
+ robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
robot.fsm[FSM_ID_MAIN].state = &fsm_state_main_init;
/* Start threads and wait */
#include <trgen.h>
#include <robomath.h>
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
FSM_STATE_DECL(rectangle);
FSM_STATE_DECL(turn);
FSM_STATE_DECL(wait);
FSM(MAIN)->debug_states = 1;
/*FSM(MOVE)->debug_states = 1;*/
+ robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
robot.fsm[FSM_ID_MAIN].state = &fsm_state_main_init;
/* start threads and wait */
#include <trgen.h>
#include <robomath.h>
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
FSM_STATE_DECL(rectangle);
FSM_STATE_DECL(turn);
FSM_STATE_DECL(wait);
FSM(MAIN)->debug_states = 1;
/*FSM(MOVE)->debug_states = 1;*/
+ robot.fsm[FSM_ID_MAIN].transition_callback = trans_callback;
+ robot.fsm[FSM_ID_MOTION].transition_callback = move_trans_callback;
robot.fsm[FSM_ID_MAIN].state = &fsm_state_main_init;
/* start threads and wait */
#include <trgen.h>
#include <robomath.h>
+void trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.act_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
+void move_trans_callback(struct robo_fsm *fsm)
+{
+ if(fsm->state_name!=NULL)
+ strncpy(robot.move_fsm_state_name, fsm->state_name, FSM_STATE_NAME_MAX_LEN);
+
+}
FSM_STATE_DECL(rectangle);
FSM_STATE_DECL(turn);
FSM_STATE_DECL(wait);