diff options
Diffstat (limited to 'openbsc/src/gsm_04_80.c')
-rw-r--r-- | openbsc/src/gsm_04_80.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/openbsc/src/gsm_04_80.c b/openbsc/src/gsm_04_80.c index 4173aded6..a7c8bd7bc 100644 --- a/openbsc/src/gsm_04_80.c +++ b/openbsc/src/gsm_04_80.c @@ -314,7 +314,7 @@ struct msgb *gsm0480_create_notifySS(const char *text) return msg; } -struct msgb *gsm0480_create_unstructuredSS_Notify(const char *text) +struct msgb *gsm0480_create_unstructuredSS_Notify(int alertPattern, const char *text) { struct msgb *msg; uint8_t *seq_len_ptr, *ussd_len_ptr, *data; @@ -343,7 +343,13 @@ struct msgb *gsm0480_create_unstructuredSS_Notify(const char *text) ussd_len_ptr[0] = len; /* USSD-String } */ - seq_len_ptr[0] = 3 + 2 + ussd_len_ptr[0]; + /* alertingPattern { */ + msgb_put_u8(msg, ASN1_OCTET_STRING_TAG); + msgb_put_u8(msg, 1); + msgb_put_u8(msg, alertPattern); + /* } alertingPattern */ + + seq_len_ptr[0] = 3 + 2 + ussd_len_ptr[0] + 3; /* } SEQUENCE */ return msg; @@ -456,12 +462,12 @@ int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn, return gsm0808_submit_dtap(conn, msg, 0); } -int gsm0480_send_ussdNotify(struct gsm_subscriber_connection *conn, const char *text) +int gsm0480_send_ussdNotify(struct gsm_subscriber_connection *conn, int level, const char *text) { struct gsm48_hdr *gh; struct msgb *msg; - msg = gsm0480_create_unstructuredSS_Notify(text); + msg = gsm0480_create_unstructuredSS_Notify(level, text); if (!msg) return -1; |