src: use new libosmogsm and include/osmocom/[gsm|core] path to headers
[osmocom-bb.git] / src / host / layer23 / src / mobile / gsm48_cc.c
index 77caffe..b881205 100644 (file)
 #include <string.h>
 #include <stdlib.h>
 
-#include <osmocore/msgb.h>
-#include <osmocore/utils.h>
-#include <osmocore/gsm48.h>
-#include <osmocore/talloc.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/gsm48.h>
+#include <osmocom/core/talloc.h>
 
 #include <osmocom/bb/common/logging.h>
 #include <osmocom/bb/common/osmocom_data.h>
@@ -451,6 +451,24 @@ static int gsm48_cc_rx_status_enq(struct gsm_trans *trans, struct msgb *msg)
        return gsm48_cc_tx_status(trans, GSM48_CC_CAUSE_RESP_STATUS_INQ);
 }
 
+static int gsm48_cc_rx_status(struct gsm_trans *trans, struct msgb *msg)
+{
+       struct gsm48_hdr *gh = msgb_l3(msg);
+       unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
+       struct gsm_mncc_cause cause;
+
+       if (payload_len < 1 || payload_len < gh->data[0] + 1) {
+               LOGP(DCC, LOGL_NOTICE, "Short read of status message "
+                       "error.\n");
+               return -EINVAL;
+       }
+       gsm48_decode_cause(&cause, gh->data);
+
+       LOGP(DCC, LOGL_INFO, "received STATUS (cause %d)\n", cause.value);
+
+       return 0;
+}
+
 /*
  * process handlers (mobile originating call establish)
  */
@@ -1982,6 +2000,9 @@ static struct datastate {
        {ALL_STATES, /* 8.4 */
         GSM48_MT_CC_STATUS_ENQ, gsm48_cc_rx_status_enq},
 
+       {ALL_STATES,
+        GSM48_MT_CC_STATUS, gsm48_cc_rx_status},
+
        {ALL_STATES, /* 5.5.7.2 */
         GSM48_MT_CC_START_DTMF_ACK, gsm48_cc_rx_start_dtmf_ack},