summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2017-11-17 15:45:12 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2017-12-03 12:58:52 +0000
commit714cb53282c89d50055a17b67047d50b03d69521 (patch)
treeeed4df09569286817505c123262a36673c6b1d5e /src/host/layer23/src
parent88060f462cde2e3e6f4fc3cbf9c3708083e27dac (diff)
mobile: Inform the primitive layer about status and new sms
Inform the layer about new SMS and inform about the cause of it. In both cases pass the SMS. Change-Id: Ib7ab34b1b85b62ef0e8fff347adccbc5dc414161
Diffstat (limited to 'src/host/layer23/src')
-rw-r--r--src/host/layer23/src/mobile/gsm411_sms.c4
-rw-r--r--src/host/layer23/src/mobile/primitives.c18
2 files changed, 22 insertions, 0 deletions
diff --git a/src/host/layer23/src/mobile/gsm411_sms.c b/src/host/layer23/src/mobile/gsm411_sms.c
index b635bb2f..6d9d56ec 100644
--- a/src/host/layer23/src/mobile/gsm411_sms.c
+++ b/src/host/layer23/src/mobile/gsm411_sms.c
@@ -40,6 +40,7 @@
#include <osmocom/gsm/gsm0411_utils.h>
#include <osmocom/core/talloc.h>
#include <osmocom/bb/mobile/vty.h>
+#include <osmocom/bb/mobile/primitives.h>
#define UM_SAPI_SMS 3
@@ -129,6 +130,7 @@ static int gsm411_sms_report(struct osmocom_ms *ms, struct gsm_sms *sms,
vty_notify(ms, "SMS to %s failed: %s\n", sms->address,
get_value_string(gsm411_rp_cause_strs, cause));
+ mobile_prim_ntfy_sms_status(ms, sms, cause);
return 0;
}
/*
@@ -186,6 +188,8 @@ static int gsm340_rx_sms_deliver(struct osmocom_ms *ms, struct msgb *msg,
char vty_text[sizeof(gsms->text)], *p;
FILE *fp;
+ mobile_prim_ntfy_sms_new(ms, gsms);
+
/* remove linefeeds and show at VTY */
strcpy(vty_text, gsms->text);
for (p = vty_text; *p; p++) {
diff --git a/src/host/layer23/src/mobile/primitives.c b/src/host/layer23/src/mobile/primitives.c
index dde34bcc..0902139e 100644
--- a/src/host/layer23/src/mobile/primitives.c
+++ b/src/host/layer23/src/mobile/primitives.c
@@ -126,6 +126,24 @@ void mobile_prim_ntfy_shutdown(struct osmocom_ms *ms, int old_state, int new_sta
dispatch(ms, prim);
}
+void mobile_prim_ntfy_sms_new(struct osmocom_ms *ms, struct gsm_sms *sms)
+{
+ struct mobile_prim *prim = mobile_prim_alloc(PRIM_MOB_SMS, PRIM_OP_INDICATION);
+
+ prim->u.sms.sms = *sms;
+ dispatch(ms, prim);
+}
+
+void mobile_prim_ntfy_sms_status(struct osmocom_ms *ms, struct gsm_sms *sms, uint8_t cause)
+{
+ struct mobile_prim *prim = mobile_prim_alloc(PRIM_MOB_SMS, PRIM_OP_INDICATION);
+
+ prim->u.sms.sms = *sms;
+ prim->u.sms.cause_valid = true;
+ prim->u.sms.cause = cause;
+ dispatch(ms, prim);
+}
+
static int cancel_timer(struct mobile_prim_intf *intf, struct mobile_timer_param *param)
{
struct timer_closure *closure;