{"id":21732134,"url":"https://github.com/zherczeg/uc-powered-up","last_synced_at":"2025-03-20T23:44:14.896Z","repository":{"id":148417341,"uuid":"289655551","full_name":"zherczeg/uc-powered-up","owner":"zherczeg","description":null,"archived":false,"fork":false,"pushed_at":"2020-08-26T07:10:25.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-25T20:27:55.565Z","etag":null,"topics":["ble","poweredup"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zherczeg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-23T09:34:05.000Z","updated_at":"2020-08-26T07:10:27.000Z","dependencies_parsed_at":"2023-05-20T01:15:55.275Z","dependency_job_id":null,"html_url":"https://github.com/zherczeg/uc-powered-up","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zherczeg%2Fuc-powered-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zherczeg%2Fuc-powered-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zherczeg%2Fuc-powered-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zherczeg%2Fuc-powered-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zherczeg","download_url":"https://codeload.github.com/zherczeg/uc-powered-up/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244711939,"owners_count":20497417,"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","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":["ble","poweredup"],"created_at":"2024-11-26T04:28:54.268Z","updated_at":"2025-03-20T23:44:14.864Z","avatar_url":"https://github.com/zherczeg.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UC Powered Up #\n\nThis project is a C implementation of the LEGO Powered Up Bluetooth\nLow-Energy (BLE) protocol which can be used to control LEGO Powered\nUp Hubs. The project has minimal dependencies (only libbluetooth),\nand the communication is easy to follow with a debugger since message\nprocessing is synchronous. Furthermore comments are added to explain\nthe tricky parts so the project is useful to learn about the basics\nof BLE communication.\n\nThe LEGO Hub uses the Bluetooth Attribute Protocol (ATT) for controlling\nthe Hub. This protocol defines how attributes can be enumerated, read,\nor written, and how clients can receive notifications about attribute\nvalue changes. Normally attributes are used for accessing server data\nand notifications are used to inform the client about the new value of\nan attribute. As for LEGO Hubs, attribute writing is used for issuing\ncommands, and notifications are used for receiving various messages\nfrom the Hub. The reason of using attribute protocol for communication\nis that it has a reserved channel id (its value is 4) and its message\nformat is simple so the protocol overhead is acceptable (around three\nbytes are wasted for each message).\n\nThe detailed LEGO Generic Attribute Protocol (GATT) can be found here:\n\nhttps://lego.github.io/lego-ble-wireless-protocol-docs/\n\nDue to the synchronous nature of the library, it is easy to define the\nnecessary steps (stages) to control a given LEGO model. It is recommended\nto enable only those notifications which are required by the model (i.e.\nwhen built-in tilt sensor is not needed, it is better to keep it disabled).\nProcessing these notifications can be postponed and unwanted notifications\ncan be discarded easily.\n\nThe project is in its early phases. Any contributions are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzherczeg%2Fuc-powered-up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzherczeg%2Fuc-powered-up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzherczeg%2Fuc-powered-up/lists"}