sdbus-modemmanager 1.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sdbus-modemmanager might be problematic. Click here for more details.
- sdbus_async/modemmanager/__init__.py +49 -0
- sdbus_async/modemmanager/enums.py +247 -0
- sdbus_async/modemmanager/interfaces_bearer.py +125 -0
- sdbus_async/modemmanager/interfaces_call.py +95 -0
- sdbus_async/modemmanager/interfaces_modem.py +552 -0
- sdbus_async/modemmanager/interfaces_root.py +39 -0
- sdbus_async/modemmanager/interfaces_sim.py +130 -0
- sdbus_async/modemmanager/interfaces_sms.py +97 -0
- sdbus_async/modemmanager/objects.py +204 -0
- sdbus_async/modemmanager/py.typed +0 -0
- sdbus_block/modemmanager/__init__.py +49 -0
- sdbus_block/modemmanager/enums.py +247 -0
- sdbus_block/modemmanager/interfaces_bearer.py +93 -0
- sdbus_block/modemmanager/interfaces_call.py +88 -0
- sdbus_block/modemmanager/interfaces_modem.py +418 -0
- sdbus_block/modemmanager/interfaces_root.py +39 -0
- sdbus_block/modemmanager/interfaces_sim.py +130 -0
- sdbus_block/modemmanager/interfaces_sms.py +97 -0
- sdbus_block/modemmanager/objects.py +193 -0
- sdbus_block/modemmanager/py.typed +0 -0
- sdbus_modemmanager-1.0.2.dist-info/COPYING.LESSER +502 -0
- sdbus_modemmanager-1.0.2.dist-info/METADATA +48 -0
- sdbus_modemmanager-1.0.2.dist-info/RECORD +25 -0
- sdbus_modemmanager-1.0.2.dist-info/WHEEL +5 -0
- sdbus_modemmanager-1.0.2.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
2
|
+
|
|
3
|
+
from sdbus import DbusInterfaceCommon, DbusObjectManagerInterface, dbus_method, dbus_property
|
|
4
|
+
|
|
5
|
+
from .enums import MMModemPowerState, MMModemState, MMModemStateFailedReason, MMModemAccessTechnology, MMModemCapability
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class MMModemsInterface(DbusObjectManagerInterface):
|
|
9
|
+
"""
|
|
10
|
+
Modem objects are exported in DBus with the following path base: /org/freedesktop/ModemManager1/Modems/#, where #
|
|
11
|
+
indicates a unique unsigned integer which identifies the object.
|
|
12
|
+
|
|
13
|
+
The Modem objects will export a generic Modem interface which includes common features and actions applicable to
|
|
14
|
+
most modem types. This interface, among other actions, allows the management (creation, listing, deletion) of B
|
|
15
|
+
earer objects which can then be used to request the modem to get in connected state.
|
|
16
|
+
|
|
17
|
+
Modem objects will also export the generic Simple interface. This interface provides an easy access to the most
|
|
18
|
+
simple and common operations that may be performed with the modem, including connection and disconnection. Users
|
|
19
|
+
of the Simple interface do not need to take care of getting the modem registered, and they also don't need to manage
|
|
20
|
+
the creation of bearers themselves. All the logic required to get the modem connected or disconnected is handled
|
|
21
|
+
by the Simple interface.
|
|
22
|
+
|
|
23
|
+
Modems with specific 3GPP and/or CDMA capabilities will export modem type specific interfaces, like the 3GPP
|
|
24
|
+
interface or the CDMA interface.
|
|
25
|
+
"""
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class MMModemInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Modem'):
|
|
30
|
+
"""Main modem manager interface"""
|
|
31
|
+
|
|
32
|
+
@dbus_method(input_signature='b')
|
|
33
|
+
def enable(self, enable: bool = True) -> None:
|
|
34
|
+
"""
|
|
35
|
+
Enable or disable the modem.
|
|
36
|
+
|
|
37
|
+
When enabled, the modem's radio is powered on and data sessions, voice calls, location services, and Short Message Service may be available.
|
|
38
|
+
When disabled, the modem enters low-power state and no network-related operations are available.
|
|
39
|
+
|
|
40
|
+
:param enable: True to enable the modem and False to disable it.
|
|
41
|
+
"""
|
|
42
|
+
raise NotImplementedError
|
|
43
|
+
|
|
44
|
+
@dbus_property('o', property_name='Sim')
|
|
45
|
+
def sim_object_path(self) -> str:
|
|
46
|
+
"""The path of the SIM object available in this device, if any."""
|
|
47
|
+
raise NotImplementedError
|
|
48
|
+
|
|
49
|
+
@dbus_property('o', property_name='Bearers')
|
|
50
|
+
def bearer_object_paths(self) -> List[str]:
|
|
51
|
+
"""
|
|
52
|
+
The list of bearer object paths (EPS Bearers, PDP Contexts, or CDMA2000 Packet Data Sessions) as requested by
|
|
53
|
+
the user.
|
|
54
|
+
This list does not include the initial EPS bearer details (see "InitialEpsBearer").
|
|
55
|
+
"""
|
|
56
|
+
raise NotImplementedError
|
|
57
|
+
|
|
58
|
+
@dbus_property('s')
|
|
59
|
+
def manufacturer(self) -> str:
|
|
60
|
+
"""The equipment manufacturer, as reported by the modem."""
|
|
61
|
+
raise NotImplementedError
|
|
62
|
+
|
|
63
|
+
@dbus_property('s')
|
|
64
|
+
def model(self) -> str:
|
|
65
|
+
"""The equipment model, as reported by the modem."""
|
|
66
|
+
raise NotImplementedError
|
|
67
|
+
|
|
68
|
+
@dbus_property('s', property_name='Revision')
|
|
69
|
+
def revision(self) -> str:
|
|
70
|
+
"""The revision identification of the software, as reported by the modem."""
|
|
71
|
+
raise NotImplementedError
|
|
72
|
+
|
|
73
|
+
@dbus_property('s')
|
|
74
|
+
def hardware_revision(self) -> str:
|
|
75
|
+
"""The revision identification of the hardware, as reported by the modem."""
|
|
76
|
+
raise NotImplementedError
|
|
77
|
+
|
|
78
|
+
@dbus_property('s')
|
|
79
|
+
def device_identifier(self) -> str:
|
|
80
|
+
"""
|
|
81
|
+
A best-effort device identifier based on various device information like model name, firmware revision,
|
|
82
|
+
USB/PCI/PCMCIA IDs, and other properties.
|
|
83
|
+
This ID is not guaranteed to be unique and may be shared between identical devices with the same firmware, but
|
|
84
|
+
is intended to be "unique enough" for use as a casual device identifier for various user experience operations.
|
|
85
|
+
This is not the device's IMEI or ESN since those may not be available before unlocking the device via a PIN.
|
|
86
|
+
"""
|
|
87
|
+
raise NotImplementedError
|
|
88
|
+
|
|
89
|
+
@dbus_property('s')
|
|
90
|
+
def primary_port(self) -> str:
|
|
91
|
+
"""The name of the primary port using to control the modem."""
|
|
92
|
+
raise NotImplementedError
|
|
93
|
+
|
|
94
|
+
@dbus_property('s')
|
|
95
|
+
def equipment_identifier(self) -> str:
|
|
96
|
+
"""
|
|
97
|
+
The identity of the device.
|
|
98
|
+
This will be the IMEI number for GSM devices and the hex-format ESN/MEID for CDMA devices.
|
|
99
|
+
"""
|
|
100
|
+
raise NotImplementedError
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def imei(self):
|
|
104
|
+
return self.equipment_identifier
|
|
105
|
+
|
|
106
|
+
@dbus_property('i')
|
|
107
|
+
def state(self) -> int:
|
|
108
|
+
"""
|
|
109
|
+
Overall state of the modem, given as a MMModemState value.
|
|
110
|
+
If the device's state cannot be determined, MM_MODEM_STATE_UNKNOWN will be reported.
|
|
111
|
+
"""
|
|
112
|
+
raise NotImplementedError
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def state_text(self) -> str:
|
|
116
|
+
return MMModemState(self.state).name
|
|
117
|
+
|
|
118
|
+
@dbus_property('u')
|
|
119
|
+
def state_failed_reason(self):
|
|
120
|
+
"""
|
|
121
|
+
Error specifying why the modem is in MM_MODEM_STATE_FAILED state,
|
|
122
|
+
given as a MMModemStateFailedReason value.
|
|
123
|
+
"""
|
|
124
|
+
raise NotImplementedError
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def state_failed_reason_text(self) -> str:
|
|
128
|
+
return MMModemStateFailedReason(self.state_failed_reason).name
|
|
129
|
+
|
|
130
|
+
@dbus_property('ub')
|
|
131
|
+
def signal_quality(self):
|
|
132
|
+
"""
|
|
133
|
+
Signal quality in percent (0 - 100) of the dominant access technology the device is using to communicate with the network. Always 0 for POTS devices.
|
|
134
|
+
The additional boolean value indicates if the quality value given was recently taken.
|
|
135
|
+
"""
|
|
136
|
+
raise NotImplementedError
|
|
137
|
+
|
|
138
|
+
@dbus_property('as')
|
|
139
|
+
def own_numbers(self):
|
|
140
|
+
"""List of numbers (e.g. MSISDN in 3GPP) being currently handled by this modem."""
|
|
141
|
+
raise NotImplementedError
|
|
142
|
+
|
|
143
|
+
@dbus_property('u')
|
|
144
|
+
def power_state(self):
|
|
145
|
+
"""A MMModemPowerState value specifying the current power state of the modem."""
|
|
146
|
+
raise NotImplementedError
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def power_state_text(self):
|
|
150
|
+
return MMModemPowerState(self.power_state).name
|
|
151
|
+
|
|
152
|
+
@dbus_property('u')
|
|
153
|
+
def access_technologies(self):
|
|
154
|
+
"""
|
|
155
|
+
A MMModemAccessTechnology bitfield that describes the various access technologies
|
|
156
|
+
that device uses when registered with or connected to a network
|
|
157
|
+
"""
|
|
158
|
+
raise NotImplementedError
|
|
159
|
+
|
|
160
|
+
@property
|
|
161
|
+
def access_technologies_text(self) -> Optional[str]:
|
|
162
|
+
return MMModemAccessTechnology(self.access_technologies).name
|
|
163
|
+
|
|
164
|
+
@dbus_property('u', property_name='CurrentCapabilities')
|
|
165
|
+
def current_capabilities(self) -> int:
|
|
166
|
+
raise NotImplementedError
|
|
167
|
+
|
|
168
|
+
@property
|
|
169
|
+
def current_capabilities_text(self) -> Tuple[str]:
|
|
170
|
+
return tuple(MMModemCapability.names(self.current_capabilities))
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class MMModemMessagingInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Modem.Messaging'):
|
|
174
|
+
"""The Messaging interface handles sending SMS messages and notification of new incoming messages."""
|
|
175
|
+
|
|
176
|
+
@dbus_method(result_signature='ao')
|
|
177
|
+
def list(self) -> List[str]:
|
|
178
|
+
"""Retrieve all SMS messages."""
|
|
179
|
+
raise NotImplementedError
|
|
180
|
+
|
|
181
|
+
@dbus_method(input_signature='o')
|
|
182
|
+
def delete(self, path: str) -> None:
|
|
183
|
+
"""Delete an SMS message."""
|
|
184
|
+
raise NotImplementedError
|
|
185
|
+
|
|
186
|
+
@dbus_method(input_signature='a{sv}', result_signature='o')
|
|
187
|
+
def create(self, properties: Dict[str, Tuple[str, Any]]) -> str:
|
|
188
|
+
"""Creates a new message object."""
|
|
189
|
+
raise NotImplementedError
|
|
190
|
+
|
|
191
|
+
@dbus_property(property_signature='ao')
|
|
192
|
+
def messages(self) -> List[str]:
|
|
193
|
+
"""The list of SMS object paths."""
|
|
194
|
+
raise NotImplementedError
|
|
195
|
+
|
|
196
|
+
@dbus_property(property_signature='au')
|
|
197
|
+
def supported_storages(self) -> List[int]:
|
|
198
|
+
"""A list of MMSmsStorage values, specifying the storages supported by this modem for storing and receiving SMS."""
|
|
199
|
+
raise NotImplementedError
|
|
200
|
+
|
|
201
|
+
@dbus_property(property_signature='u')
|
|
202
|
+
def default_storage(self) -> int:
|
|
203
|
+
"""A MMSmsStorage value, specifying the storage to be used when receiving or storing SMS."""
|
|
204
|
+
raise NotImplementedError
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class MMModemSimpleInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Modem.Simple'):
|
|
208
|
+
|
|
209
|
+
@dbus_method(input_signature='a{sv}', result_signature='o')
|
|
210
|
+
def connect(self, properties: str, bearer: Dict[str, Tuple[str, Any]]) -> str:
|
|
211
|
+
"""
|
|
212
|
+
Allowed key/value pairs in properties are:
|
|
213
|
+
|
|
214
|
+
"pin"
|
|
215
|
+
SIM-PIN unlock code, given as a string value (signature "s").
|
|
216
|
+
"operator-id"
|
|
217
|
+
ETSI MCC-MNC of a network to force registration with, given as a string value (signature "s").
|
|
218
|
+
"apn"
|
|
219
|
+
For GSM/UMTS and LTE devices the APN to use, given as a string value (signature "s").
|
|
220
|
+
"ip-type"
|
|
221
|
+
For GSM/UMTS and LTE devices the IP addressing type to use, given as a MMBearerIpFamily value (signature "u").
|
|
222
|
+
"allowed-auth"
|
|
223
|
+
The authentication method to use, given as a MMBearerAllowedAuth value (signature "u"). Optional in 3GPP.
|
|
224
|
+
"user"
|
|
225
|
+
User name (if any) required by the network, given as a string value (signature "s"). Optional in 3GPP.
|
|
226
|
+
"password"
|
|
227
|
+
Password (if any) required by the network, given as a string value (signature "s"). Optional in 3GPP.
|
|
228
|
+
"number"
|
|
229
|
+
For POTS devices the number to dial, given as a string value (signature "s").
|
|
230
|
+
"allow-roaming"
|
|
231
|
+
False to allow only connections to home networks, given as a boolean value (signature "b").
|
|
232
|
+
"rm-protocol"
|
|
233
|
+
For CDMA devices, the protocol of the Rm interface, given as a MMModemCdmaRmProtocol value (signature "u").
|
|
234
|
+
|
|
235
|
+
:param properties: Dictionary of properties needed to get the modem connected.
|
|
236
|
+
:returns: On successful connect, returns the object path of the connected packet data bearer used for the connection attempt.
|
|
237
|
+
"""
|
|
238
|
+
raise NotImplementedError
|
|
239
|
+
|
|
240
|
+
@dbus_method(input_signature='o')
|
|
241
|
+
def disconnect(self, bearer: str):
|
|
242
|
+
"""
|
|
243
|
+
data bearer, while if "/" (ie, no object given) this method will disconnect all active packet data bearers.
|
|
244
|
+
Disconnect an active packet data connection.
|
|
245
|
+
:param bearer: If given this method will disconnect the referenced packet
|
|
246
|
+
"""
|
|
247
|
+
raise NotImplementedError
|
|
248
|
+
|
|
249
|
+
@dbus_method(result_signature='a{sv}')
|
|
250
|
+
def get_status(self) -> Dict[str, Tuple[str, Any]]:
|
|
251
|
+
"""
|
|
252
|
+
Get the general modem status.
|
|
253
|
+
|
|
254
|
+
The predefined common properties returned are:
|
|
255
|
+
|
|
256
|
+
"state"
|
|
257
|
+
A MMModemState value specifying the overall state of the modem, given as an unsigned integer value (signature "u").
|
|
258
|
+
"signal-quality"
|
|
259
|
+
Signal quality value, given only when registered, as an unsigned integer value (signature "u").
|
|
260
|
+
"current-bands"
|
|
261
|
+
List of MMModemBand values, given only when registered, as a list of unsigned integer values (signature "au").
|
|
262
|
+
"access-technology"
|
|
263
|
+
A MMModemAccessTechnology value, given only when registered, as an unsigned integer value (signature "u").
|
|
264
|
+
"m3gpp-registration-state"
|
|
265
|
+
A MMModem3gppRegistrationState value specifying the state of the registration, given only when registered in a 3GPP network, as an unsigned integer value (signature "u").
|
|
266
|
+
"m3gpp-operator-code"
|
|
267
|
+
Operator MCC-MNC, given only when registered in a 3GPP network, as a string value (signature "s").
|
|
268
|
+
"m3gpp-operator-name"
|
|
269
|
+
Operator name, given only when registered in a 3GPP network, as a string value (signature "s").
|
|
270
|
+
"cdma-cdma1x-registration-state"
|
|
271
|
+
A MMModemCdmaRegistrationState value specifying the state of the registration, given only when registered in a CDMA1x network, as an unsigned integer value (signature "u").
|
|
272
|
+
"cdma-evdo-registration-state"
|
|
273
|
+
A MMModemCdmaRegistrationState value specifying the state of the registration, given only when registered in a EV-DO network, as an unsigned integer value (signature "u").
|
|
274
|
+
"cdma-sid"
|
|
275
|
+
The System Identifier of the serving network, if registered in a CDMA1x network and if known. Given as an unsigned integer value (signature "u").
|
|
276
|
+
"cdma-nid"
|
|
277
|
+
The Network Identifier of the serving network, if registered in a CDMA1x network and if known. Given as an unsigned integer value (signature "u").
|
|
278
|
+
|
|
279
|
+
:returns: Dictionary of properties.
|
|
280
|
+
"""
|
|
281
|
+
raise NotImplementedError
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
class MMModemSignalInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Modem.Signal'):
|
|
285
|
+
|
|
286
|
+
@dbus_method('u')
|
|
287
|
+
def setup(self, rate: int):
|
|
288
|
+
"""Setup extended signal quality information retrieval.
|
|
289
|
+
|
|
290
|
+
:param rate: Refresh rate to set, in seconds. 0 to disable retrieval.
|
|
291
|
+
"""
|
|
292
|
+
raise NotImplementedError
|
|
293
|
+
|
|
294
|
+
@dbus_property('u')
|
|
295
|
+
def rate(self) -> int:
|
|
296
|
+
"""
|
|
297
|
+
Refresh rate for the extended signal quality information updates, in seconds.
|
|
298
|
+
A value of 0 disables the retrieval of the values.
|
|
299
|
+
"""
|
|
300
|
+
raise NotImplementedError
|
|
301
|
+
|
|
302
|
+
@dbus_property('a{sv}')
|
|
303
|
+
def cdma(self) -> Dict[str, Tuple[str, Any]]:
|
|
304
|
+
"""
|
|
305
|
+
Dictionary of available signal information for the CDMA1x access technology.
|
|
306
|
+
"""
|
|
307
|
+
raise NotImplementedError
|
|
308
|
+
|
|
309
|
+
@dbus_property('a{sv}')
|
|
310
|
+
def evdo(self) -> Dict[str, Tuple[str, Any]]:
|
|
311
|
+
"""
|
|
312
|
+
Dictionary of available signal information for the CDMA EV-DO access technology.
|
|
313
|
+
"""
|
|
314
|
+
raise NotImplementedError
|
|
315
|
+
|
|
316
|
+
@dbus_property('a{sv}')
|
|
317
|
+
def gsm(self) -> Dict[str, Tuple[str, Any]]:
|
|
318
|
+
"""
|
|
319
|
+
Dictionary of available signal information for the GSM/GPRS access technology.
|
|
320
|
+
"""
|
|
321
|
+
raise NotImplementedError
|
|
322
|
+
|
|
323
|
+
@dbus_property('a{sv}')
|
|
324
|
+
def umts(self) -> Dict[str, Tuple[str, Any]]:
|
|
325
|
+
"""
|
|
326
|
+
Dictionary of available signal information for the UMTS (WCDMA) access technology.
|
|
327
|
+
"""
|
|
328
|
+
raise NotImplementedError
|
|
329
|
+
|
|
330
|
+
@dbus_property('a{sv}')
|
|
331
|
+
def lte(self) -> Dict[str, Tuple[str, Any]]:
|
|
332
|
+
"""
|
|
333
|
+
Dictionary of available signal information for the LTE access technology.
|
|
334
|
+
"""
|
|
335
|
+
raise NotImplementedError
|
|
336
|
+
|
|
337
|
+
@dbus_property('a{sv}')
|
|
338
|
+
def nr5g(self) -> Dict[str, Tuple[str, Any]]:
|
|
339
|
+
"""
|
|
340
|
+
Dictionary of available signal information for the 5G access technology.
|
|
341
|
+
"""
|
|
342
|
+
raise NotImplementedError
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
class MMModemVoiceInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Modem.Voice'):
|
|
346
|
+
|
|
347
|
+
@dbus_method(result_signature='ao')
|
|
348
|
+
def list_calls(self) -> List[str]:
|
|
349
|
+
"""
|
|
350
|
+
Retrieve all Calls.
|
|
351
|
+
|
|
352
|
+
:returns: The list of call object paths.
|
|
353
|
+
"""
|
|
354
|
+
raise NotImplementedError
|
|
355
|
+
|
|
356
|
+
@dbus_method(input_signature='o')
|
|
357
|
+
def delete_call(self, path: str) -> None:
|
|
358
|
+
"""
|
|
359
|
+
Delete a Call from the list of calls.
|
|
360
|
+
The call will be hangup if it is still active.
|
|
361
|
+
|
|
362
|
+
:param path: The object path of the Call to delete.
|
|
363
|
+
"""
|
|
364
|
+
raise NotImplementedError
|
|
365
|
+
|
|
366
|
+
@dbus_method(input_signature='a{sv}')
|
|
367
|
+
def create_call(self, properties: Dict[str, str]) -> str:
|
|
368
|
+
"""
|
|
369
|
+
Creates a new call object for a new outgoing call.
|
|
370
|
+
The 'Number' is the only expected property to set by the user.
|
|
371
|
+
|
|
372
|
+
:param properties: Call properties from the Call D-Bus interface.
|
|
373
|
+
:returns: The object path of the new call object.
|
|
374
|
+
"""
|
|
375
|
+
raise NotImplementedError
|
|
376
|
+
|
|
377
|
+
@dbus_method()
|
|
378
|
+
def hold_and_accept(self) -> None:
|
|
379
|
+
"""Place all active calls on hold, if any, and accept the next call."""
|
|
380
|
+
raise NotImplementedError
|
|
381
|
+
|
|
382
|
+
@dbus_method()
|
|
383
|
+
def hangup_and_accept(self) -> None:
|
|
384
|
+
"""Hangup all active calls, if any, and accept the next call."""
|
|
385
|
+
raise NotImplementedError
|
|
386
|
+
|
|
387
|
+
@dbus_method()
|
|
388
|
+
def hangup_all(self) -> None:
|
|
389
|
+
"""Hangup all active calls."""
|
|
390
|
+
raise NotImplementedError
|
|
391
|
+
|
|
392
|
+
@dbus_method()
|
|
393
|
+
def transfer(self) -> None:
|
|
394
|
+
"""
|
|
395
|
+
Join the currently active and held calls together into a single multiparty call,
|
|
396
|
+
but disconnects from them.
|
|
397
|
+
"""
|
|
398
|
+
raise NotImplementedError
|
|
399
|
+
|
|
400
|
+
@dbus_method(input_signature='b')
|
|
401
|
+
def call_waiting_setup(self, enable: bool) -> None:
|
|
402
|
+
"""Activates or deactivates the call waiting network service, as per 3GPP TS 22.083."""
|
|
403
|
+
raise NotImplementedError
|
|
404
|
+
|
|
405
|
+
@dbus_method(result_signature='b')
|
|
406
|
+
def call_waiting_query(self) -> bool:
|
|
407
|
+
"""Queries the status of the call waiting network service, as per 3GPP TS 22.083."""
|
|
408
|
+
raise NotImplementedError
|
|
409
|
+
|
|
410
|
+
@dbus_property('o', property_name='Calls')
|
|
411
|
+
def call_object_paths(self) -> List[str]:
|
|
412
|
+
"""The list of calls object paths."""
|
|
413
|
+
raise NotImplementedError
|
|
414
|
+
|
|
415
|
+
@dbus_property('b')
|
|
416
|
+
def emergency_only(self) -> bool:
|
|
417
|
+
"""A flag indicating whether emergency calls are the only allowed ones."""
|
|
418
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Tuple
|
|
2
|
+
|
|
3
|
+
from sdbus import DbusInterfaceCommon, dbus_method, dbus_property
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MMInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1'):
|
|
7
|
+
"""Main modem manager interface"""
|
|
8
|
+
|
|
9
|
+
@dbus_method()
|
|
10
|
+
def scan_devices(self) -> None:
|
|
11
|
+
"""Start a new scan for connected modem devices."""
|
|
12
|
+
raise NotImplementedError
|
|
13
|
+
|
|
14
|
+
@dbus_method(input_signature='s')
|
|
15
|
+
def set_logging(self, level: str) -> None:
|
|
16
|
+
"""Set logging verbosity.
|
|
17
|
+
|
|
18
|
+
:param level: One of "ERR", "WARN", "INFO", "DEBUG".
|
|
19
|
+
"""
|
|
20
|
+
raise NotImplementedError
|
|
21
|
+
|
|
22
|
+
@dbus_method(input_signature='a{sv}')
|
|
23
|
+
def report_kernel_event(self, properties: Dict[str, Tuple[str, Any]]) -> None:
|
|
24
|
+
"""Reports a kernel event to ModemManager."""
|
|
25
|
+
raise NotImplementedError
|
|
26
|
+
|
|
27
|
+
@dbus_method(input_signature='sb')
|
|
28
|
+
def inhibit_device(self, uid: str, inhibit: bool) -> None:
|
|
29
|
+
"""Inhibit or uninhibit the device.
|
|
30
|
+
|
|
31
|
+
:param uid: The unique ID of the physical device
|
|
32
|
+
:param inhibit: True to inhibit the modem and False to uninhibit it
|
|
33
|
+
"""
|
|
34
|
+
raise NotImplementedError
|
|
35
|
+
|
|
36
|
+
@dbus_property('s')
|
|
37
|
+
def version(self) -> str:
|
|
38
|
+
"""NetworkManager version"""
|
|
39
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
from typing import List, Tuple
|
|
2
|
+
|
|
3
|
+
from sdbus import DbusInterfaceCommon, dbus_method, dbus_property
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MMSimInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Sim'):
|
|
7
|
+
"""The SIM interface handles communication with SIM, USIM, and RUIM (CDMA SIM) cards."""
|
|
8
|
+
|
|
9
|
+
@dbus_method(input_signature='s')
|
|
10
|
+
def send_pin(self, pin: str = '') -> None:
|
|
11
|
+
"""
|
|
12
|
+
Send the PIN to unlock the SIM card.
|
|
13
|
+
|
|
14
|
+
:param pin: A string containing the PIN code.
|
|
15
|
+
"""
|
|
16
|
+
raise NotImplementedError
|
|
17
|
+
|
|
18
|
+
@dbus_method(input_signature='ss')
|
|
19
|
+
def send_puk(self, puk: str = '', pin: str = '') -> None:
|
|
20
|
+
"""
|
|
21
|
+
Send the PUK and a new PIN to unlock the SIM card.
|
|
22
|
+
|
|
23
|
+
:param puk: A string containing the PUK code.
|
|
24
|
+
:param pin: A string containing the PIN code.
|
|
25
|
+
"""
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
@dbus_method(input_signature='sb')
|
|
29
|
+
def enable_pin(self, pin: str = '', enable: bool = False) -> None:
|
|
30
|
+
"""
|
|
31
|
+
Enable or disable the PIN checking.
|
|
32
|
+
|
|
33
|
+
:param pin: A string containing the PIN code.
|
|
34
|
+
:param enable: TRUE to enable PIN checking, FALSE otherwise.
|
|
35
|
+
"""
|
|
36
|
+
raise NotImplementedError
|
|
37
|
+
|
|
38
|
+
@dbus_method(input_signature='ss')
|
|
39
|
+
def change_pin(self, old_pin: str = '', new_pin: str = '') -> None:
|
|
40
|
+
"""
|
|
41
|
+
Change the PIN code.
|
|
42
|
+
|
|
43
|
+
:param old_pin: A string containing the current PIN code.
|
|
44
|
+
:param new_pin: A string containing the new PIN code.
|
|
45
|
+
"""
|
|
46
|
+
raise NotImplementedError
|
|
47
|
+
|
|
48
|
+
@dbus_method(input_signature='a(su)')
|
|
49
|
+
def set_preferred_networks(self, preferred_networks: List[Tuple[str, int]]) -> None:
|
|
50
|
+
"""
|
|
51
|
+
Stores the provided preferred network list to the SIM card.
|
|
52
|
+
|
|
53
|
+
Each entry contains an operator id string ("MCCMNC") consisting of 5 or 6 digits,
|
|
54
|
+
and an MMModemAccessTechnology mask to store to SIM card if supported.
|
|
55
|
+
|
|
56
|
+
:param preferred_networks: Operator id string and MMModemAccessTechnology mask.
|
|
57
|
+
"""
|
|
58
|
+
raise NotImplementedError
|
|
59
|
+
|
|
60
|
+
@dbus_property(property_signature='b')
|
|
61
|
+
def active(self) -> bool:
|
|
62
|
+
"""Boolean indicating whether the SIM is currently active."""
|
|
63
|
+
raise NotImplementedError
|
|
64
|
+
|
|
65
|
+
@dbus_property('s')
|
|
66
|
+
def sim_identifier(self) -> str:
|
|
67
|
+
"""
|
|
68
|
+
The ICCID of the SIM card.
|
|
69
|
+
This may be available before the PIN has been entered depending on the device itself.
|
|
70
|
+
"""
|
|
71
|
+
raise NotImplementedError
|
|
72
|
+
|
|
73
|
+
@dbus_property('s')
|
|
74
|
+
def imsi(self) -> str:
|
|
75
|
+
"""The IMSI of the SIM card, if any."""
|
|
76
|
+
raise NotImplementedError
|
|
77
|
+
|
|
78
|
+
@dbus_property(property_signature='s')
|
|
79
|
+
def eid(self) -> str:
|
|
80
|
+
"""The EID of the SIM card, if any."""
|
|
81
|
+
raise NotImplementedError
|
|
82
|
+
|
|
83
|
+
@dbus_property('s')
|
|
84
|
+
def operator_identifier(self) -> str:
|
|
85
|
+
raise NotImplementedError
|
|
86
|
+
|
|
87
|
+
@dbus_property('s')
|
|
88
|
+
def operator_name(self) -> str:
|
|
89
|
+
"""The name of the network operator, as given by the SIM card, if known."""
|
|
90
|
+
raise NotImplementedError
|
|
91
|
+
|
|
92
|
+
@dbus_property(property_signature='as')
|
|
93
|
+
def emergency_numbers(self) -> List[str]:
|
|
94
|
+
"""List of emergency numbers programmed in the SIM card."""
|
|
95
|
+
raise NotImplementedError
|
|
96
|
+
|
|
97
|
+
@dbus_property(property_signature='a(su)')
|
|
98
|
+
def preferred_networks(self) -> List[Tuple[str, int]]:
|
|
99
|
+
"""
|
|
100
|
+
List of preferred networks with access technologies configured in the SIM card.
|
|
101
|
+
|
|
102
|
+
Each entry contains an operator id string ("MCCMNC") consisting of 5 or 6 digits,
|
|
103
|
+
and an MMModemAccessTechnology mask to store to SIM card if supported.
|
|
104
|
+
"""
|
|
105
|
+
raise NotImplementedError
|
|
106
|
+
|
|
107
|
+
@dbus_property(property_signature='ay')
|
|
108
|
+
def gid1(self) -> bytes:
|
|
109
|
+
"""Group identifier level 1."""
|
|
110
|
+
raise NotImplementedError
|
|
111
|
+
|
|
112
|
+
@dbus_property(property_signature='ay')
|
|
113
|
+
def gid2(self) -> bytes:
|
|
114
|
+
"""Group identifier level 2."""
|
|
115
|
+
raise NotImplementedError
|
|
116
|
+
|
|
117
|
+
@dbus_property(property_signature='u')
|
|
118
|
+
def sim_type(self) -> int:
|
|
119
|
+
"""Indicates whether the current primary SIM is a ESIM or a physical SIM, given as MMSimType value."""
|
|
120
|
+
raise NotImplementedError
|
|
121
|
+
|
|
122
|
+
@dbus_property(property_signature='u')
|
|
123
|
+
def esim_status(self) -> int:
|
|
124
|
+
"""If current SIM is ESIM then this indicates whether there is a profile or not, given as MMSimEsimStatus value."""
|
|
125
|
+
raise NotImplementedError
|
|
126
|
+
|
|
127
|
+
@dbus_property(property_signature='u')
|
|
128
|
+
def removability(self) -> int:
|
|
129
|
+
"""Indicates whether the current SIM is a removable SIM or not, given as a MMSimRemovability value."""
|
|
130
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
from typing import Any, Tuple
|
|
2
|
+
|
|
3
|
+
from sdbus import DbusInterfaceCommon, dbus_method, dbus_property
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MMSmsInterface(DbusInterfaceCommon, interface_name='org.freedesktop.ModemManager1.Sms'):
|
|
7
|
+
"""The SMS interface defines operations and properties of a single SMS message."""
|
|
8
|
+
|
|
9
|
+
@dbus_method()
|
|
10
|
+
def send(self) -> None:
|
|
11
|
+
"""If the message has not yet been sent, queue it for delivery."""
|
|
12
|
+
raise NotImplementedError
|
|
13
|
+
|
|
14
|
+
@dbus_method(input_signature='u')
|
|
15
|
+
def store(self, storage: int) -> None:
|
|
16
|
+
"""Store the message in the device if not already done."""
|
|
17
|
+
raise NotImplementedError
|
|
18
|
+
|
|
19
|
+
@dbus_property(property_signature='u')
|
|
20
|
+
def state(self) -> int:
|
|
21
|
+
"""A MMSmsState value, describing the state of the message."""
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
|
|
24
|
+
@dbus_property(property_signature='u')
|
|
25
|
+
def pdu_type(self) -> int:
|
|
26
|
+
"""A MMSmsPduType value, describing the type of PDUs used in the SMS message."""
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
@dbus_property(property_signature='s')
|
|
30
|
+
def number(self) -> str:
|
|
31
|
+
"""Number to which the message is addressed."""
|
|
32
|
+
raise NotImplementedError
|
|
33
|
+
|
|
34
|
+
@dbus_property(property_signature='s')
|
|
35
|
+
def text(self) -> str:
|
|
36
|
+
"""Message text, in UTF-8."""
|
|
37
|
+
raise NotImplementedError
|
|
38
|
+
|
|
39
|
+
@dbus_property(property_signature='ay')
|
|
40
|
+
def data(self) -> bytes:
|
|
41
|
+
"""Message data."""
|
|
42
|
+
raise NotImplementedError
|
|
43
|
+
|
|
44
|
+
@dbus_property(property_signature='s')
|
|
45
|
+
def s_m_s_c(self) -> str:
|
|
46
|
+
"""Indicates the SMS service center number."""
|
|
47
|
+
raise NotImplementedError
|
|
48
|
+
|
|
49
|
+
@dbus_property(property_signature='(uv)')
|
|
50
|
+
def validity(self) -> Tuple[int, Tuple[str, Any]]:
|
|
51
|
+
"""Indicates when the SMS expires in the SMSC."""
|
|
52
|
+
raise NotImplementedError
|
|
53
|
+
|
|
54
|
+
@dbus_property(property_signature='i')
|
|
55
|
+
def Class(self) -> int:
|
|
56
|
+
"""3GPP message class (-1..3)."""
|
|
57
|
+
raise NotImplementedError
|
|
58
|
+
|
|
59
|
+
@dbus_property(property_signature='u')
|
|
60
|
+
def teleservice_id(self) -> int:
|
|
61
|
+
"""A MMSmsCdmaTeleserviceId value."""
|
|
62
|
+
raise NotImplementedError
|
|
63
|
+
|
|
64
|
+
@dbus_property(property_signature='u')
|
|
65
|
+
def service_category(self) -> int:
|
|
66
|
+
"""A MMSmsCdmaServiceCategory value."""
|
|
67
|
+
raise NotImplementedError
|
|
68
|
+
|
|
69
|
+
@dbus_property(property_signature='b')
|
|
70
|
+
def delivery_report_request(self) -> bool:
|
|
71
|
+
"""True if delivery report request is required, False otherwise."""
|
|
72
|
+
raise NotImplementedError
|
|
73
|
+
|
|
74
|
+
@dbus_property(property_signature='u')
|
|
75
|
+
def message_reference(self) -> int:
|
|
76
|
+
"""Message Reference of the last PDU sent/received within this SMS."""
|
|
77
|
+
raise NotImplementedError
|
|
78
|
+
|
|
79
|
+
@dbus_property(property_signature='s')
|
|
80
|
+
def timestamp(self) -> str:
|
|
81
|
+
"""Time when the first PDU of the SMS message arrived the SMSC, in ISO8601 format."""
|
|
82
|
+
raise NotImplementedError
|
|
83
|
+
|
|
84
|
+
@dbus_property(property_signature='s')
|
|
85
|
+
def discharge_timestamp(self) -> str:
|
|
86
|
+
"""Time when the first PDU of the SMS message left the SMSC, in ISO8601 format."""
|
|
87
|
+
raise NotImplementedError
|
|
88
|
+
|
|
89
|
+
@dbus_property(property_signature='u')
|
|
90
|
+
def delivery_state(self) -> int:
|
|
91
|
+
"""A MMSmsDeliveryState value, describing the state of the delivery reported in the Status Report message."""
|
|
92
|
+
raise NotImplementedError
|
|
93
|
+
|
|
94
|
+
@dbus_property(property_signature='u')
|
|
95
|
+
def storage(self) -> int:
|
|
96
|
+
"""A MMSmsStorage value, describing the storage where this message is kept."""
|
|
97
|
+
raise NotImplementedError
|