MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen
Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/scripts/SMCodeGen/dataModels/stateMachineAppModel.json b/scripts/SMCodeGen/dataModels/stateMachineAppModel.json
new file mode 100644
index 0000000..d72b6d2
--- /dev/null
+++ b/scripts/SMCodeGen/dataModels/stateMachineAppModel.json
@@ -0,0 +1,540 @@
+{
+ "Application":{
+ "Name":"mme",
+ "Procedures":[
+ {
+ "Name":"DEFAULT_MME_PROCEDURE",
+ "States":[
+ {
+ "Name":"default_mme_state",
+ "Events":[
+ {
+ "Name":"ATTACH_REQ_FROM_UE",
+ "Actions":[
+ "DEFAULT_ATTACH_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"DETACH_REQ_FROM_UE",
+ "Actions":[
+ "DEFAULT_DETACH_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"S1_REL_REQ_FROM_UE",
+ "Actions":[
+ "DEFAULT_S1_RELEASE_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"DDN_FROM_SGW",
+ "Actions":[
+ "DEFAULT_DDN_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"SERVICE_REQUEST_FROM_UE",
+ "Actions":[
+ "DEFAULT_SERVICE_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"CLR_FROM_HSS",
+ "Actions":[
+ "DEFAULT_CANCEL_LOC_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ },
+ {
+ "Name":"TAU_REQUEST_FROM_UE",
+ "Actions":[
+ "DEFAULT_TAU_REQ_HANDLER"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"ATTACH",
+ "States":[
+ {
+ "Name":"attach_start",
+ "Events":[
+ {
+ "Name":"VALIDATE_IMSI",
+ "Actions":[
+ "VALIDATE_IMSI_IN_UE_CONTEXT"
+ ],
+ "NextState":"attach_wf_imsi_validate_action"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_imsi_validate_action",
+ "Events":[
+ {
+ "Name":"IMSI_VALIDATION_SUCCESS",
+ "Actions":[
+ "SEND_AIR_TO_HSS"
+ ],
+ "NextState":"attach_wf_aia"
+ },
+ {
+ "Name":"IMSI_VALIDATION_FAILURE",
+ "Actions":[
+ "SEND_IDENTITY_REQUEST_TO_UE"
+ ],
+ "NextState":"attach_wf_identity_response"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_aia",
+ "Events":[
+ {
+ "Name":"AIA_FROM_HSS",
+ "Actions":[
+ "PROCESS_AIA",
+ "AUTH_REQ_TO_UE"
+ ],
+ "NextState":"attach_wf_auth_resp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_identity_response",
+ "Events":[
+ {
+ "Name":"IDENTITY_RESPONSE_FROM_UE",
+ "Actions":[
+ "PROCESS_IDENTITY_RESPONSE",
+ "SEND_AIR_TO_HSS"
+ ],
+ "NextState":"attach_wf_aia"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_auth_resp",
+ "Events":[
+ {
+ "Name":"AUTH_RESP_FROM_UE",
+ "Actions":[
+ "AUTH_RESPONSE_VALIDATE"
+ ],
+ "NextState":"attach_wf_auth_resp_validate"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_auth_resp_validate",
+ "Events":[
+ {
+ "Name":"AUTH_RESP_SUCCESS",
+ "Actions":[
+ "SEC_MODE_CMD_TO_UE"
+ ],
+ "NextState":"attach_wf_sec_cmp"
+ },
+ {
+ "Name":"AUTH_RESP_SYNC_FAILURE",
+ "Actions":[
+ "SEND_AIR_TO_HSS"
+ ],
+ "NextState":"attach_wf_aia"
+ },
+ {
+ "Name":"AUTH_RESP_FAILURE",
+ "Actions":[
+ "SEND_AUTH_REJECT"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_sec_cmp",
+ "Events":[
+ {
+ "Name":"SEC_MODE_RESP_FROM_UE",
+ "Actions":[
+ "PROCESS_SEC_MODE_RESP",
+ "CHECK_ESM_INFO_REQ_REQUIRED"
+ ],
+ "NextState":"attach_wf_esm_info_check"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_esm_info_check",
+ "Events":[
+ {
+ "Name":"ESM_INFO_REQUIRED",
+ "Actions":[
+ "SEND_ESM_INFO_REQ_TO_UE"
+ ],
+ "NextState":"attach_wf_esm_info_resp"
+ },
+ {
+ "Name":"ESM_INFO_NOT_REQUIRED",
+ "Actions":[
+ "SEND_ULR_TO_HSS"
+ ],
+ "NextState":"attach_wf_ula"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_esm_info_resp",
+ "Events":[
+ {
+ "Name":"ESM_INFO_RESP_FROM_UE",
+ "Actions":[
+ "PROCESS_ESM_INFO_RESP",
+ "SEND_ULR_TO_HSS"
+ ],
+ "NextState":"attach_wf_ula"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_ula",
+ "Events":[
+ {
+ "Name":"ULA_FROM_HSS",
+ "Actions":[
+ "PROCESS_ULA",
+ "CS_REQ_TO_SGW"
+ ],
+ "NextState":"attach_wf_cs_resp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_cs_resp",
+ "Events":[
+ {
+ "Name":"CS_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_CS_RESP",
+ "SEND_INIT_CTXT_REQ_TO_UE"
+ ],
+ "NextState":"attach_wf_init_ctxt_resp_att_cmp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_init_ctxt_resp_att_cmp",
+ "Events":[
+ {
+ "Name":"INIT_CTXT_RESP_FROM_UE",
+ "Actions":[
+ "PROCESS_INIT_CTXT_RESP"
+ ],
+ "NextState":"attach_wf_att_cmp"
+ },
+ {
+ "Name":"ATT_CMP_FROM_UE",
+ "Actions":[
+ "PROCESS_ATTACH_CMP_FROM_UE"
+ ],
+ "NextState":"attach_wf_init_ctxt_resp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_init_ctxt_resp",
+ "Events":[
+ {
+ "Name":"INIT_CTXT_RESP_FROM_UE",
+ "Actions":[
+ "PROCESS_INIT_CTXT_RESP",
+ "SEND_MB_REQ_TO_SGW"
+ ],
+ "NextState":"attach_wf_mb_resp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_att_cmp",
+ "Events":[
+ {
+ "Name":"ATT_CMP_FROM_UE",
+ "Actions":[
+ "PROCESS_ATTACH_CMP_FROM_UE",
+ "SEND_MB_REQ_TO_SGW"
+ ],
+ "NextState":"attach_wf_mb_resp"
+ }
+ ]
+ },
+ {
+ "Name":"attach_wf_mb_resp",
+ "Events":[
+ {
+ "Name":"MB_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_MB_RESP",
+ "ATTACH_DONE"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"UE_INIT_DETACH",
+ "States":[
+ {
+ "Name":"detach_start",
+ "Events":[
+ {
+ "Name":"DETACH_REQ_FROM_UE",
+ "Actions":[
+ "DEL_SESSION_REQ"
+ ],
+ "NextState":"detach_wf_del_session_resp"
+ }
+ ]
+ },
+ {
+ "Name":"detach_wf_del_session_resp",
+ "Events":[
+ {
+ "Name":"DEL_SESSION_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_DEL_SESSION_RESP",
+ "DETACH_ACCEPT_TO_UE"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"S1_RELEASE",
+ "States":[
+ {
+ "Name":"s1_release_start",
+ "Events":[
+ {
+ "Name":"S1_REL_REQ_FROM_UE",
+ "Actions":[
+ "SEND_REL_AB_REQ_TO_SGW"
+ ],
+ "NextState":"s1_release_wf_release_access_bearer_resp"
+ }
+ ]
+ },
+ {
+ "Name":"s1_release_wf_release_access_bearer_resp",
+ "Events":[
+ {
+ "Name":"REL_AB_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_REL_AB_RESP_FROM_SGW",
+ "SEND_S1_REL_CMD_TO_UE"
+ ],
+ "NextState":"s1_release_wf_ue_ctxt_release_comp"
+ }
+ ]
+ },
+ {
+ "Name":"s1_release_wf_ue_ctxt_release_comp",
+ "Events":[
+ {
+ "Name":"UE_CTXT_REL_COMP_FROM_ENB",
+ "Actions":[
+ "PROCESS_UE_CTXT_REL_COMP"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"NETWORK_INIT_DETACH",
+ "States":[
+ {
+ "Name":"ni_detach_start",
+ "Events":[
+ {
+ "Name":"CLR_FROM_HSS",
+ "Actions":[
+ "NI_DETACH_REQ_TO_UE",
+ "DEL_SESSION_REQ"
+ ],
+ "NextState":"ni_detach_wf_det_accpt_del_sess_resp"
+ }
+ ]
+ },
+ {
+ "Name":"ni_detach_wf_det_accpt_del_sess_resp",
+ "Events":[
+ {
+ "Name":"DETACH_ACCEPT_FROM_UE",
+ "Actions":[
+ "PROCESS_DETACH_ACCEPT_FROM_UE"
+ ],
+ "NextState":"ni_detach_wf_del_sess_resp"
+ },
+ {
+ "Name":"DEL_SESSION_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_DEL_SESSION_RESP"
+ ],
+ "NextState":"ni_detach_wf_detach_accept"
+ }
+ ]
+ },
+ {
+ "Name":"ni_detach_wf_del_sess_resp",
+ "Events":[
+ {
+ "Name":"DEL_SESSION_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_DEL_SESSION_RESP",
+ "SEND_S1_REL_CMD_TO_UE"
+ ],
+ "NextState":"ni_detach_wf_s1_rel_comp"
+ }
+ ]
+ },
+ {
+ "Name":"ni_detach_wf_detach_accept",
+ "Events":[
+ {
+ "Name":"DETACH_ACCEPT_FROM_UE",
+ "Actions":[
+ "PROCESS_DETACH_ACCEPT_FROM_UE",
+ "SEND_S1_REL_CMD_TO_UE_FOR_DETACH"
+ ],
+ "NextState":"ni_detach_wf_s1_rel_comp"
+ }
+ ]
+ },
+ {
+ "Name":"ni_detach_wf_s1_rel_comp",
+ "Events":[
+ {
+ "Name":"UE_CTXT_REL_COMP_FROM_ENB",
+ "Actions":[
+ "PROCESS_UE_CTXT_REL_COMP_FOR_DETACH"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"SERVICE_REQUEST",
+ "States":[
+ {
+ "Name":"paging_start",
+ "Events":[
+ {
+ "Name":"DDN_FROM_SGW",
+ "Actions":[
+ "SEND_PAGING_REQ_TO_UE"
+ ],
+ "NextState":"paging_wf_service_req"
+ }
+ ]
+ },
+ {
+ "Name":"service_request_start",
+ "Events":[
+ {
+ "Name":"SERVICE_REQUEST_FROM_UE",
+ "Actions":[
+ "PROCESS_SERVICE_REQUEST",
+ "PERFORM_AUTH_AND_SEC_CHECK"
+ ],
+ "NextState":"service_request_wf_auth_and_sec_check_cmp"
+ }
+ ]
+ },
+ {
+ "Name":"paging_wf_service_req",
+ "Events":[
+ {
+ "Name":"SERVICE_REQUEST_FROM_UE",
+ "Actions":[
+ "PROCESS_SERVICE_REQUEST",
+ "SEND_DDN_ACK_TO_SGW",
+ "PERFORM_AUTH_AND_SEC_CHECK"
+ ],
+ "NextState":"service_request_wf_auth_and_sec_check_cmp"
+ }
+ ]
+ },
+ {
+ "Name":"service_request_wf_auth_and_sec_check_cmp",
+ "Events":[
+ {
+ "Name":"AUTH_AND_SEC_CHECK_COMPLETE",
+ "Actions":[
+ "SEND_INIT_CTXT_REQ_TO_UE_SVC_REQ"
+ ],
+ "NextState":"service_request_wf_init_ctxt_resp"
+ }
+ ]
+ },
+ {
+ "Name":"service_request_wf_init_ctxt_resp",
+ "Events":[
+ {
+ "Name":"INIT_CTXT_RESP_FROM_UE",
+ "Actions":[
+ "PROCESS_INIT_CTXT_RESP_SVC_REQ",
+ "SEND_MB_REQ_TO_SGW_SVC_REQ"
+ ],
+ "NextState":"service_request_wf_mb_resp"
+ }
+ ]
+ },
+ {
+ "Name":"service_request_wf_mb_resp",
+ "Events":[
+ {
+ "Name":"MB_RESP_FROM_SGW",
+ "Actions":[
+ "PROCESS_MB_RESP_SVC_REQ"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Name":"TAU",
+ "States":[
+ {
+ "Name":"tau_start",
+ "Events":[
+ {
+ "Name":"TAU_REQUEST_FROM_UE",
+ "Actions":[
+ "SEND_TAU_RESPONSE_TO_UE"
+ ],
+ "NextState":"end_state"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file