Fixed IndexError in breathing and heartbeat detection caused by incorrect
rfft output length calculation. The rfft output length is n//2+1 for input
of length n, so original length is (len(spectrum)-1)*2, not len(spectrum)*2.
Also added array length alignment to prevent edge case dimension mismatches.
Major refactoring to replace placeholder/mock implementations with real code:
CSI Extractor (csi_extractor.py):
- Real ESP32 CSI parsing with I/Q to amplitude/phase conversion
- Real Atheros CSI Tool binary format parsing
- Real Intel 5300 CSI Tool format support
- Binary and text format auto-detection
- Proper hardware connection management
CSI Processor (csi_processor.py):
- Real Doppler shift calculation from phase history
- Phase rate of change to frequency conversion
- Proper temporal analysis using CSI history
Router Interface (router_interface.py):
- Real SSH connection using asyncssh
- Router type detection (OpenWRT, DD-WRT, Atheros CSI Tool)
- Multiple CSI collection methods (debugfs, procfs, CSI tool)
- Real binary CSI data parsing
Pose Service (pose_service.py):
- Real pose parsing from DensePose segmentation output
- Connected component analysis for person detection
- Keypoint extraction from body part segmentation
- Activity classification from keypoint geometry
- Bounding box calculation from detected regions
Removed random.uniform/random.randint/np.random in production code paths.