[CSFB] Idle-mode done

This commit is contained in:
Sukchan Lee 2019-07-09 09:27:45 +09:00
parent 87cdd71582
commit 9dbca85c1f
6 changed files with 14 additions and 7 deletions

View File

@ -30,6 +30,7 @@
#include "esm-handler.h"
#include "nas-path.h"
#include "s1ap-path.h"
#include "sgsap-types.h"
#include "sgsap-path.h"
#include "mme-gtp-path.h"
#include "mme-path.h"
@ -357,7 +358,7 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e)
NAS_SERVICE_TYPE_CS_FALLBACK_TO_UE) {
ogs_debug(" SERVICE_REQUEST[%d]",
mme_ue->nas_eps.service.service_type);
sgsap_send_service_request(mme_ue);
sgsap_send_service_request(mme_ue, SGSAP_EMM_IDLE_MODE);
} else {
ogs_warn(" Unknown CSFB Service Type[%d]",
mme_ue->nas_eps.service.service_type);

View File

@ -188,7 +188,7 @@ ogs_pkbuf_t *sgsap_build_mo_csfb_indication(mme_ue_t *mme_ue)
return pkbuf;
}
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue)
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue, uint8_t emm_mode)
{
mme_vlr_t *vlr = NULL;
ogs_tlv_t *root = NULL;
@ -204,6 +204,9 @@ ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue)
ogs_tlv_add(root, SGSAP_IE_SERVICE_INDICATOR_TYPE,
SGSAP_IE_SERVICE_INDICATOR_LEN, 0, &mme_ue->service_indicator);
ogs_tlv_add(root, SGSAP_IE_UE_EMM_MODE_TYPE,
SGSAP_IE_UE_EMM_MODE_LEN, 0, &emm_mode);
pkbuf = ogs_pkbuf_alloc(NULL, MAX_SDU_LEN);
ogs_pkbuf_put_u8(pkbuf, SGSAP_SERVICE_REQUEST);
ogs_pkbuf_put(pkbuf, MAX_SDU_LEN-1);

View File

@ -29,9 +29,8 @@ extern "C" {
ogs_pkbuf_t *sgsap_build_location_update_request(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_tmsi_reallocation_complete(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_detach_indication(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_mo_csfb_indication(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue);
ogs_pkbuf_t *sgsap_build_service_request(mme_ue_t *mme_ue, uint8_t emm_mode);
ogs_pkbuf_t *sgsap_build_reset_ack(mme_vlr_t *vlr);
#ifdef __cplusplus

View File

@ -178,7 +178,7 @@ int sgsap_send_mo_csfb_indication(mme_ue_t *mme_ue)
return OGS_OK;
}
int sgsap_send_service_request(mme_ue_t *mme_ue)
int sgsap_send_service_request(mme_ue_t *mme_ue, uint8_t emm_mode)
{
int rv;
ogs_pkbuf_t *pkbuf = NULL;
@ -187,8 +187,9 @@ int sgsap_send_service_request(mme_ue_t *mme_ue)
ogs_debug("[SGSAP] SERVICE-REQUEST");
ogs_debug(" IMSI[%s]", mme_ue->imsi_bcd);
ogs_debug(" SERVICE_INDICATOR[%d]", mme_ue->service_indicator);
ogs_debug(" EMM_MODE[%d]", emm_mode);
pkbuf = sgsap_build_service_request(mme_ue);
pkbuf = sgsap_build_service_request(mme_ue, emm_mode);
rv = sgsap_send_to_vlr(mme_ue, pkbuf);
ogs_assert(rv == OGS_OK);

View File

@ -46,7 +46,7 @@ int sgsap_send_location_update_request(mme_ue_t *mme_ue);
int sgsap_send_tmsi_reallocation_complete(mme_ue_t *mme_ue);
int sgsap_send_detach_indication(mme_ue_t *mme_ue);
int sgsap_send_mo_csfb_indication(mme_ue_t *mme_ue);
int sgsap_send_service_request(mme_ue_t *mme_ue);
int sgsap_send_service_request(mme_ue_t *mme_ue, uint8_t emm_mode);
int sgsap_send_reset_ack(mme_vlr_t *vlr);
#ifdef __cplusplus

View File

@ -75,6 +75,9 @@ extern "C" {
#define SGSAP_IMSI_DETACH_COMBINED_UE_INITIATED 2
#define SGSAP_IMSI_DETACH_IMPLICIT_NETWORK_INITIATED 3
#define SGSAP_EMM_IDLE_MODE 0
#define SGSAP_EMM_CONNECTED_MODE 1
#ifdef __cplusplus
}
#endif