update it

This commit is contained in:
Sukchan Lee 2017-04-11 09:32:34 +09:00
parent 38d9df9fd9
commit ab0584dabb
8 changed files with 57 additions and 79 deletions

View File

@ -8,7 +8,7 @@
#include "emm_handler.h"
#include "mme_s6a_handler.h"
void emm_state_initial(emm_sm_t *s, event_t *e)
void emm_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
@ -17,14 +17,14 @@ void emm_state_initial(emm_sm_t *s, event_t *e)
FSM_TRAN(s, &emm_state_operational);
}
void emm_state_final(emm_sm_t *s, event_t *e)
void emm_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
}
void emm_state_operational(emm_sm_t *s, event_t *e)
void emm_state_operational(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
@ -104,7 +104,7 @@ void emm_state_operational(emm_sm_t *s, event_t *e)
}
}
void emm_state_exception(emm_sm_t *s, event_t *e)
void emm_state_exception(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");

View File

@ -7,7 +7,7 @@
#include "mme_event.h"
#include "esm_handler.h"
void esm_state_initial(esm_sm_t *s, event_t *e)
void esm_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
@ -16,14 +16,14 @@ void esm_state_initial(esm_sm_t *s, event_t *e)
FSM_TRAN(s, &esm_state_operational);
}
void esm_state_final(esm_sm_t *s, event_t *e)
void esm_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
}
void esm_state_operational(esm_sm_t *s, event_t *e)
void esm_state_operational(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
@ -81,7 +81,7 @@ void esm_state_operational(esm_sm_t *s, event_t *e)
}
}
void esm_state_exception(esm_sm_t *s, event_t *e)
void esm_state_exception(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");

View File

@ -197,9 +197,8 @@ mme_enb_t* mme_enb_add(net_sock_t *s1ap_sock)
list_init(&enb->ue_list);
list_append(&self.enb_list, enb);
fsm_create((fsm_t*)&enb->s1ap_sm,
s1ap_state_initial, s1ap_state_final);
fsm_init((fsm_t*)&enb->s1ap_sm, 0);
fsm_create(&enb->sm, s1ap_state_initial, s1ap_state_final);
fsm_init(&enb->sm, 0);
return enb;
}
@ -208,8 +207,8 @@ status_t mme_enb_remove(mme_enb_t *enb)
{
d_assert(enb, return CORE_ERROR, "Null param");
fsm_final((fsm_t*)&enb->s1ap_sm, 0);
fsm_clear((fsm_t*)&enb->s1ap_sm);
fsm_final(&enb->sm, 0);
fsm_clear(&enb->sm);
mme_ue_remove_in_enb(enb);
@ -374,9 +373,8 @@ mme_ue_t* mme_ue_add(mme_enb_t *enb)
list_init(&ue->esm_list);
list_append(&enb->ue_list, ue);
fsm_create((fsm_t*)&ue->emm_sm,
emm_state_initial, emm_state_final);
fsm_init((fsm_t*)&ue->emm_sm, 0);
fsm_create(&ue->sm, emm_state_initial, emm_state_final);
fsm_init(&ue->sm, 0);
return ue;
}
@ -387,8 +385,8 @@ status_t mme_ue_remove(mme_ue_t *ue)
d_assert(ue, return CORE_ERROR, "Null param");
d_assert(ue->enb, return CORE_ERROR, "Null param");
fsm_final((fsm_t*)&ue->emm_sm, 0);
fsm_clear((fsm_t*)&ue->emm_sm);
fsm_final(&ue->sm, 0);
fsm_clear(&ue->sm);
mme_esm_remove_all(ue);
@ -509,9 +507,8 @@ mme_esm_t* mme_esm_add(mme_ue_t *ue, c_uint8_t pti)
list_append(&ue->esm_list, esm);
fsm_create((fsm_t*)&esm->sm,
esm_state_initial, esm_state_final);
fsm_init((fsm_t*)&esm->sm, 0);
fsm_create(&esm->sm, esm_state_initial, esm_state_final);
fsm_init(&esm->sm, 0);
return esm;
}
@ -521,8 +518,8 @@ status_t mme_esm_remove(mme_esm_t *esm)
d_assert(esm, return CORE_ERROR, "Null param");
d_assert(esm->ue, return CORE_ERROR, "Null param");
fsm_final((fsm_t*)&esm->sm, 0);
fsm_clear((fsm_t*)&esm->sm);
fsm_final(&esm->sm, 0);
fsm_clear(&esm->sm);
list_remove(&esm->ue->esm_list, esm);
index_free(&mme_esm_pool, esm);

