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 List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
 ▼Naiming
 CAimCommandResult 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
 CAimMapPan = pan_a * x + pan_b, tilt = tilt_a * y + tilt_b
 CAimPolicy
 CAnglesTurret pose: pan degrees from home (positive = right), tilt servo degrees (larger = up)
 CButtonClassifier
 CButtonConfig
 CCalibrationSession
 CCalPointOne calibration sample: the target's pixel and the turret angles that pointed at it
 CPixelAn image position in pixels; not clamped, so it can lie outside the frame
 CPlannerConfig
 CPolicyConfig
 CReachBoxRectangle of frame pixels (inclusive corners) with x0 <= x1 and y0 <= y1
 CStepPlanner
 CTrackView
 ▼Ncontrol
 CControlLogicThe control loop's decisions, one pass per run() call: button gestures, HUD requests, the three modes and the status counters
 CControlPortsEverything ControlLogic reads from or commands on the device, called from the loop task
 CHudRequestsThe HUD's one-shot requests, taken from the inbox together once per pass
 CLogRecordOne log event and its arguments; fields other than the event's own are left at their defaults
 CStickDeflectionJoystick deflection per axis, -255..255 (Joystick::get_speed_x / get_speed_y); y positive = up
 ▼Nframes
 CFrameLeaseMove-only handle on a published frame. Releases its slot exactly once, on release() or destruction
 CFrameMeta
 CFrameSlots
 CReadyListFixed-capacity result so the stream path never allocates per frame
 CSlotReleaserWhatever a FrameLease must notify when it is released (FrameSlots natively, FrameStore on device)
 CViewerSet
 ▼Nhud
 CHomeStateAI return-home state read from the aiming::AimPolicy. Ignored unless ai_mode is set
 CReplyInputInputs of one reply. Null pointers mean that part is not available
 ▼Nprov
 CAction
 CCandidatesSaved networks present in a scan, strongest first
 CNetworkEntryOne saved network. Strings are NUL-terminated
 CNetworkListUp to kMaxNetworks saved networks; the least recently added or joined one is evicted when full
 CPinGuardGuards 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
 CPinRecordSalted PIN hash as stored in NVS
 CPinResult
 CScanResultOne access point seen by a scan
 CWifiPlanDecides 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
 CAimPixelImage pixel requested by an Aim command
 CBaseRemoteSinkReceives parsed commands; implemented by the controller (device) and fakes (tests)
 CCommandOne parsed message. Only the fields matching kind are meaningful
 CJogJog request in the same units as Joystick/Turret::jog
 CRemoteInboxStores the latest Move (with timeout), the jog speed and the pending mode, calibration and aim requests
 ▼Nstats
 CWindowedCounterRemembers the previous reading of a free-running unsigned counter; sample() returns the delta since
 ▼Ntelemetry
 CSourcesThe objects the stats lines read. All references must outlive the program (they are globals)
 ▼Ntracking
 CBlobOne connected region of foreground cells
 CBoxInclusive cell rectangle. A default-constructed box is empty
 CDetectionResultWhat the detector found in one frame. Blobs are sorted by area, largest first
 CDetectorConfigMotion detector tunables. Defaults are tuned for an indoor scene 1-3 m away
 CMotionDetector
 CTracker
 CTrackerConfigTracker tunables (frame counts assume ~17 fps)
 CTrackStateThe tracked target. Positions in cells, velocity in cells per frame. id 0 = no target
 ▼Nvsync
 CMutexLockScoped lock on a FreeRTOS mutex; takes it forever on construction and gives it back on destruction
 CSpinGuardedA value of type T that owns its own spinlock; every access is one short critical section
 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
 CBaseStatusProviderInterface for anything that can report a ControlStatus (the Controller). Lets the network layer read state without depending on the Controller
 CBaseTurret
 CCameraCamera setup and sensor tuning
 Ccamera_buffer_t
 CCameraDiffDetectionMotion detection and persistent single-target tracking on camera frames
 CCameraTaskStats
 CCommandsWebSocketHandlerThe /commands WebSocket: parses each HUD message, hands it to the remote sink and replies with JSON metrics
 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
 CDetectionStats
 CFrameStore
 CFrameStoreStats
 CHttpServerManages the ESP32-CAM web interface and control API
 CJoystickHigh-level interface for 12-bit analog joystick input
 CMoveDirectionBase template providing common logic for movement directions
 CMoveXEncapsulates horizontal movement states and utility methods
 CMoveYEncapsulates vertical movement states and utility methods
 ▼CStreamBroadcaster
 CSendStatsHow long frame sends block the httpd task (every /stream send runs on it, and so does /commands)
 CTestDetection
 CTrackSnapshot
 CTurretNon-blocking turret: callers post commands, a 1 kHz motor task executes them
 ▼CWifiManagerGlue between the pure prov::WifiPlan and the Arduino WiFi stack
 COutcomeOutcome with the lockout time for Result::LockedOut
 CStatusSnapshot for /api/wifi/status
 CWifiStoreReads and writes the wifi NVS namespace (keys nets, pin, appw) using the pure blob formats