# pynimcodec
A set of message codecs for use with satellite IoT products implemented
in Python.
## Compact Binary Codec (CBC)
A Python implementation of
[Viasat CBC](https://github.com/inmarsat-enterprise/compact-binary-codec)
## nimo
The NIMO message codec was designed by ORBCOMM and represents an efficient
binary data packing for various data types at a bit-level.
This module also provides facilities to build a XML file compliant with the
ORBCOMM and/or Viasat *Message Definition File* concept to apply to messages
sent over the IsatData Pro service.
The principles of the NIMO *Common Message Format* are:
* First byte of payload is *Service Identification Number* (**SIN**)
representing a microservice running on an IoT device.
Each `<Service>` consists of `<ForwardMessages>` (e.g. commands) and/or
`<ReturnMessages>` (e.g. reports or responses from the IoT device).
SIN must be in a range 16..255.
> [!WARNING]
> SIN range 16..127 may *conflict* with certain ORBCOMM-reserved messages
> when using the ORBCOMM IDP service.
* Second byte of payload is *Message Identification Number* (**MIN**)
representing a remote operation such as a data report or a command.
The combination of **SIN** and **MIN** and direction (Forward/Return) enables
decoding of subsequent `<Fields>` containing data.
* Subsequent bytes of data are defined by `<Fields>` where each `<Field>` has
a data type such as `<SignedIntField>`, `<EnumField>`, etc.
These fields can be defined on individual bitwise boundaries, for example a
5-bit unsigned integer with maximum value 31, or a boolean single bit.
Raw data
{
"_id": null,
"home_page": "https://github.com/inmarsat-enterprise/pynimomodem",
"name": "pynimcodec",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "viasat, inmarsat, satellite, iot, idp, ogx, orbcomm",
"author": "geoffbrucepayne",
"author_email": "geoff.bruce-payne@inmarsat.com",
"download_url": "https://files.pythonhosted.org/packages/56/3a/45977882fd0ebf20fb6793c9a4856543cfcf326ae8514d9c035c5b5ee2ce/pynimcodec-0.4.8.tar.gz",
"platform": null,
"description": "# pynimcodec\n\nA set of message codecs for use with satellite IoT products implemented\nin Python.\n\n## Compact Binary Codec (CBC)\n\nA Python implementation of\n[Viasat CBC](https://github.com/inmarsat-enterprise/compact-binary-codec)\n\n## nimo\n\nThe NIMO message codec was designed by ORBCOMM and represents an efficient\nbinary data packing for various data types at a bit-level.\n\nThis module also provides facilities to build a XML file compliant with the\nORBCOMM and/or Viasat *Message Definition File* concept to apply to messages\nsent over the IsatData Pro service.\n\nThe principles of the NIMO *Common Message Format* are:\n\n* First byte of payload is *Service Identification Number* (**SIN**)\nrepresenting a microservice running on an IoT device.\nEach `<Service>` consists of `<ForwardMessages>` (e.g. commands) and/or\n`<ReturnMessages>` (e.g. reports or responses from the IoT device).\nSIN must be in a range 16..255.\n \n> [!WARNING]\n> SIN range 16..127 may *conflict* with certain ORBCOMM-reserved messages\n> when using the ORBCOMM IDP service.\n\n* Second byte of payload is *Message Identification Number* (**MIN**)\nrepresenting a remote operation such as a data report or a command.\nThe combination of **SIN** and **MIN** and direction (Forward/Return) enables\ndecoding of subsequent `<Fields>` containing data.\n\n* Subsequent bytes of data are defined by `<Fields>` where each `<Field>` has\na data type such as `<SignedIntField>`, `<EnumField>`, etc.\nThese fields can be defined on individual bitwise boundaries, for example a\n5-bit unsigned integer with maximum value 31, or a boolean single bit.",
"bugtrack_url": null,
"license": "Apache2.0",
"summary": "Codecs for Satellite IoT messaging implemented in Python.",
"version": "0.4.8",
"project_urls": {
"Homepage": "https://github.com/inmarsat-enterprise/pynimomodem",
"Repository": "https://github.com/inmarsat-enterprise/pynimomodem"
},
"split_keywords": [
"viasat",
" inmarsat",
" satellite",
" iot",
" idp",
" ogx",
" orbcomm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "191d47a48333287ce6b3cd8896158febb45f3af26c4ef38c5ebccf9cb52cb919",
"md5": "aaaa4e7d771ec97b0ee0b5bcd64e15ac",
"sha256": "af4430196cbedeecf704c185820387523ff0eec232ec48e2ad8542152d6aeac8"
},
"downloads": -1,
"filename": "pynimcodec-0.4.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "aaaa4e7d771ec97b0ee0b5bcd64e15ac",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 72634,
"upload_time": "2025-01-22T16:43:11",
"upload_time_iso_8601": "2025-01-22T16:43:11.865072Z",
"url": "https://files.pythonhosted.org/packages/19/1d/47a48333287ce6b3cd8896158febb45f3af26c4ef38c5ebccf9cb52cb919/pynimcodec-0.4.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "563a45977882fd0ebf20fb6793c9a4856543cfcf326ae8514d9c035c5b5ee2ce",
"md5": "272bd82f9ab75d9aef1c3c5644fb345b",
"sha256": "9166140ece08cfc99161e56b65b56ed560407834f26515b6ff03e474dfa6d6b8"
},
"downloads": -1,
"filename": "pynimcodec-0.4.8.tar.gz",
"has_sig": false,
"md5_digest": "272bd82f9ab75d9aef1c3c5644fb345b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 43410,
"upload_time": "2025-01-22T16:43:12",
"upload_time_iso_8601": "2025-01-22T16:43:12.935618Z",
"url": "https://files.pythonhosted.org/packages/56/3a/45977882fd0ebf20fb6793c9a4856543cfcf326ae8514d9c035c5b5ee2ce/pynimcodec-0.4.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-22 16:43:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "inmarsat-enterprise",
"github_project": "pynimomodem",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pynimcodec"
}