# National Taiwan University Racing Team Software Development Log
###### tags: `development_log` `NTURT`
##### Group: electrical system group
##### Person in charge: 羅紀翔
##### Authors: 羅紀翔 高仕懷
##### Subsystem: RP1
##### Subsystem number: RP3
##### Software name: state_controller
##### Repository: [github](https://github.com/NTURacingTeam/nturt_state_controller.git)
##### Started designing date: 2022/4/21
##### Current version: 1.0
##### Last modified date: 2022/9/20
---
## Engineering goal:
Implement ready to drive (rtd) feature required in fsae rule, and shutdown/reboot control.
## Program structure:
### wiringPi
Since `wiringPi` cutrrentlly only exist on rpi, it is implemented to use preprocessor the check if `__arm__` is defined to avoid running into compilation error.
### ROS timer
The shutdown/reboot control is implemented by ros timmer to call a callback function after a period of time the button is not pressed.
## Included libraries:
- wiringPi
## Testing environment:
- ros noetic
##### Testing hardware:
- asus tuf gaming a15 FA506II-0031A 4800H
- raspberry pi 3B+
##### Operating system:
- ubuntu 20.04
- raspbian 32-bit
- docker virtual environment from [NTURacingTeam/docker](https://github.com/NTURacingTeam/docker) with image `ros_matlab`, `ros_rpi` based on ubuntu20.04
##### Compiler(intepreter) version:
- gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
---
## Testing result of 1.0:
### Ready to drive (rtd)
Worked successfully to check the can signal from dash board and front box, brake actuated and only play rtd sound once after multiple button pressed.
### Shutdown/ reboot control
Worked successfully to shutdown/reboot after corresponding presses.
## Todos in 1.0: