blob: abd71cf56e8378974a3ae727aefdc211bcadad24 [file] [log] [blame]
/* -*- 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"
/**
* ID_MM_MAX_MULTIPLEXED_LINKS:
*
* This is a device-specific tag that allows users to specify the maximum amount
* of multiplexed links the modem supports.
*
* An integer value greater or equal than 0 must be given. The value 0 in this
* tag completely disables the multiplexing support in the device.
*
* This setting does nothing if the modem doesn't support multiplexing, or if the
* value configured is greater than the one specified by the modem itself (e.g.
* the control protocol in use also limits this value).
*
* Since: 1.22
*/
#define ID_MM_MAX_MULTIPLEXED_LINKS "ID_MM_MAX_MULTIPLEXED_LINKS"
/*
* 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 */