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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
*
* Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
*/
/*
* NOTE! this file is NOT part of the installed ModemManager API.
*
* We keep this file under include/ because we want to build and
* expose the associated documentation.
*/
#ifndef MM_TAGS_H
#define MM_TAGS_H
/**
* SECTION:mm-tags
* @short_description: generic udev tags supported
*
* This section defines generic udev tags that are used by ModemManager,
* associated to full devices or to specific ports in a given device.
*/
/**
* ID_MM_CANDIDATE:
*
* This is a port-specific tag added automatically when all other
* ModemManager related tags have already been set.
*
* Since: 1.10
*/
#define ID_MM_CANDIDATE "ID_MM_CANDIDATE"
/**
* ID_MM_PHYSDEV_UID:
*
* This is a device-specific tag that allows users to 'name' modem
* devices with a predefined 'unique ID' string.
*
* When this tag is given per-port, the daemon will consider that all
* ports with the same UID value are associated to the same device.
* This is useful for e.g. modems that expose multiple RS232 ports
* connected to the system via different platform ports (or USB to
* RS232 adapters).
*
* This UID is exposed in
* the '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Modem.Device">Device</link>'
* property and can then be used in mmcli calls to refer unequivocally
* to a specific device, regardless of its modem index, e.g.:
* $ mmcli --modem=UID ...
*
* Since: 1.10
*/
#define ID_MM_PHYSDEV_UID "ID_MM_PHYSDEV_UID"
/**
* ID_MM_DEVICE_PROCESS:
*
* This is a device-specific tag that allows explicitly requesting the
* processing of all ports exposed by the device. This tag is usually
* used by users when the daemon runs with ALLOWLIST-ONLY filter policy
* type, and is associated to the MM_FILTER_RULE_EXPLICIT_ALLOWLIST rule.
*
* This tag may also be specified in specific ports, e.g. when the modem
* exposes a single platform port without any parent device.
*
* Since: 1.10
*/
#define ID_MM_DEVICE_PROCESS "ID_MM_DEVICE_PROCESS"
/**
* ID_MM_DEVICE_IGNORE:
*
* This is a device-specific tag that allows explicitly requesting to
* ignore all ports exposed by the device.
*
* This tag was originally applicable to TTY ports and only when running
* in certain filter policy types. Since 1.12, this tag applies to all
* filter types and to all port types (not only TTYs), and is associated
* to the MM_FILTER_RULE_EXPLICIT_BLOCKLIST rule.
*
* Since: 1.10
*/
#define ID_MM_DEVICE_IGNORE "ID_MM_DEVICE_IGNORE"
/**
* ID_MM_PORT_IGNORE:
*
* This is a port-specific tag that allows explicitly ignoring a given port
* in a device.
*
* This tag applies to all types of ports.
*
* Since: 1.10
*/
#define ID_MM_PORT_IGNORE "ID_MM_PORT_IGNORE"
/**
* ID_MM_PORT_TYPE_AT_PRIMARY:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are AT ports to be used as primary control ports.
*
* This tag will also prevent QCDM probing on the port.
*
* Since: 1.10
*/
#define ID_MM_PORT_TYPE_AT_PRIMARY "ID_MM_PORT_TYPE_AT_PRIMARY"
/**
* ID_MM_PORT_TYPE_AT_SECONDARY:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are AT ports to be used as secondary control ports.
*
* This tag will also prevent QCDM probing on the port.
*
* Since: 1.10
*/
#define ID_MM_PORT_TYPE_AT_SECONDARY "ID_MM_PORT_TYPE_AT_SECONDARY"
/**
* ID_MM_PORT_TYPE_AT_GPS_CONTROL:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are AT ports to be used for GPS control. Depending on the device,
* this may or may not mean the same port is also used fo GPS data.
*
* This tag will also prevent QCDM probing on the port.
*
* Since: 1.20
*/
#define ID_MM_PORT_TYPE_AT_GPS_CONTROL "ID_MM_PORT_TYPE_AT_GPS_CONTROL"
/**
* ID_MM_PORT_TYPE_AT_PPP:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are AT ports to be used as data ports exclusively.
*
* This tag will also prevent QCDM probing on the port.
*
* Since: 1.10
*/
#define ID_MM_PORT_TYPE_AT_PPP "ID_MM_PORT_TYPE_AT_PPP"
/**
* ID_MM_PORT_TYPE_QCDM:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are QCDM ports.
*
* The only purpose of this tag is to prevent AT probing in the port.
*
* Since: 1.10
*/
#define ID_MM_PORT_TYPE_QCDM "ID_MM_PORT_TYPE_QCDM"
/**
* ID_MM_PORT_TYPE_GPS:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are GPS data ports where we expect to receive NMEA traces.
*
* This tag also prevents AT and QCDM probing in the port.
*
* Since: 1.10
*/
#define ID_MM_PORT_TYPE_GPS "ID_MM_PORT_TYPE_GPS"
/**
* ID_MM_PORT_TYPE_AUDIO:
*
* This is a port-specific tag applied to TTYs that we know in advance
* are audio ports.
*
* This tag also prevents AT and QCDM probing in the port.
*
* Since: 1.12
*/
#define ID_MM_PORT_TYPE_AUDIO "ID_MM_PORT_TYPE_AUDIO"
/**
* ID_MM_PORT_TYPE_QMI:
*
* This is a port-specific tag applied to generic ports that we know in advance
* are QMI ports.
*
* This tag will also prevent other types of probing (e.g. AT, MBIM) on the
* port.
*
* This tag is not required for QMI ports exposed by the qmi_wwan driver.
*
* Since: 1.16
*/
#define ID_MM_PORT_TYPE_QMI "ID_MM_PORT_TYPE_QMI"
/**
* ID_MM_PORT_TYPE_MBIM:
*
* This is a port-specific tag applied to generic ports that we know in advance
* are MBIM ports.
*
* This tag will also prevent other types of probing (e.g. AT, QMI) on the
* port.
*
* This tag is not required for MBIM ports exposed by the cdc_mbim driver.
*
* Since: 1.16
*/
#define ID_MM_PORT_TYPE_MBIM "ID_MM_PORT_TYPE_MBIM"
/**
* ID_MM_TTY_BAUDRATE:
*
* This is a port-specific tag applied to TTYs that require a specific
* baudrate to work. USB modems will usually allow auto-bauding
* configuration, so this tag is really only meaningful to true RS232
* devices.
*
* The value of the tag should be the number of bauds per second to
* use when talking to the port, e.g. "115200". If not given, the
* default of 57600bps is assumed.
*
* Since: 1.10
*/
#define ID_MM_TTY_BAUDRATE "ID_MM_TTY_BAUDRATE"
/**
* ID_MM_TTY_FLOW_CONTROL:
*
* This is a port-specific tag applied to TTYs that require a specific
* flow control mechanism to work not only in data mode but also in
* control mode.
*
* The value of the tag should be either 'none', 'xon-xoff' or
* 'rts-cts', and must be a flow control value supported by the device
* where it's configured. If not given, it is assumed that the TTYs
* don't require any specific flow control setting in command mode.
*
* Since: 1.10
*/
#define ID_MM_TTY_FLOW_CONTROL "ID_MM_TTY_FLOW_CONTROL"
/**
* ID_MM_REQUIRED:
*
* This is a port-specific tag that allows users to specify that the modem
* must be able to successfully probe and use the given control port.
*
* If this tag is set and the port probing procedure fails, the modem object
* will not be created, which is the same as if the port didn't exist in the
* first place.
*
* E.g. this tag may be set on a QMI control port if we want to make sure the
* modem object exposed by ModemManager is QMI-capable and never an AT-based
* modem created due to falling back on a failed QMI port probing procedure.
*
* Since: 1.22
*/
#define ID_MM_REQUIRED "ID_MM_REQUIRED"
/*
* The following symbols are deprecated. We don't add them to -compat
* because this -tags file is not really part of the installed API.
*/
#ifndef MM_DISABLE_DEPRECATED
/**
* ID_MM_TTY_BLACKLIST:
*
* This was a device-specific tag that allowed explicitly blacklisting
* devices that exposed TTY devices so that they were never probed.
*
* This tag was applicable only when running in certain filter policy types,
* and is no longer used since 1.18.
*
* Since: 1.12
* Deprecated: 1.18.0
*/
#define ID_MM_TTY_BLACKLIST "ID_MM_TTY_BLACKLIST"
/**
* ID_MM_TTY_MANUAL_SCAN_ONLY:
*
* This was a device-specific tag that allowed explicitly allowlisting
* devices that exposed TTY devices so that they were never probed
* automatically. Instead, an explicit manual scan request could
* be sent to the daemon so that the TTY ports exposed by the device
* were probed.
*
* This tag was applicable only when running in certain filter policy types,
* and is no longer used since 1.18.
*
* Since: 1.12
* Deprecated: 1.18.0
*/
#define ID_MM_TTY_MANUAL_SCAN_ONLY "ID_MM_TTY_MANUAL_SCAN_ONLY"
#endif
#endif /* MM_TAGS_H */
|