#include "gps_l1_ca_subframe_fsm.h" //************ GPS WORD TO SUBFRAME DECODER STATE MACHINE ********** struct Ev_gps_word_valid : sc::event {}; struct Ev_gps_word_invalid : sc::event{}; struct Ev_gps_word_preamble : sc::event{}; struct gps_subframe_fsm_S0: public sc::state { public: // sc::transition(evento,estado_destino) typedef sc::transition< Ev_gps_word_preamble, gps_subframe_fsm_S1 > reactions; gps_subframe_fsm_S0(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S0 "< { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S2 > > reactions; gps_subframe_fsm_S1(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S1 "< { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S3 > > reactions; gps_subframe_fsm_S2(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S2 "<().gps_word_to_subframe(0); } }; struct gps_subframe_fsm_S3: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S4 > > reactions; gps_subframe_fsm_S3(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S3 "<().gps_word_to_subframe(1); } }; struct gps_subframe_fsm_S4: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S5 > > reactions; gps_subframe_fsm_S4(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S4 "<().gps_word_to_subframe(2); } }; struct gps_subframe_fsm_S5: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S6 > > reactions; gps_subframe_fsm_S5(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S5 "<().gps_word_to_subframe(3); } }; struct gps_subframe_fsm_S6: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S7 > > reactions; gps_subframe_fsm_S6(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S6 "<().gps_word_to_subframe(4); } }; struct gps_subframe_fsm_S7: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S8 > > reactions; gps_subframe_fsm_S7(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S7 "<().gps_word_to_subframe(5); } }; struct gps_subframe_fsm_S8: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S9 > > reactions; gps_subframe_fsm_S8(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S8 "<().gps_word_to_subframe(6); } }; struct gps_subframe_fsm_S9: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S10 > > reactions; gps_subframe_fsm_S9(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S9 "<().gps_word_to_subframe(7); } }; struct gps_subframe_fsm_S10: public sc::state { public: typedef mpl::list, sc::transition< Ev_gps_word_valid, gps_subframe_fsm_S11 > > reactions; gps_subframe_fsm_S10(my_context ctx): my_base( ctx ){ //std::cout<<"Enter S10 "<().gps_word_to_subframe(8); } }; struct gps_subframe_fsm_S11: public sc::state { public: typedef sc::transition< Ev_gps_word_preamble, gps_subframe_fsm_S1 > reactions; gps_subframe_fsm_S11(my_context ctx): my_base( ctx ){ //std::cout<<"Completed GPS Subframe!"<().gps_word_to_subframe(9); context< GpsL1CaSubframeFsm >().gps_subframe_to_nav_msg(); //decode the subframe // DECODE SUBFRAME //std::cout<<"Enter S11"<d_subframe); //decode the subframe std::cout<<"NAVIGATION FSM: received subframe "<d_preamble_time_ms; //std::cout<<"NAVIGATION FSM: set subframe 1 preamble timestamp for satellite "<push(d_nav); } } } void GpsL1CaSubframeFsm::Event_gps_word_valid() { this->process_event(Ev_gps_word_valid()); } void GpsL1CaSubframeFsm::Event_gps_word_invalid() { this->process_event(Ev_gps_word_invalid()); } void GpsL1CaSubframeFsm::Event_gps_word_preamble() { this->process_event(Ev_gps_word_preamble()); }