libosmogsm
0.10.2.279.178b
Osmocom GSM library
|
#include <osmocom/core/defs.h>
#include <osmocom/core/msgb.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/protocol/gsm_04_80.h>
Go to the source code of this file.
Data Structures | |
struct | ussd_request |
struct | ss_request |
This structure represents some meaningful parts of a decoded and/or to be encoded GSM 04.80 message. More... | |
Macros | |
#define | GSM0480_USSD_OCTET_STRING_LEN 160 |
According to the GSM 04.80 (version 5.0.0) specification Annex A "Expanded ASN.1 Module "SS-Protocol", the maximum size of a USSD OCTET STRING field is 160 bytes. More... | |
#define | GSM0480_USSD_7BIT_STRING_LEN 182 |
Thus according to ETSI TS 123 038 (version 10.0.0) specification 6.1.2.3 "USSD packing of 7 bit characters", in 160 octets, it's possible to pack (160 * 8) / 7 = 182.8, that is 182 characters. More... | |
#define | MAX_LEN_USSD_STRING 31 |
DEPRECATED: this definition doesn't follow any specification, so we only keep it for compatibility reasons. More... | |
Functions | |
int | gsm0480_decode_ussd_request (const struct gsm48_hdr *hdr, uint16_t len, struct ussd_request *request) OSMO_DEPRECATED("Use gsm0480_decode_ss_request() instead") |
int | gsm0480_decode_ss_request (const struct gsm48_hdr *hdr, uint16_t len, struct ss_request *request) |
struct msgb * | gsm0480_create_ussd_resp (uint8_t invoke_id, uint8_t trans_id, const char *text) |
struct msgb * | gsm0480_create_unstructuredSS_Notify (int alertPattern, const char *text) |
struct msgb * | gsm0480_create_notifySS (const char *text) |
struct msgb * | gsm0480_create_ussd_notify (int level, const char *text) |
struct msgb * | gsm0480_create_ussd_release_complete (void) |
int | gsm0480_wrap_invoke (struct msgb *msg, int op, int link_id) |
int | gsm0480_wrap_facility (struct msgb *msg) |
struct gsm48_hdr * | gsm0480_l3hdr_push (struct msgb *msg, uint8_t proto_discr, uint8_t msg_type) |
#define GSM0480_USSD_7BIT_STRING_LEN 182 |
Thus according to ETSI TS 123 038 (version 10.0.0) specification 6.1.2.3 "USSD packing of 7 bit characters", in 160 octets, it's possible to pack (160 * 8) / 7 = 182.8, that is 182 characters.
The remaining 6 bits are set to zero.
#define GSM0480_USSD_OCTET_STRING_LEN 160 |
According to the GSM 04.80 (version 5.0.0) specification Annex A "Expanded ASN.1 Module "SS-Protocol", the maximum size of a USSD OCTET STRING field is 160 bytes.
Referenced by parse_process_uss_data(), and parse_process_uss_req().
#define MAX_LEN_USSD_STRING 31 |
DEPRECATED: this definition doesn't follow any specification, so we only keep it for compatibility reasons.
It's strongly recommended to use correct definitions above.
struct msgb* gsm0480_create_notifySS | ( | const char * | text | ) |
References data, GSM_0480_SEQUENCE_TAG, gsm_7bit_encode_n_ussd(), len, length, msgb_alloc_headroom(), msgb_put(), msgb_put_u8(), msgb_tailroom(), parse_facility_ie(), parse_process_uss_data(), parse_process_uss_req(), parse_ss(), parse_ss_facility(), parse_ss_for_bs_req(), parse_ss_info_elements(), parse_ss_invoke(), and parse_ss_return_result().
struct msgb* gsm0480_create_unstructuredSS_Notify | ( | int | alertPattern, |
const char * | text | ||
) |
References ASN1_OCTET_STRING_TAG, data, GSM_0480_SEQUENCE_TAG, gsm_7bit_encode_n_ussd(), len, msgb_alloc_headroom(), msgb_put(), msgb_put_u8(), and msgb_tailroom().
Referenced by gsm0480_create_ussd_notify().
struct msgb* gsm0480_create_ussd_notify | ( | int | level, |
const char * | text | ||
) |
struct msgb* gsm0480_create_ussd_release_complete | ( | void | ) |
References gsm0480_l3hdr_push(), GSM0480_MTYPE_RELEASE_COMPLETE, GSM48_PDISC_NC_SS, and msgb_alloc_headroom().
struct msgb* gsm0480_create_ussd_resp | ( | uint8_t | invoke_id, |
uint8_t | trans_id, | ||
const char * | text | ||
) |
References ASN1_OCTET_STRING_TAG, GSM0480_COMPIDTAG_INVOKE_ID, GSM0480_CTYPE_RETURN_RESULT, GSM0480_IE_FACILITY, gsm0480_l3hdr_push(), GSM0480_MTYPE_RELEASE_COMPLETE, GSM0480_OP_CODE_PROCESS_USS_REQ, GSM0480_OPERATION_CODE, GSM48_PDISC_NC_SS, GSM_0480_SEQUENCE_TAG, gsm_7bit_encode_n_ussd(), msgb_alloc_headroom(), msgb_push_TLV1(), msgb_put(), msgb_tailroom(), and msgb_wrap_with_TL().
int gsm0480_decode_ss_request | ( | const struct gsm48_hdr * | hdr, |
uint16_t | len, | ||
struct ss_request * | request | ||
) |
Check Protocol Discriminator see TS GSM 04.07 and GSM 04.80
References gsm48_hdr_pdisc(), GSM48_PDISC_NC_SS, LOGL_ERROR, LOGP, parse_ss(), pdisc, gsm48_hdr::proto_discr, and ss_request::transaction_id.
int gsm0480_decode_ussd_request | ( | const struct gsm48_hdr * | hdr, |
uint16_t | len, | ||
struct ussd_request * | request | ||
) |
References msg_type, gsm48_hdr::msg_type, msgb_push(), proto_discr, and gsm48_hdr::proto_discr.
Referenced by gsm0480_create_ussd_notify(), gsm0480_create_ussd_release_complete(), gsm0480_create_ussd_resp(), and gsm411_push_cp_header().
int gsm0480_wrap_facility | ( | struct msgb * | msg | ) |
References GSM0480_IE_FACILITY, and msgb_wrap_with_TL().
Referenced by gsm0480_create_ussd_notify().
int gsm0480_wrap_invoke | ( | struct msgb * | msg, |
int | op, | ||
int | link_id | ||
) |
References GSM0480_COMPIDTAG_INVOKE_ID, GSM0480_CTYPE_INVOKE, GSM0480_OPERATION_CODE, msgb_push_TLV1(), and msgb_wrap_with_TL().
Referenced by gsm0480_create_ussd_notify().