|
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.
|
| ▼Naiming | |
| CAimCommand | 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 |
| CAimMap | Pan = pan_a * x + pan_b, tilt = tilt_a * y + tilt_b |
| CAimPolicy | |
| CAngles | Turret pose: pan degrees from home (positive = right), tilt servo degrees (larger = up) |
| CButtonClassifier | |
| CButtonConfig | |
| CCalibrationSession | |
| CCalPoint | One calibration sample: the target's pixel and the turret angles that pointed at it |
| CPixel | An image position in pixels; not clamped, so it can lie outside the frame |
| CPlannerConfig | |
| CPolicyConfig | |
| CReachBox | Rectangle of frame pixels (inclusive corners) with x0 <= x1 and y0 <= y1 |
| CStepPlanner | |
| CTrackView | |
| ▼Ncontrol | |
| CControlLogic | The control loop's decisions, one pass per run() call: button gestures, HUD requests, the three modes and the status counters |
| CControlPorts | Everything ControlLogic reads from or commands on the device, called from the loop task |
| CHudRequests | The HUD's one-shot requests, taken from the inbox together once per pass |
| CLogRecord | One log event and its arguments; fields other than the event's own are left at their defaults |
| CStickDeflection | Joystick deflection per axis, -255..255 (Joystick::get_speed_x / get_speed_y); y positive = up |
| ▼Nframes | |
| CFrameLease | Move-only handle on a published frame. Releases its slot exactly once, on release() or destruction |
| CFrameMeta | |
| CFrameSlots | |
| CReadyList | Fixed-capacity result so the stream path never allocates per frame |
| CSlotReleaser | Whatever a FrameLease must notify when it is released (FrameSlots natively, FrameStore on device) |
| CViewerSet | |
| ▼Nhud | |
| CHomeState | AI return-home state read from the aiming::AimPolicy. Ignored unless ai_mode is set |
| CReplyInput | Inputs of one reply. Null pointers mean that part is not available |
| ▼Nprov | |
| CAction | |
| CCandidates | Saved networks present in a scan, strongest first |
| CNetworkEntry | One saved network. Strings are NUL-terminated |
| CNetworkList | Up to kMaxNetworks saved networks; the least recently added or joined one is evicted when full |
| CPinGuard | 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 |
| CPinRecord | Salted PIN hash as stored in NVS |
| CPinResult | |
| CScanResult | One access point seen by a scan |
| CWifiPlan | 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 |
| ▼Nremote | |
| CAimPixel | Image pixel requested by an Aim command |
| CBaseRemoteSink | Receives parsed commands; implemented by the controller (device) and fakes (tests) |
| CCommand | One parsed message. Only the fields matching kind are meaningful |
| CJog | Jog request in the same units as Joystick/Turret::jog |
| CRemoteInbox | Stores the latest Move (with timeout), the jog speed and the pending mode, calibration and aim requests |
| ▼Nstats | |
| CWindowedCounter | Remembers the previous reading of a free-running unsigned counter; sample() returns the delta since |
| ▼Ntelemetry | |
| CSources | The objects the stats lines read. All references must outlive the program (they are globals) |
| ▼Ntracking | |
| CBlob | One connected region of foreground cells |
| CBox | Inclusive cell rectangle. A default-constructed box is empty |
| CDetectionResult | What the detector found in one frame. Blobs are sorted by area, largest first |
| CDetectorConfig | Motion detector tunables. Defaults are tuned for an indoor scene 1-3 m away |
| CMotionDetector | |
| CTracker | |
| CTrackerConfig | Tracker tunables (frame counts assume ~17 fps) |
| CTrackState | The tracked target. Positions in cells, velocity in cells per frame. id 0 = no target |
| ▼Nvsync | |
| CMutexLock | Scoped lock on a FreeRTOS mutex; takes it forever on construction and gives it back on destruction |
| CSpinGuarded | A value of type T that owns its own spinlock; every access is one short critical section |
| 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 |
| CBaseStatusProvider | Interface for anything that can report a ControlStatus (the Controller). Lets the network layer read state without depending on the Controller |
| CBaseTurret | |
| CCamera | Camera setup and sensor tuning |
| Ccamera_buffer_t | |
| CCameraDiffDetection | Motion detection and persistent single-target tracking on camera frames |
| CCameraTaskStats | |
| CCommandsWebSocketHandler | The /commands WebSocket: parses each HUD message, hands it to the remote sink and replies with JSON metrics |
| 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 |
| CDetectionStats | |
| CFrameStore | |
| CFrameStoreStats | |
| CHttpServer | Manages the ESP32-CAM web interface and control API |
| CJoystick | High-level interface for 12-bit analog joystick input |
| CMoveDirection | Base template providing common logic for movement directions |
| CMoveX | Encapsulates horizontal movement states and utility methods |
| CMoveY | Encapsulates vertical movement states and utility methods |
| ▼CStreamBroadcaster | |
| CSendStats | How long frame sends block the httpd task (every /stream send runs on it, and so does /commands) |
| CTestDetection | |
| CTrackSnapshot | |
| CTurret | Non-blocking turret: callers post commands, a 1 kHz motor task executes them |
| ▼CWifiManager | Glue between the pure prov::WifiPlan and the Arduino WiFi stack |
| COutcome | Outcome with the lockout time for Result::LockedOut |
| CStatus | Snapshot for /api/wifi/status |
| CWifiStore | Reads and writes the wifi NVS namespace (keys nets, pin, appw) using the pure blob formats |