{ "info": { "author": "Reinhard Panhuber", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "[![pipeline status](https://gitlab.com/PaniR/rero/badges/master/pipeline.svg)](https://gitlab.com/PaniR/rero/commits/master)\n[![coverage report](https://gitlab.com/PaniR/rero/badges/master/coverage.svg)](https://gitlab.com/PaniR/rero/commits/master)\n[![PyPI version](https://badge.fury.io/py/rero.svg)](https://badge.fury.io/py/rero)\n\n*Rero* is an efficient communication protocol intended for transmissions of byte frames over e.g. a serial interface or buses.\nIt builds upon [COBS](https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing) which allows for a minimum encoding overhead.\nIt is perfectly suited for MCUs with DMA support.\n\nDid somebody asked what is it good for? Here are some qualities of Rero:\n\n| Quality | How | Good for |\n|-------------|------------------------------|--------------------------------------|\n| Reliable | CRC check | Checking integrity of frame |\n| Robust | [COBS](https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing) and [COBSR](https://github.com/cmcqueen/cobs-c) byte stuffing | Easy to resynchronize byte stream |\n| Efficient | Exploit properties of COBS and COBSR | Minimum processing overhead |\n| Scalable | Customize Rero to your needs | Minimize frame overhead |\n| Bus-capable | Optional address field | Address frame for specific recipient |\n\nA C implementation written for STM32 MCUs is available [here](https://gitlab.com/PaniR/rero_stm32). It builds upon a very efficient ring buffer implementation tailored for UART interfaces, which of course utilizes DMA support for transmission and reception.\n\n## Quick start\n\nRero requires Python 3.5 or newer to run.\n\n```bash\n$ pip install rero\n```\n\n## Usage\n\n```python\nimport rero\n\nreroPacker = rero.Packer(1) \t# own address = 1\n\n# Dummy payload\npayload = bytes([1, 2, 3, 4])\n\nmsgToSend = reroPacker.pack(payload, 20) # Packing with dedicated address = 20\n\n# msgToSend may now be sent e.g. by use of pySerial...\n\n# Unpack received frame\nfor payloadRcd in reroPacker.unpack(msgToSend):\n\tprint(payloadRcd)\n```\n\t\nFurther examples are given in the [docs](https://panir.gitlab.io/rero).\n\n## Documentation\n\nYou can find the documentation at [here](https://panir.gitlab.io/rero).\n\n## Contribution\nFor information on how to contribute to the project, please check the [Contributor's Guide](CONTRIBUTING.md).\n\n## Contact\nPlease use the [Gitlab service desk](incoming+panir-rero-11417024-issue-@incoming.gitlab.com) or if you have a Gitlab account you may directly open an [issue](https://gitlab.com/PaniR/rero/issues).\n\n## License\n[MIT License](LICENSE)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://panir.gitlab.io/rero", "keywords": "protocol,efficient,scalable,DMA,MCU", "license": "MIT", "maintainer": "Reinhard Panhuber", "maintainer_email": "", "name": "rero", "package_url": "https://pypi.org/project/rero/", "platform": "", "project_url": "https://pypi.org/project/rero/", "project_urls": { "Documentation": "https://panir.gitlab.io/rero", "Homepage": "https://panir.gitlab.io/rero", "Repository": "https://gitlab.com/PaniR/rero" }, "release_url": "https://pypi.org/project/rero/1.0.1/", "requires_dist": [ "crcmod (>=1.7,<2.0)", "cobs (>=1.1,<2.0)" ], "requires_python": ">=3.5,<4.0", "summary": "Rero is a transmission protocol suitable for efficient, reliable, and robust communication especially well suited for DMA supported MCU operations.", "version": "1.0.1" }, "last_serial": 5963905, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "0614a493298b8b41d9b5882113b98ffa", "sha256": "17d9986af2b707fee163a856cd11997804e2fdf887de644434f1c2a8fff858e4" }, "downloads": -1, "filename": "rero-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0614a493298b8b41d9b5882113b98ffa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 12049, "upload_time": "2019-09-24T17:29:31", "url": "https://files.pythonhosted.org/packages/f1/bd/53562e1df9aa118d03a178907dd9429a9adc5f672f0a4f3d19dd61fa9ad3/rero-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0009ae79c0229e6d80380322dba998d", "sha256": "b2c797d84126c8b6bbea2ee96c64da7120befb47a6e4b3e6a7bcdc278961367a" }, "downloads": -1, "filename": "rero-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a0009ae79c0229e6d80380322dba998d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 11729, "upload_time": "2019-09-24T17:29:33", "url": "https://files.pythonhosted.org/packages/4c/9a/3719b55478acb884e98453f28b239d7b8fa0f497264717c4069905ef2959/rero-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "5c569a5ff41bdfb5515ca6805a6b9061", "sha256": "38c86aef3d414d02a2ce1f178817a6978ec28891a2fe54182a971df835d65895" }, "downloads": -1, "filename": "rero-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5c569a5ff41bdfb5515ca6805a6b9061", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 12250, "upload_time": "2019-10-12T11:10:18", "url": "https://files.pythonhosted.org/packages/91/ff/45b142416cf6c4e41da72a9262e8b85597eb9df7f2ef67f90112f3915306/rero-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8be9c455b410feeecc400ebb5a3353bd", "sha256": "344b87be42f3a727ddf9801eb219e5ea869fceff185575932ec3803cc4193372" }, "downloads": -1, "filename": "rero-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8be9c455b410feeecc400ebb5a3353bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 12143, "upload_time": "2019-10-12T11:10:19", "url": "https://files.pythonhosted.org/packages/00/61/38d9dba12b4e7cb5222ceba113bc66f4dba99754260493a71e5eea41313b/rero-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5c569a5ff41bdfb5515ca6805a6b9061", "sha256": "38c86aef3d414d02a2ce1f178817a6978ec28891a2fe54182a971df835d65895" }, "downloads": -1, "filename": "rero-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5c569a5ff41bdfb5515ca6805a6b9061", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 12250, "upload_time": "2019-10-12T11:10:18", "url": "https://files.pythonhosted.org/packages/91/ff/45b142416cf6c4e41da72a9262e8b85597eb9df7f2ef67f90112f3915306/rero-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8be9c455b410feeecc400ebb5a3353bd", "sha256": "344b87be42f3a727ddf9801eb219e5ea869fceff185575932ec3803cc4193372" }, "downloads": -1, "filename": "rero-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8be9c455b410feeecc400ebb5a3353bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 12143, "upload_time": "2019-10-12T11:10:19", "url": "https://files.pythonhosted.org/packages/00/61/38d9dba12b4e7cb5222ceba113bc66f4dba99754260493a71e5eea41313b/rero-1.0.1.tar.gz" } ] }