1 /*
2 * Copyright 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #pragma once
18
19 #include <cstdint>
20
21 /*
22 * Events that can be received by multiplexer as well as port state machines
23 */
24 enum tRFC_EVENT : uint16_t {
25 /*
26 * Events that can be received by multiplexer as well as port state machines
27 */
28 RFC_EVENT_SABME = 0,
29 RFC_EVENT_UA = 1,
30 RFC_EVENT_DM = 2,
31 RFC_EVENT_DISC = 3,
32 RFC_EVENT_UIH = 4,
33 RFC_EVENT_TIMEOUT = 5,
34 RFC_EVENT_BAD_FRAME = 50,
35 };
36
37 /*
38 * Multiplexer events
39 */
40 enum tRFC_MX_EVENT : uint16_t {
41 /*
42 * Multiplexer events
43 */
44 RFC_MX_EVENT_SABME = RFC_EVENT_SABME,
45 RFC_MX_EVENT_UA = RFC_EVENT_UA,
46 RFC_MX_EVENT_DM = RFC_EVENT_DM,
47 RFC_MX_EVENT_DISC = RFC_EVENT_DISC,
48 RFC_MX_EVENT_UIH = RFC_EVENT_UIH,
49 RFC_MX_EVENT_TIMEOUT = RFC_EVENT_TIMEOUT,
50 RFC_MX_EVENT_START_REQ = 6,
51 RFC_MX_EVENT_START_RSP = 7,
52 RFC_MX_EVENT_CLOSE_REQ = 8,
53 RFC_MX_EVENT_CONN_CNF = 9,
54 RFC_MX_EVENT_CONN_IND = 10,
55 RFC_MX_EVENT_CONF_CNF = 11,
56 RFC_MX_EVENT_CONF_IND = 12,
57 RFC_MX_EVENT_QOS_VIOLATION_IND = 13,
58 RFC_MX_EVENT_DISC_IND = 14,
59 };
60
61 /*
62 * Port events
63 */
64 enum tRFC_PORT_EVENT : uint16_t {
65 /*
66 * Port events
67 */
68 RFC_PORT_EVENT_SABME = RFC_EVENT_SABME,
69 RFC_PORT_EVENT_UA = RFC_EVENT_UA,
70 RFC_PORT_EVENT_DM = RFC_EVENT_DM,
71 RFC_PORT_EVENT_DISC = RFC_EVENT_DISC,
72 RFC_PORT_EVENT_UIH = RFC_EVENT_UIH,
73 RFC_PORT_EVENT_TIMEOUT = RFC_EVENT_TIMEOUT,
74 RFC_PORT_EVENT_OPEN = 9,
75 RFC_PORT_EVENT_ESTABLISH_RSP = 11,
76 RFC_PORT_EVENT_CLOSE = 12,
77 RFC_PORT_EVENT_CLEAR = 13,
78 RFC_PORT_EVENT_DATA = 14,
79 RFC_PORT_EVENT_SEC_COMPLETE = 15,
80 };
81
82 #define CASE_RETURN_TEXT(code) \
83 case code: \
84 return #code
85
86 // Common events for both port and mux
rfcomm_event_text(const tRFC_EVENT & event)87 inline std::string rfcomm_event_text(const tRFC_EVENT& event) {
88 switch (event) {
89 CASE_RETURN_TEXT(RFC_EVENT_SABME);
90 CASE_RETURN_TEXT(RFC_EVENT_UA);
91 CASE_RETURN_TEXT(RFC_EVENT_DM);
92 CASE_RETURN_TEXT(RFC_EVENT_DISC);
93 CASE_RETURN_TEXT(RFC_EVENT_UIH);
94 CASE_RETURN_TEXT(RFC_EVENT_TIMEOUT);
95 CASE_RETURN_TEXT(RFC_EVENT_BAD_FRAME);
96 default:
97 return std::string("UNKNOWN[") + std::to_string(event) + std::string("]");
98 }
99 }
100
rfcomm_mx_event_text(const tRFC_MX_EVENT & event)101 inline std::string rfcomm_mx_event_text(const tRFC_MX_EVENT& event) {
102 switch (event) {
103 CASE_RETURN_TEXT(RFC_MX_EVENT_SABME);
104 CASE_RETURN_TEXT(RFC_MX_EVENT_UA);
105 CASE_RETURN_TEXT(RFC_MX_EVENT_DM);
106 CASE_RETURN_TEXT(RFC_MX_EVENT_DISC);
107 CASE_RETURN_TEXT(RFC_MX_EVENT_UIH);
108 CASE_RETURN_TEXT(RFC_MX_EVENT_TIMEOUT);
109 CASE_RETURN_TEXT(RFC_MX_EVENT_START_REQ);
110 CASE_RETURN_TEXT(RFC_MX_EVENT_START_RSP);
111 CASE_RETURN_TEXT(RFC_MX_EVENT_CLOSE_REQ);
112 CASE_RETURN_TEXT(RFC_MX_EVENT_CONN_CNF);
113 CASE_RETURN_TEXT(RFC_MX_EVENT_CONN_IND);
114 CASE_RETURN_TEXT(RFC_MX_EVENT_CONF_CNF);
115 CASE_RETURN_TEXT(RFC_MX_EVENT_CONF_IND);
116 CASE_RETURN_TEXT(RFC_MX_EVENT_QOS_VIOLATION_IND);
117 CASE_RETURN_TEXT(RFC_MX_EVENT_DISC_IND);
118 default:
119 return std::string("UNKNOWN[") + std::to_string(event) + std::string("]");
120 }
121 }
122
rfcomm_port_event_text(const tRFC_PORT_EVENT & event)123 inline std::string rfcomm_port_event_text(const tRFC_PORT_EVENT& event) {
124 switch (event) {
125 CASE_RETURN_TEXT(RFC_PORT_EVENT_SABME);
126 CASE_RETURN_TEXT(RFC_PORT_EVENT_UA);
127 CASE_RETURN_TEXT(RFC_PORT_EVENT_DM);
128 CASE_RETURN_TEXT(RFC_PORT_EVENT_DISC);
129 CASE_RETURN_TEXT(RFC_PORT_EVENT_UIH);
130 CASE_RETURN_TEXT(RFC_PORT_EVENT_TIMEOUT);
131 CASE_RETURN_TEXT(RFC_PORT_EVENT_OPEN);
132 CASE_RETURN_TEXT(RFC_PORT_EVENT_ESTABLISH_RSP);
133 CASE_RETURN_TEXT(RFC_PORT_EVENT_CLOSE);
134 CASE_RETURN_TEXT(RFC_PORT_EVENT_CLEAR);
135 CASE_RETURN_TEXT(RFC_PORT_EVENT_DATA);
136 CASE_RETURN_TEXT(RFC_PORT_EVENT_SEC_COMPLETE);
137 default:
138 return std::string("UNKNOWN[") + std::to_string(event) + std::string("]");
139 }
140 }
141
142 #undef CASE_RETURN_TEXT
143