summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/include/osmocom/bb
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2017-11-29 17:43:22 +0800
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2017-12-03 12:58:52 +0000
commitf976ad9dc41ae14919c9923fc82ba747b1dd181c (patch)
treef58c5595b08a8d9c4fb6e6390b9f46d6d78c3ab4 /src/host/layer23/include/osmocom/bb
parent714cb53282c89d50055a17b67047d50b03d69521 (diff)
mobile: Notify MM status changes and generate primitive op ind
Notify once the mm state has been changed. Unfortunaley one state transition can immediately trigger more transitions (recursively). In the mid-term it might be best to force all primitives to be async to avoid unpredictable behavior (e.g. make a shutdown while being a recursion down?) Change-Id: I8e9dcf7fd9116985aa060ba027ba74107a19223a
Diffstat (limited to 'src/host/layer23/include/osmocom/bb')
-rw-r--r--src/host/layer23/include/osmocom/bb/mobile/primitives.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/host/layer23/include/osmocom/bb/mobile/primitives.h b/src/host/layer23/include/osmocom/bb/mobile/primitives.h
index 6804fc0e..39b49454 100644
--- a/src/host/layer23/include/osmocom/bb/mobile/primitives.h
+++ b/src/host/layer23/include/osmocom/bb/mobile/primitives.h
@@ -19,6 +19,7 @@ enum mobile_prims {
PRIM_MOB_STARTED,
PRIM_MOB_SHUTDOWN,
PRIM_MOB_SMS,
+ PRIM_MOB_MM,
};
struct mobile_prim_intf {
@@ -65,6 +66,15 @@ struct mobile_sms_param {
int cause;
};
+/**
+ * Mobility Management (MM) state changes.
+ */
+struct mobile_mm_param {
+ int state; /*!< The new MM state */
+ int substate; /*!< The current substate */
+ int prev_substate; /*!< The previous substate */
+};
+
struct mobile_prim {
struct osmo_prim_hdr hdr; /*!< Primitive base class */
union {
@@ -72,6 +82,7 @@ struct mobile_prim {
struct mobile_started_param started;
struct mobile_shutdown_param shutdown;
struct mobile_sms_param sms;
+ struct mobile_mm_param mm;
} u;
};
@@ -86,3 +97,4 @@ void mobile_prim_ntfy_started(struct osmocom_ms *ms, bool started);
void mobile_prim_ntfy_shutdown(struct osmocom_ms *ms, int old_state, int new_state);
void mobile_prim_ntfy_sms_new(struct osmocom_ms *ms, struct gsm_sms *sms);
void mobile_prim_ntfy_sms_status(struct osmocom_ms *ms, struct gsm_sms *sms, uint8_t cause);
+void mobile_prim_ntfy_mm_status(struct osmocom_ms *ms, int state, int subs, int old_subs);