View File

@ -84,10 +84,9 @@ typedef struct _mme_sgw_t {
typedef struct _mme_enb_t {
lnode_t node; /**< A node of list_t */
index_t index; /**< Index key */
fsm_t sm;
c_uint32_t enb_id; /** eNB_ID received from eNB */
s1ap_sm_t s1ap_sm;
net_sock_t *s1ap_sock;
list_t ue_list;
@ -97,9 +96,9 @@ typedef struct _mme_enb_t {
typedef struct _mme_ue_t {
lnode_t node; /**< A node of list_t */
index_t index; /**< Index key */
fsm_t sm;
/* State Machine */
emm_sm_t emm_sm;
/* UE identity */
c_uint32_t enb_ue_s1ap_id; /** eNB-UE-S1AP-ID received from eNB */
@ -153,11 +152,10 @@ typedef struct _mme_ue_t {
typedef struct _mme_esm_t {
lnode_t node; /**< A node of list_t */
index_t index; /**< Index key */
fsm_t sm;
c_uint8_t pti; /** Procedure Trasaction Identity */
esm_sm_t sm;
mme_ue_t *ue;
} mme_esm_t;

View File

@ -39,7 +39,7 @@ void mme_terminate(void)
void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
{
event_t event;
mme_sm_t mme_sm;
fsm_t mme_sm;
c_time_t prev_tm, now_tm;
status_t rv;
@ -52,9 +52,8 @@ void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
gtp_xact_init(&mme_self()->gtp_xact_ctx,
&mme_self()->tm_service, EVT_TM_MME_S11_T3);
fsm_create(&mme_sm.fsm, mme_state_initial, mme_state_final);
d_assert(&mme_sm.fsm, return NULL, "MME state machine creation failed");
fsm_init((fsm_t*)&mme_sm, 0);
fsm_create(&mme_sm, mme_state_initial, mme_state_final);
fsm_init(&mme_sm, 0);
prev_tm = time_now();
@ -81,11 +80,11 @@ void *THREAD_FUNC mme_sm_main(thread_id id, void *data)
continue;
}
fsm_dispatch((fsm_t*)&mme_sm, (fsm_event_t*)&event);
fsm_dispatch(&mme_sm, (fsm_event_t*)&event);
}
fsm_final((fsm_t*)&mme_sm, 0);
fsm_clear((fsm_t*)&mme_sm);
fsm_final(&mme_sm, 0);
fsm_clear(&mme_sm);
gtp_xact_final();
event_delete(mme_self()->queue_id);

View File

@ -10,7 +10,7 @@
#include "nas_security.h"
#include "mme_s11_path.h"
void mme_state_initial(mme_sm_t *s, event_t *e)
void mme_state_initial(fsm_t *s, event_t *e)
{
mme_sm_trace(1, e);
@ -19,14 +19,14 @@ void mme_state_initial(mme_sm_t *s, event_t *e)
FSM_TRAN(s, &mme_state_operational);
}
void mme_state_final(mme_sm_t *s, event_t *e)
void mme_state_final(fsm_t *s, event_t *e)
{
mme_sm_trace(1, e);
d_assert(s, return, "Null param");
}
void mme_state_operational(mme_sm_t *s, event_t *e)
void mme_state_operational(fsm_t *s, event_t *e)
{
status_t rv;
char buf[INET_ADDRSTRLEN];
@ -131,14 +131,14 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
d_assert(index, pkbuf_free(pkbuf); break, "Null param");
d_assert(enb = mme_enb_find(index),
pkbuf_free(pkbuf); break, "No eNB context");
d_assert(FSM_STATE(&enb->s1ap_sm),
d_assert(FSM_STATE(&enb->sm),
pkbuf_free(pkbuf); break, "No S1AP State Machine");
d_assert(s1ap_decode_pdu(&message, pkbuf) == CORE_OK,
pkbuf_free(pkbuf); break, "Can't decode S1AP_PDU");
event_set_param3(e, (c_uintptr_t)&message);
fsm_dispatch((fsm_t*)&enb->s1ap_sm, (fsm_event_t*)e);
fsm_dispatch(&enb->sm, (fsm_event_t*)e);
s1ap_free_pdu(&message);
pkbuf_free(pkbuf);
@ -155,14 +155,14 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
d_assert(index, pkbuf_free(pkbuf); break, "Null param");
ue = mme_ue_find(index);
d_assert(ue, pkbuf_free(pkbuf); break, "No UE context");
d_assert(FSM_STATE(&ue->emm_sm),
d_assert(FSM_STATE(&ue->sm),
pkbuf_free(pkbuf); break, "No EMM State Machine");
d_assert(nas_security_decode(&message, ue, pkbuf) == CORE_OK,
pkbuf_free(pkbuf); break, "Can't decode NAS_EMM");
event_set_param3(e, (c_uintptr_t)&message);
fsm_dispatch((fsm_t*)&ue->emm_sm, (fsm_event_t*)e);
fsm_dispatch(&ue->sm, (fsm_event_t*)e);
pkbuf_free(pkbuf);
break;
@ -187,7 +187,7 @@ void mme_state_operational(mme_sm_t *s, event_t *e)
pkbuf_free(pkbuf); break, "Can't decode NAS_ESM");
event_set_param3(e, (c_uintptr_t)&message);
fsm_dispatch((fsm_t*)&esm->sm, (fsm_event_t*)e);
fsm_dispatch(&esm->sm, (fsm_event_t*)e);
pkbuf_free(pkbuf);
break;

View File

@ -9,41 +9,25 @@
extern "C" {
#endif /* __cplusplus */
typedef struct _mme_sm_t {
fsm_t fsm;
} mme_sm_t;
void mme_state_initial(fsm_t *s, event_t *e);
void mme_state_final(fsm_t *s, event_t *e);
void mme_state_operational(fsm_t *s, event_t *e);
void mme_state_exception(fsm_t *s, event_t *e);
void mme_state_initial(mme_sm_t *s, event_t *e);
void mme_state_final(mme_sm_t *s, event_t *e);
void mme_state_operational(mme_sm_t *s, event_t *e);
void mme_state_exception(mme_sm_t *s, event_t *e);
void s1ap_state_initial(fsm_t *s, event_t *e);
void s1ap_state_final(fsm_t *s, event_t *e);
void s1ap_state_operational(fsm_t *s, event_t *e);
void s1ap_state_exception(fsm_t *s, event_t *e);
typedef struct _s1ap_sm_t {
fsm_t fsm;
} s1ap_sm_t;
void emm_state_initial(fsm_t *s, event_t *e);
void emm_state_final(fsm_t *s, event_t *e);
void emm_state_operational(fsm_t *s, event_t *e);
void emm_state_exception(fsm_t *s, event_t *e);
void s1ap_state_initial(s1ap_sm_t *s, event_t *e);
void s1ap_state_final(s1ap_sm_t *s, event_t *e);
void s1ap_state_operational(s1ap_sm_t *s, event_t *e);
void s1ap_state_exception(s1ap_sm_t *s, event_t *e);
typedef struct _emm_sm_t {
fsm_t fsm;
} emm_sm_t;
void emm_state_initial(emm_sm_t *s, event_t *e);
void emm_state_final(emm_sm_t *s, event_t *e);
void emm_state_operational(emm_sm_t *s, event_t *e);
void emm_state_exception(emm_sm_t *s, event_t *e);
typedef struct _esm_sm_t {
fsm_t fsm;
} esm_sm_t;
void esm_state_initial(esm_sm_t *s, event_t *e);
void esm_state_final(esm_sm_t *s, event_t *e);
void esm_state_operational(esm_sm_t *s, event_t *e);
void esm_state_exception(esm_sm_t *s, event_t *e);
void esm_state_initial(fsm_t *s, event_t *e);
void esm_state_final(fsm_t *s, event_t *e);
void esm_state_operational(fsm_t *s, event_t *e);
void esm_state_exception(fsm_t *s, event_t *e);
#define mme_sm_print(__pe) \
d_print("%s(): %s\n", __func__, mme_event_get_name(__pe))

View File

@ -7,7 +7,7 @@
#include "s1ap_build.h"
#include "s1ap_handler.h"
void s1ap_state_initial(s1ap_sm_t *s, event_t *e)
void s1ap_state_initial(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
@ -16,14 +16,14 @@ void s1ap_state_initial(s1ap_sm_t *s, event_t *e)
FSM_TRAN(s, &s1ap_state_operational);
}
void s1ap_state_final(s1ap_sm_t *s, event_t *e)
void s1ap_state_final(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
mme_sm_trace(1, e);
}
void s1ap_state_operational(s1ap_sm_t *s, event_t *e)
void s1ap_state_operational(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");
@ -117,7 +117,7 @@ void s1ap_state_operational(s1ap_sm_t *s, event_t *e)
}
}
void s1ap_state_exception(s1ap_sm_t *s, event_t *e)
void s1ap_state_exception(fsm_t *s, event_t *e)
{
d_assert(s, return, "Null param");
d_assert(e, return, "Null param");