{"id":17647304,"url":"https://github.com/ironsheep/p2-octoserial-subsystem","last_synced_at":"2025-07-28T08:46:16.064Z","repository":{"id":68978306,"uuid":"567877601","full_name":"ironsheep/P2-OctoSerial-subsystem","owner":"ironsheep","description":"A Parallax Propeller V2 Object Set for maintaining eight simultaneous serial ports","archived":false,"fork":false,"pushed_at":"2024-03-11T05:31:48.000Z","size":35440,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T07:29:37.799Z","etag":null,"topics":["multiport","p2","parallax-propeller","pasm2","propeller2","serial-communication","spin2"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ironsheep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ironsheep","patreon":"IronSheep"}},"created_at":"2022-11-18T19:53:51.000Z","updated_at":"2025-01-03T22:30:42.000Z","dependencies_parsed_at":"2024-03-11T06:41:47.040Z","dependency_job_id":null,"html_url":"https://github.com/ironsheep/P2-OctoSerial-subsystem","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ironsheep/P2-OctoSerial-subsystem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironsheep%2FP2-OctoSerial-subsystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironsheep%2FP2-OctoSerial-subsystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironsheep%2FP2-OctoSerial-subsystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironsheep%2FP2-OctoSerial-subsystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ironsheep","download_url":"https://codeload.github.com/ironsheep/P2-OctoSerial-subsystem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironsheep%2FP2-OctoSerial-subsystem/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267488253,"owners_count":24095779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multiport","p2","parallax-propeller","pasm2","propeller2","serial-communication","spin2"],"created_at":"2024-10-23T11:12:08.298Z","updated_at":"2025-07-28T08:46:16.028Z","avatar_url":"https://github.com/ironsheep.png","language":"Python","funding_links":["https://github.com/sponsors/ironsheep","https://patreon.com/IronSheep","https://www.buymeacoffee.com/ironsheep","https://www.patreon.com/IronSheep?fan_landing=true"],"categories":[],"sub_categories":[],"readme":"# P2-OctoSerial-subsystem\nA Parallax Propeller v2 Object for maintaining a single or 2-8 simultaneous serial ports using one COG\n\n![Project Maintenance][maintenance-shield]\n\n[![License][license-shield]](LICENSE)\n\n## 8 Serial Ports using a single COG\n\nA single COG services from 1 to 8 Tx/Rx pairs of pins.  The pins are configured as smart-pins which means that the driver feeds bytes to transmit pins when needed and get bytes from receive pins when bytes are available. This backend driver is written in pasm2. The interface routines are written in spin2.\n\nA method is supplied that interprets newlines (0x0A) as line ends. (This allows the driver to work with LF or CRLF terminated lines.). This method when called frequently enough unloads the back-end circular buffers into string buffers, one for each active port. When a string has completely arrive it returns the complete strings.\n\n## Table of Contents\n\nOn this Page:\n\n- [Driver Features](#driver-features)\n- [How to contribute](#how-to-contribute)\n\nAdditional pages:\n\n- [Performance Measurement](VERIFY.md) - see timing information from measurements taken on 8-port test system\n- [Add serial ports to your project using this object](DEVELOP.md) - Walks thru configuration and setup of serial ports in your own project\n\n### Driver Features\n\nKey Features of this driver:\n\n- Round robbin handling of active ports (not priority based)\n- Only active ports are in round robbin\n- 8 Active tx/rx port pairs Certified to 26x 115_200 -\u003e 2\\_995\\_200 baud (w/clk at 300 MHz)\n  - Hours of traffic run through all 8 ports P2 \u003c-\u003e P2 with no data corruption or loss at speed\n  - All bytes of each message verified\n\n### Current status\n\nLatest Changes:\n\n```\n2023-01-19 Further testing results\n- Tested with no failures at speeds (clock at 300MHz):\n  - 115_200\n  - 230_400 - 2x 115_200\n  - 640_000\n  - 2_000_000\n  - 2_995_200 - 26x 115_200\n  - Fails at 3_456_000 and above\n2022-11-23 Draft release v1.0.0\n- Services 1 to eight ports\n- Tested initial configuration: 115,200 bps, N81\n- Validated with serial decoding logic analyzer\n- Tested Raspberry Pi \u003c-\u003e P2\n- Tested P2 \u003c-\u003e P2\n```\n\n### Known Issues\n\nWe have more plans in the works:\n\n- Characterize: Find and document at this repo the highest speeds the driver can do against various devices without data loss\n- Add more discrete port control if users find a need (e.g., 2-stop bits, etc.)\n\n## How to Contribute\n\nThis is a project supporting our P2 Development Community. Please feel free to contribute to this project. You can contribute in the following ways:\n\n- File **Feature Requests** or **Issues** (describing things you are seeing while using our code) at the [Project Issue Tracking Page](https://github.com/ironsheep/P2-OctoSerial-subsystem/issues)\n- Fork this repo and then add your code to it. Finally, create a Pull Request to contribute your code back to this repository for inclusion with the projects code. See [CONTRIBUTING](CONTRIBUTING.md)\n\n---\n\n\u003e If you like my work and/or this has helped you in some way then feel free to help me out for a couple of :coffee:'s or :pizza: slices!\n\u003e\n\u003e [![coffee](https://www.buymeacoffee.com/assets/img/custom_images/black_img.png)](https://www.buymeacoffee.com/ironsheep) \u0026nbsp;\u0026nbsp; -OR- \u0026nbsp;\u0026nbsp; [![Patreon](./images/patreon.png)](https://www.patreon.com/IronSheep?fan_landing=true)[Patreon.com/IronSheep](https://www.patreon.com/IronSheep?fan_landing=true)\n\n---\n\n## Disclaimer and Legal\n\n\u003e *Parallax, Propeller Spin, and the Parallax and Propeller Hat logos* are trademarks of Parallax Inc., dba Parallax Semiconductor\n\u003e\n\u003e This project is a community project not for commercial use.\n\u003e\n\u003e This project is in no way affiliated with, authorized, maintained, sponsored or endorsed by *Parallax Inc., dba Parallax Semiconductor* or any of its affiliates or subsidiaries.\n\n---\n\n## License\n\nLicensed under the MIT License.\n\nFollow these links for more information:\n\n### [Copyright](copyright) | [License](LICENSE)\n\n[maintenance-shield]: https://img.shields.io/badge/maintainer-stephen%40ironsheep%2ebiz-blue.svg?style=for-the-badge\n\n[license-shield]: https://img.shields.io/badge/License-MIT-yellow.svg\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fironsheep%2Fp2-octoserial-subsystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fironsheep%2Fp2-octoserial-subsystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fironsheep%2Fp2-octoserial-subsystem/lists"}