blob: 3305e3e614e261f8302d95153001780d48aa84c6 [file] [log] [blame]
Daniel Willmann8b3390e2008-12-28 00:31:09 +00001#ifndef _GSM_04_11_H
2#define _GSM_04_11_H
3
Pablo Neira Ayuso136f4532011-03-22 16:47:59 +01004#include <osmocom/gsm/protocol/gsm_04_11.h>
Harald Welte7e310b12009-03-30 20:56:32 +00005
Harald Welte2483f1b2016-06-19 18:06:02 +02006struct vlr_subscr;
7struct gsm_subscriber_connection;
8struct gsm_trans;
9
Holger Hans Peter Freyther6a3d7652010-06-15 12:03:10 +080010#define UM_SAPI_SMS 3 /* See GSM 04.05/04.06 */
11
Daniel Willmann6fe997e2008-12-29 04:20:41 +000012/* SMS deliver PDU */
13struct sms_deliver {
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020014 uint8_t mti:2; /* message type indicator */
15 uint8_t mms:1; /* more messages to send */
16 uint8_t rp:1; /* reply path */
17 uint8_t udhi:1; /* user data header indicator */
18 uint8_t sri:1; /* status report indication */
19 uint8_t *orig_addr; /* originating address */
20 uint8_t pid; /* protocol identifier */
21 uint8_t dcs; /* data coding scheme */
Harald Welteb9c758b2009-07-05 14:02:46 +020022 /* service centre time stamp */
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020023 uint8_t ud_len; /* user data length */
24 uint8_t *user_data; /* user data */
Harald Welteb9c758b2009-07-05 14:02:46 +020025
Holger Hans Peter Freytherc42ad8b2011-04-18 17:04:00 +020026 uint8_t msg_ref; /* message reference */
27 uint8_t *smsc;
Daniel Willmann6fe997e2008-12-29 04:20:41 +000028};
29
Daniel Willmann8b3390e2008-12-28 00:31:09 +000030struct msgb;
31
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +080032int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn, struct msgb *msg);
Daniel Willmann8b3390e2008-12-28 00:31:09 +000033
Holger Hans Peter Freyther34e97492009-08-10 07:54:02 +020034struct gsm_sms *sms_alloc(void);
35void sms_free(struct gsm_sms *sms);
Harald Welte2483f1b2016-06-19 18:06:02 +020036struct gsm_sms *sms_from_text(struct vlr_subscr *receiver,
37 struct vlr_subscr *sender,
38 int dcs, const char *text);
Daniel Willmann6fe997e2008-12-29 04:20:41 +000039
Holger Hans Peter Freyther65fb0fd2009-10-22 15:39:37 +020040void _gsm411_sms_trans_free(struct gsm_trans *trans);
Harald Welte2483f1b2016-06-19 18:06:02 +020041int gsm411_send_sms_subscr(struct vlr_subscr *vsub,
Holger Hans Peter Freyther65fb0fd2009-10-22 15:39:37 +020042 struct gsm_sms *sms);
Holger Hans Peter Freyther11b28f92010-12-24 13:48:27 +010043int gsm411_send_sms(struct gsm_subscriber_connection *conn,
44 struct gsm_sms *sms);
Holger Hans Peter Freyther6a3d7652010-06-15 12:03:10 +080045void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freytherca114432014-02-08 15:20:48 +010046
Neels Hofmeyr05667a02016-05-10 13:27:32 +020047uint8_t sms_next_rp_msg_ref(uint8_t *next_rp_ref);
Pablo Neira Ayuso93ffbd02017-05-04 18:44:22 +020048
49int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref);
50int gsm411_send_rp_error(struct gsm_trans *trans, uint8_t msg_ref,
51 uint8_t cause);
52
Daniel Willmann8b3390e2008-12-28 00:31:09 +000053#endif