summaryrefslogtreecommitdiffstats
path: root/include/b_fmt.h
blob: 199866494522f225f23a8ad539bf9e1783c9985b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * DECT B-Format messages
 *
 * Copyright (c) 2009-2010 Patrick McHardy <kaber@trash.net>
 */
#ifndef _LIBDECT_B_FMT_H
#define _LIBDECT_B_FMT_H

struct dect_short_page_msg {
	uint8_t		hdr;
	__be16		information;
} __packed;

struct dect_full_page_msg {
	uint8_t		hdr;
	__be32		information;
} __packed;

/*
 * LCE request paging messages
 */

#define DECT_LCE_PAGE_W_FLAG	0x08
#define DECT_LCE_PAGE_HDR_MASK	0x07

/**
 * @DECT_LCE_PAGE_U_PLANE_NONE:		no U-plane
 * @DECT_LCE_PAGE_UNKNOWN_RINGING:	Unknown MAC service type and Ringing
 * @DECT_LCE_PAGE_ESCAPE:		Escape
 * @DECT_LCE_PAGE_GENERAL_PURPOSE:	General purpose code
 * @DECT_LCE_PAGE_GENERAL_VOICE:	General purpose code for voice service
 * @DECT_LCE_PAGE_AUXILIARY:		Auxiliary code
 * @DECT_LCE_PAGE_DPRS_INITIAL_SETUP:	DPRS initial set-up code
 * @DECT_LCE_PAGE_DPRS_INITIAL_SETUP:	DPRS resume code
 */
enum lce_request_page_hdr_codes {
	DECT_LCE_PAGE_U_PLANE_NONE,
	DECT_LCE_PAGE_UNKNOWN_RINGING,
	DECT_LCE_PAGE_ESCAPE,
	DECT_LCE_PAGE_GENERAL_PURPOSE,
	DECT_LCE_PAGE_GENERAL_VOICE,
	DECT_LCE_PAGE_AUXILIARY,
	DECT_LCE_PAGE_DPRS_INITIAL_SETUP,
	DECT_LCE_PAGE_DPRS_RESUME,
};

/* Short format message: group ringing request */

#define DECT_LCE_SHORT_PAGE_RING_PATTERN_MASK	0xf000
#define DECT_LCE_SHORT_PAGE_RING_PATTERN_SHIFT	12

#define DECT_LCE_SHORT_PAGE_GROUP_MASK		0x0fff

/* Short format message: other cases */

#define DECT_LCE_SHORT_PAGE_TPUI_MASK		0xffff

/* Full format message */

enum dect_request_page_slot_types {
	DECT_LCE_PAGE_HALF_SLOT			= 0x0,
	DECT_LCE_PAGE_LONG_SLOT_J640		= 0x1,
	DECT_LCE_PAGE_LONG_SLOT_J672		= 0x2,
	DECT_LCE_PAGE_FULL_SLOT			= 0x4,
	DECT_LCE_PAGE_DOUBLE_SLOT		= 0x5,
};

enum dect_request_page_setup_info {
	DECT_LCE_PAGE_NO_SETUP_INFO		= 0x0,
	DECT_LCE_PAGE_BASIC_CONN_ATTR_OPTIONAL	= 0x1,
	DECT_LCE_PAGE_BASIC_CONN_ATTR_MANDATORY	= 0x2,
	DECT_LCE_PAGE_ADV_CONN_ATTR_MANDATORY	= 0x3,
	DECT_LCE_PAGE_B_FIELD_SIGNALLING	= 0x4,
	DECT_LCE_PAGE_B_FIELD_SIGNALLING_CF	= 0x5,
};

#define DECT_LCE_FULL_PAGE_RING_PATTERN_MASK	0x0f000000
#define DECT_LCE_FULL_PAGE_RING_PATTERN_SHIFT	24

#define DECT_LCE_FULL_PAGE_GROUP_MASK		0x00ffff00
#define DECT_LCE_FULL_PAGE_GROUP_SHIFT		8

#define DECT_LCE_FULL_PAGE_SLOT_TYPE_MASK	0xf0000000
#define DECT_LCE_FULL_PAGE_SLOT_TYPE_SHIFT	28

#define DECT_LCE_FULL_PAGE_TPUI_MASK		0x0fffff00
#define DECT_LCE_FULL_PAGE_TPUI_SHIFT		8

#define DECT_LCE_FULL_PAGE_SETUP_INFO_MASK	0x000000f0
#define DECT_LCE_FULL_PAGE_SETUP_INFO_SHIFT	4

#endif /* _LIBDECT_B_FMT_H */