Module pynimomodem.constants
NIMO modem constants.
This module provides mapping of constants used within a NIMO modem.
Expand source code
# -*- coding: utf-8 -*-
"""NIMO modem constants.
This module provides mapping of constants used within a NIMO modem.
"""
# from dataclasses import dataclass
from enum import Enum, IntEnum, IntFlag
MSG_MO_MAX_SIZE = 6400 # IsatData Pro
MSG_MT_MAX_SIZE = 10000 # IsatData Pro (non-low power)
MSG_MO_NAME_MAX_LEN = 8 # Max characters for name in Orbcomm modems
MSG_MO_NAME_QMAX_LEN = 12 # Max characters for name in Quectel modems
BAUDRATES = [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]
GEOSTATIONARY_DISTANCE_M = 35786000
class NimoIntEnum(IntEnum):
"""IntEnum class wrapper with is_valid method."""
@classmethod
def is_valid(cls, value) -> bool:
"""True if the value exists in the enumeration."""
return value in set(item.value for item in cls)
class NimoFloatEnum(Enum):
"""Enum class wrapper with is_valid method."""
@classmethod
def is_valid(cls, value) -> bool:
"""True if the value exists in the enumeration."""
return value in set(item.value for item in cls)
class AtParsingState(NimoIntEnum):
"""Maps AT command response parsing states."""
ECHO = 0
RESPONSE = 1
CRC = 2
OK = 3
ERROR = 4
class MessagePriority(NimoIntEnum):
"""Message priorities for NIMO modem messages."""
NONE = 0
HIGH = 1
MEDH = 2
MEDL = 3
LOW = 4
class DataFormat(NimoIntEnum):
"""Data formats used for submitting or extracting message data/payload."""
TEXT = 1
HEX = 2
BASE64 = 3
class ControlState(NimoIntEnum):
"""States of the NIMO modem internal network acquisition process."""
STOPPED = 0
GNSS_WAIT = 1
SEARCH_START = 2
BEAM_SEARCH = 3
BEAM_FOUND = 4
BEAM_ACQUIRED = 5
BEAM_SWITCH = 6
REGISTERING = 7
RECEIVE_ONLY = 8
BB_DOWNLOAD = 9
ACTIVE = 10
BLOCKED = 11
CONFIRM_PREVIOUS_BEAM = 12
CONFIRM_REQUESTED_BEAM = 13
CONNECT_CONFIRMED_BEAM = 14
class BeamState(NimoIntEnum):
"""States of the NIMO modem satellite beam internal selection process."""
IDLE = 0
SEARCH_ANY_TRAFFIC = 1
SEARCH_LAST_TRAFFIC = 2
RESERVED = 3
SEARCH_NEW_TRAFFIC = 4
SEARCH_BULLETIN_BOARD = 5
DELAY_TRAFFIC_SEARCH = 6
class MessageState(NimoIntEnum):
"""Message states of NIMO modem messages."""
UNAVAILABLE = 0
RX_PENDING = 1
RX_COMPLETE = 2
RX_RETRIEVED = 3
TX_READY = 4
TX_SENDING = 5
TX_COMPLETE = 6
TX_FAILED = 7
TX_CANCELLED = 8
class AtErrorCode(NimoIntEnum):
"""AT command error codes for NIMO modems."""
# Standard / documented
OK = 0
ERROR = 4
INVALID_CRC = 100
UNKNOWN_COMMAND = 101
INVALID_PARAMETER = 102
MESSAGE_LENGTH_MISMATCH = 103
RESERVED_104 = 104
SYSTEM_ERROR = 105
TX_QUEUE_FULL = 106
DUPLICATE_NAME = 107
GNSS_TIMEOUT = 108
MESSAGE_UNAVAILABLE = 109
RESERVED_110 = 110
RESERVED_111 = 111
READ_ONLY_PARAMETER = 112
# Extensions for additional situations
TIMEOUT = 255
CRC_CONFIG_MISMATCH = 254
UNABLE_TO_DELETE = 253
INVALID_RESPONSE_CRC = 252
class PowerMode(NimoIntEnum):
"""The Power Mode setting of the NIMO modem.
Implies various internal state machine settings for balancing power
consumption against speed of recovery from line of sight blockages.
"""
MOBILE_POWERED = 0
FIXED_POWERED = 1
MOBILE_BATTERY = 2
FIXED_BATTERY = 3
MOBILE_MINIMAL = 4
MOBILE_PARKED = 5
def gnss_refresh_hours(self):
"""The minimum GNSS refresh interval [hours]."""
if self.value == 0:
return 3
if self.value == 1:
return 24
if self.value == 2:
return 6
if self.value == 3:
return 14 * 24
if self.value == 4:
return 12
if self.value == 5:
return 24
def transmit_lifetime_seconds(self):
"""The maximum duration of a message in the transmit queue [seconds]."""
if self.value in [0, 1]:
return 3 * 3600
return 3 * 60
def beam_search_interval_seconds(self):
"""The minimum time between background beam searches [seconds]."""
if self.value in [0, 2, 4]:
return 20 * 60
return 60 * 60
def short_term_blockage_seconds(self):
"""The time in blockage before initiating a beam search [seconds]."""
if self.value in [0, 1]:
return 5 * 60
if self.value in [2, 3, 4]:
return 20 * 60
return 15 * 60
def beam_search_maximum_seconds(self):
"""The maximum backoff interval between searches when blocked [seconds].
"""
if self.value in [0, 1]:
return 0
return 1600 * 60
class WakeupPeriod(NimoIntEnum):
"""The Wakeup Period setting of a NIMO modem.
Determines how often the modem wakes up to listen briefly for potential
mobile-terminated messages to be delivered by the network.
"""
NONE = 0 # 5 seconds
SECONDS_30 = 1
MINUTES_1 = 2
MINUTES_3 = 3
MINUTES_10 = 4
MINUTES_30 = 5
MINUTES_60 = 6
MINUTES_2 = 7
MINUTES_5 = 8
MINUTES_15 = 9
MINUTES_20 = 10
def seconds(self):
if self.name == 'NONE':
return 5
value = int(self.name.split('_'))[1]
if self.name.startswith('MINUTES'):
return value * 60
return value
class WakeupWay(NimoIntEnum):
"""Quectel CC200A-LB wakeup methods."""
WAKEUP_PIN = 0
UART = 1
class WorkMode(NimoIntEnum):
"""Quectel CC200A-LB working modes."""
WORKING = 1
GNSS = 2
PERIODIC_SLEEP = 3
class UrcControl(IntFlag):
"""Control bits for Quectel Unsolicited Response Codes."""
GNSS_FIX_NEW = 0b00000001
MESSAGE_MT_RECEIVED = 0b00000010
MESSAGE_MO_COMPLETE = 0b00000100
NETWORK_REGISTERED = 0b00001000
WAKEUP_PERIOD_CHANGE = 0b00010000
UTC_TIME_SYNC = 0b00100000
GNSS_FIX_TIMEOUT = 0b01000000
NETWORK_PING_ACKNOWLEDGED = 0b10000000
@classmethod
def get_events(cls, event_mask: int) -> 'list[EventNotification]':
"""Parses a bitmask to return a list of events."""
return [item for item in cls if item.value & event_mask]
class UrcCode(NimoIntEnum):
"""Quectel URC code map."""
GPS_FIX = 0
RX_END = 1
TX_END = 2
REGED = 3
ITV_CHG = 4
TIME_UPD = 5
GPS_TMO = 6
PLG_RESP = 7
class GnssMode(NimoIntEnum):
"""Base class for manufacturer-specific variants."""
class GnssModeOrbcomm(GnssMode):
"""The operating mode setting for the built-in GNSS in a NIMO modem."""
GPS = 0
GLONASS = 1
BEIDOU = 2
GALILEO = 3
GPS_GLONASS = 10
GPS_BEIDOU = 11
GLONASS_BEIDOU = 12
GPS_GALILEO = 13
GLONASS_GALILEO = 14
BEIDOU_GALILEO = 15
class GnssModeQuectel(GnssMode):
GPS = 0
GPS_BDS = 1
GPS_GLONASS = 2
GPS_GALILEO = 3
GPS_GLONASS_GALILEO_BDS = 4
class GnssDynamicPlatformModel(NimoIntEnum):
"""The dynamic acquisition and tracking model used by the modem's GNSS.
SUPPORTED ON SELECT MODEMS ONLY. CONSULT MANUFACTURER PRIOR TO USE.
"""
PORTABLE = 0
STATIONARY = 2
PEDESTRIAN = 3
AUTOMOTIVE = 4
SEA = 5
AIR_1G = 6
AIR_2G = 7
AIR_4G = 8
class SignalLevelRegional(NimoFloatEnum):
"""Qualitative descriptors for SNR/CN0 values for a NIMO Regional Beam.
BARS_n: *n* is a scale from 0..5 to be used as greaterThan threshold
NONE, MARGINAL, GOOD: a scale to be used as greaterOrEqual threshold
"""
BARS_0 = 0
BARS_1 = 37.0
BARS_2 = 39.0
BARS_3 = 41.0
BARS_4 = 43.0
BARS_5 = 45.5
INVALID = 55.0
class SignalQuality(NimoIntEnum):
"""Qualitative descriptor corresponding to a SignalLevel"""
NONE = 0
WEAK = 1
LOW = 2
MID = 3
GOOD = 4
STRONG = 5
WARNING = 6
class EventNotification(IntFlag):
"""Bitmask enumerated values for NIMO modem events."""
GNSS_FIX_NEW = 0b000000000001
MESSAGE_MT_RECEIVED = 0b000000000010
MESSAGE_MO_COMPLETE = 0b000000000100
NETWORK_REGISTERED = 0b000000001000
MODEM_RESET_COMPLETE = 0b000000010000
JAMMING_ANTENNA_CHANGE = 0b000000100000
MODEM_RESET_PENDING = 0b000001000000
WAKEUP_PERIOD_CHANGE = 0b000010000000
UTC_TIME_SYNC = 0b000100000000
GNSS_FIX_TIMEOUT = 0b001000000000
EVENT_TRACE_CACHED = 0b010000000000
NETWORK_PING_ACKNOWLEDGED = 0b100000000000
@classmethod
def get_events(cls, event_mask: int) -> 'list[EventNotification]':
"""Parses a bitmask to return a list of events."""
return [item for item in cls if item.value & event_mask]
class NetworkStatus(NimoIntEnum):
"""Simplified state of network acquisition and tracking."""
UNKNOWN = 0
RX_STOPPED = 1
RX_SEARCHING = 2
RX_ACQUIRING = 3
RX_ONLY_NOT_REGISTERED = 4
OK = 5
SUSPENDED = 6
MUTED = 7
BLOCKED = 8
class EventTraceClass(NimoIntEnum):
"""Event Trace categories for the NIMO modem."""
HARDWARE_FAULT = 1
SYSTEM = 2
SATELLITE = 3
GNSS = 4
MESSAGE = 5
class EventTraceSubclass(NimoIntEnum):
"""Base class for trace subclasses"""
class EventTraceSystem(EventTraceSubclass):
"""Event Trace subcategories for NIMO modem System events."""
RESET = 1
LOW_POWER = 2
SYSTEM_STATS = 3
SATCOM_STATS = 4
class EventTraceSatellite(EventTraceSubclass):
"""Event Trace subcategories for NIMO modem Satellite events."""
RX_STATUS = 1
TX_STATUS = 2
BEAM_CONNECT = 3
BEAM_SEARCH_RESULT = 4
GEO_ADJUST = 5
EVENT_LOG = 6
RX_METRICS_SUBFRAME = 16
RX_METRICS_MINUTE = 17
RX_METRICS_HOUR = 18
RX_METRICS_DAY = 19
TX_METRICS_SUBFRAME = 20
TX_METRICS_MINUTE = 21
TX_METRICS_HOUR = 22
TX_METRICS_DAY = 23
class EventTraceGnss(EventTraceSubclass):
"""Event Trace subcategories for NIMO modem GNSS events."""
FIX_STATS = 1
DOPPLER = 4
class EventTraceMessage(EventTraceSubclass):
"""Event Trace subcategories for NIMO modem Message events."""
RECEIVE_STATS = 1
TRANSMIT_STATS = 2
TRANSMIT_UTILITY = 3
class EventTrace:
def __init__(self,
trace_class: EventTraceClass,
trace_subclass: EventTraceSubclass,
data: 'tuple[str, str|dict|IntEnum]') -> None:
"""Defines an event trace.
Args:
trace_class: The enumerated class
trace_subclass: The enumerated subclass dependent on the class
data: The set of (name, meta) where meta defines either a
data type (e.g. `uint`) or a mapping (`dict` or `IntEnum`)
"""
self.trace_class: EventTraceClass = trace_class
self.trace_subclass: EventTraceSubclass = trace_subclass
self.data: 'tuple[str, str|dict|IntEnum]' = data
EVENT_TRACE_SATELLITE_GENERAL = EventTrace(
trace_class=EventTraceClass.SATELLITE,
trace_subclass=EventTraceSatellite.RX_STATUS,
data=(
('subframe_number', 'uint'),
('traffic_vcid', 'uint'),
('configuration_id', 'uint'),
('beam_number', 'uint'),
('reserved04', 'uint'),
('tx_access_sip', 'uint'),
('tx_access_operator', 'uint'),
('tx_access_user', 'uint'),
('tx_suspend_flags', {
0x1: 'BEAM_REGISTRATION',
0x2: 'BEAM_SWITCH',
0x4: 'RESERVED',
0x8: 'BLOCKED',
}),
('tx_messages_active', 'uint'),
('tx_messages_total', 'uint'),
('tx_packets_active', 'uint'),
('tx_state', {
0: 'ACTIVE',
1: 'SUSPENDING',
2: 'SUSPENDED_PENDING_GNSS'}),
('active_rx_messages', 'uint'),
('beamswitch_averaging_window', 'uint'),
('beamswitch_averaging_count', 'uint'),
('c_n_x100', 'uint'),
('beamsample_threshold', 'uint'),
('beamsample_timer', 'uint'),
('flags', {
0x1: 'REGISTERED',
0x2: 'SENDING_BEAM_REGISTRATION',
0x10: 'BEAM_SEARCH',
0x20: 'BEAM_SAMPLE_REQUIRED',
0x40: 'BEAM_SWITCH_PENDING',
0x100: 'GNSS_VALID',
0x200: 'GNSS_REQUIRED',
0x400: 'GNSS_PENDING',
}),
('gnss_state_timer', 'uint'),
('reserved21', 'uint'),
('satellite_control_state', ControlState),
('beam_search_state', BeamState),
)
)
EVENT_TRACES = (
EVENT_TRACE_SATELLITE_GENERAL,
)
class GeoBeam(NimoIntEnum):
"""Geographic Beam identifiers mapped to readable names."""
GLOBAL_BB = 0
AMER_RB1 = 1
AMER_RB2 = 2
AMER_RB3 = 3
AMER_RB4 = 4
AMER_RB5 = 5
AMER_RB6 = 6
AMER_RB7 = 7
AMER_RB8 = 8
AMER_RB9 = 9
AMER_RB10 = 10
AMER_RB11 = 11
AMER_RB12 = 12
AMER_RB13 = 13
AMER_RB14 = 14
AMER_RB15 = 15
AMER_RB16 = 16
AMER_RB17 = 17
AMER_RB18 = 18
AMER_RB19 = 19
AORW_SC = 61
EMEA_RB1 = 21
EMEA_RB2 = 22
EMEA_RB3 = 23
EMEA_RB4 = 24
EMEA_RB5 = 25
EMEA_RB6 = 26
EMEA_RB7 = 27
EMEA_RB8 = 28
EMEA_RB9 = 29
EMEA_RB10 = 30
EMEA_RB11 = 31
EMEA_RB12 = 32
EMEA_RB13 = 33
EMEA_RB14 = 34
EMEA_RB15 = 35
EMEA_RB16 = 36
EMEA_RB17 = 37
EMEA_RB18 = 38
EMEA_RB19 = 39
APAC_RB1 = 41
APAC_RB2 = 42
APAC_RB3 = 43
APAC_RB4 = 44
APAC_RB5 = 45
APAC_RB6 = 46
APAC_RB7 = 47
APAC_RB8 = 48
APAC_RB9 = 49
APAC_RB10 = 50
APAC_RB11 = 51
APAC_RB12 = 52
APAC_RB13 = 53
APAC_RB14 = 54
APAC_RB15 = 55
APAC_RB16 = 56
APAC_RB17 = 57
APAC_RB18 = 58
APAC_RB19 = 59
# MEAS_RB10 = 90 # replaced by IOE
# MEAS_RB11 = 91 # replaced by IOE
# MEAS_RB12 = 92 # replaced by IOE
# MEAS_RB15 = 93 # replaced by IOE
IOE_RB1 = 101
IOE_RB2 = 102
IOE_RB3 = 103
IOE_RB4 = 104
IOE_RB5 = 105
IOE_RB6 = 106
IOE_RB7 = 107
IOE_RB8 = 108
IOE_RB9 = 109
IOE_RB10 = 110
IOE_RB11 = 111
IOE_RB12 = 112
IOE_RB13 = 113
IOE_RB14 = 114
IOE_RB15 = 115
IOE_RB16 = 116
IOE_RB17 = 117
IOE_RB18 = 118
IOE_RB19 = 119
@property
def satellite(self):
return self.name.split('_')[0]
@property
def beam(self):
return self.name.split('_')[1]
@property
def id(self):
return self.value
class GeoSatellite(NimoFloatEnum):
"""Maps the Viasat/Inmarsat geostationary longitude supporting NIMO."""
AMER = -98.0 # Inmarsat 4F3
AORWSC = -54.0 # Inmarsat 3F5
EMEA = 24.9 # Inmarsat 4AF4 aka Alphasat XL
IOE = 63.5 # Inmarsat 6F1 previously IOR 3F1, MEAS 4F2
APAC = 143.5 # Inmarsat 4F2 previously 4F1
Classes
class AtErrorCode (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
AT command error codes for NIMO modems.
Expand source code
class AtErrorCode(NimoIntEnum): """AT command error codes for NIMO modems.""" # Standard / documented OK = 0 ERROR = 4 INVALID_CRC = 100 UNKNOWN_COMMAND = 101 INVALID_PARAMETER = 102 MESSAGE_LENGTH_MISMATCH = 103 RESERVED_104 = 104 SYSTEM_ERROR = 105 TX_QUEUE_FULL = 106 DUPLICATE_NAME = 107 GNSS_TIMEOUT = 108 MESSAGE_UNAVAILABLE = 109 RESERVED_110 = 110 RESERVED_111 = 111 READ_ONLY_PARAMETER = 112 # Extensions for additional situations TIMEOUT = 255 CRC_CONFIG_MISMATCH = 254 UNABLE_TO_DELETE = 253 INVALID_RESPONSE_CRC = 252
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var CRC_CONFIG_MISMATCH
var DUPLICATE_NAME
var ERROR
var GNSS_TIMEOUT
var INVALID_CRC
var INVALID_PARAMETER
var INVALID_RESPONSE_CRC
var MESSAGE_LENGTH_MISMATCH
var MESSAGE_UNAVAILABLE
var OK
var READ_ONLY_PARAMETER
var RESERVED_104
var RESERVED_110
var RESERVED_111
var SYSTEM_ERROR
var TIMEOUT
var TX_QUEUE_FULL
var UNABLE_TO_DELETE
var UNKNOWN_COMMAND
Inherited members
class AtParsingState (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Maps AT command response parsing states.
Expand source code
class AtParsingState(NimoIntEnum): """Maps AT command response parsing states.""" ECHO = 0 RESPONSE = 1 CRC = 2 OK = 3 ERROR = 4
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var CRC
var ECHO
var ERROR
var OK
var RESPONSE
Inherited members
class BeamState (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
States of the NIMO modem satellite beam internal selection process.
Expand source code
class BeamState(NimoIntEnum): """States of the NIMO modem satellite beam internal selection process.""" IDLE = 0 SEARCH_ANY_TRAFFIC = 1 SEARCH_LAST_TRAFFIC = 2 RESERVED = 3 SEARCH_NEW_TRAFFIC = 4 SEARCH_BULLETIN_BOARD = 5 DELAY_TRAFFIC_SEARCH = 6
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var DELAY_TRAFFIC_SEARCH
var IDLE
var RESERVED
var SEARCH_ANY_TRAFFIC
var SEARCH_BULLETIN_BOARD
var SEARCH_LAST_TRAFFIC
var SEARCH_NEW_TRAFFIC
Inherited members
class ControlState (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
States of the NIMO modem internal network acquisition process.
Expand source code
class ControlState(NimoIntEnum): """States of the NIMO modem internal network acquisition process.""" STOPPED = 0 GNSS_WAIT = 1 SEARCH_START = 2 BEAM_SEARCH = 3 BEAM_FOUND = 4 BEAM_ACQUIRED = 5 BEAM_SWITCH = 6 REGISTERING = 7 RECEIVE_ONLY = 8 BB_DOWNLOAD = 9 ACTIVE = 10 BLOCKED = 11 CONFIRM_PREVIOUS_BEAM = 12 CONFIRM_REQUESTED_BEAM = 13 CONNECT_CONFIRMED_BEAM = 14
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var ACTIVE
var BB_DOWNLOAD
var BEAM_ACQUIRED
var BEAM_FOUND
var BEAM_SEARCH
var BEAM_SWITCH
var BLOCKED
var CONFIRM_PREVIOUS_BEAM
var CONFIRM_REQUESTED_BEAM
var CONNECT_CONFIRMED_BEAM
var GNSS_WAIT
var RECEIVE_ONLY
var REGISTERING
var SEARCH_START
var STOPPED
Inherited members
class DataFormat (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Data formats used for submitting or extracting message data/payload.
Expand source code
class DataFormat(NimoIntEnum): """Data formats used for submitting or extracting message data/payload.""" TEXT = 1 HEX = 2 BASE64 = 3
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var BASE64
var HEX
var TEXT
Inherited members
class EventNotification (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Bitmask enumerated values for NIMO modem events.
Expand source code
class EventNotification(IntFlag): """Bitmask enumerated values for NIMO modem events.""" GNSS_FIX_NEW = 0b000000000001 MESSAGE_MT_RECEIVED = 0b000000000010 MESSAGE_MO_COMPLETE = 0b000000000100 NETWORK_REGISTERED = 0b000000001000 MODEM_RESET_COMPLETE = 0b000000010000 JAMMING_ANTENNA_CHANGE = 0b000000100000 MODEM_RESET_PENDING = 0b000001000000 WAKEUP_PERIOD_CHANGE = 0b000010000000 UTC_TIME_SYNC = 0b000100000000 GNSS_FIX_TIMEOUT = 0b001000000000 EVENT_TRACE_CACHED = 0b010000000000 NETWORK_PING_ACKNOWLEDGED = 0b100000000000 @classmethod def get_events(cls, event_mask: int) -> 'list[EventNotification]': """Parses a bitmask to return a list of events.""" return [item for item in cls if item.value & event_mask]
Ancestors
- enum.IntFlag
- builtins.int
- enum.Flag
- enum.Enum
Class variables
var EVENT_TRACE_CACHED
var GNSS_FIX_NEW
var GNSS_FIX_TIMEOUT
var JAMMING_ANTENNA_CHANGE
var MESSAGE_MO_COMPLETE
var MESSAGE_MT_RECEIVED
var MODEM_RESET_COMPLETE
var MODEM_RESET_PENDING
var NETWORK_PING_ACKNOWLEDGED
var NETWORK_REGISTERED
var UTC_TIME_SYNC
var WAKEUP_PERIOD_CHANGE
Static methods
def get_events(event_mask: int) ‑> list[EventNotification]
-
Parses a bitmask to return a list of events.
Expand source code
@classmethod def get_events(cls, event_mask: int) -> 'list[EventNotification]': """Parses a bitmask to return a list of events.""" return [item for item in cls if item.value & event_mask]
class EventTrace (trace_class: EventTraceClass, trace_subclass: EventTraceSubclass, data: tuple[str, str|dict|IntEnum])
-
Defines an event trace.
Args
trace_class
- The enumerated class
trace_subclass
- The enumerated subclass dependent on the class
data
- The set of (name, meta) where meta defines either a
data type (e.g.
uint
) or a mapping (dict
orIntEnum
)
Expand source code
class EventTrace: def __init__(self, trace_class: EventTraceClass, trace_subclass: EventTraceSubclass, data: 'tuple[str, str|dict|IntEnum]') -> None: """Defines an event trace. Args: trace_class: The enumerated class trace_subclass: The enumerated subclass dependent on the class data: The set of (name, meta) where meta defines either a data type (e.g. `uint`) or a mapping (`dict` or `IntEnum`) """ self.trace_class: EventTraceClass = trace_class self.trace_subclass: EventTraceSubclass = trace_subclass self.data: 'tuple[str, str|dict|IntEnum]' = data
class EventTraceClass (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Event Trace categories for the NIMO modem.
Expand source code
class EventTraceClass(NimoIntEnum): """Event Trace categories for the NIMO modem.""" HARDWARE_FAULT = 1 SYSTEM = 2 SATELLITE = 3 GNSS = 4 MESSAGE = 5
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var GNSS
var HARDWARE_FAULT
var MESSAGE
var SATELLITE
var SYSTEM
Inherited members
class EventTraceGnss (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Event Trace subcategories for NIMO modem GNSS events.
Expand source code
class EventTraceGnss(EventTraceSubclass): """Event Trace subcategories for NIMO modem GNSS events.""" FIX_STATS = 1 DOPPLER = 4
Ancestors
- EventTraceSubclass
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var DOPPLER
var FIX_STATS
Inherited members
class EventTraceMessage (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Event Trace subcategories for NIMO modem Message events.
Expand source code
class EventTraceMessage(EventTraceSubclass): """Event Trace subcategories for NIMO modem Message events.""" RECEIVE_STATS = 1 TRANSMIT_STATS = 2 TRANSMIT_UTILITY = 3
Ancestors
- EventTraceSubclass
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var RECEIVE_STATS
var TRANSMIT_STATS
var TRANSMIT_UTILITY
Inherited members
class EventTraceSatellite (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Event Trace subcategories for NIMO modem Satellite events.
Expand source code
class EventTraceSatellite(EventTraceSubclass): """Event Trace subcategories for NIMO modem Satellite events.""" RX_STATUS = 1 TX_STATUS = 2 BEAM_CONNECT = 3 BEAM_SEARCH_RESULT = 4 GEO_ADJUST = 5 EVENT_LOG = 6 RX_METRICS_SUBFRAME = 16 RX_METRICS_MINUTE = 17 RX_METRICS_HOUR = 18 RX_METRICS_DAY = 19 TX_METRICS_SUBFRAME = 20 TX_METRICS_MINUTE = 21 TX_METRICS_HOUR = 22 TX_METRICS_DAY = 23
Ancestors
- EventTraceSubclass
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var BEAM_CONNECT
var BEAM_SEARCH_RESULT
var EVENT_LOG
var GEO_ADJUST
var RX_METRICS_DAY
var RX_METRICS_HOUR
var RX_METRICS_MINUTE
var RX_METRICS_SUBFRAME
var RX_STATUS
var TX_METRICS_DAY
var TX_METRICS_HOUR
var TX_METRICS_MINUTE
var TX_METRICS_SUBFRAME
var TX_STATUS
Inherited members
class EventTraceSubclass (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Base class for trace subclasses
Expand source code
class EventTraceSubclass(NimoIntEnum): """Base class for trace subclasses"""
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Subclasses
Inherited members
class EventTraceSystem (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Event Trace subcategories for NIMO modem System events.
Expand source code
class EventTraceSystem(EventTraceSubclass): """Event Trace subcategories for NIMO modem System events.""" RESET = 1 LOW_POWER = 2 SYSTEM_STATS = 3 SATCOM_STATS = 4
Ancestors
- EventTraceSubclass
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var LOW_POWER
var RESET
var SATCOM_STATS
var SYSTEM_STATS
Inherited members
class GeoBeam (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Geographic Beam identifiers mapped to readable names.
Expand source code
class GeoBeam(NimoIntEnum): """Geographic Beam identifiers mapped to readable names.""" GLOBAL_BB = 0 AMER_RB1 = 1 AMER_RB2 = 2 AMER_RB3 = 3 AMER_RB4 = 4 AMER_RB5 = 5 AMER_RB6 = 6 AMER_RB7 = 7 AMER_RB8 = 8 AMER_RB9 = 9 AMER_RB10 = 10 AMER_RB11 = 11 AMER_RB12 = 12 AMER_RB13 = 13 AMER_RB14 = 14 AMER_RB15 = 15 AMER_RB16 = 16 AMER_RB17 = 17 AMER_RB18 = 18 AMER_RB19 = 19 AORW_SC = 61 EMEA_RB1 = 21 EMEA_RB2 = 22 EMEA_RB3 = 23 EMEA_RB4 = 24 EMEA_RB5 = 25 EMEA_RB6 = 26 EMEA_RB7 = 27 EMEA_RB8 = 28 EMEA_RB9 = 29 EMEA_RB10 = 30 EMEA_RB11 = 31 EMEA_RB12 = 32 EMEA_RB13 = 33 EMEA_RB14 = 34 EMEA_RB15 = 35 EMEA_RB16 = 36 EMEA_RB17 = 37 EMEA_RB18 = 38 EMEA_RB19 = 39 APAC_RB1 = 41 APAC_RB2 = 42 APAC_RB3 = 43 APAC_RB4 = 44 APAC_RB5 = 45 APAC_RB6 = 46 APAC_RB7 = 47 APAC_RB8 = 48 APAC_RB9 = 49 APAC_RB10 = 50 APAC_RB11 = 51 APAC_RB12 = 52 APAC_RB13 = 53 APAC_RB14 = 54 APAC_RB15 = 55 APAC_RB16 = 56 APAC_RB17 = 57 APAC_RB18 = 58 APAC_RB19 = 59 # MEAS_RB10 = 90 # replaced by IOE # MEAS_RB11 = 91 # replaced by IOE # MEAS_RB12 = 92 # replaced by IOE # MEAS_RB15 = 93 # replaced by IOE IOE_RB1 = 101 IOE_RB2 = 102 IOE_RB3 = 103 IOE_RB4 = 104 IOE_RB5 = 105 IOE_RB6 = 106 IOE_RB7 = 107 IOE_RB8 = 108 IOE_RB9 = 109 IOE_RB10 = 110 IOE_RB11 = 111 IOE_RB12 = 112 IOE_RB13 = 113 IOE_RB14 = 114 IOE_RB15 = 115 IOE_RB16 = 116 IOE_RB17 = 117 IOE_RB18 = 118 IOE_RB19 = 119 @property def satellite(self): return self.name.split('_')[0] @property def beam(self): return self.name.split('_')[1] @property def id(self): return self.value
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var AMER_RB1
var AMER_RB10
var AMER_RB11
var AMER_RB12
var AMER_RB13
var AMER_RB14
var AMER_RB15
var AMER_RB16
var AMER_RB17
var AMER_RB18
var AMER_RB19
var AMER_RB2
var AMER_RB3
var AMER_RB4
var AMER_RB5
var AMER_RB6
var AMER_RB7
var AMER_RB8
var AMER_RB9
var AORW_SC
var APAC_RB1
var APAC_RB10
var APAC_RB11
var APAC_RB12
var APAC_RB13
var APAC_RB14
var APAC_RB15
var APAC_RB16
var APAC_RB17
var APAC_RB18
var APAC_RB19
var APAC_RB2
var APAC_RB3
var APAC_RB4
var APAC_RB5
var APAC_RB6
var APAC_RB7
var APAC_RB8
var APAC_RB9
var EMEA_RB1
var EMEA_RB10
var EMEA_RB11
var EMEA_RB12
var EMEA_RB13
var EMEA_RB14
var EMEA_RB15
var EMEA_RB16
var EMEA_RB17
var EMEA_RB18
var EMEA_RB19
var EMEA_RB2
var EMEA_RB3
var EMEA_RB4
var EMEA_RB5
var EMEA_RB6
var EMEA_RB7
var EMEA_RB8
var EMEA_RB9
var GLOBAL_BB
var IOE_RB1
var IOE_RB10
var IOE_RB11
var IOE_RB12
var IOE_RB13
var IOE_RB14
var IOE_RB15
var IOE_RB16
var IOE_RB17
var IOE_RB18
var IOE_RB19
var IOE_RB2
var IOE_RB3
var IOE_RB4
var IOE_RB5
var IOE_RB6
var IOE_RB7
var IOE_RB8
var IOE_RB9
Instance variables
var beam
-
Expand source code
@property def beam(self): return self.name.split('_')[1]
var id
-
Expand source code
@property def id(self): return self.value
var satellite
-
Expand source code
@property def satellite(self): return self.name.split('_')[0]
Inherited members
class GeoSatellite (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Maps the Viasat/Inmarsat geostationary longitude supporting NIMO.
Expand source code
class GeoSatellite(NimoFloatEnum): """Maps the Viasat/Inmarsat geostationary longitude supporting NIMO.""" AMER = -98.0 # Inmarsat 4F3 AORWSC = -54.0 # Inmarsat 3F5 EMEA = 24.9 # Inmarsat 4AF4 aka Alphasat XL IOE = 63.5 # Inmarsat 6F1 previously IOR 3F1, MEAS 4F2 APAC = 143.5 # Inmarsat 4F2 previously 4F1
Ancestors
- NimoFloatEnum
- enum.Enum
Class variables
var AMER
var AORWSC
var APAC
var EMEA
var IOE
Inherited members
class GnssDynamicPlatformModel (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
The dynamic acquisition and tracking model used by the modem's GNSS.
SUPPORTED ON SELECT MODEMS ONLY. CONSULT MANUFACTURER PRIOR TO USE.
Expand source code
class GnssDynamicPlatformModel(NimoIntEnum): """The dynamic acquisition and tracking model used by the modem's GNSS. SUPPORTED ON SELECT MODEMS ONLY. CONSULT MANUFACTURER PRIOR TO USE. """ PORTABLE = 0 STATIONARY = 2 PEDESTRIAN = 3 AUTOMOTIVE = 4 SEA = 5 AIR_1G = 6 AIR_2G = 7 AIR_4G = 8
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var AIR_1G
var AIR_2G
var AIR_4G
var AUTOMOTIVE
var PEDESTRIAN
var PORTABLE
var SEA
var STATIONARY
Inherited members
class GnssMode (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Base class for manufacturer-specific variants.
Expand source code
class GnssMode(NimoIntEnum): """Base class for manufacturer-specific variants."""
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Subclasses
Inherited members
class GnssModeOrbcomm (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
The operating mode setting for the built-in GNSS in a NIMO modem.
Expand source code
class GnssModeOrbcomm(GnssMode): """The operating mode setting for the built-in GNSS in a NIMO modem.""" GPS = 0 GLONASS = 1 BEIDOU = 2 GALILEO = 3 GPS_GLONASS = 10 GPS_BEIDOU = 11 GLONASS_BEIDOU = 12 GPS_GALILEO = 13 GLONASS_GALILEO = 14 BEIDOU_GALILEO = 15
Ancestors
- GnssMode
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var BEIDOU
var BEIDOU_GALILEO
var GALILEO
var GLONASS
var GLONASS_BEIDOU
var GLONASS_GALILEO
var GPS
var GPS_BEIDOU
var GPS_GALILEO
var GPS_GLONASS
Inherited members
class GnssModeQuectel (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
An enumeration.
Expand source code
class GnssModeQuectel(GnssMode): GPS = 0 GPS_BDS = 1 GPS_GLONASS = 2 GPS_GALILEO = 3 GPS_GLONASS_GALILEO_BDS = 4
Ancestors
- GnssMode
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var GPS
var GPS_BDS
var GPS_GALILEO
var GPS_GLONASS
var GPS_GLONASS_GALILEO_BDS
Inherited members
class MessagePriority (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Message priorities for NIMO modem messages.
Expand source code
class MessagePriority(NimoIntEnum): """Message priorities for NIMO modem messages.""" NONE = 0 HIGH = 1 MEDH = 2 MEDL = 3 LOW = 4
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var HIGH
var LOW
var MEDH
var MEDL
var NONE
Inherited members
class MessageState (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Message states of NIMO modem messages.
Expand source code
class MessageState(NimoIntEnum): """Message states of NIMO modem messages.""" UNAVAILABLE = 0 RX_PENDING = 1 RX_COMPLETE = 2 RX_RETRIEVED = 3 TX_READY = 4 TX_SENDING = 5 TX_COMPLETE = 6 TX_FAILED = 7 TX_CANCELLED = 8
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var RX_COMPLETE
var RX_PENDING
var RX_RETRIEVED
var TX_CANCELLED
var TX_COMPLETE
var TX_FAILED
var TX_READY
var TX_SENDING
var UNAVAILABLE
Inherited members
class NetworkStatus (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Simplified state of network acquisition and tracking.
Expand source code
class NetworkStatus(NimoIntEnum): """Simplified state of network acquisition and tracking.""" UNKNOWN = 0 RX_STOPPED = 1 RX_SEARCHING = 2 RX_ACQUIRING = 3 RX_ONLY_NOT_REGISTERED = 4 OK = 5 SUSPENDED = 6 MUTED = 7 BLOCKED = 8
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var BLOCKED
var MUTED
var OK
var RX_ACQUIRING
var RX_ONLY_NOT_REGISTERED
var RX_SEARCHING
var RX_STOPPED
var SUSPENDED
var UNKNOWN
Inherited members
class NimoFloatEnum (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Enum class wrapper with is_valid method.
Expand source code
class NimoFloatEnum(Enum): """Enum class wrapper with is_valid method.""" @classmethod def is_valid(cls, value) -> bool: """True if the value exists in the enumeration.""" return value in set(item.value for item in cls)
Ancestors
- enum.Enum
Subclasses
Static methods
def is_valid(value) ‑> bool
-
True if the value exists in the enumeration.
Expand source code
@classmethod def is_valid(cls, value) -> bool: """True if the value exists in the enumeration.""" return value in set(item.value for item in cls)
class NimoIntEnum (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
IntEnum class wrapper with is_valid method.
Expand source code
class NimoIntEnum(IntEnum): """IntEnum class wrapper with is_valid method.""" @classmethod def is_valid(cls, value) -> bool: """True if the value exists in the enumeration.""" return value in set(item.value for item in cls)
Ancestors
- enum.IntEnum
- builtins.int
- enum.Enum
Subclasses
- AtErrorCode
- AtParsingState
- BeamState
- ControlState
- DataFormat
- EventTraceClass
- EventTraceSubclass
- GeoBeam
- GnssDynamicPlatformModel
- GnssMode
- MessagePriority
- MessageState
- NetworkStatus
- PowerMode
- SignalQuality
- UrcCode
- WakeupPeriod
- WakeupWay
- WorkMode
- GnssFixQuality
- GnssFixType
Static methods
def is_valid(value) ‑> bool
-
True if the value exists in the enumeration.
Expand source code
@classmethod def is_valid(cls, value) -> bool: """True if the value exists in the enumeration.""" return value in set(item.value for item in cls)
class PowerMode (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
The Power Mode setting of the NIMO modem.
Implies various internal state machine settings for balancing power consumption against speed of recovery from line of sight blockages.
Expand source code
class PowerMode(NimoIntEnum): """The Power Mode setting of the NIMO modem. Implies various internal state machine settings for balancing power consumption against speed of recovery from line of sight blockages. """ MOBILE_POWERED = 0 FIXED_POWERED = 1 MOBILE_BATTERY = 2 FIXED_BATTERY = 3 MOBILE_MINIMAL = 4 MOBILE_PARKED = 5 def gnss_refresh_hours(self): """The minimum GNSS refresh interval [hours].""" if self.value == 0: return 3 if self.value == 1: return 24 if self.value == 2: return 6 if self.value == 3: return 14 * 24 if self.value == 4: return 12 if self.value == 5: return 24 def transmit_lifetime_seconds(self): """The maximum duration of a message in the transmit queue [seconds].""" if self.value in [0, 1]: return 3 * 3600 return 3 * 60 def beam_search_interval_seconds(self): """The minimum time between background beam searches [seconds].""" if self.value in [0, 2, 4]: return 20 * 60 return 60 * 60 def short_term_blockage_seconds(self): """The time in blockage before initiating a beam search [seconds].""" if self.value in [0, 1]: return 5 * 60 if self.value in [2, 3, 4]: return 20 * 60 return 15 * 60 def beam_search_maximum_seconds(self): """The maximum backoff interval between searches when blocked [seconds]. """ if self.value in [0, 1]: return 0 return 1600 * 60
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var FIXED_BATTERY
var FIXED_POWERED
var MOBILE_BATTERY
var MOBILE_MINIMAL
var MOBILE_PARKED
var MOBILE_POWERED
Methods
def beam_search_interval_seconds(self)
-
The minimum time between background beam searches [seconds].
Expand source code
def beam_search_interval_seconds(self): """The minimum time between background beam searches [seconds].""" if self.value in [0, 2, 4]: return 20 * 60 return 60 * 60
def beam_search_maximum_seconds(self)
-
The maximum backoff interval between searches when blocked [seconds].
Expand source code
def beam_search_maximum_seconds(self): """The maximum backoff interval between searches when blocked [seconds]. """ if self.value in [0, 1]: return 0 return 1600 * 60
def gnss_refresh_hours(self)
-
The minimum GNSS refresh interval [hours].
Expand source code
def gnss_refresh_hours(self): """The minimum GNSS refresh interval [hours].""" if self.value == 0: return 3 if self.value == 1: return 24 if self.value == 2: return 6 if self.value == 3: return 14 * 24 if self.value == 4: return 12 if self.value == 5: return 24
def short_term_blockage_seconds(self)
-
The time in blockage before initiating a beam search [seconds].
Expand source code
def short_term_blockage_seconds(self): """The time in blockage before initiating a beam search [seconds].""" if self.value in [0, 1]: return 5 * 60 if self.value in [2, 3, 4]: return 20 * 60 return 15 * 60
def transmit_lifetime_seconds(self)
-
The maximum duration of a message in the transmit queue [seconds].
Expand source code
def transmit_lifetime_seconds(self): """The maximum duration of a message in the transmit queue [seconds].""" if self.value in [0, 1]: return 3 * 3600 return 3 * 60
Inherited members
class SignalLevelRegional (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Qualitative descriptors for SNR/CN0 values for a NIMO Regional Beam.
BARS_n: n is a scale from 0..5 to be used as greaterThan threshold NONE, MARGINAL, GOOD: a scale to be used as greaterOrEqual threshold
Expand source code
class SignalLevelRegional(NimoFloatEnum): """Qualitative descriptors for SNR/CN0 values for a NIMO Regional Beam. BARS_n: *n* is a scale from 0..5 to be used as greaterThan threshold NONE, MARGINAL, GOOD: a scale to be used as greaterOrEqual threshold """ BARS_0 = 0 BARS_1 = 37.0 BARS_2 = 39.0 BARS_3 = 41.0 BARS_4 = 43.0 BARS_5 = 45.5 INVALID = 55.0
Ancestors
- NimoFloatEnum
- enum.Enum
Class variables
var BARS_0
var BARS_1
var BARS_2
var BARS_3
var BARS_4
var BARS_5
var INVALID
Inherited members
class SignalQuality (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Qualitative descriptor corresponding to a SignalLevel
Expand source code
class SignalQuality(NimoIntEnum): """Qualitative descriptor corresponding to a SignalLevel""" NONE = 0 WEAK = 1 LOW = 2 MID = 3 GOOD = 4 STRONG = 5 WARNING = 6
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var GOOD
var LOW
var MID
var NONE
var STRONG
var WARNING
var WEAK
Inherited members
class UrcCode (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Quectel URC code map.
Expand source code
class UrcCode(NimoIntEnum): """Quectel URC code map.""" GPS_FIX = 0 RX_END = 1 TX_END = 2 REGED = 3 ITV_CHG = 4 TIME_UPD = 5 GPS_TMO = 6 PLG_RESP = 7
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var GPS_FIX
var GPS_TMO
var ITV_CHG
var PLG_RESP
var REGED
var RX_END
var TIME_UPD
var TX_END
Inherited members
class UrcControl (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Control bits for Quectel Unsolicited Response Codes.
Expand source code
class UrcControl(IntFlag): """Control bits for Quectel Unsolicited Response Codes.""" GNSS_FIX_NEW = 0b00000001 MESSAGE_MT_RECEIVED = 0b00000010 MESSAGE_MO_COMPLETE = 0b00000100 NETWORK_REGISTERED = 0b00001000 WAKEUP_PERIOD_CHANGE = 0b00010000 UTC_TIME_SYNC = 0b00100000 GNSS_FIX_TIMEOUT = 0b01000000 NETWORK_PING_ACKNOWLEDGED = 0b10000000 @classmethod def get_events(cls, event_mask: int) -> 'list[EventNotification]': """Parses a bitmask to return a list of events.""" return [item for item in cls if item.value & event_mask]
Ancestors
- enum.IntFlag
- builtins.int
- enum.Flag
- enum.Enum
Class variables
var GNSS_FIX_NEW
var GNSS_FIX_TIMEOUT
var MESSAGE_MO_COMPLETE
var MESSAGE_MT_RECEIVED
var NETWORK_PING_ACKNOWLEDGED
var NETWORK_REGISTERED
var UTC_TIME_SYNC
var WAKEUP_PERIOD_CHANGE
Static methods
def get_events(event_mask: int) ‑> list[EventNotification]
-
Parses a bitmask to return a list of events.
Expand source code
@classmethod def get_events(cls, event_mask: int) -> 'list[EventNotification]': """Parses a bitmask to return a list of events.""" return [item for item in cls if item.value & event_mask]
class WakeupPeriod (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
The Wakeup Period setting of a NIMO modem.
Determines how often the modem wakes up to listen briefly for potential mobile-terminated messages to be delivered by the network.
Expand source code
class WakeupPeriod(NimoIntEnum): """The Wakeup Period setting of a NIMO modem. Determines how often the modem wakes up to listen briefly for potential mobile-terminated messages to be delivered by the network. """ NONE = 0 # 5 seconds SECONDS_30 = 1 MINUTES_1 = 2 MINUTES_3 = 3 MINUTES_10 = 4 MINUTES_30 = 5 MINUTES_60 = 6 MINUTES_2 = 7 MINUTES_5 = 8 MINUTES_15 = 9 MINUTES_20 = 10 def seconds(self): if self.name == 'NONE': return 5 value = int(self.name.split('_'))[1] if self.name.startswith('MINUTES'): return value * 60 return value
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var MINUTES_1
var MINUTES_10
var MINUTES_15
var MINUTES_2
var MINUTES_20
var MINUTES_3
var MINUTES_30
var MINUTES_5
var MINUTES_60
var NONE
var SECONDS_30
Methods
def seconds(self)
-
Expand source code
def seconds(self): if self.name == 'NONE': return 5 value = int(self.name.split('_'))[1] if self.name.startswith('MINUTES'): return value * 60 return value
Inherited members
class WakeupWay (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Quectel CC200A-LB wakeup methods.
Expand source code
class WakeupWay(NimoIntEnum): """Quectel CC200A-LB wakeup methods.""" WAKEUP_PIN = 0 UART = 1
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var UART
var WAKEUP_PIN
Inherited members
class WorkMode (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
Quectel CC200A-LB working modes.
Expand source code
class WorkMode(NimoIntEnum): """Quectel CC200A-LB working modes.""" WORKING = 1 GNSS = 2 PERIODIC_SLEEP = 3
Ancestors
- NimoIntEnum
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var GNSS
var PERIODIC_SLEEP
var WORKING
Inherited members