Skip to main content

Protocol abstraction and parser for embedded devices

Project description

ci Actions Status

mm_pal (Memory Map Protocol Abstraction Layer)

Python package for providing an runtime access to embedded devices based on a memory map type interface.

Description

This package consists of base classes to build interfaces and a mock device used for testing and as an example of implementation.

Device connection such as serial and parsers such as json are used to get standard output.

Concept

Embedded devices are generally constrained and communication with runtime parameters can take up lots of resources. Since many users of microcontroller are familiar with the concept of a memory map or register map the Memory Map Manager can be used as and lightweight way of coordinating a single memory map for documentation, C structures, and python interface. The mm_pal provides the building blocks for a custom interface. All common functions related to connecting to the device, parsing output of the registers, and reading/writing to the registers are handled and only application specific functionality needs to be implemented. This can make development easier, especially when the registers are changing frequently.

Architecture

┏━━━━━━━━━━━┓       ┏━━━━━━━━━┓
┃ developer ┃       ┃ script  ┃
┗━━━━━▲━━━━━┛       ┗━━━━▲━━━━┛
      ┃                  ┃
 ┏━━━━┸━━━━┓       ┏━━━━━┸━━━━━┓
 ┃ my_cli  ◄━━━━━━━┫ my_app_if ┃
 ┗━━━━▲━━━━┛       ┗━━━━━▲━━━━━┛
      ┃    ┌────────┐    ┃
      ┃    │ mm_pal │    ┃
┌─────╂────┴────────┴────╂────────┐
│┏━━━━┸━━━┓          ┏━━━┸━━━┓    │
│┃ mm_cmd ◄━━━━━━━━━━┫ mm_if ┃    │
│┗━━━━━━━━┛          ┗━━━▲━━━┛    │
│                        ┃        │
│                ┏━━━━━━━┸━━━━━━━┓│
│                ┃ serial_driver ┃│
│                ┗━━━━━━━▲━━━━━━━┛│
└────────────────────────╂────────┘
                         ┃
              ┏━━━━━━━━━━▼━━━━━━━━━━┓
              ┃ my_embedded_device  ┃
              ┗━━━━━━━━━━━━━━━━━━━━━┛

Installing package

To install mm_pal use pip:

pip install mm_pal --user

Note: only use python 3 which may require pip3

To install from sources:

./setup.py install --force --user

Note: setuptools package should be installed.

Using the package

This package is meant to be built upon. An example implementation is done with the mock_if and the mock_cli.

The mm_cmd is based on the cmd2 module is probably worth reading the documenation.

Useful commands

To regenerate documentation use: sphinx-apidoc -f -o docs/source/ mm_pal mock_pal; make html -C docs/

Testing

To test the package with pytest must be installed installed and updated.

Using ./setup.py test or tox will perform tests on the source package.

Special thanks to riotctrl as it served as a great example.

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

mm_pal-1.2.1.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

mm_pal-1.2.1-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file mm_pal-1.2.1.tar.gz.

File metadata

  • Download URL: mm_pal-1.2.1.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for mm_pal-1.2.1.tar.gz
Algorithm Hash digest
SHA256 537e917b5377d18e08c4f94e0be8cf741f70c6c4d20ea0c52611c9122a03f59e
MD5 39ebfefa94a461f9a7cadead0479a8c7
BLAKE2b-256 9b271f01b345f637c50e930eb1fb137565ca92ae9843d571933479c300907a0a

See more details on using hashes here.

File details

Details for the file mm_pal-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: mm_pal-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for mm_pal-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d6bcf70b9d32393ba717bccc0ae03aec7c49eabca13686bdbedb73c7abff9e8a
MD5 04b976b275a9086c3b0c08c40cf9a228
BLAKE2b-256 6270d6b514f71a426ddc324008118f91ae2611109023cfc9ab2086c9ed1f4e1a

See more details on using hashes here.

Supported by

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