further steps towards better, transaction based SMS
diff --git a/openbsc/include/openbsc/gsm_04_11.h b/openbsc/include/openbsc/gsm_04_11.h
index 4f45357..54b44c0 100644
--- a/openbsc/include/openbsc/gsm_04_11.h
+++ b/openbsc/include/openbsc/gsm_04_11.h
@@ -3,6 +3,21 @@
/* GSM TS 04.11 definitions */
+/* Chapter 5.2.3: SMC-CS states at the network side */
+enum gsm411_cp_state {
+ GSM411_CPS_IDLE = 0,
+ GSM411_CPS_MM_CONN_PENDING = 1, /* only MT ! */
+ GSM411_CPS_WAIT_CP_ACK = 2,
+ GSM411_CPS_MM_ESTABLISHED = 3,
+};
+
+/* Chapter 6.2.2: SMR states at the network side */
+enum gsm411_rp_state {
+ GSM411_RPS_IDLE = 0,
+ GSM411_RPS_WAIT_FOR_RP_ACK = 1,
+ GSM411_RPS_WAIT_TO_TX_RP_ACK = 3,
+};
+
/* Chapter 8.1.2 (refers to GSM 04.07 Chapter 11.2.3.1.1 */
#define GSM411_PDISC_SMS 0x09
@@ -73,6 +88,11 @@
GSM411_RP_CAUSE_PROTOCOL_ERR = 111,
};
+/* Chapter 10: Timers */
+#define GSM411_TMR_TR1M 40 /* 35 < x < 45 seconds */
+#define GSM411_TMR_TRAM 30 /* 25 < x < 35 seconds */
+#define GSM411_TMR_TR2M 15 /* 12 < x < 20 seconds */
+
/* Chapter 8.2.1 */
struct gsm411_rp_hdr {
u_int8_t len;
@@ -184,7 +204,6 @@
#define GSM338_DCS_1111_CLASS2_SIM 2
#define GSM338_DCS_1111_CLASS3_TE 3 /* See TS 07.05 */
-
/* SMS deliver PDU */
struct sms_deliver {
u_int8_t mti:2; /* message type indicator */
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 7ada2a1..20e62c3 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -351,6 +351,11 @@
struct gsm_subscriber *receiver;
unsigned long validity_minutes;
+ unsigned char reply_path_req;
+ unsigned char status_rep_req;
+ unsigned char protocol_id;
+ unsigned char data_coding_scheme;
+
unsigned int header_len;
unsigned char header[SMS_HDR_SIZE];
char text[SMS_TEXT_SIZE];
diff --git a/openbsc/include/openbsc/transaction.h b/openbsc/include/openbsc/transaction.h
index c51be81..ad6fe35 100644
--- a/openbsc/include/openbsc/transaction.h
+++ b/openbsc/include/openbsc/transaction.h
@@ -39,6 +39,7 @@
struct gsm_mncc msg; /* stores setup/disconnect/release message */
} cc;
struct {
+ int is_mt; /* is this a MO (0) or MT (1) transfer */
enum gsm411_cp_state cp_state;
enum gsm411_rp_state rp_state;