#define TRACE_MODULE _ue_emm_sm #include "core_debug.h" #include "nas_message.h" #include "sm.h" #include "context.h" #include "event.h" void ue_emm_state_initial(ue_emm_sm_t *s, event_t *e) { d_assert(s, return, "Null param"); sm_trace(1, e); FSM_TRAN(s, &ue_emm_state_operational); } void ue_emm_state_final(ue_emm_sm_t *s, event_t *e) { d_assert(s, return, "Null param"); sm_trace(1, e); } void ue_emm_state_operational(ue_emm_sm_t *s, event_t *e) { d_assert(s, return, "Null param"); d_assert(e, return, "Null param"); ue_ctx_t *ue = s->ctx; d_assert(ue, return, "Null param"); sm_trace(1, e); switch (event_get(e)) { case FSM_ENTRY_SIG: { break; } case FSM_EXIT_SIG: { break; } case EVT_MSG_UE_EMM: { nas_message_t message; status_t rv; pkbuf_t *recvbuf = (pkbuf_t *)event_get_param2(e); d_assert(recvbuf, break, "Null param"); rv = nas_decode_pdu(&message, recvbuf); if (rv != CORE_OK) { d_error("Can't parse NAS_PDU"); break; } switch(message.h.message_type) { case NAS_ATTACH_REQUEST: { d_info("Received ATTACH_REQUEST"); break; } default: { d_warn("Not implemented(type:%d)", message.h.message_type); break; } } pkbuf_free(recvbuf); break; } default: { d_error("Unknown event %s", event_get_name(e)); break; } } } void ue_emm_state_exception(ue_emm_sm_t *s, event_t *e) { d_assert(s, return, "Null param"); d_assert(e, return, "Null param"); sm_trace(1, e); switch (event_get(e)) { case FSM_ENTRY_SIG: { break; } case FSM_EXIT_SIG: { break; } default: { d_error("Unknown event %s", event_get_name(e)); break; } } }