blob: 30d6e4fa0d7cff7791e019b6b819f0e9e9f5b8d3 [file] [log] [blame]
Sylvain Munaut12ba7782014-06-16 10:13:40 +02001#pragma once
Holger Hans Peter Freyther0d60aa22010-07-21 05:02:33 +08002
3#include <stdint.h>
4
5/* GSM TS 04.12 definitions for Short Message Service Cell Broadcast */
6
Harald Welte61ced832014-12-30 13:18:26 +01007#define GSM412_MSG_LEN 88 /* TS 04.12 Section 3.1 */
8#define GSM412_BLOCK_LEN 22 /* TS 04.12 Section 3.1 */
9
Holger Hans Peter Freyther0d60aa22010-07-21 05:02:33 +080010#define GSM412_SEQ_FST_BLOCK 0x0
11#define GSM412_SEQ_SND_BLOCK 0x1
12#define GSM412_SEQ_TRD_BLOCK 0x2
13#define GSM412_SEQ_FTH_BLOCK 0x3
14#define GSM412_SEQ_FST_SCHED_BLOCK 0x8
Alex Badea3ba0a2b2010-11-27 20:00:39 +020015#define GSM412_SEQ_NULL_MSG 0xf
Holger Hans Peter Freyther0d60aa22010-07-21 05:02:33 +080016
17struct gsm412_block_type {
18 uint8_t seq_nr : 4,
19 lb : 1,
20 lpd : 2,
21 spare : 1;
22} __attribute__((packed));
23
Alex Badea3ba0a2b2010-11-27 20:00:39 +020024struct gsm412_sched_msg {
Holger Hans Peter Freyther0d60aa22010-07-21 05:02:33 +080025 uint8_t beg_slot_nr : 6,
26 type : 2;
27 uint8_t end_slot_nr : 6,
28 spare1 : 1, spare2: 1;
29 uint8_t cbsms_msg_map[6];
30 uint8_t data[0];
31} __attribute__((packed));