{"id":45949551,"url":"https://github.com/issuiuc/tars-software","last_synced_at":"2026-02-28T12:01:11.542Z","repository":{"id":37302342,"uuid":"291261305","full_name":"ISSUIUC/TARS-Software","owner":"ISSUIUC","description":"Illinois Space Society's flight software codebase for the TARS  avionics system","archived":false,"fork":false,"pushed_at":"2023-09-24T19:04:40.000Z","size":61493,"stargazers_count":14,"open_issues_count":11,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-09-25T04:10:25.248Z","etag":null,"topics":["avionics","control-systems","data-acquisition","embedded","rocketry","sensor-fusion","simulation","telemetry"],"latest_commit_sha":null,"homepage":"https://issuiuc.github.io/flightcode-docs/classes.html","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/ISSUIUC.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}},"created_at":"2020-08-29T11:50:00.000Z","updated_at":"2023-09-27T01:53:56.340Z","dependencies_parsed_at":"2022-07-12T11:19:44.722Z","dependency_job_id":null,"html_url":"https://github.com/ISSUIUC/TARS-Software","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/ISSUIUC/TARS-Software","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISSUIUC%2FTARS-Software","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISSUIUC%2FTARS-Software/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISSUIUC%2FTARS-Software/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISSUIUC%2FTARS-Software/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ISSUIUC","download_url":"https://codeload.github.com/ISSUIUC/TARS-Software/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ISSUIUC%2FTARS-Software/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29933021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T09:58:13.507Z","status":"ssl_error","status_checked_at":"2026-02-28T09:57:57.047Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["avionics","control-systems","data-acquisition","embedded","rocketry","sensor-fusion","simulation","telemetry"],"created_at":"2026-02-28T12:00:44.595Z","updated_at":"2026-02-28T12:01:11.536Z","avatar_url":"https://github.com/ISSUIUC.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TARS Flight Software Repository\r\nIllinois Space Society's flight software codebase for the TARS system.\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://www.youtube.com/watch?v=OQC60KljR3A\"\u003e\u003cimg src=\"https://img.youtube.com/vi/OQC60KljR3A/0.jpg\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cbr\u003e\n\u003ci\u003eClick to see a cool video!\u003c/i\u003e\n\u003c/div\u003e\r\n\r\n### Directory Structure:\r\n- `TARS/`: Mission critical flight software running on TARS. This is the code that actually flies on the rocket\n\t- `src/`: All the flight code that we write ourselves is in this directory. \n\t\t- `common/`: Utility code we write that is used across microcontrollers.\n\t\t- `mcu_main/`: Code for the primary microcontroller on TARS (Teensy 4.1)\n\t\t- `mcu_telemetry/`: Code for the microcontroller in charge of telemetry and GPS (ESP32-S3)\n\t\t- `mcu_power`: Code for the microcontroller on the power board (ATMega328P)\n\t- `lib/`: Third-party libraries that are not available on the PlatformIO Registry. Other libraries are included via the `lib_deps` build flag in `platformio.ini`\r\n- `ground/`: Code running on ground station hardware (Adafruit LoRa Feather)\r\n\r\n### Branch Naming Convention\r\nPlease use the following naming conventions when creating branches while developing:\r\n\r\nYour `\u003cbranch-name\u003e` should consist of the Trello ticket ID and a short description of the work being done. For example:\r\n\r\n`AV-420-write-cp-location-interpolation-function`\r\n\r\nThen use the following scheme to then organize your branches:\r\n\r\n- `\u003cbranch-name\u003e` for small and simple contributions pertaining to a ticket\r\n- `user/\u003cgithub-username\u003e/\u003cbranch-name\u003e` for individual tasks or contributions, or as a sandbox for yourself\r\n- `feature/\u003cbranch-name\u003e` for **new** functionality that didn't exist before\r\n- `bug/\u003cbranch-name\u003e` for bug fixes\r\n- `general/\u003cbranch-name\u003e` for overall repository organization or development pipeline tweaks\r\n- `misc/\u003cbranch-name\u003e` or `junk/\u003cbranch-name\u003e` for just messing around :)\r\n\r\nSome fictional examples:\\\r\n`user/AyberkY/improve-lsm9ds1-spi-latency`\\\r\n`feature/create-mcu-state-estimation-thread`\\\r\n`bug/gps-thread-deadlock-fix`\\\r\n`general/create-new-directory-for-gnc`\\\r\n`misc/testing-sd-card-bandwidth`\r\n\r\nPlease include the Trello ticket ID when relevant! i.e. for a ticket [AV-69] your branch might look like:\r\n\r\n`user/AyberkY/AV-69-graceful-failure-for-fifo-buffer`\r\nor\r\n`feature/AV-69-create-data-logger-class`\r\n\r\n\r\n### Archiving Code Base Revisions\r\nWe should try to keep an archive of the version of code that ran on each rocket launch, so that we can associate the data we collected with the code that was running on TARS.\r\n\r\nAfter every launch or major milestone, create branch with the following convention:\\\r\n`archive/\u003cmonth.day.year\u003e-\u003cmilestone-or-launch-description\u003e`\r\n\r\nFor example: `archive/09.01.21-start-of-2022-school-year`\r\n\r\n### Code Style Guide\r\nThe repository now has a GitHub Actions instance that will automatically check for code style violations!\r\n\r\nThe Actions instance **will not** inhibit a pull-request from merging. It is merely there to _encourage_ style consistency throughout our code base.\r\n\r\nThere is also an auto formatting script that will _format your code for you_! (its beautiful, you should use it) This means that you don't have to worry about coding to meet the style yourself, as you can simply run the formatting script before you commit/push your changes.\r\n\r\nYou can run the script on Linux, Mac, or WSL like so:\r\n```\r\n./run_clang_format.py -i -r .\r\n```\r\n\r\nThings to keep in mind about code formatting:\r\n- The code style being used is defined in `.clang-format`. It currently follows Google's C++ style guide exactly. However, a modification was made so that the maximum characters per line was increased from 80 to 120. \r\n- Third party libraries (e.g.`ChRt` which is ChibiOS) are exempted from code-style checks and the auto formatting script. This is to avoid any possibility of breaking proven/working libraries. If adding a new library to flight code, make sure to update `.clang-format-ignore` with the relevant file path if it isn't in `lib`.\r\n  - Exempt directories should be listed in `.clang-format-ignore` so they don't get auto-formatted by the script.\r\n  - Exempt directories should also be listed in `.github/workflows/clang_format_check.yml` on the lines with `exclude:`, so they're not checked for style violations by GitHub. \r\n- Changing/tweaking the style guide is always option! If you have ideas, reach out!\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fissuiuc%2Ftars-software","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fissuiuc%2Ftars-software","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fissuiuc%2Ftars-software/lists"}