{"id":19540916,"url":"https://github.com/mathieu52/gpsp","last_synced_at":"2026-05-16T15:06:28.203Z","repository":{"id":185072117,"uuid":"569384743","full_name":"Mathieu52/GPSP","owner":"Mathieu52","description":"Arduino General Purpose Serial Protocol","archived":false,"fork":false,"pushed_at":"2022-11-29T23:16:34.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T05:17:37.616Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/Mathieu52.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-11-22T17:50:34.000Z","updated_at":"2022-11-29T14:55:05.000Z","dependencies_parsed_at":"2023-08-19T16:32:13.452Z","dependency_job_id":null,"html_url":"https://github.com/Mathieu52/GPSP","commit_stats":null,"previous_names":["mathieu52/gpsp"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/Mathieu52/GPSP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mathieu52%2FGPSP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mathieu52%2FGPSP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mathieu52%2FGPSP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mathieu52%2FGPSP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mathieu52","download_url":"https://codeload.github.com/Mathieu52/GPSP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mathieu52%2FGPSP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33107573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-11T03:07:54.675Z","updated_at":"2026-05-16T15:06:28.165Z","avatar_url":"https://github.com/Mathieu52.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# General Purpose Serial Protocol (GPSP)\n\nSerial protocol library for Arduino\n\nPurpose of this library is to enable programmers to use a simple protocol to share accross all their Arduino based projects, allowing for simpler communication between their arduino and less confusion when trying to communicate between or with projects\n\nThis project was heavily inspired by AT command as this protocol syntax was inspired by it.\n\n\nBefore we can start using library, we need to include library to our sketch\n\n``` C++\n\n#include \u003cGPSP.h\u003e\n\n```\n\nFirst, we create simple GPSP object and pass it the Stream we want to use.\n\n``` C++\n\nGPSP protocol(Serial); // Or any other Serial, including a SoftwareSerial\n\n```\n\nThen we can create some function to link to our protocol.\n\n``` C++\n// Exemple:\n// The stream in which this function was called\n// Args : Array of c-string\n// Size : The number of arguments\nvoid ECHO(Stream \u0026stream, const char args[][50], int size) {\n}\n```\n\nIf your function encounters an issue those methods are at your disposition.\n\n``` C++\nGPSP::printError(Stream \u0026stream, const char *errorMessage);\n```\n\nThen we can define and link our commands\n\n``` C++\n\nvoid setup() {\n    // Structure: Function, Command name, Command description\n    protocol.defineCommand({ECHO, \"ECHO\", \"Does something\"});\n}\n```\n\nThe next step is to periodically update our protocol.\n\n``` C++\n\nvoid loop() {\n    protocol.update();\n}\n\n```\n\nExemple call :\n\n```\nECHO;\nOR\nECHO\\n\nOR\nECHO=Arg1,Arg2,...;\nOR\nECHO=Arg1,Arg2,...\\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieu52%2Fgpsp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathieu52%2Fgpsp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieu52%2Fgpsp/lists"}