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.
Loading...
Searching...
No Matches
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12]
 Cprov::Action
 Caiming::AimCommandResult 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::AimMapPan = pan_a * x + pan_b, tilt = tilt_a * y + tilt_b
 Cremote::AimPixelImage pixel requested by an Aim command
 Caiming::AimPolicy
 Caiming::AnglesTurret pose: pan degrees from home (positive = right), tilt servo degrees (larger = up)
 ▼CBaseDetectionModuleAn 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
 CCameraDiffDetectionMotion detection and persistent single-target tracking on camera frames
 CTestDetection
 ▼Cremote::BaseRemoteSinkReceives parsed commands; implemented by the controller (device) and fakes (tests)
 CControllerRuns the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic
 ▼CBaseStatusProviderInterface for anything that can report a ControlStatus (the Controller). Lets the network layer read state without depending on the Controller
 CControllerRuns the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic
 ▼CBaseTurret
 CTurretNon-blocking turret: callers post commands, a 1 kHz motor task executes them
 Ctracking::BlobOne connected region of foreground cells
 Ctracking::BoxInclusive cell rectangle. A default-constructed box is empty
 Caiming::ButtonClassifier
 Caiming::ButtonConfig
 Caiming::CalibrationSession
 Caiming::CalPointOne calibration sample: the target's pixel and the turret angles that pointed at it
 CCameraCamera setup and sensor tuning
 Ccamera_buffer_t
 CCameraTaskStats
 Cprov::CandidatesSaved networks present in a scan, strongest first
 Cremote::CommandOne parsed message. Only the fields matching kind are meaningful
 CCommandsWebSocketHandlerThe /commands WebSocket: parses each HUD message, hands it to the remote sink and replies with JSON metrics
 Ccontrol::ControlLogicThe control loop's decisions, one pass per run() call: button gestures, HUD requests, the three modes and the status counters
 ▼Ccontrol::ControlPortsEverything ControlLogic reads from or commands on the device, called from the loop task
 CControllerRuns the control loop on the device: the clock, the HUD inbox, NVS, logging and the published status around the pure control::ControlLogic
 CControlStatusSnapshot of the controller, published once per control pass
 Ctracking::DetectionResultWhat the detector found in one frame. Blobs are sorted by area, largest first
 CDetectionStats
 Ctracking::DetectorConfigMotion detector tunables. Defaults are tuned for an indoor scene 1-3 m away
 Cframes::FrameLeaseMove-only handle on a published frame. Releases its slot exactly once, on release() or destruction
 Cframes::FrameMeta
 CFrameStoreStats
 Chud::HomeStateAI return-home state read from the aiming::AimPolicy. Ignored unless ai_mode is set
 CHttpServerManages the ESP32-CAM web interface and control API
 Ccontrol::HudRequestsThe HUD's one-shot requests, taken from the inbox together once per pass
 Cremote::JogJog request in the same units as Joystick/Turret::jog
 CJoystickHigh-level interface for 12-bit analog joystick input
 Ccontrol::LogRecordOne 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 >
 CMoveXEncapsulates horizontal movement states and utility methods
 ▼CMoveDirection< MoveYValue >
 CMoveYEncapsulates vertical movement states and utility methods
 Cvsync::MutexLockScoped lock on a FreeRTOS mutex; takes it forever on construction and gives it back on destruction
 Cprov::NetworkEntryOne saved network. Strings are NUL-terminated
 Cprov::NetworkListUp to kMaxNetworks saved networks; the least recently added or joined one is evicted when full
 CWifiManager::OutcomeOutcome with the lockout time for Result::LockedOut
 Cprov::PinGuardGuards 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::PinRecordSalted PIN hash as stored in NVS
 Cprov::PinResult
 Caiming::PixelAn image position in pixels; not clamped, so it can lie outside the frame
 Caiming::PlannerConfig
 Caiming::PolicyConfig
 Caiming::ReachBoxRectangle of frame pixels (inclusive corners) with x0 <= x1 and y0 <= y1
 Cframes::ReadyListFixed-capacity result so the stream path never allocates per frame
 Cremote::RemoteInboxStores the latest Move (with timeout), the jog speed and the pending mode, calibration and aim requests
 Chud::ReplyInputInputs of one reply. Null pointers mean that part is not available
 Cprov::ScanResultOne access point seen by a scan
 CStreamBroadcaster::SendStatsHow long frame sends block the httpd task (every /stream send runs on it, and so does /commands)
 ▼Cframes::SlotReleaserWhatever a FrameLease must notify when it is released (FrameSlots natively, FrameStore on device)
 CFrameStore
 Cframes::FrameSlots
 Ctelemetry::SourcesThe 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::StatusSnapshot for /api/wifi/status
 Caiming::StepPlanner
 Ccontrol::StickDeflectionJoystick deflection per axis, -255..255 (Joystick::get_speed_x / get_speed_y); y positive = up
 CStreamBroadcaster
 Ctracking::Tracker
 Ctracking::TrackerConfigTracker tunables (frame counts assume ~17 fps)
 CTrackSnapshot
 Ctracking::TrackStateThe tracked target. Positions in cells, velocity in cells per frame. id 0 = no target
 Caiming::TrackView
 Cframes::ViewerSet
 CWifiManagerGlue between the pure prov::WifiPlan and the Arduino WiFi stack
 Cprov::WifiPlanDecides 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
 CWifiStoreReads 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