{"id":18552285,"url":"https://github.com/cuspaceflight/firingpi","last_synced_at":"2026-04-16T10:35:17.947Z","repository":{"id":37788556,"uuid":"456132918","full_name":"cuspaceflight/FiringPi","owner":"cuspaceflight","description":"Raspberry Pi valve controller / datalogger.","archived":false,"fork":false,"pushed_at":"2023-07-03T11:04:06.000Z","size":4968,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-11T11:43:30.288Z","etag":null,"topics":["cpp","engineering","hx711","linux","ncurses","pigpio","raspberry-pi","rocket"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuspaceflight.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-06T11:36:11.000Z","updated_at":"2022-06-02T23:19:23.000Z","dependencies_parsed_at":"2024-12-26T08:24:28.125Z","dependency_job_id":"393a073e-a72b-4139-b09f-3af6539706d4","html_url":"https://github.com/cuspaceflight/FiringPi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cuspaceflight/FiringPi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuspaceflight%2FFiringPi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuspaceflight%2FFiringPi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuspaceflight%2FFiringPi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuspaceflight%2FFiringPi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuspaceflight","download_url":"https://codeload.github.com/cuspaceflight/FiringPi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuspaceflight%2FFiringPi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31882621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T09:23:21.276Z","status":"ssl_error","status_checked_at":"2026-04-16T09:23:15.028Z","response_time":69,"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":["cpp","engineering","hx711","linux","ncurses","pigpio","raspberry-pi","rocket"],"created_at":"2024-11-06T21:13:42.622Z","updated_at":"2026-04-16T10:35:17.929Z","avatar_url":"https://github.com/cuspaceflight.png","language":"C++","readme":"# FiringPi\r\n\r\nThis project is designed to be run on a Raspberry Pi connected to various peripherals, to act as both fire controller\r\nand datalogger for CUSF's White Dwarf hot and cold test fires. The utility files only run on linux, but you should be\r\nable to work out equivalent commands for windows if you need to (if you do this please do put them in a .bat file and\r\npull request.).\r\n\r\n## Requirements\r\n\r\nTo build on your local machine, you will need a native cross-compiler such\r\nas [gcc/g++](https://www.gnu.org/software/gcc/) (You can change the compiler by editing the variable `$(GXX)` in a local\r\ncopy of the makfile and specifying `-f \u003clocal.makefile\u003e` in the make command. The project\r\nuses [ncurses](https://invisible-island.net/ncurses/announce.html) for its TUI, which works over standard ssh tty. You\r\nwill therefore need to make sure you have at least `libncurses5-dev` and `libncursesw5-dev` installed. When running on\r\nthe Raspberry Pi, [WiringPi](http://wiringpi.com/) is used for gpio access, which will need to be installed on your\r\nlocal machine to compile if you wish to do so. The raspberry Pi also uses [tmux](https://linuxhandbook.com/tmux/) to\r\nmanage disconnects safely (the system leaving all of the valves open after an unhandled disconnect would not be good),\r\nso if you use the script [/pi](/pi), then you will also require this. All of these are already installed on the flight\r\ncomputer.\r\n\r\n## Building and running\r\n\r\nClone the repo, then assert the directory is set up correctly with `make clean`. For a local build, use the makefile:\r\n\r\n```console\r\nmake \u0026\u0026 ./main\r\n```\r\n\r\nTo build on the Pi, you need to have ssh access, and make sure you have updated its IP address in either [/pi](/pi).\r\nThis file contains a script to upload source code directly to the Pi (with scp, no need for a git sync) and execute it\r\nover ssh, forcing interactive terminal allocation, then building the project on the pi and executing it in a detatched\r\ntmux session. You can also just run the executable on the pi in tmux without building with `./pi -r` or conversely to\r\nbuild without running `./pi -b`\r\n\r\n## Using the Program {curly brackets mean TODO}\r\n\r\nOnce you have launched the TUI successfully, you must launch the system into SAFE mode by pressing s[afe]. The system\r\nmay be armed by pressing \u003cCTRL-A\u003e, then {once you are satisfied that the system has booted correctly,} STARTUP mode may\r\nbe entered by pressing \u003cSPACE\u003e. The computer will then enter STARTUP, followed by FIRING and SHUTDOWN {as it runs the\r\npreconfigured fire sequence}. An ABORT may be triggered by pressing \u003cBACKSPACE\u003e {or automatically by the system\r\ndetecting unsafe parameters}. ABORT mode can only be exitied by the computer, for safety reasons {currently press\r\ne[rror] to debug exit}. SHUTDOWN exits to SAFE, and ABORT exits to ERROR, from which SAFE mode can be entered by\r\npressing s[afe]. To quit the program, the system must first be in the OFF state, entered by pressing o[ff] from SAFE\r\nmode, only then it will exit when q[uit] is pressed.\r\n\r\n## Project Structure\r\n\r\n```markdown\r\ncft-controller\r\n├── build\r\n│   ├── Display.o\r\n│   ├── main.o\r\n│   └── State.o\r\n├── include\r\n│   ├── Display.hpp\r\n│   └── State.hpp\r\n├── main\r\n├── Makefile\r\n├── pi\r\n├── README.md\r\n├── src\r\n│   ├── Display.cpp\r\n│   ├── main.cpp\r\n│   └── State.cpp\r\n└── TODO.md\r\n```\r\n\r\n## Useful Stuff\r\n\r\n[ncurses HOWTO](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/)\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuspaceflight%2Ffiringpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuspaceflight%2Ffiringpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuspaceflight%2Ffiringpi/lists"}