update GSMTAP to version 0x02
authorHarald Welte <laforge@gnumonks.org>
Thu, 4 Mar 2010 14:02:54 +0000 (15:02 +0100)
committerHarald Welte <laforge@gnumonks.org>
Thu, 4 Mar 2010 14:02:54 +0000 (15:02 +0100)
include/osmocore/gsmtap.h

index 81b9cc0..d6d40ba 100644 (file)
@@ -1,11 +1,20 @@
 #ifndef _GSMTAP_H
 #define _GSMTAP_H
 
-/* gsmtap header, pseudo-header in front of the actua GSM payload*/
+/* gsmtap header, pseudo-header in front of the actua GSM payload */
+
+/* GSMTAP is a generic header format for GSM protocol captures,
+ * it uses the IANA-assigned UDP port number 4729 and carries
+ * payload in various formats of GSM interfaces such as Um MAC
+ * blocks or Um bursts.
+ *
+ * Example programs generating GSMTAP data are airprobe
+ * (http://airprobe.org/) or OsmocomBB (http://bb.osmocom.org/)
+ */
 
 #include <stdint.h>
 
-#define GSMTAP_VERSION         0x01
+#define GSMTAP_VERSION         0x02
 
 #define GSMTAP_TYPE_UM         0x01
 #define GSMTAP_TYPE_ABIS       0x02
 #define GSMTAP_BURST_ACCESS            0x08
 #define GSMTAP_BURST_NONE              0x09
 
-#define GSMTAP_UDP_PORT                 4729
+#define GSMTAP_CHANNEL_UNKNOWN 0x00
+#define GSMTAP_CHANNEL_BCCH    0x01
+#define GSMTAP_CHANNEL_CCCH    0x02
+#define GSMTAP_CHANNEL_RACH    0x03
+#define GSMTAP_CHANNEL_AGCH    0x04
+#define GSMTAP_CHANNEL_PCH     0x05
+#define GSMTAP_CHANNEL_SDCCH   0x06
+#define GSMTAP_CHANNEL_SDCCH4  0x07
+#define GSMTAP_CHANNEL_SDCCH8  0x08
+#define GSMTAP_CHANNEL_TCH_F   0x09
+#define GSMTAP_CHANNEL_TCH_H   0x0a
+#define GSMTAP_CHANNEL_ACCH    0x80
+
+#define GSMTAP_UDP_PORT                        4729
 
 struct gsmtap_hdr {
-       uint8_t version;                /* version, set to 0x01 currently */
-       uint8_t hdr_len;                /* length in number of 32bit words */
-       uint8_t type;                   /* see GSMTAP_TYPE_* */
-       uint8_t timeslot;               /* timeslot (0..7 on Um) */
+       uint8_t version;        /* version, set to 0x01 currently */
+       uint8_t hdr_len;        /* length in number of 32bit words */
+       uint8_t type;           /* see GSMTAP_TYPE_* */
+       uint8_t timeslot;       /* timeslot (0..7 on Um) */
 
-       uint16_t arfcn;                 /* ARFCN (frequency) */
-       uint8_t noise_db;               /* noise figure in dB */
-       uint8_t signal_db;              /* signal level in dB */
+       uint16_t arfcn;         /* ARFCN (frequency) */
+       int8_t signal_dbm;      /* signal level in dBm */
+       int8_t snr_db;          /* signal/noise ratio in dB */
 
-       uint32_t frame_number;          /* GSM Frame Number (FN) */
+       uint32_t frame_number;  /* GSM Frame Number (FN) */
 
-       uint8_t burst_type;             /* Type of burst, see above */
-       uint8_t antenna_nr;             /* Antenna Number */
-       uint16_t res;                   /* reserved for future use (RFU) */
+       uint8_t sub_type;       /* Type of burst/channel, see above */
+       uint8_t antenna_nr;     /* Antenna Number */
+       uint8_t sub_slot;       /* sub-slot within timeslot */
+       uint8_t res;            /* reserved for future use (RFU) */
 
 } __attribute__((packed));
 
-
-/* PCAP related definitions */
-#define TCPDUMP_MAGIC   0xa1b2c3d4
-#ifndef LINKTYPE_GSMTAP
-#define LINKTYPE_GSMTAP        2342
-#endif
-struct pcap_timeval {
-       int32_t tv_sec;
-       int32_t tv_usec;
-};
-
-struct pcap_sf_pkthdr {
-       struct pcap_timeval ts;         /* time stamp */
-       uint32_t caplen;                /* lenght of portion present */
-       uint32_t len;                   /* length of this packet */
-};
-
 #endif /* _GSMTAP_H */