Skip to main content

Vendor-neutral telematics seam for mgf-common consumers — the TelematicsProvider device-session ABC, the codec-agnostic AVL frame types, the typed error hierarchy, and a scripted mock. Per-vendor codecs (mgf-tele-teltonika, …) build on this. Sibling of mgf-common under the mgf.* namespace.

Project description

mgf-tele-core

The vendor-neutral telematics seam for mgf-common consumers: the TelematicsProvider device-session ABC, the codec-agnostic AVL frame types, a typed error hierarchy, and a scripted mock. A sibling of mgf-common under the mgf.* namespace, and the foundation of the mgf-tele-* family — per-vendor codec packages (mgf-tele-teltonika, later mgf-tele-queclink, …) depend on this and never the other way.

Extracted from PlasmaMapper's ingest path (ADR-010's two-layer seam): the provider owns the device session; a per-vendor codec is a pure bytes → DecodedAvlRecord dependency injected into it.

Install

pip install mgf-tele-core

What's in it

Name What
TelematicsProvider the device-session ABC: open_session / receive_packet / send_command / close_session
SessionHandle / TrackerCommand / CommandAck the seam's command/session vocabulary
GeoPoint / DecodedAvlRecord / ReceivedPacket / ParseStatus codec-agnostic AVL frame types (every vendor normalises to these)
TelematicsError (+ MalformedPacketError, ChecksumError, UnsupportedCodecError, MalformedHandshakeError, UnknownTrackerError, SessionClosedError) typed errors, all subclass mgf.common.exceptions.AppError
mgf.tele.core.mock.MockTelematicsProvider scripted in-memory provider for consumers' tests

The two-layer shape

mgf-tele-core        TelematicsProvider (ABC)  +  AVL frame types  +  errors
      ▲
      │ depends on
mgf-tele-teltonika   Codec 8/8E/12 parser  +  TeltonikaProvider(codec)
mgf-tele-queclink    (future) …

A consumer wires a concrete provider into its ingest loop:

async def session_loop(provider: TelematicsProvider, reader, writer):
    handle = await provider.open_session(reader, writer)
    try:
        while True:
            packet = await provider.receive_packet(handle)   # ReceivedPacket
            persist_raw(packet)                               # always (forensic)
            if packet.parse_status == "ok":
                ingest(packet.records)                        # DecodedAvlRecord[]
    except SessionClosedError:
        pass
    finally:
        await provider.close_session(handle)

Tests use MockTelematicsProvider(batches=[…]) — no socket, no vendor codec — to drive the consumer's ingest logic deterministically.

Design notes

  • Frozen frame types (rule DP-03); UTC at the boundary (DP-12).
  • receive_packet always returns the raw bytes even on decode failure (parse_status"ok") so the consumer can persist a forensic record a future codec update may recover.
  • Read-only consumers may have their provider raise NotImplementedError from send_command until a control plane lands.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mgf_tele_core-0.1.3.tar.gz (90.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mgf_tele_core-0.1.3-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file mgf_tele_core-0.1.3.tar.gz.

File metadata

  • Download URL: mgf_tele_core-0.1.3.tar.gz
  • Upload date:
  • Size: 90.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_tele_core-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c7792dd6f1d522154a6c37df2920b8dd85b6a8d39c775347537f35f615e369f1
MD5 931d6a6491ae6d2c42bab6d8da988d25
BLAKE2b-256 f46d301a420368e35d5463d8aae5b07d5cc64e6895ccb125209f7d29db91cc8e

See more details on using hashes here.

File details

Details for the file mgf_tele_core-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: mgf_tele_core-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_tele_core-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2a409b7c1736cfc0ec5456d2a1fc89eb255fac71652aecfc2d7d9ec5b2573433
MD5 e3696b0d39f450add691564527081f1f
BLAKE2b-256 e6344ba081d178d92ce4a1becf2d1def3b24f9f164747e965abab776a0e920b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page