|
Void Sentry
An AI-driven, real-time Sentry Turret platform leveraging asynchronous I/O and computer vision to deliver high-precision autonomous motion tracking on resource-constrained embedded hardware.
|
| Cprov::Action | |
| Caiming::AimCommand | Result of one policy update. For Aim and Home, angles is the new target pose. For Hold, angles is the current commanded pose (the last Aim or Home, or the Home pose before any lock); consumers act only on Aim and Home |
| Caiming::AimMap | Pan = pan_a * x + pan_b, tilt = tilt_a * y + tilt_b |
| Cremote::AimPixel | Image pixel requested by an Aim command |
| Caiming::AimPolicy | |
| Caiming::Angles | Turret pose: pan degrees from home (positive = right), tilt servo degrees (larger = up) |
| ▼CBaseDetectionModule | An abstract base class (Interface) that defines the contract for detection algorithms. This class allows the Controller to remain agnostic of the specific detection method (e.g., Color, AI, or Motion) by providing a consistent interface |
| CCameraDiffDetection | Motion detection and persistent single-target tracking on camera frames |
| CTestDetection | |
| ▼Cremote::BaseRemoteSink | Receives parsed commands; implemented by the controller (device) and fakes (tests) |
| CController | Runs the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic |
| ▼CBaseStatusProvider | Interface for anything that can report a ControlStatus (the Controller). Lets the network layer read state without depending on the Controller |
| CController | Runs the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic |
| ▼CBaseTurret | |
| CTurret | Non-blocking turret: callers post commands, a 1 kHz motor task executes them |
| Ctracking::Blob | One connected region of foreground cells |
| Ctracking::Box | Inclusive cell rectangle. A default-constructed box is empty |
| Caiming::ButtonClassifier | |
| Caiming::ButtonConfig | |
| Caiming::CalibrationSession | |
| Caiming::CalPoint | One calibration sample: the target's pixel and the turret angles that pointed at it |
| CCamera | Camera setup and sensor tuning |
| Ccamera_buffer_t | |
| CCameraTaskStats | |
| Cprov::Candidates | Saved networks present in a scan, strongest first |
| Cremote::Command | One parsed message. Only the fields matching kind are meaningful |
| CCommandsWebSocketHandler | The /commands WebSocket: parses each HUD message, hands it to the remote sink and replies with JSON metrics |
| Ccontrol::ControlLogic | The control loop's decisions, one pass per run() call: button gestures, HUD requests, the three modes and the status counters |
| ▼Ccontrol::ControlPorts | Everything ControlLogic reads from or commands on the device, called from the loop task |
| CController | Runs the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic |
| CControlStatus | Snapshot of the controller, published once per control pass |
| Ctracking::DetectionResult | What the detector found in one frame. Blobs are sorted by area, largest first |
| CDetectionStats | |
| Ctracking::DetectorConfig | Motion detector tunables. Defaults are tuned for an indoor scene 1-3 m away |
| Cframes::FrameLease | Move-only handle on a published frame. Releases its slot exactly once, on release() or destruction |
| Cframes::FrameMeta | |
| CFrameStoreStats | |
| Chud::HomeState | AI return-home state read from the aiming::AimPolicy. Ignored unless ai_mode is set |
| CHttpServer | Manages the ESP32-CAM web interface and control API |
| Ccontrol::HudRequests | The HUD's one-shot requests, taken from the inbox together once per pass |
| Cremote::Jog | Jog request in the same units as Joystick/Turret::jog |
| CJoystick | High-level interface for 12-bit analog joystick input |
| Ccontrol::LogRecord | One log event and its arguments; fields other than the event's own are left at their defaults |
| Ctracking::MotionDetector | |
| CMoveDirection< EnumType > | Base template providing common logic for movement directions |
| ▼CMoveDirection< MoveXValue > | |
| CMoveX | Encapsulates horizontal movement states and utility methods |
| ▼CMoveDirection< MoveYValue > | |
| CMoveY | Encapsulates vertical movement states and utility methods |
| Cvsync::MutexLock | Scoped lock on a FreeRTOS mutex; takes it forever on construction and gives it back on destruction |
| Cprov::NetworkEntry | One saved network. Strings are NUL-terminated |
| Cprov::NetworkList | Up to kMaxNetworks saved networks; the least recently added or joined one is evicted when full |
| CWifiManager::Outcome | Outcome with the lockout time for Result::LockedOut |
| Cprov::PinGuard | Guards the PIN. The 5th consecutive wrong PIN starts a lockout of min(60 s * 2^k, 3600 s), k = lockouts since the last success; the failure count then resets. Lockout state lives in RAM only |
| Cprov::PinRecord | Salted PIN hash as stored in NVS |
| Cprov::PinResult | |
| Caiming::Pixel | An image position in pixels; not clamped, so it can lie outside the frame |
| Caiming::PlannerConfig | |
| Caiming::PolicyConfig | |
| Caiming::ReachBox | Rectangle of frame pixels (inclusive corners) with x0 <= x1 and y0 <= y1 |
| Cframes::ReadyList | Fixed-capacity result so the stream path never allocates per frame |
| Cremote::RemoteInbox | Stores the latest Move (with timeout), the jog speed and the pending mode, calibration and aim requests |
| Chud::ReplyInput | Inputs of one reply. Null pointers mean that part is not available |
| Cprov::ScanResult | One access point seen by a scan |
| CStreamBroadcaster::SendStats | How long frame sends block the httpd task (every /stream send runs on it, and so does /commands) |
| ▼Cframes::SlotReleaser | Whatever a FrameLease must notify when it is released (FrameSlots natively, FrameStore on device) |
| CFrameStore | |
| Cframes::FrameSlots | |
| Ctelemetry::Sources | The objects the stats lines read. All references must outlive the program (they are globals) |
| Cvsync::SpinGuarded< T > | A value of type T that owns its own spinlock; every access is one short critical section |
| Cvsync::SpinGuarded< Command > | |
| Cvsync::SpinGuarded< ControlStatus > | |
| Cvsync::SpinGuarded< Published > | |
| Cvsync::SpinGuarded< remote::RemoteInbox > | |
| Cvsync::SpinGuarded< WifiManager::Status > | |
| CWifiManager::Status | Snapshot for /api/wifi/status |
| Caiming::StepPlanner | |
| Ccontrol::StickDeflection | Joystick deflection per axis, -255..255 (Joystick::get_speed_x / get_speed_y); y positive = up |
| CStreamBroadcaster | |
| Ctracking::Tracker | |
| Ctracking::TrackerConfig | Tracker tunables (frame counts assume ~17 fps) |
| CTrackSnapshot | |
| Ctracking::TrackState | The tracked target. Positions in cells, velocity in cells per frame. id 0 = no target |
| Caiming::TrackView | |
| Cframes::ViewerSet | |
| CWifiManager | Glue between the pure prov::WifiPlan and the Arduino WiFi stack |
| Cprov::WifiPlan | Decides what the WiFi glue should do next. Events that do not apply to the current state return Action{None} and change nothing. All time arithmetic is wrap-safe |
| CWifiStore | Reads and writes the wifi NVS namespace (keys nets, pin, appw) using the pure blob formats |
| Cstats::WindowedCounter< T > | Remembers the previous reading of a free-running unsigned counter; sample() returns the delta since |