forked from acouzens/open5gs
[CSFB] Idle-mode done
This commit is contained in:
parent
87cdd71582
commit
9dbca85c1f
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue