layer23: modem: Forward SNSM primitives SNDCP<->SM layers
Related: OS#5501 Depends: libosmo-gprs.git Change-Id Ic5525bfa92e2591757d999610c0d59849d022d8d Change-Id: Iad63f41557fbd078588dd890e2f18ed9606a25f7
This commit is contained in:
parent
4ba8db561e
commit
1cb78f3114
|
@ -34,6 +34,8 @@
|
|||
|
||||
#include <osmocom/gprs/gmm/gmm.h>
|
||||
#include <osmocom/gprs/gmm/gmm_prim.h>
|
||||
#include <osmocom/gprs/sndcp/sndcp.h>
|
||||
#include <osmocom/gprs/sndcp/sndcp_prim.h>
|
||||
#include <osmocom/gprs/sm/sm_prim.h>
|
||||
#include <osmocom/gprs/sm/sm.h>
|
||||
#include <osmocom/gprs/rlcmac/rlcmac_prim.h>
|
||||
|
@ -78,6 +80,30 @@ static int modem_sm_prim_up_cb(struct osmo_gprs_sm_prim *sm_prim, void *user_dat
|
|||
return rc;
|
||||
}
|
||||
|
||||
int modem_sm_prim_sndcp_up_cb(struct osmo_gprs_sndcp_prim *sndcp_prim, void *user_data)
|
||||
{
|
||||
const char *pdu_name = osmo_gprs_sndcp_prim_name(sndcp_prim);
|
||||
int rc;
|
||||
|
||||
switch (sndcp_prim->oph.sap) {
|
||||
case OSMO_GPRS_SNDCP_SAP_SNSM:
|
||||
switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
|
||||
case OSMO_PRIM(OSMO_GPRS_SNDCP_SNSM_ACTIVATE, PRIM_OP_INDICATION):
|
||||
LOGP(DSM, LOGL_INFO, "%s(): Rx %s\n", __func__, pdu_name);
|
||||
rc = osmo_gprs_sndcp_prim_dispatch_snsm(sndcp_prim);
|
||||
break;
|
||||
default:
|
||||
LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, pdu_name);
|
||||
OSMO_ASSERT(0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOGP(DSM, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, pdu_name);
|
||||
OSMO_ASSERT(0);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int modem_sm_prim_down_cb(struct osmo_gprs_sm_prim *sm_prim, void *user_data)
|
||||
{
|
||||
const char *pdu_name = osmo_gprs_sm_prim_name(sm_prim);
|
||||
|
@ -113,6 +139,7 @@ int modem_sm_init(struct osmocom_ms *ms)
|
|||
osmo_gprs_sm_set_log_cat(OSMO_GPRS_SM_LOGC_SM, DSM);
|
||||
|
||||
osmo_gprs_sm_prim_set_up_cb(modem_sm_prim_up_cb, ms);
|
||||
osmo_gprs_sm_prim_set_sndcp_up_cb(modem_sm_prim_sndcp_up_cb, ms);
|
||||
osmo_gprs_sm_prim_set_down_cb(modem_sm_prim_down_cb, ms);
|
||||
osmo_gprs_sm_prim_set_gmm_down_cb(modem_sm_prim_gmm_down_cb, ms);
|
||||
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
#include <osmocom/gprs/llc/llc.h>
|
||||
#include <osmocom/gprs/llc/llc_prim.h>
|
||||
#include <osmocom/gprs/sm/sm_prim.h>
|
||||
#include <osmocom/gprs/sm/sm.h>
|
||||
#include <osmocom/gprs/sndcp/sndcp_prim.h>
|
||||
#include <osmocom/gprs/sndcp/sndcp.h>
|
||||
|
||||
|
@ -132,14 +134,23 @@ static int modem_sndcp_prim_down_cb(struct osmo_gprs_llc_prim *llc_prim, void *u
|
|||
static int modem_sndcp_prim_snsm_cb(struct osmo_gprs_sndcp_prim *sndcp_prim, void *user_data)
|
||||
{
|
||||
const char *npdu_name = osmo_gprs_sndcp_prim_name(sndcp_prim);
|
||||
int rc = 0;
|
||||
|
||||
if (sndcp_prim->oph.sap != OSMO_GPRS_SNDCP_SAP_SNSM) {
|
||||
LOGP(DSNDCP, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, npdu_name);
|
||||
OSMO_ASSERT(0);
|
||||
}
|
||||
|
||||
LOGP(DSNDCP, LOGL_ERROR, "%s(): Rx %s UNIMPLEMENTED\n", __func__, npdu_name);
|
||||
return 0;
|
||||
switch (OSMO_PRIM_HDR(&sndcp_prim->oph)) {
|
||||
case OSMO_PRIM(OSMO_GPRS_SM_SMREG_PDP_ACTIVATE, PRIM_OP_RESPONSE):
|
||||
LOGP(DSNDCP, LOGL_INFO, "%s(): Rx %s\n", __func__, npdu_name);
|
||||
rc = osmo_gprs_sm_prim_sndcp_upper_down(sndcp_prim);
|
||||
break;
|
||||
default:
|
||||
LOGP(DSNDCP, LOGL_ERROR, "%s(): Unexpected Rx %s\n", __func__, npdu_name);
|
||||
OSMO_ASSERT(0);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue