blob: 672ffe5e9a7a33c06143c8504dd8d535e3e0a2a7 [file] [log] [blame]
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02001/*! \file gsm0480.h */
2
Sylvain Munaut12ba7782014-06-16 10:13:40 +02003#pragma once
Holger Hans Peter Freyther55aea502010-09-30 18:30:41 +08004
Tobias Engel419684e2012-03-08 13:31:52 +01005#include <osmocom/core/defs.h>
Pablo Neira Ayuso83419342011-03-22 16:36:13 +01006#include <osmocom/core/msgb.h>
7#include <osmocom/gsm/protocol/gsm_04_08.h>
8#include <osmocom/gsm/protocol/gsm_04_80.h>
Holger Hans Peter Freyther55aea502010-09-30 18:30:41 +08009
Holger Hans Peter Freyther00cb5702010-10-09 01:47:15 +080010#define MAX_LEN_USSD_STRING 31
11
Tobias Engel419684e2012-03-08 13:31:52 +010012/* deprecated */
Holger Hans Peter Freyther00cb5702010-10-09 01:47:15 +080013struct ussd_request {
Harald Welte1f87d752012-09-07 12:07:10 +020014 char text[MAX_LEN_USSD_STRING + 1];
Holger Hans Peter Freyther00cb5702010-10-09 01:47:15 +080015 uint8_t transaction_id;
16 uint8_t invoke_id;
17};
18
Tobias Engel419684e2012-03-08 13:31:52 +010019/* deprecated */
Holger Hans Peter Freytherdaa653f2010-10-11 07:56:06 +020020int gsm0480_decode_ussd_request(const struct gsm48_hdr *hdr, uint16_t len,
Tobias Engel419684e2012-03-08 13:31:52 +010021 struct ussd_request *request) OSMO_DEPRECATED("Use gsm0480_decode_ss_request() instead");
22
23struct ss_request {
24 uint8_t opcode;
25 uint8_t ss_code;
26 uint8_t ussd_text[MAX_LEN_USSD_STRING + 1];
27 uint8_t transaction_id;
28 uint8_t invoke_id;
29};
30
31int gsm0480_decode_ss_request(const struct gsm48_hdr *hdr, uint16_t len,
32 struct ss_request *request);
Holger Hans Peter Freyther00cb5702010-10-09 01:47:15 +080033
Holger Hans Peter Freytherc64970e2010-10-18 16:56:43 +020034struct msgb *gsm0480_create_ussd_resp(uint8_t invoke_id, uint8_t trans_id, const char *text);
Holger Hans Peter Freyther55aea502010-09-30 18:30:41 +080035struct msgb *gsm0480_create_unstructuredSS_Notify(int alertPattern, const char *text);
36struct msgb *gsm0480_create_notifySS(const char *text);
Neels Hofmeyrbc1d7582016-11-26 15:21:15 +010037struct msgb *gsm0480_create_ussd_notify(int level, const char *text);
38struct msgb *gsm0480_create_ussd_release_complete(void);
Holger Hans Peter Freyther55aea502010-09-30 18:30:41 +080039
40int gsm0480_wrap_invoke(struct msgb *msg, int op, int link_id);
41int gsm0480_wrap_facility(struct msgb *msg);
Neels Hofmeyr25774b92016-11-26 15:21:05 +010042
43struct gsm48_hdr *gsm0480_l3hdr_push(struct msgb *msg, uint8_t proto_discr,
44 uint8_t msg_type);