# NF1 project
## Questions
- Proposed archtiecture (Rough conecpt)
- [x] Need explanation for diagram specially the unrelated flows of it
- Requirements > General/System
- [ ] Software updates: How do we update packages offline
- Transfer Management
- [ ] Does NF1 use libssh2's patched version as mentioned in the docs?
- [ ] What is NF270 Default and fallback transfer target?
- [ ] Does current NF1 code check for data corruption using checksum?
- [ ] What is drive health state and how do we monitor it with smart?
## Readout Station Firmware
### Setup
- Started with installing [Readout Station Firmware](http://gitlab.caetec:8929/ASO/software-readout-station/readout-station-firmware)
- ~~Getting error `Failed to build python-crontab psutil pyrsistent pyudev ssh2-python uptime`~~
- Successfully built and set up.
## Current task
**Draw flowchart of how the following states are achieved**
- Ready
- Busy
- Disconnecting success
- Discinnecting error
- Physically connected
- Remove - It is time taken to show blank on the UI after removing the drive.
- Reconnected - It is time taken to come to ready state on subsequent 2nd time insertion of the drive.
- FTP error
- FTP reconnected
**Ready state**
```mermaid
flowchart TD
subgraph one[class DrivebaySerial]
DS4[def get_slot_nowait] --returns-->DS0
DS1[def run]--calls-->DS2[def _put_slot]
DS2 --Keeps Updating--> DS0[self._detect_queue]
end
subgraph two[class Baymanager]
BM0[self._readyDisks]
BM1[def run] --calls--> BM2[def _getConnectedDevices]
BM2 <--calls-->DS4
BM2 --updates-->BM0
end
subgraph three[API]
AP0[def _ready_disks] <--calls--> BM0
AP0 --calls--> AP1[def _readyDisksSubthread]
AP1 --updates--> AP2[CACHE.Diskstatus_ALL]
end
```
## Questions
- Why `drivebay.py:<class 'SLOTS'>` has only 6 slots when there are 12 slots in the drivebay?
- Confusion in `drivebay.py:<class 'DrivebaySerial'>`. Which line of code detects insertion of a new SSD?