From eafd532f9e850630db0a44030cb6433510532d87 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Fri, 26 Sep 2025 23:34:30 +0200 Subject: [PATCH 001/114] Added a bunch of new methods --- README.md | 14 ++- src/LD2410Async.cpp | 60 +++++++---- src/LD2410Async.h | 241 ++++++++++++++++++++++++++++++-------------- 3 files changed, 208 insertions(+), 107 deletions(-) diff --git a/README.md b/README.md index 88420b3..1846e24 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # LD2410Async – Asynchronous ESP32 Arduino Library for the LD2410 mmWave Radar Sensor -[![Arduino Library](https://www.ardu-badge.com/badge/LD2410Async.svg)](https://www.ardu-badge.com/LD2410Async)[![LD2410Async Build](https://github.com/lizardking/LD2410Async/actions/workflows/build.yml/badge.svg)](https://github.com/lizardking/LD2410Async/actions/workflows/build.yml)![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) +[![Arduino Library](https://www.ardu-badge.com/badge/LD2410Async.svg)](https://www.ardu-badge.com/LD2410Async) [![LD2410Async Build](https://github.com/lizardking/LD2410Async/actions/workflows/build.yml/badge.svg)](https://github.com/lizardking/LD2410Async/actions/workflows/build.yml)! [License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) + +# This lib is still in development. Therefore breaking changes are likely. Use at at your own risk. ## Introduction @@ -9,16 +11,14 @@ The **LD2410Async** library provides a asynchronous interface for the **Hi-Link LD2410Async runs in the background using FreeRTOS tasks. This allows your main loop to remain responsive while the library continuously processes radar data, handles configuration, and manages timeouts. -The library offers: +The library has the following functionality: - **Non-blocking operation** – sensor data is parsed in the background, no polling loops required. - **Async command API** – send commands (e.g., request firmware, change settings) without blocking the main loop(). - **Callbacks** – are executed when detection data has arrived or when commands complete. If you only care about presence detection and dont need additional data, you only have to check the `presenceDetected` flag that is sent with the DetectionDataReceivedCallback. - **Full access to sensor data** – if you need more than just the basic `presenceDetected` information. All data that is sent by the sensor is available. - **All LD2410 commands** are available in the library. -- -This makes it ideal for applications such as smart lighting, security, automation, and energy-saving systems, where fast and reliable presence detection is essential. - + --- ## Installation @@ -160,13 +160,11 @@ When working with the LD2410Async library, keep the following points in mind: - Alway check the return value of the async commands. If false is returned the command has not been sent (either due to busy state or due to invalid paras). True means that the command has been sent and that the callback of the method will execute after completition of the command or after the timeout period. - If chaining commands, trigger the next command from the callback of the previous command. If the next command should only be executed, if the previous command was successfull, check the success para of the callback. -- - **Config Memory Wear** +- **Config Memory Wear** - The LD2410 stores configuration in internal non-volatile memory. - Repeatedly writing unnecessary config updates can wear out the memory over time. - Only send config changes when values really need to be updated. -Following these practices will help you get stable, reliable operation from the LD2410 sensor while extending its lifetime. - ## Troubleshooting If you run into issues when using the library, check the following common problems: diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 6d38f13..c6a0a9a 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -15,9 +15,7 @@ bool bufferEndsWith(const byte* buffer, int iMax, const byte* pattern) { for (int j = 3; j >= 0; j--) { - //if (--iMax < 0) { - // iMax = 3; //This is not clean. The assigned value should be the length of the buffer - //} + --iMax; if (buffer[iMax] != pattern[j]) { return false; } @@ -54,13 +52,21 @@ bool LD2410Async::readFramePayloadSize(byte b, ReadFrameState nextReadFrameState payloadSize = receiveBuffer[0] | (receiveBuffer[1] << 8); if (payloadSize <= 0 || payloadSize > sizeof(receiveBuffer) - 4) { //Serial.print("Invalid payload size read: "); - //printBuf(receiveBuffer, sizeof(receiveBuffer)); + //Serial.print(payloadSize); + //Serial.print(" "); + //printBuf(receiveBuffer, 2); //Invalid payload size, wait for header. readFrameState = ReadFrameState::WAITING_FOR_HEADER; } else { + //Serial.print("Payloadsize read: "); + //Serial.print(payloadSize); + //Serial.print(" "); + //printBuf(receiveBuffer, 2); + + receiveBufferIndex = 0; readFrameState = nextReadFrameState; } @@ -78,8 +84,16 @@ LD2410Async::FrameReadResponse LD2410Async::readFramePayload(byte b, const byte* readFrameState = ReadFrameState::WAITING_FOR_HEADER; if (bufferEndsWith(receiveBuffer, receiveBufferIndex, tailPattern)) { + //Serial.println("Payload read: "); + //printBuf(receiveBuffer, receiveBufferIndex); + return succesResponseType; } + else { + //Serial.print(" Invalid frame end: "); + //printBuf(receiveBuffer, receiveBufferIndex); + + } } return FAIL; @@ -95,56 +109,69 @@ LD2410Async::FrameReadResponse LD2410Async::readFrame() if (b == LD2410Defs::headData[0]) { readFrameHeaderIndex = 1; readFrameState = DATA_HEADER; + } else if (b == LD2410Defs::headConfig[0]) { readFrameHeaderIndex = 1; readFrameState = ACK_HEADER; + } break; case DATA_HEADER: if (b == LD2410Defs::headData[readFrameHeaderIndex]) { readFrameHeaderIndex++; + if (readFrameHeaderIndex == sizeof(LD2410Defs::headData)) { + receiveBufferIndex = 0; readFrameState = READ_DATA_SIZE; } } else if (b == LD2410Defs::headData[0]) { // fallback: this byte might be the start of a new header readFrameHeaderIndex = 1; + // stay in DATA_HEADER } else if (b == LD2410Defs::headConfig[0]) { // possible start of config header readFrameHeaderIndex = 1; readFrameState = ACK_HEADER; + } else { // not a header at all readFrameState = WAITING_FOR_HEADER; readFrameHeaderIndex = 0; + } break; case ACK_HEADER: if (b == LD2410Defs::headConfig[readFrameHeaderIndex]) { readFrameHeaderIndex++; + if (readFrameHeaderIndex == sizeof(LD2410Defs::headConfig)) { + receiveBufferIndex = 0; readFrameState = READ_ACK_SIZE; } } else if (b == LD2410Defs::headConfig[0]) { readFrameHeaderIndex = 1; // stay in ACK_HEADER + } else if (b == LD2410Defs::headData[0]) { // maybe start of data header readFrameHeaderIndex = 1; readFrameState = DATA_HEADER; + } else { readFrameState = WAITING_FOR_HEADER; readFrameHeaderIndex = 0; + + } break; @@ -973,13 +1000,13 @@ bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, } -bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData ) { +bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Begin auto config"); return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData); }; -bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData ) { +bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reqtest auto config status"); return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData); @@ -1017,20 +1044,9 @@ bool LD2410Async::setConfigDataAsync(const ConfigData& config, AsyncCommandCallb { if (asyncIsBusy()) return false; - // === Check enums first === - if (config.distanceResolution == DistanceResolution::NOT_SET) { - DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("ConfigData invalid: distanceResolution is NOT_SET"); - return false; - } - if (config.lightControl == LightControl::NOT_SET) { - DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("ConfigData invalid: lightControl is NOT_SET"); - return false; - } - if (config.outputControl == OutputControl::NOT_SET) { + if(!config.validate()) { DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("ConfigData invalid: outputControl is NOT_SET"); + DEBUG_PRINTLN("ConfigData invalid"); return false; } @@ -1184,15 +1200,15 @@ void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, void LD2410Async::handleInactivity() { - if (inactivityHandlingEnabled) { + if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs>0) { unsigned long currentTime = millis(); unsigned long inactiveDurationMs = currentTime - lastActivityMs; - if (lastActivityMs != 0 && inactiveDurationMs > activityTimeoutMs) { + if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) { if (!handleInactivityExitConfigModeDone) { handleInactivityExitConfigModeDone = true; disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0); } - else if (inactiveDurationMs > activityTimeoutMs + 5000) { + else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) { rebootAsync(handleInactivityRebootCallback, 0); lastActivityMs = currentTime; } diff --git a/src/LD2410Async.h b/src/LD2410Async.h index ea198a7..76f6387 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1,7 +1,7 @@ #pragma once -#define ENABLE_DEBUG +//#define ENABLE_DEBUG //#define ENABLE_DEBUG_DATA @@ -40,6 +40,7 @@ #define DEBUG_PRINT(...) #define DEBUG_PRINTLN(...) #define DEBUG_PRINTBUF(...) +#define DEBUG_PRINT_MILLIS #endif #ifdef ENABLE_DEBUG_DATA @@ -485,8 +486,9 @@ class LD2410Async { */ struct ConfigData { // === Radar capabilities === - byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar sentting when setConfigDataAsync() is called. + byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when setConfigDataAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor. + // === Max distance gate settings === byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection. byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection. @@ -494,15 +496,47 @@ class LD2410Async { byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100). byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100). - // === General detection parameters === + // === Timeout parameters === unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared. - // === Resolution and auxiliary controls === + // === Distance resolution === DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling setConfigDataAsync() is called. + + // === Auxiliary controls === byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255). LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode. OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin. + /** + * @brief Validates the configuration data for correctness. + * + * Ensures that enum values are set and within valid ranges. + * This method is called internally before applying a config + * via setConfigDataAsync(). + * + * @returns True if the configuration is valid, false otherwise. + */ + bool validate() const { + // Validate enum settings + if (distanceResolution == DistanceResolution::NOT_SET) return false; + if (lightControl == LightControl::NOT_SET) return false; + if (outputControl == OutputControl::NOT_SET) return false; + + // Validate max distance gates + if (maxMotionDistanceGate < 2 || maxMotionDistanceGate > numberOfGates) return false; + if (maxStationaryDistanceGate < 1 || maxStationaryDistanceGate > numberOfGates) return false; + + // Validate sensitivities + for (int i = 0; i < numberOfGates; i++) { + if (distanceGateMotionSensitivity[i] > 100) return false; + if (distanceGateStationarySensitivity[i] > 100) return false; + } + + return true; + } + + + /** * @brief Debug helper: print configuration contents to Serial. */ @@ -643,12 +677,12 @@ class LD2410Async { void heartbeat(); bool inactivityHandlingEnabled = true; + unsigned long inactivityHandlingTimeoutMs = 60000; unsigned long lastActivityMs = 0; bool handleInactivityExitConfigModeDone = false; void handleInactivity(); static void handleInactivityRebootCallback(LD2410Async* sender, AsyncCommandResult result, byte userData); static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData); - const unsigned long activityTimeoutMs = 60000; //Reboot @@ -873,9 +907,35 @@ class LD2410Async { */ void disableInactivityHandling() { setInactivityHandling(false); }; + /** + * @brief Returns whether inactivity handling is currently enabled. + * + * @returns true if inactivity handling is enabled, false otherwise. + */ + bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; }; + + /** + * @brief Sets the timeout period for inactivity handling. + * + * If no data or command ACK is received within this period, + * the library will attempt to recover the sensor as described + * in setInactivityHandling(). + * + * Default is 60000 ms (1 minute). + * + * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling. + */ + void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; }; + + /** + * @brief Returns the current inactivity timeout period. + * + * @returns Timeout in milliseconds. + */ + unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; }; /********************************************************************************** - * Data received methods + * Callback registration methods ***********************************************************************************/ /** @@ -915,7 +975,7 @@ class LD2410Async { void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0); /********************************************************************************** - * Special async commands + * Detection and config data access commands ***********************************************************************************/ /** * @brief Returns a clone of the latest detection data from the radar. @@ -951,6 +1011,38 @@ class LD2410Async { DetectionData getDetectionData() const; + /** + * @brief Access the current detection data without making a copy. + * + * This returns a const reference to the internal struct. It is efficient, + * but the data must not be modified directly. Use this if you only want + * to read values. + * + * @note Since this returns a reference to the internal data, the values + * may change as new frames arrive. Do not store the reference for + * long-term use. + * @note This function will not query the sensor for data. It just returns + * the data that has already been received from the sensor. + * + * ## Example: Efficient read access without cloning + * @code + * const DetectionData& data = radar.getDetectionDataRef(); // no copy + * Serial.print("Stationary signal: "); + * Serial.println(data.stationaryTargetSignal); + * @endcode + * + * ## Do: + * - Use when you only need to read values quickly and efficiently. + * - Use when printing or inspecting live data without keeping it. + * + * ## Don’t: + * - Try to modify the returned struct (it’s const). + * - Store the reference long-term (it may be updated at any time). + * + * @returns Const reference to the current DetectionData. + */ + const DetectionData& getDetectionDataRef() const { return detectionData; } + /** * @brief Returns a clone of the current configuration data of the radar. @@ -996,41 +1088,6 @@ class LD2410Async { ConfigData getConfigData() const; - - /** - * @brief Access the current detection data without making a copy. - * - * This returns a const reference to the internal struct. It is efficient, - * but the data must not be modified directly. Use this if you only want - * to read values. - * - * @note Since this returns a reference to the internal data, the values - * may change as new frames arrive. Do not store the reference for - * long-term use. - * @note This function will not query the sensor for data. It just returns - * the data that has already been received from the sensor. - * - * ## Example: Efficient read access without cloning - * @code - * const DetectionData& data = radar.getDetectionDataRef(); // no copy - * Serial.print("Stationary signal: "); - * Serial.println(data.stationaryTargetSignal); - * @endcode - * - * ## Do: - * - Use when you only need to read values quickly and efficiently. - * - Use when printing or inspecting live data without keeping it. - * - * ## Don’t: - * - Try to modify the returned struct (it’s const). - * - Store the reference long-term (it may be updated at any time). - * - * @returns Const reference to the current DetectionData. - */ - const DetectionData& getDetectionDataRef() const { return detectionData; } - - - /** * @brief Access the current config data without making a copy. * @@ -1086,9 +1143,12 @@ class LD2410Async { void asyncCancel(); /********************************************************************************** - * Config commands + * Commands ***********************************************************************************/ + /*--------------------------------------------------------------------------------- + - Config mode commands + ---------------------------------------------------------------------------------*/ /** * @brief Enables config mode on the radar. * @@ -1124,74 +1184,101 @@ class LD2410Async { */ bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0); + /** + * @brief Detects if config mode is enabled + * + * @returns true if config mode is anabled, false if config mode is disabled + */ + bool isConfigModeEnabled() const { + return configModeEnabled; + }; + + + /*--------------------------------------------------------------------------------- + - Engineering mode commands + ---------------------------------------------------------------------------------*/ /** - * @brief Sets the maximum detection gates and "no-one" timeout. + * @brief Enables engineering mode. * - * This command updates: - * - Maximum motion detection distance gate (2–8). - * - Maximum stationary detection distance gate (2–8). - * - Timeout duration (0–65535 seconds) until "no presence" is declared. + * In this mode, the sensor sends detailed per-gate signal values + * in addition to basic detection results. * - * @note Requires config mode to be enabled. The method will internally - * enable/disable config mode if necessary. - * @note Values outside the allowed ranges are clamped to valid limits. + * @note Engineering mode is temporary and lost after power cycle. + * @note Requires config mode. Will be enabled automatically if not active. * - * @param maxMovingGate Furthest gate used for motion detection (2–8). - * @param maxStationaryGate Furthest gate used for stationary detection (2–8). - * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535). - * @param callback Callback fired when ACK is received or on failure/timeout. + * @param callback Callback fired when ACK is received or on failure. * @param userData Optional value passed to the callback. * - * @returns true if the command was sent, false otherwise (busy state). + * @returns true if the command was sent, false otherwise. */ - bool setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); + bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests the current gate parameters from the sensor. + * @brief Disables engineering mode. * - * Retrieves sensitivities, max gates, and timeout settings, - * which will be written into configData. + * Returns sensor reporting to basic detection results only. * - * @note Requires config mode. The method will manage mode switching if needed. - * @note If an async command is already pending, the request is rejected. + * @note Requires config mode. Will be enabled automatically if not active. * - * @param callback Callback fired when data is received or on failure. + * @param callback Callback fired when ACK is received or on failure. * @param userData Optional value passed to the callback. * * @returns true if the command was sent, false otherwise. */ - bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0); + bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Enables engineering mode. + * @brief Detects if engineering mode is enabled + * + * @returns true if engineering mode is anabled, false if engineering mode is disabled + */ + bool isEngineeringModeEnabled() const { + return engineeringModeEnabled; + }; + + /*--------------------------------------------------------------------------------- + - Sensor config comands + ---------------------------------------------------------------------------------*/ + /** + * @brief Requests the current gate parameters from the sensor. * - * In this mode, the sensor sends detailed per-gate signal values - * in addition to basic detection results. + * Retrieves sensitivities, max gates, and timeout settings, + * which will be written into configData. * - * @note Engineering mode is temporary and lost after power cycle. - * @note Requires config mode. Will be enabled automatically if not active. + * @note Requires config mode. The method will manage mode switching if needed. + * @note If an async command is already pending, the request is rejected. * - * @param callback Callback fired when ACK is received or on failure. + * @param callback Callback fired when data is received or on failure. * @param userData Optional value passed to the callback. * * @returns true if the command was sent, false otherwise. */ - bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); + bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0); + + /** - * @brief Disables engineering mode. + * @brief Sets the maximum detection gates and "no-one" timeout. * - * Returns sensor reporting to basic detection results only. + * This command updates: + * - Maximum motion detection distance gate (2–8). + * - Maximum stationary detection distance gate (2–8). + * - Timeout duration (0–65535 seconds) until "no presence" is declared. * - * @note Requires config mode. Will be enabled automatically if not active. + * @note Requires config mode to be enabled. The method will internally + * enable/disable config mode if necessary. + * @note Values outside the allowed ranges are clamped to valid limits. * - * @param callback Callback fired when ACK is received or on failure. + * @param maxMovingGate Furthest gate used for motion detection (2–8). + * @param maxStationaryGate Furthest gate used for stationary detection (2–8). + * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535). + * @param callback Callback fired when ACK is received or on failure/timeout. * @param userData Optional value passed to the callback. * - * @returns true if the command was sent, false otherwise. + * @returns true if the command was sent, false otherwise (busy state). */ - bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); + bool setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); /** From 6dbe58555b7d2343c4b40b831a1a28d8f8793ca7 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Sun, 28 Sep 2025 10:39:44 +0200 Subject: [PATCH 002/114] Add mthod to compare config data, fixed name of setConfigDataAsync to setConfigDataAsync --- src/LD2410Async.cpp | 6 +++--- src/LD2410Async.h | 51 ++++++++++++++++++++++++++++++++------------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index c6a0a9a..39d5e61 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -371,7 +371,7 @@ bool LD2410Async::processAck() configData.numberOfGates = receiveBuffer[5]; configData.maxMotionDistanceGate = receiveBuffer[6]; configData.maxStationaryDistanceGate = receiveBuffer[7]; - for (byte i = 0; i <= configData.numberOfGates; i++) + for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i]; for (byte i = 0; i <= configData.numberOfGates; i++) configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i]; @@ -1026,7 +1026,7 @@ bool LD2410Async::requestAllStaticData(AsyncCommandCallback callback, byte userD return sendCommandSequenceAsync(callback, userData); } -bool LD2410Async::requestAllConfigData(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte userData) { if (asyncIsBusy()) return false; DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request all config data"); @@ -1044,7 +1044,7 @@ bool LD2410Async::setConfigDataAsync(const ConfigData& config, AsyncCommandCallb { if (asyncIsBusy()) return false; - if(!config.validate()) { + if(!config.isValid()) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ConfigData invalid"); return false; diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 76f6387..f59ddba 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -481,7 +481,7 @@ class LD2410Async { * (e.g. sensitivities, timeouts, resolution). * * The values are typically filled by request commands - * such as requestAllConfigData() or requestGateParametersAsync() or + * such as requestAllConfigDataAsync() or requestGateParametersAsync() or * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). */ struct ConfigData { @@ -510,32 +510,53 @@ class LD2410Async { /** * @brief Validates the configuration data for correctness. * - * Ensures that enum values are set and within valid ranges. + * Ensures that enum values are set and values are within valid ranges. * This method is called internally before applying a config * via setConfigDataAsync(). * * @returns True if the configuration is valid, false otherwise. - */ - bool validate() const { + */ + bool isValid() const { // Validate enum settings if (distanceResolution == DistanceResolution::NOT_SET) return false; if (lightControl == LightControl::NOT_SET) return false; if (outputControl == OutputControl::NOT_SET) return false; - + // Validate max distance gates if (maxMotionDistanceGate < 2 || maxMotionDistanceGate > numberOfGates) return false; if (maxStationaryDistanceGate < 1 || maxStationaryDistanceGate > numberOfGates) return false; // Validate sensitivities - for (int i = 0; i < numberOfGates; i++) { + for (int i = 0; i < 9; i++) { if (distanceGateMotionSensitivity[i] > 100) return false; if (distanceGateStationarySensitivity[i] > 100) return false; } - + return true; } + /** + * @brief Compares this ConfigData with another for equality. + * + * @param other The other ConfigData instance to compare against. + * @returns True if all fields are equal, false otherwise. + */ + bool equals(const ConfigData& other) const { + if (numberOfGates != other.numberOfGates) return false; + if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false; + if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false; + if (noOneTimeout != other.noOneTimeout) return false; + if (distanceResolution != other.distanceResolution) return false; + if (lightThreshold != other.lightThreshold) return false; + if (lightControl != other.lightControl) return false; + if (outputControl != other.outputControl) return false; + for (int i = 0; i < 9; i++) { + if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false; + if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false; + } + return true; + } /** * @brief Debug helper: print configuration contents to Serial. @@ -753,7 +774,7 @@ class LD2410Async { * @brief Current configuration parameters of the radar. * * Filled when configuration query commands are issued - * (e.g. requestAllConfigData() or requestGateParametersAsync() ect). Can be modified and + * (e.g. requestAllConfigDataAsync() or requestGateParametersAsync() ect). Can be modified and * sent back using setConfigDataAsync(). * * Structure will contain only uninitilaized data if config data is not queried explicitly. @@ -924,12 +945,12 @@ class LD2410Async { * Default is 60000 ms (1 minute). * * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling. - */ + */ void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; }; /** * @brief Returns the current inactivity timeout period. - * + * * @returns Timeout in milliseconds. */ unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; }; @@ -948,7 +969,7 @@ class LD2410Async { * void methodName(LD2410Async* sender, bool presenceDetected, byte userData). * @param userData Optional value that will be passed to the callback. */ - void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0); + void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0); /** * @brief Registers a callback for configuration changes. @@ -1186,7 +1207,7 @@ class LD2410Async { /** * @brief Detects if config mode is enabled - * + * * @returns true if config mode is anabled, false if config mode is disabled */ @@ -1230,7 +1251,7 @@ class LD2410Async { /** * @brief Detects if engineering mode is enabled - * + * * @returns true if engineering mode is anabled, false if engineering mode is disabled */ bool isEngineeringModeEnabled() const { @@ -1581,7 +1602,7 @@ class LD2410Async { * * ## Example: Refresh config data * @code - * radar.requestAllConfigData([](LD2410Async* sender, + * radar.requestAllConfigDataAsync([](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -1605,7 +1626,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool requestAllConfigData(AsyncCommandCallback callback, byte userData = 0); + bool requestAllConfigDataAsync(AsyncCommandCallback callback, byte userData = 0); /** From 8e0d33cc813168f3765fdafd0fe50a1392348f29 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Sun, 28 Sep 2025 12:58:49 +0200 Subject: [PATCH 003/114] Restructured the code, add methods to set the command timeout, updated logic for callbacks, so asyncisbusy and so on will also work properly if no callback pointer has been supplied --- LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 3 + src/LD2410Async.cpp | 157 ++++--- src/LD2410Async.h | 834 +++++++++++------------------------ src/LD2410CommandBuilder.h | 47 +- src/LD2410Defs.h | 2 + src/LD2410Types.h | 467 ++++++++++++++++++++ 7 files changed, 840 insertions(+), 671 deletions(-) create mode 100644 src/LD2410Types.h diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 7e25552..e75f96c 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -35,5 +35,6 @@ + \ No newline at end of file diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 05cab3b..3d98c89 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -39,5 +39,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 39d5e61..5ac12df 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -1,5 +1,6 @@ #include "LD2410Async.h" #include "LD2410Defs.h" +#include "LD2410Types.h" #include "LD2410CommandBuilder.h" @@ -252,7 +253,7 @@ bool LD2410Async::processAck() DEBUG_PRINT_MILLIS; DEBUG_PRINT("FAIL for command: "); DEBUG_PRINTLN(byte2hex(command)); - executeAsyncCommandCallback(command, AsyncCommandResult::FAILED); + executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED); return false; }; @@ -319,7 +320,7 @@ bool LD2410Async::processAck() executeConfigChangedCallback(); break; case LD2410Defs::requestDistanceResolutionCommand: - configData.distanceResolution = toDistanceResolution(receiveBuffer[4]); + configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received"); executeConfigUpdateReceivedCallback(); @@ -351,9 +352,9 @@ bool LD2410Async::processAck() break; case LD2410Defs::requestAuxControlSettingsCommand: - configData.lightControl = toLightControl(receiveBuffer[4]); + configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]); configData.lightThreshold = receiveBuffer[5]; - configData.outputControl = toOutputControl(receiveBuffer[6]); + configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received"); executeConfigUpdateReceivedCallback(); @@ -363,7 +364,7 @@ bool LD2410Async::processAck() DEBUG_PRINTLN("ACK for beginAutoConfigCommand received"); break; case LD2410Defs::requestAutoConfigStatusCommand: - autoConfigStatus = toAutoConfigStatus(receiveBuffer[4]); + autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received"); break; @@ -393,7 +394,7 @@ bool LD2410Async::processAck() }; if (command != 0) { - executeAsyncCommandCallback(command, AsyncCommandResult::SUCCESS); + executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS); } @@ -413,21 +414,21 @@ bool LD2410Async::processData() detectionData.timestamp = millis(); //Basic data - detectionData.targetState = toTargetState(receiveBuffer[2] & 7); + detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7); switch (detectionData.targetState) { - case TargetState::MOVING_TARGET: + case LD2410Types::TargetState::MOVING_TARGET: detectionData.presenceDetected = true; detectionData.movingPresenceDetected = true; detectionData.stationaryPresenceDetected = false; break; - case TargetState::STATIONARY_TARGET: + case LD2410Types::TargetState::STATIONARY_TARGET: detectionData.presenceDetected = true; detectionData.movingPresenceDetected = false; detectionData.stationaryPresenceDetected = true; break; - case TargetState::MOVING_AND_STATIONARY_TARGET: + case LD2410Types::TargetState::MOVING_AND_STATIONARY_TARGET: detectionData.presenceDetected = true; detectionData.movingPresenceDetected = true; detectionData.stationaryPresenceDetected = true; @@ -509,8 +510,8 @@ void LD2410Async::sendCommand(const byte* command) { /********************************************************************************** * Send async command methods ***********************************************************************************/ -void LD2410Async::executeAsyncCommandCallback(byte commandCode, AsyncCommandResult result) { - if (asyncCommandCallback != nullptr && asyncCommandCommandCode == commandCode) { +void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) { + if (asyncCommandActive && asyncCommandCommandCode == commandCode) { DEBUG_PRINT_MILLIS; DEBUG_PRINT("Async command duration ms: "); @@ -524,11 +525,9 @@ void LD2410Async::executeAsyncCommandCallback(byte commandCode, AsyncCommandResu asyncCommandCallbackUserData = 0; asyncCommandStartMs = 0; asyncCommandCommandCode = 0; + asyncCommandActive = false; xTaskResumeAll(); - - - if (cb != nullptr) { cb(this, result, userData); } @@ -539,18 +538,18 @@ void LD2410Async::executeAsyncCommandCallback(byte commandCode, AsyncCommandResu void LD2410Async::asyncCancel() { - executeAsyncCommandCallback(asyncCommandCommandCode, AsyncCommandResult::CANCELED); + executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED); } void LD2410Async::handleAsyncCommandCallbackTimeout() { - if (asyncCommandCallback != nullptr && asyncCommandStartMs != 0) { + if (asyncCommandActive && asyncCommandStartMs != 0) { if (millis() - asyncCommandStartMs > asyncCommandTimeoutMs) { DEBUG_PRINT_MILLIS; DEBUG_PRINT("Command timeout detected. Start time ms is: "); DEBUG_PRINT(asyncCommandStartMs); DEBUG_PRINTLN(". Execute callback with timeout result."); - executeAsyncCommandCallback(asyncCommandCommandCode, AsyncCommandResult::TIMEOUT); + executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT); } } } @@ -568,7 +567,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal //Register data for callback - + asyncCommandActive = true; asyncCommandCallback = callback; asyncCommandCallbackUserData = userData; asyncCommandStartMs = millis(); @@ -599,7 +598,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal ***********************************************************************************/ bool LD2410Async::asyncIsBusy() { - return asyncCommandCallback != nullptr || sendAsyncSequenceCallback != nullptr; + return asyncCommandActive || sendAsyncSequenceActive; } /********************************************************************************** @@ -623,8 +622,8 @@ bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallba /********************************************************************************** * Async command sequence methods ***********************************************************************************/ -void LD2410Async::executeAsyncSequenceCallback(AsyncCommandResult result) { - if (sendAsyncSequenceCallback != nullptr) { +void LD2410Async::executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult result) { + if (sendAsyncSequenceActive) { DEBUG_PRINT_MILLIS; DEBUG_PRINT("Command sequence duration ms: "); @@ -635,6 +634,7 @@ void LD2410Async::executeAsyncSequenceCallback(AsyncCommandResult result) { byte userData = sendAsyncSequenceUserData; sendAsyncSequenceCallback = nullptr; sendAsyncSequenceUserData = 0; + sendAsyncSequenceActive = false; xTaskResumeAll(); if (cb != nullptr) { @@ -645,17 +645,27 @@ void LD2410Async::executeAsyncSequenceCallback(AsyncCommandResult result) { // Callback after disabling config mode at the end of sequence -void LD2410Async::sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { - // Ignore disable result, sequence result is determined by command execution - AsyncCommandResult sequenceResult = static_cast(userData); +void LD2410Async::sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + + LD2410Async::AsyncCommandResult sequenceResult = static_cast(userData); + + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: "); + DEBUG_PRINTLN(result); + sequenceResult = result; // report disable failure if it happened + } sender->executeAsyncSequenceCallback(sequenceResult); } // Called when a single command in the sequence completes -void LD2410Async::sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { - if (result != AsyncCommandResult::SUCCESS) { +void LD2410Async::sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { // Abort sequence if a command fails + DEBUG_PRINT_MILLIS + DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: "); + DEBUG_PRINTLN(result); if (!sender->sendAsyncSequenceInitialConfigModeState) { sender->disableConfigModeAsync(sendCommandSequenceAsyncDisableConfigModeCallback, static_cast(result)); } @@ -679,18 +689,18 @@ void LD2410Async::sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, A else { // Sequence finished successfully if (!sender->sendAsyncSequenceInitialConfigModeState) { - sender->disableConfigModeAsync(sendCommandSequenceAsyncDisableConfigModeCallback, static_cast(AsyncCommandResult::SUCCESS)); + sender->disableConfigModeAsync(sendCommandSequenceAsyncDisableConfigModeCallback, static_cast(LD2410Async::AsyncCommandResult::SUCCESS)); } else { - sender->executeAsyncSequenceCallback(AsyncCommandResult::SUCCESS); + sender->executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult::SUCCESS); } } } // After enabling config mode at the beginning -void LD2410Async::sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { - if (result == AsyncCommandResult::SUCCESS) { +void LD2410Async::sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { // Start with first command sender->sendAsyncSequenceIndex = 0; sender->sendCommandAsync( @@ -701,6 +711,9 @@ void LD2410Async::sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* } else { // Failed to enable config mode + DEBUG_PRINT_MILLIS + DEBUG_PRINT("Error: Enabling config mode before command sequence failed. Result:"); + DEBUG_PRINTLN(result); sender->executeAsyncSequenceCallback(result); } } @@ -716,7 +729,7 @@ bool LD2410Async::sendCommandSequenceAsync(AsyncCommandCallback callback, byte u DEBUG_PRINT("Starting command sequence execution. Number of commands: "); DEBUG_PRINTLN(commandSequenceBufferCount); - + sendAsyncSequenceActive = true; sendAsyncSequenceCallback = callback; sendAsyncSequenceUserData = userData; sendAsyncSequenceInitialConfigModeState = configModeEnabled; @@ -747,7 +760,7 @@ bool LD2410Async::addCommandToSequence(const byte* command) { uint8_t len = command[0]; uint8_t totalLen = len + 2; // payload + 2 length bytes - if (totalLen > LD2410_BUFFER_SIZE) return false; // safety + if (totalLen > LD2410Defs::LD2410_Buffer_Size) return false; // safety memcpy(commandSequenceBuffer[commandSequenceBufferCount], command, @@ -795,9 +808,12 @@ bool LD2410Async::setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxSta DEBUG_PRINTLN("Set Max Gate"); byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; - LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout); + if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) { - return sendConfigCommandAsync(cmd, callback, userData); + + return sendConfigCommandAsync(cmd, callback, userData); + } + return false; } @@ -830,10 +846,7 @@ bool LD2410Async::setDistanceGateSensitivityAsync(const byte movingThresholds[9] for (byte gate = 0; gate < 9; gate++) { byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; - LD2410CommandBuilder::buildGateSensitivityCommand(cmd, - gate, - movingThresholds[gate], - stationaryThresholds[gate]); + if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false; if (!addCommandToSequence(cmd)) return false; } @@ -850,7 +863,7 @@ bool LD2410Async::setDistanceGateSensitivityAsync(byte gate, byte movingThreshol DEBUG_PRINTLN("Set Distance Gate Sensitivity"); byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; - LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold); + if(!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -874,14 +887,14 @@ bool LD2410Async::setBaudRateAsync(byte baudRateSetting, return false; byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)]; - LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting); + if(!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false; return sendConfigCommandAsync(cmd, callback, userData); } -bool LD2410Async::setBaudRateAsync(Baudrate baudRate, AsyncCommandCallback callback, byte userData) { +bool LD2410Async::setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) { return setBaudRateAsync((byte)baudRate, callback, userData); } @@ -920,7 +933,7 @@ bool LD2410Async::setBluetoothpasswordAsync(const char* password, DEBUG_PRINTLN("Set Bluetooth Password"); byte cmd[sizeof(LD2410Defs::setBluetoothPasswordCommandData)]; - LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password); + if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -945,17 +958,14 @@ bool LD2410Async::setDistanceResolution75cmAsync(AsyncCommandCallback callback, return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData); }; -bool LD2410Async::setDistanceResolutionAsync(DistanceResolution distanceResolution, +bool LD2410Async::setDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution"); - if (distanceResolution == DistanceResolution::NOT_SET) - return false; - byte cmd[6]; - LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution); + if(!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -972,21 +982,17 @@ bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData); } -bool LD2410Async::setAuxControlSettingsAsync(LightControl lightControl, byte lightThreshold, - OutputControl outputControl, +bool LD2410Async::setAuxControlSettingsAsync(LD2410Types::LightControl lightControl, byte lightThreshold, + LD2410Types::OutputControl outputControl, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Aux Control Settings"); - if (lightControl == LightControl::NOT_SET || outputControl == OutputControl::NOT_SET) { - DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("Invalid paras. Enum set to NOT_SET. Can't execute command"); - return false; - } + byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; - LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl); + if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -1040,11 +1046,11 @@ bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte } -bool LD2410Async::setConfigDataAsync(const ConfigData& config, AsyncCommandCallback callback, byte userData) +bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& config, AsyncCommandCallback callback, byte userData) { if (asyncIsBusy()) return false; - if(!config.isValid()) { + if (!config.isValid()) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ConfigData invalid"); return false; @@ -1058,37 +1064,28 @@ bool LD2410Async::setConfigDataAsync(const ConfigData& config, AsyncCommandCallb // 1. Max gate + no one timeout { byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; - LD2410CommandBuilder::buildMaxGateCommand(cmd, - config.maxMotionDistanceGate, - config.maxStationaryDistanceGate, - config.noOneTimeout); + if (!LD2410CommandBuilder::buildMaxGateCommand(cmd, config.maxMotionDistanceGate, config.maxStationaryDistanceGate, config.noOneTimeout)) return false; if (!addCommandToSequence(cmd)) return false; } // 2. Gate sensitivities (sequence of commands) for (byte gate = 0; gate < 9; gate++) { byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; - LD2410CommandBuilder::buildGateSensitivityCommand(cmd, - gate, - config.distanceGateMotionSensitivity[gate], - config.distanceGateStationarySensitivity[gate]); + if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, config.distanceGateMotionSensitivity[gate], config.distanceGateStationarySensitivity[gate])) return false; if (!addCommandToSequence(cmd)) return false; } // 3. Distance resolution { byte cmd[6]; // resolution commands are 6 bytes long - LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, config.distanceResolution); + if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, config.distanceResolution)) return false; if (!addCommandToSequence(cmd)) return false; } // 4. Aux control settings { byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; - LD2410CommandBuilder::buildAuxControlCommand(cmd, - config.lightControl, - config.lightThreshold, - config.outputControl); + if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, config.lightControl, config.lightThreshold, config.outputControl)) return false; if (!addCommandToSequence(cmd)) return false; } @@ -1104,8 +1101,8 @@ bool LD2410Async::setConfigDataAsync(const ConfigData& config, AsyncCommandCallb - Reboot command ---------------------------------------------------------------------*/ -void LD2410Async::rebootRebootCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { - if (result == AsyncCommandResult::SUCCESS) { +void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { sender->configModeEnabled = false; sender->engineeringModeEnabled = false; @@ -1116,8 +1113,8 @@ void LD2410Async::rebootRebootCallback(LD2410Async* sender, AsyncCommandResult r } -void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { - if (result == AsyncCommandResult::SUCCESS) { +void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { //Got ack of enable config mode command DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Config mode enabled before reboot"); @@ -1149,18 +1146,18 @@ bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) { /********************************************************************************** * Data access ***********************************************************************************/ -LD2410Async::DetectionData LD2410Async::getDetectionData() const { +LD2410Types::DetectionData LD2410Async::getDetectionData() const { return detectionData; } -LD2410Async::ConfigData LD2410Async::getConfigData() const { +LD2410Types::ConfigData LD2410Async::getConfigData() const { return configData; } /********************************************************************************** * Inactivity handling ***********************************************************************************/ -void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { +void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { sender->configModeEnabled = false; sender->engineeringModeEnabled = false; @@ -1179,7 +1176,7 @@ void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, AsyncComma } -void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData) { +void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { #ifdef ENABLE_DEBUG @@ -1200,7 +1197,7 @@ void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, void LD2410Async::handleInactivity() { - if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs>0) { + if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs > 0) { unsigned long currentTime = millis(); unsigned long inactiveDurationMs = currentTime - lastActivityMs; if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) { diff --git a/src/LD2410Async.h b/src/LD2410Async.h index f59ddba..d1feaa7 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1,5 +1,8 @@ #pragma once +#include "Arduino.h" +#include "LD2410Types.h" +#include "LD2410Defs.h" //#define ENABLE_DEBUG @@ -66,8 +69,8 @@ #define DEBUG_PRINTBUF_DATA(...) #endif -#include "Arduino.h" -#define LD2410_BUFFER_SIZE 0x40 + + @@ -140,74 +143,11 @@ * @endcode */ -class LD2410Async { -public: - /** - * @brief Represents the current target detection state reported by the radar. - * - * Values can be combined internally by the sensor depending on its - * signal evaluation logic. The AUTO-CONFIG states are special values - * that are only reported while the sensor is running its - * self-calibration routine. - */ - enum class TargetState { - NO_TARGET = 0, ///< No moving or stationary target detected. - MOVING_TARGET = 1, ///< A moving target has been detected. - STATIONARY_TARGET = 2, ///< A stationary target has been detected. - MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected. - AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running. - AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully. - AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed. - }; - /** - * @brief Safely converts a numeric value to a TargetState enum. - * - * @param value Raw numeric value (0–6 expected). - * - 0 → NO_TARGET - * - 1 → MOVING_TARGET - * - 2 → STATIONARY_TARGET - * - 3 → MOVING_AND_STATIONARY_TARGET - * - 4 → AUTOCONFIG_IN_PROGRESS - * - 5 → AUTOCONFIG_SUCCESS - * - 6 → AUTOCONFIG_FAILED - * @returns The matching TargetState value, or NO_TARGET if invalid. - */ - static TargetState toTargetState(int value) { - switch (value) { - case 0: return TargetState::NO_TARGET; - case 1: return TargetState::MOVING_TARGET; - case 2: return TargetState::STATIONARY_TARGET; - case 3: return TargetState::MOVING_AND_STATIONARY_TARGET; - case 4: return TargetState::AUTOCONFIG_IN_PROGRESS; - case 5: return TargetState::AUTOCONFIG_SUCCESS; - case 6: return TargetState::AUTOCONFIG_FAILED; - default: return TargetState::NO_TARGET; // safe fallback - } - } - - /** - * @brief Converts a TargetState enum value to a human-readable String. - * - * Useful for printing detection results in logs or Serial Monitor. - * - * @param state TargetState enum value. - * @returns Human-readable string such as "No target", "Moving target", etc. - */ - static String targetStateToString(TargetState state) { - switch (state) { - case TargetState::NO_TARGET: return "No target"; - case TargetState::MOVING_TARGET: return "Moving target"; - case TargetState::STATIONARY_TARGET: return "Stationary target"; - case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target"; - case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress"; - case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success"; - case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed"; - default: return "Unknown"; - } - } +class LD2410Async { +public: /** @@ -224,389 +164,6 @@ class LD2410Async { - /** - * @brief Light-dependent control status of the auxiliary output. - * - * The radar sensor can control an external output based on ambient - * light level in combination with presence detection. - * - * Use NOT_SET only as a placeholder; it is not a valid configuration value. - */ - enum class LightControl { - NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). - NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels. - LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold. - LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold. - }; - /** - * @brief Safely converts a numeric value to a LightControl enum. - * - * @param value Raw numeric value (0–2 expected). - * - 0 → NO_LIGHT_CONTROL - * - 1 → LIGHT_BELOW_THRESHOLD - * - 2 → LIGHT_ABOVE_THRESHOLD - * @returns The matching LightControl value, or NOT_SET if invalid. - */ - static LightControl toLightControl(int value) { - switch (value) { - case 0: return LightControl::NO_LIGHT_CONTROL; - case 1: return LightControl::LIGHT_BELOW_THRESHOLD; - case 2: return LightControl::LIGHT_ABOVE_THRESHOLD; - default: return LightControl::NOT_SET; - } - } - - - /** - * @brief Logic level behavior of the auxiliary output pin. - * - * Determines whether the output pin is active-high or active-low - * in relation to presence detection. - * - * Use NOT_SET only as a placeholder; it is not a valid configuration value. - */ - enum class OutputControl { - NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). - DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs. - DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs. - }; - - /** - * @brief Safely converts a numeric value to an OutputControl enum. - * - * @param value Raw numeric value (0–1 expected). - * - 0 → DEFAULT_LOW_DETECTED_HIGH - * - 1 → DEFAULT_HIGH_DETECTED_LOW - * @returns The matching OutputControl value, or NOT_SET if invalid. - */ - static OutputControl toOutputControl(int value) { - switch (value) { - case 0: return OutputControl::DEFAULT_LOW_DETECTED_HIGH; - case 1: return OutputControl::DEFAULT_HIGH_DETECTED_LOW; - default: return OutputControl::NOT_SET; - } - } - - /** - * @brief State of the automatic threshold configuration routine. - * - * Auto-config adjusts the sensitivity thresholds for optimal detection - * in the current environment. This process may take several seconds. - * - * Use NOT_SET only as a placeholder; it is not a valid configuration value. - */ - enum class AutoConfigStatus { - NOT_SET = -1, ///< Status not yet retrieved. - NOT_IN_PROGRESS, ///< Auto-configuration not running. - IN_PROGRESS, ///< Auto-configuration is currently running. - COMPLETED ///< Auto-configuration finished (success or failure). - }; - - /** - * @brief Safely converts a numeric value to an AutoConfigStatus enum. - * - * @param value Raw numeric value (0–2 expected). - * - 0 → NOT_IN_PROGRESS - * - 1 → IN_PROGRESS - * - 2 → COMPLETED - * @returns The matching AutoConfigStatus value, or NOT_SET if invalid. - */ - static AutoConfigStatus toAutoConfigStatus(int value) { - switch (value) { - case 0: return AutoConfigStatus::NOT_IN_PROGRESS; - case 1: return AutoConfigStatus::IN_PROGRESS; - case 2: return AutoConfigStatus::COMPLETED; - default: return AutoConfigStatus::NOT_SET; - } - } - - - /** - * @brief Supported baud rates for the sensor’s UART interface. - * - * These values correspond to the configuration commands accepted - * by the LD2410. After changing the baud rate, a sensor reboot - * is required, and the ESP32’s UART must be reconfigured to match. - */ - enum class Baudrate { - BAUDRATE_9600 = 1, ///< 9600 baud. - BAUDRATE_19200 = 2, ///< 19200 baud. - BAUDRATE_38400 = 3, ///< 38400 baud. - BAUDRATE_57600 = 4, ///< 57600 baud. - BAUDRATE_115200 = 5, ///< 115200 baud. - BAUDRATE_230500 = 6, ///< 230400 baud. - BAUDRATE_256000 = 7, ///< 256000 baud (factory default). - BAUDRATE_460800 = 8 ///< 460800 baud (high-speed). - }; - - /** - * @brief Distance resolution per gate for detection. - * - * The resolution defines how fine-grained the distance measurement is: - * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide. - * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide. - * - * Use NOT_SET only as a placeholder; it is not a valid configuration value. - */ - enum class DistanceResolution { - NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). - RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m. - RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m. - }; - /** - * @brief Safely converts a numeric value to a DistanceResolution enum. - * - * @param value Raw numeric value (typically from a sensor response). - * Expected values: - * - 0 → RESOLUTION_75CM - * - 1 → RESOLUTION_20CM - * @returns The matching DistanceResolution value, or NOT_SET if invalid. - */ - static DistanceResolution toDistanceResolution(int value) { - switch (value) { - case 0: return DistanceResolution::RESOLUTION_75CM; - case 1: return DistanceResolution::RESOLUTION_20CM; - default: return DistanceResolution::NOT_SET; - } - } - - /** - * @brief Holds the most recent detection data reported by the radar. - * - * This structure is continuously updated as new frames arrive. - * Values reflect either the basic presence information or, if - * engineering mode is enabled, per-gate signal details. - */ - struct DetectionData - { - unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received. - - // === Basic detection results === - - bool engineeringMode = false; ///< True if engineering mode data was received. - - bool presenceDetected = false; ///< True if any target is detected. - bool movingPresenceDetected = false; ///< True if a moving target is detected. - bool stationaryPresenceDetected = false; ///< True if a stationary target is detected. - - TargetState targetState = TargetState::NO_TARGET; ///< Current detection state. - unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target. - byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target. - unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target. - byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target. - unsigned int detectedDistance = 0; ///< General detection distance (cm). - - // === Engineering mode data === - byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals. - byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets. - - byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals. - byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets. - - byte lightLevel = 0; ///< Reported ambient light level (0–255). - bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low). - - - /** - * @brief Debug helper: print detection data contents to Serial. - */ - void print() const { - Serial.println("=== DetectionData ==="); - - Serial.print(" Timestamp: "); - Serial.println(timestamp); - - Serial.print(" Engineering Mode: "); - Serial.println(engineeringMode ? "Yes" : "No"); - - Serial.print(" Target State: "); - Serial.println(static_cast(targetState)); - - Serial.print(" Moving Target Distance (cm): "); - Serial.println(movingTargetDistance); - - Serial.print(" Moving Target Signal: "); - Serial.println(movingTargetSignal); - - Serial.print(" Stationary Target Distance (cm): "); - Serial.println(stationaryTargetDistance); - - Serial.print(" Stationary Target Signal: "); - Serial.println(stationaryTargetSignal); - - Serial.print(" Detected Distance (cm): "); - Serial.println(detectedDistance); - - Serial.print(" Light Level: "); - Serial.println(lightLevel); - - Serial.print(" OUT Pin Status: "); - Serial.println(outPinStatus ? "High" : "Low"); - - // --- Engineering mode fields --- - if (engineeringMode) { - Serial.println(" --- Engineering Mode Data ---"); - - Serial.print(" Moving Target Gate Signal Count: "); - Serial.println(movingTargetGateSignalCount); - - Serial.print(" Moving Target Gate Signals: "); - for (int i = 0; i < movingTargetGateSignalCount; i++) { - Serial.print(movingTargetGateSignals[i]); - if (i < movingTargetGateSignalCount - 1) Serial.print(","); - } - Serial.println(); - - Serial.print(" Stationary Target Gate Signal Count: "); - Serial.println(stationaryTargetGateSignalCount); - - Serial.print(" Stationary Target Gate Signals: "); - for (int i = 0; i < stationaryTargetGateSignalCount; i++) { - Serial.print(stationaryTargetGateSignals[i]); - if (i < stationaryTargetGateSignalCount - 1) Serial.print(","); - } - Serial.println(); - } - - Serial.println("======================"); - } - - }; - - /** - * @brief Stores the sensor’s configuration parameters. - * - * This structure represents both static capabilities - * (e.g. number of gates) and configurable settings - * (e.g. sensitivities, timeouts, resolution). - * - * The values are typically filled by request commands - * such as requestAllConfigDataAsync() or requestGateParametersAsync() or - * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). - */ - struct ConfigData { - // === Radar capabilities === - byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when setConfigDataAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor. - - // === Max distance gate settings === - byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection. - byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection. - - // === Per-gate sensitivity settings === - byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100). - byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100). - - // === Timeout parameters === - unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared. - - // === Distance resolution === - DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling setConfigDataAsync() is called. - - // === Auxiliary controls === - byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255). - LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode. - OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin. - - /** - * @brief Validates the configuration data for correctness. - * - * Ensures that enum values are set and values are within valid ranges. - * This method is called internally before applying a config - * via setConfigDataAsync(). - * - * @returns True if the configuration is valid, false otherwise. - */ - bool isValid() const { - // Validate enum settings - if (distanceResolution == DistanceResolution::NOT_SET) return false; - if (lightControl == LightControl::NOT_SET) return false; - if (outputControl == OutputControl::NOT_SET) return false; - - // Validate max distance gates - if (maxMotionDistanceGate < 2 || maxMotionDistanceGate > numberOfGates) return false; - if (maxStationaryDistanceGate < 1 || maxStationaryDistanceGate > numberOfGates) return false; - - // Validate sensitivities - for (int i = 0; i < 9; i++) { - if (distanceGateMotionSensitivity[i] > 100) return false; - if (distanceGateStationarySensitivity[i] > 100) return false; - } - - return true; - } - - /** - * @brief Compares this ConfigData with another for equality. - * - * @param other The other ConfigData instance to compare against. - * @returns True if all fields are equal, false otherwise. - */ - bool equals(const ConfigData& other) const { - if (numberOfGates != other.numberOfGates) return false; - if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false; - if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false; - if (noOneTimeout != other.noOneTimeout) return false; - if (distanceResolution != other.distanceResolution) return false; - if (lightThreshold != other.lightThreshold) return false; - if (lightControl != other.lightControl) return false; - if (outputControl != other.outputControl) return false; - - for (int i = 0; i < 9; i++) { - if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false; - if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false; - } - return true; - } - - /** - * @brief Debug helper: print configuration contents to Serial. - */ - void print() const { - Serial.println("=== ConfigData ==="); - - Serial.print(" Number of Gates: "); - Serial.println(numberOfGates); - - Serial.print(" Max Motion Distance Gate: "); - Serial.println(maxMotionDistanceGate); - - Serial.print(" Max Stationary Distance Gate: "); - Serial.println(maxStationaryDistanceGate); - - Serial.print(" Motion Sensitivity: "); - for (int i = 0; i < 9; i++) { - Serial.print(distanceGateMotionSensitivity[i]); - if (i < 8) Serial.print(","); - } - Serial.println(); - - Serial.print(" Stationary Sensitivity: "); - for (int i = 0; i < 9; i++) { - Serial.print(distanceGateStationarySensitivity[i]); - if (i < 8) Serial.print(","); - } - Serial.println(); - - Serial.print(" No One Timeout: "); - Serial.println(noOneTimeout); - - Serial.print(" Distance Resolution: "); - Serial.println(static_cast(distanceResolution)); - - Serial.print(" Light Threshold: "); - Serial.println(lightThreshold); - - Serial.print(" Light Control: "); - Serial.println(static_cast(lightControl)); - - Serial.print(" Output Control: "); - Serial.println(static_cast(outputControl)); - - Serial.println("==================="); - } - }; - - /** * @brief Callback signature for asynchronous command completion. @@ -640,123 +197,6 @@ class LD2410Async { typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData); -private: - //Pointer to the Serial of the LD2410 - Stream* sensor; - - //Read frame enums, members and methods - enum ReadFrameState { - WAITING_FOR_HEADER, - ACK_HEADER, - DATA_HEADER, - READ_ACK_SIZE, - READ_DATA_SIZE, - READ_ACK_PAYLOAD, - READ_DATA_PAYLOAD - }; - enum FrameReadResponse - { - FAIL = 0, - ACK, - DATA - }; - int readFrameHeaderIndex = 0; - int payloadSize = 0; - ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; - - bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState); - FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType); - FrameReadResponse readFrame(); - - - //Buffer for received data - byte receiveBuffer[LD2410_BUFFER_SIZE]; - byte receiveBufferIndex = 0; - - //Vars for async command sequences - static constexpr size_t MAX_COMMAND_SEQUENCE = 15; - byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE][LD2410_BUFFER_SIZE]; - byte commandSequenceBufferCount = 0; - - unsigned long sendAsyncSequenceStartMs = 0; - AsyncCommandCallback sendAsyncSequenceCallback = nullptr; - byte sendAsyncSequenceUserData = 0; - int sendAsyncSequenceIndex = 0; - bool sendAsyncSequenceInitialConfigModeState = false; - - void executeAsyncSequenceCallback(AsyncCommandResult result); - static void sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData = 0); - static void sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, AsyncCommandResult result, byte userData = 0); - static void sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData = 0); - bool sendCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0); - bool addCommandToSequence(const byte* command); - bool resetCommandSequence(); - - - //Inactivity handling - - void heartbeat(); - - bool inactivityHandlingEnabled = true; - unsigned long inactivityHandlingTimeoutMs = 60000; - unsigned long lastActivityMs = 0; - bool handleInactivityExitConfigModeDone = false; - void handleInactivity(); - static void handleInactivityRebootCallback(LD2410Async* sender, AsyncCommandResult result, byte userData); - static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData); - - - //Reboot - static void rebootEnableConfigModeCallback(LD2410Async* sender, AsyncCommandResult result, byte userData = 0); - static void rebootRebootCallback(LD2410Async* sender, AsyncCommandResult result, byte userData = 0); - - - - - - - bool processAck(); - bool processData(); - - - GenericCallback configUpdateReceivedReceivedCallback = nullptr; - byte configUpdateReceivedReceivedCallbackUserData = 0; - void executeConfigUpdateReceivedCallback(); - - GenericCallback configChangedCallback = nullptr; - byte configChangedCallbackUserData = 0; - void executeConfigChangedCallback(); - - - - DetectionDataCallback detectionDataCallback = nullptr; - byte detectionDataCallbackUserData = 0; - - void sendCommand(const byte* command); - - TaskHandle_t taskHandle = NULL; - bool taskStop = false; - void taskLoop(); - - - //Private async variables and methods - const unsigned long asyncCommandTimeoutMs = 5000; - - bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0); - void executeAsyncCommandCallback(byte commandCode, AsyncCommandResult result); - void handleAsyncCommandCallbackTimeout(); - - bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0); - - - - AsyncCommandCallback asyncCommandCallback = nullptr; - byte asyncCommandCallbackUserData = 0; - unsigned long asyncCommandStartMs = 0; - byte asyncCommandCommandCode = 0; - - - void processReceivedData(); @@ -768,7 +208,7 @@ class LD2410Async { * Use registerDetectionDataReceivedCallback() to be notified * whenever this struct changes. */ - DetectionData detectionData; + LD2410Types::DetectionData detectionData; /** * @brief Current configuration parameters of the radar. @@ -779,7 +219,7 @@ class LD2410Async { * * Structure will contain only uninitilaized data if config data is not queried explicitly. */ - ConfigData configData; + LD2410Types::ConfigData configData; /** * @brief Protocol version reported by the radar. @@ -844,7 +284,7 @@ class LD2410Async { * * Updated by requestAutoConfigStatusAsync(). */ - AutoConfigStatus autoConfigStatus = AutoConfigStatus::NOT_SET; + LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET; @@ -1029,7 +469,7 @@ class LD2410Async { * * @returns A copy of the current DetectionData. */ - DetectionData getDetectionData() const; + LD2410Types::DetectionData getDetectionData() const; /** @@ -1062,7 +502,7 @@ class LD2410Async { * * @returns Const reference to the current DetectionData. */ - const DetectionData& getDetectionDataRef() const { return detectionData; } + const LD2410Types::DetectionData& getDetectionDataRef() const { return detectionData; } /** @@ -1106,7 +546,7 @@ class LD2410Async { * * @returns A copy of the current ConfigData. */ - ConfigData getConfigData() const; + LD2410Types::ConfigData getConfigData() const; /** @@ -1139,7 +579,7 @@ class LD2410Async { * * @returns Const reference to the current ConfigData. */ - const ConfigData& getConfigDataRef() const { return configData; } + const LD2410Types::ConfigData& getConfigDataRef() const { return configData; } /********************************************************************************** @@ -1163,6 +603,24 @@ class LD2410Async { */ void asyncCancel(); + /** + * @brief Sets the timeout for async command callbacks. + * + * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs. + * + * + * @param timeoutMs Timeout in milliseconds (default 6000 ms). + */ + void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; } + + /** + * @brief Returns the current async command timeout. + * + * @return Timeout in milliseconds. + */ + unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; } + + /********************************************************************************** * Commands ***********************************************************************************/ @@ -1386,7 +844,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). */ - bool setBaudRateAsync(Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); + bool setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); /** @@ -1504,7 +962,7 @@ class LD2410Async { * @returns true if the command was sent, false if invalid parameters * or the library is busy. */ - bool setDistanceResolutionAsync(DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); + bool setDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); /** * @brief Sets the distance resolution explicitly to 75 cm per gate. @@ -1567,7 +1025,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool setAuxControlSettingsAsync(LightControl light_control, byte light_threshold, OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); + bool setAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); /** * @brief Requests the current auxiliary control settings. @@ -1719,7 +1177,7 @@ class LD2410Async { * * @returns true if the command sequence has been started, false otherwise. */ - bool setConfigDataAsync(const ConfigData& config, AsyncCommandCallback callback, byte userData = 0); + bool setConfigDataAsync(const LD2410Types::ConfigData& config, AsyncCommandCallback callback, byte userData = 0); /** @@ -1818,4 +1276,224 @@ class LD2410Async { bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0); + +private: + // ============================================================================ + // Low-level serial interface + // ============================================================================ + + /// Pointer to the Serial/Stream object connected to the LD2410 sensor + Stream* sensor; + + + // ============================================================================ + // Frame parsing state machine + // ============================================================================ + + /// States used when parsing incoming frames from the sensor + enum ReadFrameState { + WAITING_FOR_HEADER, ///< Waiting for frame header sequence + ACK_HEADER, ///< Parsing header of an ACK frame + DATA_HEADER, ///< Parsing header of a DATA frame + READ_ACK_SIZE, ///< Reading payload size field of an ACK frame + READ_DATA_SIZE, ///< Reading payload size field of a DATA frame + READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame + READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame + }; + + /// Result type when trying to read a frame + enum FrameReadResponse { + FAIL = 0, ///< Frame was invalid or incomplete + ACK, ///< A valid ACK frame was received + DATA ///< A valid DATA frame was received + }; + + int readFrameHeaderIndex = 0; ///< Current index while matching the frame header + int payloadSize = 0; ///< Expected payload size of current frame + ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state + + /// Extract payload size from the current byte and update state machine + bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState); + + /// Read payload bytes until full ACK/DATA frame is assembled + FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType); + + /// State machine entry: read incoming frame and return read response + FrameReadResponse readFrame(); + + + // ============================================================================ + // Receive buffer + // ============================================================================ + + /// Raw buffer for storing incoming bytes + byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size]; + + /// Current index into receiveBuffer + byte receiveBufferIndex = 0; + + + // ============================================================================ + // Asynchronous command sequence handling + // ============================================================================ + + /// Maximum number of commands in one async sequence + static constexpr size_t MAX_COMMAND_SEQUENCE = 15; + + /// Buffer holding queued commands for sequence execution + byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE][LD2410Defs::LD2410_Buffer_Size]; + + /// Number of commands currently queued in the sequence buffer + byte commandSequenceBufferCount = 0; + + /// Timestamp when the current async sequence started + unsigned long sendAsyncSequenceStartMs = 0; + + /// Callback for current async sequence + AsyncCommandCallback sendAsyncSequenceCallback = nullptr; + + /// User-provided data passed to async sequence callback + byte sendAsyncSequenceUserData = 0; + + /// True if an async sequence is currently pending. + bool sendAsyncSequenceActive = false; + + /// Index of currently active command in the sequence buffer + int sendAsyncSequenceIndex = 0; + + /// Stores config mode state before sequence started (to restore later) + bool sendAsyncSequenceInitialConfigModeState = false; + + /// Finalize an async sequence and invoke its callback + void executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult result); + + /// Internal callbacks for sequence steps + static void sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + + /// Start executing an async sequence + bool sendCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0); + + /// Add one command to the sequence buffer + bool addCommandToSequence(const byte* command); + + /// Reset sequence buffer to empty + bool resetCommandSequence(); + + + // ============================================================================ + // Inactivity handling + // ============================================================================ + + /// Update last-activity timestamp ("I am alive" signal) + void heartbeat(); + + bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active + unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms) + unsigned long lastActivityMs = 0; ///< Timestamp of last received activity + bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit + + /// Main inactivity handler: exit config mode or reboot if stuck + void handleInactivity(); + + /// Callback for reboot triggered by inactivity handler + static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + + /// Callback for disabling config mode during inactivity recovery + static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + + + // ============================================================================ + // Reboot handling + // ============================================================================ + + /// Step 1: Enter config mode before reboot + static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + + /// Step 2: Issue reboot command + static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + + + // ============================================================================ + // ACK/DATA processing + // ============================================================================ + + /// Process a received ACK frame + bool processAck(); + + /// Process a received DATA frame + bool processData(); + + + // ============================================================================ + // Callbacks + // ============================================================================ + + GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received + byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback + void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback + + GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change + byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback + void executeConfigChangedCallback(); ///< Execute config-changed callback + + DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data + byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback + + + // ============================================================================ + // Command sending + // ============================================================================ + + /// Send raw command bytes to the sensor + void sendCommand(const byte* command); + + + // ============================================================================ + // FreeRTOS task management + // ============================================================================ + + TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task + bool taskStop = false; ///< Stop flag for task loop + void taskLoop(); ///< Background task loop for reading data + + + // ============================================================================ + // Async command handling + // ============================================================================ + + ///< Timeout for async commands in ms (default 6000). + unsigned long asyncCommandTimeoutMs = 6000; + + /// Send a generic async command + bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0); + + /// Invoke async command callback with result + void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result); + + /// Callback for async command sequence that includes data requests + static void sendCommandSequenceAsyncDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + + /// Handle async command timeout + void handleAsyncCommandCallbackTimeout(); + + /// Send async command that modifies configuration + bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0); + + AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback + byte asyncCommandCallbackUserData = 0; ///< UserData for current async command + unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started + byte asyncCommandCommandCode = 0; ///< Last command code issued + bool asyncCommandActive = false; ///< True if an async command is currently pending. + + // ============================================================================ + // Data processing + // ============================================================================ + + /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks + void processReceivedData(); + + + }; diff --git a/src/LD2410CommandBuilder.h b/src/LD2410CommandBuilder.h index 75e5507..d936db3 100644 --- a/src/LD2410CommandBuilder.h +++ b/src/LD2410CommandBuilder.h @@ -2,25 +2,30 @@ #include "Arduino.h" #include "LD2410Async.h" #include "LD2410Defs.h" +#include "LD2410Types.h" namespace LD2410CommandBuilder { - inline void buildMaxGateCommand(byte* out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout) { - memcpy(out, LD2410Defs::maxGateCommandData, sizeof(LD2410Defs::maxGateCommandData)); + inline bool buildMaxGateCommand(byte* out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout) { - if (maxMotionGate > 8) maxMotionGate = 8; - if (maxMotionGate < 2) maxMotionGate = 2; + if (maxMotionGate < 2 || maxMotionGate > 8) return false; + if (maxStationaryGate < 2 || maxStationaryGate > 8) return false; - if (maxStationaryGate > 8) maxStationaryGate = 8; - if (maxStationaryGate < 2) maxStationaryGate = 2; + memcpy(out, LD2410Defs::maxGateCommandData, sizeof(LD2410Defs::maxGateCommandData)); out[6] = maxMotionGate; out[12] = maxStationaryGate; memcpy(&out[18], &noOneTimeout, 2); + + return true; + } - inline void buildGateSensitivityCommand(byte* out, byte gate, byte movingThreshold, byte stationaryThreshold) { + inline bool buildGateSensitivityCommand(byte* out, byte gate, byte movingThreshold, byte stationaryThreshold) { + + if (gate > 8 && gate != 0xFF) return false; // 08 allowed, or 0xFF (all gates) + memcpy(out, LD2410Defs::distanceGateSensitivityConfigCommandData, sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)); @@ -38,34 +43,49 @@ namespace LD2410CommandBuilder { out[12] = movingThreshold; out[18] = stationaryThreshold; + return true; } - inline void buildDistanceResolutionCommand(byte* out, LD2410Async::DistanceResolution resolution) { - if (resolution == LD2410Async::DistanceResolution::RESOLUTION_75CM) { + inline bool buildDistanceResolutionCommand(byte* out, LD2410Types::DistanceResolution resolution) { + if (resolution == LD2410Types::DistanceResolution::RESOLUTION_75CM) { memcpy(out, LD2410Defs::setDistanceResolution75cmCommandData, sizeof(LD2410Defs::setDistanceResolution75cmCommandData)); } - else if (resolution == LD2410Async::DistanceResolution::RESOLUTION_20CM) { + else if (resolution == LD2410Types::DistanceResolution::RESOLUTION_20CM) { memcpy(out, LD2410Defs::setDistanceResolution20cmCommandData, sizeof(LD2410Defs::setDistanceResolution20cmCommandData)); } + else { + return false; + } + return true; } - inline void buildAuxControlCommand(byte* out, LD2410Async::LightControl lightControl, byte lightThreshold, LD2410Async::OutputControl outputControl) { + inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) { memcpy(out, LD2410Defs::setAuxControlSettingCommandData, sizeof(LD2410Defs::setAuxControlSettingCommandData)); + if (lightControl == LD2410Types::LightControl::NOT_SET) return false; + if (outputControl == LD2410Types::OutputControl::NOT_SET) return false; + out[4] = byte(lightControl); out[5] = lightThreshold; out[6] = byte(outputControl); + return true; } - inline void buildBaudRateCommand(byte* out, byte baudRateSetting) { + inline bool buildBaudRateCommand(byte* out, byte baudRateSetting) { memcpy(out, LD2410Defs::setBaudRateCommandData, sizeof(LD2410Defs::setBaudRateCommandData)); + if (baudRateSetting < 1 || baudRateSetting > 8) return false; out[4] = baudRateSetting; + return true; } - inline void buildBluetoothPasswordCommand(byte* out, const char* password) { + inline bool buildBluetoothPasswordCommand(byte* out, const char* password) { + if (!password) return false; + size_t len = strlen(password); + if (len > 6) return false; + memcpy(out, LD2410Defs::setBluetoothPasswordCommandData, sizeof(LD2410Defs::setBluetoothPasswordCommandData)); @@ -75,6 +95,7 @@ namespace LD2410CommandBuilder { else out[4 + i] = byte(' '); // pad with spaces } + return true; } } diff --git a/src/LD2410Defs.h b/src/LD2410Defs.h index c973592..e017f8e 100644 --- a/src/LD2410Defs.h +++ b/src/LD2410Defs.h @@ -8,6 +8,8 @@ namespace LD2410Defs { + constexpr size_t LD2410_Buffer_Size = 0x40; + constexpr byte headData[4]{ 0xF4, 0xF3, 0xF2, 0xF1 }; constexpr byte tailData[4]{ 0xF8, 0xF7, 0xF6, 0xF5 }; constexpr byte headConfig[4]{ 0xFD, 0xFC, 0xFB, 0xFA }; diff --git a/src/LD2410Types.h b/src/LD2410Types.h new file mode 100644 index 0000000..e05756c --- /dev/null +++ b/src/LD2410Types.h @@ -0,0 +1,467 @@ +#pragma once + + +#include + +/** + * @ brief All enums, structs, and type helpers for LD2410Async + */ +namespace LD2410Types { + /** + * @brief Represents the current target detection state reported by the radar. + * + * Values can be combined internally by the sensor depending on its + * signal evaluation logic. The AUTO-CONFIG states are special values + * that are only reported while the sensor is running its + * self-calibration routine. + */ + + enum class TargetState { + NO_TARGET = 0, ///< No moving or stationary target detected. + MOVING_TARGET = 1, ///< A moving target has been detected. + STATIONARY_TARGET = 2, ///< A stationary target has been detected. + MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected. + AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running. + AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully. + AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed. + }; + + /** + * @brief Safely converts a numeric value to a TargetState enum. + * + * @param value Raw numeric value (0–6 expected). + * - 0 → NO_TARGET + * - 1 → MOVING_TARGET + * - 2 → STATIONARY_TARGET + * - 3 → MOVING_AND_STATIONARY_TARGET + * - 4 → AUTOCONFIG_IN_PROGRESS + * - 5 → AUTOCONFIG_SUCCESS + * - 6 → AUTOCONFIG_FAILED + * @returns The matching TargetState value, or NO_TARGET if invalid. + */ + static TargetState toTargetState(int value) { + switch (value) { + case 0: return TargetState::NO_TARGET; + case 1: return TargetState::MOVING_TARGET; + case 2: return TargetState::STATIONARY_TARGET; + case 3: return TargetState::MOVING_AND_STATIONARY_TARGET; + case 4: return TargetState::AUTOCONFIG_IN_PROGRESS; + case 5: return TargetState::AUTOCONFIG_SUCCESS; + case 6: return TargetState::AUTOCONFIG_FAILED; + default: return TargetState::NO_TARGET; // safe fallback + } + } + + /** + * @brief Converts a TargetState enum value to a human-readable String. + * + * Useful for printing detection results in logs or Serial Monitor. + * + * @param state TargetState enum value. + * @returns Human-readable string such as "No target", "Moving target", etc. + */ + static String targetStateToString(TargetState state) { + switch (state) { + case TargetState::NO_TARGET: return "No target"; + case TargetState::MOVING_TARGET: return "Moving target"; + case TargetState::STATIONARY_TARGET: return "Stationary target"; + case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target"; + case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress"; + case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success"; + case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed"; + default: return "Unknown"; + } + } + + + + + + + /** + * @brief Light-dependent control status of the auxiliary output. + * + * The radar sensor can control an external output based on ambient + * light level in combination with presence detection. + * + * Use NOT_SET only as a placeholder; it is not a valid configuration value. + */ + enum class LightControl { + NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). + NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels. + LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold. + LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold. + }; + /** + * @brief Safely converts a numeric value to a LightControl enum. + * + * @param value Raw numeric value (0–2 expected). + * - 0 → NO_LIGHT_CONTROL + * - 1 → LIGHT_BELOW_THRESHOLD + * - 2 → LIGHT_ABOVE_THRESHOLD + * @returns The matching LightControl value, or NOT_SET if invalid. + */ + static LightControl toLightControl(int value) { + switch (value) { + case 0: return LightControl::NO_LIGHT_CONTROL; + case 1: return LightControl::LIGHT_BELOW_THRESHOLD; + case 2: return LightControl::LIGHT_ABOVE_THRESHOLD; + default: return LightControl::NOT_SET; + } + } + + + /** + * @brief Logic level behavior of the auxiliary output pin. + * + * Determines whether the output pin is active-high or active-low + * in relation to presence detection. + * + * Use NOT_SET only as a placeholder; it is not a valid configuration value. + */ + enum class OutputControl { + NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). + DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs. + DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs. + }; + + /** + * @brief Safely converts a numeric value to an OutputControl enum. + * + * @param value Raw numeric value (0–1 expected). + * - 0 → DEFAULT_LOW_DETECTED_HIGH + * - 1 → DEFAULT_HIGH_DETECTED_LOW + * @returns The matching OutputControl value, or NOT_SET if invalid. + */ + static OutputControl toOutputControl(int value) { + switch (value) { + case 0: return OutputControl::DEFAULT_LOW_DETECTED_HIGH; + case 1: return OutputControl::DEFAULT_HIGH_DETECTED_LOW; + default: return OutputControl::NOT_SET; + } + } + + /** + * @brief State of the automatic threshold configuration routine. + * + * Auto-config adjusts the sensitivity thresholds for optimal detection + * in the current environment. This process may take several seconds. + * + * Use NOT_SET only as a placeholder; it is not a valid configuration value. + */ + enum class AutoConfigStatus { + NOT_SET = -1, ///< Status not yet retrieved. + NOT_IN_PROGRESS, ///< Auto-configuration not running. + IN_PROGRESS, ///< Auto-configuration is currently running. + COMPLETED ///< Auto-configuration finished (success or failure). + }; + + /** + * @brief Safely converts a numeric value to an AutoConfigStatus enum. + * + * @param value Raw numeric value (0–2 expected). + * - 0 → NOT_IN_PROGRESS + * - 1 → IN_PROGRESS + * - 2 → COMPLETED + * @returns The matching AutoConfigStatus value, or NOT_SET if invalid. + */ + static AutoConfigStatus toAutoConfigStatus(int value) { + switch (value) { + case 0: return AutoConfigStatus::NOT_IN_PROGRESS; + case 1: return AutoConfigStatus::IN_PROGRESS; + case 2: return AutoConfigStatus::COMPLETED; + default: return AutoConfigStatus::NOT_SET; + } + } + + + /** + * @brief Supported baud rates for the sensor’s UART interface. + * + * These values correspond to the configuration commands accepted + * by the LD2410. After changing the baud rate, a sensor reboot + * is required, and the ESP32’s UART must be reconfigured to match. + */ + enum class Baudrate { + BAUDRATE_9600 = 1, ///< 9600 baud. + BAUDRATE_19200 = 2, ///< 19200 baud. + BAUDRATE_38400 = 3, ///< 38400 baud. + BAUDRATE_57600 = 4, ///< 57600 baud. + BAUDRATE_115200 = 5, ///< 115200 baud. + BAUDRATE_230500 = 6, ///< 230400 baud. + BAUDRATE_256000 = 7, ///< 256000 baud (factory default). + BAUDRATE_460800 = 8 ///< 460800 baud (high-speed). + }; + + /** + * @brief Distance resolution per gate for detection. + * + * The resolution defines how fine-grained the distance measurement is: + * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide. + * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide. + * + * Use NOT_SET only as a placeholder; it is not a valid configuration value. + */ + enum class DistanceResolution { + NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). + RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m. + RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m. + }; + /** + * @brief Safely converts a numeric value to a DistanceResolution enum. + * + * @param value Raw numeric value (typically from a sensor response). + * Expected values: + * - 0 → RESOLUTION_75CM + * - 1 → RESOLUTION_20CM + * @returns The matching DistanceResolution value, or NOT_SET if invalid. + */ + static DistanceResolution toDistanceResolution(int value) { + switch (value) { + case 0: return DistanceResolution::RESOLUTION_75CM; + case 1: return DistanceResolution::RESOLUTION_20CM; + default: return DistanceResolution::NOT_SET; + } + } + + /** + * @brief Holds the most recent detection data reported by the radar. + * + * This structure is continuously updated as new frames arrive. + * Values reflect either the basic presence information or, if + * engineering mode is enabled, per-gate signal details. + */ + struct DetectionData + { + unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received. + + // === Basic detection results === + + bool engineeringMode = false; ///< True if engineering mode data was received. + + bool presenceDetected = false; ///< True if any target is detected. + bool movingPresenceDetected = false; ///< True if a moving target is detected. + bool stationaryPresenceDetected = false; ///< True if a stationary target is detected. + + TargetState targetState = TargetState::NO_TARGET; ///< Current detection state. + unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target. + byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target. + unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target. + byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target. + unsigned int detectedDistance = 0; ///< General detection distance (cm). + + // === Engineering mode data === + byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals. + byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets. + + byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals. + byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets. + + byte lightLevel = 0; ///< Reported ambient light level (0–255). + bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low). + + + /** + * @brief Debug helper: print detection data contents to Serial. + */ + void print() const { + Serial.println("=== DetectionData ==="); + + Serial.print(" Timestamp: "); + Serial.println(timestamp); + + Serial.print(" Engineering Mode: "); + Serial.println(engineeringMode ? "Yes" : "No"); + + Serial.print(" Target State: "); + Serial.println(static_cast(targetState)); + + Serial.print(" Moving Target Distance (cm): "); + Serial.println(movingTargetDistance); + + Serial.print(" Moving Target Signal: "); + Serial.println(movingTargetSignal); + + Serial.print(" Stationary Target Distance (cm): "); + Serial.println(stationaryTargetDistance); + + Serial.print(" Stationary Target Signal: "); + Serial.println(stationaryTargetSignal); + + Serial.print(" Detected Distance (cm): "); + Serial.println(detectedDistance); + + Serial.print(" Light Level: "); + Serial.println(lightLevel); + + Serial.print(" OUT Pin Status: "); + Serial.println(outPinStatus ? "High" : "Low"); + + // --- Engineering mode fields --- + if (engineeringMode) { + Serial.println(" --- Engineering Mode Data ---"); + + Serial.print(" Moving Target Gate Signal Count: "); + Serial.println(movingTargetGateSignalCount); + + Serial.print(" Moving Target Gate Signals: "); + for (int i = 0; i < movingTargetGateSignalCount; i++) { + Serial.print(movingTargetGateSignals[i]); + if (i < movingTargetGateSignalCount - 1) Serial.print(","); + } + Serial.println(); + + Serial.print(" Stationary Target Gate Signal Count: "); + Serial.println(stationaryTargetGateSignalCount); + + Serial.print(" Stationary Target Gate Signals: "); + for (int i = 0; i < stationaryTargetGateSignalCount; i++) { + Serial.print(stationaryTargetGateSignals[i]); + if (i < stationaryTargetGateSignalCount - 1) Serial.print(","); + } + Serial.println(); + } + + Serial.println("======================"); + } + + }; + + /** + * @brief Stores the sensor’s configuration parameters. + * + * This structure represents both static capabilities + * (e.g. number of gates) and configurable settings + * (e.g. sensitivities, timeouts, resolution). + * + * The values are typically filled by request commands + * such as requestAllConfigDataAsync() or requestGateParametersAsync() or + * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). + */ + struct ConfigData { + // === Radar capabilities === + byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when setConfigDataAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor. + + // === Max distance gate settings === + byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection. + byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection. + + // === Per-gate sensitivity settings === + byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100). + byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100). + + // === Timeout parameters === + unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared. + + // === Distance resolution === + DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling setConfigDataAsync() is called. + + // === Auxiliary controls === + byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255). + LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode. + OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin. + + + + + /** + * @brief Validates the configuration data for correctness. + * + * Ensures that enum values are set and values are within valid ranges. + * This method is called internally before applying a config + * via setConfigDataAsync(). + * + * @returns True if the configuration is valid, false otherwise. + */ + bool isValid() const { + // Validate enum settings + if (distanceResolution == DistanceResolution::NOT_SET) return false; + if (lightControl == LightControl::NOT_SET) return false; + if (outputControl == OutputControl::NOT_SET) return false; + + // Validate max distance gates + if (maxMotionDistanceGate < 2 || maxMotionDistanceGate > numberOfGates) return false; + if (maxStationaryDistanceGate < 1 || maxStationaryDistanceGate > numberOfGates) return false; + + // Validate sensitivities + for (int i = 0; i < 9; i++) { + if (distanceGateMotionSensitivity[i] > 100) return false; + if (distanceGateStationarySensitivity[i] > 100) return false; + } + + return true; + } + + /** + * @brief Compares this ConfigData with another for equality. + * + * @param other The other ConfigData instance to compare against. + * @returns True if all fields are equal, false otherwise. + */ + bool equals(const ConfigData& other) const { + if (numberOfGates != other.numberOfGates) return false; + if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false; + if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false; + if (noOneTimeout != other.noOneTimeout) return false; + if (distanceResolution != other.distanceResolution) return false; + if (lightThreshold != other.lightThreshold) return false; + if (lightControl != other.lightControl) return false; + if (outputControl != other.outputControl) return false; + + for (int i = 0; i < 9; i++) { + if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false; + if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false; + } + return true; + } + + /** + * @brief Debug helper: print configuration contents to Serial. + */ + void print() const { + Serial.println("=== ConfigData ==="); + + Serial.print(" Number of Gates: "); + Serial.println(numberOfGates); + + Serial.print(" Max Motion Distance Gate: "); + Serial.println(maxMotionDistanceGate); + + Serial.print(" Max Stationary Distance Gate: "); + Serial.println(maxStationaryDistanceGate); + + Serial.print(" Motion Sensitivity: "); + for (int i = 0; i < 9; i++) { + Serial.print(distanceGateMotionSensitivity[i]); + if (i < 8) Serial.print(","); + } + Serial.println(); + + Serial.print(" Stationary Sensitivity: "); + for (int i = 0; i < 9; i++) { + Serial.print(distanceGateStationarySensitivity[i]); + if (i < 8) Serial.print(","); + } + Serial.println(); + + Serial.print(" No One Timeout: "); + Serial.println(noOneTimeout); + + Serial.print(" Distance Resolution: "); + Serial.println(static_cast(distanceResolution)); + + Serial.print(" Light Threshold: "); + Serial.println(lightThreshold); + + Serial.print(" Light Control: "); + Serial.println(static_cast(lightControl)); + + Serial.print(" Output Control: "); + Serial.println(static_cast(outputControl)); + + Serial.println("==================="); + } + }; + + +} \ No newline at end of file From cf070ffdda694a8846472bc3478d300f36b531cb Mon Sep 17 00:00:00 2001 From: Lizard King Date: Sun, 28 Sep 2025 13:24:26 +0200 Subject: [PATCH 004/114] Debug macros move to own file, changed settings to allow for debug level --- LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 3 ++ README.md | 43 +++++++++++++--------- src/LD2410Async.cpp | 4 +-- src/LD2410Async.h | 68 ++--------------------------------- src/LD2410Debug.h | 69 ++++++++++++++++++++++++++++++++++++ 6 files changed, 103 insertions(+), 85 deletions(-) create mode 100644 src/LD2410Debug.h diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index e75f96c..dd76802 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -34,6 +34,7 @@ + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 3d98c89..4b59a4e 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -42,5 +42,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/README.md b/README.md index 1846e24..26bcdeb 100644 --- a/README.md +++ b/README.md @@ -198,33 +198,42 @@ If you run into issues when using the library, check the following common proble ## Debugging Tips -The library includes optional debug output to help you see what is happening inside. +The library includes a flexible debug system that can help you troubleshoot communication with the LD2410 radar sensor. +Debugging is controlled by two preprocessor defines: + This is controlled by preprocessor defines that you can enable **before including** the library header in your sketch. -### Enabling Debug Output +- **LD2410ASYNC_DEBUG_LEVEL** + - 0 → no debug output (default). + - 1 → print simple debug messages with Serial.print(). + - 2 → also print raw buffer dumps in hexadecimal format. + +- **LD2410ASYNC_DEBUG_DATA_LEVEL** + - Same as above, but applies to detection data debug output. + +### Usage + +These values must be defined before including the library header. -- Add one or more of the following `#define` statements at the very top of your main `.ino` file (before any `#include`): ```cpp -#define ENABLE_DEBUG // General debug output (mostly on config data and commands) -#define ENABLE_DEBUG_DATA // Extra output for received data frames +#define LD2410ASYNC_DEBUG_LEVEL 1 +#define LD2410ASYNC_DEBUG_DATA_LEVEL 2 #include ``` - -- When enabled, the library will print debug messages to the default Serial port at runtime. - -- You can use this to verify that commands are sent, acknowledgements are received, and data frames are being processed correctly. +With the configuration above: +- General library operations (entering config mode, sending commands, etc.) will print debug messages. +- Incoming detection data frames will be printed, including full hex buffer dumps. ### Notes - -- Debug output is only for troubleshooting. It should **be disabled** in production builds. If active it will add many Serial.print() calls to the build, resulting in a larger size and solwer execution of the build - -- The debug macros are internal to the library. They are not meant to be used in your own code. - -- If you need diagnostic output in your own project, use standard Serial.print() calls instead. - -By selectively enabling these flags, you can get detailed insight into the communication with the LD2410 sensor whenever you need to troubleshoot. +- **Do not enable debug for production code.** + Debugging produces a lot of Serial.print() calls which: + - Increase binary size. + - Reduce runtime performance. + - Can overwhelm the serial output if the radar produces data frequently. +- Use debug output only during development or troubleshooting. +- Always remember to set both values back to 0 (or simply not define them) for production builds. ## License diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 5ac12df..7eaf42e 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -1161,7 +1161,7 @@ void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Asyn sender->configModeEnabled = false; sender->engineeringModeEnabled = false; -#ifdef ENABLE_DEBUG +#if (LD2410ASYNC_DEBUG_LEVEL > 0) if (result == AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated"); @@ -1179,7 +1179,7 @@ void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Asyn void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { -#ifdef ENABLE_DEBUG +#if (LD2410ASYNC_DEBUG_LEVEL > 0) if (result == AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Config mode disabled due to inactivity"); diff --git a/src/LD2410Async.h b/src/LD2410Async.h index d1feaa7..8ff785a 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1,75 +1,11 @@ #pragma once + #include "Arduino.h" +#include "LD2410Debug.h" #include "LD2410Types.h" #include "LD2410Defs.h" -//#define ENABLE_DEBUG - -//#define ENABLE_DEBUG_DATA - -#ifndef ARDUINO_ARCH_ESP32 -#error "The LD2410Async library is only supported on ESP32 platforms." -#endif - - -#ifdef ENABLE_DEBUG - -#define DEBUG_PRINT_MILLIS \ - { \ - Serial.print(millis()); \ - Serial.print(" "); \ - } - - -#define DEBUG_PRINT(...) \ - { \ - Serial.print(__VA_ARGS__); \ - } - - -#define DEBUG_PRINTLN(...) \ - { \ - Serial.println(__VA_ARGS__); \ - } - -#define DEBUG_PRINTBUF(...) \ - { \ - printBuf(__VA_ARGS__); \ - } - -#else - -#define DEBUG_PRINT(...) -#define DEBUG_PRINTLN(...) -#define DEBUG_PRINTBUF(...) -#define DEBUG_PRINT_MILLIS -#endif - -#ifdef ENABLE_DEBUG_DATA - -#define DEBUG_PRINT_DATA(...) \ - { \ - Serial.print(__VA_ARGS__); \ - } - - -#define DEBUG_PRINTLN_DATA(...) \ - { \ - Serial.println(__VA_ARGS__); \ - } - -#define DEBUG_PRINTBUF_DATA(...) \ - { \ - printBuf(__VA_ARGS__); \ - } -#else -#define DEBUG_PRINT_DATA(...) -#define DEBUG_PRINTLN_DATA(...) -#define DEBUG_PRINTBUF_DATA(...) -#endif - - diff --git a/src/LD2410Debug.h b/src/LD2410Debug.h new file mode 100644 index 0000000..824d97a --- /dev/null +++ b/src/LD2410Debug.h @@ -0,0 +1,69 @@ + + +#pragma once +#include "Arduino.h" + +// ======================================================================================= +// Debug level configuration +// ======================================================================================= +// If not defined by the user/project, initialize to 0 (disabled). +#ifndef LD2410ASYNC_DEBUG_LEVEL +#define LD2410ASYNC_DEBUG_LEVEL 0 +#endif + +#ifndef LD2410ASYNC_DEBUG_DATA_LEVEL +#define LD2410ASYNC_DEBUG_DATA_LEVEL 0 +#endif + +// ======================================================================================= +// Helper: Hex buffer print (only compiled if needed) +// ======================================================================================= +#if (LD2410ASYNC_DEBUG_LEVEL > 1) || (LD2410ASYNC_DEBUG_DATA_LEVEL > 1) +static inline void printBuf(const byte* buf, byte size) +{ + for (byte i = 0; i < size; i++) { + String bStr(buf[i], HEX); + bStr.toUpperCase(); + if (bStr.length() == 1) bStr = "0" + bStr; + Serial.print(bStr); + Serial.print(' '); + } + Serial.println(); +} +#endif + +// ======================================================================================= +// Normal debug macros +// ======================================================================================= +#if LD2410ASYNC_DEBUG_LEVEL > 0 +#define DEBUG_PRINT_MILLIS { Serial.print(millis()); Serial.print(" "); } +#define DEBUG_PRINT(...) { Serial.print(__VA_ARGS__); } +#define DEBUG_PRINTLN(...) { Serial.println(__VA_ARGS__); } +#if LD2410ASYNC_DEBUG_LEVEL > 1 +#define DEBUG_PRINTBUF(...) { printBuf(__VA_ARGS__); } +#else +#define DEBUG_PRINTBUF(...) +#endif +#else +#define DEBUG_PRINT_MILLIS +#define DEBUG_PRINT(...) +#define DEBUG_PRINTLN(...) +#define DEBUG_PRINTBUF(...) +#endif + +// ======================================================================================= +// Data debug macros +// ======================================================================================= +#if LD2410ASYNC_DEBUG_DATA_LEVEL > 0 +#define DEBUG_PRINT_DATA(...) { Serial.print(__VA_ARGS__); } +#define DEBUG_PRINTLN_DATA(...) { Serial.println(__VA_ARGS__); } +#if LD2410ASYNC_DEBUG_DATA_LEVEL > 1 +#define DEBUG_PRINTBUF_DATA(...) { printBuf(__VA_ARGS__); } +#else +#define DEBUG_PRINTBUF_DATA(...) +#endif +#else +#define DEBUG_PRINT_DATA(...) +#define DEBUG_PRINTLN_DATA(...) +#define DEBUG_PRINTBUF_DATA(...) +#endif From 224514b3829034e66696a840289fd8f0be60b35f Mon Sep 17 00:00:00 2001 From: Lizard King Date: Sun, 28 Sep 2025 22:56:14 +0200 Subject: [PATCH 005/114] WIP setConfigData(), sequence processing changed/simplyfied --- src/LD2410Async.cpp | 479 ++++++++++++++++++++++++++++++++++---------- src/LD2410Async.h | 50 ++++- 2 files changed, 416 insertions(+), 113 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 7eaf42e..7c2351e 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -562,8 +562,8 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal { vTaskSuspendAll(); - //Dont check with asyncIsBusy() since this would also checks if sendConfigCommandAsync has started a command which is using this method and asyncIsBusy would therefore return true which would block the command. - if (asyncCommandCallback == nullptr) { + //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active + if (!asyncCommandActive) { //Register data for callback @@ -598,7 +598,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal ***********************************************************************************/ bool LD2410Async::asyncIsBusy() { - return asyncCommandActive || sendAsyncSequenceActive; + return asyncCommandActive || sendAsyncSequenceActive || setConfigDataAsyncConfigActive; } /********************************************************************************** @@ -607,7 +607,8 @@ bool LD2410Async::asyncIsBusy() { bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData) { - if (asyncIsBusy()) return false; + //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active + if (asyncCommandActive || sendAsyncSequenceActive) return false; // Reset sequence buffer if (!resetCommandSequence()) return false;; @@ -616,13 +617,13 @@ bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallba if (!addCommandToSequence(command)) return false; // Execute as a sequence (with just one command) - return sendCommandSequenceAsync(callback, userData); + return executeCommandSequenceAsync(callback, userData); } /********************************************************************************** * Async command sequence methods ***********************************************************************************/ -void LD2410Async::executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult result) { +void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) { if (sendAsyncSequenceActive) { DEBUG_PRINT_MILLIS; @@ -645,7 +646,7 @@ void LD2410Async::executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult r // Callback after disabling config mode at the end of sequence -void LD2410Async::sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { LD2410Async::AsyncCommandResult sequenceResult = static_cast(userData); @@ -655,25 +656,29 @@ void LD2410Async::sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* DEBUG_PRINTLN(result); sequenceResult = result; // report disable failure if it happened } - sender->executeAsyncSequenceCallback(sequenceResult); + sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult); +} + +void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) { + if (!sendAsyncSequenceInitialConfigModeState) { + disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast(result)); + } + else { + executeCommandSequenceAsyncExecuteCallback(result); + } } // Called when a single command in the sequence completes -void LD2410Async::sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result != LD2410Async::AsyncCommandResult::SUCCESS) { // Abort sequence if a command fails DEBUG_PRINT_MILLIS DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: "); - DEBUG_PRINTLN(result); - if (!sender->sendAsyncSequenceInitialConfigModeState) { - sender->disableConfigModeAsync(sendCommandSequenceAsyncDisableConfigModeCallback, static_cast(result)); - } - else { - sender->executeAsyncSequenceCallback(result); - } + sender->executeCommandSequenceAsyncFinalize(result); + return; - } + }; // Move to next command sender->sendAsyncSequenceIndex++; @@ -682,47 +687,21 @@ void LD2410Async::sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, L // Send next command sender->sendCommandAsync( sender->commandSequenceBuffer[sender->sendAsyncSequenceIndex], - sendCommandSequenceAsyncCommandCallback, + executeCommandSequenceAsyncCommandCallback, 0 ); } else { // Sequence finished successfully - if (!sender->sendAsyncSequenceInitialConfigModeState) { - sender->disableConfigModeAsync(sendCommandSequenceAsyncDisableConfigModeCallback, static_cast(LD2410Async::AsyncCommandResult::SUCCESS)); - } - else { - sender->executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult::SUCCESS); - } - } -} - -// After enabling config mode at the beginning -void LD2410Async::sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { - if (result == LD2410Async::AsyncCommandResult::SUCCESS) { - // Start with first command - sender->sendAsyncSequenceIndex = 0; - sender->sendCommandAsync( - sender->commandSequenceBuffer[sender->sendAsyncSequenceIndex], - sendCommandSequenceAsyncCommandCallback, - 0 - ); - } - else { - // Failed to enable config mode - DEBUG_PRINT_MILLIS - DEBUG_PRINT("Error: Enabling config mode before command sequence failed. Result:"); - DEBUG_PRINTLN(result); - sender->executeAsyncSequenceCallback(result); + sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS); } } - -bool LD2410Async::sendCommandSequenceAsync(AsyncCommandCallback callback, byte userData) { - if (asyncIsBusy()) return false; +bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData) { + if (asyncCommandActive || sendAsyncSequenceActive) return false; if (commandSequenceBufferCount == 0) return true; // nothing to send DEBUG_PRINT_MILLIS; @@ -733,17 +712,26 @@ bool LD2410Async::sendCommandSequenceAsync(AsyncCommandCallback callback, byte u sendAsyncSequenceCallback = callback; sendAsyncSequenceUserData = userData; sendAsyncSequenceInitialConfigModeState = configModeEnabled; - sendAsyncSequenceIndex = 0; sendAsyncSequenceStartMs = millis(); if (!configModeEnabled) { - enableConfigModeAsync(sendCommandSequenceAsyncEnableConfigModeCallback, 0); + // Need to enable config mode first + // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires. + sendAsyncSequenceIndex = -1; + sendCommandAsync( + LD2410Defs::configEnableCommandData, + executeCommandSequenceAsyncCommandCallback, + 0 + ); } else { - // Already in config mode, start directly + // Already in config mode, start directly. + // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires. + sendAsyncSequenceIndex = 0; + sendCommandAsync( commandSequenceBuffer[sendAsyncSequenceIndex], - sendCommandSequenceAsyncCommandCallback, + executeCommandSequenceAsyncCommandCallback, 0 ); } @@ -752,7 +740,7 @@ bool LD2410Async::sendCommandSequenceAsync(AsyncCommandCallback callback, byte u } bool LD2410Async::addCommandToSequence(const byte* command) { - if (asyncIsBusy()) return false; + if (asyncCommandActive || sendAsyncSequenceActive) return false; if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE) return false; // buffer full @@ -776,7 +764,7 @@ bool LD2410Async::addCommandToSequence(const byte* command) { bool LD2410Async::resetCommandSequence() { - if (asyncIsBusy()) return false; + if (asyncCommandActive || sendAsyncSequenceActive) return false; DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Command sequence reset done."); @@ -785,32 +773,48 @@ bool LD2410Async::resetCommandSequence() { } /********************************************************************************** -* Async commands methods +* Config mode commands ***********************************************************************************/ -bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) { +//Config mode command have a internal version which does not check for busy and can therefore be used within other command implementations + +bool LD2410Async::enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Enable Config Mode"); return sendCommandAsync(LD2410Defs::configEnableCommandData, callback, userData); } -bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) { + if (asyncIsBusy()) return false; + return enableConfigModeInternalAsync(LD2410Defs::configEnableCommandData, callback, userData); +} + +bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Disable Config Mode"); return sendCommandAsync(LD2410Defs::configDisableCommandData, callback, userData); } +bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) { + if (asyncIsBusy()) return false; + return disableConfigModeInternalAsync(LD2410Defs::configDisableCommandData, callback, userData); +} +/********************************************************************************** +* Native LD2410 commands to control, configure and query the sensor +***********************************************************************************/ +// All these commands need to be executed in config mode. +// The code takes care of that. Enables/disable config mode if necessary, +// but also keeps config mode active if it was already active before the command bool LD2410Async::setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Max Gate"); + if (asyncIsBusy()) return false; byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) { - - return sendConfigCommandAsync(cmd, callback, userData); } return false; @@ -820,18 +824,21 @@ bool LD2410Async::setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxSta bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request Gate Parameters"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData); } bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Enable EngineeringMode"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData); } bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Disable EngineeringMode"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData); } @@ -842,6 +849,8 @@ bool LD2410Async::setDistanceGateSensitivityAsync(const byte movingThresholds[9] DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)"); + if (asyncIsBusy()) return false; + if (!resetCommandSequence()) return false; for (byte gate = 0; gate < 9; gate++) { @@ -850,7 +859,7 @@ bool LD2410Async::setDistanceGateSensitivityAsync(const byte movingThresholds[9] if (!addCommandToSequence(cmd)) return false; } - return sendCommandSequenceAsync(callback, userData); + return executeCommandSequenceAsync(callback, userData); } @@ -862,8 +871,10 @@ bool LD2410Async::setDistanceGateSensitivityAsync(byte gate, byte movingThreshol DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Gate Sensitivity"); + if (asyncIsBusy()) return false; + byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; - if(!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false; + if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -873,6 +884,9 @@ bool LD2410Async::setDistanceGateSensitivityAsync(byte gate, byte movingThreshol bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request Firmware"); + + if (asyncIsBusy()) return false; + return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData); } @@ -883,11 +897,13 @@ bool LD2410Async::setBaudRateAsync(byte baudRateSetting, DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Baud Rate"); + if (asyncIsBusy()) return false; + if ((baudRateSetting < 1) || (baudRateSetting > 8)) return false; byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)]; - if(!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false; + if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -895,6 +911,9 @@ bool LD2410Async::setBaudRateAsync(byte baudRateSetting, bool LD2410Async::setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) { + + if (asyncIsBusy()) return false; + return setBaudRateAsync((byte)baudRate, callback, userData); } @@ -902,6 +921,8 @@ bool LD2410Async::setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandC bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Restore Factory Settings"); + + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData); } @@ -910,12 +931,15 @@ bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byt bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Enable Bluetooth"); + if (asyncIsBusy()) return false; + return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData); } bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Disable Bluetooth"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData); } @@ -923,6 +947,7 @@ bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte user bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request Mac Address"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData); } @@ -931,6 +956,7 @@ bool LD2410Async::setBluetoothpasswordAsync(const char* password, { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Bluetooth Password"); + if (asyncIsBusy()) return false; byte cmd[sizeof(LD2410Defs::setBluetoothPasswordCommandData)]; if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false; @@ -949,12 +975,14 @@ bool LD2410Async::setBluetoothpasswordAsync(const String& password, AsyncCommand bool LD2410Async::resetBluetoothpasswordAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reset Bluetooth Password"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData); } bool LD2410Async::setDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution 75cm"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData); }; @@ -963,9 +991,10 @@ bool LD2410Async::setDistanceResolutionAsync(LD2410Types::DistanceResolution dis { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution"); + if (asyncIsBusy()) return false; byte cmd[6]; - if(!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false; + if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false; return sendConfigCommandAsync(cmd, callback, userData); } @@ -973,12 +1002,14 @@ bool LD2410Async::setDistanceResolutionAsync(LD2410Types::DistanceResolution dis bool LD2410Async::setDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution 20cm"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData); }; bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request Distance Resolution cm"); + if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData); } @@ -988,8 +1019,7 @@ bool LD2410Async::setAuxControlSettingsAsync(LD2410Types::LightControl lightCont { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Aux Control Settings"); - - + if (asyncIsBusy()) return false; byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false; @@ -1002,6 +1032,9 @@ bool LD2410Async::setAuxControlSettingsAsync(LD2410Types::LightControl lightCont bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request Aux Control Settings"); + + if (asyncIsBusy()) return false; + return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData); } @@ -1009,98 +1042,337 @@ bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Begin auto config"); + + if (asyncIsBusy()) return false; + return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData); }; bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reqtest auto config status"); + + if (asyncIsBusy()) return false; + return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData); } +/********************************************************************************** +* High level commands that combine several native commands +***********************************************************************************/ +// It is recommend to always use these commands if feasible, +// since they streamline the inconsistencies in the native requesr and config commands +// and reduce the total number of commands that have to be called. bool LD2410Async::requestAllStaticData(AsyncCommandCallback callback, byte userData) { - if (asyncIsBusy()) return false; DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request all static data"); + if (asyncIsBusy()) return false; + + if (!resetCommandSequence()) return false; if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false; if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false; - return sendCommandSequenceAsync(callback, userData); + return executeCommandSequenceAsync(callback, userData); } bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte userData) { - if (asyncIsBusy()) return false; DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request all config data"); + if (asyncIsBusy()) return false; + if (!resetCommandSequence()) return false; if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false; if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false; if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false; - return sendCommandSequenceAsync(callback, userData); + return executeCommandSequenceAsync(callback, userData); } +// ---------------------------------------------------------------------------------- +// - Set config data async methods +// ---------------------------------------------------------------------------------- +// The command to set all config values on the sensor is the most complex command internally. +// It uses a first command sequences to get the current sensor config, then checks what +// actually needs to be changed and then creates a second command sequence to do the needed changes. -bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& config, AsyncCommandCallback callback, byte userData) -{ - if (asyncIsBusy()) return false; +void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Asnyc::AsncCommandResult result) { + AsyncCommandCallback cb = setConfigDataAsyncConfigCallback; + setConfigDataAsyncConfigCallback = nullptr; + byte userData = setConfigDataAsyncConfigUserData; + setConfigDataAsyncConfigActive = false; - if (!config.isValid()) { + DEBUG_PRINT_MILLIS + DEBUG_PRINT("SetConfigDataAsync complete. Result: "); + DEBUG_PRINTLN(result); + + if (cb) { + cb(this, result, userData); + } + +} + +void LD2410Async::setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { + if (result != LD2410Asnyc::AsncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("ConfigData invalid"); - return false; + DEBUG_PRINTLN("Warning: Disabling config mode after setConfigDataAsync failed. Result: "); + DEBUG_PRINTLN(result); + sender->setConfigDataAsyncExecuteCallback(result); } + else { + // Config mode disabled successfully + sender->setConfigDataAsyncExecuteCallback(sender->setConfigDataAsyncResultToReport); + } +} - DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("Set full ConfigData"); +void LD2410Async::setConfigDataAsyncFinalize(LD2410Asnyc::AsncCommandResult resultToReport) { - if (!resetCommandSequence()) return false; + if (setConfigDataAsyncConfigInitialConfigMode) { + setConfigDataAsyncResultToReport = resultToReport; + if (disableConfigModeAsync(setConfigDataAsyncConfigModeDisabledCallback, 0)) { + } + else { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Disabling config mode after setConfigDataAsync failed."); + setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAIL); + } + } + else { + setConfigDataAsyncExecuteCallback(resultToReport); + } +} + + +void LD2410Async::setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { + if (AsyncCommandResult::SUCCESS != result) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Writing config data to sensor failed."); + }; + //Pass result to finalize method, which will also disable config mode if needed + sender->setConfigDataAsyncFinalize(result); +} + +bool LD2410Async::setConfigDataAsyncSaveChanges() { + + bool writeFulLConfigData = setConfigDataAsyncWriteFullConfig + + //Get a clone of the current config, so it does not get changed while we are working + LD2410Types::ConfigData currentConfig = LD2410Async::getConfigData(); + + //Is there anything to save at all? + if (!writeFulLConfigData && currentConfig.equals(setConfigDataAsyncConfigDataToWrite)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("No config changes detected, not need to write anything"); + setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS); + return; + }; + + + if (!resetCommandSequence()) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Could not reset command sequence."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; // 1. Max gate + no one timeout - { + if (writeFulLConfigData || currentConfig.maxMotionDistanceGate != setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate + || currentConfig.maxStationaryDistanceGate != setConfigDataAsyncConfigDataToWrite.maxStationaryDistanceGate + || currentConfig.noOneTimeout != setConfigDataAsyncConfigDataToWrite.noOneTimeout) { byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; - if (!LD2410CommandBuilder::buildMaxGateCommand(cmd, config.maxMotionDistanceGate, config.maxStationaryDistanceGate, config.noOneTimeout)) return false; - if (!addCommandToSequence(cmd)) return false; + if (!LD2410CommandBuilder::buildMaxGateCommand(cmd, + setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate, + setConfigDataAsyncConfigDataToWrite.maxStationaryDistanceGate, + setConfigDataAsyncConfigDataToWrite.noOneTimeout)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Building max gate command failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + if (!addCommandToSequence(cmd)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Adding max gate command to sequence failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; } - // 2. Gate sensitivities (sequence of commands) for (byte gate = 0; gate < 9; gate++) { - byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; - if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, config.distanceGateMotionSensitivity[gate], config.distanceGateStationarySensitivity[gate])) return false; - if (!addCommandToSequence(cmd)) return false; + if (writeFulLConfigData && currentConfig.distanceGateMotionSensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate] + || currentConfig.distanceGateStationarySensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) { + byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; + if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, + setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate], + setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Building gate sensitivity command failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + if (!addCommandToSequence(cmd)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINT("Error: Adding gate sensitivity command for gate "); + DEBUG_PRINT(gate); + DEBUG_PRINTLN(" to sequence failed."); + + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + } + } + + } - // 3. Distance resolution - { + //3. Distance resolution + if (writeFulLConfigData && currentConfig.distanceResolution != setConfigDataAsyncConfigDataToWrite.distanceResolution) { byte cmd[6]; // resolution commands are 6 bytes long - if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, config.distanceResolution)) return false; - if (!addCommandToSequence(cmd)) return false; + if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, setConfigDataAsyncConfigDataToWrite.distanceResolution)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Building distance resolution command failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + if (!addCommandToSequence(cmd)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Adding distance resolution command to sequence failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + }; + + //4. Aux control settings + if (writeFulLConfigData && currentConfig.lightControl != setConfigDataAsyncConfigDataToWrite.lightControl + || currentConfig.lightThreshold != setConfigDataAsyncConfigDataToWrite.lightThreshold + || currentConfig.outputControl != setConfigDataAsyncConfigDataToWrite.outputControl) { + byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; + if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, + setConfigDataAsyncConfigDataToWrite.lightControl, + setConfigDataAsyncConfigDataToWrite.lightThreshold, + setConfigDataAsyncConfigDataToWrite.outputControl)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Building aux control command failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + if (!addCommandToSequence(cmd)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Adding aux control command to sequence failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + }; + }; + + if (!executeCommandSequenceAsync(setConfigDataAsyncWriteConfigCallback, 0)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Starting command sequence to write config data failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + } + + +} + +void LD2410Async::setConfigDataAsyncAllConfigDataRequestCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Requesting current config data failed. Result: "); + DEBUG_PRINTLN(result); + setConfigDataAsyncFinalize(result); + return; } + //Got current config data, now write the changed values + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Current config data received."); + setConfigDataAsyncSaveChanges(); + +} - // 4. Aux control settings +void LD2410Async::setConfigDataAsyncRequestAllConfigData() { + if (resetCommandSequence() + && addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData) + && addCommandToSequence(LD2410Defs::requestParamsCommandData) + && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) { - byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; - if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, config.lightControl, config.lightThreshold, config.outputControl)) return false; - if (!addCommandToSequence(cmd)) return false; + if (executeCommandSequenceAsync(setConfigDataAsyncAllConfigDataRequestCallback, 0)) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Requesting current config data"); + return; + } + else { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Stating command sequence to request current config data failed."); + setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); + return; + } } +} + +void LD2410Async::setConfigDataAsyncConfigModeEnabled(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { + if (rsult != AsyncCommandResult::SUCCESS) { + + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Enabling config mode failed. Result: "); + DEBUG_PRINTLN(result); + sender->setConfigDataAsyncFinalize(result); + return; + }; + + //Got ack of enable config mode command + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Config mode enabled."); + + //call method to request current config data + sender->setConfigDataAsyncRequestAllConfigData(); - // Execute the sequence - return sendCommandSequenceAsync(callback, userData); } +bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData) +{ + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Writing config data to the LD2410"); + + if (asyncIsBusy()) return false; + + + if (!configToWrite.isValid()) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("configToWrite is invalid."); + return false; + } + + setConfigDataAsyncConfigActive = true; + setConfigDataAsyncConfigDataToWrite = configToWrite; + setConfigDataAsyncWriteFullConfig = writeAllConfigData; + setConfigDataAsyncConfigCallback = callback; + setConfigDataAsyncConfigUserData = userData; + setConfigDataAsyncConfigInitialConfigMode = isConfigModeEnabled(); + + if (!setConfigDataAsyncConfigInitialConfigMode) { + return enableConfigModeInternalAsync(setConfigDataAsyncConfigModeEnabled, 0); + } + else { + if (setConfigDataAsyncWriteFullConfig) { + return setConfigDataAsyncSaveChanges(); + } + else { + return requestAllConfigData(setConfigDataAsyncAllConfiDataRequestCallback, 0); + } + } +} /*-------------------------------------------------------------------- - Reboot command ---------------------------------------------------------------------*/ - +//The reboot command is special, since it needs to be sent in config mode, +//but doesnt have to disable config mode, since the sensor goes into normal +//detection mode after the reboot anyway. void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result == LD2410Async::AsyncCommandResult::SUCCESS) { sender->configModeEnabled = false; @@ -1109,7 +1381,12 @@ void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCo DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reboot initiated"); } - sender->executeAsyncSequenceCallback(result); + else { + DEBUG_PRINT_MILLIS; + DEBUG_PRINT("Error! Could not initiate reboot. Result: "); + DEBUG_PRINTLN((int)result); + } + sender->executeCommandSequenceAsyncExecuteCallback(result); } @@ -1125,22 +1402,20 @@ void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Asyn //Just execute the callback DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error! Could not enabled config mode before reboot"); - sender->executeAsyncSequenceCallback(result); + sender->executeCommandSequenceAsyncExecuteCallback(result); } } bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) { - if (asyncIsBusy()) return false; + DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reboot"); - sendAsyncSequenceCallback = callback; - sendAsyncSequenceUserData = userData; - + if (asyncIsBusy()) return false; - return enableConfigModeAsync(rebootEnableConfigModeCallback, 0); + return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0); } /********************************************************************************** diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 8ff785a..888b998 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -543,8 +543,8 @@ class LD2410Async { * @brief Sets the timeout for async command callbacks. * * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs. - * - * + * + * * @param timeoutMs Timeout in milliseconds (default 6000 ms). */ void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; } @@ -1292,7 +1292,7 @@ class LD2410Async { byte sendAsyncSequenceUserData = 0; /// True if an async sequence is currently pending. - bool sendAsyncSequenceActive = false; + bool sendAsyncSequenceActive = false; /// Index of currently active command in the sequence buffer int sendAsyncSequenceIndex = 0; @@ -1301,15 +1301,18 @@ class LD2410Async { bool sendAsyncSequenceInitialConfigModeState = false; /// Finalize an async sequence and invoke its callback - void executeAsyncSequenceCallback(LD2410Async::AsyncCommandResult result); + void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result); + + /// Final step of an async sequence: restore config mode if needed and call callback + void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport); /// Internal callbacks for sequence steps - static void sendCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); - static void sendCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); - static void sendCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void executeCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); /// Start executing an async sequence - bool sendCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0); + bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0); /// Add one command to the sequence buffer bool addCommandToSequence(const byte* command); @@ -1400,7 +1403,7 @@ class LD2410Async { // ============================================================================ ///< Timeout for async commands in ms (default 6000). - unsigned long asyncCommandTimeoutMs = 6000; + unsigned long asyncCommandTimeoutMs = 6000; /// Send a generic async command bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0); @@ -1409,7 +1412,7 @@ class LD2410Async { void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result); /// Callback for async command sequence that includes data requests - static void sendCommandSequenceAsyncDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + static void executeCommandSequenceAsyncDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); /// Handle async command timeout void handleAsyncCommandCallbackTimeout(); @@ -1423,6 +1426,7 @@ class LD2410Async { byte asyncCommandCommandCode = 0; ///< Last command code issued bool asyncCommandActive = false; ///< True if an async command is currently pending. + // ============================================================================ // Data processing // ============================================================================ @@ -1430,6 +1434,30 @@ class LD2410Async { /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks void processReceivedData(); + // ============================================================================ + // Config mode + // ============================================================================ + bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData); + bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData); - + // ============================================================================ + // Config writing + // ============================================================================ + LD2410Types::ConfigData setConfigDataAsyncConfigDataToWrite; + bool setConfigDataAsyncWriteFullConfig = false; + AsyncCommandCallback setConfigDataAsyncConfigCallback = nullptr; + byte setConfigDataAsyncConfigUserData = 0; + bool setConfigDataAsyncConfigActive = false; + bool setConfigDataAsyncConfigInitialConfigMode = false; + AsyncCommandResult setConfigDataAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS; + + void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Asnyc::AsncCommandResult result); + static void setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); + void setConfigDataAsyncFinalize(LD2410Asnyc::AsncCommandResult resultToReport); + static void setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); + bool setConfigDataAsyncSaveChanges(); + static void setConfigDataAsyncAllConfigDataRequestCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); + void setConfigDataAsyncRequestAllConfigData(); + static void setConfigDataAsyncConfigModeEnabled(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); + bool setConfigDataAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData); }; From af53db3a4e5d226c7c9e1e7080164e1db18b174b Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 09:35:23 +0200 Subject: [PATCH 006/114] setConfigData rewrite completed. Many typos and bugs fixed --- src/LD2410Async.cpp | 198 ++++++++++++++++++++++++-------------------- src/LD2410Async.h | 23 +++-- 2 files changed, 122 insertions(+), 99 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 7c2351e..6a33082 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -1,3 +1,5 @@ +#include "Arduino.h" +#include "Ticker.h" #include "LD2410Async.h" #include "LD2410Defs.h" #include "LD2410Types.h" @@ -34,15 +36,7 @@ String byte2hex(byte b, bool addZero = true) } -void printBuf(const byte* buf, byte size) -{ - for (byte i = 0; i < size; i++) - { - Serial.print(byte2hex(buf[i])); - Serial.print(' '); - } - Serial.println(); -} + /****************************************************************************************** * Read frame methods @@ -585,7 +579,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal else { xTaskResumeAll(); DEBUG_PRINT_MILLIS; - DEBUG_PRINT("Error! Did not send async command "); + DEBUG_PRINT("Error! Async command is pending- Did not send async command "); DEBUG_PRINTLN(byte2hex(command[2])); return false; @@ -714,29 +708,28 @@ bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byt sendAsyncSequenceInitialConfigModeState = configModeEnabled; sendAsyncSequenceStartMs = millis(); + if (commandSequenceBufferCount == 0) { + //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work + sendAsyncSequenceOnceTicker.once_ms(1, [this]() { + this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS); + }); + return true; + + } + if (!configModeEnabled) { // Need to enable config mode first // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires. sendAsyncSequenceIndex = -1; - sendCommandAsync( - LD2410Defs::configEnableCommandData, - executeCommandSequenceAsyncCommandCallback, - 0 - ); + return sendCommandAsync(LD2410Defs::configEnableCommandData, executeCommandSequenceAsyncCommandCallback, 0); } else { // Already in config mode, start directly. // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires. sendAsyncSequenceIndex = 0; - - sendCommandAsync( - commandSequenceBuffer[sendAsyncSequenceIndex], - executeCommandSequenceAsyncCommandCallback, - 0 - ); + return sendCommandAsync(commandSequenceBuffer[sendAsyncSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0); } - return true; } bool LD2410Async::addCommandToSequence(const byte* command) { @@ -785,7 +778,7 @@ bool LD2410Async::enableConfigModeInternalAsync(AsyncCommandCallback callback, b bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) { if (asyncIsBusy()) return false; - return enableConfigModeInternalAsync(LD2410Defs::configEnableCommandData, callback, userData); + return enableConfigModeInternalAsync(callback, userData); } bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) { @@ -796,7 +789,7 @@ bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) { if (asyncIsBusy()) return false; - return disableConfigModeInternalAsync(LD2410Defs::configDisableCommandData, callback, userData); + return disableConfigModeInternalAsync(callback, userData); } /********************************************************************************** @@ -1100,7 +1093,7 @@ bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte // It uses a first command sequences to get the current sensor config, then checks what // actually needs to be changed and then creates a second command sequence to do the needed changes. -void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Asnyc::AsncCommandResult result) { +void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) { AsyncCommandCallback cb = setConfigDataAsyncConfigCallback; setConfigDataAsyncConfigCallback = nullptr; byte userData = setConfigDataAsyncConfigUserData; @@ -1116,8 +1109,8 @@ void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Asnyc::AsncCommandResu } -void LD2410Async::setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { - if (result != LD2410Asnyc::AsncCommandResult::SUCCESS) { +void LD2410Async::setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Warning: Disabling config mode after setConfigDataAsync failed. Result: "); DEBUG_PRINTLN(result); @@ -1129,17 +1122,15 @@ void LD2410Async::setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* send } } -void LD2410Async::setConfigDataAsyncFinalize(LD2410Asnyc::AsncCommandResult resultToReport) { +void LD2410Async::setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) { if (setConfigDataAsyncConfigInitialConfigMode) { setConfigDataAsyncResultToReport = resultToReport; - if (disableConfigModeAsync(setConfigDataAsyncConfigModeDisabledCallback, 0)) { - } - else { + if (!disableConfigModeAsync(setConfigDataAsyncConfigModeDisabledCallback, 0)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Disabling config mode after setConfigDataAsync failed."); - setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAIL); + setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED); } } else { @@ -1148,7 +1139,7 @@ void LD2410Async::setConfigDataAsyncFinalize(LD2410Asnyc::AsncCommandResult resu } -void LD2410Async::setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { +void LD2410Async::setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (AsyncCommandResult::SUCCESS != result) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Writing config data to sensor failed."); @@ -1157,30 +1148,19 @@ void LD2410Async::setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2 sender->setConfigDataAsyncFinalize(result); } -bool LD2410Async::setConfigDataAsyncSaveChanges() { - - bool writeFulLConfigData = setConfigDataAsyncWriteFullConfig - - //Get a clone of the current config, so it does not get changed while we are working - LD2410Types::ConfigData currentConfig = LD2410Async::getConfigData(); - - //Is there anything to save at all? - if (!writeFulLConfigData && currentConfig.equals(setConfigDataAsyncConfigDataToWrite)) { - DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("No config changes detected, not need to write anything"); - setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS); - return; - }; +bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { + //Get a clone of the current config, so it does not get changed while we are working + LD2410Types::ConfigData currentConfig = LD2410Async::getConfigData(); if (!resetCommandSequence()) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Could not reset command sequence."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; // 1. Max gate + no one timeout - if (writeFulLConfigData || currentConfig.maxMotionDistanceGate != setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate + if (setConfigDataAsyncWriteFullConfig + || currentConfig.maxMotionDistanceGate != setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate || currentConfig.maxStationaryDistanceGate != setConfigDataAsyncConfigDataToWrite.maxStationaryDistanceGate || currentConfig.noOneTimeout != setConfigDataAsyncConfigDataToWrite.noOneTimeout) { byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; @@ -1190,28 +1170,30 @@ bool LD2410Async::setConfigDataAsyncSaveChanges() { setConfigDataAsyncConfigDataToWrite.noOneTimeout)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building max gate command failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; if (!addCommandToSequence(cmd)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Adding max gate command to sequence failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Max gate command added to sequence."); } // 2. Gate sensitivities (sequence of commands) for (byte gate = 0; gate < 9; gate++) { - if (writeFulLConfigData && currentConfig.distanceGateMotionSensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate] + if (setConfigDataAsyncWriteFullConfig + || currentConfig.distanceGateMotionSensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate] || currentConfig.distanceGateStationarySensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) { byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate], setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) { DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("Error: Building gate sensitivity command failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + DEBUG_PRINT("Error: Error building gate sensitivity command for gate "); + DEBUG_PRINTLN(gate); + + return false; }; if (!addCommandToSequence(cmd)) { DEBUG_PRINT_MILLIS; @@ -1219,33 +1201,36 @@ bool LD2410Async::setConfigDataAsyncSaveChanges() { DEBUG_PRINT(gate); DEBUG_PRINTLN(" to sequence failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; } + DEBUG_PRINT_MILLIS + DEBUG_PRINT("Gate sensitivity command for gate "); + DEBUG_PRINT(gate); + DEBUG_PRINTLN(" added to sequence."); } - - } //3. Distance resolution - if (writeFulLConfigData && currentConfig.distanceResolution != setConfigDataAsyncConfigDataToWrite.distanceResolution) { + if (setConfigDataAsyncWriteFullConfig + || currentConfig.distanceResolution != setConfigDataAsyncConfigDataToWrite.distanceResolution) { byte cmd[6]; // resolution commands are 6 bytes long if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, setConfigDataAsyncConfigDataToWrite.distanceResolution)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building distance resolution command failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; if (!addCommandToSequence(cmd)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Adding distance resolution command to sequence failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Distance resolution command added to sequence."); }; //4. Aux control settings - if (writeFulLConfigData && currentConfig.lightControl != setConfigDataAsyncConfigDataToWrite.lightControl + if (setConfigDataAsyncWriteFullConfig + || currentConfig.lightControl != setConfigDataAsyncConfigDataToWrite.lightControl || currentConfig.lightThreshold != setConfigDataAsyncConfigDataToWrite.lightThreshold || currentConfig.outputControl != setConfigDataAsyncConfigDataToWrite.outputControl) { byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; @@ -1255,64 +1240,81 @@ bool LD2410Async::setConfigDataAsyncSaveChanges() { setConfigDataAsyncConfigDataToWrite.outputControl)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building aux control command failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; if (!addCommandToSequence(cmd)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Adding aux control command to sequence failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; + return false; }; + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Aux control command added to sequence."); }; + return true; +}; + +bool LD2410Async::setConfigDataAsyncWriteConfig() { + + if (!setConfigDataAsyncBuildSaveChangesCommandSequence()) { + //Could not build command sequence + return false; + } + + if (commandSequenceBufferCount == 0) { + DEBUG_PRINT_MILLIS + DEBUG_PRINTLN("No config changes detected, not need to write anything"); + } if (!executeCommandSequenceAsync(setConfigDataAsyncWriteConfigCallback, 0)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Starting command sequence to write config data failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; - } + return false; + } + return true; -} +}; -void LD2410Async::setConfigDataAsyncAllConfigDataRequestCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { +void LD2410Async::setConfigDataAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result != LD2410Async::AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Requesting current config data failed. Result: "); DEBUG_PRINTLN(result); - setConfigDataAsyncFinalize(result); + sender->setConfigDataAsyncFinalize(result); return; } //Got current config data, now write the changed values DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Current config data received."); - setConfigDataAsyncSaveChanges(); + if (!sender->setConfigDataAsyncWriteConfig()) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Starting saving config data changes failed."); + sender->setConfigDataAsyncFinalize(AsyncCommandResult::FAILED); + } } -void LD2410Async::setConfigDataAsyncRequestAllConfigData() { +bool LD2410Async::setConfigDataAsyncRequestAllConfigData() { if (resetCommandSequence() && addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData) && addCommandToSequence(LD2410Defs::requestParamsCommandData) && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) { - if (executeCommandSequenceAsync(setConfigDataAsyncAllConfigDataRequestCallback, 0)) { + if (executeCommandSequenceAsync(setConfigDataAsyncRequestAllConfigDataCallback, 0)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Requesting current config data"); - return; + return true; } else { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Stating command sequence to request current config data failed."); - setConfigDataAsyncFinalize(AsyncCommandResult::FAIL); - return; } } + return false; } -void LD2410Async::setConfigDataAsyncConfigModeEnabled(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData) { - if (rsult != AsyncCommandResult::SUCCESS) { +void LD2410Async::setConfigDataAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result != AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Enabling config mode failed. Result: "); @@ -1325,8 +1327,21 @@ void LD2410Async::setConfigDataAsyncConfigModeEnabled(LD2410Async* sender, LD241 DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Config mode enabled."); - //call method to request current config data - sender->setConfigDataAsyncRequestAllConfigData(); + bool ret = false; + if (sender->setConfigDataAsyncWriteFullConfig) { + //If we save all changes anyway, no need to request current config data first + ret = sender->setConfigDataAsyncWriteConfig(); + + } + else { + ret = sender->setConfigDataAsyncRequestAllConfigData(); + } + if (!ret) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed."); + sender->setConfigDataAsyncFinalize(AsyncCommandResult::FAILED); + } + } @@ -1353,14 +1368,15 @@ bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& configToWrit setConfigDataAsyncConfigInitialConfigMode = isConfigModeEnabled(); if (!setConfigDataAsyncConfigInitialConfigMode) { - return enableConfigModeInternalAsync(setConfigDataAsyncConfigModeEnabled, 0); + return enableConfigModeInternalAsync(setConfigDataAsyncConfigModeEnabledCallback, 0); } else { if (setConfigDataAsyncWriteFullConfig) { - return setConfigDataAsyncSaveChanges(); + //If we save all changes anyway, no need to request current config data first + return setConfigDataAsyncWriteConfig(); } else { - return requestAllConfigData(setConfigDataAsyncAllConfiDataRequestCallback, 0); + return setConfigDataAsyncRequestAllConfigData(); } } diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 888b998..bdf2944 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -2,6 +2,7 @@ #include "Arduino.h" +#include "Ticker.h" #include "LD2410Debug.h" #include "LD2410Types.h" #include "LD2410Defs.h" @@ -1294,6 +1295,10 @@ class LD2410Async { /// True if an async sequence is currently pending. bool sendAsyncSequenceActive = false; + /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty. + /// This ensures that the callback is always called asynchronously and never directly from the calling context. + Ticker sendAsyncSequenceOnceTicker; + /// Index of currently active command in the sequence buffer int sendAsyncSequenceIndex = 0; @@ -1451,13 +1456,15 @@ class LD2410Async { bool setConfigDataAsyncConfigInitialConfigMode = false; AsyncCommandResult setConfigDataAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS; - void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Asnyc::AsncCommandResult result); - static void setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); - void setConfigDataAsyncFinalize(LD2410Asnyc::AsncCommandResult resultToReport); - static void setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); - bool setConfigDataAsyncSaveChanges(); - static void setConfigDataAsyncAllConfigDataRequestCallback(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); - void setConfigDataAsyncRequestAllConfigData(); - static void setConfigDataAsyncConfigModeEnabled(LD2410Async* sender, LD2410Asnyc::AsncCommandResult result, byte userData); + void setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult result); + static void setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + void setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport); + static void setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + bool setConfigDataAsyncWriteConfig(); + static void setConfigDataAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + bool setConfigDataAsyncRequestAllConfigData(); + static void setConfigDataAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); bool setConfigDataAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData); + bool setConfigDataAsyncBuildSaveChangesCommandSequence(); + }; From 57f396111dfccdc5245d88e2bb05557f3678aeed Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:23:56 +0200 Subject: [PATCH 007/114] Changed names of config methods to start with configure. Updated comments --- src/LD2410Async.cpp | 170 ++++++++++---------- src/LD2410Async.h | 375 ++++++++++++++++++++++++-------------------- src/LD2410Types.h | 8 +- 3 files changed, 295 insertions(+), 258 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 6a33082..19818be 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -592,7 +592,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal ***********************************************************************************/ bool LD2410Async::asyncIsBusy() { - return asyncCommandActive || sendAsyncSequenceActive || setConfigDataAsyncConfigActive; + return asyncCommandActive || sendAsyncSequenceActive || configureAllConfigSettingsAsyncConfigActive; } /********************************************************************************** @@ -798,7 +798,7 @@ bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte use // All these commands need to be executed in config mode. // The code takes care of that. Enables/disable config mode if necessary, // but also keeps config mode active if it was already active before the command -bool LD2410Async::setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, +bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData) { @@ -835,7 +835,7 @@ bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byt return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData); } -bool LD2410Async::setDistanceGateSensitivityAsync(const byte movingThresholds[9], +bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData) { @@ -857,7 +857,7 @@ bool LD2410Async::setDistanceGateSensitivityAsync(const byte movingThresholds[9] -bool LD2410Async::setDistanceGateSensitivityAsync(byte gate, byte movingThreshold, +bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData) { @@ -884,7 +884,7 @@ bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userD } -bool LD2410Async::setBaudRateAsync(byte baudRateSetting, +bool LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; @@ -903,11 +903,11 @@ bool LD2410Async::setBaudRateAsync(byte baudRateSetting, -bool LD2410Async::setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) { +bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) { if (asyncIsBusy()) return false; - return setBaudRateAsync((byte)baudRate, callback, userData); + return configureBaudRateAsync((byte)baudRate, callback, userData); } @@ -944,7 +944,7 @@ bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData); } -bool LD2410Async::setBluetoothpasswordAsync(const char* password, +bool LD2410Async::configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; @@ -959,27 +959,27 @@ bool LD2410Async::setBluetoothpasswordAsync(const char* password, -bool LD2410Async::setBluetoothpasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) { +bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) { - return setBluetoothpasswordAsync(password.c_str(), callback, userData); + return configureBluetoothPasswordAsync(password.c_str(), callback, userData); } -bool LD2410Async::resetBluetoothpasswordAsync(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Reset Bluetooth Password"); if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData); } -bool LD2410Async::setDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution 75cm"); if (asyncIsBusy()) return false; return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData); }; -bool LD2410Async::setDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, +bool LD2410Async::configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; @@ -992,7 +992,7 @@ bool LD2410Async::setDistanceResolutionAsync(LD2410Types::DistanceResolution dis return sendConfigCommandAsync(cmd, callback, userData); } -bool LD2410Async::setDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Set Distance Resolution 20cm"); if (asyncIsBusy()) return false; @@ -1006,7 +1006,7 @@ bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData); } -bool LD2410Async::setAuxControlSettingsAsync(LD2410Types::LightControl lightControl, byte lightThreshold, +bool LD2410Async::configureAuxControlSettingsAsync(LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl, AsyncCommandCallback callback, byte userData) { @@ -1057,7 +1057,7 @@ bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, by // and reduce the total number of commands that have to be called. -bool LD2410Async::requestAllStaticData(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request all static data"); @@ -1072,7 +1072,7 @@ bool LD2410Async::requestAllStaticData(AsyncCommandCallback callback, byte userD return executeCommandSequenceAsync(callback, userData); } -bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte userData) { +bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Request all config data"); @@ -1093,11 +1093,11 @@ bool LD2410Async::requestAllConfigDataAsync(AsyncCommandCallback callback, byte // It uses a first command sequences to get the current sensor config, then checks what // actually needs to be changed and then creates a second command sequence to do the needed changes. -void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) { - AsyncCommandCallback cb = setConfigDataAsyncConfigCallback; - setConfigDataAsyncConfigCallback = nullptr; - byte userData = setConfigDataAsyncConfigUserData; - setConfigDataAsyncConfigActive = false; +void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) { + AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback; + configureAllConfigSettingsAsyncConfigCallback = nullptr; + byte userData = configureAllConfigSettingsAsyncConfigUserData; + configureAllConfigSettingsAsyncConfigActive = false; DEBUG_PRINT_MILLIS DEBUG_PRINT("SetConfigDataAsync complete. Result: "); @@ -1109,47 +1109,47 @@ void LD2410Async::setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandRes } -void LD2410Async::setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result != LD2410Async::AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("Warning: Disabling config mode after setConfigDataAsync failed. Result: "); + DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: "); DEBUG_PRINTLN(result); - sender->setConfigDataAsyncExecuteCallback(result); + sender->configureAllConfigSettingsAsyncExecuteCallback(result); } else { // Config mode disabled successfully - sender->setConfigDataAsyncExecuteCallback(sender->setConfigDataAsyncResultToReport); + sender->configureAllConfigSettingsAsyncExecuteCallback(sender->configureAllConfigSettingsAsyncResultToReport); } } -void LD2410Async::setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) { +void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) { - if (setConfigDataAsyncConfigInitialConfigMode) { - setConfigDataAsyncResultToReport = resultToReport; + if (configureAllConfigSettingsAsyncConfigInitialConfigMode) { + configureAllConfigSettingsAsyncResultToReport = resultToReport; - if (!disableConfigModeAsync(setConfigDataAsyncConfigModeDisabledCallback, 0)) { + if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) { DEBUG_PRINT_MILLIS; - DEBUG_PRINTLN("Error: Disabling config mode after setConfigDataAsync failed."); - setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED); + DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed."); + configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED); } } else { - setConfigDataAsyncExecuteCallback(resultToReport); + configureAllConfigSettingsAsyncExecuteCallback(resultToReport); } } -void LD2410Async::setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (AsyncCommandResult::SUCCESS != result) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Writing config data to sensor failed."); }; //Pass result to finalize method, which will also disable config mode if needed - sender->setConfigDataAsyncFinalize(result); + sender->configureAllConfigSettingsAsyncFinalize(result); } -bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { +bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() { //Get a clone of the current config, so it does not get changed while we are working LD2410Types::ConfigData currentConfig = LD2410Async::getConfigData(); @@ -1159,15 +1159,15 @@ bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { return false; }; // 1. Max gate + no one timeout - if (setConfigDataAsyncWriteFullConfig - || currentConfig.maxMotionDistanceGate != setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate - || currentConfig.maxStationaryDistanceGate != setConfigDataAsyncConfigDataToWrite.maxStationaryDistanceGate - || currentConfig.noOneTimeout != setConfigDataAsyncConfigDataToWrite.noOneTimeout) { + if (configureAllConfigSettingsAsyncWriteFullConfig + || currentConfig.maxMotionDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate + || currentConfig.maxStationaryDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate + || currentConfig.noOneTimeout != configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout) { byte cmd[sizeof(LD2410Defs::maxGateCommandData)]; if (!LD2410CommandBuilder::buildMaxGateCommand(cmd, - setConfigDataAsyncConfigDataToWrite.maxMotionDistanceGate, - setConfigDataAsyncConfigDataToWrite.maxStationaryDistanceGate, - setConfigDataAsyncConfigDataToWrite.noOneTimeout)) { + configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate, + configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate, + configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building max gate command failed."); return false; @@ -1182,13 +1182,13 @@ bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { } // 2. Gate sensitivities (sequence of commands) for (byte gate = 0; gate < 9; gate++) { - if (setConfigDataAsyncWriteFullConfig - || currentConfig.distanceGateMotionSensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate] - || currentConfig.distanceGateStationarySensitivity[gate] != setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) { + if (configureAllConfigSettingsAsyncWriteFullConfig + || currentConfig.distanceGateMotionSensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate] + || currentConfig.distanceGateStationarySensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) { byte cmd[sizeof(LD2410Defs::distanceGateSensitivityConfigCommandData)]; if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, - setConfigDataAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate], - setConfigDataAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) { + configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate], + configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) { DEBUG_PRINT_MILLIS; DEBUG_PRINT("Error: Error building gate sensitivity command for gate "); DEBUG_PRINTLN(gate); @@ -1211,10 +1211,10 @@ bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { } //3. Distance resolution - if (setConfigDataAsyncWriteFullConfig - || currentConfig.distanceResolution != setConfigDataAsyncConfigDataToWrite.distanceResolution) { + if (configureAllConfigSettingsAsyncWriteFullConfig + || currentConfig.distanceResolution != configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution) { byte cmd[6]; // resolution commands are 6 bytes long - if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, setConfigDataAsyncConfigDataToWrite.distanceResolution)) { + if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building distance resolution command failed."); return false; @@ -1229,15 +1229,15 @@ bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { }; //4. Aux control settings - if (setConfigDataAsyncWriteFullConfig - || currentConfig.lightControl != setConfigDataAsyncConfigDataToWrite.lightControl - || currentConfig.lightThreshold != setConfigDataAsyncConfigDataToWrite.lightThreshold - || currentConfig.outputControl != setConfigDataAsyncConfigDataToWrite.outputControl) { + if (configureAllConfigSettingsAsyncWriteFullConfig + || currentConfig.lightControl != configureAllConfigSettingsAsyncConfigDataToWrite.lightControl + || currentConfig.lightThreshold != configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold + || currentConfig.outputControl != configureAllConfigSettingsAsyncConfigDataToWrite.outputControl) { byte cmd[sizeof(LD2410Defs::setAuxControlSettingCommandData)]; if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, - setConfigDataAsyncConfigDataToWrite.lightControl, - setConfigDataAsyncConfigDataToWrite.lightThreshold, - setConfigDataAsyncConfigDataToWrite.outputControl)) { + configureAllConfigSettingsAsyncConfigDataToWrite.lightControl, + configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold, + configureAllConfigSettingsAsyncConfigDataToWrite.outputControl)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Building aux control command failed."); return false; @@ -1253,9 +1253,9 @@ bool LD2410Async::setConfigDataAsyncBuildSaveChangesCommandSequence() { return true; }; -bool LD2410Async::setConfigDataAsyncWriteConfig() { +bool LD2410Async::configureAllConfigSettingsAsyncWriteConfig() { - if (!setConfigDataAsyncBuildSaveChangesCommandSequence()) { + if (!configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence()) { //Could not build command sequence return false; } @@ -1265,7 +1265,7 @@ bool LD2410Async::setConfigDataAsyncWriteConfig() { DEBUG_PRINTLN("No config changes detected, not need to write anything"); } - if (!executeCommandSequenceAsync(setConfigDataAsyncWriteConfigCallback, 0)) { + if (!executeCommandSequenceAsync(configureAllConfigSettingsAsyncWriteConfigCallback, 0)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Starting command sequence to write config data failed."); @@ -1275,32 +1275,32 @@ bool LD2410Async::setConfigDataAsyncWriteConfig() { }; -void LD2410Async::setConfigDataAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result != LD2410Async::AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Requesting current config data failed. Result: "); DEBUG_PRINTLN(result); - sender->setConfigDataAsyncFinalize(result); + sender->configureAllConfigSettingsAsyncFinalize(result); return; } //Got current config data, now write the changed values DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Current config data received."); - if (!sender->setConfigDataAsyncWriteConfig()) { + if (!sender->configureAllConfigSettingsAsyncWriteConfig()) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Starting saving config data changes failed."); - sender->setConfigDataAsyncFinalize(AsyncCommandResult::FAILED); + sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED); } } -bool LD2410Async::setConfigDataAsyncRequestAllConfigData() { +bool LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigData() { if (resetCommandSequence() && addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData) && addCommandToSequence(LD2410Defs::requestParamsCommandData) && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) { - if (executeCommandSequenceAsync(setConfigDataAsyncRequestAllConfigDataCallback, 0)) { + if (executeCommandSequenceAsync(configureAllConfigSettingsAsyncRequestAllConfigDataCallback, 0)) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Requesting current config data"); return true; @@ -1313,13 +1313,13 @@ bool LD2410Async::setConfigDataAsyncRequestAllConfigData() { return false; } -void LD2410Async::setConfigDataAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { +void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { if (result != AsyncCommandResult::SUCCESS) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Enabling config mode failed. Result: "); DEBUG_PRINTLN(result); - sender->setConfigDataAsyncFinalize(result); + sender->configureAllConfigSettingsAsyncFinalize(result); return; }; @@ -1328,24 +1328,24 @@ void LD2410Async::setConfigDataAsyncConfigModeEnabledCallback(LD2410Async* sende DEBUG_PRINTLN("Config mode enabled."); bool ret = false; - if (sender->setConfigDataAsyncWriteFullConfig) { + if (sender->configureAllConfigSettingsAsyncWriteFullConfig) { //If we save all changes anyway, no need to request current config data first - ret = sender->setConfigDataAsyncWriteConfig(); + ret = sender->configureAllConfigSettingsAsyncWriteConfig(); } else { - ret = sender->setConfigDataAsyncRequestAllConfigData(); + ret = sender->configureAllConfigSettingsAsyncRequestAllConfigData(); } if (!ret) { DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed."); - sender->setConfigDataAsyncFinalize(AsyncCommandResult::FAILED); + sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED); } } -bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData) +bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData) { DEBUG_PRINT_MILLIS; @@ -1360,23 +1360,23 @@ bool LD2410Async::setConfigDataAsync(const LD2410Types::ConfigData& configToWrit return false; } - setConfigDataAsyncConfigActive = true; - setConfigDataAsyncConfigDataToWrite = configToWrite; - setConfigDataAsyncWriteFullConfig = writeAllConfigData; - setConfigDataAsyncConfigCallback = callback; - setConfigDataAsyncConfigUserData = userData; - setConfigDataAsyncConfigInitialConfigMode = isConfigModeEnabled(); + configureAllConfigSettingsAsyncConfigActive = true; + configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite; + configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData; + configureAllConfigSettingsAsyncConfigCallback = callback; + configureAllConfigSettingsAsyncConfigUserData = userData; + configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled(); - if (!setConfigDataAsyncConfigInitialConfigMode) { - return enableConfigModeInternalAsync(setConfigDataAsyncConfigModeEnabledCallback, 0); + if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) { + return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0); } else { - if (setConfigDataAsyncWriteFullConfig) { + if (configureAllConfigSettingsAsyncWriteFullConfig) { //If we save all changes anyway, no need to request current config data first - return setConfigDataAsyncWriteConfig(); + return configureAllConfigSettingsAsyncWriteConfig(); } else { - return setConfigDataAsyncRequestAllConfigData(); + return configureAllConfigSettingsAsyncRequestAllConfigData(); } } diff --git a/src/LD2410Async.h b/src/LD2410Async.h index bdf2944..a2deb25 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -42,7 +42,7 @@ * @code * ConfigData cfg = radar.getConfigData(); // clone * cfg.noOneTimeout = 60; - * radar.setConfigDataAsync(cfg, [](LD2410Async* sender, + * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -92,7 +92,7 @@ class LD2410Async { * * Every async command reports back its outcome via the callback. */ - enum class AsyncCommandResult : byte { + enum class AsyncCommandResult: byte { SUCCESS, ///< Command completed successfully and ACK was received. FAILED, ///< Command failed (sensor responded with negative ACK). TIMEOUT, ///< No ACK received within the expected time window. @@ -144,6 +144,7 @@ class LD2410Async { * Updated automatically whenever new data frames are received. * Use registerDetectionDataReceivedCallback() to be notified * whenever this struct changes. + * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. */ LD2410Types::DetectionData detectionData; @@ -151,8 +152,9 @@ class LD2410Async { * @brief Current configuration parameters of the radar. * * Filled when configuration query commands are issued - * (e.g. requestAllConfigDataAsync() or requestGateParametersAsync() ect). Can be modified and - * sent back using setConfigDataAsync(). + * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). + * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. + * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly. * * Structure will contain only uninitilaized data if config data is not queried explicitly. */ @@ -375,6 +377,8 @@ class LD2410Async { /********************************************************************************** * Detection and config data access commands ***********************************************************************************/ + // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly. + /** * @brief Returns a clone of the latest detection data from the radar. * @@ -465,7 +469,7 @@ class LD2410Async { * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity * * // Send modified config back to sensor - * radar.setConfigDataAsync(cfg, [](LD2410Async* sender, + * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -605,7 +609,6 @@ class LD2410Async { * * @returns true if config mode is anabled, false if config mode is disabled */ - bool isConfigModeEnabled() const { return configModeEnabled; }; @@ -654,7 +657,7 @@ class LD2410Async { }; /*--------------------------------------------------------------------------------- - - Sensor config comands + - Native sensor commands ---------------------------------------------------------------------------------*/ /** * @brief Requests the current gate parameters from the sensor. @@ -675,8 +678,8 @@ class LD2410Async { /** - * @brief Sets the maximum detection gates and "no-one" timeout. - * + * @brief Configures the maximum detection gates and "no-one" timeout on the sensor. + * * This command updates: * - Maximum motion detection distance gate (2–8). * - Maximum stationary detection distance gate (2–8). @@ -684,7 +687,7 @@ class LD2410Async { * * @note Requires config mode to be enabled. The method will internally * enable/disable config mode if necessary. - * @note Values outside the allowed ranges are clamped to valid limits. + * @note If another async command is pending, this call fails. * * @param maxMovingGate Furthest gate used for motion detection (2–8). * @param maxStationaryGate Furthest gate used for stationary detection (2–8). @@ -692,13 +695,13 @@ class LD2410Async { * @param callback Callback fired when ACK is received or on failure/timeout. * @param userData Optional value passed to the callback. * - * @returns true if the command was sent, false otherwise (busy state). + * @returns true if the command was sent, false otherwise (busy state or invalid values). */ - bool setMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); + bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets sensitivity thresholds for all gates at once. + * @brief Configures sensitivity thresholds for all gates at once. * * A sequence of commands will be sent, one for each gate. * Threshold values are automatically clamped to 0–100. @@ -714,17 +717,17 @@ class LD2410Async { * @returns true if the sequence was started, false otherwise. */ - bool setDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0); + bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets sensitivity thresholds for a single gate. + * @brief Configures sensitivity thresholds for a single gate. * * Updates both moving and stationary thresholds for the given gate index. * If the gate index is greater than 8, all gates are updated instead. * - * @note Threshold values are automatically clamped to 0–100. * @note Requires config mode. Will be managed automatically. + * @note If another async command is pending, this call fails. * * @param gate Index of the gate (0–8). Values >8 apply to all gates. * @param movingThreshold Sensitivity for moving targets (0–100). @@ -734,7 +737,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool setDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0); + bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0); /** * @brief Requests the firmware version of the sensor. @@ -751,7 +754,7 @@ class LD2410Async { bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the UART baud rate of the sensor. + * @brief Configures the UART baud rate of the sensor. * * The new baud rate becomes active only after reboot. * The ESP32’s Serial interface must also be reconfigured @@ -759,6 +762,8 @@ class LD2410Async { * * @note Valid values are 1–8. Values outside range are rejected resp. method will fail. * @note Requires config mode. Will be managed automatically. + * @note If another async command is pending, this call fails. + * @note After execution, call rebootAsync() to activate changes. * * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800. * @param callback Callback fired when ACK is received or on failure. @@ -766,14 +771,17 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool setBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0); + bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the baudrate of the serial port of the sensor. + * @brief Configures the baudrate of the serial port of the sensor. * * The new baudrate will only become active after a reboot of the sensor. * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor. * + * @note If another async command is pending, this call fails. + * @note After execution, call rebootAsync() to activate changes. + * * @param baudrate A valid baud rate from the Baudrate enum. * * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false). @@ -781,7 +789,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). */ - bool setBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); + bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); /** @@ -855,7 +863,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). */ - bool setBluetoothpasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0); + bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0); /** * @brief Sets the password for bluetooth access to the sensor. @@ -866,7 +874,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). */ - bool setBluetoothpasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0); + bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0); /** * @brief Resets the password for bluetooth access to the default value (HiLink) @@ -875,19 +883,19 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). */ - bool resetBluetoothpasswordAsync(AsyncCommandCallback callback, byte userData = 0); + bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the distance resolution of the radar. + * @brief Configures the distance resolution of the radar. * * The distance resolution defines the size of each distance gate * and the maximum detection range: * - RESOLUTION_75CM → longer range, coarser detail. * - RESOLUTION_20CM → shorter range, finer detail. * - * @note The new resolution takes effect immediately, but some - * configuration-dependent values may require re-query. * @note Requires config mode. Will be managed automatically. + * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. + * @note Fails if another async command is pending. * * @param distanceResolution Value from the DistanceResolution enum. * Must not be NOT_SET. @@ -899,25 +907,33 @@ class LD2410Async { * @returns true if the command was sent, false if invalid parameters * or the library is busy. */ - bool setDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); + bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the distance resolution explicitly to 75 cm per gate. + * @brief Configures the distance resolution explicitly to 75 cm per gate. * - * Equivalent to setDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM). + * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM). * + * @note Requires config mode. Will be managed automatically. + * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. + * @note Fails if another async command is pending. + * * @param callback Function pointer with signature: * void(LD2410Async* sender, AsyncCommandResult result, byte userData). * @param userData Optional value passed to the callback. * * @returns true if the command was sent, false otherwise. */ - bool setDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0); + bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the distance resolution explicitly to 20 cm per gate. + * @brief Configures the distance resolution explicitly to 20 cm per gate. + * + * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM). * - * Equivalent to setDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM). + * @note Requires config mode. Will be managed automatically. + * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. + * @note Fails if another async command is pending. * * @param callback Function pointer with signature: * void(LD2410Async* sender, AsyncCommandResult result, byte userData). @@ -925,7 +941,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool setDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0); + bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0); /** * @brief Requests the current distance resolution setting from the sensor. @@ -943,7 +959,7 @@ class LD2410Async { bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Sets the auxiliary control parameters (light and output pin). + * @brief Configures the auxiliary control parameters (light and output pin). * * This configures how the OUT pin behaves depending on light levels * and presence detection. Typical use cases include controlling @@ -951,6 +967,7 @@ class LD2410Async { * * @note Requires config mode. Will be managed automatically. * @note Both enums must be set to valid values (not NOT_SET). + * @note Fails if another async command is pending. * * @param lightControl Light control behavior (see LightControl enum). * @param lightThreshold Threshold (0–255) used for light-based switching. @@ -962,7 +979,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool setAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); + bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); /** * @brief Requests the current auxiliary control settings. @@ -981,8 +998,115 @@ class LD2410Async { */ bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0); + + /** + * @brief Starts the automatic configuration (auto-config) routine on the sensor. + * + * Auto-config lets the radar adjust its internal thresholds and + * sensitivities for the current environment. This can take several + * seconds to complete and results in updated sensitivity values. + * + * The progress and result can be checked with requestAutoConfigStatusAsync(). + * + * @note Requires config mode. This method will manage entering and + * exiting config mode automatically. + * @note Auto-config temporarily suspends normal detection reporting. + * + * ## Example: Run auto-config + * @code + * radar.beginAutoConfigAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.println("Auto-config started."); + * } else { + * Serial.println("Failed to start auto-config."); + * } + * }); + * @endcode + * + * ## Do: + * - Use in new environments to optimize detection performance. + * - Query status afterwards with requestAutoConfigStatusAsync(). + * + * ## Don’t: + * - Expect instant results — the sensor needs time to complete the process. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when the command is acknowledged or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + */ + bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0); + + + /** + * @brief Requests the current status of the auto-config routine. + * + * The status is written into the member variable autoConfigStatus: + * - NOT_IN_PROGRESS → no auto-config running. + * - IN_PROGRESS → auto-config is currently running. + * - COMPLETED → auto-config finished (success or failure). + * + * @note Requires config mode. This method will manage mode switching automatically. + * @note If another async command is already pending, this call fails. + * + * ## Example: Check auto-config status + * @code + * radar.requestAutoConfigStatusAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * switch (sender->autoConfigStatus) { + * case AutoConfigStatus::NOT_IN_PROGRESS: + * Serial.println("Auto-config not running."); + * break; + * case AutoConfigStatus::IN_PROGRESS: + * Serial.println("Auto-config in progress..."); + * break; + * case AutoConfigStatus::COMPLETED: + * Serial.println("Auto-config completed."); + * break; + * default: + * Serial.println("Unknown auto-config status."); + * } + * } else { + * Serial.println("Failed to request auto-config status."); + * } + * }); + * @endcode + * + * ## Do: + * - Use this after beginAutoConfigAsync() to track progress. + * - Use autoConfigStatus for decision-making in your logic. + * + * ## Don’t: + * - Assume COMPLETED means success — thresholds should still be verified. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when the sensor replies or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + */ + bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0); + + + + /*--------------------------------------------------------------------------------- + - High level commands + ---------------------------------------------------------------------------------*/ + // High level commands typically encapsulate several native commands. + // They provide a more consistent access to the sensors configuration, + // e.g. for reading all config data 3 native commands are necessary, + // to update the same data up to 12 native commands may be required. + //The highlevel commands encapsulate both situation into a single command + /** - * @brief Requests all configuration parameters from the sensor. + * @brief Requests all configuration settings from the sensor. * * This triggers a sequence of queries that retrieves and updates: * - Gate parameters (sensitivities, max gates, timeout). @@ -992,12 +1116,13 @@ class LD2410Async { * The results are stored in configData, and the * registerConfigUpdateReceivedCallback() is invoked after completion. * + * @note This is a high-level method that involves multiple commands. * @note Requires config mode. This method will manage mode switching automatically. * @note If another async command is already pending, the request fails. * * ## Example: Refresh config data * @code - * radar.requestAllConfigDataAsync([](LD2410Async* sender, + * radar.requestAllConfigSettingsAsync([](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -1021,7 +1146,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool requestAllConfigDataAsync(AsyncCommandCallback callback, byte userData = 0); + bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0); /** @@ -1034,12 +1159,13 @@ class LD2410Async { * The values are written into the public members `firmware`, `mac`, * and `macString`. * + * @note This is a high-level method that involves multiple commands. * @note Requires config mode. Managed automatically by this method. * @note If another async command is already pending, the request fails. * * ## Example: Retrieve firmware and MAC * @code - * radar.requestAllStaticData([](LD2410Async* sender, + * radar.requestAllStaticDataAsync([](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -1066,20 +1192,23 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. */ - bool requestAllStaticData(AsyncCommandCallback callback, byte userData = 0); + bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Applies a full ConfigData struct to the sensor. + * @brief Applies a full ConfigData struct to the LD2410. * - * The provided ConfigData is converted into the appropriate sequence - * of configuration commands and sent asynchronously. This allows - * bulk updating of multiple settings (gate sensitivities, timeouts, - * resolution, auxiliary controls) in one call. + * If writeAllConfigData is true, the method will first fetch the current config, + * compare it with the provide Config data and then create a command sequence that + * will only update the changes config values. + * If writeAllConfigData is false, the method will write all values in the provided + * ConfigData to the sensor, regardless of whether they differ from the current config. * + * @note This is a high-level method that involves multiple commands (up to 18). * @note Requires config mode. This method will manage entering and - * exiting config mode automatically. + * exiting config mode automatically (if config mode is not already active). + * @note If another async command is already pending, the command fails. * @note Any members of ConfigData that are left at invalid values * (e.g. enums set to NOT_SET) will cause the sequence to fail. * @@ -1089,7 +1218,7 @@ class LD2410Async { * cfg.noOneTimeout = 120; // change timeout * cfg.distanceGateMotionSensitivity[2] = 75; * - * radar.setConfigDataAsync(cfg, [](LD2410Async* sender, + * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, * AsyncCommandResult result, * byte) { * if (result == AsyncCommandResult::SUCCESS) { @@ -1099,14 +1228,18 @@ class LD2410Async { * @endcode * * ## Do: - * - Use this for bulk updates of sensor configuration. - * - Always start from a clone of getConfigData() to avoid missing fields. + * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change. + * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. + * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need. * * ## Don’t: - * - Pass uninitialized or partially filled ConfigData (may fail). - * - Expect changes to persist after power cycle without reapplying. + * - Dont write all config data (writeAllConfigData=true) if not really necessary. + * This generates unnecessary wear on the sensors memory. + * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings) + * - * @param config The configuration data to be applied. + * @param configToWrite The configuration data to be applied. + * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written. * @param callback Function with signature: * void(LD2410Async* sender, AsyncCommandResult result, byte userData), * executed when the sequence finishes (success/fail/timeout/cancel). @@ -1114,105 +1247,9 @@ class LD2410Async { * * @returns true if the command sequence has been started, false otherwise. */ - bool setConfigDataAsync(const LD2410Types::ConfigData& config, AsyncCommandCallback callback, byte userData = 0); - - - /** - * @brief Starts the automatic configuration (auto-config) routine on the sensor. - * - * Auto-config lets the radar adjust its internal thresholds and - * sensitivities for the current environment. This can take several - * seconds to complete and results in updated sensitivity values. - * - * The progress and result can be checked with requestAutoConfigStatusAsync(). - * - * @note Requires config mode. This method will manage entering and - * exiting config mode automatically. - * @note Auto-config temporarily suspends normal detection reporting. - * - * ## Example: Run auto-config - * @code - * radar.beginAutoConfigAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.println("Auto-config started."); - * } else { - * Serial.println("Failed to start auto-config."); - * } - * }); - * @endcode - * - * ## Do: - * - Use in new environments to optimize detection performance. - * - Query status afterwards with requestAutoConfigStatusAsync(). - * - * ## Don’t: - * - Expect instant results — the sensor needs time to complete the process. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when the command is acknowledged or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ - bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0); - - - /** - * @brief Requests the current status of the auto-config routine. - * - * The status is written into the member variable autoConfigStatus: - * - NOT_IN_PROGRESS → no auto-config running. - * - IN_PROGRESS → auto-config is currently running. - * - COMPLETED → auto-config finished (success or failure). - * - * @note Requires config mode. This method will manage mode switching automatically. - * @note If another async command is already pending, this call fails. - * - * ## Example: Check auto-config status - * @code - * radar.requestAutoConfigStatusAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * switch (sender->autoConfigStatus) { - * case AutoConfigStatus::NOT_IN_PROGRESS: - * Serial.println("Auto-config not running."); - * break; - * case AutoConfigStatus::IN_PROGRESS: - * Serial.println("Auto-config in progress..."); - * break; - * case AutoConfigStatus::COMPLETED: - * Serial.println("Auto-config completed."); - * break; - * default: - * Serial.println("Unknown auto-config status."); - * } - * } else { - * Serial.println("Failed to request auto-config status."); - * } - * }); - * @endcode - * - * ## Do: - * - Use this after beginAutoConfigAsync() to track progress. - * - Use autoConfigStatus for decision-making in your logic. - * - * ## Don’t: - * - Assume COMPLETED means success — thresholds should still be verified. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when the sensor replies or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ - bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0); - + bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData); + private: // ============================================================================ @@ -1448,23 +1485,23 @@ class LD2410Async { // ============================================================================ // Config writing // ============================================================================ - LD2410Types::ConfigData setConfigDataAsyncConfigDataToWrite; - bool setConfigDataAsyncWriteFullConfig = false; - AsyncCommandCallback setConfigDataAsyncConfigCallback = nullptr; - byte setConfigDataAsyncConfigUserData = 0; - bool setConfigDataAsyncConfigActive = false; - bool setConfigDataAsyncConfigInitialConfigMode = false; - AsyncCommandResult setConfigDataAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS; - - void setConfigDataAsyncExecuteCallback(LD2410Async::AsyncCommandResult result); - static void setConfigDataAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); - void setConfigDataAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport); - static void setConfigDataAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); - bool setConfigDataAsyncWriteConfig(); - static void setConfigDataAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); - bool setConfigDataAsyncRequestAllConfigData(); - static void setConfigDataAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); - bool setConfigDataAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData); - bool setConfigDataAsyncBuildSaveChangesCommandSequence(); + LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite; + bool configureAllConfigSettingsAsyncWriteFullConfig = false; + AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr; + byte configureAllConfigSettingsAsyncConfigUserData = 0; + bool configureAllConfigSettingsAsyncConfigActive = false; + bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false; + AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS; + + void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result); + static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport); + static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + bool configureAllConfigSettingsAsyncWriteConfig(); + static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + bool configureAllConfigSettingsAsyncRequestAllConfigData(); + static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); + + bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence(); }; diff --git a/src/LD2410Types.h b/src/LD2410Types.h index e05756c..bdf8de7 100644 --- a/src/LD2410Types.h +++ b/src/LD2410Types.h @@ -335,12 +335,12 @@ namespace LD2410Types { * (e.g. sensitivities, timeouts, resolution). * * The values are typically filled by request commands - * such as requestAllConfigDataAsync() or requestGateParametersAsync() or + * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). */ struct ConfigData { // === Radar capabilities === - byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when setConfigDataAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor. + byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor. // === Max distance gate settings === byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection. @@ -354,7 +354,7 @@ namespace LD2410Types { unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared. // === Distance resolution === - DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling setConfigDataAsync() is called. + DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called. // === Auxiliary controls === byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255). @@ -369,7 +369,7 @@ namespace LD2410Types { * * Ensures that enum values are set and values are within valid ranges. * This method is called internally before applying a config - * via setConfigDataAsync(). + * via configureAllConfigSettingsAsync(). * * @returns True if the configuration is valid, false otherwise. */ From f11c676e4866c1a16bede0cdef9bd9ad851457ae Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:38:00 +0200 Subject: [PATCH 008/114] Naming improved --- src/LD2410Async.cpp | 67 +++++++++++++++++++++++++-------------------- src/LD2410Async.h | 22 +++++++-------- 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 19818be..88792d4 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -592,7 +592,7 @@ bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback cal ***********************************************************************************/ bool LD2410Async::asyncIsBusy() { - return asyncCommandActive || sendAsyncSequenceActive || configureAllConfigSettingsAsyncConfigActive; + return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive; } /********************************************************************************** @@ -602,7 +602,7 @@ bool LD2410Async::asyncIsBusy() { bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData) { //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active - if (asyncCommandActive || sendAsyncSequenceActive) return false; + if (asyncCommandActive || executeCommandSequenceActive) return false; // Reset sequence buffer if (!resetCommandSequence()) return false;; @@ -618,18 +618,18 @@ bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallba * Async command sequence methods ***********************************************************************************/ void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) { - if (sendAsyncSequenceActive) { + if (executeCommandSequenceActive) { DEBUG_PRINT_MILLIS; DEBUG_PRINT("Command sequence duration ms: "); - DEBUG_PRINTLN(millis() - sendAsyncSequenceStartMs); + DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs); vTaskSuspendAll(); - AsyncCommandCallback cb = sendAsyncSequenceCallback; - byte userData = sendAsyncSequenceUserData; - sendAsyncSequenceCallback = nullptr; - sendAsyncSequenceUserData = 0; - sendAsyncSequenceActive = false; + AsyncCommandCallback cb = executeCommandSequenceCallback; + byte userData = executeCommandSequenceUserData; + executeCommandSequenceCallback = nullptr; + executeCommandSequenceUserData = 0; + executeCommandSequenceActive = false; xTaskResumeAll(); if (cb != nullptr) { @@ -654,7 +654,7 @@ void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Asy } void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) { - if (!sendAsyncSequenceInitialConfigModeState) { + if (!executeCommandSequenceInitialConfigModeState) { disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast(result)); } else { @@ -675,12 +675,12 @@ void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender }; // Move to next command - sender->sendAsyncSequenceIndex++; + sender->executeCommandSequenceIndex++; - if (sender->sendAsyncSequenceIndex < sender->commandSequenceBufferCount) { + if (sender->executeCommandSequenceIndex < sender->commandSequenceBufferCount) { // Send next command sender->sendCommandAsync( - sender->commandSequenceBuffer[sender->sendAsyncSequenceIndex], + sender->commandSequenceBuffer[sender->executeCommandSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0 ); @@ -695,22 +695,22 @@ void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData) { - if (asyncCommandActive || sendAsyncSequenceActive) return false; + if (asyncCommandActive || executeCommandSequenceActive) return false; if (commandSequenceBufferCount == 0) return true; // nothing to send DEBUG_PRINT_MILLIS; DEBUG_PRINT("Starting command sequence execution. Number of commands: "); DEBUG_PRINTLN(commandSequenceBufferCount); - sendAsyncSequenceActive = true; - sendAsyncSequenceCallback = callback; - sendAsyncSequenceUserData = userData; - sendAsyncSequenceInitialConfigModeState = configModeEnabled; - sendAsyncSequenceStartMs = millis(); + executeCommandSequenceActive = true; + executeCommandSequenceCallback = callback; + executeCommandSequenceUserData = userData; + executeCommandSequenceInitialConfigModeState = configModeEnabled; + executeCommandSequenceStartMs = millis(); if (commandSequenceBufferCount == 0) { //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work - sendAsyncSequenceOnceTicker.once_ms(1, [this]() { + executeCommandSequenceOnceTicker.once_ms(1, [this]() { this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS); }); return true; @@ -720,29 +720,35 @@ bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byt if (!configModeEnabled) { // Need to enable config mode first // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires. - sendAsyncSequenceIndex = -1; + executeCommandSequenceIndex = -1; return sendCommandAsync(LD2410Defs::configEnableCommandData, executeCommandSequenceAsyncCommandCallback, 0); } else { // Already in config mode, start directly. // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires. - sendAsyncSequenceIndex = 0; - return sendCommandAsync(commandSequenceBuffer[sendAsyncSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0); + executeCommandSequenceIndex = 0; + return sendCommandAsync(commandSequenceBuffer[executeCommandSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0); } } bool LD2410Async::addCommandToSequence(const byte* command) { - if (asyncCommandActive || sendAsyncSequenceActive) return false; - - if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE) return false; // buffer full + if (asyncCommandActive || executeCommandSequenceActive) return false; + if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE_LENGTH) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Command sequence buffer full."); + return false; + }; // First byte of the command is the payload length uint8_t len = command[0]; uint8_t totalLen = len + 2; // payload + 2 length bytes - if (totalLen > LD2410Defs::LD2410_Buffer_Size) return false; // safety - + if (totalLen > LD2410Defs::LD2410_Buffer_Size) { + DEBUG_PRINT_MILLIS; + DEBUG_PRINTLN("Error: Command too long for command sequence buffer."); + return false; // safety + } memcpy(commandSequenceBuffer[commandSequenceBufferCount], command, totalLen); @@ -757,11 +763,12 @@ bool LD2410Async::addCommandToSequence(const byte* command) { bool LD2410Async::resetCommandSequence() { - if (asyncCommandActive || sendAsyncSequenceActive) return false; + if (asyncCommandActive || executeCommandSequenceActive) return false; + + commandSequenceBufferCount = 0; DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("Command sequence reset done."); - commandSequenceBufferCount = 0; return true; } diff --git a/src/LD2410Async.h b/src/LD2410Async.h index a2deb25..5ee3df6 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1312,35 +1312,35 @@ class LD2410Async { // ============================================================================ /// Maximum number of commands in one async sequence - static constexpr size_t MAX_COMMAND_SEQUENCE = 15; + static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15; /// Buffer holding queued commands for sequence execution - byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE][LD2410Defs::LD2410_Buffer_Size]; + byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size]; /// Number of commands currently queued in the sequence buffer byte commandSequenceBufferCount = 0; /// Timestamp when the current async sequence started - unsigned long sendAsyncSequenceStartMs = 0; + unsigned long executeCommandSequenceStartMs = 0; /// Callback for current async sequence - AsyncCommandCallback sendAsyncSequenceCallback = nullptr; + AsyncCommandCallback executeCommandSequenceCallback = nullptr; /// User-provided data passed to async sequence callback - byte sendAsyncSequenceUserData = 0; + byte executeCommandSequenceUserData = 0; /// True if an async sequence is currently pending. - bool sendAsyncSequenceActive = false; + bool executeCommandSequenceActive = false; /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty. /// This ensures that the callback is always called asynchronously and never directly from the calling context. - Ticker sendAsyncSequenceOnceTicker; + Ticker executeCommandSequenceOnceTicker; /// Index of currently active command in the sequence buffer - int sendAsyncSequenceIndex = 0; + int executeCommandSequenceIndex = 0; /// Stores config mode state before sequence started (to restore later) - bool sendAsyncSequenceInitialConfigModeState = false; + bool executeCommandSequenceInitialConfigModeState = false; /// Finalize an async sequence and invoke its callback void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result); @@ -1351,7 +1351,6 @@ class LD2410Async { /// Internal callbacks for sequence steps static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); - static void executeCommandSequenceAsyncEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); /// Start executing an async sequence bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1453,8 +1452,7 @@ class LD2410Async { /// Invoke async command callback with result void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result); - /// Callback for async command sequence that includes data requests - static void executeCommandSequenceAsyncDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0); + /// Handle async command timeout void handleAsyncCommandCallbackTimeout(); From 9bbfa54d710236607b10ac300c25263d46fac4b5 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:40:39 +0200 Subject: [PATCH 009/114] Workflow splitted --- .github/workflows/arduinoLint.yml | 21 +++++++++++++++++++++ .github/workflows/build.yml | 12 +----------- LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 1 + 4 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/arduinoLint.yml diff --git a/.github/workflows/arduinoLint.yml b/.github/workflows/arduinoLint.yml new file mode 100644 index 0000000..09c16c7 --- /dev/null +++ b/.github/workflows/arduinoLint.yml @@ -0,0 +1,21 @@ +name: Arduino Lint + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Arduino Lint + uses: arduino/arduino-lint-action@v1 + with: + compliance: strict diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9eab32..61bbddb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] - workflow_dispatch: # allows manual triggering from the GitHub Actions tab + workflow_dispatch: jobs: build: @@ -17,26 +17,17 @@ jobs: - fqbn: "esp32:esp32:esp32" platform-name: esp32:esp32 - # Make board type-specific customizations to the matrix jobs include: - board: platform-name: esp32:esp32 platforms: | - # Install ESP32 platform via Boards Manager - name: esp32:esp32 source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - steps: - # Checkout repo - name: Checkout uses: actions/checkout@v3 - - name: Arduino Lint - uses: arduino/arduino-lint-action@v1 - with: - compliance: strict - - name: Cache Arduino platform uses: actions/cache@v3 with: @@ -57,4 +48,3 @@ jobs: sketch-paths: | - examples enable-warnings-report: 'true' - diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index dd76802..4330bed 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -22,6 +22,7 @@ + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 4b59a4e..63b6f84 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -31,6 +31,7 @@ + From e2e8104700b94bae218831e770794da172e8c340 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:43:10 +0200 Subject: [PATCH 010/114] Version nr increased, keywords updated --- keyword.txt | 75 ++++++++++++++++++++++++++++------------------ library.properties | 2 +- 2 files changed, 47 insertions(+), 30 deletions(-) diff --git a/keyword.txt b/keyword.txt index 4450ac5..b0922e2 100644 --- a/keyword.txt +++ b/keyword.txt @@ -6,6 +6,7 @@ # Datatypes (KEYWORD1) ####################################### LD2410Async KEYWORD1 +LD2410Types KEYWORD1 DetectionData KEYWORD1 ConfigData KEYWORD1 TargetState KEYWORD1 @@ -14,6 +15,7 @@ LightControl KEYWORD1 OutputControl KEYWORD1 AutoConfigStatus KEYWORD1 AsyncCommandResult KEYWORD1 +Baudrate KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) @@ -24,41 +26,49 @@ asyncIsBusy KEYWORD2 asyncCancel KEYWORD2 getDetectionData KEYWORD2 +getDetectionDataRef KEYWORD2 getConfigData KEYWORD2 +getConfigDataRef KEYWORD2 +setInactivityHandling KEYWORD2 +enableInactivityHandling KEYWORD2 +disableInactivityHandling KEYWORD2 +isInactivityHandlingEnabled KEYWORD2 +setInactivityTimeoutMs KEYWORD2 +getInactivityTimeoutMs KEYWORD2 registerDetectionDataReceivedCallback KEYWORD2 -registerConfigUpdateReceivedCallback KEYWORD2 registerConfigChangedCallback KEYWORD2 +registerConfigUpdateReceivedCallback KEYWORD2 -requestAllConfigData KEYWORD2 -requestAllStaticData KEYWORD2 -requestGateParametersAsync KEYWORD2 -requestFirmwareAsync KEYWORD2 -requestBluetoothMacAddressAsync KEYWORD2 -requestAuxControlSettingsAsync KEYWORD2 -requestDistanceResolutioncmAsync KEYWORD2 -requestAutoConfigStatusAsync KEYWORD2 - -setMaxGateAndNoOneTimeoutAsync KEYWORD2 -setDistanceGateSensitivityAsync KEYWORD2 -setConfigDataAsync KEYWORD2 -setBaudRateAsync KEYWORD2 -setBluetoothpasswordAsync KEYWORD2 -setAuxControlSettingsAsync KEYWORD2 -setDistanceResolutionAsync KEYWORD2 -setDistanceResolution75cmAsync KEYWORD2 -setDistanceResolution20cmAsync KEYWORD2 -enableEngineeringModeAsync KEYWORD2 -disableEngineeringModeAsync KEYWORD2 -enableBluetoothAsync KEYWORD2 -disableBluetoothAsync KEYWORD2 -enableConfigModeAsync KEYWORD2 -disableConfigModeAsync KEYWORD2 -beginAutoConfigAsync KEYWORD2 -restoreFactorySettingsAsync KEYWORD2 -rebootAsync KEYWORD2 +requestAllConfigSettingsAsync KEYWORD2 +requestAllStaticDataAsync KEYWORD2 +requestGateParametersAsync KEYWORD2 +requestFirmwareAsync KEYWORD2 +requestBluetoothMacAddressAsync KEYWORD2 +requestAuxControlSettingsAsync KEYWORD2 +requestDistanceResolutioncmAsync KEYWORD2 +requestAutoConfigStatusAsync KEYWORD2 -setInactivityHandling KEYWORD2 +configureMaxGateAndNoOneTimeoutAsync KEYWORD2 +configureDistanceGateSensitivityAsync KEYWORD2 +configureBaudRateAsync KEYWORD2 +configureBluetoothPasswordAsync KEYWORD2 +configureDefaultBluetoothPasswordAsync KEYWORD2 +configureAuxControlSettingsAsync KEYWORD2 +configureDistanceResolutionAsync KEYWORD2 +configureDistanceResolution75cmAsync KEYWORD2 +configuresDistanceResolution20cmAsync KEYWORD2 +restoreFactorySettingsAsync KEYWORD2 +rebootAsync KEYWORD2 +enableEngineeringModeAsync KEYWORD2 +disableEngineeringModeAsync KEYWORD2 +enableBluetoothAsync KEYWORD2 +disableBluetoothAsync KEYWORD2 +enableConfigModeAsync KEYWORD2 +disableConfigModeAsync KEYWORD2 +beginAutoConfigAsync KEYWORD2 +requestAutoConfigStatusAsync KEYWORD2 +configureAllConfigSettingsAsync KEYWORD2 ####################################### # Constants and Literals (LITERAL1) @@ -66,3 +76,10 @@ setInactivityHandling KEYWORD2 ENABLE_DEBUG LITERAL1 ENABLE_DEBUG_DATA LITERAL1 ENABLE_DEBUG_CONFIG LITERAL1 +DEBUG_PRINT_MILLIS LITERAL1 +DEBUG_PRINT LITERAL1 +DEBUG_PRINTLN LITERAL1 +DEBUG_PRINTBUF LITERAL1 +DEBUG_PRINT_DATA LITERAL1 +DEBUG_PRINTLN_DATA LITERAL1 +DEBUG_PRINTBUF_DATA LITERAL1 \ No newline at end of file diff --git a/library.properties b/library.properties index 21844a1..a790128 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=LD2410Async -version=0.9.1 +version=0.9.2 author=Lizard King maintainer=Lizard King sentence=Asynchronous driver for the Hi-Link LD2410 human presence radar sensor. From 727e526652c0327d381e9540753a93c5c26ad858 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:53:23 +0200 Subject: [PATCH 011/114] Added workflow to update docu --- .github/workflows/doxygen.yml | 1 + LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 1 + 3 files changed, 3 insertions(+) create mode 100644 .github/workflows/doxygen.yml diff --git a/.github/workflows/doxygen.yml b/.github/workflows/doxygen.yml new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/.github/workflows/doxygen.yml @@ -0,0 +1 @@ +#pragma once diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 4330bed..c5130b9 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -23,6 +23,7 @@ + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 63b6f84..e764947 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -32,6 +32,7 @@ + From 2bcf8e98a0c77bc81a34a3dbf36342f7522c6665 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:54:56 +0200 Subject: [PATCH 012/114] Added workflow code --- .github/workflows/doxygen.yml | 47 ++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/.github/workflows/doxygen.yml b/.github/workflows/doxygen.yml index 6f70f09..55b2991 100644 --- a/.github/workflows/doxygen.yml +++ b/.github/workflows/doxygen.yml @@ -1 +1,46 @@ -#pragma once +name: LD2410Async Doxygen Docs + +on: + push: + branches: + - master + - '**' # all feature branches + workflow_dispatch: + +jobs: + docs: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Install Doxygen + run: sudo apt-get update && sudo apt-get install -y doxygen graphviz + + - name: Generate Documentation + run: | + mkdir -p docu + doxygen Doxyfile + + - name: Commit & Push documentation + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + # Stage only docu folder + git add docu + + # Skip commit if nothing changed + if git diff --cached --quiet; then + echo "Documentation is already up to date. No commit needed." + exit 0 + fi + + git commit -m "Update Doxygen documentation" + git push + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 870df0e95a8d3813212ec4ae5dc94ee25f383849 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 10:59:48 +0200 Subject: [PATCH 013/114] Dumped automaticy docu creation --- .github/workflows/doxygen.yml | 46 ----------------------------------- LD2410Async.vcxitems | 1 - LD2410Async.vcxitems.filters | 1 - 3 files changed, 48 deletions(-) delete mode 100644 .github/workflows/doxygen.yml diff --git a/.github/workflows/doxygen.yml b/.github/workflows/doxygen.yml deleted file mode 100644 index 55b2991..0000000 --- a/.github/workflows/doxygen.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: LD2410Async Doxygen Docs - -on: - push: - branches: - - master - - '**' # all feature branches - workflow_dispatch: - -jobs: - docs: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - persist-credentials: false - fetch-depth: 0 - - - name: Install Doxygen - run: sudo apt-get update && sudo apt-get install -y doxygen graphviz - - - name: Generate Documentation - run: | - mkdir -p docu - doxygen Doxyfile - - - name: Commit & Push documentation - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" - - # Stage only docu folder - git add docu - - # Skip commit if nothing changed - if git diff --cached --quiet; then - echo "Documentation is already up to date. No commit needed." - exit 0 - fi - - git commit -m "Update Doxygen documentation" - git push - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index c5130b9..4330bed 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -23,7 +23,6 @@ - diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index e764947..63b6f84 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -32,7 +32,6 @@ - From ce416737cff7d2dcb738b5a750231671cc6b9b44 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 13:06:14 +0200 Subject: [PATCH 014/114] A bit closer to the past version --- .github/workflows/build.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61bbddb..16c02a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] - workflow_dispatch: + workflow_dispatch: # allows manual triggering from the GitHub Actions tab jobs: build: @@ -17,17 +17,23 @@ jobs: - fqbn: "esp32:esp32:esp32" platform-name: esp32:esp32 + # Make board type-specific customizations to the matrix jobs include: - board: platform-name: esp32:esp32 platforms: | + # Install ESP32 platform via Boards Manager - name: esp32:esp32 source-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json + steps: + # Checkout repo - name: Checkout uses: actions/checkout@v3 + + - name: Cache Arduino platform uses: actions/cache@v3 with: @@ -48,3 +54,4 @@ jobs: sketch-paths: | - examples enable-warnings-report: 'true' + From fdc6d081ec183589fb66361d85bc5e5dd6b5053f Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 13:50:49 +0200 Subject: [PATCH 015/114] Added another example, updated the other examples, added default value to configureAllConfigSettingsAsync --- LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 1 + .../basicPresenceDetection.ino | 74 ++++++++++ examples/changeConfig/changeConfig.ino | 119 +++++++++------- .../changeDistanceResolution.ino | 134 ++++++++++-------- examples/receiveData/receiveData.ino | 29 ++-- src/LD2410Async.h | 2 +- 7 files changed, 238 insertions(+), 122 deletions(-) create mode 100644 examples/basicPresenceDetection/basicPresenceDetection.ino diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 4330bed..4c75542 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -24,6 +24,7 @@ + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 63b6f84..8540649 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -32,6 +32,7 @@ + diff --git a/examples/basicPresenceDetection/basicPresenceDetection.ino b/examples/basicPresenceDetection/basicPresenceDetection.ino new file mode 100644 index 0000000..62e5171 --- /dev/null +++ b/examples/basicPresenceDetection/basicPresenceDetection.ino @@ -0,0 +1,74 @@ +/** + * Example: Basic Presence Detection with LD2410Async + * + * This sketch demonstrates how to use the LD2410Async library to detect presence + * using only the presenceDetected variable from the detection data callback. + * It prints a message with a timestamp whenever the presence state changes. + * + * Important! + * Adjust RADAR_RX_PIN and RADAR_TX_PIN to match your wiring. + */ + +#include +#include "LD2410Async.h" + + // ========================= USER CONFIGURATION ========================= + + // UART pins for the LD2410 sensor +#define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX) +#define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX) + +// UART baudrate for the radar sensor (default is 256000) +#define RADAR_BAUDRATE 256000 + +// ====================================================================== + +// Create a HardwareSerial instance (ESP32 has multiple UARTs) +HardwareSerial RadarSerial(1); + +// Create LD2410Async object bound to Serial1 +LD2410Async radar(RadarSerial); + +// Track last presence state +bool lastPresenceDetected = false; +bool firstCallback = true; + +// Callback function called whenever new detection data arrives +void onDetectionDataReceived(LD2410Async* sender, bool presenceDetected, byte userData) { + if (firstCallback || presenceDetected != lastPresenceDetected) { + unsigned long now = millis(); + Serial.print("["); + Serial.print(now); + Serial.print(" ms] Presence detected: "); + Serial.println(presenceDetected ? "YES" : "NO"); + lastPresenceDetected = presenceDetected; + firstCallback = false; + } +} + +void setup() { + // Initialize USB serial for debug output + Serial.begin(115200); + while (!Serial) { + ; // wait for Serial Monitor + } + Serial.println("LD2410Async example: basic presence detection"); + + // Initialize Serial1 with user-defined pins and baudrate + RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); + + // Start the radar background task (parses incoming data frames) + if (radar.begin()) { + Serial.println("Radar task started successfully."); + // Register callback for detection updates + radar.registerDetectionDataReceivedCallback(onDetectionDataReceived, 0); + } + else { + Serial.println("ERROR! Could not start radar task."); + } +} + +void loop() { + // Nothing to do here! + delay(1000); // idle delay (optional) +} \ No newline at end of file diff --git a/examples/changeConfig/changeConfig.ino b/examples/changeConfig/changeConfig.ino index 0160d18..685ff3e 100644 --- a/examples/changeConfig/changeConfig.ino +++ b/examples/changeConfig/changeConfig.ino @@ -33,65 +33,80 @@ HardwareSerial RadarSerial(1); LD2410Async radar(RadarSerial); // Callback after attempting to apply a modified config -void onConfigApplied(LD2410Async* sender, - LD2410Async::AsyncCommandResult result, - byte userData) { - if (result == LD2410Async::AsyncCommandResult::SUCCESS) { - Serial.println("Config updated successfully!"); - } - else { - Serial.println("Failed to apply config."); - } +void onConfigApplied(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { + Serial.println("Config updated successfully!"); + } + else { + Serial.println("Failed to apply config."); + } } // Callback after requesting config data -void onConfigReceived(LD2410Async* sender, - LD2410Async::AsyncCommandResult result, - byte userData) { - if (result != LD2410Async::AsyncCommandResult::SUCCESS) { - Serial.println("Failed to request config data."); - return; - } - - Serial.println("Config data received. Cloning and modifying..."); - - // Clone the current config - LD2410Async::ConfigData cfg = sender->getConfigData(); - - // Example modifications: - cfg.noOneTimeout = 120; // Set "no-one" timeout to 120 seconds - cfg.distanceGateMotionSensitivity[2] = 75; // Increase motion sensitivity on gate 2 - cfg.distanceGateStationarySensitivity[4] = 60; // Adjust stationary sensitivity on gate 4 - - // Apply updated config to the radar - sender->setConfigDataAsync(cfg, onConfigApplied); +void onConfigReceived(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { + Serial.println("Failed to request config data."); + return; + } + + Serial.println("Config data received. Cloning and modifying..."); + + // Clone the current config + LD2410Types::ConfigData cfg = sender->getConfigData(); + //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender: + //LD2410Types::ConfigData cfg = radar.getConfigData(); + //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board).. + + + // Example modifications: + cfg.noOneTimeout = 120; // Set "no-one" timeout to 120 seconds + cfg.distanceGateMotionSensitivity[2] = 75; // Increase motion sensitivity on gate 2 + cfg.distanceGateStationarySensitivity[4] = 60; // Adjust stationary sensitivity on gate 4 + + // Apply updated config to the radar + if (!sender->configureAllConfigSettingsAsync(cfg, false, onConfigApplied)) { + //It is good practive to check the return value of commands for true/false. + //False indicates that the command could not be sent (e.g. because another async command is still pending) + Serial.println("Error! Could not update config on the sensor"); + }; + + //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender: + //radar.configureAllConfigSettingsAsync(cfg, false, onConfigApplied); + //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board).. + } void setup() { - // Initialize USB serial for debug output - Serial.begin(115200); - while (!Serial) { - ; // wait for Serial Monitor - } - Serial.println("LD2410Async example: change radar config"); - - // Initialize Serial1 with user-defined pins and baudrate - RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); - - // Start the radar background task (parses incoming data frames) - if (radar.begin()) { - Serial.println("Radar task started successfully."); - } - else { - Serial.println("Radar task already running."); - } - - // Request all config data, then modify in callback - radar.requestAllConfigData(onConfigReceived); + // Initialize USB serial for debug output + Serial.begin(115200); + while (!Serial) { + ; // wait for Serial Monitor + } + Serial.println("LD2410Async example: change radar config"); + + // Initialize Serial1 with user-defined pins and baudrate + RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); + + // Start the radar background task (parses incoming data frames) + if (radar.begin()) { + Serial.println("Radar task started successfully."); + + // Request all config data, then modify in callback + if (!radar.requestAllConfigSettingsAsync(onConfigReceived)) { + //It is good practive to check the return value of commands for true/false. + //False indicates that the command could not be sent (e.g. because another async command is still pending) + Serial.println("Error! Could not start config data request"); + } + + } + else { + Serial.println("Error! Could not start radar task"); + } + } void loop() { - // Nothing to do here. - // The library handles communication and invokes callbacks automatically. - delay(1000); + // Nothing to do here. + // The library handles communication and invokes callbacks automatically. + delay(1000); } diff --git a/examples/changeDistanceResolution/changeDistanceResolution.ino b/examples/changeDistanceResolution/changeDistanceResolution.ino index 111e237..86ff145 100644 --- a/examples/changeDistanceResolution/changeDistanceResolution.ino +++ b/examples/changeDistanceResolution/changeDistanceResolution.ino @@ -34,77 +34,89 @@ HardwareSerial RadarSerial(1); LD2410Async radar(RadarSerial); // Callback after reboot command is sent -void onReboot(LD2410Async* sender, - LD2410Async::AsyncCommandResult result, - byte userData) { - if (result == LD2410Async::AsyncCommandResult::SUCCESS) { - Serial.println("Radar reboot initiated."); - } - else { - Serial.println("Failed to init reboot."); - } +void onReboot(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { + Serial.println("Radar reboot initiated."); + } + else { + Serial.println("Failed to init reboot."); + } } // Callback after applying modified config -void onConfigApplied(LD2410Async* sender, - LD2410Async::AsyncCommandResult result, - byte userData) { - if (result == LD2410Async::AsyncCommandResult::SUCCESS) { - Serial.println("Config applied successfully. Rebooting radar..."); - sender->rebootAsync(onReboot); - } - else { - Serial.println("Failed to apply config."); - } +void onConfigApplied(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result == LD2410Async::AsyncCommandResult::SUCCESS) { + Serial.println("Config applied successfully. Rebooting radar..."); + if (!sender->rebootAsync(onReboot)) { + //It is good practive to check the return value of commands for true/false. + //False indicates that the command could not be sent (e.g. because another async command is still pending) + Serial.println("Error! Could not send reboot command to the sensor"); + }; + //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender: + //radar.rebootAsync(onReboot); + //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board).. + } + else { + Serial.println("Failed to apply config."); + } } // Callback after requesting config data -void onConfigReceived(LD2410Async* sender, - LD2410Async::AsyncCommandResult result, - byte userData) { - if (result != LD2410Async::AsyncCommandResult::SUCCESS) { - Serial.println("Failed to request config data."); - return; - } - - Serial.println("Config data received. Cloning and modifying..."); - - // Clone the current config - LD2410Async::ConfigData cfg = sender->getConfigData(); - - // Example modification: change resolution - // RESOLUTION_75CM or RESOLUTION_20CM - cfg.distanceResolution = LD2410Async::DistanceResolution::RESOLUTION_20CM; - - // Apply updated config - sender->setConfigDataAsync(cfg, onConfigApplied); +void onConfigReceived(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) { + if (result != LD2410Async::AsyncCommandResult::SUCCESS) { + Serial.println("Failed to request config data."); + return; + } + + Serial.println("Config data received. Cloning and modifying..."); + + // Clone the current config + LD2410Types::ConfigData cfg = sender->getConfigData(); + + // Example modification: change resolution + // RESOLUTION_75CM or RESOLUTION_20CM + cfg.distanceResolution = LD2410Types::DistanceResolution::RESOLUTION_20CM; + + // Apply updated config to the radar + if (!sender->configureAllConfigSettingsAsync(cfg, false, onConfigApplied)) { + //It is good practive to check the return value of commands for true/false. + //False indicates that the command could not be sent (e.g. because another async command is still pending) + Serial.println("Error! Could not update config on the sensor"); + }; + //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender: + //radar.configureAllConfigSettingsAsync(cfg, false, onConfigApplied); + //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board).. } void setup() { - // Initialize USB serial for debug output - Serial.begin(115200); - while (!Serial) { - ; // wait for Serial Monitor - } - Serial.println("LD2410Async example: change resolution and reboot"); - - // Initialize Serial1 with user-defined pins and baudrate - RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); - - // Start the radar background task (parses incoming data frames) - if (radar.begin()) { - Serial.println("Radar task started successfully."); - } - else { - Serial.println("Radar task already running."); - } - - // Request all config data, then modify in callback - radar.requestAllConfigData(onConfigReceived); + // Initialize USB serial for debug output + Serial.begin(115200); + while (!Serial) { + ; // wait for Serial Monitor + } + Serial.println("LD2410Async example: change resolution and reboot"); + + // Initialize Serial1 with user-defined pins and baudrate + RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); + + // Start the radar background task (parses incoming data frames) + if (radar.begin()) { + Serial.println("Radar task started successfully."); + // Request all config data, then modify in callback + if (!radar.requestAllConfigSettingsAsync(onConfigReceived)) { + //It is good practive to check the return value of commands for true/false. + //False indicates that the command could not be sent (e.g. because another async command is still pending) + Serial.println("Error! Could not start config data request"); + } + } + else { + Serial.println("Error! Could not start radar task."); + } + } void loop() { - // Nothing to do here. - // The library handles communication and invokes callbacks automatically. - delay(1000); + // Nothing to do here. + // The library handles communication and invokes callbacks automatically. + delay(1000); } diff --git a/examples/receiveData/receiveData.ino b/examples/receiveData/receiveData.ino index 5c7add2..fdede84 100644 --- a/examples/receiveData/receiveData.ino +++ b/examples/receiveData/receiveData.ino @@ -11,9 +11,21 @@ #include #include "LD2410Async.h" - // ========================= USER CONFIGURATION ========================= - - // UART pins for the LD2410 sensor + /** + * Example sketch for LD2410Async library + * + * This sketch demonstrates how to: + * 1. Initialize the radar on Serial1. + * 2. register a callback to receive detection data. + * 3. Get a pointer to the detection data struct. + * + * Important: + * Make sure to adjust RADAR_RX_PIN and ADAR_TX_PIN to match you actual wiring. + */ + + // ========================= USER CONFIGURATION ========================= + + // UART pins for the LD2410 sensor #define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX) #define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX) @@ -31,12 +43,12 @@ LD2410Async radar(RadarSerial); // Callback function called whenever new detection data arrives void onDetectionDataReceived(LD2410Async* sender, bool presenceDetected, byte userData) { // Access detection data efficiently without making a copy - const LD2410Async::DetectionData& data = sender->getDetectionDataRef(); + const LD2410Types::DetectionData& data = sender->getDetectionDataRef(); Serial.println("=== Detection Data ==="); Serial.print("Target State: "); - Serial.println(LD2410Async::targetStateToString(data.targetState)); + Serial.println(LD2410Types::targetStateToString(data.targetState)); Serial.print("Presence detected: "); Serial.println(data.presenceDetected ? "Yes" : "No"); @@ -73,13 +85,14 @@ void setup() { // Start the radar background task (parses incoming data frames) if (radar.begin()) { Serial.println("Radar task started successfully."); + // Register callback for detection updates + radar.registerDetectionDataReceivedCallback(onDetectionDataReceived, 0); } else { - Serial.println("Radar task already running."); + Serial.println("ERROR! Could not start radar task."); } - // Register callback for detection updates - radar.registerDetectionDataReceivedCallback(onDetectionDataReceived); + } void loop() { diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 5ee3df6..5a43b1d 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1247,7 +1247,7 @@ class LD2410Async { * * @returns true if the command sequence has been started, false otherwise. */ - bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData); + bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0); From cce8f3a792f6aaaeae0bd3457903f10b1e742607 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 14:19:15 +0200 Subject: [PATCH 016/114] Automatic docu generation added --- .github/workflows/generateDoxygenDocu.yml | 32 +++++++++++ Doxyfile | 69 +++++++++++++++++++++++ LD2410Async.vcxitems | 2 + LD2410Async.vcxitems.filters | 2 + 4 files changed, 105 insertions(+) create mode 100644 .github/workflows/generateDoxygenDocu.yml create mode 100644 Doxyfile diff --git a/.github/workflows/generateDoxygenDocu.yml b/.github/workflows/generateDoxygenDocu.yml new file mode 100644 index 0000000..fef57ce --- /dev/null +++ b/.github/workflows/generateDoxygenDocu.yml @@ -0,0 +1,32 @@ +name: Generate Documentation + +on: + push: + branches-ignore: + - master + workflow_dispatch: + +jobs: + doxygen: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Generate Doxygen documentation + uses: mattnotmitt/doxygen-action@v1 + with: + doxyfile-path: ./Doxyfile + + - name: Commit documentation if changed + run: | + git config --local user.email "actions@github.com" + git config --local user.name "GitHub Actions" + mkdir -p docu + cp -r docs/html/* docu/ || true + git add docu + if ! git diff --cached --quiet; then + git commit -m "Update documentation" + git push + fi diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..623f529 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,69 @@ +# Doxyfile for LD2410Async C++ Library +# Suitable for GitHub Actions workflow in .github/workflows/generateDoxygenDocu.yml + +# Project related configuration +PROJECT_NAME = "LD2410Async" +PROJECT_BRIEF = "Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor" +OUTPUT_DIRECTORY = docs +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_ANON_NSPACES = YES + +# Input +INPUT = src examples +FILE_PATTERNS = *.h *.cpp *.ino +RECURSIVE = YES + +# Source code browsing +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = NO + +# HTML output +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 + +# LaTeX output (disabled) +GENERATE_LATEX = NO + +# Dot/Graphviz support +HAVE_DOT = YES +DOT_IMAGE_FORMAT = svg +CALL_GRAPH = YES +CALLER_GRAPH = YES +CLASS_DIAGRAMS = YES +COLLABORATION_GRAPH = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DOT_MULTI_TARGETS = YES + +# Warnings +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES + +# Misc +QUIET = NO +GENERATE_TREEVIEW = YES +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = src examples + +# Repository link (optional, for GitHub integration) +# Set to your repo if you want source browsing links +# HTML_DYNAMIC_SECTIONS = YES +# PROJECT_LOGO = + +# If you want Markdown support +MARKDOWN_SUPPORT = YES + +# If you want to document private members, set EXTRACT_PRIVATE = YES + +# End of Doxyfile \ No newline at end of file diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 4c75542..cb36aec 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -23,11 +23,13 @@ + + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 8540649..885d929 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -33,6 +33,8 @@ + + From e8640f23e84ed39b2da6c3aa37276e460852dd24 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 12:35:34 +0000 Subject: [PATCH 017/114] Update documentation --- docu/LD2410Async_8cpp.html | 208 + docu/LD2410Async_8cpp.js | 5 + docu/LD2410Async_8cpp__incl.map | 29 + docu/LD2410Async_8cpp__incl.md5 | 1 + docu/LD2410Async_8cpp__incl.svg | 255 ++ docu/LD2410Async_8cpp_source.html | 2006 ++++++++++ docu/LD2410Async_8h.html | 139 + docu/LD2410Async_8h.js | 4 + docu/LD2410Async_8h__dep__incl.map | 13 + docu/LD2410Async_8h__dep__incl.md5 | 1 + docu/LD2410Async_8h__dep__incl.svg | 111 + docu/LD2410Async_8h__incl.map | 17 + docu/LD2410Async_8h__incl.md5 | 1 + docu/LD2410Async_8h__incl.svg | 147 + docu/LD2410Async_8h_source.html | 1706 ++++++++ docu/LD2410CommandBuilder_8h.html | 153 + docu/LD2410CommandBuilder_8h.js | 9 + docu/LD2410CommandBuilder_8h__dep__incl.map | 5 + docu/LD2410CommandBuilder_8h__dep__incl.md5 | 1 + docu/LD2410CommandBuilder_8h__dep__incl.svg | 39 + docu/LD2410CommandBuilder_8h__incl.map | 22 + docu/LD2410CommandBuilder_8h__incl.md5 | 1 + docu/LD2410CommandBuilder_8h__incl.svg | 192 + docu/LD2410CommandBuilder_8h_source.html | 252 ++ docu/LD2410Debug_8h.html | 313 ++ docu/LD2410Debug_8h.js | 12 + docu/LD2410Debug_8h__dep__incl.map | 15 + docu/LD2410Debug_8h__dep__incl.md5 | 1 + docu/LD2410Debug_8h__dep__incl.svg | 129 + docu/LD2410Debug_8h__incl.map | 5 + docu/LD2410Debug_8h__incl.md5 | 1 + docu/LD2410Debug_8h__incl.svg | 39 + docu/LD2410Debug_8h_source.html | 182 + docu/LD2410Defs_8h.html | 235 ++ docu/LD2410Defs_8h.js | 51 + docu/LD2410Defs_8h__dep__incl.map | 13 + docu/LD2410Defs_8h__dep__incl.md5 | 1 + docu/LD2410Defs_8h__dep__incl.svg | 111 + docu/LD2410Defs_8h__incl.map | 17 + docu/LD2410Defs_8h__incl.md5 | 1 + docu/LD2410Defs_8h__incl.svg | 147 + docu/LD2410Defs_8h_source.html | 256 ++ docu/LD2410Types_8h.html | 201 + docu/LD2410Types_8h.js | 46 + docu/LD2410Types_8h__dep__incl.map | 17 + docu/LD2410Types_8h__dep__incl.md5 | 1 + docu/LD2410Types_8h__dep__incl.svg | 147 + docu/LD2410Types_8h__incl.map | 5 + docu/LD2410Types_8h__incl.md5 | 1 + docu/LD2410Types_8h__incl.svg | 39 + docu/LD2410Types_8h_source.html | 675 ++++ docu/annotated.html | 120 + docu/annotated_dup.js | 8 + docu/basicPresenceDetection_8ino.html | 115 + docu/basicPresenceDetection_8ino_source.html | 187 + docu/bc_s.png | Bin 0 -> 676 bytes docu/bc_sd.png | Bin 0 -> 635 bytes docu/changeConfig_8ino.html | 115 + docu/changeConfig_8ino_source.html | 225 ++ docu/changeDistanceResolution_8ino.html | 115 + .../changeDistanceResolution_8ino_source.html | 235 ++ docu/classLD2410Async-members.html | 181 + docu/classLD2410Async.html | 3419 +++++++++++++++++ docu/classLD2410Async.js | 74 + docu/classLD2410Async__coll__graph.map | 7 + docu/classLD2410Async__coll__graph.md5 | 1 + docu/classLD2410Async__coll__graph.svg | 59 + ...1705b527bc80949417de15b6e95140c_cgraph.map | 5 + ...1705b527bc80949417de15b6e95140c_cgraph.md5 | 1 + ...1705b527bc80949417de15b6e95140c_cgraph.svg | 40 + ...eb274f41635209e31f34f869fe1826a_cgraph.map | 7 + ...eb274f41635209e31f34f869fe1826a_cgraph.md5 | 1 + ...eb274f41635209e31f34f869fe1826a_cgraph.svg | 59 + ...cf70cb5f55626596530d050b0812b38_cgraph.map | 7 + ...cf70cb5f55626596530d050b0812b38_cgraph.md5 | 1 + ...cf70cb5f55626596530d050b0812b38_cgraph.svg | 59 + ...0de0cee1571020fa8b8f97ba9baa48_icgraph.map | 5 + ...0de0cee1571020fa8b8f97ba9baa48_icgraph.md5 | 1 + ...0de0cee1571020fa8b8f97ba9baa48_icgraph.svg | 41 + ...260f74672079a7200f210e4ffde1046_cgraph.map | 5 + ...260f74672079a7200f210e4ffde1046_cgraph.md5 | 1 + ...260f74672079a7200f210e4ffde1046_cgraph.svg | 40 + ...77464026350140b0277369a13e8c1d3_cgraph.map | 5 + ...77464026350140b0277369a13e8c1d3_cgraph.md5 | 1 + ...77464026350140b0277369a13e8c1d3_cgraph.svg | 40 + ...923c4b746d90fbd314eae7094bb90be_cgraph.map | 5 + ...923c4b746d90fbd314eae7094bb90be_cgraph.md5 | 1 + ...923c4b746d90fbd314eae7094bb90be_cgraph.svg | 40 + ...9aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.map | 7 + ...9aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.md5 | 1 + ...9aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.svg | 59 + ...aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.map | 5 + ...aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.md5 | 1 + ...aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.svg | 41 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map | 5 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 | 1 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg | 41 + ...ebfc3c3547f3894ae264b82a32c1a82_cgraph.map | 5 + ...ebfc3c3547f3894ae264b82a32c1a82_cgraph.md5 | 1 + ...ebfc3c3547f3894ae264b82a32c1a82_cgraph.svg | 40 + ...30773f7a69dad507caaa636f08fa76_icgraph.map | 7 + ...30773f7a69dad507caaa636f08fa76_icgraph.md5 | 1 + ...30773f7a69dad507caaa636f08fa76_icgraph.svg | 60 + ...09170bfc50580131d0c72f5c91daede_cgraph.map | 9 + ...09170bfc50580131d0c72f5c91daede_cgraph.md5 | 1 + ...09170bfc50580131d0c72f5c91daede_cgraph.svg | 78 + ...eeae3b4525a303e0e3bc208c4bcff21_cgraph.map | 5 + ...eeae3b4525a303e0e3bc208c4bcff21_cgraph.md5 | 1 + ...eeae3b4525a303e0e3bc208c4bcff21_cgraph.svg | 40 + ...6ca514c34bec7957b46395dabb602f2_cgraph.map | 5 + ...6ca514c34bec7957b46395dabb602f2_cgraph.md5 | 1 + ...6ca514c34bec7957b46395dabb602f2_cgraph.svg | 41 + ...e853afaba8373fb90524c3c4e8a153_icgraph.map | 64 + ...e853afaba8373fb90524c3c4e8a153_icgraph.md5 | 1 + ...e853afaba8373fb90524c3c4e8a153_icgraph.svg | 599 +++ ...6968c2e9be09d9acb6b62ad7496a2a6_cgraph.map | 5 + ...6968c2e9be09d9acb6b62ad7496a2a6_cgraph.md5 | 1 + ...6968c2e9be09d9acb6b62ad7496a2a6_cgraph.svg | 40 + ...0e3bc56482783249d966a670310bffd_cgraph.map | 7 + ...0e3bc56482783249d966a670310bffd_cgraph.md5 | 1 + ...0e3bc56482783249d966a670310bffd_cgraph.svg | 59 + ...493caef9e22a89445741da019b99213_cgraph.map | 7 + ...493caef9e22a89445741da019b99213_cgraph.md5 | 1 + ...493caef9e22a89445741da019b99213_cgraph.svg | 59 + ...9910e37f7cf20d05be573fec341ef0c_cgraph.map | 5 + ...9910e37f7cf20d05be573fec341ef0c_cgraph.md5 | 1 + ...9910e37f7cf20d05be573fec341ef0c_cgraph.svg | 40 + ...ebecb17389f2dffb7c2d86c607be973_cgraph.map | 5 + ...ebecb17389f2dffb7c2d86c607be973_cgraph.md5 | 1 + ...ebecb17389f2dffb7c2d86c607be973_cgraph.svg | 40 + ...a0138cb624b66482e9a05b197c21f22_cgraph.map | 7 + ...a0138cb624b66482e9a05b197c21f22_cgraph.md5 | 1 + ...a0138cb624b66482e9a05b197c21f22_cgraph.svg | 59 + ...0138cb624b66482e9a05b197c21f22_icgraph.map | 5 + ...0138cb624b66482e9a05b197c21f22_icgraph.md5 | 1 + ...0138cb624b66482e9a05b197c21f22_icgraph.svg | 41 + ...db841697a992c1bf203944211bd8659_cgraph.map | 5 + ...db841697a992c1bf203944211bd8659_cgraph.md5 | 1 + ...db841697a992c1bf203944211bd8659_cgraph.svg | 40 + ...578ee25526c8bb808fe7200fae95a38_cgraph.map | 5 + ...578ee25526c8bb808fe7200fae95a38_cgraph.md5 | 1 + ...578ee25526c8bb808fe7200fae95a38_cgraph.svg | 40 + ...9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.map | 5 + ...9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.md5 | 1 + ...9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.svg | 40 + ...fe79850fa3e040a12de72ea99747266_cgraph.map | 9 + ...fe79850fa3e040a12de72ea99747266_cgraph.md5 | 1 + ...fe79850fa3e040a12de72ea99747266_cgraph.svg | 78 + ...219580b6e47f54a8aac0847e2054bf6_cgraph.map | 5 + ...219580b6e47f54a8aac0847e2054bf6_cgraph.md5 | 1 + ...219580b6e47f54a8aac0847e2054bf6_cgraph.svg | 40 + ...24f13c9381aa35460908b4c0edb5fa9_cgraph.map | 5 + ...24f13c9381aa35460908b4c0edb5fa9_cgraph.md5 | 1 + ...24f13c9381aa35460908b4c0edb5fa9_cgraph.svg | 40 + ...7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.map | 5 + ...7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.md5 | 1 + ...7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.svg | 40 + ...7bfb9c212c452898053f167555a0bb6_cgraph.map | 5 + ...7bfb9c212c452898053f167555a0bb6_cgraph.md5 | 1 + ...7bfb9c212c452898053f167555a0bb6_cgraph.svg | 40 + ...cd209213cc2e418aefd20573a868e0a_cgraph.map | 10 + ...cd209213cc2e418aefd20573a868e0a_cgraph.md5 | 1 + ...cd209213cc2e418aefd20573a868e0a_cgraph.svg | 87 + ...dcbab1709f2a80571563609f4a23862_cgraph.map | 5 + ...dcbab1709f2a80571563609f4a23862_cgraph.md5 | 1 + ...dcbab1709f2a80571563609f4a23862_cgraph.svg | 40 + ...6e3792586e3bac35ca187d41a0b9250_cgraph.map | 7 + ...6e3792586e3bac35ca187d41a0b9250_cgraph.md5 | 1 + ...6e3792586e3bac35ca187d41a0b9250_cgraph.svg | 59 + ...b856d32612fba953b07280cf5d9a235_cgraph.map | 5 + ...b856d32612fba953b07280cf5d9a235_cgraph.md5 | 1 + ...b856d32612fba953b07280cf5d9a235_cgraph.svg | 39 + ...d89a0870ddacee96bc2f0fb9c1c96fc_cgraph.map | 5 + ...d89a0870ddacee96bc2f0fb9c1c96fc_cgraph.md5 | 1 + ...d89a0870ddacee96bc2f0fb9c1c96fc_cgraph.svg | 40 + ...aa6e2c1842ebd96c6e04fe542af66cb_cgraph.map | 5 + ...aa6e2c1842ebd96c6e04fe542af66cb_cgraph.md5 | 1 + ...aa6e2c1842ebd96c6e04fe542af66cb_cgraph.svg | 40 + docu/classes.html | 124 + docu/clipboard.js | 61 + docu/closed.png | Bin 0 -> 132 bytes docu/cookie.js | 58 + .../dir_0877bab65d936efc50d6280cdd9a4b61.html | 119 + docu/dir_0877bab65d936efc50d6280cdd9a4b61.js | 4 + .../dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html | 119 + docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.js | 4 + .../dir_214001d413268a160f69364489f85961.html | 119 + docu/dir_214001d413268a160f69364489f85961.js | 4 + .../dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html | 119 + docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.js | 4 + docu/doc.svg | 12 + docu/docd.svg | 12 + docu/doxygen.css | 2247 +++++++++++ docu/doxygen.svg | 28 + docu/doxygen_crawl.html | 459 +++ docu/dynsections.js | 205 + docu/files.html | 130 + docu/files_dup.js | 13 + docu/folderclosed.svg | 11 + docu/folderclosedd.svg | 11 + docu/folderopen.svg | 17 + docu/folderopend.svg | 12 + docu/functions.html | 266 ++ docu/functions_enum.html | 112 + docu/functions_func.html | 205 + docu/functions_type.html | 114 + docu/functions_vars.html | 198 + docu/globals.html | 122 + docu/globals_defs.html | 120 + docu/globals_func.html | 113 + docu/graph_legend.html | 172 + docu/graph_legend.md5 | 1 + docu/graph_legend.svg | 167 + docu/index.html | 113 + docu/jquery.js | 204 + docu/menu.js | 134 + docu/menudata.js | 112 + docu/minus.svg | 8 + docu/minusd.svg | 8 + docu/namespaceLD2410CommandBuilder.html | 475 +++ ...91c87b48a0ec24a7a6066fe48bd63e_icgraph.map | 5 + ...91c87b48a0ec24a7a6066fe48bd63e_icgraph.md5 | 1 + ...91c87b48a0ec24a7a6066fe48bd63e_icgraph.svg | 41 + ...87725992c2b7bd53fc2b24f5ac4a0f_icgraph.map | 5 + ...87725992c2b7bd53fc2b24f5ac4a0f_icgraph.md5 | 1 + ...87725992c2b7bd53fc2b24f5ac4a0f_icgraph.svg | 41 + ...54a13a534e713b1fc2b29818bbe255_icgraph.map | 5 + ...54a13a534e713b1fc2b29818bbe255_icgraph.md5 | 1 + ...54a13a534e713b1fc2b29818bbe255_icgraph.svg | 41 + ...79fbf4d013640f1a9bffdbc21122f6_icgraph.map | 7 + ...79fbf4d013640f1a9bffdbc21122f6_icgraph.md5 | 1 + ...79fbf4d013640f1a9bffdbc21122f6_icgraph.svg | 60 + ...6ee0e1bb505fd30efd8b776557cf1f_icgraph.map | 7 + ...6ee0e1bb505fd30efd8b776557cf1f_icgraph.md5 | 1 + ...6ee0e1bb505fd30efd8b776557cf1f_icgraph.svg | 60 + ...eb163ccaa819b1504b79459ed48729_icgraph.map | 7 + ...eb163ccaa819b1504b79459ed48729_icgraph.md5 | 1 + ...eb163ccaa819b1504b79459ed48729_icgraph.svg | 60 + docu/namespaceLD2410Defs.html | 1428 +++++++ docu/namespaceLD2410Types.html | 491 +++ docu/namespaceLD2410Types.js | 46 + docu/namespacemembers.html | 221 ++ docu/namespacemembers_enum.html | 117 + docu/namespacemembers_func.html | 117 + docu/namespacemembers_vars.html | 201 + docu/namespaces.html | 119 + docu/namespaces_dup.js | 62 + docu/nav_f.png | Bin 0 -> 153 bytes docu/nav_fd.png | Bin 0 -> 169 bytes docu/nav_g.png | Bin 0 -> 95 bytes docu/nav_h.png | Bin 0 -> 98 bytes docu/nav_hd.png | Bin 0 -> 114 bytes docu/navtree.css | 149 + docu/navtree.js | 483 +++ docu/navtreedata.js | 66 + docu/navtreeindex0.js | 253 ++ docu/navtreeindex1.js | 124 + docu/open.png | Bin 0 -> 123 bytes docu/plus.svg | 9 + docu/plusd.svg | 9 + docu/receiveData_8ino.html | 115 + docu/receiveData_8ino_source.html | 216 ++ docu/resize.js | 147 + docu/search/all_0.js | 23 + docu/search/all_1.js | 30 + docu/search/all_10.js | 9 + docu/search/all_11.js | 4 + docu/search/all_12.js | 4 + docu/search/all_13.js | 5 + docu/search/all_2.js | 34 + docu/search/all_3.js | 32 + docu/search/all_4.js | 26 + docu/search/all_5.js | 8 + docu/search/all_6.js | 11 + docu/search/all_7.js | 5 + docu/search/all_8.js | 8 + docu/search/all_9.js | 22 + docu/search/all_a.js | 19 + docu/search/all_b.js | 9 + docu/search/all_c.js | 6 + docu/search/all_d.js | 6 + docu/search/all_e.js | 39 + docu/search/all_f.js | 23 + docu/search/classes_0.js | 4 + docu/search/classes_1.js | 4 + docu/search/classes_2.js | 4 + docu/search/close.svg | 18 + docu/search/defines_0.js | 10 + docu/search/defines_1.js | 5 + docu/search/enums_0.js | 5 + docu/search/enums_1.js | 4 + docu/search/enums_2.js | 4 + docu/search/enums_3.js | 4 + docu/search/enums_4.js | 4 + docu/search/enums_5.js | 4 + docu/search/enumvalues_0.js | 6 + docu/search/enumvalues_1.js | 11 + docu/search/enumvalues_2.js | 5 + docu/search/enumvalues_3.js | 5 + docu/search/enumvalues_4.js | 4 + docu/search/enumvalues_5.js | 4 + docu/search/enumvalues_6.js | 5 + docu/search/enumvalues_7.js | 5 + docu/search/enumvalues_8.js | 7 + docu/search/enumvalues_9.js | 5 + docu/search/enumvalues_a.js | 5 + docu/search/enumvalues_b.js | 4 + docu/search/files_0.js | 4 + docu/search/files_1.js | 5 + docu/search/files_2.js | 9 + docu/search/files_3.js | 4 + docu/search/functions_0.js | 5 + docu/search/functions_1.js | 13 + docu/search/functions_2.js | 13 + docu/search/functions_3.js | 7 + docu/search/functions_4.js | 9 + docu/search/functions_5.js | 9 + docu/search/functions_6.js | 7 + docu/search/functions_7.js | 4 + docu/search/functions_8.js | 4 + docu/search/functions_9.js | 16 + docu/search/functions_a.js | 6 + docu/search/mag.svg | 24 + docu/search/mag_d.svg | 24 + docu/search/mag_sel.svg | 31 + docu/search/mag_seld.svg | 31 + docu/search/namespaces_0.js | 6 + docu/search/search.css | 291 ++ docu/search/search.js | 694 ++++ docu/search/searchdata.js | 42 + docu/search/typedefs_0.js | 4 + docu/search/typedefs_1.js | 4 + docu/search/typedefs_2.js | 4 + docu/search/variables_0.js | 4 + docu/search/variables_1.js | 9 + docu/search/variables_2.js | 9 + docu/search/variables_3.js | 10 + docu/search/variables_4.js | 9 + docu/search/variables_5.js | 4 + docu/search/variables_6.js | 4 + docu/search/variables_7.js | 5 + docu/search/variables_8.js | 7 + docu/search/variables_9.js | 14 + docu/search/variables_a.js | 5 + docu/search/variables_b.js | 5 + docu/search/variables_c.js | 5 + docu/search/variables_d.js | 19 + docu/search/variables_e.js | 17 + docu/search/variables_f.js | 7 + docu/splitbar.png | Bin 0 -> 314 bytes docu/splitbard.png | Bin 0 -> 282 bytes ...ructLD2410Types_1_1ConfigData-members.html | 128 + docu/structLD2410Types_1_1ConfigData.html | 552 +++ docu/structLD2410Types_1_1ConfigData.js | 16 + ...c2665adcc382224455dfde7f05b885_icgraph.map | 5 + ...c2665adcc382224455dfde7f05b885_icgraph.md5 | 1 + ...c2665adcc382224455dfde7f05b885_icgraph.svg | 41 + ...tLD2410Types_1_1DetectionData-members.html | 133 + docu/structLD2410Types_1_1DetectionData.html | 604 +++ docu/structLD2410Types_1_1DetectionData.js | 21 + docu/sync_off.png | Bin 0 -> 853 bytes docu/sync_on.png | Bin 0 -> 845 bytes docu/tab_a.png | Bin 0 -> 142 bytes docu/tab_ad.png | Bin 0 -> 135 bytes docu/tab_b.png | Bin 0 -> 169 bytes docu/tab_bd.png | Bin 0 -> 173 bytes docu/tab_h.png | Bin 0 -> 177 bytes docu/tab_hd.png | Bin 0 -> 180 bytes docu/tab_s.png | Bin 0 -> 184 bytes docu/tab_sd.png | Bin 0 -> 188 bytes docu/tabs.css | 1 + 371 files changed, 30086 insertions(+) create mode 100644 docu/LD2410Async_8cpp.html create mode 100644 docu/LD2410Async_8cpp.js create mode 100644 docu/LD2410Async_8cpp__incl.map create mode 100644 docu/LD2410Async_8cpp__incl.md5 create mode 100644 docu/LD2410Async_8cpp__incl.svg create mode 100644 docu/LD2410Async_8cpp_source.html create mode 100644 docu/LD2410Async_8h.html create mode 100644 docu/LD2410Async_8h.js create mode 100644 docu/LD2410Async_8h__dep__incl.map create mode 100644 docu/LD2410Async_8h__dep__incl.md5 create mode 100644 docu/LD2410Async_8h__dep__incl.svg create mode 100644 docu/LD2410Async_8h__incl.map create mode 100644 docu/LD2410Async_8h__incl.md5 create mode 100644 docu/LD2410Async_8h__incl.svg create mode 100644 docu/LD2410Async_8h_source.html create mode 100644 docu/LD2410CommandBuilder_8h.html create mode 100644 docu/LD2410CommandBuilder_8h.js create mode 100644 docu/LD2410CommandBuilder_8h__dep__incl.map create mode 100644 docu/LD2410CommandBuilder_8h__dep__incl.md5 create mode 100644 docu/LD2410CommandBuilder_8h__dep__incl.svg create mode 100644 docu/LD2410CommandBuilder_8h__incl.map create mode 100644 docu/LD2410CommandBuilder_8h__incl.md5 create mode 100644 docu/LD2410CommandBuilder_8h__incl.svg create mode 100644 docu/LD2410CommandBuilder_8h_source.html create mode 100644 docu/LD2410Debug_8h.html create mode 100644 docu/LD2410Debug_8h.js create mode 100644 docu/LD2410Debug_8h__dep__incl.map create mode 100644 docu/LD2410Debug_8h__dep__incl.md5 create mode 100644 docu/LD2410Debug_8h__dep__incl.svg create mode 100644 docu/LD2410Debug_8h__incl.map create mode 100644 docu/LD2410Debug_8h__incl.md5 create mode 100644 docu/LD2410Debug_8h__incl.svg create mode 100644 docu/LD2410Debug_8h_source.html create mode 100644 docu/LD2410Defs_8h.html create mode 100644 docu/LD2410Defs_8h.js create mode 100644 docu/LD2410Defs_8h__dep__incl.map create mode 100644 docu/LD2410Defs_8h__dep__incl.md5 create mode 100644 docu/LD2410Defs_8h__dep__incl.svg create mode 100644 docu/LD2410Defs_8h__incl.map create mode 100644 docu/LD2410Defs_8h__incl.md5 create mode 100644 docu/LD2410Defs_8h__incl.svg create mode 100644 docu/LD2410Defs_8h_source.html create mode 100644 docu/LD2410Types_8h.html create mode 100644 docu/LD2410Types_8h.js create mode 100644 docu/LD2410Types_8h__dep__incl.map create mode 100644 docu/LD2410Types_8h__dep__incl.md5 create mode 100644 docu/LD2410Types_8h__dep__incl.svg create mode 100644 docu/LD2410Types_8h__incl.map create mode 100644 docu/LD2410Types_8h__incl.md5 create mode 100644 docu/LD2410Types_8h__incl.svg create mode 100644 docu/LD2410Types_8h_source.html create mode 100644 docu/annotated.html create mode 100644 docu/annotated_dup.js create mode 100644 docu/basicPresenceDetection_8ino.html create mode 100644 docu/basicPresenceDetection_8ino_source.html create mode 100644 docu/bc_s.png create mode 100644 docu/bc_sd.png create mode 100644 docu/changeConfig_8ino.html create mode 100644 docu/changeConfig_8ino_source.html create mode 100644 docu/changeDistanceResolution_8ino.html create mode 100644 docu/changeDistanceResolution_8ino_source.html create mode 100644 docu/classLD2410Async-members.html create mode 100644 docu/classLD2410Async.html create mode 100644 docu/classLD2410Async.js create mode 100644 docu/classLD2410Async__coll__graph.map create mode 100644 docu/classLD2410Async__coll__graph.md5 create mode 100644 docu/classLD2410Async__coll__graph.svg create mode 100644 docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.map create mode 100644 docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.md5 create mode 100644 docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.svg create mode 100644 docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.map create mode 100644 docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.md5 create mode 100644 docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.svg create mode 100644 docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.map create mode 100644 docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.md5 create mode 100644 docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.svg create mode 100644 docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.map create mode 100644 docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.md5 create mode 100644 docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.svg create mode 100644 docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.map create mode 100644 docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.md5 create mode 100644 docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.svg create mode 100644 docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.map create mode 100644 docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.md5 create mode 100644 docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.svg create mode 100644 docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.map create mode 100644 docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.md5 create mode 100644 docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.svg create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.map create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.md5 create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.svg create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.map create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.md5 create mode 100644 docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.svg create mode 100644 docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map create mode 100644 docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 create mode 100644 docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg create mode 100644 docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.map create mode 100644 docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.md5 create mode 100644 docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.svg create mode 100644 docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.map create mode 100644 docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.md5 create mode 100644 docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.svg create mode 100644 docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.map create mode 100644 docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.md5 create mode 100644 docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.svg create mode 100644 docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.map create mode 100644 docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.md5 create mode 100644 docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.svg create mode 100644 docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.map create mode 100644 docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.md5 create mode 100644 docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.svg create mode 100644 docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.map create mode 100644 docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.md5 create mode 100644 docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.svg create mode 100644 docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.map create mode 100644 docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.md5 create mode 100644 docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.svg create mode 100644 docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.map create mode 100644 docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.md5 create mode 100644 docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.svg create mode 100644 docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.map create mode 100644 docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.md5 create mode 100644 docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.svg create mode 100644 docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.map create mode 100644 docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.md5 create mode 100644 docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.svg create mode 100644 docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.map create mode 100644 docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.md5 create mode 100644 docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.svg create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.map create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.md5 create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.svg create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.map create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.md5 create mode 100644 docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.svg create mode 100644 docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.map create mode 100644 docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.md5 create mode 100644 docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.svg create mode 100644 docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.map create mode 100644 docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.md5 create mode 100644 docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.svg create mode 100644 docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.map create mode 100644 docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.md5 create mode 100644 docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.svg create mode 100644 docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.map create mode 100644 docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.md5 create mode 100644 docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.svg create mode 100644 docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.map create mode 100644 docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.md5 create mode 100644 docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.svg create mode 100644 docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.map create mode 100644 docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.md5 create mode 100644 docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.svg create mode 100644 docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.map create mode 100644 docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.md5 create mode 100644 docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.svg create mode 100644 docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.map create mode 100644 docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.md5 create mode 100644 docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.svg create mode 100644 docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.map create mode 100644 docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.md5 create mode 100644 docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.svg create mode 100644 docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.map create mode 100644 docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.md5 create mode 100644 docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.svg create mode 100644 docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.map create mode 100644 docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.md5 create mode 100644 docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.svg create mode 100644 docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.map create mode 100644 docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.md5 create mode 100644 docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.svg create mode 100644 docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.map create mode 100644 docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.md5 create mode 100644 docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.svg create mode 100644 docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.map create mode 100644 docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.md5 create mode 100644 docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.svg create mode 100644 docu/classes.html create mode 100644 docu/clipboard.js create mode 100644 docu/closed.png create mode 100644 docu/cookie.js create mode 100644 docu/dir_0877bab65d936efc50d6280cdd9a4b61.html create mode 100644 docu/dir_0877bab65d936efc50d6280cdd9a4b61.js create mode 100644 docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html create mode 100644 docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.js create mode 100644 docu/dir_214001d413268a160f69364489f85961.html create mode 100644 docu/dir_214001d413268a160f69364489f85961.js create mode 100644 docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html create mode 100644 docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.js create mode 100644 docu/doc.svg create mode 100644 docu/docd.svg create mode 100644 docu/doxygen.css create mode 100644 docu/doxygen.svg create mode 100644 docu/doxygen_crawl.html create mode 100644 docu/dynsections.js create mode 100644 docu/files.html create mode 100644 docu/files_dup.js create mode 100644 docu/folderclosed.svg create mode 100644 docu/folderclosedd.svg create mode 100644 docu/folderopen.svg create mode 100644 docu/folderopend.svg create mode 100644 docu/functions.html create mode 100644 docu/functions_enum.html create mode 100644 docu/functions_func.html create mode 100644 docu/functions_type.html create mode 100644 docu/functions_vars.html create mode 100644 docu/globals.html create mode 100644 docu/globals_defs.html create mode 100644 docu/globals_func.html create mode 100644 docu/graph_legend.html create mode 100644 docu/graph_legend.md5 create mode 100644 docu/graph_legend.svg create mode 100644 docu/index.html create mode 100644 docu/jquery.js create mode 100644 docu/menu.js create mode 100644 docu/menudata.js create mode 100644 docu/minus.svg create mode 100644 docu/minusd.svg create mode 100644 docu/namespaceLD2410CommandBuilder.html create mode 100644 docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.svg create mode 100644 docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.svg create mode 100644 docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.svg create mode 100644 docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.svg create mode 100644 docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.svg create mode 100644 docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.map create mode 100644 docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.md5 create mode 100644 docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.svg create mode 100644 docu/namespaceLD2410Defs.html create mode 100644 docu/namespaceLD2410Types.html create mode 100644 docu/namespaceLD2410Types.js create mode 100644 docu/namespacemembers.html create mode 100644 docu/namespacemembers_enum.html create mode 100644 docu/namespacemembers_func.html create mode 100644 docu/namespacemembers_vars.html create mode 100644 docu/namespaces.html create mode 100644 docu/namespaces_dup.js create mode 100644 docu/nav_f.png create mode 100644 docu/nav_fd.png create mode 100644 docu/nav_g.png create mode 100644 docu/nav_h.png create mode 100644 docu/nav_hd.png create mode 100644 docu/navtree.css create mode 100644 docu/navtree.js create mode 100644 docu/navtreedata.js create mode 100644 docu/navtreeindex0.js create mode 100644 docu/navtreeindex1.js create mode 100644 docu/open.png create mode 100644 docu/plus.svg create mode 100644 docu/plusd.svg create mode 100644 docu/receiveData_8ino.html create mode 100644 docu/receiveData_8ino_source.html create mode 100644 docu/resize.js create mode 100644 docu/search/all_0.js create mode 100644 docu/search/all_1.js create mode 100644 docu/search/all_10.js create mode 100644 docu/search/all_11.js create mode 100644 docu/search/all_12.js create mode 100644 docu/search/all_13.js create mode 100644 docu/search/all_2.js create mode 100644 docu/search/all_3.js create mode 100644 docu/search/all_4.js create mode 100644 docu/search/all_5.js create mode 100644 docu/search/all_6.js create mode 100644 docu/search/all_7.js create mode 100644 docu/search/all_8.js create mode 100644 docu/search/all_9.js create mode 100644 docu/search/all_a.js create mode 100644 docu/search/all_b.js create mode 100644 docu/search/all_c.js create mode 100644 docu/search/all_d.js create mode 100644 docu/search/all_e.js create mode 100644 docu/search/all_f.js create mode 100644 docu/search/classes_0.js create mode 100644 docu/search/classes_1.js create mode 100644 docu/search/classes_2.js create mode 100644 docu/search/close.svg create mode 100644 docu/search/defines_0.js create mode 100644 docu/search/defines_1.js create mode 100644 docu/search/enums_0.js create mode 100644 docu/search/enums_1.js create mode 100644 docu/search/enums_2.js create mode 100644 docu/search/enums_3.js create mode 100644 docu/search/enums_4.js create mode 100644 docu/search/enums_5.js create mode 100644 docu/search/enumvalues_0.js create mode 100644 docu/search/enumvalues_1.js create mode 100644 docu/search/enumvalues_2.js create mode 100644 docu/search/enumvalues_3.js create mode 100644 docu/search/enumvalues_4.js create mode 100644 docu/search/enumvalues_5.js create mode 100644 docu/search/enumvalues_6.js create mode 100644 docu/search/enumvalues_7.js create mode 100644 docu/search/enumvalues_8.js create mode 100644 docu/search/enumvalues_9.js create mode 100644 docu/search/enumvalues_a.js create mode 100644 docu/search/enumvalues_b.js create mode 100644 docu/search/files_0.js create mode 100644 docu/search/files_1.js create mode 100644 docu/search/files_2.js create mode 100644 docu/search/files_3.js create mode 100644 docu/search/functions_0.js create mode 100644 docu/search/functions_1.js create mode 100644 docu/search/functions_2.js create mode 100644 docu/search/functions_3.js create mode 100644 docu/search/functions_4.js create mode 100644 docu/search/functions_5.js create mode 100644 docu/search/functions_6.js create mode 100644 docu/search/functions_7.js create mode 100644 docu/search/functions_8.js create mode 100644 docu/search/functions_9.js create mode 100644 docu/search/functions_a.js create mode 100644 docu/search/mag.svg create mode 100644 docu/search/mag_d.svg create mode 100644 docu/search/mag_sel.svg create mode 100644 docu/search/mag_seld.svg create mode 100644 docu/search/namespaces_0.js create mode 100644 docu/search/search.css create mode 100644 docu/search/search.js create mode 100644 docu/search/searchdata.js create mode 100644 docu/search/typedefs_0.js create mode 100644 docu/search/typedefs_1.js create mode 100644 docu/search/typedefs_2.js create mode 100644 docu/search/variables_0.js create mode 100644 docu/search/variables_1.js create mode 100644 docu/search/variables_2.js create mode 100644 docu/search/variables_3.js create mode 100644 docu/search/variables_4.js create mode 100644 docu/search/variables_5.js create mode 100644 docu/search/variables_6.js create mode 100644 docu/search/variables_7.js create mode 100644 docu/search/variables_8.js create mode 100644 docu/search/variables_9.js create mode 100644 docu/search/variables_a.js create mode 100644 docu/search/variables_b.js create mode 100644 docu/search/variables_c.js create mode 100644 docu/search/variables_d.js create mode 100644 docu/search/variables_e.js create mode 100644 docu/search/variables_f.js create mode 100644 docu/splitbar.png create mode 100644 docu/splitbard.png create mode 100644 docu/structLD2410Types_1_1ConfigData-members.html create mode 100644 docu/structLD2410Types_1_1ConfigData.html create mode 100644 docu/structLD2410Types_1_1ConfigData.js create mode 100644 docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.map create mode 100644 docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.md5 create mode 100644 docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.svg create mode 100644 docu/structLD2410Types_1_1DetectionData-members.html create mode 100644 docu/structLD2410Types_1_1DetectionData.html create mode 100644 docu/structLD2410Types_1_1DetectionData.js create mode 100644 docu/sync_off.png create mode 100644 docu/sync_on.png create mode 100644 docu/tab_a.png create mode 100644 docu/tab_ad.png create mode 100644 docu/tab_b.png create mode 100644 docu/tab_bd.png create mode 100644 docu/tab_h.png create mode 100644 docu/tab_hd.png create mode 100644 docu/tab_s.png create mode 100644 docu/tab_sd.png create mode 100644 docu/tabs.css diff --git a/docu/LD2410Async_8cpp.html b/docu/LD2410Async_8cpp.html new file mode 100644 index 0000000..f248cb8 --- /dev/null +++ b/docu/LD2410Async_8cpp.html @@ -0,0 +1,208 @@ + + + + + + + +LD2410Async: LD2410Async.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Async.cpp File Reference
+
+
+
#include "Arduino.h"
+#include "Ticker.h"
+#include "LD2410Async.h"
+#include "LD2410Defs.h"
+#include "LD2410Types.h"
+#include "LD2410CommandBuilder.h"
+
+Include dependency graph for LD2410Async.cpp:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + +

+Functions

bool bufferEndsWith (const byte *buffer, int iMax, const byte *pattern)
 Checks whther the last 4 bytes of a buffer match the value supplied in pattern.
 
String byte2hex (byte b, bool addZero=true)
 
+

Function Documentation

+ +

◆ bufferEndsWith()

+ +
+
+ + + + + + + + + + + + + + + + +
bool bufferEndsWith (const byte * buffer,
int iMax,
const byte * pattern )
+
+ +

Checks whther the last 4 bytes of a buffer match the value supplied in pattern.

+ +

Definition at line 17 of file LD2410Async.cpp.

+
18{
+
19 for (int j = 3; j >= 0; j--)
+
20 {
+
21 --iMax;
+
22 if (buffer[iMax] != pattern[j]) {
+
23 return false;
+
24 }
+
25 }
+
26 return true;
+
27}
+
+
+
+ +

◆ byte2hex()

+ +
+
+ + + + + + + + + + + +
String byte2hex (byte b,
bool addZero = true )
+
+ +

Definition at line 29 of file LD2410Async.cpp.

+
30{
+
31 String bStr(b, HEX);
+
32 bStr.toUpperCase();
+
33 if (addZero && (bStr.length() == 1))
+
34 return "0" + bStr;
+
35 return bStr;
+
36}
+
+
+
+
+
+ + + + diff --git a/docu/LD2410Async_8cpp.js b/docu/LD2410Async_8cpp.js new file mode 100644 index 0000000..ed55375 --- /dev/null +++ b/docu/LD2410Async_8cpp.js @@ -0,0 +1,5 @@ +var LD2410Async_8cpp = +[ + [ "bufferEndsWith", "LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e", null ], + [ "byte2hex", "LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d", null ] +]; \ No newline at end of file diff --git a/docu/LD2410Async_8cpp__incl.map b/docu/LD2410Async_8cpp__incl.map new file mode 100644 index 0000000..9a9da70 --- /dev/null +++ b/docu/LD2410Async_8cpp__incl.map @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docu/LD2410Async_8cpp__incl.md5 b/docu/LD2410Async_8cpp__incl.md5 new file mode 100644 index 0000000..325592e --- /dev/null +++ b/docu/LD2410Async_8cpp__incl.md5 @@ -0,0 +1 @@ +05a3a55d199e815863e851e47e65f0a0 \ No newline at end of file diff --git a/docu/LD2410Async_8cpp__incl.svg b/docu/LD2410Async_8cpp__incl.svg new file mode 100644 index 0000000..4090466 --- /dev/null +++ b/docu/LD2410Async_8cpp__incl.svg @@ -0,0 +1,255 @@ + + + + + + +LD2410Async.cpp + + +Node1 + + +LD2410Async.cpp + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +Ticker.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410Async.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +LD2410Types.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +LD2410Defs.h + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +LD2410CommandBuilder.h + + + + + +Node1->Node8 + + + + + + + + +Node4->Node2 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5 + + +LD2410Debug.h + + + + + +Node4->Node5 + + + + + + + + +Node4->Node6 + + + + + + + + +Node4->Node7 + + + + + + + + +Node5->Node2 + + + + + + + + +Node6->Node2 + + + + + + + + +Node7->Node2 + + + + + + + + +Node7->Node4 + + + + + + + + +Node8->Node2 + + + + + + + + +Node8->Node4 + + + + + + + + +Node8->Node6 + + + + + + + + +Node8->Node7 + + + + + + + + diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html new file mode 100644 index 0000000..ae0a814 --- /dev/null +++ b/docu/LD2410Async_8cpp_source.html @@ -0,0 +1,2006 @@ + + + + + + + +LD2410Async: LD2410Async.cpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Async.cpp
+
+
+Go to the documentation of this file.
1#include "Arduino.h"
+
2#include "Ticker.h"
+
3#include "LD2410Async.h"
+
4#include "LD2410Defs.h"
+
5#include "LD2410Types.h"
+ +
7
+
8
+
9
+
10/******************************************************************************************
+
11* Utility methods
+
12******************************************************************************************/
+
13
+
14/**
+
15* @brief Checks whther the last 4 bytes of a buffer match the value supplied in pattern
+
16*/
+
+
17bool bufferEndsWith(const byte* buffer, int iMax, const byte* pattern)
+
18{
+
19 for (int j = 3; j >= 0; j--)
+
20 {
+
21 --iMax;
+
22 if (buffer[iMax] != pattern[j]) {
+
23 return false;
+
24 }
+
25 }
+
26 return true;
+
27}
+
+
28
+
+
29String byte2hex(byte b, bool addZero = true)
+
30{
+
31 String bStr(b, HEX);
+
32 bStr.toUpperCase();
+
33 if (addZero && (bStr.length() == 1))
+
34 return "0" + bStr;
+
35 return bStr;
+
36}
+
+
37
+
38
+
39
+
40
+
41/******************************************************************************************
+
42* Read frame methods
+
43******************************************************************************************/
+
44bool LD2410Async::readFramePayloadSize(byte b, ReadFrameState nextReadFrameState) {
+
45 receiveBuffer[receiveBufferIndex++] = b;
+
46 if (receiveBufferIndex >= 2) {
+
47 payloadSize = receiveBuffer[0] | (receiveBuffer[1] << 8);
+
48 if (payloadSize <= 0 || payloadSize > sizeof(receiveBuffer) - 4) {
+
49 //Serial.print("Invalid payload size read: ");
+
50 //Serial.print(payloadSize);
+
51 //Serial.print(" ");
+
52 //printBuf(receiveBuffer, 2);
+
53
+
54 //Invalid payload size, wait for header.
+
55 readFrameState = ReadFrameState::WAITING_FOR_HEADER;
+
56 }
+
57 else {
+
58
+
59 //Serial.print("Payloadsize read: ");
+
60 //Serial.print(payloadSize);
+
61 //Serial.print(" ");
+
62 //printBuf(receiveBuffer, 2);
+
63
+
64
+
65 receiveBufferIndex = 0;
+
66 readFrameState = nextReadFrameState;
+
67 }
+
68 return true;
+
69 }
+
70 return false;
+
71}
+
72
+
73LD2410Async::FrameReadResponse LD2410Async::readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType) {
+
74 receiveBuffer[receiveBufferIndex++] = b;
+
75
+
76 //Add 4 for the tail bytes
+
77 if (receiveBufferIndex >= payloadSize + 4) {
+
78
+
79 readFrameState = ReadFrameState::WAITING_FOR_HEADER;
+
80
+
81 if (bufferEndsWith(receiveBuffer, receiveBufferIndex, tailPattern)) {
+
82 //Serial.println("Payload read: ");
+
83 //printBuf(receiveBuffer, receiveBufferIndex);
+
84
+
85 return succesResponseType;
+
86 }
+
87 else {
+
88 //Serial.print(" Invalid frame end: ");
+
89 //printBuf(receiveBuffer, receiveBufferIndex);
+
90
+
91 }
+
92
+
93 }
+
94 return FAIL;
+
95};
+
96
+
97LD2410Async::FrameReadResponse LD2410Async::readFrame()
+
98{
+
99 while (sensor->available()) {
+
100 byte b = sensor->read();
+
101
+
102 switch (readFrameState) {
+
103 case WAITING_FOR_HEADER:
+
104 if (b == LD2410Defs::headData[0]) {
+
105 readFrameHeaderIndex = 1;
+
106 readFrameState = DATA_HEADER;
+
107
+
108 }
+
109 else if (b == LD2410Defs::headConfig[0]) {
+
110 readFrameHeaderIndex = 1;
+
111 readFrameState = ACK_HEADER;
+
112
+
113 }
+
114 break;
+
115
+
116 case DATA_HEADER:
+
117 if (b == LD2410Defs::headData[readFrameHeaderIndex]) {
+
118 readFrameHeaderIndex++;
+
119
+
120 if (readFrameHeaderIndex == sizeof(LD2410Defs::headData)) {
+
121 receiveBufferIndex = 0;
+
122 readFrameState = READ_DATA_SIZE;
+
123 }
+
124 }
+
125 else if (b == LD2410Defs::headData[0]) {
+
126 // fallback: this byte might be the start of a new header
+
127 readFrameHeaderIndex = 1;
+
128
+
129 // stay in DATA_HEADER
+
130 }
+
131 else if (b == LD2410Defs::headConfig[0]) {
+
132 // possible start of config header
+
133 readFrameHeaderIndex = 1;
+
134 readFrameState = ACK_HEADER;
+
135
+
136 }
+
137 else {
+
138 // not a header at all
+
139 readFrameState = WAITING_FOR_HEADER;
+
140 readFrameHeaderIndex = 0;
+
141
+
142 }
+
143 break;
+
144
+
145 case ACK_HEADER:
+
146 if (b == LD2410Defs::headConfig[readFrameHeaderIndex]) {
+
147 readFrameHeaderIndex++;
+
148
+
149 if (readFrameHeaderIndex == sizeof(LD2410Defs::headConfig)) {
+
150 receiveBufferIndex = 0;
+
151 readFrameState = READ_ACK_SIZE;
+
152 }
+
153 }
+
154 else if (b == LD2410Defs::headConfig[0]) {
+
155 readFrameHeaderIndex = 1;
+
156 // stay in ACK_HEADER
+
157
+
158 }
+
159 else if (b == LD2410Defs::headData[0]) {
+
160 // maybe start of data header
+
161 readFrameHeaderIndex = 1;
+
162 readFrameState = DATA_HEADER;
+
163
+
164 }
+
165 else {
+
166 readFrameState = WAITING_FOR_HEADER;
+
167 readFrameHeaderIndex = 0;
+
168
+
169
+
170 }
+
171 break;
+
172
+
173 case READ_ACK_SIZE:
+
174 readFramePayloadSize(b, READ_ACK_PAYLOAD);
+
175 break;
+
176
+
177 case READ_DATA_SIZE:
+
178 readFramePayloadSize(b, READ_DATA_PAYLOAD);
+
179 break;
+
180
+
181 case READ_ACK_PAYLOAD:
+
182 return readFramePayload(b, LD2410Defs::tailConfig, ACK);
+
183
+
184 case READ_DATA_PAYLOAD:
+
185 return readFramePayload(b, LD2410Defs::tailData, DATA);
+
186
+
187 default:
+
188 readFrameState = WAITING_FOR_HEADER;
+
189 readFrameHeaderIndex = 0;
+
190 break;
+
191 }
+
192 }
+
193
+
194 return FAIL; // not enough bytes yet
+
195}
+
196
+
197
+
198/******************************************************************************************
+
199* Generic Callbacks
+
200******************************************************************************************/
+
+
201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
+
202 detectionDataCallback = callback;
+
203 detectionDataCallbackUserData = userData;
+
204}
+
+
205
+
+
206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
+
207
+
208 configUpdateReceivedReceivedCallbackUserData = userData;
+
209 configUpdateReceivedReceivedCallback = callback;
+
210}
+
+
211
+
+
212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
+
213 configChangedCallbackUserData = userData;
+
214 configChangedCallback = callback;
+
215}
+
+
216
+
217
+
218
+
219void LD2410Async::executeConfigUpdateReceivedCallback() {
+
220
+
221 if (configUpdateReceivedReceivedCallback) {
+
222 configUpdateReceivedReceivedCallback(this, configUpdateReceivedReceivedCallbackUserData);
+
223 }
+
224
+
225}
+
226
+
227void LD2410Async::executeConfigChangedCallback() {
+
228
+
229 if (configChangedCallback) {
+
230 configChangedCallback(this, configChangedCallbackUserData);
+
231 }
+
232}
+
233/******************************************************************************************
+
234* Process received data
+
235******************************************************************************************/
+
236bool LD2410Async::processAck()
+
237{
+ +
239 DEBUG_PRINTBUF(receiveBuffer, receiveBufferIndex)
+
240
+
241 heartbeat();
+
242
+
243 byte command = receiveBuffer[0];
+
244 byte success = receiveBuffer[1];
+
245
+
246 if (!success) {
+ +
248 DEBUG_PRINT("FAIL for command: ");
+
249 DEBUG_PRINTLN(byte2hex(command));
+
250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
+
251 return false;
+
252 };
+
253
+
254
+
255 switch (command)
+
256 {
+
257 case LD2410Defs::configEnableCommand: // entered config mode
+
258 configModeEnabled = true;
+
259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
+
260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
+ +
262 DEBUG_PRINTLN("ACK for config mode enable received");
+
263 break;
+
264 case LD2410Defs::configDisableCommand: // exited config mode
+
265 configModeEnabled = false;
+ +
267 DEBUG_PRINTLN("ACK for config mode disable received");
+
268 break;
+ +
270 DEBUG_PRINTLN("ACK for maxGateCommand received");
+
271 executeConfigChangedCallback();
+
272 break;
+ + + +
276 DEBUG_PRINTLN("ACK for engineeringModeEnableComand received");
+
277 break;
+ + + +
281 DEBUG_PRINTLN("ACK for engineeringModeDisableComand received");
+
282 break;
+ + +
285 DEBUG_PRINTLN("ACK for setBaudRateCommand received");
+
286 break;
+ + +
289 DEBUG_PRINTLN("ACK for restoreFactorySettingsAsyncCommand received");
+
290 executeConfigChangedCallback();
+
291 break;
+ + +
294 configModeEnabled = false;
+ +
296 DEBUG_PRINTLN("ACK for rebootCommand received");
+
297 break;
+ + +
300 DEBUG_PRINTLN("ACK for bluetoothSettingsCommand received");
+
301 break;
+ +
303 //This command is only relevant for bluetooth connection, but the sensor might send an ack for it at some point.
+ +
305 DEBUG_PRINTLN("ACK for getBluetoothPermissionsCommand received");
+
306 break;
+ + +
309 DEBUG_PRINTLN("ACK for setBluetoothPasswordCommand received");
+
310 break;
+ + +
313 DEBUG_PRINTLN("ACK for setDistanceResolutionCommand received");
+
314 executeConfigChangedCallback();
+
315 break;
+ +
317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
+ +
319 DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received");
+
320 executeConfigUpdateReceivedCallback();
+
321 break;
+ + +
324 DEBUG_PRINTLN("ACK for setAuxControlSettingsCommand received");
+
325 executeConfigChangedCallback();
+
326 break;
+ +
328 for (int i = 0; i < 6; i++) {
+
329 mac[i] = receiveBuffer[i + 4];
+
330 };
+ +
332 + ":" + byte2hex(mac[1])
+
333 + ":" + byte2hex(mac[2])
+
334 + ":" + byte2hex(mac[3])
+
335 + ":" + byte2hex(mac[4])
+
336 + ":" + byte2hex(mac[5]);
+ +
338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
+
339 break;
+ +
341 firmware = byte2hex(receiveBuffer[7], false)
+
342 + "." + byte2hex(receiveBuffer[6])
+
343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
+ +
345 DEBUG_PRINTLN("ACK for requestFirmwareAsyncCommand received");
+
346 break;
+
347
+ +
349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
+
350 configData.lightThreshold = receiveBuffer[5];
+
351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
+ +
353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
+
354 executeConfigUpdateReceivedCallback();
+
355 break;
+ + +
358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
+
359 break;
+ +
361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
+ +
363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
+
364 break;
+
365 case LD2410Defs::requestParamsCommand: // Query parameters
+
366 configData.numberOfGates = receiveBuffer[5];
+
367 configData.maxMotionDistanceGate = receiveBuffer[6];
+
368 configData.maxStationaryDistanceGate = receiveBuffer[7];
+
369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
+
370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
+
371 for (byte i = 0; i <= configData.numberOfGates; i++)
+
372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
+
373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
+ +
375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
+
376 executeConfigUpdateReceivedCallback();
+
377 break;
+ + +
380 DEBUG_PRINTLN("ACK for distanceGateSensitivityConfigCommand received");
+
381 executeConfigChangedCallback();
+
382 break;
+
383 default:
+ +
385 DEBUG_PRINT("ACK for unknown command received. Command code: ");
+
386 DEBUG_PRINTLN(byte2hex(command));
+
387 break;
+
388 };
+
389
+
390 if (command != 0) {
+
391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
+
392 }
+
393
+
394
+
395 return (true);
+
396}
+
397
+
398bool LD2410Async::processData()
+
399{
+
400 DEBUG_PRINTBUF_DATA(receiveBuffer, receiveBufferIndex)
+
401
+
402 heartbeat();
+
403
+
404
+
405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
+
406 {
+
407 configModeEnabled = false;
+
408
+
409 detectionData.timestamp = millis();
+
410 //Basic data
+
411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
+
412 switch (detectionData.targetState) {
+ + + + +
417 break;
+
418
+ + + + +
423 break;
+
424
+ + + + +
429 break;
+
430 default:
+ + + +
434 break;
+
435 }
+
436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
+
437 detectionData.movingTargetSignal = receiveBuffer[5];
+
438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
+
439 detectionData.stationaryTargetSignal = receiveBuffer[8];
+
440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
+
441 detectionData.engineeringMode = receiveBuffer[0] == 1;
+
442
+ +
444
+ +
446 { // Engineering mode data
+
447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
+ +
449
+
450
+
451 int index = 13;
+
452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
+
453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
+
454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
+
455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
+
456
+ + +
459 if (index < payloadSize) {
+
460 detectionData.lightLevel = receiveBuffer[index++];
+
461 if (index < payloadSize) {
+
462 detectionData.outPinStatus = receiveBuffer[index++];
+
463 }
+
464 }
+
465 }
+
466 else
+
467 { // Clear engineering mode data
+ + + + +
472 }
+
473
+
474 if (detectionDataCallback != nullptr) {
+
475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
+
476 };
+
477 DEBUG_PRINTLN_DATA("DATA received");
+
478 return true;
+
479 }
+
480 DEBUG_PRINTLN_DATA("DATA invalid");
+
481 return false;
+
482}
+
483
+
484
+
485
+
486
+
487
+
488
+
489/******************************************************************************************
+
490* Send command
+
491******************************************************************************************/
+
492void LD2410Async::sendCommand(const byte* command) {
+
493 byte size = command[0] + 2;
+
494
+
495
+
496
+
497 sensor->write(LD2410Defs::headConfig, 4);
+
498 sensor->write(command, size);
+
499 sensor->write(LD2410Defs::tailConfig, 4);
+
500
+
501 heartbeat();
+
502}
+
503
+
504/**********************************************************************************
+
505* Send async command methods
+
506***********************************************************************************/
+
507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
+
508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
+
509
+ +
511 DEBUG_PRINT("Async command duration ms: ");
+
512 DEBUG_PRINTLN(millis() - asyncCommandStartMs);
+
513
+
514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
+
515 vTaskSuspendAll();
+
516 AsyncCommandCallback cb = asyncCommandCallback;
+
517 byte userData = asyncCommandCallbackUserData;
+
518 asyncCommandCallback = nullptr;
+
519 asyncCommandCallbackUserData = 0;
+
520 asyncCommandStartMs = 0;
+
521 asyncCommandCommandCode = 0;
+
522 asyncCommandActive = false;
+
523 xTaskResumeAll();
+
524
+
525 if (cb != nullptr) {
+
526 cb(this, result, userData);
+
527 }
+
528 }
+
529}
+
530
+
531
+
532
+
533
+
+ +
535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
+
536}
+
+
537
+
538void LD2410Async::handleAsyncCommandCallbackTimeout() {
+
539
+
540 if (asyncCommandActive && asyncCommandStartMs != 0) {
+
541 if (millis() - asyncCommandStartMs > asyncCommandTimeoutMs) {
+ +
543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
+
544 DEBUG_PRINT(asyncCommandStartMs);
+
545 DEBUG_PRINTLN(". Execute callback with timeout result.");
+
546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
+
547 }
+
548 }
+
549}
+
550
+
551
+
552
+
553
+
554
+
555bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData)
+
556{
+
557 vTaskSuspendAll();
+
558
+
559 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
+
560 if (!asyncCommandActive) {
+
561
+
562
+
563 //Register data for callback
+
564 asyncCommandActive = true;
+
565 asyncCommandCallback = callback;
+
566 asyncCommandCallbackUserData = userData;
+
567 asyncCommandStartMs = millis();
+
568 asyncCommandCommandCode = command[2];
+
569 xTaskResumeAll();
+
570
+
571 sendCommand(command);
+ +
573 DEBUG_PRINT("Async command ");
+
574 DEBUG_PRINT(byte2hex(command[2]));
+
575 DEBUG_PRINTLN(" sent");
+
576
+
577 return true;
+
578 }
+
579 else {
+
580 xTaskResumeAll();
+ +
582 DEBUG_PRINT("Error! Async command is pending- Did not send async command ");
+
583 DEBUG_PRINTLN(byte2hex(command[2]));
+
584
+
585 return false;
+
586 }
+
587
+
588
+
589}
+
590/**********************************************************************************
+
591* Async command busy
+
592***********************************************************************************/
+
593
+
+ +
595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
+
596}
+
+
597
+
598/**********************************************************************************
+
599* Send async config command methods
+
600***********************************************************************************/
+
601
+
602
+
603bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData) {
+
604 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
+
605 if (asyncCommandActive || executeCommandSequenceActive) return false;
+
606
+
607 // Reset sequence buffer
+
608 if (!resetCommandSequence()) return false;;
+
609
+
610 // Add the single command
+
611 if (!addCommandToSequence(command)) return false;
+
612
+
613 // Execute as a sequence (with just one command)
+
614 return executeCommandSequenceAsync(callback, userData);
+
615}
+
616
+
617/**********************************************************************************
+
618* Async command sequence methods
+
619***********************************************************************************/
+
620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
+
621 if (executeCommandSequenceActive) {
+
622
+ +
624 DEBUG_PRINT("Command sequence duration ms: ");
+
625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
+
626
+
627 vTaskSuspendAll();
+
628 AsyncCommandCallback cb = executeCommandSequenceCallback;
+
629 byte userData = executeCommandSequenceUserData;
+
630 executeCommandSequenceCallback = nullptr;
+
631 executeCommandSequenceUserData = 0;
+
632 executeCommandSequenceActive = false;
+
633 xTaskResumeAll();
+
634
+
635 if (cb != nullptr) {
+
636 cb(this, result, userData);
+
637 }
+
638 }
+
639}
+
640
+
641
+
642// Callback after disabling config mode at the end of sequence
+
643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
644
+
645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
+
646
+ + +
649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
+
650 DEBUG_PRINTLN(result);
+
651 sequenceResult = result; // report disable failure if it happened
+
652 }
+
653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
+
654}
+
655
+
656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
+
657 if (!executeCommandSequenceInitialConfigModeState) {
+
658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
+
659 }
+
660 else {
+
661 executeCommandSequenceAsyncExecuteCallback(result);
+
662 }
+
663}
+
664
+
665
+
666// Called when a single command in the sequence completes
+
667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+ +
669 // Abort sequence if a command fails
+ +
671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
+
672 sender->executeCommandSequenceAsyncFinalize(result);
+
673
+
674 return;
+
675 };
+
676
+
677 // Move to next command
+
678 sender->executeCommandSequenceIndex++;
+
679
+
680 if (sender->executeCommandSequenceIndex < sender->commandSequenceBufferCount) {
+
681 // Send next command
+
682 sender->sendCommandAsync(
+
683 sender->commandSequenceBuffer[sender->executeCommandSequenceIndex],
+
684 executeCommandSequenceAsyncCommandCallback,
+
685 0
+
686 );
+
687 }
+
688 else {
+
689 // Sequence finished successfully
+
690
+
691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
+
692 }
+
693}
+
694
+
695
+
696
+
697bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData) {
+
698 if (asyncCommandActive || executeCommandSequenceActive) return false;
+
699 if (commandSequenceBufferCount == 0) return true; // nothing to send
+
700
+ +
702 DEBUG_PRINT("Starting command sequence execution. Number of commands: ");
+
703 DEBUG_PRINTLN(commandSequenceBufferCount);
+
704
+
705 executeCommandSequenceActive = true;
+
706 executeCommandSequenceCallback = callback;
+
707 executeCommandSequenceUserData = userData;
+
708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
+
709 executeCommandSequenceStartMs = millis();
+
710
+
711 if (commandSequenceBufferCount == 0) {
+
712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
+
713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
+
714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
+
715 });
+
716 return true;
+
717
+
718 }
+
719
+
720 if (!configModeEnabled) {
+
721 // Need to enable config mode first
+
722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
+
723 executeCommandSequenceIndex = -1;
+
724 return sendCommandAsync(LD2410Defs::configEnableCommandData, executeCommandSequenceAsyncCommandCallback, 0);
+
725 }
+
726 else {
+
727 // Already in config mode, start directly.
+
728 // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires.
+
729 executeCommandSequenceIndex = 0;
+
730 return sendCommandAsync(commandSequenceBuffer[executeCommandSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0);
+
731 }
+
732
+
733}
+
734
+
735bool LD2410Async::addCommandToSequence(const byte* command) {
+
736 if (asyncCommandActive || executeCommandSequenceActive) return false;
+
737
+
738 if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE_LENGTH) {
+ +
740 DEBUG_PRINTLN("Error: Command sequence buffer full.");
+
741 return false;
+
742 };
+
743 // First byte of the command is the payload length
+
744 uint8_t len = command[0];
+
745 uint8_t totalLen = len + 2; // payload + 2 length bytes
+
746
+
747 if (totalLen > LD2410Defs::LD2410_Buffer_Size) {
+ +
749 DEBUG_PRINTLN("Error: Command too long for command sequence buffer.");
+
750 return false; // safety
+
751 }
+
752 memcpy(commandSequenceBuffer[commandSequenceBufferCount],
+
753 command,
+
754 totalLen);
+
755
+
756 commandSequenceBufferCount++;
+ +
758 DEBUG_PRINT("Command added to sequence. Count: ");
+
759 DEBUG_PRINTLN(commandSequenceBufferCount);
+
760
+
761 return true;
+
762}
+
763
+
764
+
765bool LD2410Async::resetCommandSequence() {
+
766 if (asyncCommandActive || executeCommandSequenceActive) return false;
+
767
+
768 commandSequenceBufferCount = 0;
+ +
770 DEBUG_PRINTLN("Command sequence reset done.");
+
771
+
772 return true;
+
773}
+
774
+
775/**********************************************************************************
+
776* Config mode commands
+
777***********************************************************************************/
+
778//Config mode command have a internal version which does not check for busy and can therefore be used within other command implementations
+
779
+
780bool LD2410Async::enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
+ +
782 DEBUG_PRINTLN("Enable Config Mode");
+
783 return sendCommandAsync(LD2410Defs::configEnableCommandData, callback, userData);
+
784}
+
785
+
+
786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
+
787 if (asyncIsBusy()) return false;
+
788 return enableConfigModeInternalAsync(callback, userData);
+
789}
+
+
790
+
791bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
+ +
793 DEBUG_PRINTLN("Disable Config Mode");
+
794 return sendCommandAsync(LD2410Defs::configDisableCommandData, callback, userData);
+
795}
+
796
+
+
797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
+
798 if (asyncIsBusy()) return false;
+
799 return disableConfigModeInternalAsync(callback, userData);
+
800}
+
+
801
+
802/**********************************************************************************
+
803* Native LD2410 commands to control, configure and query the sensor
+
804***********************************************************************************/
+
805// All these commands need to be executed in config mode.
+
806// The code takes care of that. Enables/disable config mode if necessary,
+
807// but also keeps config mode active if it was already active before the command
+
+
808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
+
809 unsigned short noOneTimeout,
+
810 AsyncCommandCallback callback, byte userData)
+
811{
+ +
813 DEBUG_PRINTLN("Set Max Gate");
+
814 if (asyncIsBusy()) return false;
+
815
+
816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
+
817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
+
818 return sendConfigCommandAsync(cmd, callback, userData);
+
819 }
+
820 return false;
+
821}
+
+
822
+
823
+
+
824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
+ +
826 DEBUG_PRINTLN("Request Gate Parameters");
+
827 if (asyncIsBusy()) return false;
+
828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
+
829}
+
+
830
+
+
831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
+ +
833 DEBUG_PRINTLN("Enable EngineeringMode");
+
834 if (asyncIsBusy()) return false;
+
835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
+
836}
+
+
837
+
+
838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
+ +
840 DEBUG_PRINTLN("Disable EngineeringMode");
+
841 if (asyncIsBusy()) return false;
+
842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
+
843}
+
+
844
+
+
845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
+
846 const byte stationaryThresholds[9],
+
847 AsyncCommandCallback callback, byte userData)
+
848{
+ +
850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
+
851
+
852 if (asyncIsBusy()) return false;
+
853
+
854 if (!resetCommandSequence()) return false;
+
855
+
856 for (byte gate = 0; gate < 9; gate++) {
+ +
858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
+
859 if (!addCommandToSequence(cmd)) return false;
+
860 }
+
861
+
862 return executeCommandSequenceAsync(callback, userData);
+
863}
+
+
864
+
865
+
866
+
+
867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
+
868 byte stationaryThreshold,
+
869 AsyncCommandCallback callback, byte userData)
+
870{
+ +
872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
+
873
+
874 if (asyncIsBusy()) return false;
+
875
+ +
877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
+
878
+
879 return sendConfigCommandAsync(cmd, callback, userData);
+
880}
+
+
881
+
882
+
883
+
+
884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
+ +
886 DEBUG_PRINTLN("Request Firmware");
+
887
+
888 if (asyncIsBusy()) return false;
+
889
+
890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
+
891}
+
+
892
+
893
+
+
894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
+
895 AsyncCommandCallback callback, byte userData)
+
896{
+ +
898 DEBUG_PRINTLN("Set Baud Rate");
+
899
+
900 if (asyncIsBusy()) return false;
+
901
+
902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
+
903 return false;
+
904
+
905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
+
906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
+
907
+
908 return sendConfigCommandAsync(cmd, callback, userData);
+
909}
+
+
910
+
911
+
912
+
+
913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
+
914
+
915 if (asyncIsBusy()) return false;
+
916
+
917 return configureBaudRateAsync((byte)baudRate, callback, userData);
+
918}
+
+
919
+
920
+
+
921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
+ +
923 DEBUG_PRINTLN("Restore Factory Settings");
+
924
+
925 if (asyncIsBusy()) return false;
+
926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
+
927}
+
+
928
+
929
+
930
+
+
931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
+ +
933 DEBUG_PRINTLN("Enable Bluetooth");
+
934 if (asyncIsBusy()) return false;
+
935
+
936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
+
937}
+
+
938
+
+
939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
+ +
941 DEBUG_PRINTLN("Disable Bluetooth");
+
942 if (asyncIsBusy()) return false;
+
943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
+
944}
+
+
945
+
946
+
+
947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
+ +
949 DEBUG_PRINTLN("Request Mac Address");
+
950 if (asyncIsBusy()) return false;
+
951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
+
952}
+
+
953
+
+ +
955 AsyncCommandCallback callback, byte userData)
+
956{
+ +
958 DEBUG_PRINTLN("Set Bluetooth Password");
+
959 if (asyncIsBusy()) return false;
+
960
+ +
962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
+
963
+
964 return sendConfigCommandAsync(cmd, callback, userData);
+
965}
+
+
966
+
967
+
968
+
+
969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
+
970
+
971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
+
972}
+
+
973
+
974
+
+
975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
+ +
977 DEBUG_PRINTLN("Reset Bluetooth Password");
+
978 if (asyncIsBusy()) return false;
+
979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
+
980}
+
+
981
+
+
982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
+ +
984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
+
985 if (asyncIsBusy()) return false;
+
986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
+
987};
+
+
988
+
+ +
990 AsyncCommandCallback callback, byte userData)
+
991{
+ +
993 DEBUG_PRINTLN("Set Distance Resolution");
+
994 if (asyncIsBusy()) return false;
+
995
+
996 byte cmd[6];
+
997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
+
998
+
999 return sendConfigCommandAsync(cmd, callback, userData);
+
1000}
+
+
1001
+
+
1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
+ +
1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
+
1005 if (asyncIsBusy()) return false;
+
1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
+
1007};
+
+
1008
+
+
1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
+ +
1011 DEBUG_PRINTLN("Request Distance Resolution cm");
+
1012 if (asyncIsBusy()) return false;
+
1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
+
1014}
+
+
1015
+
+ +
1017 LD2410Types::OutputControl outputControl,
+
1018 AsyncCommandCallback callback, byte userData)
+
1019{
+ +
1021 DEBUG_PRINTLN("Set Aux Control Settings");
+
1022 if (asyncIsBusy()) return false;
+
1023
+ +
1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
+
1026
+
1027 return sendConfigCommandAsync(cmd, callback, userData);
+
1028}
+
+
1029
+
1030
+
1031
+
+
1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
+ +
1034 DEBUG_PRINTLN("Request Aux Control Settings");
+
1035
+
1036 if (asyncIsBusy()) return false;
+
1037
+
1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
+
1039}
+
+
1040
+
1041
+
+
1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
+ +
1044 DEBUG_PRINTLN("Begin auto config");
+
1045
+
1046 if (asyncIsBusy()) return false;
+
1047
+
1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
+
1049};
+
+
1050
+
+
1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
+ +
1053 DEBUG_PRINTLN("Reqtest auto config status");
+
1054
+
1055 if (asyncIsBusy()) return false;
+
1056
+
1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
+
1058}
+
+
1059/**********************************************************************************
+
1060* High level commands that combine several native commands
+
1061***********************************************************************************/
+
1062// It is recommend to always use these commands if feasible,
+
1063// since they streamline the inconsistencies in the native requesr and config commands
+
1064// and reduce the total number of commands that have to be called.
+
1065
+
1066
+
+
1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
+ +
1069 DEBUG_PRINTLN("Request all static data");
+
1070
+
1071 if (asyncIsBusy()) return false;
+
1072
+
1073
+
1074 if (!resetCommandSequence()) return false;
+
1075
+
1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
+
1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
+
1078
+
1079 return executeCommandSequenceAsync(callback, userData);
+
1080}
+
+
1081
+
+
1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
+ +
1084 DEBUG_PRINTLN("Request all config data");
+
1085
+
1086 if (asyncIsBusy()) return false;
+
1087
+
1088 if (!resetCommandSequence()) return false;
+
1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
+
1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
+
1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
+
1092
+
1093 return executeCommandSequenceAsync(callback, userData);
+
1094
+
1095}
+
+
1096// ----------------------------------------------------------------------------------
+
1097// - Set config data async methods
+
1098// ----------------------------------------------------------------------------------
+
1099// The command to set all config values on the sensor is the most complex command internally.
+
1100// It uses a first command sequences to get the current sensor config, then checks what
+
1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
+
1102
+
1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
+
1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
+
1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
+
1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
+
1107 configureAllConfigSettingsAsyncConfigActive = false;
+
1108
+ +
1110 DEBUG_PRINT("SetConfigDataAsync complete. Result: ");
+
1111 DEBUG_PRINTLN(result);
+
1112
+
1113 if (cb) {
+
1114 cb(this, result, userData);
+
1115 }
+
1116
+
1117}
+
1118
+
1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+ + +
1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
+
1123 DEBUG_PRINTLN(result);
+
1124 sender->configureAllConfigSettingsAsyncExecuteCallback(result);
+
1125 }
+
1126 else {
+
1127 // Config mode disabled successfully
+
1128 sender->configureAllConfigSettingsAsyncExecuteCallback(sender->configureAllConfigSettingsAsyncResultToReport);
+
1129 }
+
1130}
+
1131
+
1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
+
1133
+
1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
+
1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
+
1136
+
1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
+ +
1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
+
1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
+
1141 }
+
1142 }
+
1143 else {
+
1144 configureAllConfigSettingsAsyncExecuteCallback(resultToReport);
+
1145 }
+
1146}
+
1147
+
1148
+
1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
1150 if (AsyncCommandResult::SUCCESS != result) {
+ +
1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
+
1153 };
+
1154 //Pass result to finalize method, which will also disable config mode if needed
+
1155 sender->configureAllConfigSettingsAsyncFinalize(result);
+
1156}
+
1157
+
1158
+
1159bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() {
+
1160 //Get a clone of the current config, so it does not get changed while we are working
+ +
1162
+
1163 if (!resetCommandSequence()) {
+ +
1165 DEBUG_PRINTLN("Error: Could not reset command sequence.");
+
1166 return false;
+
1167 };
+
1168 // 1. Max gate + no one timeout
+
1169 if (configureAllConfigSettingsAsyncWriteFullConfig
+
1170 || currentConfig.maxMotionDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate
+
1171 || currentConfig.maxStationaryDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate
+
1172 || currentConfig.noOneTimeout != configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout) {
+
1173 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
+ +
1175 configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate,
+
1176 configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate,
+
1177 configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout)) {
+ +
1179 DEBUG_PRINTLN("Error: Building max gate command failed.");
+
1180 return false;
+
1181 };
+
1182 if (!addCommandToSequence(cmd)) {
+ +
1184 DEBUG_PRINTLN("Error: Adding max gate command to sequence failed.");
+
1185 return false;
+
1186 };
+ +
1188 DEBUG_PRINTLN("Max gate command added to sequence.");
+
1189 }
+
1190 // 2. Gate sensitivities (sequence of commands)
+
1191 for (byte gate = 0; gate < 9; gate++) {
+
1192 if (configureAllConfigSettingsAsyncWriteFullConfig
+
1193 || currentConfig.distanceGateMotionSensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate]
+
1194 || currentConfig.distanceGateStationarySensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) {
+ + +
1197 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate],
+
1198 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) {
+ +
1200 DEBUG_PRINT("Error: Error building gate sensitivity command for gate ");
+
1201 DEBUG_PRINTLN(gate);
+
1202
+
1203 return false;
+
1204 };
+
1205 if (!addCommandToSequence(cmd)) {
+ +
1207 DEBUG_PRINT("Error: Adding gate sensitivity command for gate ");
+
1208 DEBUG_PRINT(gate);
+
1209 DEBUG_PRINTLN(" to sequence failed.");
+
1210
+
1211 return false;
+
1212 }
+ +
1214 DEBUG_PRINT("Gate sensitivity command for gate ");
+
1215 DEBUG_PRINT(gate);
+
1216 DEBUG_PRINTLN(" added to sequence.");
+
1217 }
+
1218 }
+
1219
+
1220 //3. Distance resolution
+
1221 if (configureAllConfigSettingsAsyncWriteFullConfig
+
1222 || currentConfig.distanceResolution != configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution) {
+
1223 byte cmd[6]; // resolution commands are 6 bytes long
+
1224 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution)) {
+ +
1226 DEBUG_PRINTLN("Error: Building distance resolution command failed.");
+
1227 return false;
+
1228 };
+
1229 if (!addCommandToSequence(cmd)) {
+ +
1231 DEBUG_PRINTLN("Error: Adding distance resolution command to sequence failed.");
+
1232 return false;
+
1233 };
+ +
1235 DEBUG_PRINTLN("Distance resolution command added to sequence.");
+
1236 };
+
1237
+
1238 //4. Aux control settings
+
1239 if (configureAllConfigSettingsAsyncWriteFullConfig
+
1240 || currentConfig.lightControl != configureAllConfigSettingsAsyncConfigDataToWrite.lightControl
+
1241 || currentConfig.lightThreshold != configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold
+
1242 || currentConfig.outputControl != configureAllConfigSettingsAsyncConfigDataToWrite.outputControl) {
+ + +
1245 configureAllConfigSettingsAsyncConfigDataToWrite.lightControl,
+
1246 configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold,
+
1247 configureAllConfigSettingsAsyncConfigDataToWrite.outputControl)) {
+ +
1249 DEBUG_PRINTLN("Error: Building aux control command failed.");
+
1250 return false;
+
1251 };
+
1252 if (!addCommandToSequence(cmd)) {
+ +
1254 DEBUG_PRINTLN("Error: Adding aux control command to sequence failed.");
+
1255 return false;
+
1256 };
+ +
1258 DEBUG_PRINTLN("Aux control command added to sequence.");
+
1259 };
+
1260 return true;
+
1261};
+
1262
+
1263bool LD2410Async::configureAllConfigSettingsAsyncWriteConfig() {
+
1264
+
1265 if (!configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence()) {
+
1266 //Could not build command sequence
+
1267 return false;
+
1268 }
+
1269
+
1270 if (commandSequenceBufferCount == 0) {
+ +
1272 DEBUG_PRINTLN("No config changes detected, not need to write anything");
+
1273 }
+
1274
+
1275 if (!executeCommandSequenceAsync(configureAllConfigSettingsAsyncWriteConfigCallback, 0)) {
+ +
1277 DEBUG_PRINTLN("Error: Starting command sequence to write config data failed.");
+
1278
+
1279 return false;
+
1280 }
+
1281 return true;
+
1282
+
1283};
+
1284
+
1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+ + +
1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
+
1289 DEBUG_PRINTLN(result);
+
1290 sender->configureAllConfigSettingsAsyncFinalize(result);
+
1291 return;
+
1292 }
+
1293 //Got current config data, now write the changed values
+ +
1295 DEBUG_PRINTLN("Current config data received.");
+
1296
+
1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
+ +
1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
+
1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
+
1301 }
+
1302}
+
1303
+
1304bool LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigData() {
+
1305 if (resetCommandSequence()
+ +
1307 && addCommandToSequence(LD2410Defs::requestParamsCommandData)
+
1308 && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData))
+
1309 {
+
1310 if (executeCommandSequenceAsync(configureAllConfigSettingsAsyncRequestAllConfigDataCallback, 0)) {
+ +
1312 DEBUG_PRINTLN("Requesting current config data");
+
1313 return true;
+
1314 }
+
1315 else {
+ +
1317 DEBUG_PRINTLN("Error: Stating command sequence to request current config data failed.");
+
1318 }
+
1319 }
+
1320 return false;
+
1321}
+
1322
+
1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
1324 if (result != AsyncCommandResult::SUCCESS) {
+
1325
+ +
1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
+
1328 DEBUG_PRINTLN(result);
+
1329 sender->configureAllConfigSettingsAsyncFinalize(result);
+
1330 return;
+
1331 };
+
1332
+
1333 //Got ack of enable config mode command
+ +
1335 DEBUG_PRINTLN("Config mode enabled.");
+
1336
+
1337 bool ret = false;
+
1338 if (sender->configureAllConfigSettingsAsyncWriteFullConfig) {
+
1339 //If we save all changes anyway, no need to request current config data first
+
1340 ret = sender->configureAllConfigSettingsAsyncWriteConfig();
+
1341
+
1342 }
+
1343 else {
+
1344 ret = sender->configureAllConfigSettingsAsyncRequestAllConfigData();
+
1345 }
+
1346 if (!ret) {
+ +
1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
+
1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
+
1350 }
+
1351
+
1352
+
1353}
+
1354
+
+
1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
+
1356{
+
1357
+ +
1359 DEBUG_PRINTLN("Writing config data to the LD2410");
+
1360
+
1361 if (asyncIsBusy()) return false;
+
1362
+
1363
+
1364 if (!configToWrite.isValid()) {
+ +
1366 DEBUG_PRINTLN("configToWrite is invalid.");
+
1367 return false;
+
1368 }
+
1369
+
1370 configureAllConfigSettingsAsyncConfigActive = true;
+
1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
+
1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
+
1373 configureAllConfigSettingsAsyncConfigCallback = callback;
+
1374 configureAllConfigSettingsAsyncConfigUserData = userData;
+
1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
+
1376
+
1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
+
1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
+
1379 }
+
1380 else {
+
1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
+
1382 //If we save all changes anyway, no need to request current config data first
+
1383 return configureAllConfigSettingsAsyncWriteConfig();
+
1384 }
+
1385 else {
+
1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
+
1387 }
+
1388 }
+
1389
+
1390}
+
+
1391
+
1392
+
1393/*--------------------------------------------------------------------
+
1394- Reboot command
+
1395---------------------------------------------------------------------*/
+
1396//The reboot command is special, since it needs to be sent in config mode,
+
1397//but doesnt have to disable config mode, since the sensor goes into normal
+
1398//detection mode after the reboot anyway.
+
1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+ +
1401 sender->configModeEnabled = false;
+
1402 sender->engineeringModeEnabled = false;
+
1403
+ +
1405 DEBUG_PRINTLN("Reboot initiated");
+
1406 }
+
1407 else {
+ +
1409 DEBUG_PRINT("Error! Could not initiate reboot. Result: ");
+
1410 DEBUG_PRINTLN((int)result);
+
1411 }
+
1412 sender->executeCommandSequenceAsyncExecuteCallback(result);
+
1413
+
1414}
+
1415
+
1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+ +
1418 //Got ack of enable config mode command
+ +
1420 DEBUG_PRINTLN("Config mode enabled before reboot");
+
1421 sender->sendCommandAsync(LD2410Defs::rebootCommandData, rebootRebootCallback, 0);
+
1422 }
+
1423 else {
+
1424 //Config mode command timeout or canceled
+
1425 //Just execute the callback
+ +
1427 DEBUG_PRINTLN("Error! Could not enabled config mode before reboot");
+
1428 sender->executeCommandSequenceAsyncExecuteCallback(result);
+
1429 }
+
1430}
+
1431
+
1432
+
+
1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
+
1434
+
1435
+ +
1437 DEBUG_PRINTLN("Reboot");
+
1438
+
1439 if (asyncIsBusy()) return false;
+
1440
+
1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
+
1442}
+
+
1443
+
1444/**********************************************************************************
+
1445* Data access
+
1446***********************************************************************************/
+ +
1450
+ +
1454
+
1455/**********************************************************************************
+
1456* Inactivity handling
+
1457***********************************************************************************/
+
1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
1459 sender->configModeEnabled = false;
+
1460 sender->engineeringModeEnabled = false;
+
1461
+
1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
+
1463 if (result == AsyncCommandResult::SUCCESS) {
+ +
1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
+
1466 }
+
1467 else {
+ +
1469 DEBUG_PRINT("Error!! Could not initiate LD2410 reboot. Result: ");
+
1470 DEBUG_PRINTLN((int)result);
+
1471 }
+
1472
+
1473#endif
+
1474
+
1475}
+
1476
+
1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
1478
+
1479
+
1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
+
1481 if (result == AsyncCommandResult::SUCCESS) {
+ +
1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
+
1484 }
+
1485 else {
+ +
1487 DEBUG_PRINT("Error!! Disabling config mode after inactivity failed. Result: ");
+
1488 DEBUG_PRINTLN((int)result);
+
1489 }
+
1490
+
1491#endif
+
1492
+
1493}
+
1494
+
1495
+
1496void LD2410Async::handleInactivity() {
+
1497
+
1498 if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs > 0) {
+
1499 unsigned long currentTime = millis();
+
1500 unsigned long inactiveDurationMs = currentTime - lastActivityMs;
+
1501 if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) {
+
1502 if (!handleInactivityExitConfigModeDone) {
+
1503 handleInactivityExitConfigModeDone = true;
+
1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
+
1505 }
+
1506 else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) {
+
1507 rebootAsync(handleInactivityRebootCallback, 0);
+
1508 lastActivityMs = currentTime;
+
1509 }
+
1510 }
+
1511 else {
+
1512 handleInactivityExitConfigModeDone = false;
+
1513 }
+
1514 }
+
1515}
+
1516
+
1517void LD2410Async::heartbeat() {
+
1518 lastActivityMs = millis();
+
1519}
+
1520
+
+ +
1522 inactivityHandlingEnabled = enable;
+
1523}
+
+
1524
+
1525/**********************************************************************************
+
1526* Process received data
+
1527***********************************************************************************/
+
1528void LD2410Async::processReceivedData()
+
1529{
+
1530 FrameReadResponse type = readFrame();
+
1531
+
1532 switch (type) {
+
1533 case ACK:
+
1534 processAck();
+
1535 break;
+
1536 case DATA:
+
1537 processData();
+
1538 break;
+
1539 default:
+
1540 break;
+
1541 }
+
1542
+
1543
+
1544}
+
1545
+
1546/**********************************************************************************
+
1547* Task methods
+
1548***********************************************************************************/
+
1549
+
1550void LD2410Async::taskLoop() {
+ +
1552 DEBUG_PRINTLN("Task loop starts");
+
1553
+
1554 while (!taskStop) {
+
1555 processReceivedData();
+
1556 handleAsyncCommandCallbackTimeout();
+
1557 handleInactivity();
+
1558 vTaskDelay(10 / portTICK_PERIOD_MS);
+
1559
+
1560 }
+
1561
+ +
1563 DEBUG_PRINT(taskStop);
+
1564 DEBUG_PRINTLN("Task loop exits");
+
1565
+
1566 // Signal that the task is done
+
1567 taskHandle = NULL;
+
1568 vTaskDelete(NULL); // self-delete
+
1569}
+
1570
+
1571
+
1572
+
1573/**********************************************************************************
+
1574* Begin, end
+
1575***********************************************************************************/
+
1576
+
+ +
1578 if (taskHandle == NULL) {
+ +
1580 DEBUG_PRINTLN("Starting data processing task");
+
1581 taskStop = false;
+
1582
+
1583 BaseType_t result = xTaskCreate(
+
1584 [](void* param) {
+
1585 if (param) {
+
1586 static_cast<LD2410Async*>(param)->taskLoop();
+
1587 }
+
1588 vTaskDelete(NULL);
+
1589 },
+
1590 "LD2410Task",
+
1591 4096,
+
1592 this,
+
1593 1,
+
1594 &taskHandle
+
1595 );
+
1596
+
1597 if (result == pdPASS) {
+
1598 return true;
+
1599 }
+
1600 else {
+ +
1602 DEBUG_PRINTLN("Task creation failed");
+
1603 taskHandle = NULL;
+
1604 return false;
+
1605 }
+
1606 }
+ +
1608 DEBUG_PRINTLN("Data processing task already active");
+
1609 return false;
+
1610}
+
+
1611
+
+ +
1613 if (taskHandle != NULL) {
+ +
1615 DEBUG_PRINTLN("Stopping data processing task");
+
1616 taskStop = true;
+
1617
+
1618 // Wait up to 200ms for graceful exit
+
1619 for (int i = 0; i < 20; i++) {
+
1620 if (taskHandle == NULL) {
+ +
1622 DEBUG_PRINTLN("Task exited gracefully");
+
1623 return true;
+
1624 }
+
1625 vTaskDelay(1 / portTICK_PERIOD_MS);
+
1626 }
+
1627
+
1628 // If still not NULL, force delete
+ +
1630 DEBUG_PRINTLN("Forcing task stop");
+
1631 vTaskDelete(taskHandle);
+
1632 taskHandle = NULL;
+
1633 return true;
+
1634 }
+
1635
+
1636 DEBUG_PRINTLN("Data processing task is not active");
+
1637 return false;
+
1638}
+
+
1639
+
1640
+
1641
+
1642
+
1643/**********************************************************************************
+
1644* Constructor
+
1645***********************************************************************************/
+
+ +
1647{
+
1648 sensor = &serial;
+
1649}
+
+
String byte2hex(byte b, bool addZero=true)
+
bool bufferEndsWith(const byte *buffer, int iMax, const byte *pattern)
Checks whther the last 4 bytes of a buffer match the value supplied in pattern.
+ + +
#define DEBUG_PRINTBUF_DATA(...)
Definition LD2410Debug.h:68
+
#define DEBUG_PRINT_MILLIS
Definition LD2410Debug.h:48
+
#define DEBUG_PRINTLN_DATA(...)
Definition LD2410Debug.h:67
+
#define DEBUG_PRINT(...)
Definition LD2410Debug.h:49
+
#define DEBUG_PRINTBUF(...)
Definition LD2410Debug.h:51
+
#define DEBUG_PRINTLN(...)
Definition LD2410Debug.h:50
+ + +
Asynchronous driver for the LD2410 human presence radar sensor.
Definition LD2410Async.h:86
+
bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution explicitly to 20 cm per gate.
+
void asyncCancel()
Cancels any pending asynchronous command or sequence.
+
bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
Configures the maximum detection gates and "no-one" timeout on the sensor.
+
bool begin()
Starts the background task that continuously reads data from the sensor.
+
AsyncCommandResult
Result of an asynchronous command execution.
Definition LD2410Async.h:95
+
@ TIMEOUT
No ACK received within the expected time window.
+
@ FAILED
Command failed (sensor responded with negative ACK).
+
@ SUCCESS
Command completed successfully and ACK was received.
+
@ CANCELED
Command was canceled by the user before completion.
+
bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
Configures sensitivity thresholds for all gates at once.
+
bool isConfigModeEnabled() const
Detects if config mode is enabled.
+
bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current distance resolution setting from the sensor.
+
bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
Disables engineering mode.
+
bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
Requests the bluetooth mac address.
+
bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
Configures the UART baud rate of the sensor.
+
bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution explicitly to 75 cm per gate.
+
void setInactivityHandling(bool enable)
Enables or disables automatic inactivity handling of the sensor.
+
bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
Applies a full ConfigData struct to the LD2410.
+
LD2410Types::ConfigData getConfigData() const
Returns a clone of the current configuration data of the radar.
+
LD2410Types::DetectionData getDetectionData() const
Returns a clone of the latest detection data from the radar.
+
bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
Requests the firmware version of the sensor.
+
LD2410Types::ConfigData configData
Current configuration parameters of the radar.
+
String firmware
Firmware version string of the radar.
+
void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
Registers a callback for configuration changes.
+
bool asyncIsBusy()
Checks if an asynchronous command is currently pending.
+
bool configModeEnabled
True if the sensor is currently in config mode.
+
byte mac[6]
MAC address of the radar’s Bluetooth module (if available).
+
String macString
MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
+
bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
Requests all static information from the sensor.
+
bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
Configures the auxiliary control parameters (light and output pin).
+
bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
Disables config mode on the radar.
+
bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
Enables bluetooth.
+
LD2410Types::DetectionData detectionData
Latest detection results from the radar.
+
LD2410Types::AutoConfigStatus autoConfigStatus
Current status of the auto-configuration routine.
+
bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
Sets the password for bluetooth access to the sensor.
+
bool engineeringModeEnabled
True if the sensor is currently in engineering mode.
+
bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
Restores factory settings of the sensor.
+
bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
Requests all configuration settings from the sensor.
+
bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
Resets the password for bluetooth access to the default value (HiLink)
+
LD2410Async(Stream &serial)
Constructs a new LD2410Async instance bound to a given serial stream.
+
unsigned long bufferSize
Buffer size reported by the radar protocol.
+
bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current status of the auto-config routine.
+
bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
Enables config mode on the radar.
+
void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
Registers a callback for configuration data updates.
+
bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
Enables engineering mode.
+
bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current gate parameters from the sensor.
+
unsigned long protocolVersion
Protocol version reported by the radar.
+
void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
Callback signature for asynchronous command completion.
+
bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
Disables bluetooth.
+
bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution of the radar.
+
bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
Reboots the sensor.
+
bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
Starts the automatic configuration (auto-config) routine on the sensor.
+
void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
Registers a callback for new detection data.
+
bool end()
Stops the background task started by begin().
+
bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current auxiliary control settings.
+
bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
+
bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
+
bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
+
bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
+
bool buildBluetoothPasswordCommand(byte *out, const char *password)
+
bool buildBaudRateCommand(byte *out, byte baudRateSetting)
+
constexpr byte requestAutoConfigStatusCommandData[4]
Definition LD2410Defs.h:74
+
constexpr byte setAuxControlSettingCommandData[8]
Definition LD2410Defs.h:68
+
constexpr byte configDisableCommand
Definition LD2410Defs.h:21
+
constexpr byte requestDistanceResolutionCommandData[4]
Definition LD2410Defs.h:31
+
constexpr byte setDistanceResolutionCommand
Definition LD2410Defs.h:33
+
constexpr byte configEnableCommandData[6]
Definition LD2410Defs.h:19
+
constexpr byte engineeringModeDisableComand
Definition LD2410Defs.h:61
+
constexpr byte requestMacAddressCommandData[6]
Definition LD2410Defs.h:25
+
constexpr byte setAuxControlSettingsCommand
Definition LD2410Defs.h:67
+
constexpr byte distanceGateSensitivityConfigCommand
Definition LD2410Defs.h:76
+
constexpr byte bluetoothSettingsCommand
Definition LD2410Defs.h:46
+
constexpr byte restoreFactorSettingsCommandData[4]
Definition LD2410Defs.h:41
+
constexpr byte requestAuxControlSettingsCommandData[4]
Definition LD2410Defs.h:65
+
constexpr byte distanceGateSensitivityConfigCommandData[0x16]
Definition LD2410Defs.h:77
+
constexpr byte setBluetoothPasswordCommandData[10]
Definition LD2410Defs.h:53
+
constexpr byte setDistanceResolution20cmCommandData[6]
Definition LD2410Defs.h:35
+
constexpr byte maxGateCommandData[0x16]
Definition LD2410Defs.h:83
+
constexpr byte setBaudRateCommand
Definition LD2410Defs.h:37
+
constexpr byte tailConfig[4]
Definition LD2410Defs.h:16
+
constexpr byte headConfig[4]
Definition LD2410Defs.h:15
+
constexpr byte setBluetoothPasswordCommand
Definition LD2410Defs.h:52
+
constexpr byte requestAutoConfigStatusCommand
Definition LD2410Defs.h:73
+
constexpr byte engineeringModeDisableCommandData[4]
Definition LD2410Defs.h:62
+
constexpr byte rebootCommandData[4]
Definition LD2410Defs.h:44
+
constexpr byte requestAuxControlSettingsCommand
Definition LD2410Defs.h:64
+
constexpr byte setBaudRateCommandData[6]
Definition LD2410Defs.h:38
+
constexpr byte restoreFactorySettingsAsyncCommand
Definition LD2410Defs.h:40
+
constexpr byte bluetoothSettingsOnCommandData[6]
Definition LD2410Defs.h:47
+
constexpr byte requestParamsCommand
Definition LD2410Defs.h:55
+
constexpr byte requestMacAddressCommand
Definition LD2410Defs.h:24
+
constexpr byte headData[4]
Definition LD2410Defs.h:13
+
constexpr byte setDistanceResolution75cmCommandData[6]
Definition LD2410Defs.h:34
+
constexpr byte rebootCommand
Definition LD2410Defs.h:43
+
constexpr byte requestFirmwareCommand
Definition LD2410Defs.h:27
+
constexpr byte beginAutoConfigCommandData[6]
Definition LD2410Defs.h:71
+
constexpr size_t LD2410_Buffer_Size
Definition LD2410Defs.h:11
+
constexpr byte maxGateCommand
Definition LD2410Defs.h:82
+
constexpr byte beginAutoConfigCommand
Definition LD2410Defs.h:70
+
constexpr byte configDisableCommandData[4]
Definition LD2410Defs.h:22
+
constexpr byte getBluetoothPermissionsCommand
Definition LD2410Defs.h:50
+
constexpr byte configEnableCommand
Definition LD2410Defs.h:18
+
constexpr byte tailData[4]
Definition LD2410Defs.h:14
+
constexpr byte requestFirmwareCommandData[4]
Definition LD2410Defs.h:28
+
constexpr byte engineeringModeEnableCommandData[4]
Definition LD2410Defs.h:59
+
constexpr byte engineeringModeEnableComand
Definition LD2410Defs.h:58
+
constexpr byte requestDistanceResolutionCommand
Definition LD2410Defs.h:30
+
constexpr byte requestParamsCommandData[4]
Definition LD2410Defs.h:56
+
OutputControl
Logic level behavior of the auxiliary output pin.
+
Baudrate
Supported baud rates for the sensor’s UART interface.
+
DistanceResolution
Distance resolution per gate for detection.
+
@ MOVING_AND_STATIONARY_TARGET
Both moving and stationary targets detected.
+
@ STATIONARY_TARGET
A stationary target has been detected.
+
@ MOVING_TARGET
A moving target has been detected.
+
LightControl
Light-dependent control status of the auxiliary output.
Definition LD2410Types.h:89
+
Stores the sensor’s configuration parameters.
+
byte distanceGateStationarySensitivity[9]
Stationary sensitivity values per gate (0–100).
+
byte distanceGateMotionSensitivity[9]
Motion sensitivity values per gate (0–100).
+
byte maxMotionDistanceGate
Furthest gate used for motion detection.
+
OutputControl outputControl
Logic configuration of the OUT pin.
+
byte lightThreshold
Threshold for auxiliary light control (0–255).
+
bool isValid() const
Validates the configuration data for correctness.
+
LightControl lightControl
Light-dependent auxiliary control mode.
+
byte maxStationaryDistanceGate
Furthest gate used for stationary detection.
+
byte numberOfGates
Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
+
DistanceResolution distanceResolution
Current distance resolution. A reboot is required to activate changed setting after calling configure...
+
unsigned short noOneTimeout
Timeout (seconds) until "no presence" is declared.
+
Holds the most recent detection data reported by the radar.
+
byte stationaryTargetGateSignals[9]
Per-gate signal strengths for stationary targets.
+
bool engineeringMode
True if engineering mode data was received.
+
bool stationaryPresenceDetected
True if a stationary target is detected.
+
byte stationaryTargetSignal
Signal strength (0–100) of the stationary target.
+
byte lightLevel
Reported ambient light level (0–255).
+
unsigned int detectedDistance
General detection distance (cm).
+
byte movingTargetGateSignalCount
Number of gates with moving target signals.
+
TargetState targetState
Current detection state.
+
byte movingTargetGateSignals[9]
Per-gate signal strengths for moving targets.
+
byte stationaryTargetGateSignalCount
Number of gates with stationary target signals.
+
bool presenceDetected
True if any target is detected.
+
byte movingTargetSignal
Signal strength (0–100) of the moving target.
+
bool outPinStatus
Current status of the OUT pin (true = high, false = low).
+
unsigned long timestamp
Timestamp (ms since boot) when this data was received.
+
bool movingPresenceDetected
True if a moving target is detected.
+
unsigned int movingTargetDistance
Distance (cm) to the nearest moving target.
+
unsigned int stationaryTargetDistance
Distance (cm) to the nearest stationary target.
+
+
+ + + + diff --git a/docu/LD2410Async_8h.html b/docu/LD2410Async_8h.html new file mode 100644 index 0000000..abc90f8 --- /dev/null +++ b/docu/LD2410Async_8h.html @@ -0,0 +1,139 @@ + + + + + + + +LD2410Async: LD2410Async.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Async.h File Reference
+
+
+
#include "Arduino.h"
+#include "Ticker.h"
+#include "LD2410Debug.h"
+#include "LD2410Types.h"
+#include "LD2410Defs.h"
+
+Include dependency graph for LD2410Async.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  LD2410Async
 Asynchronous driver for the LD2410 human presence radar sensor. More...
 
+
+
+ + + + diff --git a/docu/LD2410Async_8h.js b/docu/LD2410Async_8h.js new file mode 100644 index 0000000..5889f85 --- /dev/null +++ b/docu/LD2410Async_8h.js @@ -0,0 +1,4 @@ +var LD2410Async_8h = +[ + [ "LD2410Async", "classLD2410Async.html", "classLD2410Async" ] +]; \ No newline at end of file diff --git a/docu/LD2410Async_8h__dep__incl.map b/docu/LD2410Async_8h__dep__incl.map new file mode 100644 index 0000000..edc2219 --- /dev/null +++ b/docu/LD2410Async_8h__dep__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docu/LD2410Async_8h__dep__incl.md5 b/docu/LD2410Async_8h__dep__incl.md5 new file mode 100644 index 0000000..7dfc4fb --- /dev/null +++ b/docu/LD2410Async_8h__dep__incl.md5 @@ -0,0 +1 @@ +fc4d52cf839f3124223ac8877f6b99da \ No newline at end of file diff --git a/docu/LD2410Async_8h__dep__incl.svg b/docu/LD2410Async_8h__dep__incl.svg new file mode 100644 index 0000000..725f358 --- /dev/null +++ b/docu/LD2410Async_8h__dep__incl.svg @@ -0,0 +1,111 @@ + + + + + + +LD2410Async.h + + +Node1 + + +LD2410Async.h + + + + + +Node2 + + +LD2410Async.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410Defs.h + + + + + +Node1->Node4 + + + + + + + + +Node3->Node2 + + + + + + + + +Node4->Node1 + + + + + + + + +Node4->Node2 + + + + + + + + +Node4->Node3 + + + + + + + + diff --git a/docu/LD2410Async_8h__incl.map b/docu/LD2410Async_8h__incl.map new file mode 100644 index 0000000..fa74978 --- /dev/null +++ b/docu/LD2410Async_8h__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docu/LD2410Async_8h__incl.md5 b/docu/LD2410Async_8h__incl.md5 new file mode 100644 index 0000000..414166f --- /dev/null +++ b/docu/LD2410Async_8h__incl.md5 @@ -0,0 +1 @@ +03a0cb04299ae0f023dd99fc95d1b4cb \ No newline at end of file diff --git a/docu/LD2410Async_8h__incl.svg b/docu/LD2410Async_8h__incl.svg new file mode 100644 index 0000000..3a3820f --- /dev/null +++ b/docu/LD2410Async_8h__incl.svg @@ -0,0 +1,147 @@ + + + + + + +LD2410Async.h + + +Node1 + + +LD2410Async.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +Ticker.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410Debug.h + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +LD2410Types.h + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +LD2410Defs.h + + + + + +Node1->Node6 + + + + + + + + +Node4->Node2 + + + + + + + + +Node5->Node2 + + + + + + + + +Node6->Node1 + + + + + + + + +Node6->Node2 + + + + + + + + diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html new file mode 100644 index 0000000..6df1fe8 --- /dev/null +++ b/docu/LD2410Async_8h_source.html @@ -0,0 +1,1706 @@ + + + + + + + +LD2410Async: LD2410Async.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Async.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
3
+
4#include "Arduino.h"
+
5#include "Ticker.h"
+
6#include "LD2410Debug.h"
+
7#include "LD2410Types.h"
+
8#include "LD2410Defs.h"
+
9
+
10
+
11
+
12
+
13
+
14/**
+
15 * @brief Asynchronous driver for the LD2410 human presence radar sensor.
+
16 *
+
17 * The LD2410 is a mmWave radar sensor capable of detecting both moving and
+
18 * stationary targets, reporting presence, distance, and per-gate signal strength.
+
19 * This class implements a non-blocking, asynchronous interface for communicating
+
20 * with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).
+
21 *
+
22 * ## Features
+
23 * - Continuous background task that parses incoming frames and updates data.
+
24 * - Access to latest detection results via getDetectionData() or getDetectionDataRef().
+
25 * - Access to current configuration via getConfigData() or getConfigDataRef().
+
26 * - Asynchronous commands for configuration (with callbacks).
+
27 * - Support for engineering mode (per-gate signal values).
+
28 * - Automatic inactivity handling (optional recovery and reboot).
+
29 * - Utility methods for safe enum conversion and debugging output.
+
30 *
+
31 * ## Accessing data
+
32 * You can either clone the structs (safe to modify) or access them by reference (efficient read-only):
+
33 *
+
34 * ### Example: Access detection data without cloning
+
35 * @code
+
36 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
+
37 * Serial.print("Target state: ");
+
38 * Serial.println(static_cast<int>(data.targetState));
+
39 * @endcode
+
40 *
+
41 * ### Example: Clone config data, modify, and write back
+
42 * @code
+
43 * ConfigData cfg = radar.getConfigData(); // clone
+
44 * cfg.noOneTimeout = 60;
+
45 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+
46 * AsyncCommandResult result,
+
47 * byte) {
+
48 * if (result == AsyncCommandResult::SUCCESS) {
+
49 * Serial.println("Config updated successfully!");
+
50 * }
+
51 * });
+
52 * @endcode
+
53 *
+
54 * ## Usage
+
55 * Typical workflow:
+
56 * 1. Construct with a reference to a Stream object connected to the sensor.
+
57 * 2. Call begin() to start the background task.
+
58 * 3. Register callbacks for detection data and/or config updates.
+
59 * 4. Use async commands to adjust sensor configuration as needed.
+
60 * 5. Call end() to stop background processing if no longer required.
+
61 *
+
62 * Example:
+
63 * @code
+
64 * HardwareSerial radarSerial(2);
+
65 * LD2410Async radar(radarSerial);
+
66 *
+
67 * void setup() {
+
68 * Serial.begin(115200);
+
69 * radar.begin();
+
70 *
+
71 * // Register callback for detection updates
+
72 * radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
+
73 * sender->getDetectionDataRef().print(); // direct access, no copy
+
74 * });
+
75 * }
+
76 *
+
77 * void loop() {
+
78 * // Other application logic
+
79 * }
+
80 * @endcode
+
81 */
+
82
+
83
+
84
+
85
+
+ +
87public:
+
88
+
89
+
90 /**
+
91 * @brief Result of an asynchronous command execution.
+
92 *
+
93 * Every async command reports back its outcome via the callback.
+
94 */
+
+
95 enum class AsyncCommandResult: byte {
+
96 SUCCESS, ///< Command completed successfully and ACK was received.
+
97 FAILED, ///< Command failed (sensor responded with negative ACK).
+
98 TIMEOUT, ///< No ACK received within the expected time window.
+
99 CANCELED ///< Command was canceled by the user before completion.
+
100 };
+
+
101
+
102
+
103
+
104
+
105 /**
+
106 * @brief Callback signature for asynchronous command completion.
+
107 *
+
108 * @param sender Pointer to the LD2410Async instance that triggered the callback.
+
109 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
+
110 * @param userData User-specified value passed when registering the callback.
+
111 */
+
112 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
+
113
+
114 /**
+
115 * @brief Generic callback signature used for simple notifications.
+
116 *
+
117 * @param sender Pointer to the LD2410Async instance that triggered the callback.
+
118 * @param userData User-specified value passed when registering the callback.
+
119 */
+
120 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
+
121
+
122 /**
+
123 * @brief Callback type for receiving detection data events.
+
124 *
+
125 * This callback is invoked whenever new detection data is processed.
+
126 * It provides direct access to the LD2410Async instance, along with
+
127 * a quick flag for presence detection so that applications which only
+
128 * care about presence can avoid parsing the full DetectionData struct.
+
129 *
+
130 * @param sender Pointer to the LD2410Async instance that triggered the callback.
+
131 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
+
132 * @param userData User-defined value passed when registering the callback.
+
133 */
+
134 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
+
135
+
136
+
137
+
138
+
139
+
140public:
+
141 /**
+
142 * @brief Latest detection results from the radar.
+
143 *
+
144 * Updated automatically whenever new data frames are received.
+
145 * Use registerDetectionDataReceivedCallback() to be notified
+
146 * whenever this struct changes.
+
147 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
+
148 */
+ +
150
+
151 /**
+
152 * @brief Current configuration parameters of the radar.
+
153 *
+
154 * Filled when configuration query commands are issued
+
155 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
+
156 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
+
157 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
+
158 *
+
159 * Structure will contain only uninitilaized data if config data is not queried explicitly.
+
160 */
+ +
162
+
163 /**
+
164 * @brief Protocol version reported by the radar.
+
165 *
+
166 * This value is set when entering config mode. It can be useful
+
167 * for compatibility checks between firmware and library.
+
168 */
+
169 unsigned long protocolVersion = 0;
+
170
+
171 /**
+
172 * @brief Buffer size reported by the radar protocol.
+
173 *
+
174 * Set when entering config mode. Typically not required by users
+
175 * unless debugging low-level protocol behavior.
+
176 */
+
177 unsigned long bufferSize = 0;
+
178
+
179 /**
+
180 * @brief True if the sensor is currently in config mode.
+
181 *
+
182 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
+
183 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
+
184 * otherwiese the radar will not send any detection data.
+
185 */
+
186 bool configModeEnabled = false;
+
187
+
188
+
189 /**
+
190 * @brief True if the sensor is currently in engineering mode.
+
191 *
+
192 * In engineering mode, the radar sends detailed per-gate
+
193 * signal data in addition to basic detection data.
+
194 *
+
195 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
+
196 */
+ +
198
+
199 /**
+
200 * @brief Firmware version string of the radar.
+
201 *
+
202 * Populated by requestFirmwareAsync(). Format is usually
+
203 * "major.minor.build".
+
204 */
+
205 String firmware = "";
+
206
+
207 /**
+
208 * @brief MAC address of the radar’s Bluetooth module (if available).
+
209 *
+
210 * Populated by requestBluetoothMacAddressAsync().
+
211 */
+
212 byte mac[6];
+
213 /**
+
214 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
+
215 *
+
216 * Populated by requestBluetoothMacAddressAsync().
+
217 */
+
218 String macString = "";
+
219
+
220
+
221 /**
+
222 * @brief Current status of the auto-configuration routine.
+
223 *
+
224 * Updated by requestAutoConfigStatusAsync().
+
225 */
+ +
227
+
228
+
229
+
230 /**********************************************************************************
+
231 * Constrcutor
+
232 ***********************************************************************************/
+
233
+
234 /**
+
235 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
+
236 *
+
237 * The sensor communicates over a UART interface. Pass the corresponding
+
238 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
+
239 * implementation) that is connected to the LD2410 sensor.
+
240 *
+
241 * Example:
+
242 * @code
+
243 * HardwareSerial radarSerial(2);
+
244 * LD2410Async radar(radarSerial);
+
245 * @endcode
+
246 *
+
247 * @param serial Reference to a Stream object used to exchange data with the sensor.
+
248 */
+
249 LD2410Async(Stream& serial);
+
250
+
251 /**********************************************************************************
+
252 * begin, end
+
253 ***********************************************************************************/
+
254 /**
+
255 * @brief Starts the background task that continuously reads data from the sensor.
+
256 *
+
257 * This method creates a FreeRTOS task which parses all incoming frames
+
258 * and dispatches registered callbacks. Without calling begin(), the
+
259 * sensor cannot deliver detection results asynchronously.
+
260 *
+
261 * @returns true if the task was successfully started, false if already running.
+
262 */
+
263 bool begin();
+
264
+
265 /**
+
266 * @brief Stops the background task started by begin().
+
267 *
+
268 * After calling end(), no more data will be processed until begin() is called again.
+
269 * This is useful to temporarily suspend radar processing without rebooting.
+
270 *
+
271 * @returns true if the task was stopped, false if it was not active.
+
272 */
+
273 bool end();
+
274
+
275 /**********************************************************************************
+
276 * Inactivity handling
+
277 ***********************************************************************************/
+
278 /**
+
279 * @brief Enables or disables automatic inactivity handling of the sensor.
+
280 *
+
281 * When inactivity handling is enabled, the library continuously monitors the time
+
282 * since the last activity (received data or command ACK). If no activity is detected
+
283 * for a longer period (defined by activityTimeoutMs), the library will attempt to
+
284 * recover the sensor automatically:
+
285 * 1. It first tries to exit config mode (even if configModeEnabled is false).
+
286 * 2. If no activity is restored within 5 seconds after leaving config mode,
+
287 * the library reboots the sensor.
+
288 *
+
289 * This helps recover the sensor from rare cases where it gets "stuck"
+
290 * in config mode or stops sending data.
+
291 *
+
292 * @param enable Pass true to enable inactivity handling, false to disable it.
+
293 */
+
294 void setInactivityHandling(bool enable);
+
295
+
296 /**
+
297 * @brief Convenience method: enables inactivity handling.
+
298 *
+
299 * Equivalent to calling setInactivityHandling(true).
+
300 */
+ +
302
+
303 /**
+
304 * @brief Convenience method: disables inactivity handling.
+
305 *
+
306 * Equivalent to calling setInactivityHandling(false).
+
307 */
+ +
309
+
310 /**
+
311 * @brief Returns whether inactivity handling is currently enabled.
+
312 *
+
313 * @returns true if inactivity handling is enabled, false otherwise.
+
314 */
+
315 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
+
316
+
317 /**
+
318 * @brief Sets the timeout period for inactivity handling.
+
319 *
+
320 * If no data or command ACK is received within this period,
+
321 * the library will attempt to recover the sensor as described
+
322 * in setInactivityHandling().
+
323 *
+
324 * Default is 60000 ms (1 minute).
+
325 *
+
326 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
+
327 */
+
328 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
+
329
+
330 /**
+
331 * @brief Returns the current inactivity timeout period.
+
332 *
+
333 * @returns Timeout in milliseconds.
+
334 */
+
335 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
+
336
+
337 /**********************************************************************************
+
338 * Callback registration methods
+
339 ***********************************************************************************/
+
340
+
341 /**
+
342 * @brief Registers a callback for new detection data.
+
343 *
+
344 * The callback is invoked whenever a valid data frame is received
+
345 * from the radar, after detectionData has been updated.
+
346 *
+
347 * @param callback Function pointer with signature
+
348 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
+
349 * @param userData Optional value that will be passed to the callback.
+
350 */
+
351 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
+
352
+
353 /**
+
354 * @brief Registers a callback for configuration changes.
+
355 *
+
356 * The callback is invoked whenever the sensor’s configuration
+
357 * has been successfully updated (e.g. after setting sensitivity).
+
358 *
+
359 * @param callback Function pointer with signature
+
360 * void methodName(LD2410Async* sender, byte userData).
+
361 * @param userData Optional value that will be passed to the callback.
+
362 */
+
363 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
+
364
+
365 /**
+
366 * @brief Registers a callback for configuration data updates.
+
367 *
+
368 * The callback is invoked whenever new configuration information
+
369 * has been received from the sensor (e.g. after requestGateParametersAsync()).
+
370 *
+
371 * @param callback Function pointer with signature
+
372 * void methodName(LD2410Async* sender, byte userData).
+
373 * @param userData Optional value that will be passed to the callback.
+
374 */
+
375 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
+
376
+
377 /**********************************************************************************
+
378 * Detection and config data access commands
+
379 ***********************************************************************************/
+
380 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
+
381
+
382 /**
+
383 * @brief Returns a clone of the latest detection data from the radar.
+
384 *
+
385 * The returned struct contains the most recently received frame,
+
386 * including target state, distances, signal strengths, and
+
387 * (if enabled) engineering mode per-gate data.
+
388 *
+
389 * Equivalent to directly accessing the public member detectionData,
+
390 * but provided for encapsulation and future-proofing.
+
391 *
+
392 * @note This function will not query the sensor for data. It just returns
+
393 * the data that has already been received from the sensor.
+
394 *
+
395 * ## Example: Access values from a clone
+
396 * @code
+
397 * DetectionData data = radar.getDetectionData(); // makes a copy
+
398 * if (data.targetState == TargetState::MOVING_TARGET) {
+
399 * Serial.print("Moving target at distance: ");
+
400 * Serial.println(data.movingTargetDistance);
+
401 * }
+
402 * @endcode
+
403 *
+
404 * ## Do:
+
405 * - Use when you want a snapshot of the latest detection data.
+
406 * - Modify the returned struct freely without affecting the internal state.
+
407 *
+
408 * ## Don’t:
+
409 * - Expect this to fetch new data from the sensor (it only returns what was already received).
+
410 *
+
411 * @returns A copy of the current DetectionData.
+
412 */
+ +
414
+
415
+
416 /**
+
417 * @brief Access the current detection data without making a copy.
+
418 *
+
419 * This returns a const reference to the internal struct. It is efficient,
+
420 * but the data must not be modified directly. Use this if you only want
+
421 * to read values.
+
422 *
+
423 * @note Since this returns a reference to the internal data, the values
+
424 * may change as new frames arrive. Do not store the reference for
+
425 * long-term use.
+
426 * @note This function will not query the sensor for data. It just returns
+
427 * the data that has already been received from the sensor.
+
428 *
+
429 * ## Example: Efficient read access without cloning
+
430 * @code
+
431 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
+
432 * Serial.print("Stationary signal: ");
+
433 * Serial.println(data.stationaryTargetSignal);
+
434 * @endcode
+
435 *
+
436 * ## Do:
+
437 * - Use when you only need to read values quickly and efficiently.
+
438 * - Use when printing or inspecting live data without keeping it.
+
439 *
+
440 * ## Don’t:
+
441 * - Try to modify the returned struct (it’s const).
+
442 * - Store the reference long-term (it may be updated at any time).
+
443 *
+
444 * @returns Const reference to the current DetectionData.
+
445 */
+ +
447
+
448
+
449 /**
+
450 * @brief Returns a clone of the current configuration data of the radar.
+
451 *
+
452 * The returned struct contains the most recently requested
+
453 * or received configuration values, such as sensitivities,
+
454 * resolution, timeouts, and auxiliary settings.
+
455 *
+
456 * Equivalent to directly accessing the public member configData,
+
457 * but provided for encapsulation and future-proofing.
+
458 *
+
459 * @note This function will not query the sensor for data. It just returns
+
460 * the data that has already been received from the sensor.
+
461 *
+
462 * ## Example: Clone, modify, and write back
+
463 * @code
+
464 * // Clone current config
+
465 * ConfigData cfg = radar.getConfigData();
+
466 *
+
467 * // Modify locally
+
468 * cfg.noOneTimeout = 60; // change timeout
+
469 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
+
470 *
+
471 * // Send modified config back to sensor
+
472 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+
473 * AsyncCommandResult result,
+
474 * byte) {
+
475 * if (result == AsyncCommandResult::SUCCESS) {
+
476 * Serial.println("Config updated successfully!");
+
477 * }
+
478 * });
+
479 * @endcode
+
480 *
+
481 * ## Do:
+
482 * - Use when you want a clone of the current config to adjust and send back.
+
483 * - Safely modify the struct without risking internal state corruption.
+
484 *
+
485 * ## Don’t:
+
486 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
+
487 *
+
488 * @returns A copy of the current ConfigData.
+
489 */
+ +
491
+
492
+
493 /**
+
494 * @brief Access the current config data without making a copy.
+
495 *
+
496 * This returns a const reference to the internal struct. It is efficient,
+
497 * but the data must not be modified directly. Use this if you only want
+
498 * to read values.
+
499 *
+
500 * @note Since this returns a reference to the internal data, the values
+
501 * may change when new configuration is received. Do not store the
+
502 * reference for long-term use.
+
503 * @note This function will not query the sensor for data. It just returns
+
504 * the data that has already been received from the sensor.
+
505 *
+
506 * ## Example: Efficient read access without cloning
+
507 * @code
+
508 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
+
509 * Serial.print("Resolution: ");
+
510 * Serial.println(static_cast<int>(cfg.distanceResolution));
+
511 * @endcode
+
512 *
+
513 * ## Do:
+
514 * - Use when you only want to inspect configuration quickly.
+
515 * - Use for efficient read-only access.
+
516 *
+
517 * ## Don’t:
+
518 * - Try to modify the returned struct (it’s const).
+
519 * - Keep the reference and assume it will remain valid forever.
+
520 *
+
521 * @returns Const reference to the current ConfigData.
+
522 */
+ +
524
+
525
+
526 /**********************************************************************************
+
527 * Special async commands
+
528 ***********************************************************************************/
+
529 /**
+
530 * @brief Checks if an asynchronous command is currently pending.
+
531 *
+
532 * @returns true if there is an active command awaiting an ACK,
+
533 * false if the library is idle.
+
534 */
+
535 bool asyncIsBusy();
+
536
+
537 /**
+
538 * @brief Cancels any pending asynchronous command or sequence.
+
539 *
+
540 * If canceled, the callback of the running command is invoked
+
541 * with result type CANCELED. After canceling, the sensor may
+
542 * remain in config mode — consider disabling config mode or
+
543 * rebooting to return to detection operation.
+
544 */
+
545 void asyncCancel();
+
546
+
547 /**
+
548 * @brief Sets the timeout for async command callbacks.
+
549 *
+
550 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
+
551 *
+
552 *
+
553 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
+
554 */
+
555 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
+
556
+
557 /**
+
558 * @brief Returns the current async command timeout.
+
559 *
+
560 * @return Timeout in milliseconds.
+
561 */
+
562 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
+
563
+
564
+
565 /**********************************************************************************
+
566 * Commands
+
567 ***********************************************************************************/
+
568
+
569 /*---------------------------------------------------------------------------------
+
570 - Config mode commands
+
571 ---------------------------------------------------------------------------------*/
+
572 /**
+
573 * @brief Enables config mode on the radar.
+
574 *
+
575 * Config mode must be enabled before issuing most configuration commands.
+
576 * This command itself is asynchronous — the callback fires once the
+
577 * sensor acknowledges the mode switch.
+
578 *
+
579 * @note If asyncIsBusy() is true, this command will not be sent.
+
580 * @note Normal detection data is suspended while config mode is active.
+
581 *
+
582 * @param callback Callback with signature
+
583 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
584 * @param userData Optional value that will be passed to the callback.
+
585 *
+
586 * @returns true if the command was sent, false if blocked.
+
587 */
+
588 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
+
589
+
590 /**
+
591 * @brief Disables config mode on the radar.
+
592 *
+
593 * This should be called after finishing configuration, to return
+
594 * the sensor to normal detection operation.
+
595 *
+
596 * @note If an async command is already pending (asyncIsBusy() == true),
+
597 * this command will not be sent.
+
598 *
+
599 * @param callback Callback with signature
+
600 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
601 * @param userData Optional value passed to the callback.
+
602 *
+
603 * @returns true if the command was sent, false otherwise.
+
604 */
+
605 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
+
606
+
607 /**
+
608 * @brief Detects if config mode is enabled
+
609 *
+
610 * @returns true if config mode is anabled, false if config mode is disabled
+
611 */
+
+
612 bool isConfigModeEnabled() const {
+
613 return configModeEnabled;
+
614 };
+
+
615
+
616
+
617 /*---------------------------------------------------------------------------------
+
618 - Engineering mode commands
+
619 ---------------------------------------------------------------------------------*/
+
620 /**
+
621 * @brief Enables engineering mode.
+
622 *
+
623 * In this mode, the sensor sends detailed per-gate signal values
+
624 * in addition to basic detection results.
+
625 *
+
626 * @note Engineering mode is temporary and lost after power cycle.
+
627 * @note Requires config mode. Will be enabled automatically if not active.
+
628 *
+
629 * @param callback Callback fired when ACK is received or on failure.
+
630 * @param userData Optional value passed to the callback.
+
631 *
+
632 * @returns true if the command was sent, false otherwise.
+
633 */
+
634 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
+
635
+
636 /**
+
637 * @brief Disables engineering mode.
+
638 *
+
639 * Returns sensor reporting to basic detection results only.
+
640 *
+
641 * @note Requires config mode. Will be enabled automatically if not active.
+
642 *
+
643 * @param callback Callback fired when ACK is received or on failure.
+
644 * @param userData Optional value passed to the callback.
+
645 *
+
646 * @returns true if the command was sent, false otherwise.
+
647 */
+
648 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
+
649
+
650 /**
+
651 * @brief Detects if engineering mode is enabled
+
652 *
+
653 * @returns true if engineering mode is anabled, false if engineering mode is disabled
+
654 */
+
+ + +
657 };
+
+
658
+
659 /*---------------------------------------------------------------------------------
+
660 - Native sensor commands
+
661 ---------------------------------------------------------------------------------*/
+
662 /**
+
663 * @brief Requests the current gate parameters from the sensor.
+
664 *
+
665 * Retrieves sensitivities, max gates, and timeout settings,
+
666 * which will be written into configData.
+
667 *
+
668 * @note Requires config mode. The method will manage mode switching if needed.
+
669 * @note If an async command is already pending, the request is rejected.
+
670 *
+
671 * @param callback Callback fired when data is received or on failure.
+
672 * @param userData Optional value passed to the callback.
+
673 *
+
674 * @returns true if the command was sent, false otherwise.
+
675 */
+
676 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
+
677
+
678
+
679
+
680 /**
+
681 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
+
682 *
+
683 * This command updates:
+
684 * - Maximum motion detection distance gate (2–8).
+
685 * - Maximum stationary detection distance gate (2–8).
+
686 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
+
687 *
+
688 * @note Requires config mode to be enabled. The method will internally
+
689 * enable/disable config mode if necessary.
+
690 * @note If another async command is pending, this call fails.
+
691 *
+
692 * @param maxMovingGate Furthest gate used for motion detection (2–8).
+
693 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
+
694 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
+
695 * @param callback Callback fired when ACK is received or on failure/timeout.
+
696 * @param userData Optional value passed to the callback.
+
697 *
+
698 * @returns true if the command was sent, false otherwise (busy state or invalid values).
+
699 */
+
700 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
+
701
+
702
+
703 /**
+
704 * @brief Configures sensitivity thresholds for all gates at once.
+
705 *
+
706 * A sequence of commands will be sent, one for each gate.
+
707 * Threshold values are automatically clamped to 0–100.
+
708 *
+
709 * @note Requires config mode. Will be managed automatically.
+
710 * @note If another async command is pending, this call fails.
+
711 *
+
712 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
+
713 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
+
714 * @param callback Callback fired when all updates are acknowledged or on failure.
+
715 * @param userData Optional value passed to the callback.
+
716 *
+
717 * @returns true if the sequence was started, false otherwise.
+
718 */
+
719
+
720 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
+
721
+
722
+
723 /**
+
724 * @brief Configures sensitivity thresholds for a single gate.
+
725 *
+
726 * Updates both moving and stationary thresholds for the given gate index.
+
727 * If the gate index is greater than 8, all gates are updated instead.
+
728 *
+
729 * @note Requires config mode. Will be managed automatically.
+
730 * @note If another async command is pending, this call fails.
+
731 *
+
732 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
+
733 * @param movingThreshold Sensitivity for moving targets (0–100).
+
734 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
+
735 * @param callback Callback fired when ACK is received or on failure.
+
736 * @param userData Optional value passed to the callback.
+
737 *
+
738 * @returns true if the command was sent, false otherwise.
+
739 */
+
740 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
+
741
+
742 /**
+
743 * @brief Requests the firmware version of the sensor.
+
744 *
+
745 * Populates the firmware string when the ACK response arrives.
+
746 *
+
747 * @note Requires config mode. Will be managed automatically.
+
748 *
+
749 * @param callback Callback fired when firmware info is received.
+
750 * @param userData Optional value passed to the callback.
+
751 *
+
752 * @returns true if the command was sent, false otherwise.
+
753 */
+
754 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
+
755
+
756 /**
+
757 * @brief Configures the UART baud rate of the sensor.
+
758 *
+
759 * The new baud rate becomes active only after reboot.
+
760 * The ESP32’s Serial interface must also be reconfigured
+
761 * to the new baud rate after reboot.
+
762 *
+
763 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
+
764 * @note Requires config mode. Will be managed automatically.
+
765 * @note If another async command is pending, this call fails.
+
766 * @note After execution, call rebootAsync() to activate changes.
+
767 *
+
768 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
+
769 * @param callback Callback fired when ACK is received or on failure.
+
770 * @param userData Optional value passed to the callback.
+
771 *
+
772 * @returns true if the command was sent, false otherwise.
+
773 */
+
774 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
+
775
+
776 /**
+
777 * @brief Configures the baudrate of the serial port of the sensor.
+
778 *
+
779 * The new baudrate will only become active after a reboot of the sensor.
+
780 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
+
781 *
+
782 * @note If another async command is pending, this call fails.
+
783 * @note After execution, call rebootAsync() to activate changes.
+
784 *
+
785 * @param baudrate A valid baud rate from the Baudrate enum.
+
786 *
+
787 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
788 * @param userData Optional value that will be passed to the callback function.
+
789 *
+
790 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
791 */
+
792 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
+
793
+
794
+
795 /**
+
796 * @brief Restores factory settings of the sensor.
+
797 *
+
798 * Restored settings only become active after a reboot.
+
799 *
+
800 * @note Requires config mode. Will be managed automatically.
+
801 * @note After execution, call rebootAsync() to activate changes.
+
802 *
+
803 * @param callback Callback fired when ACK is received or on failure.
+
804 * @param userData Optional value passed to the callback.
+
805 *
+
806 * @returns true if the command was sent, false otherwise.
+
807 */
+
808 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
+
809
+
810 /**
+
811 * @brief Reboots the sensor.
+
812 *
+
813 * After reboot, the sensor stops responding for a few seconds.
+
814 * Config and engineering mode are reset.
+
815 *
+
816 * @note The reboot of the sensor takes place after the ACK has been sent.
+
817 *
+
818 * @param callback Callback fired when ACK is received or on failure.
+
819 * @param userData Optional value passed to the callback.
+
820 *
+
821 * @returns true if the command was sent, false otherwise.
+
822 */
+
823 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
+
824
+
825 /**
+
826 * @brief Enables bluetooth
+
827 *
+
828 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
829 * @param userData Optional value that will be passed to the callback function.
+
830 *
+
831 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
832 */
+
833 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
+
834
+
835 /**
+
836 * @brief Disables bluetooth
+
837 *
+
838 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
839 * @param userData Optional value that will be passed to the callback function.
+
840 *
+
841 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
842 */
+
843 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
+
844
+
845 /**
+
846 * @brief Requests the bluetooth mac address
+
847 *
+
848 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
+
849 *
+
850 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
851 * @param userData Optional value that will be passed to the callback function.
+
852 *
+
853 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
854 */
+
855 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
+
856
+
857 /**
+
858 * @brief Sets the password for bluetooth access to the sensor.
+
859 *
+
860 * @param password New bluetooth password. Max 6. chars.
+
861 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
862 * @param userData Optional value that will be passed to the callback function.
+
863 *
+
864 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
865 */
+
866 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
+
867
+
868 /**
+
869 * @brief Sets the password for bluetooth access to the sensor.
+
870 *
+
871 * @param password New bluetooth password. Max 6. chars.
+
872 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
873 * @param userData Optional value that will be passed to the callback function.
+
874 *
+
875 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
876 */
+
877 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
+
878
+
879 /**
+
880 * @brief Resets the password for bluetooth access to the default value (HiLink)
+
881 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
+
882 * @param userData Optional value that will be passed to the callback function.
+
883 *
+
884 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+
885 */
+
886 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
+
887
+
888 /**
+
889 * @brief Configures the distance resolution of the radar.
+
890 *
+
891 * The distance resolution defines the size of each distance gate
+
892 * and the maximum detection range:
+
893 * - RESOLUTION_75CM → longer range, coarser detail.
+
894 * - RESOLUTION_20CM → shorter range, finer detail.
+
895 *
+
896 * @note Requires config mode. Will be managed automatically.
+
897 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
898 * @note Fails if another async command is pending.
+
899 *
+
900 * @param distanceResolution Value from the DistanceResolution enum.
+
901 * Must not be NOT_SET.
+
902 * @param callback Function pointer with signature:
+
903 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
904 * Fired when the ACK is received or on failure/timeout.
+
905 * @param userData Optional value passed to the callback.
+
906 *
+
907 * @returns true if the command was sent, false if invalid parameters
+
908 * or the library is busy.
+
909 */
+
910 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
+
911
+
912 /**
+
913 * @brief Configures the distance resolution explicitly to 75 cm per gate.
+
914 *
+
915 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
+
916 *
+
917 * @note Requires config mode. Will be managed automatically.
+
918 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
919 * @note Fails if another async command is pending.
+
920 *
+
921 * @param callback Function pointer with signature:
+
922 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
923 * @param userData Optional value passed to the callback.
+
924 *
+
925 * @returns true if the command was sent, false otherwise.
+
926 */
+
927 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
+
928
+
929 /**
+
930 * @brief Configures the distance resolution explicitly to 20 cm per gate.
+
931 *
+
932 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
+
933 *
+
934 * @note Requires config mode. Will be managed automatically.
+
935 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
936 * @note Fails if another async command is pending.
+
937 *
+
938 * @param callback Function pointer with signature:
+
939 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
940 * @param userData Optional value passed to the callback.
+
941 *
+
942 * @returns true if the command was sent, false otherwise.
+
943 */
+
944 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
+
945
+
946 /**
+
947 * @brief Requests the current distance resolution setting from the sensor.
+
948 *
+
949 * The result is written into configData.distanceResolution.
+
950 *
+
951 * @note Requires config mode. Will be managed automatically.
+
952 *
+
953 * @param callback Function pointer with signature:
+
954 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
955 * @param userData Optional value passed to the callback.
+
956 *
+
957 * @returns true if the command was sent, false otherwise.
+
958 */
+
959 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
+
960
+
961 /**
+
962 * @brief Configures the auxiliary control parameters (light and output pin).
+
963 *
+
964 * This configures how the OUT pin behaves depending on light levels
+
965 * and presence detection. Typical use cases include controlling
+
966 * an external lamp or relay.
+
967 *
+
968 * @note Requires config mode. Will be managed automatically.
+
969 * @note Both enums must be set to valid values (not NOT_SET).
+
970 * @note Fails if another async command is pending.
+
971 *
+
972 * @param lightControl Light control behavior (see LightControl enum).
+
973 * @param lightThreshold Threshold (0–255) used for light-based switching.
+
974 * @param outputControl Output pin logic configuration (see OutputControl enum).
+
975 * @param callback Function pointer with signature:
+
976 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
977 * Fired when ACK is received or on failure/timeout.
+
978 * @param userData Optional value passed to the callback.
+
979 *
+
980 * @returns true if the command was sent, false otherwise.
+
981 */
+
982 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
+
983
+
984 /**
+
985 * @brief Requests the current auxiliary control settings.
+
986 *
+
987 * Fills configData.lightControl, configData.lightThreshold,
+
988 * and configData.outputControl.
+
989 *
+
990 * @note Requires config mode. Will be managed automatically.
+
991 *
+
992 * @param callback Function pointer with signature:
+
993 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
994 * Fired when ACK is received or on failure/timeout.
+
995 * @param userData Optional value passed to the callback.
+
996 *
+
997 * @returns true if the command was sent, false otherwise.
+
998 */
+
999 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
+
1000
+
1001
+
1002 /**
+
1003 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
+
1004 *
+
1005 * Auto-config lets the radar adjust its internal thresholds and
+
1006 * sensitivities for the current environment. This can take several
+
1007 * seconds to complete and results in updated sensitivity values.
+
1008 *
+
1009 * The progress and result can be checked with requestAutoConfigStatusAsync().
+
1010 *
+
1011 * @note Requires config mode. This method will manage entering and
+
1012 * exiting config mode automatically.
+
1013 * @note Auto-config temporarily suspends normal detection reporting.
+
1014 *
+
1015 * ## Example: Run auto-config
+
1016 * @code
+
1017 * radar.beginAutoConfigAsync([](LD2410Async* sender,
+
1018 * AsyncCommandResult result,
+
1019 * byte) {
+
1020 * if (result == AsyncCommandResult::SUCCESS) {
+
1021 * Serial.println("Auto-config started.");
+
1022 * } else {
+
1023 * Serial.println("Failed to start auto-config.");
+
1024 * }
+
1025 * });
+
1026 * @endcode
+
1027 *
+
1028 * ## Do:
+
1029 * - Use in new environments to optimize detection performance.
+
1030 * - Query status afterwards with requestAutoConfigStatusAsync().
+
1031 *
+
1032 * ## Don’t:
+
1033 * - Expect instant results — the sensor needs time to complete the process.
+
1034 *
+
1035 * @param callback Callback with signature:
+
1036 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
1037 * Fired when the command is acknowledged or on failure/timeout.
+
1038 * @param userData Optional value passed to the callback.
+
1039 *
+
1040 * @returns true if the command was sent, false otherwise.
+
1041 */
+
1042 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
+
1043
+
1044
+
1045 /**
+
1046 * @brief Requests the current status of the auto-config routine.
+
1047 *
+
1048 * The status is written into the member variable autoConfigStatus:
+
1049 * - NOT_IN_PROGRESS → no auto-config running.
+
1050 * - IN_PROGRESS → auto-config is currently running.
+
1051 * - COMPLETED → auto-config finished (success or failure).
+
1052 *
+
1053 * @note Requires config mode. This method will manage mode switching automatically.
+
1054 * @note If another async command is already pending, this call fails.
+
1055 *
+
1056 * ## Example: Check auto-config status
+
1057 * @code
+
1058 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
+
1059 * AsyncCommandResult result,
+
1060 * byte) {
+
1061 * if (result == AsyncCommandResult::SUCCESS) {
+
1062 * switch (sender->autoConfigStatus) {
+
1063 * case AutoConfigStatus::NOT_IN_PROGRESS:
+
1064 * Serial.println("Auto-config not running.");
+
1065 * break;
+
1066 * case AutoConfigStatus::IN_PROGRESS:
+
1067 * Serial.println("Auto-config in progress...");
+
1068 * break;
+
1069 * case AutoConfigStatus::COMPLETED:
+
1070 * Serial.println("Auto-config completed.");
+
1071 * break;
+
1072 * default:
+
1073 * Serial.println("Unknown auto-config status.");
+
1074 * }
+
1075 * } else {
+
1076 * Serial.println("Failed to request auto-config status.");
+
1077 * }
+
1078 * });
+
1079 * @endcode
+
1080 *
+
1081 * ## Do:
+
1082 * - Use this after beginAutoConfigAsync() to track progress.
+
1083 * - Use autoConfigStatus for decision-making in your logic.
+
1084 *
+
1085 * ## Don’t:
+
1086 * - Assume COMPLETED means success — thresholds should still be verified.
+
1087 *
+
1088 * @param callback Callback with signature:
+
1089 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
1090 * Fired when the sensor replies or on failure/timeout.
+
1091 * @param userData Optional value passed to the callback.
+
1092 *
+
1093 * @returns true if the command was sent, false otherwise.
+
1094 */
+
1095 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
+
1096
+
1097
+
1098
+
1099 /*---------------------------------------------------------------------------------
+
1100 - High level commands
+
1101 ---------------------------------------------------------------------------------*/
+
1102 // High level commands typically encapsulate several native commands.
+
1103 // They provide a more consistent access to the sensors configuration,
+
1104 // e.g. for reading all config data 3 native commands are necessary,
+
1105 // to update the same data up to 12 native commands may be required.
+
1106 //The highlevel commands encapsulate both situation into a single command
+
1107
+
1108 /**
+
1109 * @brief Requests all configuration settings from the sensor.
+
1110 *
+
1111 * This triggers a sequence of queries that retrieves and updates:
+
1112 * - Gate parameters (sensitivities, max gates, timeout).
+
1113 * - Distance resolution setting.
+
1114 * - Auxiliary light/output control settings.
+
1115 *
+
1116 * The results are stored in configData, and the
+
1117 * registerConfigUpdateReceivedCallback() is invoked after completion.
+
1118 *
+
1119 * @note This is a high-level method that involves multiple commands.
+
1120 * @note Requires config mode. This method will manage mode switching automatically.
+
1121 * @note If another async command is already pending, the request fails.
+
1122 *
+
1123 * ## Example: Refresh config data
+
1124 * @code
+
1125 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
+
1126 * AsyncCommandResult result,
+
1127 * byte) {
+
1128 * if (result == AsyncCommandResult::SUCCESS) {
+
1129 * Serial.println("All config data refreshed:");
+
1130 * sender->getConfigDataRef().print();
+
1131 * }
+
1132 * });
+
1133 * @endcode
+
1134 *
+
1135 * ## Do:
+
1136 * - Use this after connecting to ensure configData is fully populated.
+
1137 * - Call before modifying config if you’re unsure of current values.
+
1138 *
+
1139 * ## Don’t:
+
1140 * - Expect it to succeed if another async command is still running.
+
1141 *
+
1142 * @param callback Callback with signature:
+
1143 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
1144 * Fired when all config data has been received or on failure.
+
1145 * @param userData Optional value passed to the callback.
+
1146 *
+
1147 * @returns true if the command was sent, false otherwise.
+
1148 */
+
1149 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
+
1150
+
1151
+
1152 /**
+
1153 * @brief Requests all static information from the sensor.
+
1154 *
+
1155 * This includes:
+
1156 * - Firmware version string.
+
1157 * - Bluetooth MAC address (numeric and string form).
+
1158 *
+
1159 * The values are written into the public members `firmware`, `mac`,
+
1160 * and `macString`.
+
1161 *
+
1162 * @note This is a high-level method that involves multiple commands.
+
1163 * @note Requires config mode. Managed automatically by this method.
+
1164 * @note If another async command is already pending, the request fails.
+
1165 *
+
1166 * ## Example: Retrieve firmware and MAC
+
1167 * @code
+
1168 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
+
1169 * AsyncCommandResult result,
+
1170 * byte) {
+
1171 * if (result == AsyncCommandResult::SUCCESS) {
+
1172 * Serial.print("Firmware: ");
+
1173 * Serial.println(sender->firmware);
+
1174 *
+
1175 * Serial.print("MAC: ");
+
1176 * Serial.println(sender->macString);
+
1177 * }
+
1178 * });
+
1179 * @endcode
+
1180 *
+
1181 * ## Do:
+
1182 * - Use after initialization to log firmware version and MAC.
+
1183 * - Useful for debugging or inventory identification.
+
1184 *
+
1185 * ## Don’t:
+
1186 * - Expect frequently changing data — this is static information.
+
1187 *
+
1188 * @param callback Callback with signature:
+
1189 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
+
1190 * Fired when static data is received or on failure.
+
1191 * @param userData Optional value passed to the callback.
+
1192 *
+
1193 * @returns true if the command was sent, false otherwise.
+
1194 */
+
1195 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
+
1196
+
1197
+
1198
+
1199 /**
+
1200 * @brief Applies a full ConfigData struct to the LD2410.
+
1201 *
+
1202 * If writeAllConfigData is true, the method will first fetch the current config,
+
1203 * compare it with the provide Config data and then create a command sequence that
+
1204 * will only update the changes config values.
+
1205 * If writeAllConfigData is false, the method will write all values in the provided
+
1206 * ConfigData to the sensor, regardless of whether they differ from the current config.
+
1207 *
+
1208 * @note This is a high-level method that involves multiple commands (up to 18).
+
1209 * @note Requires config mode. This method will manage entering and
+
1210 * exiting config mode automatically (if config mode is not already active).
+
1211 * @note If another async command is already pending, the command fails.
+
1212 * @note Any members of ConfigData that are left at invalid values
+
1213 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
+
1214 *
+
1215 * ## Example: Clone, modify, and apply config
+
1216 * @code
+
1217 * ConfigData cfg = radar.getConfigData(); // clone current config
+
1218 * cfg.noOneTimeout = 120; // change timeout
+
1219 * cfg.distanceGateMotionSensitivity[2] = 75;
+
1220 *
+
1221 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+
1222 * AsyncCommandResult result,
+
1223 * byte) {
+
1224 * if (result == AsyncCommandResult::SUCCESS) {
+
1225 * Serial.println("All config applied successfully!");
+
1226 * }
+
1227 * });
+
1228 * @endcode
+
1229 *
+
1230 * ## Do:
+
1231 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
+
1232 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
+
1233 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
+
1234 *
+
1235 * ## Don’t:
+
1236 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
+
1237 * This generates unnecessary wear on the sensors memory.
+
1238 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
+
1239
+
1240 *
+
1241 * @param configToWrite The configuration data to be applied.
+
1242 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
+
1243 * @param callback Function with signature:
+
1244 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
+
1245 * executed when the sequence finishes (success/fail/timeout/cancel).
+
1246 * @param userData Optional value passed to the callback.
+
1247 *
+
1248 * @returns true if the command sequence has been started, false otherwise.
+
1249 */
+
1250 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0);
+
1251
+
1252
+
1253
+
1254private:
+
1255 // ============================================================================
+
1256 // Low-level serial interface
+
1257 // ============================================================================
+
1258
+
1259 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
+
1260 Stream* sensor;
+
1261
+
1262
+
1263 // ============================================================================
+
1264 // Frame parsing state machine
+
1265 // ============================================================================
+
1266
+
1267 /// States used when parsing incoming frames from the sensor
+
1268 enum ReadFrameState {
+
1269 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
+
1270 ACK_HEADER, ///< Parsing header of an ACK frame
+
1271 DATA_HEADER, ///< Parsing header of a DATA frame
+
1272 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
+
1273 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
+
1274 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
+
1275 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
+
1276 };
+
1277
+
1278 /// Result type when trying to read a frame
+
1279 enum FrameReadResponse {
+
1280 FAIL = 0, ///< Frame was invalid or incomplete
+
1281 ACK, ///< A valid ACK frame was received
+
1282 DATA ///< A valid DATA frame was received
+
1283 };
+
1284
+
1285 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
+
1286 int payloadSize = 0; ///< Expected payload size of current frame
+
1287 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
+
1288
+
1289 /// Extract payload size from the current byte and update state machine
+
1290 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
+
1291
+
1292 /// Read payload bytes until full ACK/DATA frame is assembled
+
1293 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
+
1294
+
1295 /// State machine entry: read incoming frame and return read response
+
1296 FrameReadResponse readFrame();
+
1297
+
1298
+
1299 // ============================================================================
+
1300 // Receive buffer
+
1301 // ============================================================================
+
1302
+
1303 /// Raw buffer for storing incoming bytes
+
1304 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
+
1305
+
1306 /// Current index into receiveBuffer
+
1307 byte receiveBufferIndex = 0;
+
1308
+
1309
+
1310 // ============================================================================
+
1311 // Asynchronous command sequence handling
+
1312 // ============================================================================
+
1313
+
1314 /// Maximum number of commands in one async sequence
+
1315 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
+
1316
+
1317 /// Buffer holding queued commands for sequence execution
+
1318 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
+
1319
+
1320 /// Number of commands currently queued in the sequence buffer
+
1321 byte commandSequenceBufferCount = 0;
+
1322
+
1323 /// Timestamp when the current async sequence started
+
1324 unsigned long executeCommandSequenceStartMs = 0;
+
1325
+
1326 /// Callback for current async sequence
+
1327 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
+
1328
+
1329 /// User-provided data passed to async sequence callback
+
1330 byte executeCommandSequenceUserData = 0;
+
1331
+
1332 /// True if an async sequence is currently pending.
+
1333 bool executeCommandSequenceActive = false;
+
1334
+
1335 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
+
1336 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
+
1337 Ticker executeCommandSequenceOnceTicker;
+
1338
+
1339 /// Index of currently active command in the sequence buffer
+
1340 int executeCommandSequenceIndex = 0;
+
1341
+
1342 /// Stores config mode state before sequence started (to restore later)
+
1343 bool executeCommandSequenceInitialConfigModeState = false;
+
1344
+
1345 /// Finalize an async sequence and invoke its callback
+
1346 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
+
1347
+
1348 /// Final step of an async sequence: restore config mode if needed and call callback
+
1349 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
+
1350
+
1351 /// Internal callbacks for sequence steps
+
1352 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
+
1353 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
+
1354
+
1355 /// Start executing an async sequence
+
1356 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
+
1357
+
1358 /// Add one command to the sequence buffer
+
1359 bool addCommandToSequence(const byte* command);
+
1360
+
1361 /// Reset sequence buffer to empty
+
1362 bool resetCommandSequence();
+
1363
+
1364
+
1365 // ============================================================================
+
1366 // Inactivity handling
+
1367 // ============================================================================
+
1368
+
1369 /// Update last-activity timestamp ("I am alive" signal)
+
1370 void heartbeat();
+
1371
+
1372 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
+
1373 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
+
1374 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
+
1375 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
+
1376
+
1377 /// Main inactivity handler: exit config mode or reboot if stuck
+
1378 void handleInactivity();
+
1379
+
1380 /// Callback for reboot triggered by inactivity handler
+
1381 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1382
+
1383 /// Callback for disabling config mode during inactivity recovery
+
1384 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1385
+
1386
+
1387 // ============================================================================
+
1388 // Reboot handling
+
1389 // ============================================================================
+
1390
+
1391 /// Step 1: Enter config mode before reboot
+
1392 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
+
1393
+
1394 /// Step 2: Issue reboot command
+
1395 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
+
1396
+
1397
+
1398 // ============================================================================
+
1399 // ACK/DATA processing
+
1400 // ============================================================================
+
1401
+
1402 /// Process a received ACK frame
+
1403 bool processAck();
+
1404
+
1405 /// Process a received DATA frame
+
1406 bool processData();
+
1407
+
1408
+
1409 // ============================================================================
+
1410 // Callbacks
+
1411 // ============================================================================
+
1412
+
1413 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
+
1414 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
+
1415 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
+
1416
+
1417 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
+
1418 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
+
1419 void executeConfigChangedCallback(); ///< Execute config-changed callback
+
1420
+
1421 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
+
1422 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
+
1423
+
1424
+
1425 // ============================================================================
+
1426 // Command sending
+
1427 // ============================================================================
+
1428
+
1429 /// Send raw command bytes to the sensor
+
1430 void sendCommand(const byte* command);
+
1431
+
1432
+
1433 // ============================================================================
+
1434 // FreeRTOS task management
+
1435 // ============================================================================
+
1436
+
1437 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
+
1438 bool taskStop = false; ///< Stop flag for task loop
+
1439 void taskLoop(); ///< Background task loop for reading data
+
1440
+
1441
+
1442 // ============================================================================
+
1443 // Async command handling
+
1444 // ============================================================================
+
1445
+
1446 ///< Timeout for async commands in ms (default 6000).
+
1447 unsigned long asyncCommandTimeoutMs = 6000;
+
1448
+
1449 /// Send a generic async command
+
1450 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
+
1451
+
1452 /// Invoke async command callback with result
+
1453 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
+
1454
+
1455
+
1456
+
1457 /// Handle async command timeout
+
1458 void handleAsyncCommandCallbackTimeout();
+
1459
+
1460 /// Send async command that modifies configuration
+
1461 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
+
1462
+
1463 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
+
1464 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
+
1465 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
+
1466 byte asyncCommandCommandCode = 0; ///< Last command code issued
+
1467 bool asyncCommandActive = false; ///< True if an async command is currently pending.
+
1468
+
1469
+
1470 // ============================================================================
+
1471 // Data processing
+
1472 // ============================================================================
+
1473
+
1474 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
+
1475 void processReceivedData();
+
1476
+
1477 // ============================================================================
+
1478 // Config mode
+
1479 // ============================================================================
+
1480 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
+
1481 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
+
1482
+
1483 // ============================================================================
+
1484 // Config writing
+
1485 // ============================================================================
+
1486 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
+
1487 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
+
1488 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
+
1489 byte configureAllConfigSettingsAsyncConfigUserData = 0;
+
1490 bool configureAllConfigSettingsAsyncConfigActive = false;
+
1491 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
+
1492 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
+
1493
+
1494 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
+
1495 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1496 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
+
1497 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1498 bool configureAllConfigSettingsAsyncWriteConfig();
+
1499 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1500 bool configureAllConfigSettingsAsyncRequestAllConfigData();
+
1501 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
+
1502
+
1503 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
+
1504
+
1505};
+
+ + + +
Asynchronous driver for the LD2410 human presence radar sensor.
Definition LD2410Async.h:86
+
bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution explicitly to 20 cm per gate.
+
void asyncCancel()
Cancels any pending asynchronous command or sequence.
+
void setInactivityTimeoutMs(unsigned long timeoutMs)
Sets the timeout period for inactivity handling.
+
bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
Configures the maximum detection gates and "no-one" timeout on the sensor.
+
bool begin()
Starts the background task that continuously reads data from the sensor.
+
AsyncCommandResult
Result of an asynchronous command execution.
Definition LD2410Async.h:95
+
@ TIMEOUT
No ACK received within the expected time window.
+
@ FAILED
Command failed (sensor responded with negative ACK).
+
@ SUCCESS
Command completed successfully and ACK was received.
+
@ CANCELED
Command was canceled by the user before completion.
+
void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
Callback type for receiving detection data events.
+
bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
Configures sensitivity thresholds for all gates at once.
+
bool isConfigModeEnabled() const
Detects if config mode is enabled.
+
bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current distance resolution setting from the sensor.
+
bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
Disables engineering mode.
+
bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
Requests the bluetooth mac address.
+
bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
Configures the UART baud rate of the sensor.
+
void enableInactivityHandling()
Convenience method: enables inactivity handling.
+
bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution explicitly to 75 cm per gate.
+
void setInactivityHandling(bool enable)
Enables or disables automatic inactivity handling of the sensor.
+
bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
Applies a full ConfigData struct to the LD2410.
+
LD2410Types::ConfigData getConfigData() const
Returns a clone of the current configuration data of the radar.
+
LD2410Types::DetectionData getDetectionData() const
Returns a clone of the latest detection data from the radar.
+
void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
Sets the timeout for async command callbacks.
+
bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
Requests the firmware version of the sensor.
+
LD2410Types::ConfigData configData
Current configuration parameters of the radar.
+
void disableInactivityHandling()
Convenience method: disables inactivity handling.
+
String firmware
Firmware version string of the radar.
+
void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
Registers a callback for configuration changes.
+
bool asyncIsBusy()
Checks if an asynchronous command is currently pending.
+
unsigned long getInactivityTimeoutMs() const
Returns the current inactivity timeout period.
+
bool configModeEnabled
True if the sensor is currently in config mode.
+
void(*) GenericCallback(LD2410Async *sender, byte userData)
Generic callback signature used for simple notifications.
+
byte mac[6]
MAC address of the radar’s Bluetooth module (if available).
+
String macString
MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
+
bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
Requests all static information from the sensor.
+
bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
Configures the auxiliary control parameters (light and output pin).
+
unsigned long getAsyncCommandTimeoutMs() const
Returns the current async command timeout.
+
bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
Disables config mode on the radar.
+
bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
Enables bluetooth.
+
LD2410Types::DetectionData detectionData
Latest detection results from the radar.
+
LD2410Types::AutoConfigStatus autoConfigStatus
Current status of the auto-configuration routine.
+
bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
Sets the password for bluetooth access to the sensor.
+
bool engineeringModeEnabled
True if the sensor is currently in engineering mode.
+
bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
Restores factory settings of the sensor.
+
bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
Requests all configuration settings from the sensor.
+
bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
Resets the password for bluetooth access to the default value (HiLink)
+
LD2410Async(Stream &serial)
Constructs a new LD2410Async instance bound to a given serial stream.
+
unsigned long bufferSize
Buffer size reported by the radar protocol.
+
bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current status of the auto-config routine.
+
bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
Enables config mode on the radar.
+
bool isEngineeringModeEnabled() const
Detects if engineering mode is enabled.
+
void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
Registers a callback for configuration data updates.
+
bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
Enables engineering mode.
+
bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current gate parameters from the sensor.
+
unsigned long protocolVersion
Protocol version reported by the radar.
+
void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
Callback signature for asynchronous command completion.
+
bool isInactivityHandlingEnabled() const
Returns whether inactivity handling is currently enabled.
+
bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
Disables bluetooth.
+
const LD2410Types::DetectionData & getDetectionDataRef() const
Access the current detection data without making a copy.
+
bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
Configures the distance resolution of the radar.
+
bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
Reboots the sensor.
+
bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
Starts the automatic configuration (auto-config) routine on the sensor.
+
void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
Registers a callback for new detection data.
+
bool end()
Stops the background task started by begin().
+
const LD2410Types::ConfigData & getConfigDataRef() const
Access the current config data without making a copy.
+
bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
Requests the current auxiliary control settings.
+
constexpr size_t LD2410_Buffer_Size
Definition LD2410Defs.h:11
+
AutoConfigStatus
State of the automatic threshold configuration routine.
+
@ NOT_SET
Status not yet retrieved.
+
OutputControl
Logic level behavior of the auxiliary output pin.
+
Baudrate
Supported baud rates for the sensor’s UART interface.
+
DistanceResolution
Distance resolution per gate for detection.
+
LightControl
Light-dependent control status of the auxiliary output.
Definition LD2410Types.h:89
+
Stores the sensor’s configuration parameters.
+
Holds the most recent detection data reported by the radar.
+
+
+ + + + diff --git a/docu/LD2410CommandBuilder_8h.html b/docu/LD2410CommandBuilder_8h.html new file mode 100644 index 0000000..cce2e42 --- /dev/null +++ b/docu/LD2410CommandBuilder_8h.html @@ -0,0 +1,153 @@ + + + + + + + +LD2410Async: LD2410CommandBuilder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410CommandBuilder.h File Reference
+
+
+
#include "Arduino.h"
+#include "LD2410Async.h"
+#include "LD2410Defs.h"
+#include "LD2410Types.h"
+
+Include dependency graph for LD2410CommandBuilder.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  LD2410CommandBuilder
 
+ + + + + + + + + + + + + +

+Functions

bool LD2410CommandBuilder::buildMaxGateCommand (byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
 
bool LD2410CommandBuilder::buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
 
bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)
 
bool LD2410CommandBuilder::buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
 
bool LD2410CommandBuilder::buildBaudRateCommand (byte *out, byte baudRateSetting)
 
bool LD2410CommandBuilder::buildBluetoothPasswordCommand (byte *out, const char *password)
 
+
+
+ + + + diff --git a/docu/LD2410CommandBuilder_8h.js b/docu/LD2410CommandBuilder_8h.js new file mode 100644 index 0000000..f410986 --- /dev/null +++ b/docu/LD2410CommandBuilder_8h.js @@ -0,0 +1,9 @@ +var LD2410CommandBuilder_8h = +[ + [ "buildAuxControlCommand", "LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255", null ], + [ "buildBaudRateCommand", "LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729", null ], + [ "buildBluetoothPasswordCommand", "LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f", null ], + [ "buildDistanceResolutionCommand", "LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f", null ], + [ "buildGateSensitivityCommand", "LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6", null ], + [ "buildMaxGateCommand", "LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e", null ] +]; \ No newline at end of file diff --git a/docu/LD2410CommandBuilder_8h__dep__incl.map b/docu/LD2410CommandBuilder_8h__dep__incl.map new file mode 100644 index 0000000..e7ea3d9 --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/LD2410CommandBuilder_8h__dep__incl.md5 b/docu/LD2410CommandBuilder_8h__dep__incl.md5 new file mode 100644 index 0000000..1382ebf --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__dep__incl.md5 @@ -0,0 +1 @@ +3cfa1eccc40145737994b6323d98e749 \ No newline at end of file diff --git a/docu/LD2410CommandBuilder_8h__dep__incl.svg b/docu/LD2410CommandBuilder_8h__dep__incl.svg new file mode 100644 index 0000000..e9c531a --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__dep__incl.svg @@ -0,0 +1,39 @@ + + + + + + +LD2410CommandBuilder.h + + +Node1 + + +LD2410CommandBuilder.h + + + + + +Node2 + + +LD2410Async.cpp + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/LD2410CommandBuilder_8h__incl.map b/docu/LD2410CommandBuilder_8h__incl.map new file mode 100644 index 0000000..afc0b92 --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__incl.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docu/LD2410CommandBuilder_8h__incl.md5 b/docu/LD2410CommandBuilder_8h__incl.md5 new file mode 100644 index 0000000..48f52fc --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__incl.md5 @@ -0,0 +1 @@ +6bf035d62b95edc71b07e2b2953e446c \ No newline at end of file diff --git a/docu/LD2410CommandBuilder_8h__incl.svg b/docu/LD2410CommandBuilder_8h__incl.svg new file mode 100644 index 0000000..dcb18cc --- /dev/null +++ b/docu/LD2410CommandBuilder_8h__incl.svg @@ -0,0 +1,192 @@ + + + + + + +LD2410CommandBuilder.h + + +Node1 + + +LD2410CommandBuilder.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async.h + + + + + +Node1->Node3 + + + + + + + + +Node6 + + +LD2410Types.h + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +LD2410Defs.h + + + + + +Node1->Node7 + + + + + + + + +Node3->Node2 + + + + + + + + +Node4 + + +Ticker.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +LD2410Debug.h + + + + + +Node3->Node5 + + + + + + + + +Node3->Node6 + + + + + + + + +Node3->Node7 + + + + + + + + +Node5->Node2 + + + + + + + + +Node6->Node2 + + + + + + + + +Node7->Node2 + + + + + + + + +Node7->Node3 + + + + + + + + diff --git a/docu/LD2410CommandBuilder_8h_source.html b/docu/LD2410CommandBuilder_8h_source.html new file mode 100644 index 0000000..516f3bd --- /dev/null +++ b/docu/LD2410CommandBuilder_8h_source.html @@ -0,0 +1,252 @@ + + + + + + + +LD2410Async: LD2410CommandBuilder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410CommandBuilder.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include "Arduino.h"
+
3#include "LD2410Async.h"
+
4#include "LD2410Defs.h"
+
5#include "LD2410Types.h"
+
6
+
+ +
8
+
+
9 inline bool buildMaxGateCommand(byte* out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout) {
+
10
+
11 if (maxMotionGate < 2 || maxMotionGate > 8) return false;
+
12 if (maxStationaryGate < 2 || maxStationaryGate > 8) return false;
+
13
+ +
15
+
16 out[6] = maxMotionGate;
+
17 out[12] = maxStationaryGate;
+
18
+
19 memcpy(&out[18], &noOneTimeout, 2);
+
20
+
21 return true;
+
22
+
23 }
+
+
24
+
+
25 inline bool buildGateSensitivityCommand(byte* out, byte gate, byte movingThreshold, byte stationaryThreshold) {
+
26
+
27 if (gate > 8 && gate != 0xFF) return false; // 08 allowed, or 0xFF (all gates)
+
28
+ + +
31
+
32 if (gate > 8) {
+
33 out[6] = 0xFF;
+
34 out[7] = 0xFF;
+
35 }
+
36 else {
+
37 out[6] = gate;
+
38 out[7] = 0;
+
39 }
+
40
+
41 if (movingThreshold > 100) movingThreshold = 100;
+
42 if (stationaryThreshold > 100) stationaryThreshold = 100;
+
43
+
44 out[12] = movingThreshold;
+
45 out[18] = stationaryThreshold;
+
46 return true;
+
47 }
+
+
48
+
+ + + + +
53 }
+ + + +
57 }
+
58 else {
+
59 return false;
+
60 }
+
61 return true;
+
62 }
+
+
63
+
+
64 inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) {
+ + +
67
+
68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
+
69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
+
70
+
71 out[4] = byte(lightControl);
+
72 out[5] = lightThreshold;
+
73 out[6] = byte(outputControl);
+
74 return true;
+
75 }
+
+
76
+
+
77 inline bool buildBaudRateCommand(byte* out, byte baudRateSetting) {
+ +
79 if (baudRateSetting < 1 || baudRateSetting > 8) return false;
+
80 out[4] = baudRateSetting;
+
81 return true;
+
82 }
+
+
83
+
+
84 inline bool buildBluetoothPasswordCommand(byte* out, const char* password) {
+
85 if (!password) return false;
+
86 size_t len = strlen(password);
+
87 if (len > 6) return false;
+
88
+ + +
91
+
92 for (unsigned int i = 0; i < 6; i++) {
+
93 if (i < strlen(password))
+
94 out[4 + i] = byte(password[i]);
+
95 else
+
96 out[4 + i] = byte(' '); // pad with spaces
+
97 }
+
98 return true;
+
99 }
+
+
100
+
101}
+
+ + + + +
bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
+
bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
+
bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
+
bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
+
bool buildBluetoothPasswordCommand(byte *out, const char *password)
+
bool buildBaudRateCommand(byte *out, byte baudRateSetting)
+
constexpr byte setAuxControlSettingCommandData[8]
Definition LD2410Defs.h:68
+
constexpr byte distanceGateSensitivityConfigCommandData[0x16]
Definition LD2410Defs.h:77
+
constexpr byte setBluetoothPasswordCommandData[10]
Definition LD2410Defs.h:53
+
constexpr byte setDistanceResolution20cmCommandData[6]
Definition LD2410Defs.h:35
+
constexpr byte maxGateCommandData[0x16]
Definition LD2410Defs.h:83
+
constexpr byte setBaudRateCommandData[6]
Definition LD2410Defs.h:38
+
constexpr byte setDistanceResolution75cmCommandData[6]
Definition LD2410Defs.h:34
+
OutputControl
Logic level behavior of the auxiliary output pin.
+
@ NOT_SET
Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
+
DistanceResolution
Distance resolution per gate for detection.
+
@ RESOLUTION_20CM
Each gate ~0.20 m, max range ~1.8 m.
+
@ RESOLUTION_75CM
Each gate ~0.75 m, max range ~6 m.
+
LightControl
Light-dependent control status of the auxiliary output.
Definition LD2410Types.h:89
+
@ NOT_SET
Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
+
+
+ + + + diff --git a/docu/LD2410Debug_8h.html b/docu/LD2410Debug_8h.html new file mode 100644 index 0000000..1c3da5a --- /dev/null +++ b/docu/LD2410Debug_8h.html @@ -0,0 +1,313 @@ + + + + + + + +LD2410Async: LD2410Debug.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Debug.h File Reference
+
+
+
#include "Arduino.h"
+
+Include dependency graph for LD2410Debug.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Macros

#define LD2410ASYNC_DEBUG_LEVEL   0
 
#define LD2410ASYNC_DEBUG_DATA_LEVEL   0
 
#define DEBUG_PRINT_MILLIS
 
#define DEBUG_PRINT(...)
 
#define DEBUG_PRINTLN(...)
 
#define DEBUG_PRINTBUF(...)
 
#define DEBUG_PRINT_DATA(...)
 
#define DEBUG_PRINTLN_DATA(...)
 
#define DEBUG_PRINTBUF_DATA(...)
 
+

Macro Definition Documentation

+ +

◆ DEBUG_PRINT

+ +
+
+ + + + + + + +
#define DEBUG_PRINT( ...)
+
+ +

Definition at line 49 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINT_DATA

+ +
+
+ + + + + + + +
#define DEBUG_PRINT_DATA( ...)
+
+ +

Definition at line 66 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINT_MILLIS

+ +
+
+ + + + +
#define DEBUG_PRINT_MILLIS
+
+ +

Definition at line 48 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINTBUF

+ +
+
+ + + + + + + +
#define DEBUG_PRINTBUF( ...)
+
+ +

Definition at line 51 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINTBUF_DATA

+ +
+
+ + + + + + + +
#define DEBUG_PRINTBUF_DATA( ...)
+
+ +

Definition at line 68 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINTLN

+ +
+
+ + + + + + + +
#define DEBUG_PRINTLN( ...)
+
+ +

Definition at line 50 of file LD2410Debug.h.

+ +
+
+ +

◆ DEBUG_PRINTLN_DATA

+ +
+
+ + + + + + + +
#define DEBUG_PRINTLN_DATA( ...)
+
+ +

Definition at line 67 of file LD2410Debug.h.

+ +
+
+ +

◆ LD2410ASYNC_DEBUG_DATA_LEVEL

+ +
+
+ + + + +
#define LD2410ASYNC_DEBUG_DATA_LEVEL   0
+
+ +

Definition at line 15 of file LD2410Debug.h.

+ +
+
+ +

◆ LD2410ASYNC_DEBUG_LEVEL

+ +
+
+ + + + +
#define LD2410ASYNC_DEBUG_LEVEL   0
+
+ +

Definition at line 11 of file LD2410Debug.h.

+ +
+
+
+
+ + + + diff --git a/docu/LD2410Debug_8h.js b/docu/LD2410Debug_8h.js new file mode 100644 index 0000000..8ae5744 --- /dev/null +++ b/docu/LD2410Debug_8h.js @@ -0,0 +1,12 @@ +var LD2410Debug_8h = +[ + [ "DEBUG_PRINT", "LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23", null ], + [ "DEBUG_PRINT_DATA", "LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332", null ], + [ "DEBUG_PRINT_MILLIS", "LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab", null ], + [ "DEBUG_PRINTBUF", "LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe", null ], + [ "DEBUG_PRINTBUF_DATA", "LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a", null ], + [ "DEBUG_PRINTLN", "LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34", null ], + [ "DEBUG_PRINTLN_DATA", "LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48", null ], + [ "LD2410ASYNC_DEBUG_DATA_LEVEL", "LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40", null ], + [ "LD2410ASYNC_DEBUG_LEVEL", "LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163", null ] +]; \ No newline at end of file diff --git a/docu/LD2410Debug_8h__dep__incl.map b/docu/LD2410Debug_8h__dep__incl.map new file mode 100644 index 0000000..7a70d01 --- /dev/null +++ b/docu/LD2410Debug_8h__dep__incl.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docu/LD2410Debug_8h__dep__incl.md5 b/docu/LD2410Debug_8h__dep__incl.md5 new file mode 100644 index 0000000..46c426c --- /dev/null +++ b/docu/LD2410Debug_8h__dep__incl.md5 @@ -0,0 +1 @@ +3331d3b54448c3745b66e2624f1a7fd1 \ No newline at end of file diff --git a/docu/LD2410Debug_8h__dep__incl.svg b/docu/LD2410Debug_8h__dep__incl.svg new file mode 100644 index 0000000..35ecaf0 --- /dev/null +++ b/docu/LD2410Debug_8h__dep__incl.svg @@ -0,0 +1,129 @@ + + + + + + +LD2410Debug.h + + +Node1 + + +LD2410Debug.h + + + + + +Node2 + + +LD2410Async.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async.cpp + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +LD2410CommandBuilder.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +LD2410Defs.h + + + + + +Node2->Node5 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5->Node2 + + + + + + + + +Node5->Node3 + + + + + + + + +Node5->Node4 + + + + + + + + diff --git a/docu/LD2410Debug_8h__incl.map b/docu/LD2410Debug_8h__incl.map new file mode 100644 index 0000000..d450e7d --- /dev/null +++ b/docu/LD2410Debug_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/LD2410Debug_8h__incl.md5 b/docu/LD2410Debug_8h__incl.md5 new file mode 100644 index 0000000..6c28f10 --- /dev/null +++ b/docu/LD2410Debug_8h__incl.md5 @@ -0,0 +1 @@ +c7d9edce751d2099a20c9bdd68d7ecff \ No newline at end of file diff --git a/docu/LD2410Debug_8h__incl.svg b/docu/LD2410Debug_8h__incl.svg new file mode 100644 index 0000000..34f6335 --- /dev/null +++ b/docu/LD2410Debug_8h__incl.svg @@ -0,0 +1,39 @@ + + + + + + +LD2410Debug.h + + +Node1 + + +LD2410Debug.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/LD2410Debug_8h_source.html b/docu/LD2410Debug_8h_source.html new file mode 100644 index 0000000..2408d34 --- /dev/null +++ b/docu/LD2410Debug_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + +LD2410Async: LD2410Debug.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Debug.h
+
+
+Go to the documentation of this file.
1
+
2
+
3#pragma once
+
4#include "Arduino.h"
+
5
+
6// =======================================================================================
+
7// Debug level configuration
+
8// =======================================================================================
+
9// If not defined by the user/project, initialize to 0 (disabled).
+
10#ifndef LD2410ASYNC_DEBUG_LEVEL
+
11#define LD2410ASYNC_DEBUG_LEVEL 0
+
12#endif
+
13
+
14#ifndef LD2410ASYNC_DEBUG_DATA_LEVEL
+
15#define LD2410ASYNC_DEBUG_DATA_LEVEL 0
+
16#endif
+
17
+
18// =======================================================================================
+
19// Helper: Hex buffer print (only compiled if needed)
+
20// =======================================================================================
+
21#if (LD2410ASYNC_DEBUG_LEVEL > 1) || (LD2410ASYNC_DEBUG_DATA_LEVEL > 1)
+
22static inline void printBuf(const byte* buf, byte size)
+
23{
+
24 for (byte i = 0; i < size; i++) {
+
25 String bStr(buf[i], HEX);
+
26 bStr.toUpperCase();
+
27 if (bStr.length() == 1) bStr = "0" + bStr;
+
28 Serial.print(bStr);
+
29 Serial.print(' ');
+
30 }
+
31 Serial.println();
+
32}
+
33#endif
+
34
+
35// =======================================================================================
+
36// Normal debug macros
+
37// =======================================================================================
+
38#if LD2410ASYNC_DEBUG_LEVEL > 0
+
39#define DEBUG_PRINT_MILLIS { Serial.print(millis()); Serial.print(" "); }
+
40#define DEBUG_PRINT(...) { Serial.print(__VA_ARGS__); }
+
41#define DEBUG_PRINTLN(...) { Serial.println(__VA_ARGS__); }
+
42#if LD2410ASYNC_DEBUG_LEVEL > 1
+
43#define DEBUG_PRINTBUF(...) { printBuf(__VA_ARGS__); }
+
44#else
+
45#define DEBUG_PRINTBUF(...)
+
46#endif
+
47#else
+
48#define DEBUG_PRINT_MILLIS
+
49#define DEBUG_PRINT(...)
+
50#define DEBUG_PRINTLN(...)
+
51#define DEBUG_PRINTBUF(...)
+
52#endif
+
53
+
54// =======================================================================================
+
55// Data debug macros
+
56// =======================================================================================
+
57#if LD2410ASYNC_DEBUG_DATA_LEVEL > 0
+
58#define DEBUG_PRINT_DATA(...) { Serial.print(__VA_ARGS__); }
+
59#define DEBUG_PRINTLN_DATA(...) { Serial.println(__VA_ARGS__); }
+
60#if LD2410ASYNC_DEBUG_DATA_LEVEL > 1
+
61#define DEBUG_PRINTBUF_DATA(...) { printBuf(__VA_ARGS__); }
+
62#else
+
63#define DEBUG_PRINTBUF_DATA(...)
+
64#endif
+
65#else
+
66#define DEBUG_PRINT_DATA(...)
+
67#define DEBUG_PRINTLN_DATA(...)
+
68#define DEBUG_PRINTBUF_DATA(...)
+
69#endif
+
+
+ + + + diff --git a/docu/LD2410Defs_8h.html b/docu/LD2410Defs_8h.html new file mode 100644 index 0000000..1f44fbb --- /dev/null +++ b/docu/LD2410Defs_8h.html @@ -0,0 +1,235 @@ + + + + + + + +LD2410Async: LD2410Defs.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Defs.h File Reference
+
+
+
#include "Arduino.h"
+#include "LD2410Async.h"
+
+Include dependency graph for LD2410Defs.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  LD2410Defs
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

constexpr size_t LD2410Defs::LD2410_Buffer_Size = 0x40
 
constexpr byte LD2410Defs::headData [4] { 0xF4, 0xF3, 0xF2, 0xF1 }
 
constexpr byte LD2410Defs::tailData [4] { 0xF8, 0xF7, 0xF6, 0xF5 }
 
constexpr byte LD2410Defs::headConfig [4] { 0xFD, 0xFC, 0xFB, 0xFA }
 
constexpr byte LD2410Defs::tailConfig [4] { 4, 3, 2, 1 }
 
constexpr byte LD2410Defs::configEnableCommand = 0xff
 
constexpr byte LD2410Defs::configEnableCommandData [6] { 4, 0, configEnableCommand, 0, 1, 0 }
 
constexpr byte LD2410Defs::configDisableCommand = 0xFE
 
constexpr byte LD2410Defs::configDisableCommandData [4] { 2, 0, configDisableCommand, 0 }
 
constexpr byte LD2410Defs::requestMacAddressCommand = 0xA5
 
constexpr byte LD2410Defs::requestMacAddressCommandData [6] { 4, 0, requestMacAddressCommand, 0, 1, 0 }
 
constexpr byte LD2410Defs::requestFirmwareCommand = 0xA0
 
constexpr byte LD2410Defs::requestFirmwareCommandData [4] { 2, 0, requestFirmwareCommand, 0 }
 
constexpr byte LD2410Defs::requestDistanceResolutionCommand = 0xAB
 
constexpr byte LD2410Defs::requestDistanceResolutionCommandData [4] { 2, 0, requestDistanceResolutionCommand, 0 }
 
constexpr byte LD2410Defs::setDistanceResolutionCommand = 0xAA
 
constexpr byte LD2410Defs::setDistanceResolution75cmCommandData [6] { 4, 0, setDistanceResolutionCommand, 0, 0, 0 }
 
constexpr byte LD2410Defs::setDistanceResolution20cmCommandData [6] { 4, 0, setDistanceResolutionCommand, 0, 1, 0 }
 
constexpr byte LD2410Defs::setBaudRateCommand = 0xA1
 
constexpr byte LD2410Defs::setBaudRateCommandData [6] { 4, 0, setBaudRateCommand, 0, 7, 0 }
 
constexpr byte LD2410Defs::restoreFactorySettingsAsyncCommand = 0xA2
 
constexpr byte LD2410Defs::restoreFactorSettingsCommandData [4] { 2, 0, restoreFactorySettingsAsyncCommand, 0 }
 
constexpr byte LD2410Defs::rebootCommand = 0xA3
 
constexpr byte LD2410Defs::rebootCommandData [4] { 2, 0, rebootCommand, 0 }
 
constexpr byte LD2410Defs::bluetoothSettingsCommand = 0xA4
 
constexpr byte LD2410Defs::bluetoothSettingsOnCommandData [6] { 4, 0, bluetoothSettingsCommand, 0, 1, 0 }
 
constexpr byte LD2410Defs::bluetoothSettingsOffCommandData [6] { 4, 0, bluetoothSettingsCommand, 0, 0, 0 }
 
constexpr byte LD2410Defs::getBluetoothPermissionsCommand = 0xA8
 
constexpr byte LD2410Defs::setBluetoothPasswordCommand = 0xA9
 
constexpr byte LD2410Defs::setBluetoothPasswordCommandData [10] { 8, 0, setBluetoothPasswordCommand, 0, 0x48, 0x69, 0x4C, 0x69, 0x6E, 0x6B }
 
constexpr byte LD2410Defs::requestParamsCommand = 0x61
 
constexpr byte LD2410Defs::requestParamsCommandData [4] { 2, 0, requestParamsCommand, 0 }
 
constexpr byte LD2410Defs::engineeringModeEnableComand = 0x62
 
constexpr byte LD2410Defs::engineeringModeEnableCommandData [4] { 2, 0, engineeringModeEnableComand, 0 }
 
constexpr byte LD2410Defs::engineeringModeDisableComand = 0x63
 
constexpr byte LD2410Defs::engineeringModeDisableCommandData [4] { 2, 0, engineeringModeDisableComand, 0 }
 
constexpr byte LD2410Defs::requestAuxControlSettingsCommand = 0xAE
 
constexpr byte LD2410Defs::requestAuxControlSettingsCommandData [4] { 2, 0, requestAuxControlSettingsCommand, 0 }
 
constexpr byte LD2410Defs::setAuxControlSettingsCommand = 0xAD
 
constexpr byte LD2410Defs::setAuxControlSettingCommandData [8] { 6, 0, setAuxControlSettingsCommand, 0, 0, 0x80, 0, 0 }
 
constexpr byte LD2410Defs::beginAutoConfigCommand = 0x0B
 
constexpr byte LD2410Defs::beginAutoConfigCommandData [6] { 4, 0, beginAutoConfigCommand, 0, 0x0A, 0 }
 
constexpr byte LD2410Defs::requestAutoConfigStatusCommand = 0x1B
 
constexpr byte LD2410Defs::requestAutoConfigStatusCommandData [4] { 2, 0, requestAutoConfigStatusCommand, 0 }
 
constexpr byte LD2410Defs::distanceGateSensitivityConfigCommand = 0x64
 
constexpr byte LD2410Defs::distanceGateSensitivityConfigCommandData [0x16]
 
constexpr byte LD2410Defs::maxGateCommand = 0x60
 
constexpr byte LD2410Defs::maxGateCommandData [0x16]
 
+
+
+ + + + diff --git a/docu/LD2410Defs_8h.js b/docu/LD2410Defs_8h.js new file mode 100644 index 0000000..191a15f --- /dev/null +++ b/docu/LD2410Defs_8h.js @@ -0,0 +1,51 @@ +var LD2410Defs_8h = +[ + [ "beginAutoConfigCommand", "LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398", null ], + [ "beginAutoConfigCommandData", "LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200", null ], + [ "bluetoothSettingsCommand", "LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105", null ], + [ "bluetoothSettingsOffCommandData", "LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7", null ], + [ "bluetoothSettingsOnCommandData", "LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8", null ], + [ "configDisableCommand", "LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89", null ], + [ "configDisableCommandData", "LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584", null ], + [ "configEnableCommand", "LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55", null ], + [ "configEnableCommandData", "LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3", null ], + [ "distanceGateSensitivityConfigCommand", "LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8", null ], + [ "distanceGateSensitivityConfigCommandData", "LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4", null ], + [ "engineeringModeDisableComand", "LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d", null ], + [ "engineeringModeDisableCommandData", "LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939", null ], + [ "engineeringModeEnableComand", "LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9", null ], + [ "engineeringModeEnableCommandData", "LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d", null ], + [ "getBluetoothPermissionsCommand", "LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34", null ], + [ "headConfig", "LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478", null ], + [ "headData", "LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34", null ], + [ "LD2410_Buffer_Size", "LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f", null ], + [ "maxGateCommand", "LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816", null ], + [ "maxGateCommandData", "LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97", null ], + [ "rebootCommand", "LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5", null ], + [ "rebootCommandData", "LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a", null ], + [ "requestAutoConfigStatusCommand", "LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde", null ], + [ "requestAutoConfigStatusCommandData", "LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699", null ], + [ "requestAuxControlSettingsCommand", "LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303", null ], + [ "requestAuxControlSettingsCommandData", "LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd", null ], + [ "requestDistanceResolutionCommand", "LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd", null ], + [ "requestDistanceResolutionCommandData", "LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273", null ], + [ "requestFirmwareCommand", "LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2", null ], + [ "requestFirmwareCommandData", "LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6", null ], + [ "requestMacAddressCommand", "LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df", null ], + [ "requestMacAddressCommandData", "LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62", null ], + [ "requestParamsCommand", "LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b", null ], + [ "requestParamsCommandData", "LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01", null ], + [ "restoreFactorSettingsCommandData", "LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b", null ], + [ "restoreFactorySettingsAsyncCommand", "LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75", null ], + [ "setAuxControlSettingCommandData", "LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e", null ], + [ "setAuxControlSettingsCommand", "LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18", null ], + [ "setBaudRateCommand", "LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b", null ], + [ "setBaudRateCommandData", "LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790", null ], + [ "setBluetoothPasswordCommand", "LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9", null ], + [ "setBluetoothPasswordCommandData", "LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8", null ], + [ "setDistanceResolution20cmCommandData", "LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151", null ], + [ "setDistanceResolution75cmCommandData", "LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb", null ], + [ "setDistanceResolutionCommand", "LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9", null ], + [ "tailConfig", "LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce", null ], + [ "tailData", "LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f", null ] +]; \ No newline at end of file diff --git a/docu/LD2410Defs_8h__dep__incl.map b/docu/LD2410Defs_8h__dep__incl.map new file mode 100644 index 0000000..f6baf82 --- /dev/null +++ b/docu/LD2410Defs_8h__dep__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docu/LD2410Defs_8h__dep__incl.md5 b/docu/LD2410Defs_8h__dep__incl.md5 new file mode 100644 index 0000000..8d39de2 --- /dev/null +++ b/docu/LD2410Defs_8h__dep__incl.md5 @@ -0,0 +1 @@ +0628499cc33f08fabf9b6598ab638c9e \ No newline at end of file diff --git a/docu/LD2410Defs_8h__dep__incl.svg b/docu/LD2410Defs_8h__dep__incl.svg new file mode 100644 index 0000000..08fe9fd --- /dev/null +++ b/docu/LD2410Defs_8h__dep__incl.svg @@ -0,0 +1,111 @@ + + + + + + +LD2410Defs.h + + +Node1 + + +LD2410Defs.h + + + + + +Node2 + + +LD2410Async.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410CommandBuilder.h + + + + + +Node1->Node4 + + + + + + + + +Node3->Node1 + + + + + + + + +Node3->Node2 + + + + + + + + +Node3->Node4 + + + + + + + + +Node4->Node2 + + + + + + + + diff --git a/docu/LD2410Defs_8h__incl.map b/docu/LD2410Defs_8h__incl.map new file mode 100644 index 0000000..acc0d2b --- /dev/null +++ b/docu/LD2410Defs_8h__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docu/LD2410Defs_8h__incl.md5 b/docu/LD2410Defs_8h__incl.md5 new file mode 100644 index 0000000..71c4dc3 --- /dev/null +++ b/docu/LD2410Defs_8h__incl.md5 @@ -0,0 +1 @@ +832d21fbb7c5e57a12567c4ed6f025c5 \ No newline at end of file diff --git a/docu/LD2410Defs_8h__incl.svg b/docu/LD2410Defs_8h__incl.svg new file mode 100644 index 0000000..0d9f037 --- /dev/null +++ b/docu/LD2410Defs_8h__incl.svg @@ -0,0 +1,147 @@ + + + + + + +LD2410Defs.h + + +Node1 + + +LD2410Defs.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async.h + + + + + +Node1->Node3 + + + + + + + + +Node3->Node1 + + + + + + + + +Node3->Node2 + + + + + + + + +Node4 + + +Ticker.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +LD2410Debug.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +LD2410Types.h + + + + + +Node3->Node6 + + + + + + + + +Node5->Node2 + + + + + + + + +Node6->Node2 + + + + + + + + diff --git a/docu/LD2410Defs_8h_source.html b/docu/LD2410Defs_8h_source.html new file mode 100644 index 0000000..87f9aa6 --- /dev/null +++ b/docu/LD2410Defs_8h_source.html @@ -0,0 +1,256 @@ + + + + + + + +LD2410Async: LD2410Defs.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Defs.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include "Arduino.h"
+
3#include "LD2410Async.h" // for enums like LightControl, DistanceResolution
+
4
+
5// LD2410Defs.h
+
6// Internal protocol constants and command templates.
+
7// Not part of the public API subject to change.
+
8
+
+
9namespace LD2410Defs
+
10{
+
11 constexpr size_t LD2410_Buffer_Size = 0x40;
+
12
+
13 constexpr byte headData[4]{ 0xF4, 0xF3, 0xF2, 0xF1 };
+
14 constexpr byte tailData[4]{ 0xF8, 0xF7, 0xF6, 0xF5 };
+
15 constexpr byte headConfig[4]{ 0xFD, 0xFC, 0xFB, 0xFA };
+
16 constexpr byte tailConfig[4]{ 4, 3, 2, 1 };
+
17
+
18 constexpr byte configEnableCommand = 0xff;
+
19 constexpr byte configEnableCommandData[6]{ 4, 0, configEnableCommand, 0, 1, 0 };
+
20
+
21 constexpr byte configDisableCommand = 0xFE;
+
22 constexpr byte configDisableCommandData[4]{ 2, 0, configDisableCommand, 0 };
+
23
+
24 constexpr byte requestMacAddressCommand = 0xA5;
+
25 constexpr byte requestMacAddressCommandData[6]{ 4, 0, requestMacAddressCommand, 0, 1, 0 };
+
26
+
27 constexpr byte requestFirmwareCommand = 0xA0;
+ +
29
+
30 constexpr byte requestDistanceResolutionCommand = 0xAB;
+ +
32
+
33 constexpr byte setDistanceResolutionCommand = 0xAA;
+ + +
36
+
37 constexpr byte setBaudRateCommand = 0xA1;
+
38 constexpr byte setBaudRateCommandData[6]{ 4, 0, setBaudRateCommand, 0, 7, 0 };
+
39
+ + +
42
+
43 constexpr byte rebootCommand = 0xA3;
+
44 constexpr byte rebootCommandData[4]{ 2, 0, rebootCommand, 0 };
+
45
+
46 constexpr byte bluetoothSettingsCommand = 0xA4;
+
47 constexpr byte bluetoothSettingsOnCommandData[6]{ 4, 0, bluetoothSettingsCommand, 0, 1, 0 };
+
48 constexpr byte bluetoothSettingsOffCommandData[6]{ 4, 0, bluetoothSettingsCommand, 0, 0, 0 };
+
49
+
50 constexpr byte getBluetoothPermissionsCommand = 0xA8;
+
51
+
52 constexpr byte setBluetoothPasswordCommand = 0xA9;
+
53 constexpr byte setBluetoothPasswordCommandData[10]{ 8, 0, setBluetoothPasswordCommand, 0, 0x48, 0x69, 0x4C, 0x69, 0x6E, 0x6B };
+
54
+
55 constexpr byte requestParamsCommand = 0x61;
+
56 constexpr byte requestParamsCommandData[4]{ 2, 0, requestParamsCommand, 0 };
+
57
+
58 constexpr byte engineeringModeEnableComand = 0x62;
+ +
60
+
61 constexpr byte engineeringModeDisableComand = 0x63;
+ +
63
+
64 constexpr byte requestAuxControlSettingsCommand = 0xAE;
+ +
66
+
67 constexpr byte setAuxControlSettingsCommand = 0xAD;
+
68 constexpr byte setAuxControlSettingCommandData[8]{ 6, 0, setAuxControlSettingsCommand, 0, 0, 0x80, 0, 0 };
+
69
+
70 constexpr byte beginAutoConfigCommand = 0x0B;
+
71 constexpr byte beginAutoConfigCommandData[6]{ 4, 0, beginAutoConfigCommand, 0, 0x0A, 0 };
+
72
+
73 constexpr byte requestAutoConfigStatusCommand = 0x1B;
+ +
75
+ +
+ +
78 0x14, 0, distanceGateSensitivityConfigCommand, 0, 0, 0, 0, 0, 0, 0,
+
79 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0
+
80 };
+
+
81
+
82 constexpr byte maxGateCommand = 0x60;
+
+
83 constexpr byte maxGateCommandData[0x16]{
+
84 0x14, 0, maxGateCommand, 0, 0, 0, 8, 0, 0, 0,
+
85 1, 0, 8, 0, 0, 0, 2, 0, 5, 0, 0, 0
+
86 };
+
+
87}
+
+ + +
constexpr byte requestAutoConfigStatusCommandData[4]
Definition LD2410Defs.h:74
+
constexpr byte setAuxControlSettingCommandData[8]
Definition LD2410Defs.h:68
+
constexpr byte configDisableCommand
Definition LD2410Defs.h:21
+
constexpr byte requestDistanceResolutionCommandData[4]
Definition LD2410Defs.h:31
+
constexpr byte setDistanceResolutionCommand
Definition LD2410Defs.h:33
+
constexpr byte configEnableCommandData[6]
Definition LD2410Defs.h:19
+
constexpr byte engineeringModeDisableComand
Definition LD2410Defs.h:61
+
constexpr byte requestMacAddressCommandData[6]
Definition LD2410Defs.h:25
+
constexpr byte setAuxControlSettingsCommand
Definition LD2410Defs.h:67
+
constexpr byte distanceGateSensitivityConfigCommand
Definition LD2410Defs.h:76
+
constexpr byte bluetoothSettingsCommand
Definition LD2410Defs.h:46
+
constexpr byte restoreFactorSettingsCommandData[4]
Definition LD2410Defs.h:41
+
constexpr byte requestAuxControlSettingsCommandData[4]
Definition LD2410Defs.h:65
+
constexpr byte distanceGateSensitivityConfigCommandData[0x16]
Definition LD2410Defs.h:77
+
constexpr byte setBluetoothPasswordCommandData[10]
Definition LD2410Defs.h:53
+
constexpr byte setDistanceResolution20cmCommandData[6]
Definition LD2410Defs.h:35
+
constexpr byte maxGateCommandData[0x16]
Definition LD2410Defs.h:83
+
constexpr byte setBaudRateCommand
Definition LD2410Defs.h:37
+
constexpr byte tailConfig[4]
Definition LD2410Defs.h:16
+
constexpr byte headConfig[4]
Definition LD2410Defs.h:15
+
constexpr byte setBluetoothPasswordCommand
Definition LD2410Defs.h:52
+
constexpr byte requestAutoConfigStatusCommand
Definition LD2410Defs.h:73
+
constexpr byte engineeringModeDisableCommandData[4]
Definition LD2410Defs.h:62
+
constexpr byte rebootCommandData[4]
Definition LD2410Defs.h:44
+
constexpr byte requestAuxControlSettingsCommand
Definition LD2410Defs.h:64
+
constexpr byte setBaudRateCommandData[6]
Definition LD2410Defs.h:38
+
constexpr byte restoreFactorySettingsAsyncCommand
Definition LD2410Defs.h:40
+
constexpr byte bluetoothSettingsOnCommandData[6]
Definition LD2410Defs.h:47
+
constexpr byte requestParamsCommand
Definition LD2410Defs.h:55
+
constexpr byte bluetoothSettingsOffCommandData[6]
Definition LD2410Defs.h:48
+
constexpr byte requestMacAddressCommand
Definition LD2410Defs.h:24
+
constexpr byte headData[4]
Definition LD2410Defs.h:13
+
constexpr byte setDistanceResolution75cmCommandData[6]
Definition LD2410Defs.h:34
+
constexpr byte rebootCommand
Definition LD2410Defs.h:43
+
constexpr byte requestFirmwareCommand
Definition LD2410Defs.h:27
+
constexpr byte beginAutoConfigCommandData[6]
Definition LD2410Defs.h:71
+
constexpr size_t LD2410_Buffer_Size
Definition LD2410Defs.h:11
+
constexpr byte maxGateCommand
Definition LD2410Defs.h:82
+
constexpr byte beginAutoConfigCommand
Definition LD2410Defs.h:70
+
constexpr byte configDisableCommandData[4]
Definition LD2410Defs.h:22
+
constexpr byte getBluetoothPermissionsCommand
Definition LD2410Defs.h:50
+
constexpr byte configEnableCommand
Definition LD2410Defs.h:18
+
constexpr byte tailData[4]
Definition LD2410Defs.h:14
+
constexpr byte requestFirmwareCommandData[4]
Definition LD2410Defs.h:28
+
constexpr byte engineeringModeEnableCommandData[4]
Definition LD2410Defs.h:59
+
constexpr byte engineeringModeEnableComand
Definition LD2410Defs.h:58
+
constexpr byte requestDistanceResolutionCommand
Definition LD2410Defs.h:30
+
constexpr byte requestParamsCommandData[4]
Definition LD2410Defs.h:56
+
+
+ + + + diff --git a/docu/LD2410Types_8h.html b/docu/LD2410Types_8h.html new file mode 100644 index 0000000..30aa549 --- /dev/null +++ b/docu/LD2410Types_8h.html @@ -0,0 +1,201 @@ + + + + + + + +LD2410Async: LD2410Types.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Types.h File Reference
+
+
+
#include <Arduino.h>
+
+Include dependency graph for LD2410Types.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  LD2410Types::DetectionData
 Holds the most recent detection data reported by the radar. More...
 
struct  LD2410Types::ConfigData
 Stores the sensor’s configuration parameters. More...
 
+ + + +

+Namespaces

namespace  LD2410Types
 
+ + + + + + + + + + + + + + + + + + + +

+Enumerations

enum class  LD2410Types::TargetState {
+  LD2410Types::NO_TARGET = 0 +, LD2410Types::MOVING_TARGET = 1 +, LD2410Types::STATIONARY_TARGET = 2 +, LD2410Types::MOVING_AND_STATIONARY_TARGET = 3 +,
+  LD2410Types::AUTOCONFIG_IN_PROGRESS = 4 +, LD2410Types::AUTOCONFIG_SUCCESS = 5 +, LD2410Types::AUTOCONFIG_FAILED = 6 +
+ }
 Represents the current target detection state reported by the radar. More...
 
enum class  LD2410Types::LightControl { LD2410Types::NOT_SET = -1 +, LD2410Types::NO_LIGHT_CONTROL = 0 +, LD2410Types::LIGHT_BELOW_THRESHOLD = 1 +, LD2410Types::LIGHT_ABOVE_THRESHOLD = 2 + }
 Light-dependent control status of the auxiliary output. More...
 
enum class  LD2410Types::OutputControl { LD2410Types::NOT_SET = -1 +, LD2410Types::DEFAULT_LOW_DETECTED_HIGH = 0 +, LD2410Types::DEFAULT_HIGH_DETECTED_LOW = 1 + }
 Logic level behavior of the auxiliary output pin. More...
 
enum class  LD2410Types::AutoConfigStatus { LD2410Types::NOT_SET = -1 +, LD2410Types::NOT_IN_PROGRESS +, LD2410Types::IN_PROGRESS +, LD2410Types::COMPLETED + }
 State of the automatic threshold configuration routine. More...
 
enum class  LD2410Types::Baudrate {
+  LD2410Types::BAUDRATE_9600 = 1 +, LD2410Types::BAUDRATE_19200 = 2 +, LD2410Types::BAUDRATE_38400 = 3 +, LD2410Types::BAUDRATE_57600 = 4 +,
+  LD2410Types::BAUDRATE_115200 = 5 +, LD2410Types::BAUDRATE_230500 = 6 +, LD2410Types::BAUDRATE_256000 = 7 +, LD2410Types::BAUDRATE_460800 = 8 +
+ }
 Supported baud rates for the sensor’s UART interface. More...
 
enum class  LD2410Types::DistanceResolution { LD2410Types::NOT_SET = -1 +, LD2410Types::RESOLUTION_75CM = 0 +, LD2410Types::RESOLUTION_20CM = 1 + }
 Distance resolution per gate for detection. More...
 
+
+
+ + + + diff --git a/docu/LD2410Types_8h.js b/docu/LD2410Types_8h.js new file mode 100644 index 0000000..fb70ba4 --- /dev/null +++ b/docu/LD2410Types_8h.js @@ -0,0 +1,46 @@ +var LD2410Types_8h = +[ + [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], + [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], + [ "AutoConfigStatus", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995", [ + [ "NOT_SET", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], + [ "IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], + [ "COMPLETED", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] + ] ], + [ "Baudrate", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf", [ + [ "BAUDRATE_9600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], + [ "BAUDRATE_19200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], + [ "BAUDRATE_38400", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], + [ "BAUDRATE_57600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], + [ "BAUDRATE_115200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], + [ "BAUDRATE_230500", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], + [ "BAUDRATE_256000", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], + [ "BAUDRATE_460800", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] + ] ], + [ "DistanceResolution", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79", [ + [ "NOT_SET", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "RESOLUTION_75CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], + [ "RESOLUTION_20CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] + ] ], + [ "LightControl", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844", [ + [ "NOT_SET", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NO_LIGHT_CONTROL", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], + [ "LIGHT_BELOW_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], + [ "LIGHT_ABOVE_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] + ] ], + [ "OutputControl", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bff", [ + [ "NOT_SET", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], + [ "DEFAULT_LOW_DETECTED_HIGH", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], + [ "DEFAULT_HIGH_DETECTED_LOW", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] + ] ], + [ "TargetState", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9", [ + [ "NO_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], + [ "MOVING_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], + [ "STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], + [ "MOVING_AND_STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], + [ "AUTOCONFIG_IN_PROGRESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], + [ "AUTOCONFIG_SUCCESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], + [ "AUTOCONFIG_FAILED", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] + ] ] +]; \ No newline at end of file diff --git a/docu/LD2410Types_8h__dep__incl.map b/docu/LD2410Types_8h__dep__incl.map new file mode 100644 index 0000000..3d2621f --- /dev/null +++ b/docu/LD2410Types_8h__dep__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docu/LD2410Types_8h__dep__incl.md5 b/docu/LD2410Types_8h__dep__incl.md5 new file mode 100644 index 0000000..c4ec345 --- /dev/null +++ b/docu/LD2410Types_8h__dep__incl.md5 @@ -0,0 +1 @@ +bd8ccf970716da78fc26dc6aa5ac3ac3 \ No newline at end of file diff --git a/docu/LD2410Types_8h__dep__incl.svg b/docu/LD2410Types_8h__dep__incl.svg new file mode 100644 index 0000000..0811399 --- /dev/null +++ b/docu/LD2410Types_8h__dep__incl.svg @@ -0,0 +1,147 @@ + + + + + + +LD2410Types.h + + +Node1 + + +LD2410Types.h + + + + + +Node2 + + +LD2410Async.cpp + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410CommandBuilder.h + + + + + +Node1->Node4 + + + + + + + + +Node3->Node2 + + + + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +LD2410Defs.h + + + + + +Node3->Node5 + + + + + + + + +Node4->Node2 + + + + + + + + +Node5->Node2 + + + + + + + + +Node5->Node3 + + + + + + + + +Node5->Node4 + + + + + + + + diff --git a/docu/LD2410Types_8h__incl.map b/docu/LD2410Types_8h__incl.map new file mode 100644 index 0000000..4def0de --- /dev/null +++ b/docu/LD2410Types_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/LD2410Types_8h__incl.md5 b/docu/LD2410Types_8h__incl.md5 new file mode 100644 index 0000000..0234d2c --- /dev/null +++ b/docu/LD2410Types_8h__incl.md5 @@ -0,0 +1 @@ +8ad330cda26cfbc4f12bfc14b0a37dd2 \ No newline at end of file diff --git a/docu/LD2410Types_8h__incl.svg b/docu/LD2410Types_8h__incl.svg new file mode 100644 index 0000000..b505c0f --- /dev/null +++ b/docu/LD2410Types_8h__incl.svg @@ -0,0 +1,39 @@ + + + + + + +LD2410Types.h + + +Node1 + + +LD2410Types.h + + + + + +Node2 + + +Arduino.h + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/LD2410Types_8h_source.html b/docu/LD2410Types_8h_source.html new file mode 100644 index 0000000..8d26828 --- /dev/null +++ b/docu/LD2410Types_8h_source.html @@ -0,0 +1,675 @@ + + + + + + + +LD2410Async: LD2410Types.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Types.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
3
+
4#include <Arduino.h>
+
5
+
6/**
+
7 * @ brief All enums, structs, and type helpers for LD2410Async
+
8 */
+
+
9namespace LD2410Types {
+
10 /**
+
11 * @brief Represents the current target detection state reported by the radar.
+
12 *
+
13 * Values can be combined internally by the sensor depending on its
+
14 * signal evaluation logic. The AUTO-CONFIG states are special values
+
15 * that are only reported while the sensor is running its
+
16 * self-calibration routine.
+
17 */
+
18
+
+
19 enum class TargetState {
+
20 NO_TARGET = 0, ///< No moving or stationary target detected.
+
21 MOVING_TARGET = 1, ///< A moving target has been detected.
+
22 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
+
23 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
+
24 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
+
25 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
+
26 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
+
27 };
+
+
28
+
29 /**
+
30 * @brief Safely converts a numeric value to a TargetState enum.
+
31 *
+
32 * @param value Raw numeric value (0–6 expected).
+
33 * - 0 → NO_TARGET
+
34 * - 1 → MOVING_TARGET
+
35 * - 2 → STATIONARY_TARGET
+
36 * - 3 → MOVING_AND_STATIONARY_TARGET
+
37 * - 4 → AUTOCONFIG_IN_PROGRESS
+
38 * - 5 → AUTOCONFIG_SUCCESS
+
39 * - 6 → AUTOCONFIG_FAILED
+
40 * @returns The matching TargetState value, or NO_TARGET if invalid.
+
41 */
+
42 static TargetState toTargetState(int value) {
+
43 switch (value) {
+
44 case 0: return TargetState::NO_TARGET;
+
45 case 1: return TargetState::MOVING_TARGET;
+
46 case 2: return TargetState::STATIONARY_TARGET;
+ + + +
50 case 6: return TargetState::AUTOCONFIG_FAILED;
+
51 default: return TargetState::NO_TARGET; // safe fallback
+
52 }
+
53 }
+
54
+
55 /**
+
56 * @brief Converts a TargetState enum value to a human-readable String.
+
57 *
+
58 * Useful for printing detection results in logs or Serial Monitor.
+
59 *
+
60 * @param state TargetState enum value.
+
61 * @returns Human-readable string such as "No target", "Moving target", etc.
+
62 */
+
63 static String targetStateToString(TargetState state) {
+
64 switch (state) {
+
65 case TargetState::NO_TARGET: return "No target";
+
66 case TargetState::MOVING_TARGET: return "Moving target";
+
67 case TargetState::STATIONARY_TARGET: return "Stationary target";
+
68 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
+
69 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
+
70 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
+
71 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
+
72 default: return "Unknown";
+
73 }
+
74 }
+
75
+
76
+
77
+
78
+
79
+
80
+
81 /**
+
82 * @brief Light-dependent control status of the auxiliary output.
+
83 *
+
84 * The radar sensor can control an external output based on ambient
+
85 * light level in combination with presence detection.
+
86 *
+
87 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
+
88 */
+
+
89 enum class LightControl {
+
90 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
+
91 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
+
92 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
+
93 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
+
94 };
+
+
95 /**
+
96 * @brief Safely converts a numeric value to a LightControl enum.
+
97 *
+
98 * @param value Raw numeric value (0–2 expected).
+
99 * - 0 → NO_LIGHT_CONTROL
+
100 * - 1 → LIGHT_BELOW_THRESHOLD
+
101 * - 2 → LIGHT_ABOVE_THRESHOLD
+
102 * @returns The matching LightControl value, or NOT_SET if invalid.
+
103 */
+
104 static LightControl toLightControl(int value) {
+
105 switch (value) {
+
106 case 0: return LightControl::NO_LIGHT_CONTROL;
+ + +
109 default: return LightControl::NOT_SET;
+
110 }
+
111 }
+
112
+
113
+
114 /**
+
115 * @brief Logic level behavior of the auxiliary output pin.
+
116 *
+
117 * Determines whether the output pin is active-high or active-low
+
118 * in relation to presence detection.
+
119 *
+
120 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
+
121 */
+
+
122 enum class OutputControl {
+
123 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
+
124 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
+
125 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
+
126 };
+
+
127
+
128 /**
+
129 * @brief Safely converts a numeric value to an OutputControl enum.
+
130 *
+
131 * @param value Raw numeric value (0–1 expected).
+
132 * - 0 → DEFAULT_LOW_DETECTED_HIGH
+
133 * - 1 → DEFAULT_HIGH_DETECTED_LOW
+
134 * @returns The matching OutputControl value, or NOT_SET if invalid.
+
135 */
+
136 static OutputControl toOutputControl(int value) {
+
137 switch (value) {
+ + +
140 default: return OutputControl::NOT_SET;
+
141 }
+
142 }
+
143
+
144 /**
+
145 * @brief State of the automatic threshold configuration routine.
+
146 *
+
147 * Auto-config adjusts the sensitivity thresholds for optimal detection
+
148 * in the current environment. This process may take several seconds.
+
149 *
+
150 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
+
151 */
+
+
152 enum class AutoConfigStatus {
+
153 NOT_SET = -1, ///< Status not yet retrieved.
+
154 NOT_IN_PROGRESS, ///< Auto-configuration not running.
+
155 IN_PROGRESS, ///< Auto-configuration is currently running.
+
156 COMPLETED ///< Auto-configuration finished (success or failure).
+
157 };
+
+
158
+
159 /**
+
160 * @brief Safely converts a numeric value to an AutoConfigStatus enum.
+
161 *
+
162 * @param value Raw numeric value (0–2 expected).
+
163 * - 0 → NOT_IN_PROGRESS
+
164 * - 1 → IN_PROGRESS
+
165 * - 2 → COMPLETED
+
166 * @returns The matching AutoConfigStatus value, or NOT_SET if invalid.
+
167 */
+
168 static AutoConfigStatus toAutoConfigStatus(int value) {
+
169 switch (value) {
+ +
171 case 1: return AutoConfigStatus::IN_PROGRESS;
+
172 case 2: return AutoConfigStatus::COMPLETED;
+
173 default: return AutoConfigStatus::NOT_SET;
+
174 }
+
175 }
+
176
+
177
+
178 /**
+
179 * @brief Supported baud rates for the sensor’s UART interface.
+
180 *
+
181 * These values correspond to the configuration commands accepted
+
182 * by the LD2410. After changing the baud rate, a sensor reboot
+
183 * is required, and the ESP32’s UART must be reconfigured to match.
+
184 */
+
+
185 enum class Baudrate {
+
186 BAUDRATE_9600 = 1, ///< 9600 baud.
+
187 BAUDRATE_19200 = 2, ///< 19200 baud.
+
188 BAUDRATE_38400 = 3, ///< 38400 baud.
+
189 BAUDRATE_57600 = 4, ///< 57600 baud.
+
190 BAUDRATE_115200 = 5, ///< 115200 baud.
+
191 BAUDRATE_230500 = 6, ///< 230400 baud.
+
192 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
+
193 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
+
194 };
+
+
195
+
196 /**
+
197 * @brief Distance resolution per gate for detection.
+
198 *
+
199 * The resolution defines how fine-grained the distance measurement is:
+
200 * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
+
201 * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
+
202 *
+
203 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
+
204 */
+
+ +
206 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
+
207 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
+
208 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
+
209 };
+
+
210 /**
+
211 * @brief Safely converts a numeric value to a DistanceResolution enum.
+
212 *
+
213 * @param value Raw numeric value (typically from a sensor response).
+
214 * Expected values:
+
215 * - 0 → RESOLUTION_75CM
+
216 * - 1 → RESOLUTION_20CM
+
217 * @returns The matching DistanceResolution value, or NOT_SET if invalid.
+
218 */
+
219 static DistanceResolution toDistanceResolution(int value) {
+
220 switch (value) {
+ + +
223 default: return DistanceResolution::NOT_SET;
+
224 }
+
225 }
+
226
+
227 /**
+
228 * @brief Holds the most recent detection data reported by the radar.
+
229 *
+
230 * This structure is continuously updated as new frames arrive.
+
231 * Values reflect either the basic presence information or, if
+
232 * engineering mode is enabled, per-gate signal details.
+
233 */
+
+ +
235 {
+
236 unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received.
+
237
+
238 // === Basic detection results ===
+
239
+
240 bool engineeringMode = false; ///< True if engineering mode data was received.
+
241
+
242 bool presenceDetected = false; ///< True if any target is detected.
+
243 bool movingPresenceDetected = false; ///< True if a moving target is detected.
+
244 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
+
245
+
246 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
+
247 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
+
248 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
+
249 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
+
250 byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target.
+
251 unsigned int detectedDistance = 0; ///< General detection distance (cm).
+
252
+
253 // === Engineering mode data ===
+
254 byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals.
+
255 byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets.
+
256
+
257 byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals.
+
258 byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets.
+
259
+
260 byte lightLevel = 0; ///< Reported ambient light level (0–255).
+
261 bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low).
+
262
+
263
+
264 /**
+
265 * @brief Debug helper: print detection data contents to Serial.
+
266 */
+
+
267 void print() const {
+
268 Serial.println("=== DetectionData ===");
+
269
+
270 Serial.print(" Timestamp: ");
+
271 Serial.println(timestamp);
+
272
+
273 Serial.print(" Engineering Mode: ");
+
274 Serial.println(engineeringMode ? "Yes" : "No");
+
275
+
276 Serial.print(" Target State: ");
+
277 Serial.println(static_cast<int>(targetState));
+
278
+
279 Serial.print(" Moving Target Distance (cm): ");
+
280 Serial.println(movingTargetDistance);
+
281
+
282 Serial.print(" Moving Target Signal: ");
+
283 Serial.println(movingTargetSignal);
+
284
+
285 Serial.print(" Stationary Target Distance (cm): ");
+
286 Serial.println(stationaryTargetDistance);
+
287
+
288 Serial.print(" Stationary Target Signal: ");
+
289 Serial.println(stationaryTargetSignal);
+
290
+
291 Serial.print(" Detected Distance (cm): ");
+
292 Serial.println(detectedDistance);
+
293
+
294 Serial.print(" Light Level: ");
+
295 Serial.println(lightLevel);
+
296
+
297 Serial.print(" OUT Pin Status: ");
+
298 Serial.println(outPinStatus ? "High" : "Low");
+
299
+
300 // --- Engineering mode fields ---
+
301 if (engineeringMode) {
+
302 Serial.println(" --- Engineering Mode Data ---");
+
303
+
304 Serial.print(" Moving Target Gate Signal Count: ");
+
305 Serial.println(movingTargetGateSignalCount);
+
306
+
307 Serial.print(" Moving Target Gate Signals: ");
+
308 for (int i = 0; i < movingTargetGateSignalCount; i++) {
+
309 Serial.print(movingTargetGateSignals[i]);
+
310 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
+
311 }
+
312 Serial.println();
+
313
+
314 Serial.print(" Stationary Target Gate Signal Count: ");
+
315 Serial.println(stationaryTargetGateSignalCount);
+
316
+
317 Serial.print(" Stationary Target Gate Signals: ");
+
318 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
+
319 Serial.print(stationaryTargetGateSignals[i]);
+
320 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
+
321 }
+
322 Serial.println();
+
323 }
+
324
+
325 Serial.println("======================");
+
326 }
+
+
327
+
328 };
+
+
329
+
330 /**
+
331 * @brief Stores the sensor’s configuration parameters.
+
332 *
+
333 * This structure represents both static capabilities
+
334 * (e.g. number of gates) and configurable settings
+
335 * (e.g. sensitivities, timeouts, resolution).
+
336 *
+
337 * The values are typically filled by request commands
+
338 * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or
+
339 * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().
+
340 */
+
+
341 struct ConfigData {
+
342 // === Radar capabilities ===
+
343 byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
+
344
+
345 // === Max distance gate settings ===
+
346 byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection.
+
347 byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection.
+
348
+
349 // === Per-gate sensitivity settings ===
+
350 byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100).
+
351 byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100).
+
352
+
353 // === Timeout parameters ===
+
354 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
+
355
+
356 // === Distance resolution ===
+
357 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
+
358
+
359 // === Auxiliary controls ===
+
360 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
+
361 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
+
362 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
+
363
+
364
+
365
+
366
+
367 /**
+
368 * @brief Validates the configuration data for correctness.
+
369 *
+
370 * Ensures that enum values are set and values are within valid ranges.
+
371 * This method is called internally before applying a config
+
372 * via configureAllConfigSettingsAsync().
+
373 *
+
374 * @returns True if the configuration is valid, false otherwise.
+
375 */
+
+
376 bool isValid() const {
+
377 // Validate enum settings
+ +
379 if (lightControl == LightControl::NOT_SET) return false;
+
380 if (outputControl == OutputControl::NOT_SET) return false;
+
381
+
382 // Validate max distance gates
+ + +
385
+
386 // Validate sensitivities
+
387 for (int i = 0; i < 9; i++) {
+
388 if (distanceGateMotionSensitivity[i] > 100) return false;
+
389 if (distanceGateStationarySensitivity[i] > 100) return false;
+
390 }
+
391
+
392 return true;
+
393 }
+
+
394
+
395 /**
+
396 * @brief Compares this ConfigData with another for equality.
+
397 *
+
398 * @param other The other ConfigData instance to compare against.
+
399 * @returns True if all fields are equal, false otherwise.
+
400 */
+
+
401 bool equals(const ConfigData& other) const {
+
402 if (numberOfGates != other.numberOfGates) return false;
+
403 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
+
404 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
+
405 if (noOneTimeout != other.noOneTimeout) return false;
+
406 if (distanceResolution != other.distanceResolution) return false;
+
407 if (lightThreshold != other.lightThreshold) return false;
+
408 if (lightControl != other.lightControl) return false;
+
409 if (outputControl != other.outputControl) return false;
+
410
+
411 for (int i = 0; i < 9; i++) {
+
412 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
+ +
414 }
+
415 return true;
+
416 }
+
+
417
+
418 /**
+
419 * @brief Debug helper: print configuration contents to Serial.
+
420 */
+
+
421 void print() const {
+
422 Serial.println("=== ConfigData ===");
+
423
+
424 Serial.print(" Number of Gates: ");
+
425 Serial.println(numberOfGates);
+
426
+
427 Serial.print(" Max Motion Distance Gate: ");
+
428 Serial.println(maxMotionDistanceGate);
+
429
+
430 Serial.print(" Max Stationary Distance Gate: ");
+
431 Serial.println(maxStationaryDistanceGate);
+
432
+
433 Serial.print(" Motion Sensitivity: ");
+
434 for (int i = 0; i < 9; i++) {
+
435 Serial.print(distanceGateMotionSensitivity[i]);
+
436 if (i < 8) Serial.print(",");
+
437 }
+
438 Serial.println();
+
439
+
440 Serial.print(" Stationary Sensitivity: ");
+
441 for (int i = 0; i < 9; i++) {
+
442 Serial.print(distanceGateStationarySensitivity[i]);
+
443 if (i < 8) Serial.print(",");
+
444 }
+
445 Serial.println();
+
446
+
447 Serial.print(" No One Timeout: ");
+
448 Serial.println(noOneTimeout);
+
449
+
450 Serial.print(" Distance Resolution: ");
+
451 Serial.println(static_cast<int>(distanceResolution));
+
452
+
453 Serial.print(" Light Threshold: ");
+
454 Serial.println(lightThreshold);
+
455
+
456 Serial.print(" Light Control: ");
+
457 Serial.println(static_cast<int>(lightControl));
+
458
+
459 Serial.print(" Output Control: ");
+
460 Serial.println(static_cast<int>(outputControl));
+
461
+
462 Serial.println("===================");
+
463 }
+
+
464 };
+
+
465
+
466
+
467}
+
+ +
AutoConfigStatus
State of the automatic threshold configuration routine.
+
@ NOT_SET
Status not yet retrieved.
+
@ COMPLETED
Auto-configuration finished (success or failure).
+
@ IN_PROGRESS
Auto-configuration is currently running.
+
@ NOT_IN_PROGRESS
Auto-configuration not running.
+
OutputControl
Logic level behavior of the auxiliary output pin.
+
@ NOT_SET
Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
+
@ DEFAULT_HIGH_DETECTED_LOW
Default high, goes LOW when detection occurs.
+
@ DEFAULT_LOW_DETECTED_HIGH
Default low, goes HIGH when detection occurs.
+
Baudrate
Supported baud rates for the sensor’s UART interface.
+
@ BAUDRATE_57600
57600 baud.
+
@ BAUDRATE_38400
38400 baud.
+
@ BAUDRATE_230500
230400 baud.
+
@ BAUDRATE_115200
115200 baud.
+
@ BAUDRATE_256000
256000 baud (factory default).
+
@ BAUDRATE_19200
19200 baud.
+
@ BAUDRATE_9600
9600 baud.
+
@ BAUDRATE_460800
460800 baud (high-speed).
+
DistanceResolution
Distance resolution per gate for detection.
+
@ NOT_SET
Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
+
@ RESOLUTION_20CM
Each gate ~0.20 m, max range ~1.8 m.
+
@ RESOLUTION_75CM
Each gate ~0.75 m, max range ~6 m.
+
TargetState
Represents the current target detection state reported by the radar.
Definition LD2410Types.h:19
+
@ MOVING_AND_STATIONARY_TARGET
Both moving and stationary targets detected.
+
@ NO_TARGET
No moving or stationary target detected.
+
@ AUTOCONFIG_IN_PROGRESS
Auto-configuration routine is running.
+
@ AUTOCONFIG_FAILED
Auto-configuration failed.
+
@ STATIONARY_TARGET
A stationary target has been detected.
+
@ MOVING_TARGET
A moving target has been detected.
+
@ AUTOCONFIG_SUCCESS
Auto-configuration completed successfully.
+
LightControl
Light-dependent control status of the auxiliary output.
Definition LD2410Types.h:89
+
@ NOT_SET
Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
+
@ LIGHT_BELOW_THRESHOLD
Condition: light < threshold.
+
@ LIGHT_ABOVE_THRESHOLD
Condition: light ≥ threshold.
+
@ NO_LIGHT_CONTROL
Output is not influenced by light levels.
+
Stores the sensor’s configuration parameters.
+
byte distanceGateStationarySensitivity[9]
Stationary sensitivity values per gate (0–100).
+
void print() const
Debug helper: print configuration contents to Serial.
+
byte distanceGateMotionSensitivity[9]
Motion sensitivity values per gate (0–100).
+
byte maxMotionDistanceGate
Furthest gate used for motion detection.
+
OutputControl outputControl
Logic configuration of the OUT pin.
+
bool equals(const ConfigData &other) const
Compares this ConfigData with another for equality.
+
byte lightThreshold
Threshold for auxiliary light control (0–255).
+
bool isValid() const
Validates the configuration data for correctness.
+
LightControl lightControl
Light-dependent auxiliary control mode.
+
byte maxStationaryDistanceGate
Furthest gate used for stationary detection.
+
byte numberOfGates
Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
+
DistanceResolution distanceResolution
Current distance resolution. A reboot is required to activate changed setting after calling configure...
+
unsigned short noOneTimeout
Timeout (seconds) until "no presence" is declared.
+
Holds the most recent detection data reported by the radar.
+
void print() const
Debug helper: print detection data contents to Serial.
+
byte stationaryTargetGateSignals[9]
Per-gate signal strengths for stationary targets.
+
bool engineeringMode
True if engineering mode data was received.
+
bool stationaryPresenceDetected
True if a stationary target is detected.
+
byte stationaryTargetSignal
Signal strength (0–100) of the stationary target.
+
byte lightLevel
Reported ambient light level (0–255).
+
unsigned int detectedDistance
General detection distance (cm).
+
byte movingTargetGateSignalCount
Number of gates with moving target signals.
+
TargetState targetState
Current detection state.
+
byte movingTargetGateSignals[9]
Per-gate signal strengths for moving targets.
+
byte stationaryTargetGateSignalCount
Number of gates with stationary target signals.
+
bool presenceDetected
True if any target is detected.
+
byte movingTargetSignal
Signal strength (0–100) of the moving target.
+
bool outPinStatus
Current status of the OUT pin (true = high, false = low).
+
unsigned long timestamp
Timestamp (ms since boot) when this data was received.
+
bool movingPresenceDetected
True if a moving target is detected.
+
unsigned int movingTargetDistance
Distance (cm) to the nearest moving target.
+
unsigned int stationaryTargetDistance
Distance (cm) to the nearest stationary target.
+
+
+ + + + diff --git a/docu/annotated.html b/docu/annotated.html new file mode 100644 index 0000000..b561c1c --- /dev/null +++ b/docu/annotated.html @@ -0,0 +1,120 @@ + + + + + + + +LD2410Async: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + +
 NLD2410Types
 CConfigDataStores the sensor’s configuration parameters
 CDetectionDataHolds the most recent detection data reported by the radar
 CLD2410AsyncAsynchronous driver for the LD2410 human presence radar sensor
+
+
+
+ + + + diff --git a/docu/annotated_dup.js b/docu/annotated_dup.js new file mode 100644 index 0000000..69bfa1a --- /dev/null +++ b/docu/annotated_dup.js @@ -0,0 +1,8 @@ +var annotated_dup = +[ + [ "LD2410Types", "namespaceLD2410Types.html", [ + [ "ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], + [ "DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ] + ] ], + [ "LD2410Async", "classLD2410Async.html", "classLD2410Async" ] +]; \ No newline at end of file diff --git a/docu/basicPresenceDetection_8ino.html b/docu/basicPresenceDetection_8ino.html new file mode 100644 index 0000000..e03e5e3 --- /dev/null +++ b/docu/basicPresenceDetection_8ino.html @@ -0,0 +1,115 @@ + + + + + + + +LD2410Async: basicPresenceDetection.ino File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
basicPresenceDetection.ino File Reference
+
+ +
+ + + + diff --git a/docu/basicPresenceDetection_8ino_source.html b/docu/basicPresenceDetection_8ino_source.html new file mode 100644 index 0000000..aa2f37c --- /dev/null +++ b/docu/basicPresenceDetection_8ino_source.html @@ -0,0 +1,187 @@ + + + + + + + +LD2410Async: basicPresenceDetection.ino Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
basicPresenceDetection.ino
+
+
+Go to the documentation of this file.
1/**
+
2 * Example: Basic Presence Detection with LD2410Async
+
3 *
+
4 * This sketch demonstrates how to use the LD2410Async library to detect presence
+
5 * using only the presenceDetected variable from the detection data callback.
+
6 * It prints a message with a timestamp whenever the presence state changes.
+
7 *
+
8 * Important!
+
9 * Adjust RADAR_RX_PIN and RADAR_TX_PIN to match your wiring.
+
10 */
+
11
+
12#include <Arduino.h>
+
13#include "LD2410Async.h"
+
14
+
15 // ========================= USER CONFIGURATION =========================
+
16
+
17 // UART pins for the LD2410 sensor
+
18#define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX)
+
19#define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX)
+
20
+
21// UART baudrate for the radar sensor (default is 256000)
+
22#define RADAR_BAUDRATE 256000
+
23
+
24// ======================================================================
+
25
+
26// Create a HardwareSerial instance (ESP32 has multiple UARTs)
+
27HardwareSerial RadarSerial(1);
+
28
+
29// Create LD2410Async object bound to Serial1
+
30LD2410Async radar(RadarSerial);
+
31
+
32// Track last presence state
+
33bool lastPresenceDetected = false;
+
34bool firstCallback = true;
+
35
+
36// Callback function called whenever new detection data arrives
+
37void onDetectionDataReceived(LD2410Async* sender, bool presenceDetected, byte userData) {
+
38 if (firstCallback || presenceDetected != lastPresenceDetected) {
+
39 unsigned long now = millis();
+
40 Serial.print("[");
+
41 Serial.print(now);
+
42 Serial.print(" ms] Presence detected: ");
+
43 Serial.println(presenceDetected ? "YES" : "NO");
+
44 lastPresenceDetected = presenceDetected;
+
45 firstCallback = false;
+
46 }
+
47}
+
48
+
49void setup() {
+
50 // Initialize USB serial for debug output
+
51 Serial.begin(115200);
+
52 while (!Serial) {
+
53 ; // wait for Serial Monitor
+
54 }
+
55 Serial.println("LD2410Async example: basic presence detection");
+
56
+
57 // Initialize Serial1 with user-defined pins and baudrate
+
58 RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
+
59
+
60 // Start the radar background task (parses incoming data frames)
+
61 if (radar.begin()) {
+
62 Serial.println("Radar task started successfully.");
+
63 // Register callback for detection updates
+
64 radar.registerDetectionDataReceivedCallback(onDetectionDataReceived, 0);
+
65 }
+
66 else {
+
67 Serial.println("ERROR! Could not start radar task.");
+
68 }
+
69}
+
70
+
71void loop() {
+
72 // Nothing to do here!
+
73 delay(1000); // idle delay (optional)
+
74}
+
+
+ + + + diff --git a/docu/bc_s.png b/docu/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docu/bc_sd.png b/docu/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/docu/changeConfig_8ino.html b/docu/changeConfig_8ino.html new file mode 100644 index 0000000..03c549d --- /dev/null +++ b/docu/changeConfig_8ino.html @@ -0,0 +1,115 @@ + + + + + + + +LD2410Async: changeConfig.ino File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeConfig.ino File Reference
+
+ +
+ + + + diff --git a/docu/changeConfig_8ino_source.html b/docu/changeConfig_8ino_source.html new file mode 100644 index 0000000..7d217be --- /dev/null +++ b/docu/changeConfig_8ino_source.html @@ -0,0 +1,225 @@ + + + + + + + +LD2410Async: changeConfig.ino Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeConfig.ino
+
+
+Go to the documentation of this file.
1/**
+
2 * Example sketch for LD2410Async library
+
3 *
+
4 * This sketch shows how to:
+
5 * 1. Initialize the radar on Serial1.
+
6 * 2. Query all current configuration values from the sensor.
+
7 * 3. Clone the config into a local variable.
+
8 * 4. Modify some settings (timeout, sensitivities).
+
9 * 5. Write the modified config back to the sensor.
+
10 *
+
11 * Important:
+
12 * Make sure to adjust RADAR_RX_PIN and ADAR_TX_PIN to match you actual wiring.
+
13 */
+
14
+
15#include <Arduino.h>
+
16#include "LD2410Async.h"
+
17
+
18 // ========================= USER CONFIGURATION =========================
+
19
+
20 // UART pins for the LD2410 sensor
+
21#define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX)
+
22#define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX)
+
23
+
24// UART baudrate for the radar sensor (default is 256000)
+
25#define RADAR_BAUDRATE 256000
+
26
+
27// ======================================================================
+
28
+
29// Create a HardwareSerial instance (ESP32 has multiple UARTs)
+
30HardwareSerial RadarSerial(1);
+
31
+
32// Create LD2410Async object bound to Serial1
+
33LD2410Async radar(RadarSerial);
+
34
+
35// Callback after attempting to apply a modified config
+
36void onConfigApplied(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
37 if (result == LD2410Async::AsyncCommandResult::SUCCESS) {
+
38 Serial.println("Config updated successfully!");
+
39 }
+
40 else {
+
41 Serial.println("Failed to apply config.");
+
42 }
+
43}
+
44
+
45// Callback after requesting config data
+
46void onConfigReceived(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
47 if (result != LD2410Async::AsyncCommandResult::SUCCESS) {
+
48 Serial.println("Failed to request config data.");
+
49 return;
+
50 }
+
51
+
52 Serial.println("Config data received. Cloning and modifying...");
+
53
+
54 // Clone the current config
+
55 LD2410Types::ConfigData cfg = sender->getConfigData();
+
56 //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender:
+
57 //LD2410Types::ConfigData cfg = radar.getConfigData();
+
58 //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board)..
+
59
+
60
+
61 // Example modifications:
+
62 cfg.noOneTimeout = 120; // Set "no-one" timeout to 120 seconds
+
63 cfg.distanceGateMotionSensitivity[2] = 75; // Increase motion sensitivity on gate 2
+
64 cfg.distanceGateStationarySensitivity[4] = 60; // Adjust stationary sensitivity on gate 4
+
65
+
66 // Apply updated config to the radar
+
67 if (!sender->configureAllConfigSettingsAsync(cfg, false, onConfigApplied)) {
+
68 //It is good practive to check the return value of commands for true/false.
+
69 //False indicates that the command could not be sent (e.g. because another async command is still pending)
+
70 Serial.println("Error! Could not update config on the sensor");
+
71 };
+
72
+
73 //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender:
+
74 //radar.configureAllConfigSettingsAsync(cfg, false, onConfigApplied);
+
75 //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board)..
+
76
+
77}
+
78
+
79void setup() {
+
80 // Initialize USB serial for debug output
+
81 Serial.begin(115200);
+
82 while (!Serial) {
+
83 ; // wait for Serial Monitor
+
84 }
+
85 Serial.println("LD2410Async example: change radar config");
+
86
+
87 // Initialize Serial1 with user-defined pins and baudrate
+
88 RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
+
89
+
90 // Start the radar background task (parses incoming data frames)
+
91 if (radar.begin()) {
+
92 Serial.println("Radar task started successfully.");
+
93
+
94 // Request all config data, then modify in callback
+
95 if (!radar.requestAllConfigSettingsAsync(onConfigReceived)) {
+
96 //It is good practive to check the return value of commands for true/false.
+
97 //False indicates that the command could not be sent (e.g. because another async command is still pending)
+
98 Serial.println("Error! Could not start config data request");
+
99 }
+
100
+
101 }
+
102 else {
+
103 Serial.println("Error! Could not start radar task");
+
104 }
+
105
+
106}
+
107
+
108void loop() {
+
109 // Nothing to do here.
+
110 // The library handles communication and invokes callbacks automatically.
+
111 delay(1000);
+
112}
+
+
+ + + + diff --git a/docu/changeDistanceResolution_8ino.html b/docu/changeDistanceResolution_8ino.html new file mode 100644 index 0000000..750723f --- /dev/null +++ b/docu/changeDistanceResolution_8ino.html @@ -0,0 +1,115 @@ + + + + + + + +LD2410Async: changeDistanceResolution.ino File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeDistanceResolution.ino File Reference
+
+ +
+ + + + diff --git a/docu/changeDistanceResolution_8ino_source.html b/docu/changeDistanceResolution_8ino_source.html new file mode 100644 index 0000000..0e68753 --- /dev/null +++ b/docu/changeDistanceResolution_8ino_source.html @@ -0,0 +1,235 @@ + + + + + + + +LD2410Async: changeDistanceResolution.ino Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeDistanceResolution.ino
+
+
+Go to the documentation of this file.
1/**
+
2 * Example sketch for LD2410Async library
+
3 *
+
4 * This sketch demonstrates how to:
+
5 * 1. Initialize the radar on Serial1.
+
6 * 2. Query all current configuration values from the sensor.
+
7 * 3. Clone the config into a local variable.
+
8 * 4. Modify the distance resolution.
+
9 * 5. Apply the new config.
+
10 * 6. Reboot the sensor to ensure changes take effect.
+
11 *
+
12 * Important:
+
13 * Make sure to adjust RADAR_RX_PIN and ADAR_TX_PIN to match you actual wiring.
+
14 */
+
15
+
16#include <Arduino.h>
+
17#include "LD2410Async.h"
+
18
+
19 // ========================= USER CONFIGURATION =========================
+
20
+
21 // UART pins for the LD2410 sensor
+
22#define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX)
+
23#define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX)
+
24
+
25// UART baudrate for the radar sensor (default is 256000)
+
26#define RADAR_BAUDRATE 256000
+
27
+
28// ======================================================================
+
29
+
30// Create a HardwareSerial instance (ESP32 has multiple UARTs)
+
31HardwareSerial RadarSerial(1);
+
32
+
33// Create LD2410Async object bound to Serial1
+
34LD2410Async radar(RadarSerial);
+
35
+
36// Callback after reboot command is sent
+
37void onReboot(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
38 if (result == LD2410Async::AsyncCommandResult::SUCCESS) {
+
39 Serial.println("Radar reboot initiated.");
+
40 }
+
41 else {
+
42 Serial.println("Failed to init reboot.");
+
43 }
+
44}
+
45
+
46// Callback after applying modified config
+
47void onConfigApplied(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
48 if (result == LD2410Async::AsyncCommandResult::SUCCESS) {
+
49 Serial.println("Config applied successfully. Rebooting radar...");
+
50 if (!sender->rebootAsync(onReboot)) {
+
51 //It is good practive to check the return value of commands for true/false.
+
52 //False indicates that the command could not be sent (e.g. because another async command is still pending)
+
53 Serial.println("Error! Could not send reboot command to the sensor");
+
54 };
+
55 //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender:
+
56 //radar.rebootAsync(onReboot);
+
57 //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board)..
+
58 }
+
59 else {
+
60 Serial.println("Failed to apply config.");
+
61 }
+
62}
+
63
+
64// Callback after requesting config data
+
65void onConfigReceived(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
+
66 if (result != LD2410Async::AsyncCommandResult::SUCCESS) {
+
67 Serial.println("Failed to request config data.");
+
68 return;
+
69 }
+
70
+
71 Serial.println("Config data received. Cloning and modifying...");
+
72
+
73 // Clone the current config
+
74 LD2410Types::ConfigData cfg = sender->getConfigData();
+
75
+
76 // Example modification: change resolution
+
77 // RESOLUTION_75CM or RESOLUTION_20CM
+
78 cfg.distanceResolution = LD2410Types::DistanceResolution::RESOLUTION_20CM;
+
79
+
80 // Apply updated config to the radar
+
81 if (!sender->configureAllConfigSettingsAsync(cfg, false, onConfigApplied)) {
+
82 //It is good practive to check the return value of commands for true/false.
+
83 //False indicates that the command could not be sent (e.g. because another async command is still pending)
+
84 Serial.println("Error! Could not update config on the sensor");
+
85 };
+
86 //alternatively you could also call the LD2410Async instance directly instead of using the pointer in sender:
+
87 //radar.configureAllConfigSettingsAsync(cfg, false, onConfigApplied);
+
88 //However, working with the reference in sender is a good practice since it will always point to the LD2410Async instance that triggered the callback (important if you have several instances resp. more than one LD2410 connected to your board)..
+
89}
+
90
+
91void setup() {
+
92 // Initialize USB serial for debug output
+
93 Serial.begin(115200);
+
94 while (!Serial) {
+
95 ; // wait for Serial Monitor
+
96 }
+
97 Serial.println("LD2410Async example: change resolution and reboot");
+
98
+
99 // Initialize Serial1 with user-defined pins and baudrate
+
100 RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
+
101
+
102 // Start the radar background task (parses incoming data frames)
+
103 if (radar.begin()) {
+
104 Serial.println("Radar task started successfully.");
+
105 // Request all config data, then modify in callback
+
106 if (!radar.requestAllConfigSettingsAsync(onConfigReceived)) {
+
107 //It is good practive to check the return value of commands for true/false.
+
108 //False indicates that the command could not be sent (e.g. because another async command is still pending)
+
109 Serial.println("Error! Could not start config data request");
+
110 }
+
111 }
+
112 else {
+
113 Serial.println("Error! Could not start radar task.");
+
114 }
+
115
+
116}
+
117
+
118void loop() {
+
119 // Nothing to do here.
+
120 // The library handles communication and invokes callbacks automatically.
+
121 delay(1000);
+
122}
+
+
+ + + + diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html new file mode 100644 index 0000000..d72e74c --- /dev/null +++ b/docu/classLD2410Async-members.html @@ -0,0 +1,181 @@ + + + + + + + +LD2410Async: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Async Member List
+
+
+ +

This is the complete list of members for LD2410Async, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
asyncCancel()LD2410Async
AsyncCommandCallback typedefLD2410Async
AsyncCommandResult enum nameLD2410Async
asyncIsBusy()LD2410Async
autoConfigStatusLD2410Async
begin()LD2410Async
beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
bufferSizeLD2410Async
configDataLD2410Async
configModeEnabledLD2410Async
configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async
configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
detectionDataLD2410Async
DetectionDataCallback typedefLD2410Async
disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
disableInactivityHandling()LD2410Asyncinline
enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
enableInactivityHandling()LD2410Asyncinline
end()LD2410Async
engineeringModeEnabledLD2410Async
firmwareLD2410Async
GenericCallback typedefLD2410Async
getAsyncCommandTimeoutMs() constLD2410Asyncinline
getConfigData() constLD2410Async
getConfigDataRef() constLD2410Asyncinline
getDetectionData() constLD2410Async
getDetectionDataRef() constLD2410Asyncinline
getInactivityTimeoutMs() constLD2410Asyncinline
isConfigModeEnabled() constLD2410Asyncinline
isEngineeringModeEnabled() constLD2410Asyncinline
isInactivityHandlingEnabled() constLD2410Asyncinline
LD2410Async(Stream &serial)LD2410Async
macLD2410Async
macStringLD2410Async
protocolVersionLD2410Async
rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
setInactivityHandling(bool enable)LD2410Async
setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
+
+ + + + diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html new file mode 100644 index 0000000..5bfb934 --- /dev/null +++ b/docu/classLD2410Async.html @@ -0,0 +1,3419 @@ + + + + + + + +LD2410Async: LD2410Async Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LD2410Async Class Reference
+
+
+ +

Asynchronous driver for the LD2410 human presence radar sensor. + More...

+ +

#include <LD2410Async.h>

+
+Collaboration diagram for LD2410Async:
+
+
+
[legend]
+ + + + + + + + + + + + + + +

+Public Types

enum class  AsyncCommandResult : byte { SUCCESS +, FAILED +, TIMEOUT +, CANCELED + }
 Result of an asynchronous command execution. More...
 
typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
 Callback signature for asynchronous command completion.
 
typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
 Generic callback signature used for simple notifications.
 
typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
 Callback type for receiving detection data events.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LD2410Async (Stream &serial)
 Constructs a new LD2410Async instance bound to a given serial stream.
 
bool begin ()
 Starts the background task that continuously reads data from the sensor.
 
bool end ()
 Stops the background task started by begin().
 
void setInactivityHandling (bool enable)
 Enables or disables automatic inactivity handling of the sensor.
 
void enableInactivityHandling ()
 Convenience method: enables inactivity handling.
 
void disableInactivityHandling ()
 Convenience method: disables inactivity handling.
 
bool isInactivityHandlingEnabled () const
 Returns whether inactivity handling is currently enabled.
 
void setInactivityTimeoutMs (unsigned long timeoutMs)
 Sets the timeout period for inactivity handling.
 
unsigned long getInactivityTimeoutMs () const
 Returns the current inactivity timeout period.
 
void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
 Registers a callback for new detection data.
 
void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
 Registers a callback for configuration changes.
 
void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
 Registers a callback for configuration data updates.
 
LD2410Types::DetectionData getDetectionData () const
 Returns a clone of the latest detection data from the radar.
 
const LD2410Types::DetectionDatagetDetectionDataRef () const
 Access the current detection data without making a copy.
 
LD2410Types::ConfigData getConfigData () const
 Returns a clone of the current configuration data of the radar.
 
const LD2410Types::ConfigDatagetConfigDataRef () const
 Access the current config data without making a copy.
 
bool asyncIsBusy ()
 Checks if an asynchronous command is currently pending.
 
void asyncCancel ()
 Cancels any pending asynchronous command or sequence.
 
void setAsyncCommandTimeoutMs (unsigned long timeoutMs)
 Sets the timeout for async command callbacks.
 
unsigned long getAsyncCommandTimeoutMs () const
 Returns the current async command timeout.
 
bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
 Enables config mode on the radar.
 
bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
 Disables config mode on the radar.
 
bool isConfigModeEnabled () const
 Detects if config mode is enabled.
 
bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
 Enables engineering mode.
 
bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
 Disables engineering mode.
 
bool isEngineeringModeEnabled () const
 Detects if engineering mode is enabled.
 
bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the current gate parameters from the sensor.
 
bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
 Configures the maximum detection gates and "no-one" timeout on the sensor.
 
bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
 Configures sensitivity thresholds for all gates at once.
 
bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
 Configures sensitivity thresholds for a single gate.
 
bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the firmware version of the sensor.
 
bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
 Configures the UART baud rate of the sensor.
 
bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
 Configures the baudrate of the serial port of the sensor.
 
bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
 Restores factory settings of the sensor.
 
bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
 Reboots the sensor.
 
bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
 Enables bluetooth.
 
bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
 Disables bluetooth.
 
bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the bluetooth mac address.
 
bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
 Sets the password for bluetooth access to the sensor.
 
bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
 Sets the password for bluetooth access to the sensor.
 
bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
 Resets the password for bluetooth access to the default value (HiLink)
 
bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
 Configures the distance resolution of the radar.
 
bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
 Configures the distance resolution explicitly to 75 cm per gate.
 
bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
 Configures the distance resolution explicitly to 20 cm per gate.
 
bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the current distance resolution setting from the sensor.
 
bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
 Configures the auxiliary control parameters (light and output pin).
 
bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the current auxiliary control settings.
 
bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
 Starts the automatic configuration (auto-config) routine on the sensor.
 
bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
 Requests the current status of the auto-config routine.
 
bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
 Requests all configuration settings from the sensor.
 
bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
 Requests all static information from the sensor.
 
bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
 Applies a full ConfigData struct to the LD2410.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

LD2410Types::DetectionData detectionData
 Latest detection results from the radar.
 
LD2410Types::ConfigData configData
 Current configuration parameters of the radar.
 
unsigned long protocolVersion = 0
 Protocol version reported by the radar.
 
unsigned long bufferSize = 0
 Buffer size reported by the radar protocol.
 
bool configModeEnabled = false
 True if the sensor is currently in config mode.
 
bool engineeringModeEnabled = false
 True if the sensor is currently in engineering mode.
 
String firmware = ""
 Firmware version string of the radar.
 
byte mac [6]
 MAC address of the radar’s Bluetooth module (if available).
 
String macString = ""
 MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
 
LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
 Current status of the auto-configuration routine.
 
+

Detailed Description

+

Asynchronous driver for the LD2410 human presence radar sensor.

+

The LD2410 is a mmWave radar sensor capable of detecting both moving and stationary targets, reporting presence, distance, and per-gate signal strength. This class implements a non-blocking, asynchronous interface for communicating with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).

+

+Features

+
    +
  • Continuous background task that parses incoming frames and updates data.
  • +
  • Access to latest detection results via getDetectionData() or getDetectionDataRef().
  • +
  • Access to current configuration via getConfigData() or getConfigDataRef().
  • +
  • Asynchronous commands for configuration (with callbacks).
  • +
  • Support for engineering mode (per-gate signal values).
  • +
  • Automatic inactivity handling (optional recovery and reboot).
  • +
  • Utility methods for safe enum conversion and debugging output.
  • +
+

+Accessing data

+

You can either clone the structs (safe to modify) or access them by reference (efficient read-only):

+

+Example: Access detection data without cloning

+
const DetectionData& data = radar.getDetectionDataRef(); // no copy
+
Serial.print("Target state: ");
+
Serial.println(static_cast<int>(data.targetState));
+

+Example: Clone config data, modify, and write back

+
ConfigData cfg = radar.getConfigData(); // clone
+
cfg.noOneTimeout = 60;
+
radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.println("Config updated successfully!");
+
}
+
});
+
Asynchronous driver for the LD2410 human presence radar sensor.
Definition LD2410Async.h:86
+
AsyncCommandResult
Result of an asynchronous command execution.
Definition LD2410Async.h:95
+
@ SUCCESS
Command completed successfully and ACK was received.
+

+Usage

+

Typical workflow:

    +
  1. Construct with a reference to a Stream object connected to the sensor.
  2. +
  3. Call begin() to start the background task.
  4. +
  5. Register callbacks for detection data and/or config updates.
  6. +
  7. Use async commands to adjust sensor configuration as needed.
  8. +
  9. Call end() to stop background processing if no longer required.
  10. +
+

Example:

HardwareSerial radarSerial(2);
+
LD2410Async radar(radarSerial);
+
+
void setup() {
+
Serial.begin(115200);
+
radar.begin();
+
+
// Register callback for detection updates
+
radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
+
sender->getDetectionDataRef().print(); // direct access, no copy
+
});
+
}
+
+
void loop() {
+
// Other application logic
+
}
+
const LD2410Types::DetectionData & getDetectionDataRef() const
Access the current detection data without making a copy.
+
void print() const
Debug helper: print detection data contents to Serial.
+
+

Definition at line 86 of file LD2410Async.h.

+

Member Typedef Documentation

+ +

◆ AsyncCommandCallback

+ +
+
+ + + + +
void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
+
+ +

Callback signature for asynchronous command completion.

+
Parameters
+ + + + +
senderPointer to the LD2410Async instance that triggered the callback.
resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
userDataUser-specified value passed when registering the callback.
+
+
+ +

Definition at line 112 of file LD2410Async.h.

+ +
+
+ +

◆ DetectionDataCallback

+ +
+
+ + + + +
void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
+
+ +

Callback type for receiving detection data events.

+

This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

+
Parameters
+ + + + +
senderPointer to the LD2410Async instance that triggered the callback.
presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
userDataUser-defined value passed when registering the callback.
+
+
+ +

Definition at line 134 of file LD2410Async.h.

+ +
+
+ +

◆ GenericCallback

+ +
+
+ + + + +
void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
+
+ +

Generic callback signature used for simple notifications.

+
Parameters
+ + + +
senderPointer to the LD2410Async instance that triggered the callback.
userDataUser-specified value passed when registering the callback.
+
+
+ +

Definition at line 120 of file LD2410Async.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ AsyncCommandResult

+ +
+
+ + + + + +
+ + + + +
enum class LD2410Async::AsyncCommandResult : byte
+
+strong
+
+ +

Result of an asynchronous command execution.

+

Every async command reports back its outcome via the callback.

+ + + + + +
Enumerator
SUCCESS 

Command completed successfully and ACK was received.

+
FAILED 

Command failed (sensor responded with negative ACK).

+
TIMEOUT 

No ACK received within the expected time window.

+
CANCELED 

Command was canceled by the user before completion.

+
+ +

Definition at line 95 of file LD2410Async.h.

+
95 : byte {
+
96 SUCCESS, ///< Command completed successfully and ACK was received.
+
97 FAILED, ///< Command failed (sensor responded with negative ACK).
+
98 TIMEOUT, ///< No ACK received within the expected time window.
+
99 CANCELED ///< Command was canceled by the user before completion.
+
100 };
+
@ TIMEOUT
No ACK received within the expected time window.
+
@ FAILED
Command failed (sensor responded with negative ACK).
+
@ CANCELED
Command was canceled by the user before completion.
+
+
+
+

Constructor & Destructor Documentation

+ +

◆ LD2410Async()

+ +
+
+ + + + + + + +
LD2410Async::LD2410Async (Stream & serial)
+
+ +

Constructs a new LD2410Async instance bound to a given serial stream.

+

The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

+

Example:

HardwareSerial radarSerial(2);
+
LD2410Async radar(radarSerial);
+
Parameters
+ + +
serialReference to a Stream object used to exchange data with the sensor.
+
+
+ +

Definition at line 1646 of file LD2410Async.cpp.

+
1647{
+
1648 sensor = &serial;
+
1649}
+
+
+
+

Member Function Documentation

+ +

◆ asyncCancel()

+ +
+
+ + + + + + + +
void LD2410Async::asyncCancel ()
+
+ +

Cancels any pending asynchronous command or sequence.

+

If canceled, the callback of the running command is invoked with result type CANCELED. After canceling, the sensor may remain in config mode — consider disabling config mode or rebooting to return to detection operation.

+ +

Definition at line 534 of file LD2410Async.cpp.

+
534 {
+
535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
+
536}
+
+
+
+ +

◆ asyncIsBusy()

+ +
+
+ + + + + + + +
bool LD2410Async::asyncIsBusy ()
+
+ +

Checks if an asynchronous command is currently pending.

+
Returns
true if there is an active command awaiting an ACK, false if the library is idle.
+ +

Definition at line 594 of file LD2410Async.cpp.

+
594 {
+
595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
+
596}
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + +
bool LD2410Async::begin ()
+
+ +

Starts the background task that continuously reads data from the sensor.

+

This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

+
Returns
true if the task was successfully started, false if already running.
+ +

Definition at line 1577 of file LD2410Async.cpp.

+
1577 {
+
1578 if (taskHandle == NULL) {
+ +
1580 DEBUG_PRINTLN("Starting data processing task");
+
1581 taskStop = false;
+
1582
+
1583 BaseType_t result = xTaskCreate(
+
1584 [](void* param) {
+
1585 if (param) {
+
1586 static_cast<LD2410Async*>(param)->taskLoop();
+
1587 }
+
1588 vTaskDelete(NULL);
+
1589 },
+
1590 "LD2410Task",
+
1591 4096,
+
1592 this,
+
1593 1,
+
1594 &taskHandle
+
1595 );
+
1596
+
1597 if (result == pdPASS) {
+
1598 return true;
+
1599 }
+
1600 else {
+ +
1602 DEBUG_PRINTLN("Task creation failed");
+
1603 taskHandle = NULL;
+
1604 return false;
+
1605 }
+
1606 }
+ +
1608 DEBUG_PRINTLN("Data processing task already active");
+
1609 return false;
+
1610}
+
#define DEBUG_PRINT_MILLIS
Definition LD2410Debug.h:48
+
#define DEBUG_PRINTLN(...)
Definition LD2410Debug.h:50
+
+
+
+ +

◆ beginAutoConfigAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::beginAutoConfigAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Starts the automatic configuration (auto-config) routine on the sensor.

+

Auto-config lets the radar adjust its internal thresholds and sensitivities for the current environment. This can take several seconds to complete and results in updated sensitivity values.

+

The progress and result can be checked with requestAutoConfigStatusAsync().

+
Note
Requires config mode. This method will manage entering and exiting config mode automatically.
+
+Auto-config temporarily suspends normal detection reporting.
+

+Example: Run auto-config

+
radar.beginAutoConfigAsync([](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.println("Auto-config started.");
+
} else {
+
Serial.println("Failed to start auto-config.");
+
}
+
});
+

+Do:

+ +

+Don’t:

+
    +
  • Expect instant results — the sensor needs time to complete the process.
  • +
+
Parameters
+ + + +
callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the command is acknowledged or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1042 of file LD2410Async.cpp.

+
1042 {
+ +
1044 DEBUG_PRINTLN("Begin auto config");
+
1045
+
1046 if (asyncIsBusy()) return false;
+
1047
+
1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
+
1049};
+
bool asyncIsBusy()
Checks if an asynchronous command is currently pending.
+
constexpr byte beginAutoConfigCommandData[6]
Definition LD2410Defs.h:71
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureAllConfigSettingsAsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool LD2410Async::configureAllConfigSettingsAsync (const LD2410Types::ConfigData & configToWrite,
bool writeAllConfigData,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Applies a full ConfigData struct to the LD2410.

+

If writeAllConfigData is true, the method will first fetch the current config, compare it with the provide Config data and then create a command sequence that will only update the changes config values. If writeAllConfigData is false, the method will write all values in the provided ConfigData to the sensor, regardless of whether they differ from the current config.

+
Note
This is a high-level method that involves multiple commands (up to 18).
+
+Requires config mode. This method will manage entering and exiting config mode automatically (if config mode is not already active).
+
+If another async command is already pending, the command fails.
+
+Any members of ConfigData that are left at invalid values (e.g. enums set to NOT_SET) will cause the sequence to fail.
+

+Example: Clone, modify, and apply config

+
ConfigData cfg = radar.getConfigData(); // clone current config
+
cfg.noOneTimeout = 120; // change timeout
+
cfg.distanceGateMotionSensitivity[2] = 75;
+
+
radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.println("All config applied successfully!");
+
}
+
});
+

+Do:

+
    +
  • Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
  • +
  • If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
  • +
+

+Don’t:

+
    +
  • Dont write all config data (writeAllConfigData=true) if not really necessary. This generates unnecessary wear on the sensors memory.
  • +
  • Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
  • +
+
Parameters
+ + + + + +
configToWriteThe configuration data to be applied.
writeAllConfigDataIf true, all fields in configToWrite are applied. If false, changed values are written.
callbackFunction with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData), executed when the sequence finishes (success/fail/timeout/cancel).
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command sequence has been started, false otherwise.
+ +

Definition at line 1355 of file LD2410Async.cpp.

+
1356{
+
1357
+ +
1359 DEBUG_PRINTLN("Writing config data to the LD2410");
+
1360
+
1361 if (asyncIsBusy()) return false;
+
1362
+
1363
+
1364 if (!configToWrite.isValid()) {
+ +
1366 DEBUG_PRINTLN("configToWrite is invalid.");
+
1367 return false;
+
1368 }
+
1369
+
1370 configureAllConfigSettingsAsyncConfigActive = true;
+
1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
+
1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
+
1373 configureAllConfigSettingsAsyncConfigCallback = callback;
+
1374 configureAllConfigSettingsAsyncConfigUserData = userData;
+
1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
+
1376
+
1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
+
1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
+
1379 }
+
1380 else {
+
1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
+
1382 //If we save all changes anyway, no need to request current config data first
+
1383 return configureAllConfigSettingsAsyncWriteConfig();
+
1384 }
+
1385 else {
+
1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
+
1387 }
+
1388 }
+
1389
+
1390}
+
bool isConfigModeEnabled() const
Detects if config mode is enabled.
+
bool isValid() const
Validates the configuration data for correctness.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureAuxControlSettingsAsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool LD2410Async::configureAuxControlSettingsAsync (LD2410Types::LightControl light_control,
byte light_threshold,
LD2410Types::OutputControl output_control,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the auxiliary control parameters (light and output pin).

+

This configures how the OUT pin behaves depending on light levels and presence detection. Typical use cases include controlling an external lamp or relay.

+
Note
Requires config mode. Will be managed automatically.
+
+Both enums must be set to valid values (not NOT_SET).
+
+Fails if another async command is pending.
+
+
Parameters
+ + + + + + +
lightControlLight control behavior (see LightControl enum).
lightThresholdThreshold (0–255) used for light-based switching.
outputControlOutput pin logic configuration (see OutputControl enum).
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1016 of file LD2410Async.cpp.

+
1019{
+ +
1021 DEBUG_PRINTLN("Set Aux Control Settings");
+
1022 if (asyncIsBusy()) return false;
+
1023
+ +
1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
+
1026
+
1027 return sendConfigCommandAsync(cmd, callback, userData);
+
1028}
+
bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
+
constexpr byte setAuxControlSettingCommandData[8]
Definition LD2410Defs.h:68
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureBaudRateAsync() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool LD2410Async::configureBaudRateAsync (byte baudRateSetting,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the UART baud rate of the sensor.

+

The new baud rate becomes active only after reboot. The ESP32’s Serial interface must also be reconfigured to the new baud rate after reboot.

+
Note
Valid values are 1–8. Values outside range are rejected resp. method will fail.
+
+Requires config mode. Will be managed automatically.
+
+If another async command is pending, this call fails.
+
+After execution, call rebootAsync() to activate changes.
+
Parameters
+ + + + +
baudRateSettingNumeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 894 of file LD2410Async.cpp.

+
896{
+ +
898 DEBUG_PRINTLN("Set Baud Rate");
+
899
+
900 if (asyncIsBusy()) return false;
+
901
+
902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
+
903 return false;
+
904
+
905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
+
906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
+
907
+
908 return sendConfigCommandAsync(cmd, callback, userData);
+
909}
+
bool buildBaudRateCommand(byte *out, byte baudRateSetting)
+
constexpr byte setBaudRateCommandData[6]
Definition LD2410Defs.h:38
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ configureBaudRateAsync() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool LD2410Async::configureBaudRateAsync (LD2410Types::Baudrate baudRate,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the baudrate of the serial port of the sensor.

+

The new baudrate will only become active after a reboot of the sensor. If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.

+
Note
If another async command is pending, this call fails.
+
+After execution, call rebootAsync() to activate changes.
+
Parameters
+ + + + +
baudrateA valid baud rate from the Baudrate enum.
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 913 of file LD2410Async.cpp.

+
913 {
+
914
+
915 if (asyncIsBusy()) return false;
+
916
+
917 return configureBaudRateAsync((byte)baudRate, callback, userData);
+
918}
+
bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
Configures the UART baud rate of the sensor.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureBluetoothPasswordAsync() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool LD2410Async::configureBluetoothPasswordAsync (const char * password,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Sets the password for bluetooth access to the sensor.

+
Parameters
+ + + + +
passwordNew bluetooth password. Max 6. chars.
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 954 of file LD2410Async.cpp.

+
956{
+ +
958 DEBUG_PRINTLN("Set Bluetooth Password");
+
959 if (asyncIsBusy()) return false;
+
960
+ +
962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
+
963
+
964 return sendConfigCommandAsync(cmd, callback, userData);
+
965}
+
bool buildBluetoothPasswordCommand(byte *out, const char *password)
+
constexpr byte setBluetoothPasswordCommandData[10]
Definition LD2410Defs.h:53
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ configureBluetoothPasswordAsync() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + +
bool LD2410Async::configureBluetoothPasswordAsync (const String & password,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Sets the password for bluetooth access to the sensor.

+
Parameters
+ + + + +
passwordNew bluetooth password. Max 6. chars.
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 969 of file LD2410Async.cpp.

+
969 {
+
970
+
971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
+
972}
+
bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
Sets the password for bluetooth access to the sensor.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureDefaultBluetoothPasswordAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Resets the password for bluetooth access to the default value (HiLink)

+
Parameters
+ + + +
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 975 of file LD2410Async.cpp.

+
975 {
+ +
977 DEBUG_PRINTLN("Reset Bluetooth Password");
+
978 if (asyncIsBusy()) return false;
+
979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
+
980}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureDistanceGateSensitivityAsync() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool LD2410Async::configureDistanceGateSensitivityAsync (byte gate,
byte movingThreshold,
byte stationaryThreshold,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures sensitivity thresholds for a single gate.

+

Updates both moving and stationary thresholds for the given gate index. If the gate index is greater than 8, all gates are updated instead.

+
Note
Requires config mode. Will be managed automatically.
+
+If another async command is pending, this call fails.
+
Parameters
+ + + + + + +
gateIndex of the gate (0–8). Values >8 apply to all gates.
movingThresholdSensitivity for moving targets (0–100).
stationaryThresholdSensitivity for stationary targets (0–100).
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 867 of file LD2410Async.cpp.

+
870{
+ +
872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
+
873
+
874 if (asyncIsBusy()) return false;
+
875
+ +
877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
+
878
+
879 return sendConfigCommandAsync(cmd, callback, userData);
+
880}
+
bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
+
constexpr byte distanceGateSensitivityConfigCommandData[0x16]
Definition LD2410Defs.h:77
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureDistanceGateSensitivityAsync() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
bool LD2410Async::configureDistanceGateSensitivityAsync (const byte movingThresholds[9],
const byte stationaryThresholds[9],
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures sensitivity thresholds for all gates at once.

+

A sequence of commands will be sent, one for each gate. Threshold values are automatically clamped to 0–100.

+
Note
Requires config mode. Will be managed automatically.
+
+If another async command is pending, this call fails.
+
Parameters
+ + + + + +
movingThresholdsArray of 9 sensitivity values for moving targets (0–100).
stationaryThresholdsArray of 9 sensitivity values for stationary targets (0–100).
callbackCallback fired when all updates are acknowledged or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the sequence was started, false otherwise.
+ +

Definition at line 845 of file LD2410Async.cpp.

+
848{
+ +
850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
+
851
+
852 if (asyncIsBusy()) return false;
+
853
+
854 if (!resetCommandSequence()) return false;
+
855
+
856 for (byte gate = 0; gate < 9; gate++) {
+ +
858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
+
859 if (!addCommandToSequence(cmd)) return false;
+
860 }
+
861
+
862 return executeCommandSequenceAsync(callback, userData);
+
863}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureDistanceResolution75cmAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::configureDistanceResolution75cmAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the distance resolution explicitly to 75 cm per gate.

+

Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).

+
Note
Requires config mode. Will be managed automatically.
+
+Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
+Fails if another async command is pending.
+
Parameters
+ + + +
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 982 of file LD2410Async.cpp.

+
982 {
+ +
984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
+
985 if (asyncIsBusy()) return false;
+
986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
+
987};
+
constexpr byte setDistanceResolution75cmCommandData[6]
Definition LD2410Defs.h:34
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureDistanceResolutionAsync()

+ +
+
+ + + + + + + + + + + + + + + + +
bool LD2410Async::configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the distance resolution of the radar.

+

The distance resolution defines the size of each distance gate and the maximum detection range:

    +
  • RESOLUTION_75CM → longer range, coarser detail.
  • +
  • RESOLUTION_20CM → shorter range, finer detail.
  • +
+
Note
Requires config mode. Will be managed automatically.
+
+Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
+Fails if another async command is pending.
+
Parameters
+ + + + +
distanceResolutionValue from the DistanceResolution enum. Must not be NOT_SET.
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the ACK is received or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false if invalid parameters or the library is busy.
+ +

Definition at line 989 of file LD2410Async.cpp.

+
991{
+ +
993 DEBUG_PRINTLN("Set Distance Resolution");
+
994 if (asyncIsBusy()) return false;
+
995
+
996 byte cmd[6];
+
997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
+
998
+
999 return sendConfigCommandAsync(cmd, callback, userData);
+
1000}
+
bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configureMaxGateAndNoOneTimeoutAsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate,
byte maxStationaryGate,
unsigned short noOneTimeout,
AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the maximum detection gates and "no-one" timeout on the sensor.

+

This command updates:

    +
  • Maximum motion detection distance gate (2–8).
  • +
  • Maximum stationary detection distance gate (2–8).
  • +
  • Timeout duration (0–65535 seconds) until "no presence" is declared.
  • +
+
Note
Requires config mode to be enabled. The method will internally enable/disable config mode if necessary.
+
+If another async command is pending, this call fails.
+
Parameters
+ + + + + + +
maxMovingGateFurthest gate used for motion detection (2–8).
maxStationaryGateFurthest gate used for stationary detection (2–8).
noOneTimeoutTimeout in seconds until "no one" is reported (0–65535).
callbackCallback fired when ACK is received or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise (busy state or invalid values).
+ +

Definition at line 808 of file LD2410Async.cpp.

+
811{
+ +
813 DEBUG_PRINTLN("Set Max Gate");
+
814 if (asyncIsBusy()) return false;
+
815
+
816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
+
817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
+
818 return sendConfigCommandAsync(cmd, callback, userData);
+
819 }
+
820 return false;
+
821}
+
bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
+
constexpr byte maxGateCommandData[0x16]
Definition LD2410Defs.h:83
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ configuresDistanceResolution20cmAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::configuresDistanceResolution20cmAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Configures the distance resolution explicitly to 20 cm per gate.

+

Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).

+
Note
Requires config mode. Will be managed automatically.
+
+Requires a reboot to activate value changes. Call rebootAsync() after setting.
+
+Fails if another async command is pending.
+
Parameters
+ + + +
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1002 of file LD2410Async.cpp.

+
1002 {
+ +
1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
+
1005 if (asyncIsBusy()) return false;
+
1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
+
1007};
+
constexpr byte setDistanceResolution20cmCommandData[6]
Definition LD2410Defs.h:35
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ disableBluetoothAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::disableBluetoothAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Disables bluetooth.

+
Parameters
+ + + +
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 939 of file LD2410Async.cpp.

+
939 {
+ +
941 DEBUG_PRINTLN("Disable Bluetooth");
+
942 if (asyncIsBusy()) return false;
+
943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
+
944}
+
constexpr byte bluetoothSettingsOnCommandData[6]
Definition LD2410Defs.h:47
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ disableConfigModeAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::disableConfigModeAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Disables config mode on the radar.

+

This should be called after finishing configuration, to return the sensor to normal detection operation.

+
Note
If an async command is already pending (asyncIsBusy() == true), this command will not be sent.
+
Parameters
+ + + +
callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 797 of file LD2410Async.cpp.

+
797 {
+
798 if (asyncIsBusy()) return false;
+
799 return disableConfigModeInternalAsync(callback, userData);
+
800}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ disableEngineeringModeAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::disableEngineeringModeAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Disables engineering mode.

+

Returns sensor reporting to basic detection results only.

+
Note
Requires config mode. Will be enabled automatically if not active.
+
Parameters
+ + + +
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 838 of file LD2410Async.cpp.

+
838 {
+ +
840 DEBUG_PRINTLN("Disable EngineeringMode");
+
841 if (asyncIsBusy()) return false;
+
842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
+
843}
+
constexpr byte engineeringModeDisableCommandData[4]
Definition LD2410Defs.h:62
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ disableInactivityHandling()

+ +
+
+ + + + + +
+ + + + + + + +
void LD2410Async::disableInactivityHandling ()
+
+inline
+
+ +

Convenience method: disables inactivity handling.

+

Equivalent to calling setInactivityHandling(false).

+ +

Definition at line 308 of file LD2410Async.h.

+
308{ setInactivityHandling(false); };
+
void setInactivityHandling(bool enable)
Enables or disables automatic inactivity handling of the sensor.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ enableBluetoothAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::enableBluetoothAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Enables bluetooth.

+
Parameters
+ + + +
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 931 of file LD2410Async.cpp.

+
931 {
+ +
933 DEBUG_PRINTLN("Enable Bluetooth");
+
934 if (asyncIsBusy()) return false;
+
935
+
936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
+
937}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ enableConfigModeAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::enableConfigModeAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Enables config mode on the radar.

+

Config mode must be enabled before issuing most configuration commands. This command itself is asynchronous — the callback fires once the sensor acknowledges the mode switch.

+
Note
If asyncIsBusy() is true, this command will not be sent.
+
+Normal detection data is suspended while config mode is active.
+
Parameters
+ + + +
callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
userDataOptional value that will be passed to the callback.
+
+
+
Returns
true if the command was sent, false if blocked.
+ +

Definition at line 786 of file LD2410Async.cpp.

+
786 {
+
787 if (asyncIsBusy()) return false;
+
788 return enableConfigModeInternalAsync(callback, userData);
+
789}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ enableEngineeringModeAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::enableEngineeringModeAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Enables engineering mode.

+

In this mode, the sensor sends detailed per-gate signal values in addition to basic detection results.

+
Note
Engineering mode is temporary and lost after power cycle.
+
+Requires config mode. Will be enabled automatically if not active.
+
Parameters
+ + + +
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 831 of file LD2410Async.cpp.

+
831 {
+ +
833 DEBUG_PRINTLN("Enable EngineeringMode");
+
834 if (asyncIsBusy()) return false;
+
835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
+
836}
+
constexpr byte engineeringModeEnableCommandData[4]
Definition LD2410Defs.h:59
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ enableInactivityHandling()

+ +
+
+ + + + + +
+ + + + + + + +
void LD2410Async::enableInactivityHandling ()
+
+inline
+
+ +

Convenience method: enables inactivity handling.

+

Equivalent to calling setInactivityHandling(true).

+ +

Definition at line 301 of file LD2410Async.h.

+
301{ setInactivityHandling(true); };
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ end()

+ +
+
+ + + + + + + +
bool LD2410Async::end ()
+
+ +

Stops the background task started by begin().

+

After calling end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

+
Returns
true if the task was stopped, false if it was not active.
+ +

Definition at line 1612 of file LD2410Async.cpp.

+
1612 {
+
1613 if (taskHandle != NULL) {
+ +
1615 DEBUG_PRINTLN("Stopping data processing task");
+
1616 taskStop = true;
+
1617
+
1618 // Wait up to 200ms for graceful exit
+
1619 for (int i = 0; i < 20; i++) {
+
1620 if (taskHandle == NULL) {
+ +
1622 DEBUG_PRINTLN("Task exited gracefully");
+
1623 return true;
+
1624 }
+
1625 vTaskDelay(1 / portTICK_PERIOD_MS);
+
1626 }
+
1627
+
1628 // If still not NULL, force delete
+ +
1630 DEBUG_PRINTLN("Forcing task stop");
+
1631 vTaskDelete(taskHandle);
+
1632 taskHandle = NULL;
+
1633 return true;
+
1634 }
+
1635
+
1636 DEBUG_PRINTLN("Data processing task is not active");
+
1637 return false;
+
1638}
+
+
+
+ +

◆ getAsyncCommandTimeoutMs()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long LD2410Async::getAsyncCommandTimeoutMs () const
+
+inline
+
+ +

Returns the current async command timeout.

+
Returns
Timeout in milliseconds.
+ +

Definition at line 562 of file LD2410Async.h.

+
562{ return asyncCommandTimeoutMs; }
+
+
+
+ +

◆ getConfigData()

+ +
+
+ + + + + + + +
LD2410Types::ConfigData LD2410Async::getConfigData () const
+
+ +

Returns a clone of the current configuration data of the radar.

+

The returned struct contains the most recently requested or received configuration values, such as sensitivities, resolution, timeouts, and auxiliary settings.

+

Equivalent to directly accessing the public member configData, but provided for encapsulation and future-proofing.

+
Note
This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
+

+Example: Clone, modify, and write back

+
// Clone current config
+
ConfigData cfg = radar.getConfigData();
+
+
// Modify locally
+
cfg.noOneTimeout = 60; // change timeout
+
cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
+
+
// Send modified config back to sensor
+
radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.println("Config updated successfully!");
+
}
+
});
+

+Do:

+
    +
  • Use when you want a clone of the current config to adjust and send back.
  • +
  • Safely modify the struct without risking internal state corruption.
  • +
+

+Don’t:

+
    +
  • Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
  • +
+
Returns
A copy of the current ConfigData.
+ +

Definition at line 1451 of file LD2410Async.cpp.

+
1451 {
+
1452 return configData;
+
1453}
+
LD2410Types::ConfigData configData
Current configuration parameters of the radar.
+
+
+
+ +

◆ getConfigDataRef()

+ +
+
+ + + + + +
+ + + + + + + +
const LD2410Types::ConfigData & LD2410Async::getConfigDataRef () const
+
+inline
+
+ +

Access the current config data without making a copy.

+

This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

+
Note
Since this returns a reference to the internal data, the values may change when new configuration is received. Do not store the reference for long-term use.
+
+This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
+

+Example: Efficient read access without cloning

+
const ConfigData& cfg = radar.getConfigDataRef(); // no copy
+
Serial.print("Resolution: ");
+
Serial.println(static_cast<int>(cfg.distanceResolution));
+

+Do:

+
    +
  • Use when you only want to inspect configuration quickly.
  • +
  • Use for efficient read-only access.
  • +
+

+Don’t:

+
    +
  • Try to modify the returned struct (it’s const).
  • +
  • Keep the reference and assume it will remain valid forever.
  • +
+
Returns
Const reference to the current ConfigData.
+ +

Definition at line 523 of file LD2410Async.h.

+
523{ return configData; }
+
+
+
+ +

◆ getDetectionData()

+ +
+
+ + + + + + + +
LD2410Types::DetectionData LD2410Async::getDetectionData () const
+
+ +

Returns a clone of the latest detection data from the radar.

+

The returned struct contains the most recently received frame, including target state, distances, signal strengths, and (if enabled) engineering mode per-gate data.

+

Equivalent to directly accessing the public member detectionData, but provided for encapsulation and future-proofing.

+
Note
This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
+

+Example: Access values from a clone

+
DetectionData data = radar.getDetectionData(); // makes a copy
+
if (data.targetState == TargetState::MOVING_TARGET) {
+
Serial.print("Moving target at distance: ");
+
Serial.println(data.movingTargetDistance);
+
}
+

+Do:

+
    +
  • Use when you want a snapshot of the latest detection data.
  • +
  • Modify the returned struct freely without affecting the internal state.
  • +
+

+Don’t:

+
    +
  • Expect this to fetch new data from the sensor (it only returns what was already received).
  • +
+
Returns
A copy of the current DetectionData.
+ +

Definition at line 1447 of file LD2410Async.cpp.

+
1447 {
+
1448 return detectionData;
+
1449}
+
LD2410Types::DetectionData detectionData
Latest detection results from the radar.
+
+
+
+ +

◆ getDetectionDataRef()

+ +
+
+ + + + + +
+ + + + + + + +
const LD2410Types::DetectionData & LD2410Async::getDetectionDataRef () const
+
+inline
+
+ +

Access the current detection data without making a copy.

+

This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

+
Note
Since this returns a reference to the internal data, the values may change as new frames arrive. Do not store the reference for long-term use.
+
+This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
+

+Example: Efficient read access without cloning

+
const DetectionData& data = radar.getDetectionDataRef(); // no copy
+
Serial.print("Stationary signal: ");
+
Serial.println(data.stationaryTargetSignal);
+

+Do:

+
    +
  • Use when you only need to read values quickly and efficiently.
  • +
  • Use when printing or inspecting live data without keeping it.
  • +
+

+Don’t:

+
    +
  • Try to modify the returned struct (it’s const).
  • +
  • Store the reference long-term (it may be updated at any time).
  • +
+
Returns
Const reference to the current DetectionData.
+ +

Definition at line 446 of file LD2410Async.h.

+
446{ return detectionData; }
+
+
+
+ +

◆ getInactivityTimeoutMs()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long LD2410Async::getInactivityTimeoutMs () const
+
+inline
+
+ +

Returns the current inactivity timeout period.

+
Returns
Timeout in milliseconds.
+ +

Definition at line 335 of file LD2410Async.h.

+
335{ return inactivityHandlingTimeoutMs; };
+
+
+
+ +

◆ isConfigModeEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool LD2410Async::isConfigModeEnabled () const
+
+inline
+
+ +

Detects if config mode is enabled.

+
Returns
true if config mode is anabled, false if config mode is disabled
+ +

Definition at line 612 of file LD2410Async.h.

+
612 {
+
613 return configModeEnabled;
+
614 };
+
bool configModeEnabled
True if the sensor is currently in config mode.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ isEngineeringModeEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool LD2410Async::isEngineeringModeEnabled () const
+
+inline
+
+ +

Detects if engineering mode is enabled.

+
Returns
true if engineering mode is anabled, false if engineering mode is disabled
+ +

Definition at line 655 of file LD2410Async.h.

+
655 {
+ +
657 };
+
bool engineeringModeEnabled
True if the sensor is currently in engineering mode.
+
+
+
+ +

◆ isInactivityHandlingEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool LD2410Async::isInactivityHandlingEnabled () const
+
+inline
+
+ +

Returns whether inactivity handling is currently enabled.

+
Returns
true if inactivity handling is enabled, false otherwise.
+ +

Definition at line 315 of file LD2410Async.h.

+
315{ return inactivityHandlingEnabled; };
+
+
+
+ +

◆ rebootAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::rebootAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Reboots the sensor.

+

After reboot, the sensor stops responding for a few seconds. Config and engineering mode are reset.

+
Note
The reboot of the sensor takes place after the ACK has been sent.
+
Parameters
+ + + +
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1433 of file LD2410Async.cpp.

+
1433 {
+
1434
+
1435
+ +
1437 DEBUG_PRINTLN("Reboot");
+
1438
+
1439 if (asyncIsBusy()) return false;
+
1440
+
1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
+
1442}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ registerConfigChangedCallback()

+ +
+
+ + + + + + + + + + + +
void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
byte userData = 0 )
+
+ +

Registers a callback for configuration changes.

+

The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

+
Parameters
+ + + +
callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
userDataOptional value that will be passed to the callback.
+
+
+ +

Definition at line 212 of file LD2410Async.cpp.

+
212 {
+
213 configChangedCallbackUserData = userData;
+
214 configChangedCallback = callback;
+
215}
+
+
+
+ +

◆ registerConfigUpdateReceivedCallback()

+ +
+
+ + + + + + + + + + + +
void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
byte userData = 0 )
+
+ +

Registers a callback for configuration data updates.

+

The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

+
Parameters
+ + + +
callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
userDataOptional value that will be passed to the callback.
+
+
+ +

Definition at line 206 of file LD2410Async.cpp.

+
206 {
+
207
+
208 configUpdateReceivedReceivedCallbackUserData = userData;
+
209 configUpdateReceivedReceivedCallback = callback;
+
210}
+
+
+
+ +

◆ registerDetectionDataReceivedCallback()

+ +
+
+ + + + + + + + + + + +
void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
byte userData = 0 )
+
+ +

Registers a callback for new detection data.

+

The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

+
Parameters
+ + + +
callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
userDataOptional value that will be passed to the callback.
+
+
+ +

Definition at line 201 of file LD2410Async.cpp.

+
201 {
+
202 detectionDataCallback = callback;
+
203 detectionDataCallbackUserData = userData;
+
204}
+
+
+
+ +

◆ requestAllConfigSettingsAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestAllConfigSettingsAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests all configuration settings from the sensor.

+

This triggers a sequence of queries that retrieves and updates:

    +
  • Gate parameters (sensitivities, max gates, timeout).
  • +
  • Distance resolution setting.
  • +
  • Auxiliary light/output control settings.
  • +
+

The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

+
Note
This is a high-level method that involves multiple commands.
+
+Requires config mode. This method will manage mode switching automatically.
+
+If another async command is already pending, the request fails.
+

+Example: Refresh config data

+
radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.println("All config data refreshed:");
+
sender->getConfigDataRef().print();
+
}
+
});
+
const LD2410Types::ConfigData & getConfigDataRef() const
Access the current config data without making a copy.
+
void print() const
Debug helper: print configuration contents to Serial.
+

+Do:

+
    +
  • Use this after connecting to ensure configData is fully populated.
  • +
  • Call before modifying config if you’re unsure of current values.
  • +
+

+Don’t:

+
    +
  • Expect it to succeed if another async command is still running.
  • +
+
Parameters
+ + + +
callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when all config data has been received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1082 of file LD2410Async.cpp.

+
1082 {
+ +
1084 DEBUG_PRINTLN("Request all config data");
+
1085
+
1086 if (asyncIsBusy()) return false;
+
1087
+
1088 if (!resetCommandSequence()) return false;
+
1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
+
1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
+
1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
+
1092
+
1093 return executeCommandSequenceAsync(callback, userData);
+
1094
+
1095}
+
constexpr byte requestDistanceResolutionCommandData[4]
Definition LD2410Defs.h:31
+
constexpr byte requestAuxControlSettingsCommandData[4]
Definition LD2410Defs.h:65
+
constexpr byte requestParamsCommandData[4]
Definition LD2410Defs.h:56
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestAllStaticDataAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestAllStaticDataAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests all static information from the sensor.

+

This includes:

    +
  • Firmware version string.
  • +
  • Bluetooth MAC address (numeric and string form).
  • +
+

The values are written into the public members firmware, mac, and macString.

+
Note
This is a high-level method that involves multiple commands.
+
+Requires config mode. Managed automatically by this method.
+
+If another async command is already pending, the request fails.
+

+Example: Retrieve firmware and MAC

+
radar.requestAllStaticDataAsync([](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
Serial.print("Firmware: ");
+
Serial.println(sender->firmware);
+
+
Serial.print("MAC: ");
+
Serial.println(sender->macString);
+
}
+
});
+
String firmware
Firmware version string of the radar.
+
String macString
MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
+

+Do:

+
    +
  • Use after initialization to log firmware version and MAC.
  • +
  • Useful for debugging or inventory identification.
  • +
+

+Don’t:

+
    +
  • Expect frequently changing data — this is static information.
  • +
+
Parameters
+ + + +
callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when static data is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1067 of file LD2410Async.cpp.

+
1067 {
+ +
1069 DEBUG_PRINTLN("Request all static data");
+
1070
+
1071 if (asyncIsBusy()) return false;
+
1072
+
1073
+
1074 if (!resetCommandSequence()) return false;
+
1075
+
1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
+
1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
+
1078
+
1079 return executeCommandSequenceAsync(callback, userData);
+
1080}
+
constexpr byte requestMacAddressCommandData[6]
Definition LD2410Defs.h:25
+
constexpr byte requestFirmwareCommandData[4]
Definition LD2410Defs.h:28
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestAutoConfigStatusAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestAutoConfigStatusAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the current status of the auto-config routine.

+

The status is written into the member variable autoConfigStatus:

    +
  • NOT_IN_PROGRESS → no auto-config running.
  • +
  • IN_PROGRESS → auto-config is currently running.
  • +
  • COMPLETED → auto-config finished (success or failure).
  • +
+
Note
Requires config mode. This method will manage mode switching automatically.
+
+If another async command is already pending, this call fails.
+

+Example: Check auto-config status

+
radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
+ +
byte) {
+
if (result == AsyncCommandResult::SUCCESS) {
+
switch (sender->autoConfigStatus) {
+
case AutoConfigStatus::NOT_IN_PROGRESS:
+
Serial.println("Auto-config not running.");
+
break;
+
case AutoConfigStatus::IN_PROGRESS:
+
Serial.println("Auto-config in progress...");
+
break;
+
case AutoConfigStatus::COMPLETED:
+
Serial.println("Auto-config completed.");
+
break;
+
default:
+
Serial.println("Unknown auto-config status.");
+
}
+
} else {
+
Serial.println("Failed to request auto-config status.");
+
}
+
});
+
LD2410Types::AutoConfigStatus autoConfigStatus
Current status of the auto-configuration routine.
+

+Do:

+
    +
  • Use this after beginAutoConfigAsync() to track progress.
  • +
  • Use autoConfigStatus for decision-making in your logic.
  • +
+

+Don’t:

+
    +
  • Assume COMPLETED means success — thresholds should still be verified.
  • +
+
Parameters
+ + + +
callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the sensor replies or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1051 of file LD2410Async.cpp.

+
1051 {
+ +
1053 DEBUG_PRINTLN("Reqtest auto config status");
+
1054
+
1055 if (asyncIsBusy()) return false;
+
1056
+
1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
+
1058}
+
constexpr byte requestAutoConfigStatusCommandData[4]
Definition LD2410Defs.h:74
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestAuxControlSettingsAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestAuxControlSettingsAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the current auxiliary control settings.

+

Fills configData.lightControl, configData.lightThreshold, and configData.outputControl.

+
Note
Requires config mode. Will be managed automatically.
+
Parameters
+ + + +
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1032 of file LD2410Async.cpp.

+
1032 {
+ +
1034 DEBUG_PRINTLN("Request Aux Control Settings");
+
1035
+
1036 if (asyncIsBusy()) return false;
+
1037
+
1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
+
1039}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestBluetoothMacAddressAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestBluetoothMacAddressAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the bluetooth mac address.

+
Note
The callback fires when the mac address has been received from the sensor (is sent with the ACK).
+
Parameters
+ + + +
callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
userDataOptional value that will be passed to the callback function.
+
+
+
Returns
true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
+ +

Definition at line 947 of file LD2410Async.cpp.

+
947 {
+ +
949 DEBUG_PRINTLN("Request Mac Address");
+
950 if (asyncIsBusy()) return false;
+
951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
+
952}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestDistanceResolutioncmAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestDistanceResolutioncmAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the current distance resolution setting from the sensor.

+

The result is written into configData.distanceResolution.

+
Note
Requires config mode. Will be managed automatically.
+
Parameters
+ + + +
callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 1009 of file LD2410Async.cpp.

+
1009 {
+ +
1011 DEBUG_PRINTLN("Request Distance Resolution cm");
+
1012 if (asyncIsBusy()) return false;
+
1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
+
1014}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestFirmwareAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestFirmwareAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the firmware version of the sensor.

+

Populates the firmware string when the ACK response arrives.

+
Note
Requires config mode. Will be managed automatically.
+
Parameters
+ + + +
callbackCallback fired when firmware info is received.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 884 of file LD2410Async.cpp.

+
884 {
+ +
886 DEBUG_PRINTLN("Request Firmware");
+
887
+
888 if (asyncIsBusy()) return false;
+
889
+
890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
+
891}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ requestGateParametersAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::requestGateParametersAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Requests the current gate parameters from the sensor.

+

Retrieves sensitivities, max gates, and timeout settings, which will be written into configData.

+
Note
Requires config mode. The method will manage mode switching if needed.
+
+If an async command is already pending, the request is rejected.
+
Parameters
+ + + +
callbackCallback fired when data is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 824 of file LD2410Async.cpp.

+
824 {
+ +
826 DEBUG_PRINTLN("Request Gate Parameters");
+
827 if (asyncIsBusy()) return false;
+
828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
+
829}
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ restoreFactorySettingsAsync()

+ +
+
+ + + + + + + + + + + +
bool LD2410Async::restoreFactorySettingsAsync (AsyncCommandCallback callback,
byte userData = 0 )
+
+ +

Restores factory settings of the sensor.

+

Restored settings only become active after a reboot.

+
Note
Requires config mode. Will be managed automatically.
+
+After execution, call rebootAsync() to activate changes.
+
Parameters
+ + + +
callbackCallback fired when ACK is received or on failure.
userDataOptional value passed to the callback.
+
+
+
Returns
true if the command was sent, false otherwise.
+ +

Definition at line 921 of file LD2410Async.cpp.

+
921 {
+ +
923 DEBUG_PRINTLN("Restore Factory Settings");
+
924
+
925 if (asyncIsBusy()) return false;
+
926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
+
927}
+
constexpr byte restoreFactorSettingsCommandData[4]
Definition LD2410Defs.h:41
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ setAsyncCommandTimeoutMs()

+ +
+
+ + + + + +
+ + + + + + + +
void LD2410Async::setAsyncCommandTimeoutMs (unsigned long timeoutMs)
+
+inline
+
+ +

Sets the timeout for async command callbacks.

+

#note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.

+
Parameters
+ + +
timeoutMsTimeout in milliseconds (default 6000 ms).
+
+
+ +

Definition at line 555 of file LD2410Async.h.

+
555{ asyncCommandTimeoutMs = timeoutMs; }
+
+
+
+ +

◆ setInactivityHandling()

+ +
+
+ + + + + + + +
void LD2410Async::setInactivityHandling (bool enable)
+
+ +

Enables or disables automatic inactivity handling of the sensor.

+

When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

    +
  1. It first tries to exit config mode (even if configModeEnabled is false).
  2. +
  3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
  4. +
+

This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

+
Parameters
+ + +
enablePass true to enable inactivity handling, false to disable it.
+
+
+ +

Definition at line 1521 of file LD2410Async.cpp.

+
1521 {
+
1522 inactivityHandlingEnabled = enable;
+
1523}
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ setInactivityTimeoutMs()

+ +
+
+ + + + + +
+ + + + + + + +
void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
+
+inline
+
+ +

Sets the timeout period for inactivity handling.

+

If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

+

Default is 60000 ms (1 minute).

+
Parameters
+ + +
timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
+
+
+ +

Definition at line 328 of file LD2410Async.h.

+
328{ inactivityHandlingTimeoutMs = timeoutMs; };
+
+
+
+

Member Data Documentation

+ +

◆ autoConfigStatus

+ +
+
+ + + + +
LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
+
+ +

Current status of the auto-configuration routine.

+

Updated by requestAutoConfigStatusAsync().

+ +

Definition at line 226 of file LD2410Async.h.

+ +
+
+ +

◆ bufferSize

+ +
+
+ + + + +
unsigned long LD2410Async::bufferSize = 0
+
+ +

Buffer size reported by the radar protocol.

+

Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

+ +

Definition at line 177 of file LD2410Async.h.

+ +
+
+ +

◆ configData

+ +
+
+ + + + +
LD2410Types::ConfigData LD2410Async::configData
+
+ +

Current configuration parameters of the radar.

+

Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

+

Structure will contain only uninitilaized data if config data is not queried explicitly.

+ +

Definition at line 161 of file LD2410Async.h.

+ +
+
+ +

◆ configModeEnabled

+ +
+
+ + + + +
bool LD2410Async::configModeEnabled = false
+
+ +

True if the sensor is currently in config mode.

+

Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

+ +

Definition at line 186 of file LD2410Async.h.

+ +
+
+ +

◆ detectionData

+ +
+
+ + + + +
LD2410Types::DetectionData LD2410Async::detectionData
+
+ +

Latest detection results from the radar.

+

Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

+ +

Definition at line 149 of file LD2410Async.h.

+ +
+
+ +

◆ engineeringModeEnabled

+ +
+
+ + + + +
bool LD2410Async::engineeringModeEnabled = false
+
+ +

True if the sensor is currently in engineering mode.

+

In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

+

Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

+ +

Definition at line 197 of file LD2410Async.h.

+ +
+
+ +

◆ firmware

+ +
+
+ + + + +
String LD2410Async::firmware = ""
+
+ +

Firmware version string of the radar.

+

Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

+ +

Definition at line 205 of file LD2410Async.h.

+ +
+
+ +

◆ mac

+ +
+
+ + + + +
byte LD2410Async::mac[6]
+
+ +

MAC address of the radar’s Bluetooth module (if available).

+

Populated by requestBluetoothMacAddressAsync().

+ +

Definition at line 212 of file LD2410Async.h.

+ +
+
+ +

◆ macString

+ +
+
+ + + + +
String LD2410Async::macString = ""
+
+ +

MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

+

Populated by requestBluetoothMacAddressAsync().

+ +

Definition at line 218 of file LD2410Async.h.

+ +
+
+ +

◆ protocolVersion

+ +
+
+ + + + +
unsigned long LD2410Async::protocolVersion = 0
+
+ +

Protocol version reported by the radar.

+

This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

+ +

Definition at line 169 of file LD2410Async.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docu/classLD2410Async.js b/docu/classLD2410Async.js new file mode 100644 index 0000000..b071293 --- /dev/null +++ b/docu/classLD2410Async.js @@ -0,0 +1,74 @@ +var classLD2410Async = +[ + [ "AsyncCommandCallback", "classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "DetectionDataCallback", "classLD2410Async.html#a19278199112e9358e96a192056e58e81", null ], + [ "GenericCallback", "classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383", null ], + [ "AsyncCommandResult", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab", [ + [ "SUCCESS", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "TIMEOUT", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "CANCELED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + ] ], + [ "LD2410Async", "classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900", null ], + [ "asyncCancel", "classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1", null ], + [ "asyncIsBusy", "classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153", null ], + [ "begin", "classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024", null ], + [ "beginAutoConfigAsync", "classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc", null ], + [ "configureAllConfigSettingsAsync", "classLD2410Async.html#a509170bfc50580131d0c72f5c91daede", null ], + [ "configureAuxControlSettingsAsync", "classLD2410Async.html#a90e3bc56482783249d966a670310bffd", null ], + [ "configureBaudRateAsync", "classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], + [ "configureBaudRateAsync", "classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a", null ], + [ "configureBluetoothPasswordAsync", "classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22", null ], + [ "configureBluetoothPasswordAsync", "classLD2410Async.html#abfe79850fa3e040a12de72ea99747266", null ], + [ "configureDefaultBluetoothPasswordAsync", "classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], + [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a9493caef9e22a89445741da019b99213", null ], + [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38", null ], + [ "configureDistanceResolution75cmAsync", "classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82", null ], + [ "configureDistanceResolutionAsync", "classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250", null ], + [ "configureMaxGateAndNoOneTimeoutAsync", "classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a", null ], + [ "configuresDistanceResolution20cmAsync", "classLD2410Async.html#a01705b527bc80949417de15b6e95140c", null ], + [ "disableBluetoothAsync", "classLD2410Async.html#addcbab1709f2a80571563609f4a23862", null ], + [ "disableConfigModeAsync", "classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c", null ], + [ "disableEngineeringModeAsync", "classLD2410Async.html#a377464026350140b0277369a13e8c1d3", null ], + [ "disableInactivityHandling", "classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2", null ], + [ "enableBluetoothAsync", "classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973", null ], + [ "enableConfigModeAsync", "classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9", null ], + [ "enableEngineeringModeAsync", "classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], + [ "enableInactivityHandling", "classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "end", "classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "getAsyncCommandTimeoutMs", "classLD2410Async.html#a93962bd109f67775ea3420596207b23a", null ], + [ "getConfigData", "classLD2410Async.html#a54388c929cea610f92891def29db66a5", null ], + [ "getConfigDataRef", "classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13", null ], + [ "getDetectionData", "classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50", null ], + [ "getDetectionDataRef", "classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090", null ], + [ "getInactivityTimeoutMs", "classLD2410Async.html#a74138af198ac827349a25e122277803f", null ], + [ "isConfigModeEnabled", "classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48", null ], + [ "isEngineeringModeEnabled", "classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19", null ], + [ "isInactivityHandlingEnabled", "classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6", null ], + [ "rebootAsync", "classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235", null ], + [ "registerConfigChangedCallback", "classLD2410Async.html#a714e62534394a52243f8f50fd58726f9", null ], + [ "registerConfigUpdateReceivedCallback", "classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "registerDetectionDataReceivedCallback", "classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282", null ], + [ "requestAllConfigSettingsAsync", "classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38", null ], + [ "requestAllStaticDataAsync", "classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6", null ], + [ "requestAutoConfigStatusAsync", "classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6", null ], + [ "requestAuxControlSettingsAsync", "classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb", null ], + [ "requestBluetoothMacAddressAsync", "classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be", null ], + [ "requestDistanceResolutioncmAsync", "classLD2410Async.html#a3260f74672079a7200f210e4ffde1046", null ], + [ "requestFirmwareAsync", "classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21", null ], + [ "requestGateParametersAsync", "classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6", null ], + [ "restoreFactorySettingsAsync", "classLD2410Async.html#aadb841697a992c1bf203944211bd8659", null ], + [ "setAsyncCommandTimeoutMs", "classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325", null ], + [ "setInactivityHandling", "classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76", null ], + [ "setInactivityTimeoutMs", "classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4", null ], + [ "autoConfigStatus", "classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "bufferSize", "classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "configData", "classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02", null ], + [ "configModeEnabled", "classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "detectionData", "classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8", null ], + [ "engineeringModeEnabled", "classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "firmware", "classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "mac", "classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e", null ], + [ "macString", "classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "protocolVersion", "classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b", null ] +]; \ No newline at end of file diff --git a/docu/classLD2410Async__coll__graph.map b/docu/classLD2410Async__coll__graph.map new file mode 100644 index 0000000..5a5977d --- /dev/null +++ b/docu/classLD2410Async__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async__coll__graph.md5 b/docu/classLD2410Async__coll__graph.md5 new file mode 100644 index 0000000..295ff57 --- /dev/null +++ b/docu/classLD2410Async__coll__graph.md5 @@ -0,0 +1 @@ +58daa817c627302ae6a5a1944577a686 \ No newline at end of file diff --git a/docu/classLD2410Async__coll__graph.svg b/docu/classLD2410Async__coll__graph.svg new file mode 100644 index 0000000..857ecc7 --- /dev/null +++ b/docu/classLD2410Async__coll__graph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async + + +Node1 + + +LD2410Async + + + + + +Node2 + + +LD2410Types::DetectionData + + + + + +Node2->Node1 + + + + + + detectionData + + + +Node3 + + +LD2410Types::ConfigData + + + + + +Node3->Node1 + + + + + + configData + + + diff --git a/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.map b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.map new file mode 100644 index 0000000..bdc2366 --- /dev/null +++ b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.md5 b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.md5 new file mode 100644 index 0000000..15087d2 --- /dev/null +++ b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.md5 @@ -0,0 +1 @@ +b8678a4a3d8c124cf3361b290ebd9e58 \ No newline at end of file diff --git a/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.svg b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.svg new file mode 100644 index 0000000..cf2026c --- /dev/null +++ b/docu/classLD2410Async_a01705b527bc80949417de15b6e95140c_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::configuresDistanceResolution20cmAsync + + +Node1 + + +LD2410Async::configuresDistance +Resolution20cmAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.map b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.map new file mode 100644 index 0000000..762b64f --- /dev/null +++ b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.md5 b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.md5 new file mode 100644 index 0000000..bdb4496 --- /dev/null +++ b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.md5 @@ -0,0 +1 @@ +4678aa09c824815c0caebc6453a9044f \ No newline at end of file diff --git a/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.svg b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.svg new file mode 100644 index 0000000..62133ce --- /dev/null +++ b/docu/classLD2410Async_a0eb274f41635209e31f34f869fe1826a_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureMaxGateAndNoOneTimeoutAsync + + +Node1 + + +LD2410Async::configureMax +GateAndNoOneTimeoutAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildMaxGateCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.map b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.map new file mode 100644 index 0000000..d275fb0 --- /dev/null +++ b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.md5 b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.md5 new file mode 100644 index 0000000..387bf83 --- /dev/null +++ b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.md5 @@ -0,0 +1 @@ +b148f0037df77fb047c5f5974e10043c \ No newline at end of file diff --git a/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.svg b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.svg new file mode 100644 index 0000000..8be3b71 --- /dev/null +++ b/docu/classLD2410Async_a1cf70cb5f55626596530d050b0812b38_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureDistanceGateSensitivityAsync + + +Node1 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildGateSensitivityCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.map b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.map new file mode 100644 index 0000000..77aca24 --- /dev/null +++ b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.md5 b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.md5 new file mode 100644 index 0000000..d35bd2b --- /dev/null +++ b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.md5 @@ -0,0 +1 @@ +4eb1ae9d312c6003e1e15824249a3331 \ No newline at end of file diff --git a/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.svg b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.svg new file mode 100644 index 0000000..9131293 --- /dev/null +++ b/docu/classLD2410Async_a250de0cee1571020fa8b8f97ba9baa48_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::isConfigModeEnabled + + +Node1 + + +LD2410Async::isConfigMode +Enabled + + + + + +Node2 + + +LD2410Async::configureAll +ConfigSettingsAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.map b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.map new file mode 100644 index 0000000..9b14aa7 --- /dev/null +++ b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.md5 b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.md5 new file mode 100644 index 0000000..e9f50ca --- /dev/null +++ b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.md5 @@ -0,0 +1 @@ +a7fc211945d8eca19aa529631e032365 \ No newline at end of file diff --git a/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.svg b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.svg new file mode 100644 index 0000000..cb82c10 --- /dev/null +++ b/docu/classLD2410Async_a3260f74672079a7200f210e4ffde1046_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestDistanceResolutioncmAsync + + +Node1 + + +LD2410Async::requestDistance +ResolutioncmAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.map b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.map new file mode 100644 index 0000000..ba6432b --- /dev/null +++ b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.md5 b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.md5 new file mode 100644 index 0000000..c56645e --- /dev/null +++ b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.md5 @@ -0,0 +1 @@ +51bd3953563ddf15bf578495bf58d49c \ No newline at end of file diff --git a/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.svg b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.svg new file mode 100644 index 0000000..3e9d412 --- /dev/null +++ b/docu/classLD2410Async_a377464026350140b0277369a13e8c1d3_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::disableEngineeringModeAsync + + +Node1 + + +LD2410Async::disableEngineering +ModeAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.map b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.map new file mode 100644 index 0000000..ec3c4d7 --- /dev/null +++ b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.md5 b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.md5 new file mode 100644 index 0000000..27129bb --- /dev/null +++ b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.md5 @@ -0,0 +1 @@ +f816b41aa21110df841aa653a83729cf \ No newline at end of file diff --git a/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.svg b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.svg new file mode 100644 index 0000000..cd4df2b --- /dev/null +++ b/docu/classLD2410Async_a3923c4b746d90fbd314eae7094bb90be_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestBluetoothMacAddressAsync + + +Node1 + + +LD2410Async::requestBluetooth +MacAddressAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.map b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.map new file mode 100644 index 0000000..8e2a6a0 --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.md5 b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.md5 new file mode 100644 index 0000000..e4e9ab8 --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.md5 @@ -0,0 +1 @@ +c2a3fa6ea4f5dcefa5af15a09639bdb6 \ No newline at end of file diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.svg b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.svg new file mode 100644 index 0000000..2124602 --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureBaudRateAsync + + +Node1 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildBaudRateCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.map b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.map new file mode 100644 index 0000000..903eeb0 --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.md5 b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.md5 new file mode 100644 index 0000000..b9e4ac9 --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.md5 @@ -0,0 +1 @@ +6dd3e6c1fde70ed249d893af185279ce \ No newline at end of file diff --git a/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.svg b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.svg new file mode 100644 index 0000000..5f43e6c --- /dev/null +++ b/docu/classLD2410Async_a39aa1e94b76c2a08d96ab80fe2c9ed9c_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::configureBaudRateAsync + + +Node1 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node2 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map new file mode 100644 index 0000000..18cabfb --- /dev/null +++ b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 new file mode 100644 index 0000000..eacc14e --- /dev/null +++ b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 @@ -0,0 +1 @@ +3b3191c8f40f64097dcfcb54164edb4d \ No newline at end of file diff --git a/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg new file mode 100644 index 0000000..f92494e --- /dev/null +++ b/docu/classLD2410Async_a3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::enableInactivityHandling + + +Node1 + + +LD2410Async::enableInactivity +Handling + + + + + +Node2 + + +LD2410Async::setInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.map b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.map new file mode 100644 index 0000000..0c6956b --- /dev/null +++ b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.md5 b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.md5 new file mode 100644 index 0000000..3b7384c --- /dev/null +++ b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.md5 @@ -0,0 +1 @@ +5112cf5ecf94d6c1867b7282a12ce578 \ No newline at end of file diff --git a/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.svg b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.svg new file mode 100644 index 0000000..3020a04 --- /dev/null +++ b/docu/classLD2410Async_a3ebfc3c3547f3894ae264b82a32c1a82_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::configureDistanceResolution75cmAsync + + +Node1 + + +LD2410Async::configureDistance +Resolution75cmAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.map b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.map new file mode 100644 index 0000000..8e9371a --- /dev/null +++ b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.md5 b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.md5 new file mode 100644 index 0000000..6210418 --- /dev/null +++ b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.md5 @@ -0,0 +1 @@ +2c6994e708444d2fb3837d2bf4e6f4dd \ No newline at end of file diff --git a/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.svg b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.svg new file mode 100644 index 0000000..4e8bbbe --- /dev/null +++ b/docu/classLD2410Async_a4b30773f7a69dad507caaa636f08fa76_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +LD2410Async::setInactivityHandling + + +Node1 + + +LD2410Async::setInactivity +Handling + + + + + +Node2 + + +LD2410Async::disableInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::enableInactivity +Handling + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.map b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.map new file mode 100644 index 0000000..93bf320 --- /dev/null +++ b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.md5 b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.md5 new file mode 100644 index 0000000..68a0235 --- /dev/null +++ b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.md5 @@ -0,0 +1 @@ +98ca3f81469e4e0ff367602f803640c9 \ No newline at end of file diff --git a/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.svg b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.svg new file mode 100644 index 0000000..69362f5 --- /dev/null +++ b/docu/classLD2410Async_a509170bfc50580131d0c72f5c91daede_cgraph.svg @@ -0,0 +1,78 @@ + + + + + + +LD2410Async::configureAllConfigSettingsAsync + + +Node1 + + +LD2410Async::configureAll +ConfigSettingsAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::isConfigMode +Enabled + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410Types::ConfigData +::isValid + + + + + +Node1->Node4 + + + + + + + + diff --git a/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.map b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.map new file mode 100644 index 0000000..00c5d1a --- /dev/null +++ b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.md5 b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.md5 new file mode 100644 index 0000000..7bba0a9 --- /dev/null +++ b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.md5 @@ -0,0 +1 @@ +9a1679d0f48d977cdb6be686c10134e6 \ No newline at end of file diff --git a/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.svg b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.svg new file mode 100644 index 0000000..254255e --- /dev/null +++ b/docu/classLD2410Async_a5eeae3b4525a303e0e3bc208c4bcff21_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestFirmwareAsync + + +Node1 + + +LD2410Async::requestFirmware +Async + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.map b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.map new file mode 100644 index 0000000..fcc5faf --- /dev/null +++ b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.md5 b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.md5 new file mode 100644 index 0000000..4a92053 --- /dev/null +++ b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.md5 @@ -0,0 +1 @@ +51f3e4017451013c9ecdd8c1a884995c \ No newline at end of file diff --git a/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.svg b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.svg new file mode 100644 index 0000000..8c2262d --- /dev/null +++ b/docu/classLD2410Async_a66ca514c34bec7957b46395dabb602f2_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::disableInactivityHandling + + +Node1 + + +LD2410Async::disableInactivity +Handling + + + + + +Node2 + + +LD2410Async::setInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.map b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.map new file mode 100644 index 0000000..5ef5bea --- /dev/null +++ b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.map @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.md5 b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.md5 new file mode 100644 index 0000000..70560f3 --- /dev/null +++ b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.md5 @@ -0,0 +1 @@ +6cd7da88defc79458f8eb578c1752896 \ No newline at end of file diff --git a/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.svg b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.svg new file mode 100644 index 0000000..4bcc822 --- /dev/null +++ b/docu/classLD2410Async_a72e853afaba8373fb90524c3c4e8a153_icgraph.svg @@ -0,0 +1,599 @@ + + + + + + +LD2410Async::asyncIsBusy + + +Node1 + + +LD2410Async::asyncIsBusy + + + + + +Node2 + + +LD2410Async::beginAutoConfig +Async + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::configureAll +ConfigSettingsAsync + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +LD2410Async::configureAux +ControlSettingsAsync + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node1->Node7 + + + + + + + + +Node9 + + +LD2410Async::configureDefault +BluetoothPasswordAsync + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +LD2410Async::configureDistance +Resolution75cmAsync + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +LD2410Async::configureDistance +ResolutionAsync + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +LD2410Async::configureMax +GateAndNoOneTimeoutAsync + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +LD2410Async::configuresDistance +Resolution20cmAsync + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +LD2410Async::disableBluetooth +Async + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +LD2410Async::disableConfig +ModeAsync + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +LD2410Async::disableEngineering +ModeAsync + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +LD2410Async::enableBluetooth +Async + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +LD2410Async::enableConfig +ModeAsync + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +LD2410Async::enableEngineering +ModeAsync + + + + + +Node1->Node21 + + + + + + + + +Node22 + + +LD2410Async::rebootAsync + + + + + +Node1->Node22 + + + + + + + + +Node23 + + +LD2410Async::requestAllConfig +SettingsAsync + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +LD2410Async::requestAllStatic +DataAsync + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +LD2410Async::requestAuto +ConfigStatusAsync + + + + + +Node1->Node25 + + + + + + + + +Node26 + + +LD2410Async::requestAuxControl +SettingsAsync + + + + + +Node1->Node26 + + + + + + + + +Node27 + + +LD2410Async::requestBluetooth +MacAddressAsync + + + + + +Node1->Node27 + + + + + + + + +Node28 + + +LD2410Async::requestDistance +ResolutioncmAsync + + + + + +Node1->Node28 + + + + + + + + +Node29 + + +LD2410Async::requestFirmware +Async + + + + + +Node1->Node29 + + + + + + + + +Node30 + + +LD2410Async::requestGate +ParametersAsync + + + + + +Node1->Node30 + + + + + + + + +Node31 + + +LD2410Async::restoreFactory +SettingsAsync + + + + + +Node1->Node31 + + + + + + + + +Node5->Node6 + + + + + + + + +Node8 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node7->Node8 + + + + + + + + diff --git a/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.map b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.map new file mode 100644 index 0000000..f4e79de --- /dev/null +++ b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.md5 b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.md5 new file mode 100644 index 0000000..5926032 --- /dev/null +++ b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.md5 @@ -0,0 +1 @@ +fa4ed81a1f034b30cc114b093f62ce62 \ No newline at end of file diff --git a/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.svg b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.svg new file mode 100644 index 0000000..717a586 --- /dev/null +++ b/docu/classLD2410Async_a86968c2e9be09d9acb6b62ad7496a2a6_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestAllStaticDataAsync + + +Node1 + + +LD2410Async::requestAllStatic +DataAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.map b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.map new file mode 100644 index 0000000..709c70c --- /dev/null +++ b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.md5 b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.md5 new file mode 100644 index 0000000..aa61449 --- /dev/null +++ b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.md5 @@ -0,0 +1 @@ +271ca7f1c408e79df393fde33137ff37 \ No newline at end of file diff --git a/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.svg b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.svg new file mode 100644 index 0000000..28231d3 --- /dev/null +++ b/docu/classLD2410Async_a90e3bc56482783249d966a670310bffd_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureAuxControlSettingsAsync + + +Node1 + + +LD2410Async::configureAux +ControlSettingsAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildAuxControlCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.map b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.map new file mode 100644 index 0000000..41dc34b --- /dev/null +++ b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.md5 b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.md5 new file mode 100644 index 0000000..68f7a1f --- /dev/null +++ b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.md5 @@ -0,0 +1 @@ +22191c577f0514136ecc599b67345373 \ No newline at end of file diff --git a/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.svg b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.svg new file mode 100644 index 0000000..48d46c7 --- /dev/null +++ b/docu/classLD2410Async_a9493caef9e22a89445741da019b99213_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureDistanceGateSensitivityAsync + + +Node1 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildGateSensitivityCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.map b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.map new file mode 100644 index 0000000..ba7d75c --- /dev/null +++ b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.md5 b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.md5 new file mode 100644 index 0000000..7e33690 --- /dev/null +++ b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.md5 @@ -0,0 +1 @@ +61b4ca1c780affd1c16ff8ee83d0173e \ No newline at end of file diff --git a/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.svg b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.svg new file mode 100644 index 0000000..24f76fc --- /dev/null +++ b/docu/classLD2410Async_a99910e37f7cf20d05be573fec341ef0c_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::disableConfigModeAsync + + +Node1 + + +LD2410Async::disableConfig +ModeAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.map b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.map new file mode 100644 index 0000000..a47e883 --- /dev/null +++ b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.md5 b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.md5 new file mode 100644 index 0000000..d674531 --- /dev/null +++ b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.md5 @@ -0,0 +1 @@ +bb1a7e436ba2502ef3f2c530d2ef2dae \ No newline at end of file diff --git a/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.svg b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.svg new file mode 100644 index 0000000..f5d3b4a --- /dev/null +++ b/docu/classLD2410Async_a9ebecb17389f2dffb7c2d86c607be973_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::enableBluetoothAsync + + +Node1 + + +LD2410Async::enableBluetooth +Async + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.map b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.map new file mode 100644 index 0000000..ae22f0e --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.md5 b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.md5 new file mode 100644 index 0000000..59b5592 --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.md5 @@ -0,0 +1 @@ +886c7ac78dfe460cbab5b6f9b044e406 \ No newline at end of file diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.svg b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.svg new file mode 100644 index 0000000..a870c2f --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureBluetoothPasswordAsync + + +Node1 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildBluetoothPasswordCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.map b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.map new file mode 100644 index 0000000..9676132 --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.md5 b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.md5 new file mode 100644 index 0000000..36a4e24 --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.md5 @@ -0,0 +1 @@ +9a7fe2e7591397180f0bbba56111d145 \ No newline at end of file diff --git a/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.svg b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.svg new file mode 100644 index 0000000..1e810b7 --- /dev/null +++ b/docu/classLD2410Async_aaa0138cb624b66482e9a05b197c21f22_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::configureBluetoothPasswordAsync + + +Node1 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node2 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.map b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.map new file mode 100644 index 0000000..9b85cb3 --- /dev/null +++ b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.md5 b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.md5 new file mode 100644 index 0000000..cdd47de --- /dev/null +++ b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.md5 @@ -0,0 +1 @@ +eeca042cf943f68e913c818e84509c9a \ No newline at end of file diff --git a/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.svg b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.svg new file mode 100644 index 0000000..e030d77 --- /dev/null +++ b/docu/classLD2410Async_aadb841697a992c1bf203944211bd8659_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::restoreFactorySettingsAsync + + +Node1 + + +LD2410Async::restoreFactory +SettingsAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.map b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.map new file mode 100644 index 0000000..ed2afad --- /dev/null +++ b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.md5 b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.md5 new file mode 100644 index 0000000..b7f9678 --- /dev/null +++ b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.md5 @@ -0,0 +1 @@ +2552289a3b4feea6efea32974e8b532e \ No newline at end of file diff --git a/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.svg b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.svg new file mode 100644 index 0000000..379ec01 --- /dev/null +++ b/docu/classLD2410Async_ab578ee25526c8bb808fe7200fae95a38_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestAllConfigSettingsAsync + + +Node1 + + +LD2410Async::requestAllConfig +SettingsAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.map b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.map new file mode 100644 index 0000000..e9155e2 --- /dev/null +++ b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.md5 b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.md5 new file mode 100644 index 0000000..9c313a3 --- /dev/null +++ b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.md5 @@ -0,0 +1 @@ +127bd012c0ec3b124efbe87dea693bd1 \ No newline at end of file diff --git a/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.svg b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.svg new file mode 100644 index 0000000..18bb52f --- /dev/null +++ b/docu/classLD2410Async_ab9f9858ab6d6cf4c4ab91e4580a2ea50_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::configureDefaultBluetoothPasswordAsync + + +Node1 + + +LD2410Async::configureDefault +BluetoothPasswordAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.map b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.map new file mode 100644 index 0000000..dc4bc3d --- /dev/null +++ b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.md5 b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.md5 new file mode 100644 index 0000000..2f315d6 --- /dev/null +++ b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.md5 @@ -0,0 +1 @@ +d4a168c1f63672d81990a97bc292161d \ No newline at end of file diff --git a/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.svg b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.svg new file mode 100644 index 0000000..2d4225b --- /dev/null +++ b/docu/classLD2410Async_abfe79850fa3e040a12de72ea99747266_cgraph.svg @@ -0,0 +1,78 @@ + + + + + + +LD2410Async::configureBluetoothPasswordAsync + + +Node1 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node2 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::asyncIsBusy + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +LD2410CommandBuilder +::buildBluetoothPasswordCommand + + + + + +Node2->Node4 + + + + + + + + diff --git a/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.map b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.map new file mode 100644 index 0000000..965e3c6 --- /dev/null +++ b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.md5 b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.md5 new file mode 100644 index 0000000..5e4be11 --- /dev/null +++ b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.md5 @@ -0,0 +1 @@ +302164731cae5d74b8fbb92b792a7102 \ No newline at end of file diff --git a/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.svg b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.svg new file mode 100644 index 0000000..2c1e673 --- /dev/null +++ b/docu/classLD2410Async_ad219580b6e47f54a8aac0847e2054bf6_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestAutoConfigStatusAsync + + +Node1 + + +LD2410Async::requestAuto +ConfigStatusAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.map b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.map new file mode 100644 index 0000000..1031829 --- /dev/null +++ b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.md5 b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.md5 new file mode 100644 index 0000000..b7f6169 --- /dev/null +++ b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.md5 @@ -0,0 +1 @@ +0f27dfee8c8338f2b6d470733d79e40e \ No newline at end of file diff --git a/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.svg b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.svg new file mode 100644 index 0000000..31e3905 --- /dev/null +++ b/docu/classLD2410Async_ad24f13c9381aa35460908b4c0edb5fa9_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::enableConfigModeAsync + + +Node1 + + +LD2410Async::enableConfig +ModeAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.map b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.map new file mode 100644 index 0000000..ce29bba --- /dev/null +++ b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.md5 b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.md5 new file mode 100644 index 0000000..f08958f --- /dev/null +++ b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.md5 @@ -0,0 +1 @@ +e74ffeee904cab132c4b1c6c1377a624 \ No newline at end of file diff --git a/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.svg b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.svg new file mode 100644 index 0000000..b301873 --- /dev/null +++ b/docu/classLD2410Async_ad7b1c7d38ac3948ebf159b20e1a3bb1d_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::enableEngineeringModeAsync + + +Node1 + + +LD2410Async::enableEngineering +ModeAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.map b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.map new file mode 100644 index 0000000..9abfae3 --- /dev/null +++ b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.md5 b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.md5 new file mode 100644 index 0000000..89ec835 --- /dev/null +++ b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.md5 @@ -0,0 +1 @@ +ee9c997edee9a22365ab3a303d30de9f \ No newline at end of file diff --git a/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.svg b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.svg new file mode 100644 index 0000000..743314b --- /dev/null +++ b/docu/classLD2410Async_ad7bfb9c212c452898053f167555a0bb6_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestGateParametersAsync + + +Node1 + + +LD2410Async::requestGate +ParametersAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.map b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.map new file mode 100644 index 0000000..8aa723c --- /dev/null +++ b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.md5 b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.md5 new file mode 100644 index 0000000..39cdc0b --- /dev/null +++ b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.md5 @@ -0,0 +1 @@ +2a56be97bbb51bc590679594f37fd3d6 \ No newline at end of file diff --git a/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.svg b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.svg new file mode 100644 index 0000000..86a0232 --- /dev/null +++ b/docu/classLD2410Async_adcd209213cc2e418aefd20573a868e0a_cgraph.svg @@ -0,0 +1,87 @@ + + + + + + +LD2410Async::configureBaudRateAsync + + +Node1 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node1->Node3 + + + + + + + + +Node3->Node2 + + + + + + + + +Node4 + + +LD2410CommandBuilder +::buildBaudRateCommand + + + + + +Node3->Node4 + + + + + + + + diff --git a/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.map b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.map new file mode 100644 index 0000000..56527d2 --- /dev/null +++ b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.md5 b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.md5 new file mode 100644 index 0000000..2dc1349 --- /dev/null +++ b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.md5 @@ -0,0 +1 @@ +d8b2d5791f20a84f7b06a27efc38825e \ No newline at end of file diff --git a/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.svg b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.svg new file mode 100644 index 0000000..3eada11 --- /dev/null +++ b/docu/classLD2410Async_addcbab1709f2a80571563609f4a23862_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::disableBluetoothAsync + + +Node1 + + +LD2410Async::disableBluetooth +Async + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.map b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.map new file mode 100644 index 0000000..f3f1370 --- /dev/null +++ b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.md5 b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.md5 new file mode 100644 index 0000000..a5b69d2 --- /dev/null +++ b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.md5 @@ -0,0 +1 @@ +0ee9e26715cb2ea05d750aae2d5934b7 \ No newline at end of file diff --git a/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.svg b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.svg new file mode 100644 index 0000000..74bfc2d --- /dev/null +++ b/docu/classLD2410Async_ae6e3792586e3bac35ca187d41a0b9250_cgraph.svg @@ -0,0 +1,59 @@ + + + + + + +LD2410Async::configureDistanceResolutionAsync + + +Node1 + + +LD2410Async::configureDistance +ResolutionAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410CommandBuilder +::buildDistanceResolutionCommand + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.map b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.map new file mode 100644 index 0000000..3948999 --- /dev/null +++ b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.md5 b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.md5 new file mode 100644 index 0000000..c147d5d --- /dev/null +++ b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.md5 @@ -0,0 +1 @@ +fd0a6a76430966027b00a4789a17fe25 \ No newline at end of file diff --git a/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.svg b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.svg new file mode 100644 index 0000000..24764e7 --- /dev/null +++ b/docu/classLD2410Async_aeb856d32612fba953b07280cf5d9a235_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +LD2410Async::rebootAsync + + +Node1 + + +LD2410Async::rebootAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.map b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.map new file mode 100644 index 0000000..e44db11 --- /dev/null +++ b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.md5 b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.md5 new file mode 100644 index 0000000..50cff2d --- /dev/null +++ b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.md5 @@ -0,0 +1 @@ +1c0fbc14ca966650d05ccccedf929cea \ No newline at end of file diff --git a/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.svg b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.svg new file mode 100644 index 0000000..741082f --- /dev/null +++ b/docu/classLD2410Async_aed89a0870ddacee96bc2f0fb9c1c96fc_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::beginAutoConfigAsync + + +Node1 + + +LD2410Async::beginAutoConfig +Async + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.map b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.map new file mode 100644 index 0000000..e91e2bd --- /dev/null +++ b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.md5 b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.md5 new file mode 100644 index 0000000..8eaca8f --- /dev/null +++ b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.md5 @@ -0,0 +1 @@ +368c93d4a71ffa48b23ab7a88f8eac63 \ No newline at end of file diff --git a/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.svg b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.svg new file mode 100644 index 0000000..975e005 --- /dev/null +++ b/docu/classLD2410Async_afaa6e2c1842ebd96c6e04fe542af66cb_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +LD2410Async::requestAuxControlSettingsAsync + + +Node1 + + +LD2410Async::requestAuxControl +SettingsAsync + + + + + +Node2 + + +LD2410Async::asyncIsBusy + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/classes.html b/docu/classes.html new file mode 100644 index 0000000..e98621f --- /dev/null +++ b/docu/classes.html @@ -0,0 +1,124 @@ + + + + + + + +LD2410Async: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
C | D | L
+ +
+
+ + + + diff --git a/docu/clipboard.js b/docu/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/docu/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docu/closed.png b/docu/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docu/cookie.js b/docu/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docu/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docu/dir_0877bab65d936efc50d6280cdd9a4b61.html b/docu/dir_0877bab65d936efc50d6280cdd9a4b61.html new file mode 100644 index 0000000..f2ac345 --- /dev/null +++ b/docu/dir_0877bab65d936efc50d6280cdd9a4b61.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: changeConfig Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeConfig Directory Reference
+
+
+ + + + +

+Files

 changeConfig.ino
 
+
+
+ + + + diff --git a/docu/dir_0877bab65d936efc50d6280cdd9a4b61.js b/docu/dir_0877bab65d936efc50d6280cdd9a4b61.js new file mode 100644 index 0000000..98c8ace --- /dev/null +++ b/docu/dir_0877bab65d936efc50d6280cdd9a4b61.js @@ -0,0 +1,4 @@ +var dir_0877bab65d936efc50d6280cdd9a4b61 = +[ + [ "changeConfig.ino", "changeConfig_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html b/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html new file mode 100644 index 0000000..50e99d5 --- /dev/null +++ b/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: basicPresenceDetection Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
basicPresenceDetection Directory Reference
+
+
+ + + + +

+Files

 basicPresenceDetection.ino
 
+
+
+ + + + diff --git a/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.js b/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.js new file mode 100644 index 0000000..b5a0a07 --- /dev/null +++ b/docu/dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.js @@ -0,0 +1,4 @@ +var dir_094f9dbbdfe7cfb87799ec39fb2dbfcf = +[ + [ "basicPresenceDetection.ino", "basicPresenceDetection_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_214001d413268a160f69364489f85961.html b/docu/dir_214001d413268a160f69364489f85961.html new file mode 100644 index 0000000..98fd910 --- /dev/null +++ b/docu/dir_214001d413268a160f69364489f85961.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: receiveData Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
receiveData Directory Reference
+
+
+ + + + +

+Files

 receiveData.ino
 
+
+
+ + + + diff --git a/docu/dir_214001d413268a160f69364489f85961.js b/docu/dir_214001d413268a160f69364489f85961.js new file mode 100644 index 0000000..cb2e9c8 --- /dev/null +++ b/docu/dir_214001d413268a160f69364489f85961.js @@ -0,0 +1,4 @@ +var dir_214001d413268a160f69364489f85961 = +[ + [ "receiveData.ino", "receiveData_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html b/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html new file mode 100644 index 0000000..d350155 --- /dev/null +++ b/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: changeDistanceResolution Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
changeDistanceResolution Directory Reference
+
+
+ + + + +

+Files

 changeDistanceResolution.ino
 
+
+
+ + + + diff --git a/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.js b/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.js new file mode 100644 index 0000000..6a558a6 --- /dev/null +++ b/docu/dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.js @@ -0,0 +1,4 @@ +var dir_cbdfb87722f5bb03bbdd3fbaa888c5cd = +[ + [ "changeDistanceResolution.ino", "changeDistanceResolution_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/doc.svg b/docu/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docu/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docu/docd.svg b/docu/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docu/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docu/doxygen.css b/docu/doxygen.css new file mode 100644 index 0000000..574b333 --- /dev/null +++ b/docu/doxygen.css @@ -0,0 +1,2247 @@ +/* The standard CSS for doxygen 1.12.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/docu/doxygen.svg b/docu/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docu/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docu/doxygen_crawl.html b/docu/doxygen_crawl.html new file mode 100644 index 0000000..f9a67c3 --- /dev/null +++ b/docu/doxygen_crawl.html @@ -0,0 +1,459 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docu/dynsections.js b/docu/dynsections.js new file mode 100644 index 0000000..8985f42 --- /dev/null +++ b/docu/dynsections.js @@ -0,0 +1,205 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ +$(function() { + $('.code,.codeRef').each(function() { + $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; + $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); + }); +}); diff --git a/docu/files.html b/docu/files.html new file mode 100644 index 0000000..9e32fdd --- /dev/null +++ b/docu/files.html @@ -0,0 +1,130 @@ + + + + + + + +LD2410Async: File List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+ +
+ + + + diff --git a/docu/files_dup.js b/docu/files_dup.js new file mode 100644 index 0000000..e921055 --- /dev/null +++ b/docu/files_dup.js @@ -0,0 +1,13 @@ +var files_dup = +[ + [ "basicPresenceDetection", "dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html", "dir_094f9dbbdfe7cfb87799ec39fb2dbfcf" ], + [ "changeConfig", "dir_0877bab65d936efc50d6280cdd9a4b61.html", "dir_0877bab65d936efc50d6280cdd9a4b61" ], + [ "changeDistanceResolution", "dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html", "dir_cbdfb87722f5bb03bbdd3fbaa888c5cd" ], + [ "receiveData", "dir_214001d413268a160f69364489f85961.html", "dir_214001d413268a160f69364489f85961" ], + [ "LD2410Async.cpp", "LD2410Async_8cpp.html", "LD2410Async_8cpp" ], + [ "LD2410Async.h", "LD2410Async_8h.html", "LD2410Async_8h" ], + [ "LD2410CommandBuilder.h", "LD2410CommandBuilder_8h.html", "LD2410CommandBuilder_8h" ], + [ "LD2410Debug.h", "LD2410Debug_8h.html", "LD2410Debug_8h" ], + [ "LD2410Defs.h", "LD2410Defs_8h.html", "LD2410Defs_8h" ], + [ "LD2410Types.h", "LD2410Types_8h.html", "LD2410Types_8h" ] +]; \ No newline at end of file diff --git a/docu/folderclosed.svg b/docu/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docu/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docu/folderclosedd.svg b/docu/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docu/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docu/folderopen.svg b/docu/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docu/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docu/folderopend.svg b/docu/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docu/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docu/functions.html b/docu/functions.html new file mode 100644 index 0000000..f1c5fa3 --- /dev/null +++ b/docu/functions.html @@ -0,0 +1,266 @@ + + + + + + + +LD2410Async: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+
+ + + + diff --git a/docu/functions_enum.html b/docu/functions_enum.html new file mode 100644 index 0000000..47a0ecf --- /dev/null +++ b/docu/functions_enum.html @@ -0,0 +1,112 @@ + + + + + + + +LD2410Async: Class Members - Enumerations + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enums with links to the classes they belong to:
+
+
+ + + + diff --git a/docu/functions_func.html b/docu/functions_func.html new file mode 100644 index 0000000..2b7980f --- /dev/null +++ b/docu/functions_func.html @@ -0,0 +1,205 @@ + + + + + + + +LD2410Async: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+
+
+ + + + diff --git a/docu/functions_type.html b/docu/functions_type.html new file mode 100644 index 0000000..59e5475 --- /dev/null +++ b/docu/functions_type.html @@ -0,0 +1,114 @@ + + + + + + + +LD2410Async: Class Members - Typedefs + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the classes they belong to:
+
+
+ + + + diff --git a/docu/functions_vars.html b/docu/functions_vars.html new file mode 100644 index 0000000..f748caf --- /dev/null +++ b/docu/functions_vars.html @@ -0,0 +1,198 @@ + + + + + + + +LD2410Async: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+
+
+ + + + diff --git a/docu/globals.html b/docu/globals.html new file mode 100644 index 0000000..f177360 --- /dev/null +++ b/docu/globals.html @@ -0,0 +1,122 @@ + + + + + + + +LD2410Async: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+
+ + + + diff --git a/docu/globals_defs.html b/docu/globals_defs.html new file mode 100644 index 0000000..700d24b --- /dev/null +++ b/docu/globals_defs.html @@ -0,0 +1,120 @@ + + + + + + + +LD2410Async: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all macros with links to the files they belong to:
+
+
+ + + + diff --git a/docu/globals_func.html b/docu/globals_func.html new file mode 100644 index 0000000..ff259e9 --- /dev/null +++ b/docu/globals_func.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+
+
+ + + + diff --git a/docu/graph_legend.html b/docu/graph_legend.html new file mode 100644 index 0000000..a3027cf --- /dev/null +++ b/docu/graph_legend.html @@ -0,0 +1,172 @@ + + + + + + + +LD2410Async: Graph Legend + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docu/graph_legend.md5 b/docu/graph_legend.md5 new file mode 100644 index 0000000..da515da --- /dev/null +++ b/docu/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/docu/graph_legend.svg b/docu/graph_legend.svg new file mode 100644 index 0000000..86a7aea --- /dev/null +++ b/docu/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/docu/index.html b/docu/index.html new file mode 100644 index 0000000..6ffbd92 --- /dev/null +++ b/docu/index.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
LD2410Async +
+
Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LD2410Async Documentation
+
+
+ +
+
+ + + + diff --git a/docu/jquery.js b/docu/jquery.js new file mode 100644 index 0000000..875ada7 --- /dev/null +++ b/docu/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/docu/menu.js b/docu/menu.js new file mode 100644 index 0000000..0fd1e99 --- /dev/null +++ b/docu/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docu/menudata.js b/docu/menudata.js new file mode 100644 index 0000000..3616a12 --- /dev/null +++ b/docu/menudata.js @@ -0,0 +1,112 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}]}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"b",url:"namespacemembers_vars.html#index_b"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"g",url:"namespacemembers_vars.html#index_g"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"r",url:"namespacemembers_vars.html#index_r"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"t",url:"namespacemembers_vars.html#index_t"}]}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}]}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docu/minus.svg b/docu/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docu/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docu/minusd.svg b/docu/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docu/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder.html b/docu/namespaceLD2410CommandBuilder.html new file mode 100644 index 0000000..63a509b --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder.html @@ -0,0 +1,475 @@ + + + + + + + +LD2410Async: LD2410CommandBuilder Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LD2410CommandBuilder Namespace Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Functions

    bool buildMaxGateCommand (byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
     
    bool buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
     
    bool buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)
     
    bool buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
     
    bool buildBaudRateCommand (byte *out, byte baudRateSetting)
     
    bool buildBluetoothPasswordCommand (byte *out, const char *password)
     
    +

    Function Documentation

    + +

    ◆ buildAuxControlCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildAuxControlCommand (byte * out,
    LD2410Types::LightControl lightControl,
    byte lightThreshold,
    LD2410Types::OutputControl outputControl )
    +
    +inline
    +
    + +

    Definition at line 64 of file LD2410CommandBuilder.h.

    +
    64 {
    + + +
    67
    +
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    +
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    +
    70
    +
    71 out[4] = byte(lightControl);
    +
    72 out[5] = lightThreshold;
    +
    73 out[6] = byte(outputControl);
    +
    74 return true;
    +
    75 }
    +
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ buildBaudRateCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildBaudRateCommand (byte * out,
    byte baudRateSetting )
    +
    +inline
    +
    + +

    Definition at line 77 of file LD2410CommandBuilder.h.

    +
    77 {
    + +
    79 if (baudRateSetting < 1 || baudRateSetting > 8) return false;
    +
    80 out[4] = baudRateSetting;
    +
    81 return true;
    +
    82 }
    +
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ buildBluetoothPasswordCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildBluetoothPasswordCommand (byte * out,
    const char * password )
    +
    +inline
    +
    + +

    Definition at line 84 of file LD2410CommandBuilder.h.

    +
    84 {
    +
    85 if (!password) return false;
    +
    86 size_t len = strlen(password);
    +
    87 if (len > 6) return false;
    +
    88
    + + +
    91
    +
    92 for (unsigned int i = 0; i < 6; i++) {
    +
    93 if (i < strlen(password))
    +
    94 out[4 + i] = byte(password[i]);
    +
    95 else
    +
    96 out[4 + i] = byte(' '); // pad with spaces
    +
    97 }
    +
    98 return true;
    +
    99 }
    +
    constexpr byte setBluetoothPasswordCommandData[10]
    Definition LD2410Defs.h:53
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ buildDistanceResolutionCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte * out,
    LD2410Types::DistanceResolution resolution )
    +
    +inline
    +
    + +

    Definition at line 49 of file LD2410CommandBuilder.h.

    +
    49 {
    + + + +
    53 }
    + + + +
    57 }
    +
    58 else {
    +
    59 return false;
    +
    60 }
    +
    61 return true;
    +
    62 }
    +
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    +
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ buildGateSensitivityCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildGateSensitivityCommand (byte * out,
    byte gate,
    byte movingThreshold,
    byte stationaryThreshold )
    +
    +inline
    +
    + +

    Definition at line 25 of file LD2410CommandBuilder.h.

    +
    25 {
    +
    26
    +
    27 if (gate > 8 && gate != 0xFF) return false; // 08 allowed, or 0xFF (all gates)
    +
    28
    + + +
    31
    +
    32 if (gate > 8) {
    +
    33 out[6] = 0xFF;
    +
    34 out[7] = 0xFF;
    +
    35 }
    +
    36 else {
    +
    37 out[6] = gate;
    +
    38 out[7] = 0;
    +
    39 }
    +
    40
    +
    41 if (movingThreshold > 100) movingThreshold = 100;
    +
    42 if (stationaryThreshold > 100) stationaryThreshold = 100;
    +
    43
    +
    44 out[12] = movingThreshold;
    +
    45 out[18] = stationaryThreshold;
    +
    46 return true;
    +
    47 }
    +
    constexpr byte distanceGateSensitivityConfigCommandData[0x16]
    Definition LD2410Defs.h:77
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ buildMaxGateCommand()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410CommandBuilder::buildMaxGateCommand (byte * out,
    byte maxMotionGate,
    byte maxStationaryGate,
    unsigned short noOneTimeout )
    +
    +inline
    +
    + +

    Definition at line 9 of file LD2410CommandBuilder.h.

    +
    9 {
    +
    10
    +
    11 if (maxMotionGate < 2 || maxMotionGate > 8) return false;
    +
    12 if (maxStationaryGate < 2 || maxStationaryGate > 8) return false;
    +
    13
    + +
    15
    +
    16 out[6] = maxMotionGate;
    +
    17 out[12] = maxStationaryGate;
    +
    18
    +
    19 memcpy(&out[18], &noOneTimeout, 2);
    +
    20
    +
    21 return true;
    +
    22
    +
    23 }
    +
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.map b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.map new file mode 100644 index 0000000..787e04a --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.md5 new file mode 100644 index 0000000..cfb80c7 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.md5 @@ -0,0 +1 @@ +083503d38b1079825afe63b9ac0bd73f \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.svg b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.svg new file mode 100644 index 0000000..7db169a --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a1891c87b48a0ec24a7a6066fe48bd63e_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410CommandBuilder::buildMaxGateCommand + + +Node1 + + +LD2410CommandBuilder +::buildMaxGateCommand + + + + + +Node2 + + +LD2410Async::configureMax +GateAndNoOneTimeoutAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.map b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.map new file mode 100644 index 0000000..e9d7d45 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.md5 new file mode 100644 index 0000000..40b9335 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.md5 @@ -0,0 +1 @@ +cad466bc66ede67a8ec90814e98c606d \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.svg b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.svg new file mode 100644 index 0000000..a8b36cf --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a2a87725992c2b7bd53fc2b24f5ac4a0f_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410CommandBuilder::buildDistanceResolutionCommand + + +Node1 + + +LD2410CommandBuilder +::buildDistanceResolutionCommand + + + + + +Node2 + + +LD2410Async::configureDistance +ResolutionAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.map b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.map new file mode 100644 index 0000000..f3010e4 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.md5 new file mode 100644 index 0000000..614ddd3 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.md5 @@ -0,0 +1 @@ +df7240ee98391865413ca5e544b3293c \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.svg b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.svg new file mode 100644 index 0000000..92f55ba --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a8b54a13a534e713b1fc2b29818bbe255_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410CommandBuilder::buildAuxControlCommand + + +Node1 + + +LD2410CommandBuilder +::buildAuxControlCommand + + + + + +Node2 + + +LD2410Async::configureAux +ControlSettingsAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.map b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.map new file mode 100644 index 0000000..8586972 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.md5 new file mode 100644 index 0000000..94f4efa --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.md5 @@ -0,0 +1 @@ +4e97fff5dac04cef08838ce84bcc7600 \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.svg b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.svg new file mode 100644 index 0000000..9733f85 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_a9879fbf4d013640f1a9bffdbc21122f6_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +LD2410CommandBuilder::buildGateSensitivityCommand + + +Node1 + + +LD2410CommandBuilder +::buildGateSensitivityCommand + + + + + +Node2 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::configureDistance +GateSensitivityAsync + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.map b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.map new file mode 100644 index 0000000..5a7b6f2 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.md5 new file mode 100644 index 0000000..a30dcaf --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.md5 @@ -0,0 +1 @@ +c7da76204a40b270db4dd4bea41c349b \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.svg b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.svg new file mode 100644 index 0000000..6855931 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_abf6ee0e1bb505fd30efd8b776557cf1f_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +LD2410CommandBuilder::buildBluetoothPasswordCommand + + +Node1 + + +LD2410CommandBuilder +::buildBluetoothPasswordCommand + + + + + +Node2 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::configureBluetooth +PasswordAsync + + + + + +Node2->Node3 + + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.map b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.map new file mode 100644 index 0000000..42cc6d4 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.md5 b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.md5 new file mode 100644 index 0000000..7a5413f --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.md5 @@ -0,0 +1 @@ +7ee130bedd151c09b3997f7cdbd977a7 \ No newline at end of file diff --git a/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.svg b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.svg new file mode 100644 index 0000000..8fa2068 --- /dev/null +++ b/docu/namespaceLD2410CommandBuilder_af8eb163ccaa819b1504b79459ed48729_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +LD2410CommandBuilder::buildBaudRateCommand + + +Node1 + + +LD2410CommandBuilder +::buildBaudRateCommand + + + + + +Node2 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::configureBaud +RateAsync + + + + + +Node2->Node3 + + + + + + + + diff --git a/docu/namespaceLD2410Defs.html b/docu/namespaceLD2410Defs.html new file mode 100644 index 0000000..259b3d6 --- /dev/null +++ b/docu/namespaceLD2410Defs.html @@ -0,0 +1,1428 @@ + + + + + + + +LD2410Async: LD2410Defs Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LD2410Defs Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    constexpr size_t LD2410_Buffer_Size = 0x40
     
    constexpr byte headData [4] { 0xF4, 0xF3, 0xF2, 0xF1 }
     
    constexpr byte tailData [4] { 0xF8, 0xF7, 0xF6, 0xF5 }
     
    constexpr byte headConfig [4] { 0xFD, 0xFC, 0xFB, 0xFA }
     
    constexpr byte tailConfig [4] { 4, 3, 2, 1 }
     
    constexpr byte configEnableCommand = 0xff
     
    constexpr byte configEnableCommandData [6] { 4, 0, configEnableCommand, 0, 1, 0 }
     
    constexpr byte configDisableCommand = 0xFE
     
    constexpr byte configDisableCommandData [4] { 2, 0, configDisableCommand, 0 }
     
    constexpr byte requestMacAddressCommand = 0xA5
     
    constexpr byte requestMacAddressCommandData [6] { 4, 0, requestMacAddressCommand, 0, 1, 0 }
     
    constexpr byte requestFirmwareCommand = 0xA0
     
    constexpr byte requestFirmwareCommandData [4] { 2, 0, requestFirmwareCommand, 0 }
     
    constexpr byte requestDistanceResolutionCommand = 0xAB
     
    constexpr byte requestDistanceResolutionCommandData [4] { 2, 0, requestDistanceResolutionCommand, 0 }
     
    constexpr byte setDistanceResolutionCommand = 0xAA
     
    constexpr byte setDistanceResolution75cmCommandData [6] { 4, 0, setDistanceResolutionCommand, 0, 0, 0 }
     
    constexpr byte setDistanceResolution20cmCommandData [6] { 4, 0, setDistanceResolutionCommand, 0, 1, 0 }
     
    constexpr byte setBaudRateCommand = 0xA1
     
    constexpr byte setBaudRateCommandData [6] { 4, 0, setBaudRateCommand, 0, 7, 0 }
     
    constexpr byte restoreFactorySettingsAsyncCommand = 0xA2
     
    constexpr byte restoreFactorSettingsCommandData [4] { 2, 0, restoreFactorySettingsAsyncCommand, 0 }
     
    constexpr byte rebootCommand = 0xA3
     
    constexpr byte rebootCommandData [4] { 2, 0, rebootCommand, 0 }
     
    constexpr byte bluetoothSettingsCommand = 0xA4
     
    constexpr byte bluetoothSettingsOnCommandData [6] { 4, 0, bluetoothSettingsCommand, 0, 1, 0 }
     
    constexpr byte bluetoothSettingsOffCommandData [6] { 4, 0, bluetoothSettingsCommand, 0, 0, 0 }
     
    constexpr byte getBluetoothPermissionsCommand = 0xA8
     
    constexpr byte setBluetoothPasswordCommand = 0xA9
     
    constexpr byte setBluetoothPasswordCommandData [10] { 8, 0, setBluetoothPasswordCommand, 0, 0x48, 0x69, 0x4C, 0x69, 0x6E, 0x6B }
     
    constexpr byte requestParamsCommand = 0x61
     
    constexpr byte requestParamsCommandData [4] { 2, 0, requestParamsCommand, 0 }
     
    constexpr byte engineeringModeEnableComand = 0x62
     
    constexpr byte engineeringModeEnableCommandData [4] { 2, 0, engineeringModeEnableComand, 0 }
     
    constexpr byte engineeringModeDisableComand = 0x63
     
    constexpr byte engineeringModeDisableCommandData [4] { 2, 0, engineeringModeDisableComand, 0 }
     
    constexpr byte requestAuxControlSettingsCommand = 0xAE
     
    constexpr byte requestAuxControlSettingsCommandData [4] { 2, 0, requestAuxControlSettingsCommand, 0 }
     
    constexpr byte setAuxControlSettingsCommand = 0xAD
     
    constexpr byte setAuxControlSettingCommandData [8] { 6, 0, setAuxControlSettingsCommand, 0, 0, 0x80, 0, 0 }
     
    constexpr byte beginAutoConfigCommand = 0x0B
     
    constexpr byte beginAutoConfigCommandData [6] { 4, 0, beginAutoConfigCommand, 0, 0x0A, 0 }
     
    constexpr byte requestAutoConfigStatusCommand = 0x1B
     
    constexpr byte requestAutoConfigStatusCommandData [4] { 2, 0, requestAutoConfigStatusCommand, 0 }
     
    constexpr byte distanceGateSensitivityConfigCommand = 0x64
     
    constexpr byte distanceGateSensitivityConfigCommandData [0x16]
     
    constexpr byte maxGateCommand = 0x60
     
    constexpr byte maxGateCommandData [0x16]
     
    +

    Variable Documentation

    + +

    ◆ beginAutoConfigCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::beginAutoConfigCommand = 0x0B
    +
    +constexpr
    +
    + +

    Definition at line 70 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ beginAutoConfigCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::beginAutoConfigCommandData[6] { 4, 0, beginAutoConfigCommand, 0, 0x0A, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 71 of file LD2410Defs.h.

    +
    71{ 4, 0, beginAutoConfigCommand, 0, 0x0A, 0 };
    +
    constexpr byte beginAutoConfigCommand
    Definition LD2410Defs.h:70
    +
    +
    +
    + +

    ◆ bluetoothSettingsCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::bluetoothSettingsCommand = 0xA4
    +
    +constexpr
    +
    + +

    Definition at line 46 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ bluetoothSettingsOffCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::bluetoothSettingsOffCommandData[6] { 4, 0, bluetoothSettingsCommand, 0, 0, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 48 of file LD2410Defs.h.

    +
    48{ 4, 0, bluetoothSettingsCommand, 0, 0, 0 };
    +
    constexpr byte bluetoothSettingsCommand
    Definition LD2410Defs.h:46
    +
    +
    +
    + +

    ◆ bluetoothSettingsOnCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::bluetoothSettingsOnCommandData[6] { 4, 0, bluetoothSettingsCommand, 0, 1, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 47 of file LD2410Defs.h.

    +
    47{ 4, 0, bluetoothSettingsCommand, 0, 1, 0 };
    +
    +
    +
    + +

    ◆ configDisableCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::configDisableCommand = 0xFE
    +
    +constexpr
    +
    + +

    Definition at line 21 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ configDisableCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::configDisableCommandData[4] { 2, 0, configDisableCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 22 of file LD2410Defs.h.

    +
    22{ 2, 0, configDisableCommand, 0 };
    +
    constexpr byte configDisableCommand
    Definition LD2410Defs.h:21
    +
    +
    +
    + +

    ◆ configEnableCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::configEnableCommand = 0xff
    +
    +constexpr
    +
    + +

    Definition at line 18 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ configEnableCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::configEnableCommandData[6] { 4, 0, configEnableCommand, 0, 1, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 19 of file LD2410Defs.h.

    +
    19{ 4, 0, configEnableCommand, 0, 1, 0 };
    +
    constexpr byte configEnableCommand
    Definition LD2410Defs.h:18
    +
    +
    +
    + +

    ◆ distanceGateSensitivityConfigCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::distanceGateSensitivityConfigCommand = 0x64
    +
    +constexpr
    +
    + +

    Definition at line 76 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ distanceGateSensitivityConfigCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::distanceGateSensitivityConfigCommandData[0x16]
    +
    +constexpr
    +
    +Initial value:
    {
    +
    0x14, 0, distanceGateSensitivityConfigCommand, 0, 0, 0, 0, 0, 0, 0,
    +
    1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0
    +
    }
    +
    constexpr byte distanceGateSensitivityConfigCommand
    Definition LD2410Defs.h:76
    +
    +

    Definition at line 77 of file LD2410Defs.h.

    +
    77 {
    +
    78 0x14, 0, distanceGateSensitivityConfigCommand, 0, 0, 0, 0, 0, 0, 0,
    +
    79 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0
    +
    80 };
    +
    +
    +
    + +

    ◆ engineeringModeDisableComand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::engineeringModeDisableComand = 0x63
    +
    +constexpr
    +
    + +

    Definition at line 61 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ engineeringModeDisableCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::engineeringModeDisableCommandData[4] { 2, 0, engineeringModeDisableComand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 62 of file LD2410Defs.h.

    +
    +
    constexpr byte engineeringModeDisableComand
    Definition LD2410Defs.h:61
    +
    +
    +
    + +

    ◆ engineeringModeEnableComand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::engineeringModeEnableComand = 0x62
    +
    +constexpr
    +
    + +

    Definition at line 58 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ engineeringModeEnableCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::engineeringModeEnableCommandData[4] { 2, 0, engineeringModeEnableComand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 59 of file LD2410Defs.h.

    +
    +
    constexpr byte engineeringModeEnableComand
    Definition LD2410Defs.h:58
    +
    +
    +
    + +

    ◆ getBluetoothPermissionsCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::getBluetoothPermissionsCommand = 0xA8
    +
    +constexpr
    +
    + +

    Definition at line 50 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ headConfig

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::headConfig[4] { 0xFD, 0xFC, 0xFB, 0xFA }
    +
    +constexpr
    +
    + +

    Definition at line 15 of file LD2410Defs.h.

    +
    15{ 0xFD, 0xFC, 0xFB, 0xFA };
    +
    +
    +
    + +

    ◆ headData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::headData[4] { 0xF4, 0xF3, 0xF2, 0xF1 }
    +
    +constexpr
    +
    + +

    Definition at line 13 of file LD2410Defs.h.

    +
    13{ 0xF4, 0xF3, 0xF2, 0xF1 };
    +
    +
    +
    + +

    ◆ LD2410_Buffer_Size

    + +
    +
    + + + + + +
    + + + + +
    size_t LD2410Defs::LD2410_Buffer_Size = 0x40
    +
    +constexpr
    +
    + +

    Definition at line 11 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ maxGateCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::maxGateCommand = 0x60
    +
    +constexpr
    +
    + +

    Definition at line 82 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ maxGateCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::maxGateCommandData[0x16]
    +
    +constexpr
    +
    +Initial value:
    {
    +
    0x14, 0, maxGateCommand, 0, 0, 0, 8, 0, 0, 0,
    +
    1, 0, 8, 0, 0, 0, 2, 0, 5, 0, 0, 0
    +
    }
    +
    constexpr byte maxGateCommand
    Definition LD2410Defs.h:82
    +
    +

    Definition at line 83 of file LD2410Defs.h.

    +
    83 {
    +
    84 0x14, 0, maxGateCommand, 0, 0, 0, 8, 0, 0, 0,
    +
    85 1, 0, 8, 0, 0, 0, 2, 0, 5, 0, 0, 0
    +
    86 };
    +
    +
    +
    + +

    ◆ rebootCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::rebootCommand = 0xA3
    +
    +constexpr
    +
    + +

    Definition at line 43 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ rebootCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::rebootCommandData[4] { 2, 0, rebootCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 44 of file LD2410Defs.h.

    +
    44{ 2, 0, rebootCommand, 0 };
    +
    constexpr byte rebootCommand
    Definition LD2410Defs.h:43
    +
    +
    +
    + +

    ◆ requestAutoConfigStatusCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestAutoConfigStatusCommand = 0x1B
    +
    +constexpr
    +
    + +

    Definition at line 73 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestAutoConfigStatusCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestAutoConfigStatusCommandData[4] { 2, 0, requestAutoConfigStatusCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 74 of file LD2410Defs.h.

    +
    +
    constexpr byte requestAutoConfigStatusCommand
    Definition LD2410Defs.h:73
    +
    +
    +
    + +

    ◆ requestAuxControlSettingsCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestAuxControlSettingsCommand = 0xAE
    +
    +constexpr
    +
    + +

    Definition at line 64 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestAuxControlSettingsCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestAuxControlSettingsCommandData[4] { 2, 0, requestAuxControlSettingsCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 65 of file LD2410Defs.h.

    +
    +
    constexpr byte requestAuxControlSettingsCommand
    Definition LD2410Defs.h:64
    +
    +
    +
    + +

    ◆ requestDistanceResolutionCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestDistanceResolutionCommand = 0xAB
    +
    +constexpr
    +
    + +

    Definition at line 30 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestDistanceResolutionCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestDistanceResolutionCommandData[4] { 2, 0, requestDistanceResolutionCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 31 of file LD2410Defs.h.

    +
    +
    constexpr byte requestDistanceResolutionCommand
    Definition LD2410Defs.h:30
    +
    +
    +
    + +

    ◆ requestFirmwareCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestFirmwareCommand = 0xA0
    +
    +constexpr
    +
    + +

    Definition at line 27 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestFirmwareCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestFirmwareCommandData[4] { 2, 0, requestFirmwareCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 28 of file LD2410Defs.h.

    +
    28{ 2, 0, requestFirmwareCommand, 0 };
    +
    constexpr byte requestFirmwareCommand
    Definition LD2410Defs.h:27
    +
    +
    +
    + +

    ◆ requestMacAddressCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestMacAddressCommand = 0xA5
    +
    +constexpr
    +
    + +

    Definition at line 24 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestMacAddressCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestMacAddressCommandData[6] { 4, 0, requestMacAddressCommand, 0, 1, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 25 of file LD2410Defs.h.

    +
    25{ 4, 0, requestMacAddressCommand, 0, 1, 0 };
    +
    constexpr byte requestMacAddressCommand
    Definition LD2410Defs.h:24
    +
    +
    +
    + +

    ◆ requestParamsCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestParamsCommand = 0x61
    +
    +constexpr
    +
    + +

    Definition at line 55 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ requestParamsCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::requestParamsCommandData[4] { 2, 0, requestParamsCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 56 of file LD2410Defs.h.

    +
    56{ 2, 0, requestParamsCommand, 0 };
    +
    constexpr byte requestParamsCommand
    Definition LD2410Defs.h:55
    +
    +
    +
    + +

    ◆ restoreFactorSettingsCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::restoreFactorSettingsCommandData[4] { 2, 0, restoreFactorySettingsAsyncCommand, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 41 of file LD2410Defs.h.

    +
    +
    constexpr byte restoreFactorySettingsAsyncCommand
    Definition LD2410Defs.h:40
    +
    +
    +
    + +

    ◆ restoreFactorySettingsAsyncCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::restoreFactorySettingsAsyncCommand = 0xA2
    +
    +constexpr
    +
    + +

    Definition at line 40 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ setAuxControlSettingCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setAuxControlSettingCommandData[8] { 6, 0, setAuxControlSettingsCommand, 0, 0, 0x80, 0, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 68 of file LD2410Defs.h.

    +
    68{ 6, 0, setAuxControlSettingsCommand, 0, 0, 0x80, 0, 0 };
    +
    constexpr byte setAuxControlSettingsCommand
    Definition LD2410Defs.h:67
    +
    +
    +
    + +

    ◆ setAuxControlSettingsCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setAuxControlSettingsCommand = 0xAD
    +
    +constexpr
    +
    + +

    Definition at line 67 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ setBaudRateCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setBaudRateCommand = 0xA1
    +
    +constexpr
    +
    + +

    Definition at line 37 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ setBaudRateCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setBaudRateCommandData[6] { 4, 0, setBaudRateCommand, 0, 7, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 38 of file LD2410Defs.h.

    +
    38{ 4, 0, setBaudRateCommand, 0, 7, 0 };
    +
    constexpr byte setBaudRateCommand
    Definition LD2410Defs.h:37
    +
    +
    +
    + +

    ◆ setBluetoothPasswordCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setBluetoothPasswordCommand = 0xA9
    +
    +constexpr
    +
    + +

    Definition at line 52 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ setBluetoothPasswordCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setBluetoothPasswordCommandData[10] { 8, 0, setBluetoothPasswordCommand, 0, 0x48, 0x69, 0x4C, 0x69, 0x6E, 0x6B }
    +
    +constexpr
    +
    + +

    Definition at line 53 of file LD2410Defs.h.

    +
    53{ 8, 0, setBluetoothPasswordCommand, 0, 0x48, 0x69, 0x4C, 0x69, 0x6E, 0x6B };
    +
    constexpr byte setBluetoothPasswordCommand
    Definition LD2410Defs.h:52
    +
    +
    +
    + +

    ◆ setDistanceResolution20cmCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setDistanceResolution20cmCommandData[6] { 4, 0, setDistanceResolutionCommand, 0, 1, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 35 of file LD2410Defs.h.

    +
    35{ 4, 0, setDistanceResolutionCommand, 0, 1, 0 };
    +
    constexpr byte setDistanceResolutionCommand
    Definition LD2410Defs.h:33
    +
    +
    +
    + +

    ◆ setDistanceResolution75cmCommandData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setDistanceResolution75cmCommandData[6] { 4, 0, setDistanceResolutionCommand, 0, 0, 0 }
    +
    +constexpr
    +
    + +

    Definition at line 34 of file LD2410Defs.h.

    +
    34{ 4, 0, setDistanceResolutionCommand, 0, 0, 0 };
    +
    +
    +
    + +

    ◆ setDistanceResolutionCommand

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::setDistanceResolutionCommand = 0xAA
    +
    +constexpr
    +
    + +

    Definition at line 33 of file LD2410Defs.h.

    + +
    +
    + +

    ◆ tailConfig

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::tailConfig[4] { 4, 3, 2, 1 }
    +
    +constexpr
    +
    + +

    Definition at line 16 of file LD2410Defs.h.

    +
    16{ 4, 3, 2, 1 };
    +
    +
    +
    + +

    ◆ tailData

    + +
    +
    + + + + + +
    + + + + +
    byte LD2410Defs::tailData[4] { 0xF8, 0xF7, 0xF6, 0xF5 }
    +
    +constexpr
    +
    + +

    Definition at line 14 of file LD2410Defs.h.

    +
    14{ 0xF8, 0xF7, 0xF6, 0xF5 };
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/namespaceLD2410Types.html b/docu/namespaceLD2410Types.html new file mode 100644 index 0000000..e1e4879 --- /dev/null +++ b/docu/namespaceLD2410Types.html @@ -0,0 +1,491 @@ + + + + + + + +LD2410Async: LD2410Types Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LD2410Types Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  ConfigData
     Stores the sensor’s configuration parameters. More...
     
    struct  DetectionData
     Holds the most recent detection data reported by the radar. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  TargetState {
    +  NO_TARGET = 0 +, MOVING_TARGET = 1 +, STATIONARY_TARGET = 2 +, MOVING_AND_STATIONARY_TARGET = 3 +,
    +  AUTOCONFIG_IN_PROGRESS = 4 +, AUTOCONFIG_SUCCESS = 5 +, AUTOCONFIG_FAILED = 6 +
    + }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LightControl { NOT_SET = -1 +, NO_LIGHT_CONTROL = 0 +, LIGHT_BELOW_THRESHOLD = 1 +, LIGHT_ABOVE_THRESHOLD = 2 + }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  OutputControl { NOT_SET = -1 +, DEFAULT_LOW_DETECTED_HIGH = 0 +, DEFAULT_HIGH_DETECTED_LOW = 1 + }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  AutoConfigStatus { NOT_SET = -1 +, NOT_IN_PROGRESS +, IN_PROGRESS +, COMPLETED + }
     State of the automatic threshold configuration routine. More...
     
    enum class  Baudrate {
    +  BAUDRATE_9600 = 1 +, BAUDRATE_19200 = 2 +, BAUDRATE_38400 = 3 +, BAUDRATE_57600 = 4 +,
    +  BAUDRATE_115200 = 5 +, BAUDRATE_230500 = 6 +, BAUDRATE_256000 = 7 +, BAUDRATE_460800 = 8 +
    + }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  DistanceResolution { NOT_SET = -1 +, RESOLUTION_75CM = 0 +, RESOLUTION_20CM = 1 + }
     Distance resolution per gate for detection. More...
     
    +

    Detailed Description

    +

    @ brief All enums, structs, and type helpers for LD2410Async

    +

    Enumeration Type Documentation

    + +

    ◆ AutoConfigStatus

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::AutoConfigStatus
    +
    +strong
    +
    + +

    State of the automatic threshold configuration routine.

    +

    Auto-config adjusts the sensitivity thresholds for optimal detection in the current environment. This process may take several seconds.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Status not yet retrieved.

    +
    NOT_IN_PROGRESS 

    Auto-configuration not running.

    +
    IN_PROGRESS 

    Auto-configuration is currently running.

    +
    COMPLETED 

    Auto-configuration finished (success or failure).

    +
    + +

    Definition at line 152 of file LD2410Types.h.

    +
    152 {
    +
    153 NOT_SET = -1, ///< Status not yet retrieved.
    +
    154 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    155 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    156 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    157 };
    +
    @ COMPLETED
    Auto-configuration finished (success or failure).
    +
    @ IN_PROGRESS
    Auto-configuration is currently running.
    +
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    +
    +
    + +

    ◆ Baudrate

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::Baudrate
    +
    +strong
    +
    + +

    Supported baud rates for the sensor’s UART interface.

    +

    These values correspond to the configuration commands accepted by the LD2410. After changing the baud rate, a sensor reboot is required, and the ESP32’s UART must be reconfigured to match.

    + + + + + + + + + +
    Enumerator
    BAUDRATE_9600 

    9600 baud.

    +
    BAUDRATE_19200 

    19200 baud.

    +
    BAUDRATE_38400 

    38400 baud.

    +
    BAUDRATE_57600 

    57600 baud.

    +
    BAUDRATE_115200 

    115200 baud.

    +
    BAUDRATE_230500 

    230400 baud.

    +
    BAUDRATE_256000 

    256000 baud (factory default).

    +
    BAUDRATE_460800 

    460800 baud (high-speed).

    +
    + +

    Definition at line 185 of file LD2410Types.h.

    +
    185 {
    +
    186 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    187 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    188 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    189 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    190 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    191 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    192 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    193 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    194 };
    +
    @ BAUDRATE_57600
    57600 baud.
    +
    @ BAUDRATE_38400
    38400 baud.
    +
    @ BAUDRATE_230500
    230400 baud.
    +
    @ BAUDRATE_115200
    115200 baud.
    +
    @ BAUDRATE_256000
    256000 baud (factory default).
    +
    @ BAUDRATE_19200
    19200 baud.
    +
    @ BAUDRATE_9600
    9600 baud.
    +
    @ BAUDRATE_460800
    460800 baud (high-speed).
    +
    +
    +
    + +

    ◆ DistanceResolution

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::DistanceResolution
    +
    +strong
    +
    + +

    Distance resolution per gate for detection.

    +

    The resolution defines how fine-grained the distance measurement is:

      +
    • RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    • +
    • RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    • +
    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    RESOLUTION_75CM 

    Each gate ~0.75 m, max range ~6 m.

    +
    RESOLUTION_20CM 

    Each gate ~0.20 m, max range ~1.8 m.

    +
    + +

    Definition at line 205 of file LD2410Types.h.

    +
    205 {
    +
    206 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    207 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    208 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    +
    209 };
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    +
    +
    + +

    ◆ LightControl

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::LightControl
    +
    +strong
    +
    + +

    Light-dependent control status of the auxiliary output.

    +

    The radar sensor can control an external output based on ambient light level in combination with presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    NO_LIGHT_CONTROL 

    Output is not influenced by light levels.

    +
    LIGHT_BELOW_THRESHOLD 

    Condition: light < threshold.

    +
    LIGHT_ABOVE_THRESHOLD 

    Condition: light ≥ threshold.

    +
    + +

    Definition at line 89 of file LD2410Types.h.

    +
    89 {
    +
    90 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    91 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    92 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    93 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    94 };
    +
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    +
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    +
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    +
    +
    +
    + +

    ◆ OutputControl

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::OutputControl
    +
    +strong
    +
    + +

    Logic level behavior of the auxiliary output pin.

    +

    Determines whether the output pin is active-high or active-low in relation to presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    DEFAULT_LOW_DETECTED_HIGH 

    Default low, goes HIGH when detection occurs.

    +
    DEFAULT_HIGH_DETECTED_LOW 

    Default high, goes LOW when detection occurs.

    +
    + +

    Definition at line 122 of file LD2410Types.h.

    +
    122 {
    +
    123 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    124 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    125 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    126 };
    +
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    +
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    +
    +
    +
    + +

    ◆ TargetState

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::TargetState
    +
    +strong
    +
    + +

    Represents the current target detection state reported by the radar.

    +

    Values can be combined internally by the sensor depending on its signal evaluation logic. The AUTO-CONFIG states are special values that are only reported while the sensor is running its self-calibration routine.

    + + + + + + + + +
    Enumerator
    NO_TARGET 

    No moving or stationary target detected.

    +
    MOVING_TARGET 

    A moving target has been detected.

    +
    STATIONARY_TARGET 

    A stationary target has been detected.

    +
    MOVING_AND_STATIONARY_TARGET 

    Both moving and stationary targets detected.

    +
    AUTOCONFIG_IN_PROGRESS 

    Auto-configuration routine is running.

    +
    AUTOCONFIG_SUCCESS 

    Auto-configuration completed successfully.

    +
    AUTOCONFIG_FAILED 

    Auto-configuration failed.

    +
    + +

    Definition at line 19 of file LD2410Types.h.

    +
    19 {
    +
    20 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    21 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    22 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    23 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    24 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    25 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    26 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    27 };
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ NO_TARGET
    No moving or stationary target detected.
    +
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    +
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/namespaceLD2410Types.js b/docu/namespaceLD2410Types.js new file mode 100644 index 0000000..250e081 --- /dev/null +++ b/docu/namespaceLD2410Types.js @@ -0,0 +1,46 @@ +var namespaceLD2410Types = +[ + [ "ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], + [ "DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], + [ "AutoConfigStatus", "namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995", [ + [ "NOT_SET", "namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NOT_IN_PROGRESS", "namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], + [ "IN_PROGRESS", "namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], + [ "COMPLETED", "namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] + ] ], + [ "Baudrate", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf", [ + [ "BAUDRATE_9600", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], + [ "BAUDRATE_19200", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], + [ "BAUDRATE_38400", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], + [ "BAUDRATE_57600", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], + [ "BAUDRATE_115200", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], + [ "BAUDRATE_230500", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], + [ "BAUDRATE_256000", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], + [ "BAUDRATE_460800", "namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] + ] ], + [ "DistanceResolution", "namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79", [ + [ "NOT_SET", "namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "RESOLUTION_75CM", "namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], + [ "RESOLUTION_20CM", "namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] + ] ], + [ "LightControl", "namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844", [ + [ "NOT_SET", "namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NO_LIGHT_CONTROL", "namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], + [ "LIGHT_BELOW_THRESHOLD", "namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], + [ "LIGHT_ABOVE_THRESHOLD", "namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] + ] ], + [ "OutputControl", "namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff", [ + [ "NOT_SET", "namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], + [ "DEFAULT_LOW_DETECTED_HIGH", "namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], + [ "DEFAULT_HIGH_DETECTED_LOW", "namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] + ] ], + [ "TargetState", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9", [ + [ "NO_TARGET", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], + [ "MOVING_TARGET", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], + [ "STATIONARY_TARGET", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], + [ "MOVING_AND_STATIONARY_TARGET", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], + [ "AUTOCONFIG_IN_PROGRESS", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], + [ "AUTOCONFIG_SUCCESS", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], + [ "AUTOCONFIG_FAILED", "namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] + ] ] +]; \ No newline at end of file diff --git a/docu/namespacemembers.html b/docu/namespacemembers.html new file mode 100644 index 0000000..fe28cf9 --- /dev/null +++ b/docu/namespacemembers.html @@ -0,0 +1,221 @@ + + + + + + + +LD2410Async: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - g -

    + + +

    - h -

    + + +

    - l -

    + + +

    - m -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    +
    +
    + + + + diff --git a/docu/namespacemembers_enum.html b/docu/namespacemembers_enum.html new file mode 100644 index 0000000..2ba94db --- /dev/null +++ b/docu/namespacemembers_enum.html @@ -0,0 +1,117 @@ + + + + + + + +LD2410Async: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    +
    +
    + + + + diff --git a/docu/namespacemembers_func.html b/docu/namespacemembers_func.html new file mode 100644 index 0000000..28bcf8c --- /dev/null +++ b/docu/namespacemembers_func.html @@ -0,0 +1,117 @@ + + + + + + + +LD2410Async: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    +
    +
    + + + + diff --git a/docu/namespacemembers_vars.html b/docu/namespacemembers_vars.html new file mode 100644 index 0000000..34b7a55 --- /dev/null +++ b/docu/namespacemembers_vars.html @@ -0,0 +1,201 @@ + + + + + + + +LD2410Async: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace variables with links to the namespace documentation for each variable:
    + +

    - b -

    + + +

    - c -

    + + +

    - d -

      +
    • distanceGateSensitivityConfigCommand : LD2410Defs
    • +
    • distanceGateSensitivityConfigCommandData : LD2410Defs
    • +
    + + +

    - e -

    + + +

    - g -

    + + +

    - h -

    + + +

    - l -

    + + +

    - m -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    +
    +
    + + + + diff --git a/docu/namespaces.html b/docu/namespaces.html new file mode 100644 index 0000000..ffe4002 --- /dev/null +++ b/docu/namespaces.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: Namespace List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    +
    + + + + diff --git a/docu/namespaces_dup.js b/docu/namespaces_dup.js new file mode 100644 index 0000000..830a016 --- /dev/null +++ b/docu/namespaces_dup.js @@ -0,0 +1,62 @@ +var namespaces_dup = +[ + [ "LD2410CommandBuilder", "namespaceLD2410CommandBuilder.html", [ + [ "buildAuxControlCommand", "namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255", null ], + [ "buildBaudRateCommand", "namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729", null ], + [ "buildBluetoothPasswordCommand", "namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f", null ], + [ "buildDistanceResolutionCommand", "namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f", null ], + [ "buildGateSensitivityCommand", "namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6", null ], + [ "buildMaxGateCommand", "namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e", null ] + ] ], + [ "LD2410Defs", "namespaceLD2410Defs.html", [ + [ "beginAutoConfigCommand", "namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398", null ], + [ "beginAutoConfigCommandData", "namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200", null ], + [ "bluetoothSettingsCommand", "namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105", null ], + [ "bluetoothSettingsOffCommandData", "namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7", null ], + [ "bluetoothSettingsOnCommandData", "namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8", null ], + [ "configDisableCommand", "namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89", null ], + [ "configDisableCommandData", "namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584", null ], + [ "configEnableCommand", "namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55", null ], + [ "configEnableCommandData", "namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3", null ], + [ "distanceGateSensitivityConfigCommand", "namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8", null ], + [ "distanceGateSensitivityConfigCommandData", "namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4", null ], + [ "engineeringModeDisableComand", "namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d", null ], + [ "engineeringModeDisableCommandData", "namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939", null ], + [ "engineeringModeEnableComand", "namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9", null ], + [ "engineeringModeEnableCommandData", "namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d", null ], + [ "getBluetoothPermissionsCommand", "namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34", null ], + [ "headConfig", "namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478", null ], + [ "headData", "namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34", null ], + [ "LD2410_Buffer_Size", "namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f", null ], + [ "maxGateCommand", "namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816", null ], + [ "maxGateCommandData", "namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97", null ], + [ "rebootCommand", "namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5", null ], + [ "rebootCommandData", "namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a", null ], + [ "requestAutoConfigStatusCommand", "namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde", null ], + [ "requestAutoConfigStatusCommandData", "namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699", null ], + [ "requestAuxControlSettingsCommand", "namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303", null ], + [ "requestAuxControlSettingsCommandData", "namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd", null ], + [ "requestDistanceResolutionCommand", "namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd", null ], + [ "requestDistanceResolutionCommandData", "namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273", null ], + [ "requestFirmwareCommand", "namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2", null ], + [ "requestFirmwareCommandData", "namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6", null ], + [ "requestMacAddressCommand", "namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df", null ], + [ "requestMacAddressCommandData", "namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62", null ], + [ "requestParamsCommand", "namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b", null ], + [ "requestParamsCommandData", "namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01", null ], + [ "restoreFactorSettingsCommandData", "namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b", null ], + [ "restoreFactorySettingsAsyncCommand", "namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75", null ], + [ "setAuxControlSettingCommandData", "namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e", null ], + [ "setAuxControlSettingsCommand", "namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18", null ], + [ "setBaudRateCommand", "namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b", null ], + [ "setBaudRateCommandData", "namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790", null ], + [ "setBluetoothPasswordCommand", "namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9", null ], + [ "setBluetoothPasswordCommandData", "namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8", null ], + [ "setDistanceResolution20cmCommandData", "namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151", null ], + [ "setDistanceResolution75cmCommandData", "namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb", null ], + [ "setDistanceResolutionCommand", "namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9", null ], + [ "tailConfig", "namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce", null ], + [ "tailData", "namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f", null ] + ] ], + [ "LD2410Types", "namespaceLD2410Types.html", "namespaceLD2410Types" ] +]; \ No newline at end of file diff --git a/docu/nav_f.png b/docu/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docu/nav_fd.png b/docu/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docu/nav_g.png b/docu/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docu/navtree.css b/docu/navtree.css new file mode 100644 index 0000000..69211d4 --- /dev/null +++ b/docu/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docu/navtree.js b/docu/navtree.js new file mode 100644 index 0000000..9027ce6 --- /dev/null +++ b/docu/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/docu/plusd.svg b/docu/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docu/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docu/receiveData_8ino.html b/docu/receiveData_8ino.html new file mode 100644 index 0000000..310f289 --- /dev/null +++ b/docu/receiveData_8ino.html @@ -0,0 +1,115 @@ + + + + + + + +LD2410Async: receiveData.ino File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    receiveData.ino File Reference
    +
    + +
    + + + + diff --git a/docu/receiveData_8ino_source.html b/docu/receiveData_8ino_source.html new file mode 100644 index 0000000..177ab1c --- /dev/null +++ b/docu/receiveData_8ino_source.html @@ -0,0 +1,216 @@ + + + + + + + +LD2410Async: receiveData.ino Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    receiveData.ino
    +
    +
    +Go to the documentation of this file.
    1/**
    +
    2 * Example sketch for LD2410Async library
    +
    3 *
    +
    4 * This sketch initializes the LD2410 radar sensor on Serial1 and
    +
    5 * prints detection data to the Serial Monitor as soon as it arrives.
    +
    6 *
    +
    7 * Important:
    +
    8 * Make sure to adjust RADAR_RX_PIN and ADAR_TX_PIN to match you actual wiring.
    +
    9 */
    +
    10
    +
    11#include <Arduino.h>
    +
    12#include "LD2410Async.h"
    +
    13
    +
    14 /**
    +
    15 * Example sketch for LD2410Async library
    +
    16 *
    +
    17 * This sketch demonstrates how to:
    +
    18 * 1. Initialize the radar on Serial1.
    +
    19 * 2. register a callback to receive detection data.
    +
    20 * 3. Get a pointer to the detection data struct.
    +
    21 *
    +
    22 * Important:
    +
    23 * Make sure to adjust RADAR_RX_PIN and ADAR_TX_PIN to match you actual wiring.
    +
    24 */
    +
    25
    +
    26 // ========================= USER CONFIGURATION =========================
    +
    27
    +
    28 // UART pins for the LD2410 sensor
    +
    29#define RADAR_RX_PIN 16 // ESP32 pin that receives data from the radar (radar TX)
    +
    30#define RADAR_TX_PIN 17 // ESP32 pin that transmits data to the radar (radar RX)
    +
    31
    +
    32// UART baudrate for the radar sensor (default is 256000)
    +
    33#define RADAR_BAUDRATE 256000
    +
    34
    +
    35// ======================================================================
    +
    36
    +
    37// Create a HardwareSerial instance (ESP32 has multiple UARTs)
    +
    38HardwareSerial RadarSerial(1);
    +
    39
    +
    40// Create LD2410Async object bound to Serial1
    +
    41LD2410Async radar(RadarSerial);
    +
    42
    +
    43// Callback function called whenever new detection data arrives
    +
    44void onDetectionDataReceived(LD2410Async* sender, bool presenceDetected, byte userData) {
    +
    45 // Access detection data efficiently without making a copy
    +
    46 const LD2410Types::DetectionData& data = sender->getDetectionDataRef();
    +
    47
    +
    48 Serial.println("=== Detection Data ===");
    +
    49
    +
    50 Serial.print("Target State: ");
    +
    51 Serial.println(LD2410Types::targetStateToString(data.targetState));
    +
    52
    +
    53 Serial.print("Presence detected: ");
    +
    54 Serial.println(data.presenceDetected ? "Yes" : "No");
    +
    55
    +
    56 Serial.print("Moving presence: ");
    +
    57 Serial.println(data.movingPresenceDetected ? "Yes" : "No");
    +
    58
    +
    59 Serial.print("Stationary presence: ");
    +
    60 Serial.println(data.stationaryPresenceDetected ? "Yes" : "No");
    +
    61
    +
    62 Serial.print("Moving Distance (cm): ");
    +
    63 Serial.println(data.movingTargetDistance);
    +
    64
    +
    65 Serial.print("Stationary Distance (cm): ");
    +
    66 Serial.println(data.stationaryTargetDistance);
    +
    67
    +
    68 Serial.print("Light Level: ");
    +
    69 Serial.println(data.lightLevel);
    +
    70
    +
    71 Serial.println("======================");
    +
    72}
    +
    73
    +
    74void setup() {
    +
    75 // Initialize USB serial for debug output
    +
    76 Serial.begin(115200);
    +
    77 while (!Serial) {
    +
    78 ; // wait for Serial Monitor
    +
    79 }
    +
    80 Serial.println("LD2410Async example: print detection data");
    +
    81
    +
    82 // Initialize Serial1 with user-defined pins and baudrate
    +
    83 RadarSerial.begin(RADAR_BAUDRATE, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
    +
    84
    +
    85 // Start the radar background task (parses incoming data frames)
    +
    86 if (radar.begin()) {
    +
    87 Serial.println("Radar task started successfully.");
    +
    88 // Register callback for detection updates
    +
    89 radar.registerDetectionDataReceivedCallback(onDetectionDataReceived, 0);
    +
    90 }
    +
    91 else {
    +
    92 Serial.println("ERROR! Could not start radar task.");
    +
    93 }
    +
    94
    +
    95
    +
    96}
    +
    97
    +
    98void loop() {
    +
    99 // Nothing to do here!
    +
    100 // The LD2410Async library runs a FreeRTOS background task
    +
    101 // that automatically parses incoming radar data and triggers callbacks.
    +
    102 delay(1000); // idle delay (optional)
    +
    103}
    +
    +
    + + + + diff --git a/docu/resize.js b/docu/resize.js new file mode 100644 index 0000000..178d03b --- /dev/null +++ b/docu/resize.js @@ -0,0 +1,147 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/docu/search/all_0.js b/docu/search/all_0.js new file mode 100644 index 0000000..fd4e7b9 --- /dev/null +++ b/docu/search/all_0.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['access_20detection_20data_20without_20cloning_1',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['access_20without_20cloning_3',['access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['accessing_20data_4',['Accessing data',['../classLD2410Async.html#autotoc_md1',1,'']]], + ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['and_20mac_6',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['and_20write_20back_7',['and write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['asynccancel_9',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asynccommandcallback_10',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], + ['asynccommandresult_11',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asyncisbusy_12',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], + ['auto_20config_13',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], + ['auto_20config_20status_14',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['autoconfig_5ffailed_15',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_16',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_17',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], + ['autoconfigstatus_18',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], + ['autoconfigstatus_19',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] +]; diff --git a/docu/search/all_1.js b/docu/search/all_1.js new file mode 100644 index 0000000..24a1191 --- /dev/null +++ b/docu/search/all_1.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['back_0',['back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['basicpresencedetection_2eino_1',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], + ['baudrate_2',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], + ['baudrate_5f115200_3',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_4',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_5',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_6',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_7',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_8',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_9',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_10',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], + ['begin_11',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_12',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['beginautoconfigcommand_13',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], + ['beginautoconfigcommanddata_14',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], + ['bluetoothsettingscommand_15',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], + ['bluetoothsettingsoffcommanddata_16',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], + ['bluetoothsettingsoncommanddata_17',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], + ['bufferendswith_18',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], + ['buffersize_19',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], + ['buildauxcontrolcommand_20',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], + ['buildbaudratecommand_21',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], + ['buildbluetoothpasswordcommand_22',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], + ['builddistanceresolutioncommand_23',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], + ['buildgatesensitivitycommand_24',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], + ['buildmaxgatecommand_25',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], + ['byte2hex_26',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] +]; diff --git a/docu/search/all_10.js b/docu/search/all_10.js new file mode 100644 index 0000000..431533e --- /dev/null +++ b/docu/search/all_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['tailconfig_0',['tailConfig',['../namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce',1,'LD2410Defs']]], + ['taildata_1',['tailData',['../namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f',1,'LD2410Defs']]], + ['targetstate_2',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], + ['targetstate_3',['targetState',['../structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7',1,'LD2410Types::DetectionData']]], + ['timeout_4',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], + ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]] +]; diff --git a/docu/search/all_11.js b/docu/search/all_11.js new file mode 100644 index 0000000..3c1c98a --- /dev/null +++ b/docu/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['usage_0',['Usage',['../classLD2410Async.html#autotoc_md4',1,'']]] +]; diff --git a/docu/search/all_12.js b/docu/search/all_12.js new file mode 100644 index 0000000..4926498 --- /dev/null +++ b/docu/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['values_20from_20a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] +]; diff --git a/docu/search/all_13.js b/docu/search/all_13.js new file mode 100644 index 0000000..7a47fc5 --- /dev/null +++ b/docu/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['without_20cloning_0',['without cloning',['../classLD2410Async.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['write_20back_1',['write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] +]; diff --git a/docu/search/all_2.js b/docu/search/all_2.js new file mode 100644 index 0000000..942cf2f --- /dev/null +++ b/docu/search/all_2.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['changeconfig_2eino_1',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], + ['changedistanceresolution_2eino_2',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], + ['check_20auto_20config_20status_3',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['clone_20config_20data_20modify_20and_20write_20back_5',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], + ['clone_20modify_20and_20apply_20config_6',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['clone_20modify_20and_20write_20back_7',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['cloning_8',['cloning',['../classLD2410Async.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['completed_9',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], + ['config_10',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], + ['config_20data_11',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['config_20data_20modify_20and_20write_20back_12',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], + ['config_20status_13',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['configdata_14',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], + ['configdata_15',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdisablecommand_16',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], + ['configdisablecommanddata_17',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], + ['configenablecommand_18',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], + ['configenablecommanddata_19',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], + ['configmodeenabled_20',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], + ['configureallconfigsettingsasync_21',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_22',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_23',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_24',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_25',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_26',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_27',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_28',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_29',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_30',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] +]; diff --git a/docu/search/all_3.js b/docu/search/all_3.js new file mode 100644 index 0000000..25e355f --- /dev/null +++ b/docu/search/all_3.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['data_0',['data',['../classLD2410Async.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], + ['data_20modify_20and_20write_20back_1',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], + ['data_20without_20cloning_2',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['debug_5fprint_3',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], + ['debug_5fprint_5fdata_4',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], + ['debug_5fprint_5fmillis_5',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_6',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_5fdata_7',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], + ['debug_5fprintln_8',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], + ['debug_5fprintln_5fdata_9',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], + ['default_5fhigh_5fdetected_5flow_10',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_11',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], + ['detecteddistance_12',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], + ['detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['detectiondata_14',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], + ['detectiondata_15',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondatacallback_16',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]], + ['disablebluetoothasync_17',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_18',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_19',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_20',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], + ['distancegatemotionsensitivity_21',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], + ['distancegatesensitivityconfigcommand_22',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], + ['distancegatesensitivityconfigcommanddata_23',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], + ['distancegatestationarysensitivity_24',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], + ['distanceresolution_25',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], + ['distanceresolution_26',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], + ['do_3a_27',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], + ['don’t_3a_28',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] +]; diff --git a/docu/search/all_4.js b/docu/search/all_4.js new file mode 100644 index 0000000..c007b62 --- /dev/null +++ b/docu/search/all_4.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['efficient_20read_20access_20without_20cloning_0',['Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['enablebluetoothasync_1',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_2',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_4',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_5',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['engineeringmode_6',['engineeringMode',['../structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7',1,'LD2410Types::DetectionData']]], + ['engineeringmodedisablecomand_7',['engineeringModeDisableComand',['../namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d',1,'LD2410Defs']]], + ['engineeringmodedisablecommanddata_8',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], + ['engineeringmodeenablecomand_9',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], + ['engineeringmodeenablecommanddata_10',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], + ['engineeringmodeenabled_11',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], + ['equals_12',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], + ['example_3a_20access_20detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['example_3a_20access_20values_20from_20a_20clone_14',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['example_3a_20check_20auto_20config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_16',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], + ['example_3a_20clone_20modify_20and_20apply_20config_17',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['example_3a_20clone_20modify_20and_20write_20back_18',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['example_3a_20efficient_20read_20access_20without_20cloning_19',['Example: Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['example_3a_20refresh_20config_20data_20',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['example_3a_20retrieve_20firmware_20and_20mac_21',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['example_3a_20run_20auto_20config_22',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] +]; diff --git a/docu/search/all_5.js b/docu/search/all_5.js new file mode 100644 index 0000000..8d55e9f --- /dev/null +++ b/docu/search/all_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], + ['features_1',['Features',['../classLD2410Async.html#autotoc_md0',1,'']]], + ['firmware_2',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], + ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['from_20a_20clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] +]; diff --git a/docu/search/all_6.js b/docu/search/all_6.js new file mode 100644 index 0000000..39faca2 --- /dev/null +++ b/docu/search/all_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], + ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['getbluetoothpermissionscommand_2',['getBluetoothPermissionsCommand',['../namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34',1,'LD2410Defs']]], + ['getconfigdata_3',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_4',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_5',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_6',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] +]; diff --git a/docu/search/all_7.js b/docu/search/all_7.js new file mode 100644 index 0000000..33f656d --- /dev/null +++ b/docu/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['headconfig_0',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], + ['headdata_1',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] +]; diff --git a/docu/search/all_8.js b/docu/search/all_8.js new file mode 100644 index 0000000..b6b23e2 --- /dev/null +++ b/docu/search/all_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], + ['isconfigmodeenabled_1',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_2',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_3',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isvalid_4',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/all_9.js b/docu/search/all_9.js new file mode 100644 index 0000000..af8d5b8 --- /dev/null +++ b/docu/search/all_9.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['ld2410_5fbuffer_5fsize_0',['LD2410_Buffer_Size',['../namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f',1,'LD2410Defs']]], + ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()']]], + ['ld2410async_2ecpp_2',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], + ['ld2410async_2eh_3',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], + ['ld2410async_5fdebug_5fdata_5flevel_4',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], + ['ld2410async_5fdebug_5flevel_5',['LD2410ASYNC_DEBUG_LEVEL',['../LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163',1,'LD2410Debug.h']]], + ['ld2410commandbuilder_6',['LD2410CommandBuilder',['../namespaceLD2410CommandBuilder.html',1,'']]], + ['ld2410commandbuilder_2eh_7',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], + ['ld2410debug_2eh_8',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], + ['ld2410defs_9',['LD2410Defs',['../namespaceLD2410Defs.html',1,'']]], + ['ld2410defs_2eh_10',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], + ['ld2410types_11',['LD2410Types',['../namespaceLD2410Types.html',1,'']]], + ['ld2410types_2eh_12',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]], + ['light_5fabove_5fthreshold_13',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_14',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]], + ['lightcontrol_15',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]], + ['lightcontrol_16',['lightControl',['../structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7',1,'LD2410Types::ConfigData']]], + ['lightlevel_17',['lightLevel',['../structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c',1,'LD2410Types::DetectionData']]], + ['lightthreshold_18',['lightThreshold',['../structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/all_a.js b/docu/search/all_a.js new file mode 100644 index 0000000..a899d99 --- /dev/null +++ b/docu/search/all_a.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['mac_0',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['mac_1',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_2',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['maxgatecommand_3',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], + ['maxgatecommanddata_4',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], + ['maxmotiondistancegate_5',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], + ['maxstationarydistancegate_6',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], + ['modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['modify_20and_20write_20back_8',['modify and write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['moving_5fand_5fstationary_5ftarget_9',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_10',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], + ['movingpresencedetected_11',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], + ['movingtargetdistance_12',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignalcount_13',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignals_14',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], + ['movingtargetsignal_15',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] +]; diff --git a/docu/search/all_b.js b/docu/search/all_b.js new file mode 100644 index 0000000..208c783 --- /dev/null +++ b/docu/search/all_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_1',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['noonetimeout_2',['noOneTimeout',['../structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf',1,'LD2410Types::ConfigData']]], + ['not_5fin_5fprogress_3',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_4',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]], + ['numberofgates_5',['numberOfGates',['../structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/all_c.js b/docu/search/all_c.js new file mode 100644 index 0000000..cc9ea58 --- /dev/null +++ b/docu/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['outpinstatus_0',['outPinStatus',['../structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2',1,'LD2410Types::DetectionData']]], + ['outputcontrol_1',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]], + ['outputcontrol_2',['outputControl',['../structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/all_d.js b/docu/search/all_d.js new file mode 100644 index 0000000..658dc94 --- /dev/null +++ b/docu/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], + ['print_1',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], + ['protocolversion_2',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] +]; diff --git a/docu/search/all_e.js b/docu/search/all_e.js new file mode 100644 index 0000000..b62e4e0 --- /dev/null +++ b/docu/search/all_e.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['read_20access_20without_20cloning_0',['read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['rebootasync_1',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['rebootcommand_2',['rebootCommand',['../namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5',1,'LD2410Defs']]], + ['rebootcommanddata_3',['rebootCommandData',['../namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a',1,'LD2410Defs']]], + ['receivedata_2eino_4',['receiveData.ino',['../receiveData_8ino.html',1,'']]], + ['refresh_20config_20data_5',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestautoconfigstatuscommand_12',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], + ['requestautoconfigstatuscommanddata_13',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], + ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestauxcontrolsettingscommand_15',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], + ['requestauxcontrolsettingscommanddata_16',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], + ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestdistanceresolutioncommand_19',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], + ['requestdistanceresolutioncommanddata_20',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], + ['requestfirmwareasync_21',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestfirmwarecommand_22',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], + ['requestfirmwarecommanddata_23',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], + ['requestgateparametersasync_24',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['requestmacaddresscommand_25',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], + ['requestmacaddresscommanddata_26',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], + ['requestparamscommand_27',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], + ['requestparamscommanddata_28',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], + ['resolution_5f20cm_29',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_30',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], + ['restorefactorsettingscommanddata_31',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], + ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], + ['restorefactorysettingsasynccommand_33',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], + ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['run_20auto_20config_35',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] +]; diff --git a/docu/search/all_f.js b/docu/search/all_f.js new file mode 100644 index 0000000..339930d --- /dev/null +++ b/docu/search/all_f.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['setauxcontrolsettingcommanddata_1',['setAuxControlSettingCommandData',['../namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e',1,'LD2410Defs']]], + ['setauxcontrolsettingscommand_2',['setAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18',1,'LD2410Defs']]], + ['setbaudratecommand_3',['setBaudRateCommand',['../namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b',1,'LD2410Defs']]], + ['setbaudratecommanddata_4',['setBaudRateCommandData',['../namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790',1,'LD2410Defs']]], + ['setbluetoothpasswordcommand_5',['setBluetoothPasswordCommand',['../namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9',1,'LD2410Defs']]], + ['setbluetoothpasswordcommanddata_6',['setBluetoothPasswordCommandData',['../namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8',1,'LD2410Defs']]], + ['setdistanceresolution20cmcommanddata_7',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], + ['setdistanceresolution75cmcommanddata_8',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], + ['setdistanceresolutioncommand_9',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], + ['setinactivityhandling_10',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], + ['stationary_5ftarget_12',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['stationarypresencedetected_13',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], + ['stationarytargetdistance_14',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], + ['stationarytargetgatesignalcount_15',['stationaryTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1',1,'LD2410Types::DetectionData']]], + ['stationarytargetgatesignals_16',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], + ['stationarytargetsignal_17',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], + ['status_18',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['success_19',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] +]; diff --git a/docu/search/classes_0.js b/docu/search/classes_0.js new file mode 100644 index 0000000..2d25452 --- /dev/null +++ b/docu/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['configdata_0',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]] +]; diff --git a/docu/search/classes_1.js b/docu/search/classes_1.js new file mode 100644 index 0000000..637ff48 --- /dev/null +++ b/docu/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['detectiondata_0',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]] +]; diff --git a/docu/search/classes_2.js b/docu/search/classes_2.js new file mode 100644 index 0000000..a5eea91 --- /dev/null +++ b/docu/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ld2410async_0',['LD2410Async',['../classLD2410Async.html',1,'']]] +]; diff --git a/docu/search/close.svg b/docu/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/docu/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docu/search/defines_0.js b/docu/search/defines_0.js new file mode 100644 index 0000000..f36095c --- /dev/null +++ b/docu/search/defines_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['debug_5fprint_0',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], + ['debug_5fprint_5fdata_1',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], + ['debug_5fprint_5fmillis_2',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_3',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_5fdata_4',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], + ['debug_5fprintln_5',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], + ['debug_5fprintln_5fdata_6',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]] +]; diff --git a/docu/search/defines_1.js b/docu/search/defines_1.js new file mode 100644 index 0000000..813d221 --- /dev/null +++ b/docu/search/defines_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ld2410async_5fdebug_5fdata_5flevel_0',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], + ['ld2410async_5fdebug_5flevel_1',['LD2410ASYNC_DEBUG_LEVEL',['../LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163',1,'LD2410Debug.h']]] +]; diff --git a/docu/search/enums_0.js b/docu/search/enums_0.js new file mode 100644 index 0000000..ec7d65e --- /dev/null +++ b/docu/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['asynccommandresult_0',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['autoconfigstatus_1',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] +]; diff --git a/docu/search/enums_1.js b/docu/search/enums_1.js new file mode 100644 index 0000000..b42f7bf --- /dev/null +++ b/docu/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['baudrate_0',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]] +]; diff --git a/docu/search/enums_2.js b/docu/search/enums_2.js new file mode 100644 index 0000000..00380a9 --- /dev/null +++ b/docu/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['distanceresolution_0',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]] +]; diff --git a/docu/search/enums_3.js b/docu/search/enums_3.js new file mode 100644 index 0000000..7166abd --- /dev/null +++ b/docu/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lightcontrol_0',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]] +]; diff --git a/docu/search/enums_4.js b/docu/search/enums_4.js new file mode 100644 index 0000000..a0866bb --- /dev/null +++ b/docu/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['outputcontrol_0',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]] +]; diff --git a/docu/search/enums_5.js b/docu/search/enums_5.js new file mode 100644 index 0000000..3addeeb --- /dev/null +++ b/docu/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['targetstate_0',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_0.js b/docu/search/enumvalues_0.js new file mode 100644 index 0000000..bbbe97c --- /dev/null +++ b/docu/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['autoconfig_5ffailed_0',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_1',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_2',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_1.js b/docu/search/enumvalues_1.js new file mode 100644 index 0000000..ddcfa73 --- /dev/null +++ b/docu/search/enumvalues_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['baudrate_5f115200_0',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_1',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_2',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_3',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_4',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_5',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_6',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_7',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_2.js b/docu/search/enumvalues_2.js new file mode 100644 index 0000000..0733392 --- /dev/null +++ b/docu/search/enumvalues_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['completed_1',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_3.js b/docu/search/enumvalues_3.js new file mode 100644 index 0000000..8b70985 --- /dev/null +++ b/docu/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['default_5fhigh_5fdetected_5flow_0',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_1',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_4.js b/docu/search/enumvalues_4.js new file mode 100644 index 0000000..b56eb90 --- /dev/null +++ b/docu/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] +]; diff --git a/docu/search/enumvalues_5.js b/docu/search/enumvalues_5.js new file mode 100644 index 0000000..44c5705 --- /dev/null +++ b/docu/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_6.js b/docu/search/enumvalues_6.js new file mode 100644 index 0000000..1a51ac3 --- /dev/null +++ b/docu/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['light_5fabove_5fthreshold_0',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_1',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_7.js b/docu/search/enumvalues_7.js new file mode 100644 index 0000000..e31e54e --- /dev/null +++ b/docu/search/enumvalues_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['moving_5fand_5fstationary_5ftarget_0',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_1',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_8.js b/docu/search/enumvalues_8.js new file mode 100644 index 0000000..ca364ab --- /dev/null +++ b/docu/search/enumvalues_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_1',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['not_5fin_5fprogress_2',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_3',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]] +]; diff --git a/docu/search/enumvalues_9.js b/docu/search/enumvalues_9.js new file mode 100644 index 0000000..3180f2c --- /dev/null +++ b/docu/search/enumvalues_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['resolution_5f20cm_0',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_1',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]] +]; diff --git a/docu/search/enumvalues_a.js b/docu/search/enumvalues_a.js new file mode 100644 index 0000000..5cb9cc1 --- /dev/null +++ b/docu/search/enumvalues_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stationary_5ftarget_0',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['success_1',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] +]; diff --git a/docu/search/enumvalues_b.js b/docu/search/enumvalues_b.js new file mode 100644 index 0000000..c466cc0 --- /dev/null +++ b/docu/search/enumvalues_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timeout_0',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] +]; diff --git a/docu/search/files_0.js b/docu/search/files_0.js new file mode 100644 index 0000000..5eb1c6f --- /dev/null +++ b/docu/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basicpresencedetection_2eino_0',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]] +]; diff --git a/docu/search/files_1.js b/docu/search/files_1.js new file mode 100644 index 0000000..b9d2810 --- /dev/null +++ b/docu/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['changeconfig_2eino_0',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], + ['changedistanceresolution_2eino_1',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]] +]; diff --git a/docu/search/files_2.js b/docu/search/files_2.js new file mode 100644 index 0000000..a2d31b9 --- /dev/null +++ b/docu/search/files_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ld2410async_2ecpp_0',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], + ['ld2410async_2eh_1',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], + ['ld2410commandbuilder_2eh_2',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], + ['ld2410debug_2eh_3',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], + ['ld2410defs_2eh_4',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], + ['ld2410types_2eh_5',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]] +]; diff --git a/docu/search/files_3.js b/docu/search/files_3.js new file mode 100644 index 0000000..2f336a6 --- /dev/null +++ b/docu/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['receivedata_2eino_0',['receiveData.ino',['../receiveData_8ino.html',1,'']]] +]; diff --git a/docu/search/functions_0.js b/docu/search/functions_0.js new file mode 100644 index 0000000..0d75dd8 --- /dev/null +++ b/docu/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['asynccancel_0',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asyncisbusy_1',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_1.js b/docu/search/functions_1.js new file mode 100644 index 0000000..0818f99 --- /dev/null +++ b/docu/search/functions_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['begin_0',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_1',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['bufferendswith_2',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], + ['buildauxcontrolcommand_3',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], + ['buildbaudratecommand_4',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], + ['buildbluetoothpasswordcommand_5',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], + ['builddistanceresolutioncommand_6',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], + ['buildgatesensitivitycommand_7',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], + ['buildmaxgatecommand_8',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], + ['byte2hex_9',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] +]; diff --git a/docu/search/functions_2.js b/docu/search/functions_2.js new file mode 100644 index 0000000..cf88833 --- /dev/null +++ b/docu/search/functions_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['configureallconfigsettingsasync_0',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_1',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_2',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_3',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_4',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_5',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_6',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_7',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_8',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_9',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_3.js b/docu/search/functions_3.js new file mode 100644 index 0000000..072953d --- /dev/null +++ b/docu/search/functions_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['disablebluetoothasync_0',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_1',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_3',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_4.js b/docu/search/functions_4.js new file mode 100644 index 0000000..4151ded --- /dev/null +++ b/docu/search/functions_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['enablebluetoothasync_0',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_1',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_3',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_4',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['equals_5',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/functions_5.js b/docu/search/functions_5.js new file mode 100644 index 0000000..7a0cce8 --- /dev/null +++ b/docu/search/functions_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['getasynccommandtimeoutms_0',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['getconfigdata_1',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_2',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_3',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_4',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_6.js b/docu/search/functions_6.js new file mode 100644 index 0000000..8c8e0e6 --- /dev/null +++ b/docu/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['isconfigmodeenabled_0',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isvalid_3',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] +]; diff --git a/docu/search/functions_7.js b/docu/search/functions_7.js new file mode 100644 index 0000000..92323e6 --- /dev/null +++ b/docu/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ld2410async_0',['LD2410Async',['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_8.js b/docu/search/functions_8.js new file mode 100644 index 0000000..bec462b --- /dev/null +++ b/docu/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['print_0',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]] +]; diff --git a/docu/search/functions_9.js b/docu/search/functions_9.js new file mode 100644 index 0000000..237074f --- /dev/null +++ b/docu/search/functions_9.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['rebootasync_0',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestauxcontrolsettingsasync_7',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestbluetoothmacaddressasync_8',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_9',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestfirmwareasync_10',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestgateparametersasync_11',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['restorefactorysettingsasync_12',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]] +]; diff --git a/docu/search/functions_a.js b/docu/search/functions_a.js new file mode 100644 index 0000000..4246c3c --- /dev/null +++ b/docu/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['setinactivityhandling_1',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] +]; diff --git a/docu/search/mag.svg b/docu/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/docu/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docu/search/mag_d.svg b/docu/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docu/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docu/search/mag_sel.svg b/docu/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/docu/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docu/search/mag_seld.svg b/docu/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docu/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docu/search/namespaces_0.js b/docu/search/namespaces_0.js new file mode 100644 index 0000000..b11edbb --- /dev/null +++ b/docu/search/namespaces_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ld2410commandbuilder_0',['LD2410CommandBuilder',['../namespaceLD2410CommandBuilder.html',1,'']]], + ['ld2410defs_1',['LD2410Defs',['../namespaceLD2410Defs.html',1,'']]], + ['ld2410types_2',['LD2410Types',['../namespaceLD2410Types.html',1,'']]] +]; diff --git a/docu/search/search.css b/docu/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/docu/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docu/search/search.js b/docu/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/docu/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docu/splitbard.png b/docu/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docu/structLD2410Types_1_1ConfigData-members.html b/docu/structLD2410Types_1_1ConfigData-members.html new file mode 100644 index 0000000..9f5a06c --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData-members.html @@ -0,0 +1,128 @@ + + + + + + + +LD2410Async: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/docu/structLD2410Types_1_1ConfigData.html b/docu/structLD2410Types_1_1ConfigData.html new file mode 100644 index 0000000..221b8b2 --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData.html @@ -0,0 +1,552 @@ + + + + + + + +LD2410Async: LD2410Types::ConfigData Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LD2410Types::ConfigData Struct Reference
    +
    +
    + +

    Stores the sensor’s configuration parameters. + More...

    + +

    #include <LD2410Types.h>

    + + + + + + + + + + + +

    +Public Member Functions

    bool isValid () const
     Validates the configuration data for correctness.
     
    bool equals (const ConfigData &other) const
     Compares this ConfigData with another for equality.
     
    void print () const
     Debug helper: print configuration contents to Serial.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    byte numberOfGates = 0
     Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
     
    byte maxMotionDistanceGate = 0
     Furthest gate used for motion detection.
     
    byte maxStationaryDistanceGate = 0
     Furthest gate used for stationary detection.
     
    byte distanceGateMotionSensitivity [9] = { 0 }
     Motion sensitivity values per gate (0–100).
     
    byte distanceGateStationarySensitivity [9] = { 0 }
     Stationary sensitivity values per gate (0–100).
     
    unsigned short noOneTimeout = 0
     Timeout (seconds) until "no presence" is declared.
     
    DistanceResolution distanceResolution = DistanceResolution::NOT_SET
     Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
     
    byte lightThreshold = 0
     Threshold for auxiliary light control (0–255).
     
    LightControl lightControl = LightControl::NOT_SET
     Light-dependent auxiliary control mode.
     
    OutputControl outputControl = OutputControl::NOT_SET
     Logic configuration of the OUT pin.
     
    +

    Detailed Description

    +

    Stores the sensor’s configuration parameters.

    +

    This structure represents both static capabilities (e.g. number of gates) and configurable settings (e.g. sensitivities, timeouts, resolution).

    +

    The values are typically filled by request commands such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().

    + +

    Definition at line 341 of file LD2410Types.h.

    +

    Member Function Documentation

    + +

    ◆ equals()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Types::ConfigData::equals (const ConfigData & other) const
    +
    +inline
    +
    + +

    Compares this ConfigData with another for equality.

    +
    Parameters
    + + +
    otherThe other ConfigData instance to compare against.
    +
    +
    +
    Returns
    True if all fields are equal, false otherwise.
    + +

    Definition at line 401 of file LD2410Types.h.

    +
    401 {
    +
    402 if (numberOfGates != other.numberOfGates) return false;
    +
    403 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
    +
    404 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
    +
    405 if (noOneTimeout != other.noOneTimeout) return false;
    +
    406 if (distanceResolution != other.distanceResolution) return false;
    +
    407 if (lightThreshold != other.lightThreshold) return false;
    +
    408 if (lightControl != other.lightControl) return false;
    +
    409 if (outputControl != other.outputControl) return false;
    +
    410
    +
    411 for (int i = 0; i < 9; i++) {
    +
    412 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
    +
    413 if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false;
    +
    414 }
    +
    415 return true;
    +
    416 }
    +
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    +
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    +
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    +
    OutputControl outputControl
    Logic configuration of the OUT pin.
    +
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    +
    LightControl lightControl
    Light-dependent auxiliary control mode.
    +
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    +
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    +
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    +
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    +
    +
    +
    + +

    ◆ isValid()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Types::ConfigData::isValid () const
    +
    +inline
    +
    + +

    Validates the configuration data for correctness.

    +

    Ensures that enum values are set and values are within valid ranges. This method is called internally before applying a config via configureAllConfigSettingsAsync().

    +
    Returns
    True if the configuration is valid, false otherwise.
    + +

    Definition at line 376 of file LD2410Types.h.

    +
    376 {
    +
    377 // Validate enum settings
    + +
    379 if (lightControl == LightControl::NOT_SET) return false;
    +
    380 if (outputControl == OutputControl::NOT_SET) return false;
    +
    381
    +
    382 // Validate max distance gates
    + + +
    385
    +
    386 // Validate sensitivities
    +
    387 for (int i = 0; i < 9; i++) {
    +
    388 if (distanceGateMotionSensitivity[i] > 100) return false;
    +
    389 if (distanceGateStationarySensitivity[i] > 100) return false;
    +
    390 }
    +
    391
    +
    392 return true;
    +
    393 }
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Types::ConfigData::print () const
    +
    +inline
    +
    + +

    Debug helper: print configuration contents to Serial.

    + +

    Definition at line 421 of file LD2410Types.h.

    +
    421 {
    +
    422 Serial.println("=== ConfigData ===");
    +
    423
    +
    424 Serial.print(" Number of Gates: ");
    +
    425 Serial.println(numberOfGates);
    +
    426
    +
    427 Serial.print(" Max Motion Distance Gate: ");
    +
    428 Serial.println(maxMotionDistanceGate);
    +
    429
    +
    430 Serial.print(" Max Stationary Distance Gate: ");
    +
    431 Serial.println(maxStationaryDistanceGate);
    +
    432
    +
    433 Serial.print(" Motion Sensitivity: ");
    +
    434 for (int i = 0; i < 9; i++) {
    +
    435 Serial.print(distanceGateMotionSensitivity[i]);
    +
    436 if (i < 8) Serial.print(",");
    +
    437 }
    +
    438 Serial.println();
    +
    439
    +
    440 Serial.print(" Stationary Sensitivity: ");
    +
    441 for (int i = 0; i < 9; i++) {
    +
    442 Serial.print(distanceGateStationarySensitivity[i]);
    +
    443 if (i < 8) Serial.print(",");
    +
    444 }
    +
    445 Serial.println();
    +
    446
    +
    447 Serial.print(" No One Timeout: ");
    +
    448 Serial.println(noOneTimeout);
    +
    449
    +
    450 Serial.print(" Distance Resolution: ");
    +
    451 Serial.println(static_cast<int>(distanceResolution));
    +
    452
    +
    453 Serial.print(" Light Threshold: ");
    +
    454 Serial.println(lightThreshold);
    +
    455
    +
    456 Serial.print(" Light Control: ");
    +
    457 Serial.println(static_cast<int>(lightControl));
    +
    458
    +
    459 Serial.print(" Output Control: ");
    +
    460 Serial.println(static_cast<int>(outputControl));
    +
    461
    +
    462 Serial.println("===================");
    +
    463 }
    +
    +
    +
    +

    Member Data Documentation

    + +

    ◆ distanceGateMotionSensitivity

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::distanceGateMotionSensitivity[9] = { 0 }
    +
    + +

    Motion sensitivity values per gate (0–100).

    + +

    Definition at line 350 of file LD2410Types.h.

    +
    350{ 0 }; ///< Motion sensitivity values per gate (0–100).
    +
    +
    +
    + +

    ◆ distanceGateStationarySensitivity

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::distanceGateStationarySensitivity[9] = { 0 }
    +
    + +

    Stationary sensitivity values per gate (0–100).

    + +

    Definition at line 351 of file LD2410Types.h.

    +
    351{ 0 }; ///< Stationary sensitivity values per gate (0–100).
    +
    +
    +
    + +

    ◆ distanceResolution

    + +
    +
    + + + + +
    DistanceResolution LD2410Types::ConfigData::distanceResolution = DistanceResolution::NOT_SET
    +
    + +

    Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.

    + +

    Definition at line 357 of file LD2410Types.h.

    + +
    +
    + +

    ◆ lightControl

    + +
    +
    + + + + +
    LightControl LD2410Types::ConfigData::lightControl = LightControl::NOT_SET
    +
    + +

    Light-dependent auxiliary control mode.

    + +

    Definition at line 361 of file LD2410Types.h.

    + +
    +
    + +

    ◆ lightThreshold

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::lightThreshold = 0
    +
    + +

    Threshold for auxiliary light control (0–255).

    + +

    Definition at line 360 of file LD2410Types.h.

    + +
    +
    + +

    ◆ maxMotionDistanceGate

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::maxMotionDistanceGate = 0
    +
    + +

    Furthest gate used for motion detection.

    + +

    Definition at line 346 of file LD2410Types.h.

    + +
    +
    + +

    ◆ maxStationaryDistanceGate

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::maxStationaryDistanceGate = 0
    +
    + +

    Furthest gate used for stationary detection.

    + +

    Definition at line 347 of file LD2410Types.h.

    + +
    +
    + +

    ◆ noOneTimeout

    + +
    +
    + + + + +
    unsigned short LD2410Types::ConfigData::noOneTimeout = 0
    +
    + +

    Timeout (seconds) until "no presence" is declared.

    + +

    Definition at line 354 of file LD2410Types.h.

    + +
    +
    + +

    ◆ numberOfGates

    + +
    +
    + + + + +
    byte LD2410Types::ConfigData::numberOfGates = 0
    +
    + +

    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.

    + +

    Definition at line 343 of file LD2410Types.h.

    + +
    +
    + +

    ◆ outputControl

    + +
    +
    + + + + +
    OutputControl LD2410Types::ConfigData::outputControl = OutputControl::NOT_SET
    +
    + +

    Logic configuration of the OUT pin.

    + +

    Definition at line 362 of file LD2410Types.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docu/structLD2410Types_1_1ConfigData.js b/docu/structLD2410Types_1_1ConfigData.js new file mode 100644 index 0000000..26278ed --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData.js @@ -0,0 +1,16 @@ +var structLD2410Types_1_1ConfigData = +[ + [ "equals", "structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028", null ], + [ "isValid", "structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885", null ], + [ "print", "structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624", null ], + [ "distanceGateMotionSensitivity", "structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c", null ], + [ "distanceGateStationarySensitivity", "structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8", null ], + [ "distanceResolution", "structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06", null ], + [ "lightControl", "structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7", null ], + [ "lightThreshold", "structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88", null ], + [ "maxMotionDistanceGate", "structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382", null ], + [ "maxStationaryDistanceGate", "structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6", null ], + [ "noOneTimeout", "structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf", null ], + [ "numberOfGates", "structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589", null ], + [ "outputControl", "structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87", null ] +]; \ No newline at end of file diff --git a/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.map b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.map new file mode 100644 index 0000000..bbac304 --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.md5 b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.md5 new file mode 100644 index 0000000..d96680e --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.md5 @@ -0,0 +1 @@ +bf4d74acb950dd2c912316a712648085 \ No newline at end of file diff --git a/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.svg b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.svg new file mode 100644 index 0000000..48c0b2e --- /dev/null +++ b/docu/structLD2410Types_1_1ConfigData_a78c2665adcc382224455dfde7f05b885_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Types::ConfigData::isValid + + +Node1 + + +LD2410Types::ConfigData +::isValid + + + + + +Node2 + + +LD2410Async::configureAll +ConfigSettingsAsync + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/structLD2410Types_1_1DetectionData-members.html b/docu/structLD2410Types_1_1DetectionData-members.html new file mode 100644 index 0000000..4e2b224 --- /dev/null +++ b/docu/structLD2410Types_1_1DetectionData-members.html @@ -0,0 +1,133 @@ + + + + + + + +LD2410Async: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/docu/structLD2410Types_1_1DetectionData.html b/docu/structLD2410Types_1_1DetectionData.html new file mode 100644 index 0000000..2cf8e16 --- /dev/null +++ b/docu/structLD2410Types_1_1DetectionData.html @@ -0,0 +1,604 @@ + + + + + + + +LD2410Async: LD2410Types::DetectionData Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LD2410Types::DetectionData Struct Reference
    +
    +
    + +

    Holds the most recent detection data reported by the radar. + More...

    + +

    #include <LD2410Types.h>

    + + + + + +

    +Public Member Functions

    void print () const
     Debug helper: print detection data contents to Serial.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    unsigned long timestamp = 0
     Timestamp (ms since boot) when this data was received.
     
    bool engineeringMode = false
     True if engineering mode data was received.
     
    bool presenceDetected = false
     True if any target is detected.
     
    bool movingPresenceDetected = false
     True if a moving target is detected.
     
    bool stationaryPresenceDetected = false
     True if a stationary target is detected.
     
    TargetState targetState = TargetState::NO_TARGET
     Current detection state.
     
    unsigned int movingTargetDistance = 0
     Distance (cm) to the nearest moving target.
     
    byte movingTargetSignal = 0
     Signal strength (0–100) of the moving target.
     
    unsigned int stationaryTargetDistance = 0
     Distance (cm) to the nearest stationary target.
     
    byte stationaryTargetSignal = 0
     Signal strength (0–100) of the stationary target.
     
    unsigned int detectedDistance = 0
     General detection distance (cm).
     
    byte movingTargetGateSignalCount = 0
     Number of gates with moving target signals.
     
    byte movingTargetGateSignals [9] = { 0 }
     Per-gate signal strengths for moving targets.
     
    byte stationaryTargetGateSignalCount = 0
     Number of gates with stationary target signals.
     
    byte stationaryTargetGateSignals [9] = { 0 }
     Per-gate signal strengths for stationary targets.
     
    byte lightLevel = 0
     Reported ambient light level (0–255).
     
    bool outPinStatus = 0
     Current status of the OUT pin (true = high, false = low).
     
    +

    Detailed Description

    +

    Holds the most recent detection data reported by the radar.

    +

    This structure is continuously updated as new frames arrive. Values reflect either the basic presence information or, if engineering mode is enabled, per-gate signal details.

    + +

    Definition at line 234 of file LD2410Types.h.

    +

    Member Function Documentation

    + +

    ◆ print()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Types::DetectionData::print () const
    +
    +inline
    +
    + +

    Debug helper: print detection data contents to Serial.

    + +

    Definition at line 267 of file LD2410Types.h.

    +
    267 {
    +
    268 Serial.println("=== DetectionData ===");
    +
    269
    +
    270 Serial.print(" Timestamp: ");
    +
    271 Serial.println(timestamp);
    +
    272
    +
    273 Serial.print(" Engineering Mode: ");
    +
    274 Serial.println(engineeringMode ? "Yes" : "No");
    +
    275
    +
    276 Serial.print(" Target State: ");
    +
    277 Serial.println(static_cast<int>(targetState));
    +
    278
    +
    279 Serial.print(" Moving Target Distance (cm): ");
    +
    280 Serial.println(movingTargetDistance);
    +
    281
    +
    282 Serial.print(" Moving Target Signal: ");
    +
    283 Serial.println(movingTargetSignal);
    +
    284
    +
    285 Serial.print(" Stationary Target Distance (cm): ");
    +
    286 Serial.println(stationaryTargetDistance);
    +
    287
    +
    288 Serial.print(" Stationary Target Signal: ");
    +
    289 Serial.println(stationaryTargetSignal);
    +
    290
    +
    291 Serial.print(" Detected Distance (cm): ");
    +
    292 Serial.println(detectedDistance);
    +
    293
    +
    294 Serial.print(" Light Level: ");
    +
    295 Serial.println(lightLevel);
    +
    296
    +
    297 Serial.print(" OUT Pin Status: ");
    +
    298 Serial.println(outPinStatus ? "High" : "Low");
    +
    299
    +
    300 // --- Engineering mode fields ---
    +
    301 if (engineeringMode) {
    +
    302 Serial.println(" --- Engineering Mode Data ---");
    +
    303
    +
    304 Serial.print(" Moving Target Gate Signal Count: ");
    +
    305 Serial.println(movingTargetGateSignalCount);
    +
    306
    +
    307 Serial.print(" Moving Target Gate Signals: ");
    +
    308 for (int i = 0; i < movingTargetGateSignalCount; i++) {
    +
    309 Serial.print(movingTargetGateSignals[i]);
    +
    310 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
    +
    311 }
    +
    312 Serial.println();
    +
    313
    +
    314 Serial.print(" Stationary Target Gate Signal Count: ");
    +
    315 Serial.println(stationaryTargetGateSignalCount);
    +
    316
    +
    317 Serial.print(" Stationary Target Gate Signals: ");
    +
    318 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
    +
    319 Serial.print(stationaryTargetGateSignals[i]);
    +
    320 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
    +
    321 }
    +
    322 Serial.println();
    +
    323 }
    +
    324
    +
    325 Serial.println("======================");
    +
    326 }
    +
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    +
    bool engineeringMode
    True if engineering mode data was received.
    +
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    +
    byte lightLevel
    Reported ambient light level (0–255).
    +
    unsigned int detectedDistance
    General detection distance (cm).
    +
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    +
    TargetState targetState
    Current detection state.
    +
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    +
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    +
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    +
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    +
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    +
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    +
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    +
    +
    +
    +

    Member Data Documentation

    + +

    ◆ detectedDistance

    + +
    +
    + + + + +
    unsigned int LD2410Types::DetectionData::detectedDistance = 0
    +
    + +

    General detection distance (cm).

    + +

    Definition at line 251 of file LD2410Types.h.

    + +
    +
    + +

    ◆ engineeringMode

    + +
    +
    + + + + +
    bool LD2410Types::DetectionData::engineeringMode = false
    +
    + +

    True if engineering mode data was received.

    + +

    Definition at line 240 of file LD2410Types.h.

    + +
    +
    + +

    ◆ lightLevel

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::lightLevel = 0
    +
    + +

    Reported ambient light level (0–255).

    + +

    Definition at line 260 of file LD2410Types.h.

    + +
    +
    + +

    ◆ movingPresenceDetected

    + +
    +
    + + + + +
    bool LD2410Types::DetectionData::movingPresenceDetected = false
    +
    + +

    True if a moving target is detected.

    + +

    Definition at line 243 of file LD2410Types.h.

    + +
    +
    + +

    ◆ movingTargetDistance

    + +
    +
    + + + + +
    unsigned int LD2410Types::DetectionData::movingTargetDistance = 0
    +
    + +

    Distance (cm) to the nearest moving target.

    + +

    Definition at line 247 of file LD2410Types.h.

    + +
    +
    + +

    ◆ movingTargetGateSignalCount

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::movingTargetGateSignalCount = 0
    +
    + +

    Number of gates with moving target signals.

    + +

    Definition at line 254 of file LD2410Types.h.

    + +
    +
    + +

    ◆ movingTargetGateSignals

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::movingTargetGateSignals[9] = { 0 }
    +
    + +

    Per-gate signal strengths for moving targets.

    + +

    Definition at line 255 of file LD2410Types.h.

    +
    255{ 0 }; ///< Per-gate signal strengths for moving targets.
    +
    +
    +
    + +

    ◆ movingTargetSignal

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::movingTargetSignal = 0
    +
    + +

    Signal strength (0–100) of the moving target.

    + +

    Definition at line 248 of file LD2410Types.h.

    + +
    +
    + +

    ◆ outPinStatus

    + +
    +
    + + + + +
    bool LD2410Types::DetectionData::outPinStatus = 0
    +
    + +

    Current status of the OUT pin (true = high, false = low).

    + +

    Definition at line 261 of file LD2410Types.h.

    + +
    +
    + +

    ◆ presenceDetected

    + +
    +
    + + + + +
    bool LD2410Types::DetectionData::presenceDetected = false
    +
    + +

    True if any target is detected.

    + +

    Definition at line 242 of file LD2410Types.h.

    + +
    +
    + +

    ◆ stationaryPresenceDetected

    + +
    +
    + + + + +
    bool LD2410Types::DetectionData::stationaryPresenceDetected = false
    +
    + +

    True if a stationary target is detected.

    + +

    Definition at line 244 of file LD2410Types.h.

    + +
    +
    + +

    ◆ stationaryTargetDistance

    + +
    +
    + + + + +
    unsigned int LD2410Types::DetectionData::stationaryTargetDistance = 0
    +
    + +

    Distance (cm) to the nearest stationary target.

    + +

    Definition at line 249 of file LD2410Types.h.

    + +
    +
    + +

    ◆ stationaryTargetGateSignalCount

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::stationaryTargetGateSignalCount = 0
    +
    + +

    Number of gates with stationary target signals.

    + +

    Definition at line 257 of file LD2410Types.h.

    + +
    +
    + +

    ◆ stationaryTargetGateSignals

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::stationaryTargetGateSignals[9] = { 0 }
    +
    + +

    Per-gate signal strengths for stationary targets.

    + +

    Definition at line 258 of file LD2410Types.h.

    +
    258{ 0 }; ///< Per-gate signal strengths for stationary targets.
    +
    +
    +
    + +

    ◆ stationaryTargetSignal

    + +
    +
    + + + + +
    byte LD2410Types::DetectionData::stationaryTargetSignal = 0
    +
    + +

    Signal strength (0–100) of the stationary target.

    + +

    Definition at line 250 of file LD2410Types.h.

    + +
    +
    + +

    ◆ targetState

    + +
    +
    + + + + +
    TargetState LD2410Types::DetectionData::targetState = TargetState::NO_TARGET
    +
    + +

    Current detection state.

    + +

    Definition at line 246 of file LD2410Types.h.

    + +
    +
    + +

    ◆ timestamp

    + +
    +
    + + + + +
    unsigned long LD2410Types::DetectionData::timestamp = 0
    +
    + +

    Timestamp (ms since boot) when this data was received.

    + +

    Definition at line 236 of file LD2410Types.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docu/structLD2410Types_1_1DetectionData.js b/docu/structLD2410Types_1_1DetectionData.js new file mode 100644 index 0000000..02278d9 --- /dev/null +++ b/docu/structLD2410Types_1_1DetectionData.js @@ -0,0 +1,21 @@ +var structLD2410Types_1_1DetectionData = +[ + [ "print", "structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca", null ], + [ "detectedDistance", "structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507", null ], + [ "engineeringMode", "structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7", null ], + [ "lightLevel", "structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c", null ], + [ "movingPresenceDetected", "structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81", null ], + [ "movingTargetDistance", "structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6", null ], + [ "movingTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96", null ], + [ "movingTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696", null ], + [ "movingTargetSignal", "structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a", null ], + [ "outPinStatus", "structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2", null ], + [ "presenceDetected", "structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023", null ], + [ "stationaryPresenceDetected", "structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad", null ], + [ "stationaryTargetDistance", "structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317", null ], + [ "stationaryTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1", null ], + [ "stationaryTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b", null ], + [ "stationaryTargetSignal", "structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73", null ], + [ "targetState", "structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7", null ], + [ "timestamp", "structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d", null ] +]; \ No newline at end of file diff --git a/docu/sync_off.png b/docu/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docu/sync_on.png b/docu/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docu/tab_a.png b/docu/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docu/tab_ad.png b/docu/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docu/tab_s.png b/docu/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docu/tab_sd.png b/docu/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docu/tabs.css b/docu/tabs.css new file mode 100644 index 0000000..7fa4268 --- /dev/null +++ b/docu/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} From 5aec2ffe7196d56815104b30d631526251656cc2 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 14:54:04 +0200 Subject: [PATCH 018/114] Groups added to docu --- Doxyfile | 2 + src/LD2410Async.h | 155 +++++++++++++++++++++++++++------------------- 2 files changed, 95 insertions(+), 62 deletions(-) diff --git a/Doxyfile b/Doxyfile index 623f529..5e8253d 100644 --- a/Doxyfile +++ b/Doxyfile @@ -12,6 +12,8 @@ EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_ANON_NSPACES = YES +SORT_MEMBER_DOCS = YES +SORT_GROUP_NAMES = YES # Input INPUT = src examples diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 5a43b1d..5e18750 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -14,6 +14,8 @@ /** * @brief Asynchronous driver for the LD2410 human presence radar sensor. * + * @mainpage + * @section intro_sec Introduction * The LD2410 is a mmWave radar sensor capable of detecting both moving and * stationary targets, reporting presence, distance, and per-gate signal strength. * This class implements a non-blocking, asynchronous interface for communicating @@ -85,14 +87,17 @@ class LD2410Async { public: - - - /** - * @brief Result of an asynchronous command execution. - * - * Every async command reports back its outcome via the callback. + /** @defgroup LD2410Async_Types Types And Callbacks + * Public types , enums and callback definitions + * @{ */ - enum class AsyncCommandResult: byte { + + /** + * @brief Result of an asynchronous command execution. + * + * Every async command reports back its outcome via the callback. + */ + enum class AsyncCommandResult : byte { SUCCESS, ///< Command completed successfully and ACK was received. FAILED, ///< Command failed (sensor responded with negative ACK). TIMEOUT, ///< No ACK received within the expected time window. @@ -135,24 +140,30 @@ class LD2410Async { - + /** @} */ // end of LD2410Async_Types public: - /** - * @brief Latest detection results from the radar. - * - * Updated automatically whenever new data frames are received. - * Use registerDetectionDataReceivedCallback() to be notified - * whenever this struct changes. - * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. - */ + /** @defgroup LD2410Async_Data Public Data Members + * Public data structures and variables. + * @{ + */ + + + /** + * @brief Latest detection results from the radar. + * + * Updated automatically whenever new data frames are received. + * Use registerDetectionDataReceivedCallback() to be notified + * whenever this struct changes. + * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. + */ LD2410Types::DetectionData detectionData; /** * @brief Current configuration parameters of the radar. * * Filled when configuration query commands are issued - * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). + * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly. * @@ -224,28 +235,32 @@ class LD2410Async { * Updated by requestAutoConfigStatusAsync(). */ LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET; + /** @} */ // end of LD2410Async_Data + /** @defgroup LD2410Async_Lifecycle Constructor & Basic Methods + * Constructor and basic start/stop methods. + * @{ + */ + /********************************************************************************** + * Constrcutor + ***********************************************************************************/ - /********************************************************************************** - * Constrcutor - ***********************************************************************************/ - - /** - * @brief Constructs a new LD2410Async instance bound to a given serial stream. - * - * The sensor communicates over a UART interface. Pass the corresponding - * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible - * implementation) that is connected to the LD2410 sensor. - * - * Example: - * @code - * HardwareSerial radarSerial(2); - * LD2410Async radar(radarSerial); - * @endcode - * - * @param serial Reference to a Stream object used to exchange data with the sensor. - */ + /** + * @brief Constructs a new LD2410Async instance bound to a given serial stream. + * + * The sensor communicates over a UART interface. Pass the corresponding + * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible + * implementation) that is connected to the LD2410 sensor. + * + * Example: + * @code + * HardwareSerial radarSerial(2); + * LD2410Async radar(radarSerial); + * @endcode + * + * @param serial Reference to a Stream object used to exchange data with the sensor. + */ LD2410Async(Stream& serial); /********************************************************************************** @@ -272,25 +287,33 @@ class LD2410Async { */ bool end(); - /********************************************************************************** - * Inactivity handling - ***********************************************************************************/ - /** - * @brief Enables or disables automatic inactivity handling of the sensor. - * - * When inactivity handling is enabled, the library continuously monitors the time - * since the last activity (received data or command ACK). If no activity is detected - * for a longer period (defined by activityTimeoutMs), the library will attempt to - * recover the sensor automatically: - * 1. It first tries to exit config mode (even if configModeEnabled is false). - * 2. If no activity is restored within 5 seconds after leaving config mode, - * the library reboots the sensor. - * - * This helps recover the sensor from rare cases where it gets "stuck" - * in config mode or stops sending data. - * - * @param enable Pass true to enable inactivity handling, false to disable it. - */ + /** @} */ // end of LD2410Async_Lifecycle + + /********************************************************************************** + * Inactivity handling + ***********************************************************************************/ + + /** @defgroup LD2410Async_Inactivity Inactivity Handling + * Methods for automatic inactivity detection and recovery. + * @{ + */ + + /** + * @brief Enables or disables automatic inactivity handling of the sensor. + * + * When inactivity handling is enabled, the library continuously monitors the time + * since the last activity (received data or command ACK). If no activity is detected + * for a longer period (defined by activityTimeoutMs), the library will attempt to + * recover the sensor automatically: + * 1. It first tries to exit config mode (even if configModeEnabled is false). + * 2. If no activity is restored within 5 seconds after leaving config mode, + * the library reboots the sensor. + * + * This helps recover the sensor from rare cases where it gets "stuck" + * in config mode or stops sending data. + * + * @param enable Pass true to enable inactivity handling, false to disable it. + */ void setInactivityHandling(bool enable); /** @@ -334,11 +357,17 @@ class LD2410Async { */ unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; }; + /** @} */ // end of LD2410Async_Inactivity + /********************************************************************************** * Callback registration methods ***********************************************************************************/ + /** @defgroup LD2410Async_Callbacks Callback Registration + * Registrierung von Callback-Funktionen. + * @{ + */ - /** + /** * @brief Registers a callback for new detection data. * * The callback is invoked whenever a valid data frame is received @@ -374,6 +403,8 @@ class LD2410Async { */ void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0); + /** @} */ // end of LD2410Async_Callbacks + /********************************************************************************** * Detection and config data access commands ***********************************************************************************/ @@ -679,7 +710,7 @@ class LD2410Async { /** * @brief Configures the maximum detection gates and "no-one" timeout on the sensor. - * + * * This command updates: * - Maximum motion detection distance gate (2–8). * - Maximum stationary detection distance gate (2–8). @@ -917,7 +948,7 @@ class LD2410Async { * @note Requires config mode. Will be managed automatically. * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. * @note Fails if another async command is pending. - * + * * @param callback Function pointer with signature: * void(LD2410Async* sender, AsyncCommandResult result, byte userData). * @param userData Optional value passed to the callback. @@ -967,7 +998,7 @@ class LD2410Async { * * @note Requires config mode. Will be managed automatically. * @note Both enums must be set to valid values (not NOT_SET). - * @note Fails if another async command is pending. + * @note Fails if another async command is pending. * * @param lightControl Light control behavior (see LightControl enum). * @param lightThreshold Threshold (0–255) used for light-based switching. @@ -1247,9 +1278,9 @@ class LD2410Async { * * @returns true if the command sequence has been started, false otherwise. */ - bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0); + bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0); + - private: // ============================================================================ @@ -1501,5 +1532,5 @@ class LD2410Async { static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData); bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence(); - + }; From 2d0d7c6f6868e0921e7983f508220af314e8d84d Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 12:54:19 +0000 Subject: [PATCH 019/114] Update documentation --- docu/LD2410Async_8cpp_source.html | 292 +- docu/LD2410Async_8h.html | 1 - docu/LD2410Async_8h_source.html | 2989 +++++++++-------- docu/annotated.html | 2 +- docu/classLD2410Async-members.html | 52 +- docu/classLD2410Async.html | 1237 ++----- docu/classLD2410Async.js | 60 +- docu/classLD2410Async__coll__graph.map | 2 +- docu/classLD2410Async__coll__graph.md5 | 2 +- docu/classLD2410Async__coll__graph.svg | 2 +- docu/doxygen_crawl.html | 79 +- docu/functions.html | 52 +- docu/functions_enum.html | 2 +- docu/functions_func.html | 24 +- docu/functions_type.html | 6 +- docu/functions_vars.html | 20 +- docu/group__LD2410Async__Callbacks.html | 242 ++ docu/group__LD2410Async__Callbacks.js | 6 + docu/group__LD2410Async__Data.html | 343 ++ docu/group__LD2410Async__Data.js | 13 + docu/group__LD2410Async__Inactivity.html | 352 ++ docu/group__LD2410Async__Inactivity.js | 9 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map | 5 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 | 1 + ...e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg | 41 + ...30773f7a69dad507caaa636f08fa76_icgraph.map | 7 + ...30773f7a69dad507caaa636f08fa76_icgraph.md5 | 1 + ...30773f7a69dad507caaa636f08fa76_icgraph.svg | 60 + ...6ca514c34bec7957b46395dabb602f2_cgraph.map | 5 + ...6ca514c34bec7957b46395dabb602f2_cgraph.md5 | 1 + ...6ca514c34bec7957b46395dabb602f2_cgraph.svg | 41 + docu/group__LD2410Async__Lifecycle.html | 273 ++ docu/group__LD2410Async__Lifecycle.js | 6 + docu/group__LD2410Async__Types.html | 267 ++ docu/group__LD2410Async__Types.js | 12 + docu/index.html | 69 +- docu/menudata.js | 1 + docu/namespaceLD2410Types.html | 2 +- docu/navtreedata.js | 11 +- docu/navtreeindex0.js | 498 +-- docu/navtreeindex1.js | 252 +- docu/search/all_0.js | 33 +- docu/search/all_1.js | 55 +- docu/search/all_10.js | 5 +- docu/search/all_11.js | 2 +- docu/search/all_13.js | 4 +- docu/search/all_2.js | 65 +- docu/search/all_3.js | 59 +- docu/search/all_4.js | 10 +- docu/search/all_5.js | 6 +- docu/search/all_6.js | 4 +- docu/search/all_7.js | 5 +- docu/search/all_8.js | 10 +- docu/search/all_9.js | 2 +- docu/search/all_a.js | 24 +- docu/search/all_d.js | 3 +- docu/search/all_e.js | 61 +- docu/search/all_f.js | 6 +- docu/search/enums_0.js | 2 +- docu/search/enumvalues_2.js | 2 +- docu/search/enumvalues_4.js | 2 +- docu/search/enumvalues_a.js | 2 +- docu/search/enumvalues_b.js | 2 +- docu/search/functions_1.js | 2 +- docu/search/functions_3.js | 2 +- docu/search/functions_4.js | 4 +- docu/search/functions_5.js | 2 +- docu/search/functions_6.js | 2 +- docu/search/functions_7.js | 2 +- docu/search/functions_9.js | 6 +- docu/search/functions_a.js | 4 +- docu/search/groups_0.js | 4 + docu/search/groups_1.js | 4 + docu/search/groups_2.js | 6 + docu/search/groups_3.js | 4 + docu/search/groups_4.js | 4 + docu/search/groups_5.js | 4 + docu/search/groups_6.js | 5 + docu/search/groups_7.js | 4 + docu/search/groups_8.js | 4 + docu/search/groups_9.js | 4 + docu/search/pages_0.js | 4 + docu/search/searchdata.js | 12 +- docu/search/typedefs_0.js | 2 +- docu/search/typedefs_1.js | 2 +- docu/search/typedefs_2.js | 2 +- docu/search/variables_0.js | 2 +- docu/search/variables_1.js | 2 +- docu/search/variables_2.js | 4 +- docu/search/variables_3.js | 2 +- docu/search/variables_4.js | 2 +- docu/search/variables_5.js | 2 +- docu/search/variables_9.js | 4 +- docu/search/variables_c.js | 2 +- docu/topics.html | 121 + docu/topics.js | 8 + 96 files changed, 4555 insertions(+), 3387 deletions(-) create mode 100644 docu/group__LD2410Async__Callbacks.html create mode 100644 docu/group__LD2410Async__Callbacks.js create mode 100644 docu/group__LD2410Async__Data.html create mode 100644 docu/group__LD2410Async__Data.js create mode 100644 docu/group__LD2410Async__Inactivity.html create mode 100644 docu/group__LD2410Async__Inactivity.js create mode 100644 docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map create mode 100644 docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 create mode 100644 docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg create mode 100644 docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.map create mode 100644 docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.md5 create mode 100644 docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.svg create mode 100644 docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.map create mode 100644 docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.md5 create mode 100644 docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.svg create mode 100644 docu/group__LD2410Async__Lifecycle.html create mode 100644 docu/group__LD2410Async__Lifecycle.js create mode 100644 docu/group__LD2410Async__Types.html create mode 100644 docu/group__LD2410Async__Types.js create mode 100644 docu/search/groups_0.js create mode 100644 docu/search/groups_1.js create mode 100644 docu/search/groups_2.js create mode 100644 docu/search/groups_3.js create mode 100644 docu/search/groups_4.js create mode 100644 docu/search/groups_5.js create mode 100644 docu/search/groups_6.js create mode 100644 docu/search/groups_7.js create mode 100644 docu/search/groups_8.js create mode 100644 docu/search/groups_9.js create mode 100644 docu/search/pages_0.js create mode 100644 docu/topics.html create mode 100644 docu/topics.js diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html index ae0a814..e5cf004 100644 --- a/docu/LD2410Async_8cpp_source.html +++ b/docu/LD2410Async_8cpp_source.html @@ -305,14 +305,14 @@
    199* Generic Callbacks
    200******************************************************************************************/
    -
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    +
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    202 detectionDataCallback = callback;
    203 detectionDataCallbackUserData = userData;
    204}
    205
    -
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    +
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    207
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    209 configUpdateReceivedReceivedCallback = callback;
    @@ -320,7 +320,7 @@
    211
    -
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    +
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    213 configChangedCallbackUserData = userData;
    214 configChangedCallback = callback;
    215}
    @@ -359,7 +359,7 @@
    248 DEBUG_PRINT("FAIL for command: ");
    249 DEBUG_PRINTLN(byte2hex(command));
    -
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    +
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    251 return false;
    252 };
    253
    @@ -367,14 +367,14 @@
    255 switch (command)
    256 {
    257 case LD2410Defs::configEnableCommand: // entered config mode
    -
    258 configModeEnabled = true;
    -
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    -
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    258 configModeEnabled = true;
    +
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    +
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    262 DEBUG_PRINTLN("ACK for config mode enable received");
    263 break;
    264 case LD2410Defs::configDisableCommand: // exited config mode
    -
    265 configModeEnabled = false;
    +
    265 configModeEnabled = false;
    267 DEBUG_PRINTLN("ACK for config mode disable received");
    268 break;
    @@ -383,12 +383,12 @@
    271 executeConfigChangedCallback();
    272 break;
    - +
    276 DEBUG_PRINTLN("ACK for engineeringModeEnableComand received");
    277 break;
    - +
    281 DEBUG_PRINTLN("ACK for engineeringModeDisableComand received");
    282 break;
    @@ -402,8 +402,8 @@
    290 executeConfigChangedCallback();
    291 break;
    - -
    294 configModeEnabled = false;
    + +
    294 configModeEnabled = false;
    296 DEBUG_PRINTLN("ACK for rebootCommand received");
    297 break;
    @@ -426,7 +426,7 @@
    314 executeConfigChangedCallback();
    315 break;
    -
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    +
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    319 DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received");
    320 executeConfigUpdateReceivedCallback();
    @@ -438,19 +438,19 @@
    326 break;
    328 for (int i = 0; i < 6; i++) {
    -
    329 mac[i] = receiveBuffer[i + 4];
    +
    329 mac[i] = receiveBuffer[i + 4];
    330 };
    - -
    332 + ":" + byte2hex(mac[1])
    -
    333 + ":" + byte2hex(mac[2])
    -
    334 + ":" + byte2hex(mac[3])
    -
    335 + ":" + byte2hex(mac[4])
    -
    336 + ":" + byte2hex(mac[5]);
    + +
    332 + ":" + byte2hex(mac[1])
    +
    333 + ":" + byte2hex(mac[2])
    +
    334 + ":" + byte2hex(mac[3])
    +
    335 + ":" + byte2hex(mac[4])
    +
    336 + ":" + byte2hex(mac[5]);
    338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
    339 break;
    -
    341 firmware = byte2hex(receiveBuffer[7], false)
    +
    341 firmware = byte2hex(receiveBuffer[7], false)
    342 + "." + byte2hex(receiveBuffer[6])
    343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
    @@ -458,9 +458,9 @@
    346 break;
    347
    -
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    -
    350 configData.lightThreshold = receiveBuffer[5];
    -
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    +
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    +
    350 configData.lightThreshold = receiveBuffer[5];
    +
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
    354 executeConfigUpdateReceivedCallback();
    @@ -470,19 +470,19 @@
    358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
    359 break;
    -
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    +
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
    364 break;
    365 case LD2410Defs::requestParamsCommand: // Query parameters
    -
    366 configData.numberOfGates = receiveBuffer[5];
    -
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    -
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    -
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    -
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    -
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    -
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    -
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    +
    366 configData.numberOfGates = receiveBuffer[5];
    +
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    +
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    +
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    +
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    +
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    +
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    +
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
    376 executeConfigUpdateReceivedCallback();
    @@ -500,7 +500,7 @@
    388 };
    389
    390 if (command != 0) {
    -
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    +
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    392 }
    393
    394
    @@ -516,75 +516,75 @@
    404
    405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
    406 {
    -
    407 configModeEnabled = false;
    +
    407 configModeEnabled = false;
    408
    -
    409 detectionData.timestamp = millis();
    +
    409 detectionData.timestamp = millis();
    410 //Basic data
    -
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    -
    412 switch (detectionData.targetState) {
    +
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    +
    412 switch (detectionData.targetState) {
    - - - + + +
    417 break;
    418
    - - - + + +
    423 break;
    424
    - - - + + +
    429 break;
    430 default:
    - - - + + +
    434 break;
    435 }
    -
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    -
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    -
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    -
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    -
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    -
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    +
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    +
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    +
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    +
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    +
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    442
    - +
    444
    - +
    446 { // Engineering mode data
    -
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    - +
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    +
    449
    450
    451 int index = 13;
    -
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    -
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    -
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    -
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    +
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    +
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    +
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    +
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    456
    - - + +
    459 if (index < payloadSize) {
    -
    460 detectionData.lightLevel = receiveBuffer[index++];
    +
    460 detectionData.lightLevel = receiveBuffer[index++];
    461 if (index < payloadSize) {
    -
    462 detectionData.outPinStatus = receiveBuffer[index++];
    +
    462 detectionData.outPinStatus = receiveBuffer[index++];
    463 }
    464 }
    465 }
    466 else
    467 { // Clear engineering mode data
    - - - - + + + +
    472 }
    473
    474 if (detectionDataCallback != nullptr) {
    -
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    +
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    476 };
    477 DEBUG_PRINTLN_DATA("DATA received");
    478 return true;
    @@ -616,7 +616,7 @@
    504/**********************************************************************************
    505* Send async command methods
    506***********************************************************************************/
    -
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    +
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
    509
    @@ -625,7 +625,7 @@
    513
    514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
    515 vTaskSuspendAll();
    -
    516 AsyncCommandCallback cb = asyncCommandCallback;
    +
    516 AsyncCommandCallback cb = asyncCommandCallback;
    517 byte userData = asyncCommandCallbackUserData;
    518 asyncCommandCallback = nullptr;
    519 asyncCommandCallbackUserData = 0;
    @@ -645,7 +645,7 @@
    533
    -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    +
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    536}
    537
    @@ -657,7 +657,7 @@
    543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
    544 DEBUG_PRINT(asyncCommandStartMs);
    545 DEBUG_PRINTLN(". Execute callback with timeout result.");
    -
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    +
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    547 }
    548 }
    549}
    @@ -733,7 +733,7 @@
    617/**********************************************************************************
    618* Async command sequence methods
    619***********************************************************************************/
    -
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    621 if (executeCommandSequenceActive) {
    622
    @@ -741,7 +741,7 @@
    625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
    626
    627 vTaskSuspendAll();
    -
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    +
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    629 byte userData = executeCommandSequenceUserData;
    630 executeCommandSequenceCallback = nullptr;
    631 executeCommandSequenceUserData = 0;
    @@ -756,11 +756,11 @@
    640
    641
    642// Callback after disabling config mode at the end of sequence
    -
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    644
    -
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    +
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    646
    - +
    649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
    650 DEBUG_PRINTLN(result);
    @@ -769,7 +769,7 @@
    653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
    654}
    655
    -
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    +
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    657 if (!executeCommandSequenceInitialConfigModeState) {
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    659 }
    @@ -780,8 +780,8 @@
    664
    665
    666// Called when a single command in the sequence completes
    -
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    669 // Abort sequence if a command fails
    671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
    @@ -804,7 +804,7 @@
    688 else {
    689 // Sequence finished successfully
    690
    -
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    692 }
    693}
    694
    @@ -821,19 +821,19 @@
    705 executeCommandSequenceActive = true;
    706 executeCommandSequenceCallback = callback;
    707 executeCommandSequenceUserData = userData;
    -
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    +
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    709 executeCommandSequenceStartMs = millis();
    710
    711 if (commandSequenceBufferCount == 0) {
    712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
    713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
    -
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    715 });
    716 return true;
    717
    718 }
    719
    -
    720 if (!configModeEnabled) {
    +
    720 if (!configModeEnabled) {
    721 // Need to enable config mode first
    722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
    723 executeCommandSequenceIndex = -1;
    @@ -1272,8 +1272,8 @@
    1100// It uses a first command sequences to get the current sensor config, then checks what
    1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
    1102
    -
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    -
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    +
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
    1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
    1107 configureAllConfigSettingsAsyncConfigActive = false;
    @@ -1288,8 +1288,8 @@
    1116
    1117}
    1118
    -
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
    1123 DEBUG_PRINTLN(result);
    @@ -1301,7 +1301,7 @@
    1129 }
    1130}
    1131
    -
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    +
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    1133
    1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
    @@ -1309,7 +1309,7 @@
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
    -
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    +
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    1141 }
    1142 }
    1143 else {
    @@ -1318,8 +1318,8 @@
    1146}
    1147
    1148
    -
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1150 if (AsyncCommandResult::SUCCESS != result) {
    +
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1150 if (AsyncCommandResult::SUCCESS != result) {
    1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
    1153 };
    @@ -1454,8 +1454,8 @@
    1282
    1283};
    1284
    -
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
    1289 DEBUG_PRINTLN(result);
    @@ -1469,7 +1469,7 @@
    1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
    1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
    -
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1301 }
    1302}
    1303
    @@ -1492,8 +1492,8 @@
    1320 return false;
    1321}
    1322
    -
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1324 if (result != AsyncCommandResult::SUCCESS) {
    +
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1324 if (result != AsyncCommandResult::SUCCESS) {
    1325
    1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
    @@ -1518,7 +1518,7 @@
    1346 if (!ret) {
    1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
    -
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1350 }
    1351
    1352
    @@ -1570,10 +1570,10 @@
    1396//The reboot command is special, since it needs to be sent in config mode,
    1397//but doesnt have to disable config mode, since the sensor goes into normal
    1398//detection mode after the reboot anyway.
    -
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    1401 sender->configModeEnabled = false;
    -
    1402 sender->engineeringModeEnabled = false;
    +
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    1401 sender->configModeEnabled = false;
    +
    1402 sender->engineeringModeEnabled = false;
    1403
    1405 DEBUG_PRINTLN("Reboot initiated");
    @@ -1587,8 +1587,8 @@
    1413
    1414}
    1415
    -
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1418 //Got ack of enable config mode command
    1420 DEBUG_PRINTLN("Config mode enabled before reboot");
    @@ -1622,25 +1622,25 @@
    1446***********************************************************************************/
    1450
    -
    1452 return configData;
    +
    1452 return configData;
    1453}
    1454
    1455/**********************************************************************************
    1456* Inactivity handling
    1457***********************************************************************************/
    -
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1459 sender->configModeEnabled = false;
    -
    1460 sender->engineeringModeEnabled = false;
    +
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1459 sender->configModeEnabled = false;
    +
    1460 sender->engineeringModeEnabled = false;
    1461
    1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1463 if (result == AsyncCommandResult::SUCCESS) {
    +
    1463 if (result == AsyncCommandResult::SUCCESS) {
    1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
    1466 }
    @@ -1654,11 +1654,11 @@
    1474
    1475}
    1476
    -
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    1478
    1479
    1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1481 if (result == AsyncCommandResult::SUCCESS) {
    +
    1481 if (result == AsyncCommandResult::SUCCESS) {
    1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
    1484 }
    @@ -1699,7 +1699,7 @@
    1519}
    1520
    - +
    1522 inactivityHandlingEnabled = enable;
    1523}
    @@ -1757,7 +1757,7 @@
    1575***********************************************************************************/
    1576
    - +
    1578 if (taskHandle == NULL) {
    1580 DEBUG_PRINTLN("Starting data processing task");
    @@ -1794,7 +1794,7 @@
    1611
    - +
    1613 if (taskHandle != NULL) {
    1615 DEBUG_PRINTLN("Stopping data processing task");
    @@ -1830,7 +1830,7 @@
    1644* Constructor
    1645***********************************************************************************/
    - +
    1647{
    1648 sensor = &serial;
    1649}
    @@ -1847,62 +1847,62 @@
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    -
    Asynchronous driver for the LD2410 human presence radar sensor.
    Definition LD2410Async.h:86
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:95
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    String firmware
    Firmware version string of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    String firmware
    Firmware version string of the radar.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool end()
    Stops the background task started by begin().
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    diff --git a/docu/LD2410Async_8h.html b/docu/LD2410Async_8h.html index abc90f8..183f832 100644 --- a/docu/LD2410Async_8h.html +++ b/docu/LD2410Async_8h.html @@ -123,7 +123,6 @@

    Classes

    class  LD2410Async - Asynchronous driver for the LD2410 human presence radar sensor. More...
     
    diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index 6df1fe8..28a2628 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -116,1574 +116,1605 @@
    14/**
    15 * @brief Asynchronous driver for the LD2410 human presence radar sensor.
    16 *
    -
    17 * The LD2410 is a mmWave radar sensor capable of detecting both moving and
    -
    18 * stationary targets, reporting presence, distance, and per-gate signal strength.
    -
    19 * This class implements a non-blocking, asynchronous interface for communicating
    -
    20 * with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).
    -
    21 *
    -
    22 * ## Features
    -
    23 * - Continuous background task that parses incoming frames and updates data.
    -
    24 * - Access to latest detection results via getDetectionData() or getDetectionDataRef().
    -
    25 * - Access to current configuration via getConfigData() or getConfigDataRef().
    -
    26 * - Asynchronous commands for configuration (with callbacks).
    -
    27 * - Support for engineering mode (per-gate signal values).
    -
    28 * - Automatic inactivity handling (optional recovery and reboot).
    -
    29 * - Utility methods for safe enum conversion and debugging output.
    -
    30 *
    -
    31 * ## Accessing data
    -
    32 * You can either clone the structs (safe to modify) or access them by reference (efficient read-only):
    -
    33 *
    -
    34 * ### Example: Access detection data without cloning
    -
    35 * @code
    -
    36 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    -
    37 * Serial.print("Target state: ");
    -
    38 * Serial.println(static_cast<int>(data.targetState));
    -
    39 * @endcode
    -
    40 *
    -
    41 * ### Example: Clone config data, modify, and write back
    -
    42 * @code
    -
    43 * ConfigData cfg = radar.getConfigData(); // clone
    -
    44 * cfg.noOneTimeout = 60;
    -
    45 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    46 * AsyncCommandResult result,
    -
    47 * byte) {
    -
    48 * if (result == AsyncCommandResult::SUCCESS) {
    -
    49 * Serial.println("Config updated successfully!");
    -
    50 * }
    -
    51 * });
    -
    52 * @endcode
    -
    53 *
    -
    54 * ## Usage
    -
    55 * Typical workflow:
    -
    56 * 1. Construct with a reference to a Stream object connected to the sensor.
    -
    57 * 2. Call begin() to start the background task.
    -
    58 * 3. Register callbacks for detection data and/or config updates.
    -
    59 * 4. Use async commands to adjust sensor configuration as needed.
    -
    60 * 5. Call end() to stop background processing if no longer required.
    -
    61 *
    -
    62 * Example:
    -
    63 * @code
    -
    64 * HardwareSerial radarSerial(2);
    -
    65 * LD2410Async radar(radarSerial);
    -
    66 *
    -
    67 * void setup() {
    -
    68 * Serial.begin(115200);
    -
    69 * radar.begin();
    -
    70 *
    -
    71 * // Register callback for detection updates
    -
    72 * radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
    -
    73 * sender->getDetectionDataRef().print(); // direct access, no copy
    -
    74 * });
    -
    75 * }
    -
    76 *
    -
    77 * void loop() {
    -
    78 * // Other application logic
    -
    79 * }
    -
    80 * @endcode
    -
    81 */
    -
    82
    -
    83
    +
    17 * @mainpage
    +
    18 * @section intro_sec Introduction
    +
    19 * The LD2410 is a mmWave radar sensor capable of detecting both moving and
    +
    20 * stationary targets, reporting presence, distance, and per-gate signal strength.
    +
    21 * This class implements a non-blocking, asynchronous interface for communicating
    +
    22 * with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).
    +
    23 *
    +
    24 * ## Features
    +
    25 * - Continuous background task that parses incoming frames and updates data.
    +
    26 * - Access to latest detection results via getDetectionData() or getDetectionDataRef().
    +
    27 * - Access to current configuration via getConfigData() or getConfigDataRef().
    +
    28 * - Asynchronous commands for configuration (with callbacks).
    +
    29 * - Support for engineering mode (per-gate signal values).
    +
    30 * - Automatic inactivity handling (optional recovery and reboot).
    +
    31 * - Utility methods for safe enum conversion and debugging output.
    +
    32 *
    +
    33 * ## Accessing data
    +
    34 * You can either clone the structs (safe to modify) or access them by reference (efficient read-only):
    +
    35 *
    +
    36 * ### Example: Access detection data without cloning
    +
    37 * @code
    +
    38 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    +
    39 * Serial.print("Target state: ");
    +
    40 * Serial.println(static_cast<int>(data.targetState));
    +
    41 * @endcode
    +
    42 *
    +
    43 * ### Example: Clone config data, modify, and write back
    +
    44 * @code
    +
    45 * ConfigData cfg = radar.getConfigData(); // clone
    +
    46 * cfg.noOneTimeout = 60;
    +
    47 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    48 * AsyncCommandResult result,
    +
    49 * byte) {
    +
    50 * if (result == AsyncCommandResult::SUCCESS) {
    +
    51 * Serial.println("Config updated successfully!");
    +
    52 * }
    +
    53 * });
    +
    54 * @endcode
    +
    55 *
    +
    56 * ## Usage
    +
    57 * Typical workflow:
    +
    58 * 1. Construct with a reference to a Stream object connected to the sensor.
    +
    59 * 2. Call begin() to start the background task.
    +
    60 * 3. Register callbacks for detection data and/or config updates.
    +
    61 * 4. Use async commands to adjust sensor configuration as needed.
    +
    62 * 5. Call end() to stop background processing if no longer required.
    +
    63 *
    +
    64 * Example:
    +
    65 * @code
    +
    66 * HardwareSerial radarSerial(2);
    +
    67 * LD2410Async radar(radarSerial);
    +
    68 *
    +
    69 * void setup() {
    +
    70 * Serial.begin(115200);
    +
    71 * radar.begin();
    +
    72 *
    +
    73 * // Register callback for detection updates
    +
    74 * radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
    +
    75 * sender->getDetectionDataRef().print(); // direct access, no copy
    +
    76 * });
    +
    77 * }
    +
    78 *
    +
    79 * void loop() {
    +
    80 * // Other application logic
    +
    81 * }
    +
    82 * @endcode
    +
    83 */
    84
    85
    -
    - -
    87public:
    -
    88
    -
    89
    -
    90 /**
    -
    91 * @brief Result of an asynchronous command execution.
    -
    92 *
    -
    93 * Every async command reports back its outcome via the callback.
    -
    94 */
    -
    -
    95 enum class AsyncCommandResult: byte {
    -
    96 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    97 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    98 TIMEOUT, ///< No ACK received within the expected time window.
    -
    99 CANCELED ///< Command was canceled by the user before completion.
    -
    100 };
    +
    86
    +
    87
    +
    + +
    89public:
    +
    90 /** @defgroup LD2410Async_Types Types And Callbacks
    +
    91 * Public types , enums and callback definitions
    +
    92 * @{
    +
    93 */
    +
    94
    +
    95 /**
    +
    96 * @brief Result of an asynchronous command execution.
    +
    97 *
    +
    98 * Every async command reports back its outcome via the callback.
    +
    99 */
    +
    +
    100 enum class AsyncCommandResult : byte {
    +
    101 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    102 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    103 TIMEOUT, ///< No ACK received within the expected time window.
    +
    104 CANCELED ///< Command was canceled by the user before completion.
    +
    105 };
    -
    101
    -
    102
    -
    103
    -
    104
    -
    105 /**
    -
    106 * @brief Callback signature for asynchronous command completion.
    -
    107 *
    -
    108 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    109 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    -
    110 * @param userData User-specified value passed when registering the callback.
    -
    111 */
    -
    112 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    -
    113
    -
    114 /**
    -
    115 * @brief Generic callback signature used for simple notifications.
    -
    116 *
    -
    117 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    118 * @param userData User-specified value passed when registering the callback.
    -
    119 */
    -
    120 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    -
    121
    -
    122 /**
    -
    123 * @brief Callback type for receiving detection data events.
    -
    124 *
    -
    125 * This callback is invoked whenever new detection data is processed.
    -
    126 * It provides direct access to the LD2410Async instance, along with
    -
    127 * a quick flag for presence detection so that applications which only
    -
    128 * care about presence can avoid parsing the full DetectionData struct.
    +
    106
    +
    107
    +
    108
    +
    109
    +
    110 /**
    +
    111 * @brief Callback signature for asynchronous command completion.
    +
    112 *
    +
    113 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    114 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    +
    115 * @param userData User-specified value passed when registering the callback.
    +
    116 */
    +
    117 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    +
    118
    +
    119 /**
    +
    120 * @brief Generic callback signature used for simple notifications.
    +
    121 *
    +
    122 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    123 * @param userData User-specified value passed when registering the callback.
    +
    124 */
    +
    125 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    +
    126
    +
    127 /**
    +
    128 * @brief Callback type for receiving detection data events.
    129 *
    -
    130 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    131 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
    -
    132 * @param userData User-defined value passed when registering the callback.
    -
    133 */
    -
    134 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    -
    135
    -
    136
    -
    137
    -
    138
    -
    139
    -
    140public:
    -
    141 /**
    -
    142 * @brief Latest detection results from the radar.
    -
    143 *
    -
    144 * Updated automatically whenever new data frames are received.
    -
    145 * Use registerDetectionDataReceivedCallback() to be notified
    -
    146 * whenever this struct changes.
    -
    147 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
    -
    148 */
    - -
    150
    -
    151 /**
    -
    152 * @brief Current configuration parameters of the radar.
    -
    153 *
    -
    154 * Filled when configuration query commands are issued
    -
    155 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
    -
    156 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
    -
    157 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
    -
    158 *
    -
    159 * Structure will contain only uninitilaized data if config data is not queried explicitly.
    -
    160 */
    - -
    162
    -
    163 /**
    -
    164 * @brief Protocol version reported by the radar.
    -
    165 *
    -
    166 * This value is set when entering config mode. It can be useful
    -
    167 * for compatibility checks between firmware and library.
    -
    168 */
    -
    169 unsigned long protocolVersion = 0;
    -
    170
    -
    171 /**
    -
    172 * @brief Buffer size reported by the radar protocol.
    -
    173 *
    -
    174 * Set when entering config mode. Typically not required by users
    -
    175 * unless debugging low-level protocol behavior.
    -
    176 */
    -
    177 unsigned long bufferSize = 0;
    -
    178
    -
    179 /**
    -
    180 * @brief True if the sensor is currently in config mode.
    -
    181 *
    -
    182 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
    -
    183 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
    -
    184 * otherwiese the radar will not send any detection data.
    -
    185 */
    -
    186 bool configModeEnabled = false;
    -
    187
    -
    188
    -
    189 /**
    -
    190 * @brief True if the sensor is currently in engineering mode.
    -
    191 *
    -
    192 * In engineering mode, the radar sends detailed per-gate
    -
    193 * signal data in addition to basic detection data.
    -
    194 *
    -
    195 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
    +
    130 * This callback is invoked whenever new detection data is processed.
    +
    131 * It provides direct access to the LD2410Async instance, along with
    +
    132 * a quick flag for presence detection so that applications which only
    +
    133 * care about presence can avoid parsing the full DetectionData struct.
    +
    134 *
    +
    135 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    136 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
    +
    137 * @param userData User-defined value passed when registering the callback.
    +
    138 */
    +
    139 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    +
    140
    +
    141
    +
    142
    +
    143 /** @} */ // end of LD2410Async_Types
    +
    144
    +
    145public:
    +
    146 /** @defgroup LD2410Async_Data Public Data Members
    +
    147 * Public data structures and variables.
    +
    148 * @{
    +
    149 */
    +
    150
    +
    151
    +
    152 /**
    +
    153 * @brief Latest detection results from the radar.
    +
    154 *
    +
    155 * Updated automatically whenever new data frames are received.
    +
    156 * Use registerDetectionDataReceivedCallback() to be notified
    +
    157 * whenever this struct changes.
    +
    158 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
    +
    159 */
    + +
    161
    +
    162 /**
    +
    163 * @brief Current configuration parameters of the radar.
    +
    164 *
    +
    165 * Filled when configuration query commands are issued
    +
    166 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
    +
    167 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
    +
    168 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
    +
    169 *
    +
    170 * Structure will contain only uninitilaized data if config data is not queried explicitly.
    +
    171 */
    + +
    173
    +
    174 /**
    +
    175 * @brief Protocol version reported by the radar.
    +
    176 *
    +
    177 * This value is set when entering config mode. It can be useful
    +
    178 * for compatibility checks between firmware and library.
    +
    179 */
    +
    180 unsigned long protocolVersion = 0;
    +
    181
    +
    182 /**
    +
    183 * @brief Buffer size reported by the radar protocol.
    +
    184 *
    +
    185 * Set when entering config mode. Typically not required by users
    +
    186 * unless debugging low-level protocol behavior.
    +
    187 */
    +
    188 unsigned long bufferSize = 0;
    +
    189
    +
    190 /**
    +
    191 * @brief True if the sensor is currently in config mode.
    +
    192 *
    +
    193 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
    +
    194 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
    +
    195 * otherwiese the radar will not send any detection data.
    196 */
    - -
    198
    -
    199 /**
    -
    200 * @brief Firmware version string of the radar.
    -
    201 *
    -
    202 * Populated by requestFirmwareAsync(). Format is usually
    -
    203 * "major.minor.build".
    -
    204 */
    -
    205 String firmware = "";
    -
    206
    -
    207 /**
    -
    208 * @brief MAC address of the radar’s Bluetooth module (if available).
    -
    209 *
    -
    210 * Populated by requestBluetoothMacAddressAsync().
    -
    211 */
    -
    212 byte mac[6];
    -
    213 /**
    -
    214 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    215 *
    -
    216 * Populated by requestBluetoothMacAddressAsync().
    -
    217 */
    -
    218 String macString = "";
    -
    219
    -
    220
    -
    221 /**
    -
    222 * @brief Current status of the auto-configuration routine.
    -
    223 *
    -
    224 * Updated by requestAutoConfigStatusAsync().
    -
    225 */
    - -
    227
    -
    228
    -
    229
    -
    230 /**********************************************************************************
    -
    231 * Constrcutor
    -
    232 ***********************************************************************************/
    -
    233
    -
    234 /**
    -
    235 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
    -
    236 *
    -
    237 * The sensor communicates over a UART interface. Pass the corresponding
    -
    238 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
    -
    239 * implementation) that is connected to the LD2410 sensor.
    -
    240 *
    -
    241 * Example:
    -
    242 * @code
    -
    243 * HardwareSerial radarSerial(2);
    -
    244 * LD2410Async radar(radarSerial);
    -
    245 * @endcode
    -
    246 *
    -
    247 * @param serial Reference to a Stream object used to exchange data with the sensor.
    -
    248 */
    -
    249 LD2410Async(Stream& serial);
    -
    250
    -
    251 /**********************************************************************************
    -
    252 * begin, end
    -
    253 ***********************************************************************************/
    -
    254 /**
    -
    255 * @brief Starts the background task that continuously reads data from the sensor.
    -
    256 *
    -
    257 * This method creates a FreeRTOS task which parses all incoming frames
    -
    258 * and dispatches registered callbacks. Without calling begin(), the
    -
    259 * sensor cannot deliver detection results asynchronously.
    -
    260 *
    -
    261 * @returns true if the task was successfully started, false if already running.
    -
    262 */
    -
    263 bool begin();
    -
    264
    -
    265 /**
    -
    266 * @brief Stops the background task started by begin().
    -
    267 *
    -
    268 * After calling end(), no more data will be processed until begin() is called again.
    -
    269 * This is useful to temporarily suspend radar processing without rebooting.
    -
    270 *
    -
    271 * @returns true if the task was stopped, false if it was not active.
    -
    272 */
    -
    273 bool end();
    -
    274
    -
    275 /**********************************************************************************
    -
    276 * Inactivity handling
    -
    277 ***********************************************************************************/
    -
    278 /**
    -
    279 * @brief Enables or disables automatic inactivity handling of the sensor.
    -
    280 *
    -
    281 * When inactivity handling is enabled, the library continuously monitors the time
    -
    282 * since the last activity (received data or command ACK). If no activity is detected
    -
    283 * for a longer period (defined by activityTimeoutMs), the library will attempt to
    -
    284 * recover the sensor automatically:
    -
    285 * 1. It first tries to exit config mode (even if configModeEnabled is false).
    -
    286 * 2. If no activity is restored within 5 seconds after leaving config mode,
    -
    287 * the library reboots the sensor.
    -
    288 *
    -
    289 * This helps recover the sensor from rare cases where it gets "stuck"
    -
    290 * in config mode or stops sending data.
    -
    291 *
    -
    292 * @param enable Pass true to enable inactivity handling, false to disable it.
    -
    293 */
    -
    294 void setInactivityHandling(bool enable);
    +
    197 bool configModeEnabled = false;
    +
    198
    +
    199
    +
    200 /**
    +
    201 * @brief True if the sensor is currently in engineering mode.
    +
    202 *
    +
    203 * In engineering mode, the radar sends detailed per-gate
    +
    204 * signal data in addition to basic detection data.
    +
    205 *
    +
    206 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
    +
    207 */
    + +
    209
    +
    210 /**
    +
    211 * @brief Firmware version string of the radar.
    +
    212 *
    +
    213 * Populated by requestFirmwareAsync(). Format is usually
    +
    214 * "major.minor.build".
    +
    215 */
    +
    216 String firmware = "";
    +
    217
    +
    218 /**
    +
    219 * @brief MAC address of the radar’s Bluetooth module (if available).
    +
    220 *
    +
    221 * Populated by requestBluetoothMacAddressAsync().
    +
    222 */
    +
    223 byte mac[6];
    +
    224 /**
    +
    225 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    226 *
    +
    227 * Populated by requestBluetoothMacAddressAsync().
    +
    228 */
    +
    229 String macString = "";
    +
    230
    +
    231
    +
    232 /**
    +
    233 * @brief Current status of the auto-configuration routine.
    +
    234 *
    +
    235 * Updated by requestAutoConfigStatusAsync().
    +
    236 */
    + +
    238 /** @} */ // end of LD2410Async_Data
    +
    239
    +
    240 /** @defgroup LD2410Async_Lifecycle Constructor & Basic Methods
    +
    241 * Constructor and basic start/stop methods.
    +
    242 * @{
    +
    243 */
    +
    244
    +
    245 /**********************************************************************************
    +
    246 * Constrcutor
    +
    247 ***********************************************************************************/
    +
    248
    +
    249 /**
    +
    250 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
    +
    251 *
    +
    252 * The sensor communicates over a UART interface. Pass the corresponding
    +
    253 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
    +
    254 * implementation) that is connected to the LD2410 sensor.
    +
    255 *
    +
    256 * Example:
    +
    257 * @code
    +
    258 * HardwareSerial radarSerial(2);
    +
    259 * LD2410Async radar(radarSerial);
    +
    260 * @endcode
    +
    261 *
    +
    262 * @param serial Reference to a Stream object used to exchange data with the sensor.
    +
    263 */
    +
    264 LD2410Async(Stream& serial);
    +
    265
    +
    266 /**********************************************************************************
    +
    267 * begin, end
    +
    268 ***********************************************************************************/
    +
    269 /**
    +
    270 * @brief Starts the background task that continuously reads data from the sensor.
    +
    271 *
    +
    272 * This method creates a FreeRTOS task which parses all incoming frames
    +
    273 * and dispatches registered callbacks. Without calling begin(), the
    +
    274 * sensor cannot deliver detection results asynchronously.
    +
    275 *
    +
    276 * @returns true if the task was successfully started, false if already running.
    +
    277 */
    +
    278 bool begin();
    +
    279
    +
    280 /**
    +
    281 * @brief Stops the background task started by begin().
    +
    282 *
    +
    283 * After calling end(), no more data will be processed until begin() is called again.
    +
    284 * This is useful to temporarily suspend radar processing without rebooting.
    +
    285 *
    +
    286 * @returns true if the task was stopped, false if it was not active.
    +
    287 */
    +
    288 bool end();
    +
    289
    +
    290 /** @} */ // end of LD2410Async_Lifecycle
    +
    291
    +
    292 /**********************************************************************************
    +
    293 * Inactivity handling
    +
    294 ***********************************************************************************/
    295
    -
    296 /**
    -
    297 * @brief Convenience method: enables inactivity handling.
    -
    298 *
    -
    299 * Equivalent to calling setInactivityHandling(true).
    -
    300 */
    - -
    302
    -
    303 /**
    -
    304 * @brief Convenience method: disables inactivity handling.
    -
    305 *
    -
    306 * Equivalent to calling setInactivityHandling(false).
    -
    307 */
    - -
    309
    -
    310 /**
    -
    311 * @brief Returns whether inactivity handling is currently enabled.
    -
    312 *
    -
    313 * @returns true if inactivity handling is enabled, false otherwise.
    -
    314 */
    -
    315 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    -
    316
    -
    317 /**
    -
    318 * @brief Sets the timeout period for inactivity handling.
    -
    319 *
    -
    320 * If no data or command ACK is received within this period,
    -
    321 * the library will attempt to recover the sensor as described
    -
    322 * in setInactivityHandling().
    -
    323 *
    -
    324 * Default is 60000 ms (1 minute).
    -
    325 *
    -
    326 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    -
    327 */
    -
    328 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    -
    329
    -
    330 /**
    -
    331 * @brief Returns the current inactivity timeout period.
    -
    332 *
    -
    333 * @returns Timeout in milliseconds.
    -
    334 */
    -
    335 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    -
    336
    -
    337 /**********************************************************************************
    -
    338 * Callback registration methods
    -
    339 ***********************************************************************************/
    -
    340
    -
    341 /**
    -
    342 * @brief Registers a callback for new detection data.
    -
    343 *
    -
    344 * The callback is invoked whenever a valid data frame is received
    -
    345 * from the radar, after detectionData has been updated.
    -
    346 *
    -
    347 * @param callback Function pointer with signature
    -
    348 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    -
    349 * @param userData Optional value that will be passed to the callback.
    -
    350 */
    -
    351 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    +
    296 /** @defgroup LD2410Async_Inactivity Inactivity Handling
    +
    297 * Methods for automatic inactivity detection and recovery.
    +
    298 * @{
    +
    299 */
    +
    300
    +
    301 /**
    +
    302 * @brief Enables or disables automatic inactivity handling of the sensor.
    +
    303 *
    +
    304 * When inactivity handling is enabled, the library continuously monitors the time
    +
    305 * since the last activity (received data or command ACK). If no activity is detected
    +
    306 * for a longer period (defined by activityTimeoutMs), the library will attempt to
    +
    307 * recover the sensor automatically:
    +
    308 * 1. It first tries to exit config mode (even if configModeEnabled is false).
    +
    309 * 2. If no activity is restored within 5 seconds after leaving config mode,
    +
    310 * the library reboots the sensor.
    +
    311 *
    +
    312 * This helps recover the sensor from rare cases where it gets "stuck"
    +
    313 * in config mode or stops sending data.
    +
    314 *
    +
    315 * @param enable Pass true to enable inactivity handling, false to disable it.
    +
    316 */
    +
    317 void setInactivityHandling(bool enable);
    +
    318
    +
    319 /**
    +
    320 * @brief Convenience method: enables inactivity handling.
    +
    321 *
    +
    322 * Equivalent to calling setInactivityHandling(true).
    +
    323 */
    + +
    325
    +
    326 /**
    +
    327 * @brief Convenience method: disables inactivity handling.
    +
    328 *
    +
    329 * Equivalent to calling setInactivityHandling(false).
    +
    330 */
    + +
    332
    +
    333 /**
    +
    334 * @brief Returns whether inactivity handling is currently enabled.
    +
    335 *
    +
    336 * @returns true if inactivity handling is enabled, false otherwise.
    +
    337 */
    +
    338 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    +
    339
    +
    340 /**
    +
    341 * @brief Sets the timeout period for inactivity handling.
    +
    342 *
    +
    343 * If no data or command ACK is received within this period,
    +
    344 * the library will attempt to recover the sensor as described
    +
    345 * in setInactivityHandling().
    +
    346 *
    +
    347 * Default is 60000 ms (1 minute).
    +
    348 *
    +
    349 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    +
    350 */
    +
    351 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    352
    353 /**
    -
    354 * @brief Registers a callback for configuration changes.
    +
    354 * @brief Returns the current inactivity timeout period.
    355 *
    -
    356 * The callback is invoked whenever the sensor’s configuration
    -
    357 * has been successfully updated (e.g. after setting sensitivity).
    -
    358 *
    -
    359 * @param callback Function pointer with signature
    -
    360 * void methodName(LD2410Async* sender, byte userData).
    -
    361 * @param userData Optional value that will be passed to the callback.
    -
    362 */
    -
    363 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    -
    364
    -
    365 /**
    -
    366 * @brief Registers a callback for configuration data updates.
    -
    367 *
    -
    368 * The callback is invoked whenever new configuration information
    -
    369 * has been received from the sensor (e.g. after requestGateParametersAsync()).
    -
    370 *
    -
    371 * @param callback Function pointer with signature
    -
    372 * void methodName(LD2410Async* sender, byte userData).
    -
    373 * @param userData Optional value that will be passed to the callback.
    -
    374 */
    -
    375 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    -
    376
    -
    377 /**********************************************************************************
    -
    378 * Detection and config data access commands
    -
    379 ***********************************************************************************/
    -
    380 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
    +
    356 * @returns Timeout in milliseconds.
    +
    357 */
    +
    358 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    +
    359
    +
    360 /** @} */ // end of LD2410Async_Inactivity
    +
    361
    +
    362 /**********************************************************************************
    +
    363 * Callback registration methods
    +
    364 ***********************************************************************************/
    +
    365 /** @defgroup LD2410Async_Callbacks Callback Registration
    +
    366 * Registrierung von Callback-Funktionen.
    +
    367 * @{
    +
    368 */
    +
    369
    +
    370 /**
    +
    371 * @brief Registers a callback for new detection data.
    +
    372 *
    +
    373 * The callback is invoked whenever a valid data frame is received
    +
    374 * from the radar, after detectionData has been updated.
    +
    375 *
    +
    376 * @param callback Function pointer with signature
    +
    377 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    +
    378 * @param userData Optional value that will be passed to the callback.
    +
    379 */
    +
    380 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    381
    382 /**
    -
    383 * @brief Returns a clone of the latest detection data from the radar.
    +
    383 * @brief Registers a callback for configuration changes.
    384 *
    -
    385 * The returned struct contains the most recently received frame,
    -
    386 * including target state, distances, signal strengths, and
    -
    387 * (if enabled) engineering mode per-gate data.
    -
    388 *
    -
    389 * Equivalent to directly accessing the public member detectionData,
    -
    390 * but provided for encapsulation and future-proofing.
    -
    391 *
    -
    392 * @note This function will not query the sensor for data. It just returns
    -
    393 * the data that has already been received from the sensor.
    -
    394 *
    -
    395 * ## Example: Access values from a clone
    -
    396 * @code
    -
    397 * DetectionData data = radar.getDetectionData(); // makes a copy
    -
    398 * if (data.targetState == TargetState::MOVING_TARGET) {
    -
    399 * Serial.print("Moving target at distance: ");
    -
    400 * Serial.println(data.movingTargetDistance);
    -
    401 * }
    -
    402 * @endcode
    -
    403 *
    -
    404 * ## Do:
    -
    405 * - Use when you want a snapshot of the latest detection data.
    -
    406 * - Modify the returned struct freely without affecting the internal state.
    -
    407 *
    -
    408 * ## Don’t:
    -
    409 * - Expect this to fetch new data from the sensor (it only returns what was already received).
    -
    410 *
    -
    411 * @returns A copy of the current DetectionData.
    -
    412 */
    - -
    414
    -
    415
    -
    416 /**
    -
    417 * @brief Access the current detection data without making a copy.
    -
    418 *
    -
    419 * This returns a const reference to the internal struct. It is efficient,
    -
    420 * but the data must not be modified directly. Use this if you only want
    -
    421 * to read values.
    +
    385 * The callback is invoked whenever the sensor’s configuration
    +
    386 * has been successfully updated (e.g. after setting sensitivity).
    +
    387 *
    +
    388 * @param callback Function pointer with signature
    +
    389 * void methodName(LD2410Async* sender, byte userData).
    +
    390 * @param userData Optional value that will be passed to the callback.
    +
    391 */
    +
    392 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    +
    393
    +
    394 /**
    +
    395 * @brief Registers a callback for configuration data updates.
    +
    396 *
    +
    397 * The callback is invoked whenever new configuration information
    +
    398 * has been received from the sensor (e.g. after requestGateParametersAsync()).
    +
    399 *
    +
    400 * @param callback Function pointer with signature
    +
    401 * void methodName(LD2410Async* sender, byte userData).
    +
    402 * @param userData Optional value that will be passed to the callback.
    +
    403 */
    +
    404 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    +
    405
    +
    406 /** @} */ // end of LD2410Async_Callbacks
    +
    407
    +
    408 /**********************************************************************************
    +
    409 * Detection and config data access commands
    +
    410 ***********************************************************************************/
    +
    411 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
    +
    412
    +
    413 /**
    +
    414 * @brief Returns a clone of the latest detection data from the radar.
    +
    415 *
    +
    416 * The returned struct contains the most recently received frame,
    +
    417 * including target state, distances, signal strengths, and
    +
    418 * (if enabled) engineering mode per-gate data.
    +
    419 *
    +
    420 * Equivalent to directly accessing the public member detectionData,
    +
    421 * but provided for encapsulation and future-proofing.
    422 *
    -
    423 * @note Since this returns a reference to the internal data, the values
    -
    424 * may change as new frames arrive. Do not store the reference for
    -
    425 * long-term use.
    -
    426 * @note This function will not query the sensor for data. It just returns
    -
    427 * the data that has already been received from the sensor.
    -
    428 *
    -
    429 * ## Example: Efficient read access without cloning
    -
    430 * @code
    -
    431 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    -
    432 * Serial.print("Stationary signal: ");
    -
    433 * Serial.println(data.stationaryTargetSignal);
    -
    434 * @endcode
    -
    435 *
    -
    436 * ## Do:
    -
    437 * - Use when you only need to read values quickly and efficiently.
    -
    438 * - Use when printing or inspecting live data without keeping it.
    -
    439 *
    -
    440 * ## Don’t:
    -
    441 * - Try to modify the returned struct (it’s const).
    -
    442 * - Store the reference long-term (it may be updated at any time).
    -
    443 *
    -
    444 * @returns Const reference to the current DetectionData.
    -
    445 */
    - -
    447
    -
    448
    -
    449 /**
    -
    450 * @brief Returns a clone of the current configuration data of the radar.
    -
    451 *
    -
    452 * The returned struct contains the most recently requested
    -
    453 * or received configuration values, such as sensitivities,
    -
    454 * resolution, timeouts, and auxiliary settings.
    -
    455 *
    -
    456 * Equivalent to directly accessing the public member configData,
    -
    457 * but provided for encapsulation and future-proofing.
    -
    458 *
    -
    459 * @note This function will not query the sensor for data. It just returns
    -
    460 * the data that has already been received from the sensor.
    -
    461 *
    -
    462 * ## Example: Clone, modify, and write back
    -
    463 * @code
    -
    464 * // Clone current config
    -
    465 * ConfigData cfg = radar.getConfigData();
    +
    423 * @note This function will not query the sensor for data. It just returns
    +
    424 * the data that has already been received from the sensor.
    +
    425 *
    +
    426 * ## Example: Access values from a clone
    +
    427 * @code
    +
    428 * DetectionData data = radar.getDetectionData(); // makes a copy
    +
    429 * if (data.targetState == TargetState::MOVING_TARGET) {
    +
    430 * Serial.print("Moving target at distance: ");
    +
    431 * Serial.println(data.movingTargetDistance);
    +
    432 * }
    +
    433 * @endcode
    +
    434 *
    +
    435 * ## Do:
    +
    436 * - Use when you want a snapshot of the latest detection data.
    +
    437 * - Modify the returned struct freely without affecting the internal state.
    +
    438 *
    +
    439 * ## Don’t:
    +
    440 * - Expect this to fetch new data from the sensor (it only returns what was already received).
    +
    441 *
    +
    442 * @returns A copy of the current DetectionData.
    +
    443 */
    + +
    445
    +
    446
    +
    447 /**
    +
    448 * @brief Access the current detection data without making a copy.
    +
    449 *
    +
    450 * This returns a const reference to the internal struct. It is efficient,
    +
    451 * but the data must not be modified directly. Use this if you only want
    +
    452 * to read values.
    +
    453 *
    +
    454 * @note Since this returns a reference to the internal data, the values
    +
    455 * may change as new frames arrive. Do not store the reference for
    +
    456 * long-term use.
    +
    457 * @note This function will not query the sensor for data. It just returns
    +
    458 * the data that has already been received from the sensor.
    +
    459 *
    +
    460 * ## Example: Efficient read access without cloning
    +
    461 * @code
    +
    462 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    +
    463 * Serial.print("Stationary signal: ");
    +
    464 * Serial.println(data.stationaryTargetSignal);
    +
    465 * @endcode
    466 *
    -
    467 * // Modify locally
    -
    468 * cfg.noOneTimeout = 60; // change timeout
    -
    469 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    +
    467 * ## Do:
    +
    468 * - Use when you only need to read values quickly and efficiently.
    +
    469 * - Use when printing or inspecting live data without keeping it.
    470 *
    -
    471 * // Send modified config back to sensor
    -
    472 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    473 * AsyncCommandResult result,
    -
    474 * byte) {
    -
    475 * if (result == AsyncCommandResult::SUCCESS) {
    -
    476 * Serial.println("Config updated successfully!");
    -
    477 * }
    -
    478 * });
    -
    479 * @endcode
    -
    480 *
    -
    481 * ## Do:
    -
    482 * - Use when you want a clone of the current config to adjust and send back.
    -
    483 * - Safely modify the struct without risking internal state corruption.
    -
    484 *
    -
    485 * ## Don’t:
    -
    486 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    -
    487 *
    -
    488 * @returns A copy of the current ConfigData.
    -
    489 */
    - -
    491
    -
    492
    -
    493 /**
    -
    494 * @brief Access the current config data without making a copy.
    -
    495 *
    -
    496 * This returns a const reference to the internal struct. It is efficient,
    -
    497 * but the data must not be modified directly. Use this if you only want
    -
    498 * to read values.
    -
    499 *
    -
    500 * @note Since this returns a reference to the internal data, the values
    -
    501 * may change when new configuration is received. Do not store the
    -
    502 * reference for long-term use.
    -
    503 * @note This function will not query the sensor for data. It just returns
    -
    504 * the data that has already been received from the sensor.
    -
    505 *
    -
    506 * ## Example: Efficient read access without cloning
    -
    507 * @code
    -
    508 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    -
    509 * Serial.print("Resolution: ");
    -
    510 * Serial.println(static_cast<int>(cfg.distanceResolution));
    -
    511 * @endcode
    -
    512 *
    -
    513 * ## Do:
    -
    514 * - Use when you only want to inspect configuration quickly.
    -
    515 * - Use for efficient read-only access.
    -
    516 *
    -
    517 * ## Don’t:
    -
    518 * - Try to modify the returned struct (it’s const).
    -
    519 * - Keep the reference and assume it will remain valid forever.
    -
    520 *
    -
    521 * @returns Const reference to the current ConfigData.
    -
    522 */
    - -
    524
    -
    525
    -
    526 /**********************************************************************************
    -
    527 * Special async commands
    -
    528 ***********************************************************************************/
    -
    529 /**
    -
    530 * @brief Checks if an asynchronous command is currently pending.
    -
    531 *
    -
    532 * @returns true if there is an active command awaiting an ACK,
    -
    533 * false if the library is idle.
    -
    534 */
    -
    535 bool asyncIsBusy();
    -
    536
    -
    537 /**
    -
    538 * @brief Cancels any pending asynchronous command or sequence.
    -
    539 *
    -
    540 * If canceled, the callback of the running command is invoked
    -
    541 * with result type CANCELED. After canceling, the sensor may
    -
    542 * remain in config mode — consider disabling config mode or
    -
    543 * rebooting to return to detection operation.
    -
    544 */
    -
    545 void asyncCancel();
    -
    546
    -
    547 /**
    -
    548 * @brief Sets the timeout for async command callbacks.
    -
    549 *
    -
    550 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
    +
    471 * ## Don’t:
    +
    472 * - Try to modify the returned struct (it’s const).
    +
    473 * - Store the reference long-term (it may be updated at any time).
    +
    474 *
    +
    475 * @returns Const reference to the current DetectionData.
    +
    476 */
    + +
    478
    +
    479
    +
    480 /**
    +
    481 * @brief Returns a clone of the current configuration data of the radar.
    +
    482 *
    +
    483 * The returned struct contains the most recently requested
    +
    484 * or received configuration values, such as sensitivities,
    +
    485 * resolution, timeouts, and auxiliary settings.
    +
    486 *
    +
    487 * Equivalent to directly accessing the public member configData,
    +
    488 * but provided for encapsulation and future-proofing.
    +
    489 *
    +
    490 * @note This function will not query the sensor for data. It just returns
    +
    491 * the data that has already been received from the sensor.
    +
    492 *
    +
    493 * ## Example: Clone, modify, and write back
    +
    494 * @code
    +
    495 * // Clone current config
    +
    496 * ConfigData cfg = radar.getConfigData();
    +
    497 *
    +
    498 * // Modify locally
    +
    499 * cfg.noOneTimeout = 60; // change timeout
    +
    500 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    +
    501 *
    +
    502 * // Send modified config back to sensor
    +
    503 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    504 * AsyncCommandResult result,
    +
    505 * byte) {
    +
    506 * if (result == AsyncCommandResult::SUCCESS) {
    +
    507 * Serial.println("Config updated successfully!");
    +
    508 * }
    +
    509 * });
    +
    510 * @endcode
    +
    511 *
    +
    512 * ## Do:
    +
    513 * - Use when you want a clone of the current config to adjust and send back.
    +
    514 * - Safely modify the struct without risking internal state corruption.
    +
    515 *
    +
    516 * ## Don’t:
    +
    517 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    +
    518 *
    +
    519 * @returns A copy of the current ConfigData.
    +
    520 */
    + +
    522
    +
    523
    +
    524 /**
    +
    525 * @brief Access the current config data without making a copy.
    +
    526 *
    +
    527 * This returns a const reference to the internal struct. It is efficient,
    +
    528 * but the data must not be modified directly. Use this if you only want
    +
    529 * to read values.
    +
    530 *
    +
    531 * @note Since this returns a reference to the internal data, the values
    +
    532 * may change when new configuration is received. Do not store the
    +
    533 * reference for long-term use.
    +
    534 * @note This function will not query the sensor for data. It just returns
    +
    535 * the data that has already been received from the sensor.
    +
    536 *
    +
    537 * ## Example: Efficient read access without cloning
    +
    538 * @code
    +
    539 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    +
    540 * Serial.print("Resolution: ");
    +
    541 * Serial.println(static_cast<int>(cfg.distanceResolution));
    +
    542 * @endcode
    +
    543 *
    +
    544 * ## Do:
    +
    545 * - Use when you only want to inspect configuration quickly.
    +
    546 * - Use for efficient read-only access.
    +
    547 *
    +
    548 * ## Don’t:
    +
    549 * - Try to modify the returned struct (it’s const).
    +
    550 * - Keep the reference and assume it will remain valid forever.
    551 *
    -
    552 *
    -
    553 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
    -
    554 */
    -
    555 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    -
    556
    -
    557 /**
    -
    558 * @brief Returns the current async command timeout.
    -
    559 *
    -
    560 * @return Timeout in milliseconds.
    -
    561 */
    -
    562 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    -
    563
    -
    564
    -
    565 /**********************************************************************************
    -
    566 * Commands
    -
    567 ***********************************************************************************/
    -
    568
    -
    569 /*---------------------------------------------------------------------------------
    -
    570 - Config mode commands
    -
    571 ---------------------------------------------------------------------------------*/
    -
    572 /**
    -
    573 * @brief Enables config mode on the radar.
    -
    574 *
    -
    575 * Config mode must be enabled before issuing most configuration commands.
    -
    576 * This command itself is asynchronous — the callback fires once the
    -
    577 * sensor acknowledges the mode switch.
    -
    578 *
    -
    579 * @note If asyncIsBusy() is true, this command will not be sent.
    -
    580 * @note Normal detection data is suspended while config mode is active.
    -
    581 *
    -
    582 * @param callback Callback with signature
    -
    583 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    584 * @param userData Optional value that will be passed to the callback.
    -
    585 *
    -
    586 * @returns true if the command was sent, false if blocked.
    -
    587 */
    -
    588 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    589
    -
    590 /**
    -
    591 * @brief Disables config mode on the radar.
    -
    592 *
    -
    593 * This should be called after finishing configuration, to return
    -
    594 * the sensor to normal detection operation.
    -
    595 *
    -
    596 * @note If an async command is already pending (asyncIsBusy() == true),
    -
    597 * this command will not be sent.
    -
    598 *
    -
    599 * @param callback Callback with signature
    -
    600 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    601 * @param userData Optional value passed to the callback.
    -
    602 *
    -
    603 * @returns true if the command was sent, false otherwise.
    -
    604 */
    -
    605 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    606
    -
    607 /**
    -
    608 * @brief Detects if config mode is enabled
    -
    609 *
    -
    610 * @returns true if config mode is anabled, false if config mode is disabled
    -
    611 */
    -
    -
    612 bool isConfigModeEnabled() const {
    -
    613 return configModeEnabled;
    -
    614 };
    +
    552 * @returns Const reference to the current ConfigData.
    +
    553 */
    + +
    555
    +
    556
    +
    557 /**********************************************************************************
    +
    558 * Special async commands
    +
    559 ***********************************************************************************/
    +
    560 /**
    +
    561 * @brief Checks if an asynchronous command is currently pending.
    +
    562 *
    +
    563 * @returns true if there is an active command awaiting an ACK,
    +
    564 * false if the library is idle.
    +
    565 */
    +
    566 bool asyncIsBusy();
    +
    567
    +
    568 /**
    +
    569 * @brief Cancels any pending asynchronous command or sequence.
    +
    570 *
    +
    571 * If canceled, the callback of the running command is invoked
    +
    572 * with result type CANCELED. After canceling, the sensor may
    +
    573 * remain in config mode — consider disabling config mode or
    +
    574 * rebooting to return to detection operation.
    +
    575 */
    +
    576 void asyncCancel();
    +
    577
    +
    578 /**
    +
    579 * @brief Sets the timeout for async command callbacks.
    +
    580 *
    +
    581 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
    +
    582 *
    +
    583 *
    +
    584 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
    +
    585 */
    +
    586 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    +
    587
    +
    588 /**
    +
    589 * @brief Returns the current async command timeout.
    +
    590 *
    +
    591 * @return Timeout in milliseconds.
    +
    592 */
    +
    593 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    +
    594
    +
    595
    +
    596 /**********************************************************************************
    +
    597 * Commands
    +
    598 ***********************************************************************************/
    +
    599
    +
    600 /*---------------------------------------------------------------------------------
    +
    601 - Config mode commands
    +
    602 ---------------------------------------------------------------------------------*/
    +
    603 /**
    +
    604 * @brief Enables config mode on the radar.
    +
    605 *
    +
    606 * Config mode must be enabled before issuing most configuration commands.
    +
    607 * This command itself is asynchronous — the callback fires once the
    +
    608 * sensor acknowledges the mode switch.
    +
    609 *
    +
    610 * @note If asyncIsBusy() is true, this command will not be sent.
    +
    611 * @note Normal detection data is suspended while config mode is active.
    +
    612 *
    +
    613 * @param callback Callback with signature
    +
    614 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    615 * @param userData Optional value that will be passed to the callback.
    +
    616 *
    +
    617 * @returns true if the command was sent, false if blocked.
    +
    618 */
    +
    619 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    620
    +
    621 /**
    +
    622 * @brief Disables config mode on the radar.
    +
    623 *
    +
    624 * This should be called after finishing configuration, to return
    +
    625 * the sensor to normal detection operation.
    +
    626 *
    +
    627 * @note If an async command is already pending (asyncIsBusy() == true),
    +
    628 * this command will not be sent.
    +
    629 *
    +
    630 * @param callback Callback with signature
    +
    631 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    632 * @param userData Optional value passed to the callback.
    +
    633 *
    +
    634 * @returns true if the command was sent, false otherwise.
    +
    635 */
    +
    636 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    637
    +
    638 /**
    +
    639 * @brief Detects if config mode is enabled
    +
    640 *
    +
    641 * @returns true if config mode is anabled, false if config mode is disabled
    +
    642 */
    +
    +
    643 bool isConfigModeEnabled() const {
    +
    644 return configModeEnabled;
    +
    645 };
    -
    615
    -
    616
    -
    617 /*---------------------------------------------------------------------------------
    -
    618 - Engineering mode commands
    -
    619 ---------------------------------------------------------------------------------*/
    -
    620 /**
    -
    621 * @brief Enables engineering mode.
    -
    622 *
    -
    623 * In this mode, the sensor sends detailed per-gate signal values
    -
    624 * in addition to basic detection results.
    -
    625 *
    -
    626 * @note Engineering mode is temporary and lost after power cycle.
    -
    627 * @note Requires config mode. Will be enabled automatically if not active.
    -
    628 *
    -
    629 * @param callback Callback fired when ACK is received or on failure.
    -
    630 * @param userData Optional value passed to the callback.
    -
    631 *
    -
    632 * @returns true if the command was sent, false otherwise.
    -
    633 */
    -
    634 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    635
    -
    636 /**
    -
    637 * @brief Disables engineering mode.
    -
    638 *
    -
    639 * Returns sensor reporting to basic detection results only.
    -
    640 *
    -
    641 * @note Requires config mode. Will be enabled automatically if not active.
    -
    642 *
    -
    643 * @param callback Callback fired when ACK is received or on failure.
    -
    644 * @param userData Optional value passed to the callback.
    -
    645 *
    -
    646 * @returns true if the command was sent, false otherwise.
    -
    647 */
    -
    648 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    649
    -
    650 /**
    -
    651 * @brief Detects if engineering mode is enabled
    -
    652 *
    -
    653 * @returns true if engineering mode is anabled, false if engineering mode is disabled
    -
    654 */
    -
    - - -
    657 };
    -
    -
    658
    -
    659 /*---------------------------------------------------------------------------------
    -
    660 - Native sensor commands
    -
    661 ---------------------------------------------------------------------------------*/
    -
    662 /**
    -
    663 * @brief Requests the current gate parameters from the sensor.
    -
    664 *
    -
    665 * Retrieves sensitivities, max gates, and timeout settings,
    -
    666 * which will be written into configData.
    -
    667 *
    -
    668 * @note Requires config mode. The method will manage mode switching if needed.
    -
    669 * @note If an async command is already pending, the request is rejected.
    -
    670 *
    -
    671 * @param callback Callback fired when data is received or on failure.
    -
    672 * @param userData Optional value passed to the callback.
    +
    646
    +
    647
    +
    648 /*---------------------------------------------------------------------------------
    +
    649 - Engineering mode commands
    +
    650 ---------------------------------------------------------------------------------*/
    +
    651 /**
    +
    652 * @brief Enables engineering mode.
    +
    653 *
    +
    654 * In this mode, the sensor sends detailed per-gate signal values
    +
    655 * in addition to basic detection results.
    +
    656 *
    +
    657 * @note Engineering mode is temporary and lost after power cycle.
    +
    658 * @note Requires config mode. Will be enabled automatically if not active.
    +
    659 *
    +
    660 * @param callback Callback fired when ACK is received or on failure.
    +
    661 * @param userData Optional value passed to the callback.
    +
    662 *
    +
    663 * @returns true if the command was sent, false otherwise.
    +
    664 */
    +
    665 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    666
    +
    667 /**
    +
    668 * @brief Disables engineering mode.
    +
    669 *
    +
    670 * Returns sensor reporting to basic detection results only.
    +
    671 *
    +
    672 * @note Requires config mode. Will be enabled automatically if not active.
    673 *
    -
    674 * @returns true if the command was sent, false otherwise.
    -
    675 */
    -
    676 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    677
    -
    678
    -
    679
    -
    680 /**
    -
    681 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    682 *
    -
    683 * This command updates:
    -
    684 * - Maximum motion detection distance gate (2–8).
    -
    685 * - Maximum stationary detection distance gate (2–8).
    -
    686 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
    -
    687 *
    -
    688 * @note Requires config mode to be enabled. The method will internally
    -
    689 * enable/disable config mode if necessary.
    -
    690 * @note If another async command is pending, this call fails.
    -
    691 *
    -
    692 * @param maxMovingGate Furthest gate used for motion detection (2–8).
    -
    693 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
    -
    694 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
    -
    695 * @param callback Callback fired when ACK is received or on failure/timeout.
    -
    696 * @param userData Optional value passed to the callback.
    -
    697 *
    -
    698 * @returns true if the command was sent, false otherwise (busy state or invalid values).
    -
    699 */
    -
    700 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    -
    701
    -
    702
    -
    703 /**
    -
    704 * @brief Configures sensitivity thresholds for all gates at once.
    -
    705 *
    -
    706 * A sequence of commands will be sent, one for each gate.
    -
    707 * Threshold values are automatically clamped to 0–100.
    -
    708 *
    -
    709 * @note Requires config mode. Will be managed automatically.
    -
    710 * @note If another async command is pending, this call fails.
    -
    711 *
    -
    712 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
    -
    713 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
    -
    714 * @param callback Callback fired when all updates are acknowledged or on failure.
    -
    715 * @param userData Optional value passed to the callback.
    -
    716 *
    -
    717 * @returns true if the sequence was started, false otherwise.
    -
    718 */
    -
    719
    -
    720 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    -
    721
    -
    722
    -
    723 /**
    -
    724 * @brief Configures sensitivity thresholds for a single gate.
    -
    725 *
    -
    726 * Updates both moving and stationary thresholds for the given gate index.
    -
    727 * If the gate index is greater than 8, all gates are updated instead.
    +
    674 * @param callback Callback fired when ACK is received or on failure.
    +
    675 * @param userData Optional value passed to the callback.
    +
    676 *
    +
    677 * @returns true if the command was sent, false otherwise.
    +
    678 */
    +
    679 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    680
    +
    681 /**
    +
    682 * @brief Detects if engineering mode is enabled
    +
    683 *
    +
    684 * @returns true if engineering mode is anabled, false if engineering mode is disabled
    +
    685 */
    +
    + + +
    688 };
    +
    +
    689
    +
    690 /*---------------------------------------------------------------------------------
    +
    691 - Native sensor commands
    +
    692 ---------------------------------------------------------------------------------*/
    +
    693 /**
    +
    694 * @brief Requests the current gate parameters from the sensor.
    +
    695 *
    +
    696 * Retrieves sensitivities, max gates, and timeout settings,
    +
    697 * which will be written into configData.
    +
    698 *
    +
    699 * @note Requires config mode. The method will manage mode switching if needed.
    +
    700 * @note If an async command is already pending, the request is rejected.
    +
    701 *
    +
    702 * @param callback Callback fired when data is received or on failure.
    +
    703 * @param userData Optional value passed to the callback.
    +
    704 *
    +
    705 * @returns true if the command was sent, false otherwise.
    +
    706 */
    +
    707 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    708
    +
    709
    +
    710
    +
    711 /**
    +
    712 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    713 *
    +
    714 * This command updates:
    +
    715 * - Maximum motion detection distance gate (2–8).
    +
    716 * - Maximum stationary detection distance gate (2–8).
    +
    717 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
    +
    718 *
    +
    719 * @note Requires config mode to be enabled. The method will internally
    +
    720 * enable/disable config mode if necessary.
    +
    721 * @note If another async command is pending, this call fails.
    +
    722 *
    +
    723 * @param maxMovingGate Furthest gate used for motion detection (2–8).
    +
    724 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
    +
    725 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
    +
    726 * @param callback Callback fired when ACK is received or on failure/timeout.
    +
    727 * @param userData Optional value passed to the callback.
    728 *
    -
    729 * @note Requires config mode. Will be managed automatically.
    -
    730 * @note If another async command is pending, this call fails.
    -
    731 *
    -
    732 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
    -
    733 * @param movingThreshold Sensitivity for moving targets (0–100).
    -
    734 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
    -
    735 * @param callback Callback fired when ACK is received or on failure.
    -
    736 * @param userData Optional value passed to the callback.
    -
    737 *
    -
    738 * @returns true if the command was sent, false otherwise.
    -
    739 */
    -
    740 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    -
    741
    -
    742 /**
    -
    743 * @brief Requests the firmware version of the sensor.
    -
    744 *
    -
    745 * Populates the firmware string when the ACK response arrives.
    -
    746 *
    -
    747 * @note Requires config mode. Will be managed automatically.
    -
    748 *
    -
    749 * @param callback Callback fired when firmware info is received.
    -
    750 * @param userData Optional value passed to the callback.
    -
    751 *
    -
    752 * @returns true if the command was sent, false otherwise.
    -
    753 */
    -
    754 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    755
    -
    756 /**
    -
    757 * @brief Configures the UART baud rate of the sensor.
    -
    758 *
    -
    759 * The new baud rate becomes active only after reboot.
    -
    760 * The ESP32’s Serial interface must also be reconfigured
    -
    761 * to the new baud rate after reboot.
    +
    729 * @returns true if the command was sent, false otherwise (busy state or invalid values).
    +
    730 */
    +
    731 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    +
    732
    +
    733
    +
    734 /**
    +
    735 * @brief Configures sensitivity thresholds for all gates at once.
    +
    736 *
    +
    737 * A sequence of commands will be sent, one for each gate.
    +
    738 * Threshold values are automatically clamped to 0–100.
    +
    739 *
    +
    740 * @note Requires config mode. Will be managed automatically.
    +
    741 * @note If another async command is pending, this call fails.
    +
    742 *
    +
    743 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
    +
    744 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
    +
    745 * @param callback Callback fired when all updates are acknowledged or on failure.
    +
    746 * @param userData Optional value passed to the callback.
    +
    747 *
    +
    748 * @returns true if the sequence was started, false otherwise.
    +
    749 */
    +
    750
    +
    751 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    +
    752
    +
    753
    +
    754 /**
    +
    755 * @brief Configures sensitivity thresholds for a single gate.
    +
    756 *
    +
    757 * Updates both moving and stationary thresholds for the given gate index.
    +
    758 * If the gate index is greater than 8, all gates are updated instead.
    +
    759 *
    +
    760 * @note Requires config mode. Will be managed automatically.
    +
    761 * @note If another async command is pending, this call fails.
    762 *
    -
    763 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
    -
    764 * @note Requires config mode. Will be managed automatically.
    -
    765 * @note If another async command is pending, this call fails.
    -
    766 * @note After execution, call rebootAsync() to activate changes.
    -
    767 *
    -
    768 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    -
    769 * @param callback Callback fired when ACK is received or on failure.
    -
    770 * @param userData Optional value passed to the callback.
    -
    771 *
    -
    772 * @returns true if the command was sent, false otherwise.
    -
    773 */
    -
    774 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    -
    775
    -
    776 /**
    -
    777 * @brief Configures the baudrate of the serial port of the sensor.
    -
    778 *
    -
    779 * The new baudrate will only become active after a reboot of the sensor.
    -
    780 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
    -
    781 *
    -
    782 * @note If another async command is pending, this call fails.
    -
    783 * @note After execution, call rebootAsync() to activate changes.
    -
    784 *
    -
    785 * @param baudrate A valid baud rate from the Baudrate enum.
    -
    786 *
    -
    787 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    788 * @param userData Optional value that will be passed to the callback function.
    -
    789 *
    -
    790 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    791 */
    -
    792 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    -
    793
    -
    794
    -
    795 /**
    -
    796 * @brief Restores factory settings of the sensor.
    -
    797 *
    -
    798 * Restored settings only become active after a reboot.
    -
    799 *
    -
    800 * @note Requires config mode. Will be managed automatically.
    -
    801 * @note After execution, call rebootAsync() to activate changes.
    +
    763 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
    +
    764 * @param movingThreshold Sensitivity for moving targets (0–100).
    +
    765 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
    +
    766 * @param callback Callback fired when ACK is received or on failure.
    +
    767 * @param userData Optional value passed to the callback.
    +
    768 *
    +
    769 * @returns true if the command was sent, false otherwise.
    +
    770 */
    +
    771 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    +
    772
    +
    773 /**
    +
    774 * @brief Requests the firmware version of the sensor.
    +
    775 *
    +
    776 * Populates the firmware string when the ACK response arrives.
    +
    777 *
    +
    778 * @note Requires config mode. Will be managed automatically.
    +
    779 *
    +
    780 * @param callback Callback fired when firmware info is received.
    +
    781 * @param userData Optional value passed to the callback.
    +
    782 *
    +
    783 * @returns true if the command was sent, false otherwise.
    +
    784 */
    +
    785 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    786
    +
    787 /**
    +
    788 * @brief Configures the UART baud rate of the sensor.
    +
    789 *
    +
    790 * The new baud rate becomes active only after reboot.
    +
    791 * The ESP32’s Serial interface must also be reconfigured
    +
    792 * to the new baud rate after reboot.
    +
    793 *
    +
    794 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
    +
    795 * @note Requires config mode. Will be managed automatically.
    +
    796 * @note If another async command is pending, this call fails.
    +
    797 * @note After execution, call rebootAsync() to activate changes.
    +
    798 *
    +
    799 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    +
    800 * @param callback Callback fired when ACK is received or on failure.
    +
    801 * @param userData Optional value passed to the callback.
    802 *
    -
    803 * @param callback Callback fired when ACK is received or on failure.
    -
    804 * @param userData Optional value passed to the callback.
    -
    805 *
    -
    806 * @returns true if the command was sent, false otherwise.
    -
    807 */
    -
    808 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    809
    -
    810 /**
    -
    811 * @brief Reboots the sensor.
    -
    812 *
    -
    813 * After reboot, the sensor stops responding for a few seconds.
    -
    814 * Config and engineering mode are reset.
    -
    815 *
    -
    816 * @note The reboot of the sensor takes place after the ACK has been sent.
    -
    817 *
    -
    818 * @param callback Callback fired when ACK is received or on failure.
    -
    819 * @param userData Optional value passed to the callback.
    -
    820 *
    -
    821 * @returns true if the command was sent, false otherwise.
    -
    822 */
    -
    823 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    824
    -
    825 /**
    -
    826 * @brief Enables bluetooth
    -
    827 *
    -
    828 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    829 * @param userData Optional value that will be passed to the callback function.
    -
    830 *
    -
    831 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    832 */
    -
    833 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    834
    -
    835 /**
    -
    836 * @brief Disables bluetooth
    -
    837 *
    -
    838 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    839 * @param userData Optional value that will be passed to the callback function.
    -
    840 *
    -
    841 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    842 */
    -
    843 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    844
    -
    845 /**
    -
    846 * @brief Requests the bluetooth mac address
    -
    847 *
    -
    848 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    -
    849 *
    -
    850 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    851 * @param userData Optional value that will be passed to the callback function.
    -
    852 *
    -
    853 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    854 */
    -
    855 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    856
    -
    857 /**
    -
    858 * @brief Sets the password for bluetooth access to the sensor.
    -
    859 *
    -
    860 * @param password New bluetooth password. Max 6. chars.
    -
    861 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    862 * @param userData Optional value that will be passed to the callback function.
    -
    863 *
    -
    864 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    865 */
    -
    866 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    -
    867
    -
    868 /**
    -
    869 * @brief Sets the password for bluetooth access to the sensor.
    -
    870 *
    -
    871 * @param password New bluetooth password. Max 6. chars.
    -
    872 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    873 * @param userData Optional value that will be passed to the callback function.
    -
    874 *
    -
    875 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    876 */
    -
    877 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    -
    878
    -
    879 /**
    -
    880 * @brief Resets the password for bluetooth access to the default value (HiLink)
    +
    803 * @returns true if the command was sent, false otherwise.
    +
    804 */
    +
    805 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    +
    806
    +
    807 /**
    +
    808 * @brief Configures the baudrate of the serial port of the sensor.
    +
    809 *
    +
    810 * The new baudrate will only become active after a reboot of the sensor.
    +
    811 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
    +
    812 *
    +
    813 * @note If another async command is pending, this call fails.
    +
    814 * @note After execution, call rebootAsync() to activate changes.
    +
    815 *
    +
    816 * @param baudrate A valid baud rate from the Baudrate enum.
    +
    817 *
    +
    818 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    819 * @param userData Optional value that will be passed to the callback function.
    +
    820 *
    +
    821 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    822 */
    +
    823 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    +
    824
    +
    825
    +
    826 /**
    +
    827 * @brief Restores factory settings of the sensor.
    +
    828 *
    +
    829 * Restored settings only become active after a reboot.
    +
    830 *
    +
    831 * @note Requires config mode. Will be managed automatically.
    +
    832 * @note After execution, call rebootAsync() to activate changes.
    +
    833 *
    +
    834 * @param callback Callback fired when ACK is received or on failure.
    +
    835 * @param userData Optional value passed to the callback.
    +
    836 *
    +
    837 * @returns true if the command was sent, false otherwise.
    +
    838 */
    +
    839 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    840
    +
    841 /**
    +
    842 * @brief Reboots the sensor.
    +
    843 *
    +
    844 * After reboot, the sensor stops responding for a few seconds.
    +
    845 * Config and engineering mode are reset.
    +
    846 *
    +
    847 * @note The reboot of the sensor takes place after the ACK has been sent.
    +
    848 *
    +
    849 * @param callback Callback fired when ACK is received or on failure.
    +
    850 * @param userData Optional value passed to the callback.
    +
    851 *
    +
    852 * @returns true if the command was sent, false otherwise.
    +
    853 */
    +
    854 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    855
    +
    856 /**
    +
    857 * @brief Enables bluetooth
    +
    858 *
    +
    859 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    860 * @param userData Optional value that will be passed to the callback function.
    +
    861 *
    +
    862 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    863 */
    +
    864 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    865
    +
    866 /**
    +
    867 * @brief Disables bluetooth
    +
    868 *
    +
    869 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    870 * @param userData Optional value that will be passed to the callback function.
    +
    871 *
    +
    872 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    873 */
    +
    874 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    875
    +
    876 /**
    +
    877 * @brief Requests the bluetooth mac address
    +
    878 *
    +
    879 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    +
    880 *
    881 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    882 * @param userData Optional value that will be passed to the callback function.
    883 *
    884 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    885 */
    -
    886 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    886 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    887
    888 /**
    -
    889 * @brief Configures the distance resolution of the radar.
    -
    890 *
    -
    891 * The distance resolution defines the size of each distance gate
    -
    892 * and the maximum detection range:
    -
    893 * - RESOLUTION_75CM → longer range, coarser detail.
    -
    894 * - RESOLUTION_20CM → shorter range, finer detail.
    -
    895 *
    -
    896 * @note Requires config mode. Will be managed automatically.
    -
    897 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    898 * @note Fails if another async command is pending.
    -
    899 *
    -
    900 * @param distanceResolution Value from the DistanceResolution enum.
    -
    901 * Must not be NOT_SET.
    -
    902 * @param callback Function pointer with signature:
    -
    903 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    904 * Fired when the ACK is received or on failure/timeout.
    -
    905 * @param userData Optional value passed to the callback.
    -
    906 *
    -
    907 * @returns true if the command was sent, false if invalid parameters
    -
    908 * or the library is busy.
    -
    909 */
    -
    910 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    -
    911
    -
    912 /**
    -
    913 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    +
    889 * @brief Sets the password for bluetooth access to the sensor.
    +
    890 *
    +
    891 * @param password New bluetooth password. Max 6. chars.
    +
    892 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    893 * @param userData Optional value that will be passed to the callback function.
    +
    894 *
    +
    895 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    896 */
    +
    897 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    +
    898
    +
    899 /**
    +
    900 * @brief Sets the password for bluetooth access to the sensor.
    +
    901 *
    +
    902 * @param password New bluetooth password. Max 6. chars.
    +
    903 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    904 * @param userData Optional value that will be passed to the callback function.
    +
    905 *
    +
    906 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    907 */
    +
    908 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    +
    909
    +
    910 /**
    +
    911 * @brief Resets the password for bluetooth access to the default value (HiLink)
    +
    912 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    913 * @param userData Optional value that will be passed to the callback function.
    914 *
    -
    915 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    -
    916 *
    -
    917 * @note Requires config mode. Will be managed automatically.
    -
    918 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    919 * @note Fails if another async command is pending.
    -
    920 *
    -
    921 * @param callback Function pointer with signature:
    -
    922 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    923 * @param userData Optional value passed to the callback.
    -
    924 *
    -
    925 * @returns true if the command was sent, false otherwise.
    -
    926 */
    -
    927 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    928
    -
    929 /**
    -
    930 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    -
    931 *
    -
    932 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    -
    933 *
    -
    934 * @note Requires config mode. Will be managed automatically.
    -
    935 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    936 * @note Fails if another async command is pending.
    -
    937 *
    -
    938 * @param callback Function pointer with signature:
    -
    939 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    940 * @param userData Optional value passed to the callback.
    -
    941 *
    -
    942 * @returns true if the command was sent, false otherwise.
    -
    943 */
    -
    944 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    945
    -
    946 /**
    -
    947 * @brief Requests the current distance resolution setting from the sensor.
    -
    948 *
    -
    949 * The result is written into configData.distanceResolution.
    -
    950 *
    -
    951 * @note Requires config mode. Will be managed automatically.
    -
    952 *
    -
    953 * @param callback Function pointer with signature:
    -
    954 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    955 * @param userData Optional value passed to the callback.
    -
    956 *
    -
    957 * @returns true if the command was sent, false otherwise.
    -
    958 */
    -
    959 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    960
    -
    961 /**
    -
    962 * @brief Configures the auxiliary control parameters (light and output pin).
    -
    963 *
    -
    964 * This configures how the OUT pin behaves depending on light levels
    -
    965 * and presence detection. Typical use cases include controlling
    -
    966 * an external lamp or relay.
    -
    967 *
    -
    968 * @note Requires config mode. Will be managed automatically.
    -
    969 * @note Both enums must be set to valid values (not NOT_SET).
    -
    970 * @note Fails if another async command is pending.
    -
    971 *
    -
    972 * @param lightControl Light control behavior (see LightControl enum).
    -
    973 * @param lightThreshold Threshold (0–255) used for light-based switching.
    -
    974 * @param outputControl Output pin logic configuration (see OutputControl enum).
    -
    975 * @param callback Function pointer with signature:
    -
    976 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    977 * Fired when ACK is received or on failure/timeout.
    -
    978 * @param userData Optional value passed to the callback.
    +
    915 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    916 */
    +
    917 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    918
    +
    919 /**
    +
    920 * @brief Configures the distance resolution of the radar.
    +
    921 *
    +
    922 * The distance resolution defines the size of each distance gate
    +
    923 * and the maximum detection range:
    +
    924 * - RESOLUTION_75CM → longer range, coarser detail.
    +
    925 * - RESOLUTION_20CM → shorter range, finer detail.
    +
    926 *
    +
    927 * @note Requires config mode. Will be managed automatically.
    +
    928 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    929 * @note Fails if another async command is pending.
    +
    930 *
    +
    931 * @param distanceResolution Value from the DistanceResolution enum.
    +
    932 * Must not be NOT_SET.
    +
    933 * @param callback Function pointer with signature:
    +
    934 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    935 * Fired when the ACK is received or on failure/timeout.
    +
    936 * @param userData Optional value passed to the callback.
    +
    937 *
    +
    938 * @returns true if the command was sent, false if invalid parameters
    +
    939 * or the library is busy.
    +
    940 */
    +
    941 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    +
    942
    +
    943 /**
    +
    944 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    +
    945 *
    +
    946 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    +
    947 *
    +
    948 * @note Requires config mode. Will be managed automatically.
    +
    949 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    950 * @note Fails if another async command is pending.
    +
    951 *
    +
    952 * @param callback Function pointer with signature:
    +
    953 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    954 * @param userData Optional value passed to the callback.
    +
    955 *
    +
    956 * @returns true if the command was sent, false otherwise.
    +
    957 */
    +
    958 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    959
    +
    960 /**
    +
    961 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    +
    962 *
    +
    963 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    +
    964 *
    +
    965 * @note Requires config mode. Will be managed automatically.
    +
    966 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    967 * @note Fails if another async command is pending.
    +
    968 *
    +
    969 * @param callback Function pointer with signature:
    +
    970 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    971 * @param userData Optional value passed to the callback.
    +
    972 *
    +
    973 * @returns true if the command was sent, false otherwise.
    +
    974 */
    +
    975 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    976
    +
    977 /**
    +
    978 * @brief Requests the current distance resolution setting from the sensor.
    979 *
    -
    980 * @returns true if the command was sent, false otherwise.
    -
    981 */
    -
    982 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    -
    983
    -
    984 /**
    -
    985 * @brief Requests the current auxiliary control settings.
    -
    986 *
    -
    987 * Fills configData.lightControl, configData.lightThreshold,
    -
    988 * and configData.outputControl.
    -
    989 *
    -
    990 * @note Requires config mode. Will be managed automatically.
    -
    991 *
    -
    992 * @param callback Function pointer with signature:
    -
    993 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    994 * Fired when ACK is received or on failure/timeout.
    -
    995 * @param userData Optional value passed to the callback.
    -
    996 *
    -
    997 * @returns true if the command was sent, false otherwise.
    -
    998 */
    -
    999 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1000
    -
    1001
    -
    1002 /**
    -
    1003 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    -
    1004 *
    -
    1005 * Auto-config lets the radar adjust its internal thresholds and
    -
    1006 * sensitivities for the current environment. This can take several
    -
    1007 * seconds to complete and results in updated sensitivity values.
    -
    1008 *
    -
    1009 * The progress and result can be checked with requestAutoConfigStatusAsync().
    +
    980 * The result is written into configData.distanceResolution.
    +
    981 *
    +
    982 * @note Requires config mode. Will be managed automatically.
    +
    983 *
    +
    984 * @param callback Function pointer with signature:
    +
    985 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    986 * @param userData Optional value passed to the callback.
    +
    987 *
    +
    988 * @returns true if the command was sent, false otherwise.
    +
    989 */
    +
    990 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    991
    +
    992 /**
    +
    993 * @brief Configures the auxiliary control parameters (light and output pin).
    +
    994 *
    +
    995 * This configures how the OUT pin behaves depending on light levels
    +
    996 * and presence detection. Typical use cases include controlling
    +
    997 * an external lamp or relay.
    +
    998 *
    +
    999 * @note Requires config mode. Will be managed automatically.
    +
    1000 * @note Both enums must be set to valid values (not NOT_SET).
    +
    1001 * @note Fails if another async command is pending.
    +
    1002 *
    +
    1003 * @param lightControl Light control behavior (see LightControl enum).
    +
    1004 * @param lightThreshold Threshold (0–255) used for light-based switching.
    +
    1005 * @param outputControl Output pin logic configuration (see OutputControl enum).
    +
    1006 * @param callback Function pointer with signature:
    +
    1007 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1008 * Fired when ACK is received or on failure/timeout.
    +
    1009 * @param userData Optional value passed to the callback.
    1010 *
    -
    1011 * @note Requires config mode. This method will manage entering and
    -
    1012 * exiting config mode automatically.
    -
    1013 * @note Auto-config temporarily suspends normal detection reporting.
    -
    1014 *
    -
    1015 * ## Example: Run auto-config
    -
    1016 * @code
    -
    1017 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    -
    1018 * AsyncCommandResult result,
    -
    1019 * byte) {
    -
    1020 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1021 * Serial.println("Auto-config started.");
    -
    1022 * } else {
    -
    1023 * Serial.println("Failed to start auto-config.");
    -
    1024 * }
    -
    1025 * });
    -
    1026 * @endcode
    +
    1011 * @returns true if the command was sent, false otherwise.
    +
    1012 */
    +
    1013 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    +
    1014
    +
    1015 /**
    +
    1016 * @brief Requests the current auxiliary control settings.
    +
    1017 *
    +
    1018 * Fills configData.lightControl, configData.lightThreshold,
    +
    1019 * and configData.outputControl.
    +
    1020 *
    +
    1021 * @note Requires config mode. Will be managed automatically.
    +
    1022 *
    +
    1023 * @param callback Function pointer with signature:
    +
    1024 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1025 * Fired when ACK is received or on failure/timeout.
    +
    1026 * @param userData Optional value passed to the callback.
    1027 *
    -
    1028 * ## Do:
    -
    1029 * - Use in new environments to optimize detection performance.
    -
    1030 * - Query status afterwards with requestAutoConfigStatusAsync().
    -
    1031 *
    -
    1032 * ## Don’t:
    -
    1033 * - Expect instant results — the sensor needs time to complete the process.
    -
    1034 *
    -
    1035 * @param callback Callback with signature:
    -
    1036 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1037 * Fired when the command is acknowledged or on failure/timeout.
    -
    1038 * @param userData Optional value passed to the callback.
    +
    1028 * @returns true if the command was sent, false otherwise.
    +
    1029 */
    +
    1030 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1031
    +
    1032
    +
    1033 /**
    +
    1034 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    +
    1035 *
    +
    1036 * Auto-config lets the radar adjust its internal thresholds and
    +
    1037 * sensitivities for the current environment. This can take several
    +
    1038 * seconds to complete and results in updated sensitivity values.
    1039 *
    -
    1040 * @returns true if the command was sent, false otherwise.
    -
    1041 */
    -
    1042 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1043
    -
    1044
    -
    1045 /**
    -
    1046 * @brief Requests the current status of the auto-config routine.
    -
    1047 *
    -
    1048 * The status is written into the member variable autoConfigStatus:
    -
    1049 * - NOT_IN_PROGRESS → no auto-config running.
    -
    1050 * - IN_PROGRESS → auto-config is currently running.
    -
    1051 * - COMPLETED → auto-config finished (success or failure).
    -
    1052 *
    -
    1053 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1054 * @note If another async command is already pending, this call fails.
    -
    1055 *
    -
    1056 * ## Example: Check auto-config status
    -
    1057 * @code
    -
    1058 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    -
    1059 * AsyncCommandResult result,
    -
    1060 * byte) {
    -
    1061 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1062 * switch (sender->autoConfigStatus) {
    -
    1063 * case AutoConfigStatus::NOT_IN_PROGRESS:
    -
    1064 * Serial.println("Auto-config not running.");
    -
    1065 * break;
    -
    1066 * case AutoConfigStatus::IN_PROGRESS:
    -
    1067 * Serial.println("Auto-config in progress...");
    -
    1068 * break;
    -
    1069 * case AutoConfigStatus::COMPLETED:
    -
    1070 * Serial.println("Auto-config completed.");
    -
    1071 * break;
    -
    1072 * default:
    -
    1073 * Serial.println("Unknown auto-config status.");
    -
    1074 * }
    -
    1075 * } else {
    -
    1076 * Serial.println("Failed to request auto-config status.");
    -
    1077 * }
    -
    1078 * });
    -
    1079 * @endcode
    -
    1080 *
    -
    1081 * ## Do:
    -
    1082 * - Use this after beginAutoConfigAsync() to track progress.
    -
    1083 * - Use autoConfigStatus for decision-making in your logic.
    -
    1084 *
    -
    1085 * ## Don’t:
    -
    1086 * - Assume COMPLETED means success — thresholds should still be verified.
    -
    1087 *
    -
    1088 * @param callback Callback with signature:
    -
    1089 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1090 * Fired when the sensor replies or on failure/timeout.
    -
    1091 * @param userData Optional value passed to the callback.
    -
    1092 *
    -
    1093 * @returns true if the command was sent, false otherwise.
    -
    1094 */
    -
    1095 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1096
    -
    1097
    -
    1098
    -
    1099 /*---------------------------------------------------------------------------------
    -
    1100 - High level commands
    -
    1101 ---------------------------------------------------------------------------------*/
    -
    1102 // High level commands typically encapsulate several native commands.
    -
    1103 // They provide a more consistent access to the sensors configuration,
    -
    1104 // e.g. for reading all config data 3 native commands are necessary,
    -
    1105 // to update the same data up to 12 native commands may be required.
    -
    1106 //The highlevel commands encapsulate both situation into a single command
    -
    1107
    -
    1108 /**
    -
    1109 * @brief Requests all configuration settings from the sensor.
    -
    1110 *
    -
    1111 * This triggers a sequence of queries that retrieves and updates:
    -
    1112 * - Gate parameters (sensitivities, max gates, timeout).
    -
    1113 * - Distance resolution setting.
    -
    1114 * - Auxiliary light/output control settings.
    +
    1040 * The progress and result can be checked with requestAutoConfigStatusAsync().
    +
    1041 *
    +
    1042 * @note Requires config mode. This method will manage entering and
    +
    1043 * exiting config mode automatically.
    +
    1044 * @note Auto-config temporarily suspends normal detection reporting.
    +
    1045 *
    +
    1046 * ## Example: Run auto-config
    +
    1047 * @code
    +
    1048 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    +
    1049 * AsyncCommandResult result,
    +
    1050 * byte) {
    +
    1051 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1052 * Serial.println("Auto-config started.");
    +
    1053 * } else {
    +
    1054 * Serial.println("Failed to start auto-config.");
    +
    1055 * }
    +
    1056 * });
    +
    1057 * @endcode
    +
    1058 *
    +
    1059 * ## Do:
    +
    1060 * - Use in new environments to optimize detection performance.
    +
    1061 * - Query status afterwards with requestAutoConfigStatusAsync().
    +
    1062 *
    +
    1063 * ## Don’t:
    +
    1064 * - Expect instant results — the sensor needs time to complete the process.
    +
    1065 *
    +
    1066 * @param callback Callback with signature:
    +
    1067 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1068 * Fired when the command is acknowledged or on failure/timeout.
    +
    1069 * @param userData Optional value passed to the callback.
    +
    1070 *
    +
    1071 * @returns true if the command was sent, false otherwise.
    +
    1072 */
    +
    1073 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1074
    +
    1075
    +
    1076 /**
    +
    1077 * @brief Requests the current status of the auto-config routine.
    +
    1078 *
    +
    1079 * The status is written into the member variable autoConfigStatus:
    +
    1080 * - NOT_IN_PROGRESS → no auto-config running.
    +
    1081 * - IN_PROGRESS → auto-config is currently running.
    +
    1082 * - COMPLETED → auto-config finished (success or failure).
    +
    1083 *
    +
    1084 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1085 * @note If another async command is already pending, this call fails.
    +
    1086 *
    +
    1087 * ## Example: Check auto-config status
    +
    1088 * @code
    +
    1089 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    +
    1090 * AsyncCommandResult result,
    +
    1091 * byte) {
    +
    1092 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1093 * switch (sender->autoConfigStatus) {
    +
    1094 * case AutoConfigStatus::NOT_IN_PROGRESS:
    +
    1095 * Serial.println("Auto-config not running.");
    +
    1096 * break;
    +
    1097 * case AutoConfigStatus::IN_PROGRESS:
    +
    1098 * Serial.println("Auto-config in progress...");
    +
    1099 * break;
    +
    1100 * case AutoConfigStatus::COMPLETED:
    +
    1101 * Serial.println("Auto-config completed.");
    +
    1102 * break;
    +
    1103 * default:
    +
    1104 * Serial.println("Unknown auto-config status.");
    +
    1105 * }
    +
    1106 * } else {
    +
    1107 * Serial.println("Failed to request auto-config status.");
    +
    1108 * }
    +
    1109 * });
    +
    1110 * @endcode
    +
    1111 *
    +
    1112 * ## Do:
    +
    1113 * - Use this after beginAutoConfigAsync() to track progress.
    +
    1114 * - Use autoConfigStatus for decision-making in your logic.
    1115 *
    -
    1116 * The results are stored in configData, and the
    -
    1117 * registerConfigUpdateReceivedCallback() is invoked after completion.
    +
    1116 * ## Don’t:
    +
    1117 * - Assume COMPLETED means success — thresholds should still be verified.
    1118 *
    -
    1119 * @note This is a high-level method that involves multiple commands.
    -
    1120 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1121 * @note If another async command is already pending, the request fails.
    -
    1122 *
    -
    1123 * ## Example: Refresh config data
    -
    1124 * @code
    -
    1125 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    -
    1126 * AsyncCommandResult result,
    -
    1127 * byte) {
    -
    1128 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1129 * Serial.println("All config data refreshed:");
    -
    1130 * sender->getConfigDataRef().print();
    -
    1131 * }
    -
    1132 * });
    -
    1133 * @endcode
    -
    1134 *
    -
    1135 * ## Do:
    -
    1136 * - Use this after connecting to ensure configData is fully populated.
    -
    1137 * - Call before modifying config if you’re unsure of current values.
    -
    1138 *
    -
    1139 * ## Don’t:
    -
    1140 * - Expect it to succeed if another async command is still running.
    +
    1119 * @param callback Callback with signature:
    +
    1120 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1121 * Fired when the sensor replies or on failure/timeout.
    +
    1122 * @param userData Optional value passed to the callback.
    +
    1123 *
    +
    1124 * @returns true if the command was sent, false otherwise.
    +
    1125 */
    +
    1126 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1127
    +
    1128
    +
    1129
    +
    1130 /*---------------------------------------------------------------------------------
    +
    1131 - High level commands
    +
    1132 ---------------------------------------------------------------------------------*/
    +
    1133 // High level commands typically encapsulate several native commands.
    +
    1134 // They provide a more consistent access to the sensors configuration,
    +
    1135 // e.g. for reading all config data 3 native commands are necessary,
    +
    1136 // to update the same data up to 12 native commands may be required.
    +
    1137 //The highlevel commands encapsulate both situation into a single command
    +
    1138
    +
    1139 /**
    +
    1140 * @brief Requests all configuration settings from the sensor.
    1141 *
    -
    1142 * @param callback Callback with signature:
    -
    1143 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1144 * Fired when all config data has been received or on failure.
    -
    1145 * @param userData Optional value passed to the callback.
    +
    1142 * This triggers a sequence of queries that retrieves and updates:
    +
    1143 * - Gate parameters (sensitivities, max gates, timeout).
    +
    1144 * - Distance resolution setting.
    +
    1145 * - Auxiliary light/output control settings.
    1146 *
    -
    1147 * @returns true if the command was sent, false otherwise.
    -
    1148 */
    -
    1149 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1150
    -
    1151
    -
    1152 /**
    -
    1153 * @brief Requests all static information from the sensor.
    -
    1154 *
    -
    1155 * This includes:
    -
    1156 * - Firmware version string.
    -
    1157 * - Bluetooth MAC address (numeric and string form).
    -
    1158 *
    -
    1159 * The values are written into the public members `firmware`, `mac`,
    -
    1160 * and `macString`.
    -
    1161 *
    -
    1162 * @note This is a high-level method that involves multiple commands.
    -
    1163 * @note Requires config mode. Managed automatically by this method.
    -
    1164 * @note If another async command is already pending, the request fails.
    +
    1147 * The results are stored in configData, and the
    +
    1148 * registerConfigUpdateReceivedCallback() is invoked after completion.
    +
    1149 *
    +
    1150 * @note This is a high-level method that involves multiple commands.
    +
    1151 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1152 * @note If another async command is already pending, the request fails.
    +
    1153 *
    +
    1154 * ## Example: Refresh config data
    +
    1155 * @code
    +
    1156 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    +
    1157 * AsyncCommandResult result,
    +
    1158 * byte) {
    +
    1159 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1160 * Serial.println("All config data refreshed:");
    +
    1161 * sender->getConfigDataRef().print();
    +
    1162 * }
    +
    1163 * });
    +
    1164 * @endcode
    1165 *
    -
    1166 * ## Example: Retrieve firmware and MAC
    -
    1167 * @code
    -
    1168 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    -
    1169 * AsyncCommandResult result,
    -
    1170 * byte) {
    -
    1171 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1172 * Serial.print("Firmware: ");
    -
    1173 * Serial.println(sender->firmware);
    -
    1174 *
    -
    1175 * Serial.print("MAC: ");
    -
    1176 * Serial.println(sender->macString);
    -
    1177 * }
    -
    1178 * });
    -
    1179 * @endcode
    -
    1180 *
    -
    1181 * ## Do:
    -
    1182 * - Use after initialization to log firmware version and MAC.
    -
    1183 * - Useful for debugging or inventory identification.
    -
    1184 *
    -
    1185 * ## Don’t:
    -
    1186 * - Expect frequently changing data — this is static information.
    -
    1187 *
    -
    1188 * @param callback Callback with signature:
    -
    1189 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1190 * Fired when static data is received or on failure.
    -
    1191 * @param userData Optional value passed to the callback.
    +
    1166 * ## Do:
    +
    1167 * - Use this after connecting to ensure configData is fully populated.
    +
    1168 * - Call before modifying config if you’re unsure of current values.
    +
    1169 *
    +
    1170 * ## Don’t:
    +
    1171 * - Expect it to succeed if another async command is still running.
    +
    1172 *
    +
    1173 * @param callback Callback with signature:
    +
    1174 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1175 * Fired when all config data has been received or on failure.
    +
    1176 * @param userData Optional value passed to the callback.
    +
    1177 *
    +
    1178 * @returns true if the command was sent, false otherwise.
    +
    1179 */
    +
    1180 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1181
    +
    1182
    +
    1183 /**
    +
    1184 * @brief Requests all static information from the sensor.
    +
    1185 *
    +
    1186 * This includes:
    +
    1187 * - Firmware version string.
    +
    1188 * - Bluetooth MAC address (numeric and string form).
    +
    1189 *
    +
    1190 * The values are written into the public members `firmware`, `mac`,
    +
    1191 * and `macString`.
    1192 *
    -
    1193 * @returns true if the command was sent, false otherwise.
    -
    1194 */
    -
    1195 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1196
    -
    1197
    -
    1198
    -
    1199 /**
    -
    1200 * @brief Applies a full ConfigData struct to the LD2410.
    -
    1201 *
    -
    1202 * If writeAllConfigData is true, the method will first fetch the current config,
    -
    1203 * compare it with the provide Config data and then create a command sequence that
    -
    1204 * will only update the changes config values.
    -
    1205 * If writeAllConfigData is false, the method will write all values in the provided
    -
    1206 * ConfigData to the sensor, regardless of whether they differ from the current config.
    -
    1207 *
    -
    1208 * @note This is a high-level method that involves multiple commands (up to 18).
    -
    1209 * @note Requires config mode. This method will manage entering and
    -
    1210 * exiting config mode automatically (if config mode is not already active).
    -
    1211 * @note If another async command is already pending, the command fails.
    -
    1212 * @note Any members of ConfigData that are left at invalid values
    -
    1213 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    -
    1214 *
    -
    1215 * ## Example: Clone, modify, and apply config
    -
    1216 * @code
    -
    1217 * ConfigData cfg = radar.getConfigData(); // clone current config
    -
    1218 * cfg.noOneTimeout = 120; // change timeout
    -
    1219 * cfg.distanceGateMotionSensitivity[2] = 75;
    -
    1220 *
    -
    1221 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    1222 * AsyncCommandResult result,
    -
    1223 * byte) {
    -
    1224 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1225 * Serial.println("All config applied successfully!");
    -
    1226 * }
    -
    1227 * });
    -
    1228 * @endcode
    -
    1229 *
    -
    1230 * ## Do:
    -
    1231 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    -
    1232 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    -
    1233 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    -
    1234 *
    -
    1235 * ## Don’t:
    -
    1236 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    -
    1237 * This generates unnecessary wear on the sensors memory.
    -
    1238 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    -
    1239
    -
    1240 *
    -
    1241 * @param configToWrite The configuration data to be applied.
    -
    1242 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    -
    1243 * @param callback Function with signature:
    -
    1244 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    -
    1245 * executed when the sequence finishes (success/fail/timeout/cancel).
    -
    1246 * @param userData Optional value passed to the callback.
    -
    1247 *
    -
    1248 * @returns true if the command sequence has been started, false otherwise.
    -
    1249 */
    -
    1250 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0);
    -
    1251
    -
    1252
    -
    1253
    -
    1254private:
    -
    1255 // ============================================================================
    -
    1256 // Low-level serial interface
    -
    1257 // ============================================================================
    -
    1258
    -
    1259 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    -
    1260 Stream* sensor;
    -
    1261
    -
    1262
    -
    1263 // ============================================================================
    -
    1264 // Frame parsing state machine
    -
    1265 // ============================================================================
    -
    1266
    -
    1267 /// States used when parsing incoming frames from the sensor
    -
    1268 enum ReadFrameState {
    -
    1269 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    -
    1270 ACK_HEADER, ///< Parsing header of an ACK frame
    -
    1271 DATA_HEADER, ///< Parsing header of a DATA frame
    -
    1272 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    -
    1273 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    -
    1274 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    -
    1275 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    -
    1276 };
    -
    1277
    -
    1278 /// Result type when trying to read a frame
    -
    1279 enum FrameReadResponse {
    -
    1280 FAIL = 0, ///< Frame was invalid or incomplete
    -
    1281 ACK, ///< A valid ACK frame was received
    -
    1282 DATA ///< A valid DATA frame was received
    -
    1283 };
    +
    1193 * @note This is a high-level method that involves multiple commands.
    +
    1194 * @note Requires config mode. Managed automatically by this method.
    +
    1195 * @note If another async command is already pending, the request fails.
    +
    1196 *
    +
    1197 * ## Example: Retrieve firmware and MAC
    +
    1198 * @code
    +
    1199 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    +
    1200 * AsyncCommandResult result,
    +
    1201 * byte) {
    +
    1202 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1203 * Serial.print("Firmware: ");
    +
    1204 * Serial.println(sender->firmware);
    +
    1205 *
    +
    1206 * Serial.print("MAC: ");
    +
    1207 * Serial.println(sender->macString);
    +
    1208 * }
    +
    1209 * });
    +
    1210 * @endcode
    +
    1211 *
    +
    1212 * ## Do:
    +
    1213 * - Use after initialization to log firmware version and MAC.
    +
    1214 * - Useful for debugging or inventory identification.
    +
    1215 *
    +
    1216 * ## Don’t:
    +
    1217 * - Expect frequently changing data — this is static information.
    +
    1218 *
    +
    1219 * @param callback Callback with signature:
    +
    1220 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1221 * Fired when static data is received or on failure.
    +
    1222 * @param userData Optional value passed to the callback.
    +
    1223 *
    +
    1224 * @returns true if the command was sent, false otherwise.
    +
    1225 */
    +
    1226 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1227
    +
    1228
    +
    1229
    +
    1230 /**
    +
    1231 * @brief Applies a full ConfigData struct to the LD2410.
    +
    1232 *
    +
    1233 * If writeAllConfigData is true, the method will first fetch the current config,
    +
    1234 * compare it with the provide Config data and then create a command sequence that
    +
    1235 * will only update the changes config values.
    +
    1236 * If writeAllConfigData is false, the method will write all values in the provided
    +
    1237 * ConfigData to the sensor, regardless of whether they differ from the current config.
    +
    1238 *
    +
    1239 * @note This is a high-level method that involves multiple commands (up to 18).
    +
    1240 * @note Requires config mode. This method will manage entering and
    +
    1241 * exiting config mode automatically (if config mode is not already active).
    +
    1242 * @note If another async command is already pending, the command fails.
    +
    1243 * @note Any members of ConfigData that are left at invalid values
    +
    1244 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    +
    1245 *
    +
    1246 * ## Example: Clone, modify, and apply config
    +
    1247 * @code
    +
    1248 * ConfigData cfg = radar.getConfigData(); // clone current config
    +
    1249 * cfg.noOneTimeout = 120; // change timeout
    +
    1250 * cfg.distanceGateMotionSensitivity[2] = 75;
    +
    1251 *
    +
    1252 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    1253 * AsyncCommandResult result,
    +
    1254 * byte) {
    +
    1255 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1256 * Serial.println("All config applied successfully!");
    +
    1257 * }
    +
    1258 * });
    +
    1259 * @endcode
    +
    1260 *
    +
    1261 * ## Do:
    +
    1262 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    +
    1263 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    +
    1264 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    +
    1265 *
    +
    1266 * ## Don’t:
    +
    1267 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    +
    1268 * This generates unnecessary wear on the sensors memory.
    +
    1269 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    +
    1270
    +
    1271 *
    +
    1272 * @param configToWrite The configuration data to be applied.
    +
    1273 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    +
    1274 * @param callback Function with signature:
    +
    1275 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    +
    1276 * executed when the sequence finishes (success/fail/timeout/cancel).
    +
    1277 * @param userData Optional value passed to the callback.
    +
    1278 *
    +
    1279 * @returns true if the command sequence has been started, false otherwise.
    +
    1280 */
    +
    1281 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    +
    1282
    +
    1283
    1284
    -
    1285 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    -
    1286 int payloadSize = 0; ///< Expected payload size of current frame
    -
    1287 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    -
    1288
    -
    1289 /// Extract payload size from the current byte and update state machine
    -
    1290 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    -
    1291
    -
    1292 /// Read payload bytes until full ACK/DATA frame is assembled
    -
    1293 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    -
    1294
    -
    1295 /// State machine entry: read incoming frame and return read response
    -
    1296 FrameReadResponse readFrame();
    -
    1297
    -
    1298
    -
    1299 // ============================================================================
    -
    1300 // Receive buffer
    -
    1301 // ============================================================================
    -
    1302
    -
    1303 /// Raw buffer for storing incoming bytes
    -
    1304 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    -
    1305
    -
    1306 /// Current index into receiveBuffer
    -
    1307 byte receiveBufferIndex = 0;
    -
    1308
    -
    1309
    -
    1310 // ============================================================================
    -
    1311 // Asynchronous command sequence handling
    -
    1312 // ============================================================================
    -
    1313
    -
    1314 /// Maximum number of commands in one async sequence
    -
    1315 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    -
    1316
    -
    1317 /// Buffer holding queued commands for sequence execution
    -
    1318 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    +
    1285private:
    +
    1286 // ============================================================================
    +
    1287 // Low-level serial interface
    +
    1288 // ============================================================================
    +
    1289
    +
    1290 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    +
    1291 Stream* sensor;
    +
    1292
    +
    1293
    +
    1294 // ============================================================================
    +
    1295 // Frame parsing state machine
    +
    1296 // ============================================================================
    +
    1297
    +
    1298 /// States used when parsing incoming frames from the sensor
    +
    1299 enum ReadFrameState {
    +
    1300 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    +
    1301 ACK_HEADER, ///< Parsing header of an ACK frame
    +
    1302 DATA_HEADER, ///< Parsing header of a DATA frame
    +
    1303 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    +
    1304 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    +
    1305 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    +
    1306 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    +
    1307 };
    +
    1308
    +
    1309 /// Result type when trying to read a frame
    +
    1310 enum FrameReadResponse {
    +
    1311 FAIL = 0, ///< Frame was invalid or incomplete
    +
    1312 ACK, ///< A valid ACK frame was received
    +
    1313 DATA ///< A valid DATA frame was received
    +
    1314 };
    +
    1315
    +
    1316 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    +
    1317 int payloadSize = 0; ///< Expected payload size of current frame
    +
    1318 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    1319
    -
    1320 /// Number of commands currently queued in the sequence buffer
    -
    1321 byte commandSequenceBufferCount = 0;
    +
    1320 /// Extract payload size from the current byte and update state machine
    +
    1321 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    1322
    -
    1323 /// Timestamp when the current async sequence started
    -
    1324 unsigned long executeCommandSequenceStartMs = 0;
    +
    1323 /// Read payload bytes until full ACK/DATA frame is assembled
    +
    1324 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    1325
    -
    1326 /// Callback for current async sequence
    -
    1327 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    -
    1328
    -
    1329 /// User-provided data passed to async sequence callback
    -
    1330 byte executeCommandSequenceUserData = 0;
    -
    1331
    -
    1332 /// True if an async sequence is currently pending.
    -
    1333 bool executeCommandSequenceActive = false;
    -
    1334
    -
    1335 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    -
    1336 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    -
    1337 Ticker executeCommandSequenceOnceTicker;
    -
    1338
    -
    1339 /// Index of currently active command in the sequence buffer
    -
    1340 int executeCommandSequenceIndex = 0;
    -
    1341
    -
    1342 /// Stores config mode state before sequence started (to restore later)
    -
    1343 bool executeCommandSequenceInitialConfigModeState = false;
    +
    1326 /// State machine entry: read incoming frame and return read response
    +
    1327 FrameReadResponse readFrame();
    +
    1328
    +
    1329
    +
    1330 // ============================================================================
    +
    1331 // Receive buffer
    +
    1332 // ============================================================================
    +
    1333
    +
    1334 /// Raw buffer for storing incoming bytes
    +
    1335 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    +
    1336
    +
    1337 /// Current index into receiveBuffer
    +
    1338 byte receiveBufferIndex = 0;
    +
    1339
    +
    1340
    +
    1341 // ============================================================================
    +
    1342 // Asynchronous command sequence handling
    +
    1343 // ============================================================================
    1344
    -
    1345 /// Finalize an async sequence and invoke its callback
    -
    1346 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1345 /// Maximum number of commands in one async sequence
    +
    1346 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    1347
    -
    1348 /// Final step of an async sequence: restore config mode if needed and call callback
    -
    1349 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1348 /// Buffer holding queued commands for sequence execution
    +
    1349 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    1350
    -
    1351 /// Internal callbacks for sequence steps
    -
    1352 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1353 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1354
    -
    1355 /// Start executing an async sequence
    -
    1356 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1357
    -
    1358 /// Add one command to the sequence buffer
    -
    1359 bool addCommandToSequence(const byte* command);
    -
    1360
    -
    1361 /// Reset sequence buffer to empty
    -
    1362 bool resetCommandSequence();
    -
    1363
    -
    1364
    -
    1365 // ============================================================================
    -
    1366 // Inactivity handling
    -
    1367 // ============================================================================
    -
    1368
    -
    1369 /// Update last-activity timestamp ("I am alive" signal)
    -
    1370 void heartbeat();
    -
    1371
    -
    1372 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    -
    1373 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    -
    1374 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    -
    1375 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    -
    1376
    -
    1377 /// Main inactivity handler: exit config mode or reboot if stuck
    -
    1378 void handleInactivity();
    -
    1379
    -
    1380 /// Callback for reboot triggered by inactivity handler
    -
    1381 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1382
    -
    1383 /// Callback for disabling config mode during inactivity recovery
    -
    1384 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1385
    -
    1386
    -
    1387 // ============================================================================
    -
    1388 // Reboot handling
    -
    1389 // ============================================================================
    -
    1390
    -
    1391 /// Step 1: Enter config mode before reboot
    -
    1392 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1393
    -
    1394 /// Step 2: Issue reboot command
    -
    1395 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1396
    -
    1397
    +
    1351 /// Number of commands currently queued in the sequence buffer
    +
    1352 byte commandSequenceBufferCount = 0;
    +
    1353
    +
    1354 /// Timestamp when the current async sequence started
    +
    1355 unsigned long executeCommandSequenceStartMs = 0;
    +
    1356
    +
    1357 /// Callback for current async sequence
    +
    1358 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    +
    1359
    +
    1360 /// User-provided data passed to async sequence callback
    +
    1361 byte executeCommandSequenceUserData = 0;
    +
    1362
    +
    1363 /// True if an async sequence is currently pending.
    +
    1364 bool executeCommandSequenceActive = false;
    +
    1365
    +
    1366 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    +
    1367 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    +
    1368 Ticker executeCommandSequenceOnceTicker;
    +
    1369
    +
    1370 /// Index of currently active command in the sequence buffer
    +
    1371 int executeCommandSequenceIndex = 0;
    +
    1372
    +
    1373 /// Stores config mode state before sequence started (to restore later)
    +
    1374 bool executeCommandSequenceInitialConfigModeState = false;
    +
    1375
    +
    1376 /// Finalize an async sequence and invoke its callback
    +
    1377 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1378
    +
    1379 /// Final step of an async sequence: restore config mode if needed and call callback
    +
    1380 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1381
    +
    1382 /// Internal callbacks for sequence steps
    +
    1383 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1384 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1385
    +
    1386 /// Start executing an async sequence
    +
    1387 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1388
    +
    1389 /// Add one command to the sequence buffer
    +
    1390 bool addCommandToSequence(const byte* command);
    +
    1391
    +
    1392 /// Reset sequence buffer to empty
    +
    1393 bool resetCommandSequence();
    +
    1394
    +
    1395
    +
    1396 // ============================================================================
    +
    1397 // Inactivity handling
    1398 // ============================================================================
    -
    1399 // ACK/DATA processing
    -
    1400 // ============================================================================
    -
    1401
    -
    1402 /// Process a received ACK frame
    -
    1403 bool processAck();
    -
    1404
    -
    1405 /// Process a received DATA frame
    -
    1406 bool processData();
    -
    1407
    -
    1408
    -
    1409 // ============================================================================
    -
    1410 // Callbacks
    -
    1411 // ============================================================================
    -
    1412
    -
    1413 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    -
    1414 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    -
    1415 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    +
    1399
    +
    1400 /// Update last-activity timestamp ("I am alive" signal)
    +
    1401 void heartbeat();
    +
    1402
    +
    1403 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    +
    1404 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    +
    1405 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    +
    1406 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    +
    1407
    +
    1408 /// Main inactivity handler: exit config mode or reboot if stuck
    +
    1409 void handleInactivity();
    +
    1410
    +
    1411 /// Callback for reboot triggered by inactivity handler
    +
    1412 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1413
    +
    1414 /// Callback for disabling config mode during inactivity recovery
    +
    1415 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1416
    -
    1417 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    -
    1418 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    -
    1419 void executeConfigChangedCallback(); ///< Execute config-changed callback
    -
    1420
    -
    1421 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    -
    1422 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    -
    1423
    -
    1424
    -
    1425 // ============================================================================
    -
    1426 // Command sending
    -
    1427 // ============================================================================
    -
    1428
    -
    1429 /// Send raw command bytes to the sensor
    -
    1430 void sendCommand(const byte* command);
    -
    1431
    -
    1432
    -
    1433 // ============================================================================
    -
    1434 // FreeRTOS task management
    -
    1435 // ============================================================================
    -
    1436
    -
    1437 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    -
    1438 bool taskStop = false; ///< Stop flag for task loop
    -
    1439 void taskLoop(); ///< Background task loop for reading data
    -
    1440
    -
    1441
    +
    1417
    +
    1418 // ============================================================================
    +
    1419 // Reboot handling
    +
    1420 // ============================================================================
    +
    1421
    +
    1422 /// Step 1: Enter config mode before reboot
    +
    1423 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1424
    +
    1425 /// Step 2: Issue reboot command
    +
    1426 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1427
    +
    1428
    +
    1429 // ============================================================================
    +
    1430 // ACK/DATA processing
    +
    1431 // ============================================================================
    +
    1432
    +
    1433 /// Process a received ACK frame
    +
    1434 bool processAck();
    +
    1435
    +
    1436 /// Process a received DATA frame
    +
    1437 bool processData();
    +
    1438
    +
    1439
    +
    1440 // ============================================================================
    +
    1441 // Callbacks
    1442 // ============================================================================
    -
    1443 // Async command handling
    -
    1444 // ============================================================================
    -
    1445
    -
    1446 ///< Timeout for async commands in ms (default 6000).
    -
    1447 unsigned long asyncCommandTimeoutMs = 6000;
    -
    1448
    -
    1449 /// Send a generic async command
    -
    1450 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    -
    1451
    -
    1452 /// Invoke async command callback with result
    -
    1453 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1443
    +
    1444 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    +
    1445 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    +
    1446 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    +
    1447
    +
    1448 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    +
    1449 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    +
    1450 void executeConfigChangedCallback(); ///< Execute config-changed callback
    +
    1451
    +
    1452 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    +
    1453 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    1454
    1455
    -
    1456
    -
    1457 /// Handle async command timeout
    -
    1458 void handleAsyncCommandCallbackTimeout();
    +
    1456 // ============================================================================
    +
    1457 // Command sending
    +
    1458 // ============================================================================
    1459
    -
    1460 /// Send async command that modifies configuration
    -
    1461 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1460 /// Send raw command bytes to the sensor
    +
    1461 void sendCommand(const byte* command);
    1462
    -
    1463 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    -
    1464 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    -
    1465 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    -
    1466 byte asyncCommandCommandCode = 0; ///< Last command code issued
    -
    1467 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    -
    1468
    -
    1469
    -
    1470 // ============================================================================
    -
    1471 // Data processing
    -
    1472 // ============================================================================
    -
    1473
    -
    1474 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    -
    1475 void processReceivedData();
    -
    1476
    -
    1477 // ============================================================================
    -
    1478 // Config mode
    -
    1479 // ============================================================================
    -
    1480 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1481 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1482
    -
    1483 // ============================================================================
    -
    1484 // Config writing
    -
    1485 // ============================================================================
    -
    1486 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    -
    1487 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    -
    1488 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    -
    1489 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    -
    1490 bool configureAllConfigSettingsAsyncConfigActive = false;
    -
    1491 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    -
    1492 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1463
    +
    1464 // ============================================================================
    +
    1465 // FreeRTOS task management
    +
    1466 // ============================================================================
    +
    1467
    +
    1468 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    +
    1469 bool taskStop = false; ///< Stop flag for task loop
    +
    1470 void taskLoop(); ///< Background task loop for reading data
    +
    1471
    +
    1472
    +
    1473 // ============================================================================
    +
    1474 // Async command handling
    +
    1475 // ============================================================================
    +
    1476
    +
    1477 ///< Timeout for async commands in ms (default 6000).
    +
    1478 unsigned long asyncCommandTimeoutMs = 6000;
    +
    1479
    +
    1480 /// Send a generic async command
    +
    1481 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1482
    +
    1483 /// Invoke async command callback with result
    +
    1484 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1485
    +
    1486
    +
    1487
    +
    1488 /// Handle async command timeout
    +
    1489 void handleAsyncCommandCallbackTimeout();
    +
    1490
    +
    1491 /// Send async command that modifies configuration
    +
    1492 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1493
    -
    1494 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1495 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1496 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1497 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1498 bool configureAllConfigSettingsAsyncWriteConfig();
    -
    1499 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1500 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1501 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1502
    -
    1503 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    -
    1504
    -
    1505};
    +
    1494 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    +
    1495 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    +
    1496 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    +
    1497 byte asyncCommandCommandCode = 0; ///< Last command code issued
    +
    1498 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    +
    1499
    +
    1500
    +
    1501 // ============================================================================
    +
    1502 // Data processing
    +
    1503 // ============================================================================
    +
    1504
    +
    1505 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    +
    1506 void processReceivedData();
    +
    1507
    +
    1508 // ============================================================================
    +
    1509 // Config mode
    +
    1510 // ============================================================================
    +
    1511 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1512 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1513
    +
    1514 // ============================================================================
    +
    1515 // Config writing
    +
    1516 // ============================================================================
    +
    1517 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    +
    1518 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    +
    1519 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1520 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    +
    1521 bool configureAllConfigSettingsAsyncConfigActive = false;
    +
    1522 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    +
    1523 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1524
    +
    1525 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1526 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1527 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1528 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1529 bool configureAllConfigSettingsAsyncWriteConfig();
    +
    1530 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1531 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1532 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1533
    +
    1534 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    +
    1535
    +
    1536};
    -
    Asynchronous driver for the LD2410 human presence radar sensor.
    Definition LD2410Async.h:86
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:95
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    +
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    -
    String firmware
    Firmware version string of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    +
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    +
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    String firmware
    Firmware version string of the radar.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    +
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    +
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    +
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool end()
    Stops the background task started by begin().
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    +
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    +
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    constexpr size_t LD2410_Buffer_Size
    Definition LD2410Defs.h:11
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    @ NOT_SET
    Status not yet retrieved.
    diff --git a/docu/annotated.html b/docu/annotated.html index b561c1c..52e69d4 100644 --- a/docu/annotated.html +++ b/docu/annotated.html @@ -105,7 +105,7 @@  NLD2410Types  CConfigDataStores the sensor’s configuration parameters  CDetectionDataHolds the most recent detection data reported by the radar - CLD2410AsyncAsynchronous driver for the LD2410 human presence radar sensor + CLD2410Async
    diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html index d72e74c..a6971e2 100644 --- a/docu/classLD2410Async-members.html +++ b/docu/classLD2410Async-members.html @@ -104,15 +104,15 @@

    This is the complete list of members for LD2410Async, including all inherited members.

    - - + + - - + + - - - + + + @@ -126,37 +126,37 @@ - - + + - + - - - - - + + + + + - + - - - - - + + + + + - - - + + + @@ -167,8 +167,8 @@ - - + +
    asyncCancel()LD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    asyncIsBusy()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableInactivityHandling()LD2410Asyncinline
    disableInactivityHandling()LD2410Asyncinline
    enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    getAsyncCommandTimeoutMs() constLD2410Asyncinline
    getConfigData() constLD2410Async
    getConfigDataRef() constLD2410Asyncinline
    getDetectionData() constLD2410Async
    getDetectionDataRef() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    isConfigModeEnabled() constLD2410Asyncinline
    isEngineeringModeEnabled() constLD2410Asyncinline
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html index 5bfb934..c1e65c7 100644 --- a/docu/classLD2410Async.html +++ b/docu/classLD2410Async.html @@ -106,9 +106,6 @@
    -

    Asynchronous driver for the LD2410 human presence radar sensor. - More...

    -

    #include <LD2410Async.h>

    Collaboration diagram for LD2410Async:
    @@ -118,61 +115,61 @@ - - - - - - - - - - - - + + + + + + + + + + +

    Public Types

    enum class  AsyncCommandResult : byte { SUCCESS -, FAILED -, TIMEOUT -, CANCELED +
    enum class  AsyncCommandResult : byte { AsyncCommandResult::SUCCESS +, AsyncCommandResult::FAILED +, AsyncCommandResult::TIMEOUT +, AsyncCommandResult::CANCELED }
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -197,362 +194,140 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

    Public Member Functions

     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    LD2410Types::DetectionData getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    unsigned long getAsyncCommandTimeoutMs () const
     Returns the current async command timeout.
     
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables engineering mode.
     
    bool isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     
    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     

    Detailed Description

    -

    Asynchronous driver for the LD2410 human presence radar sensor.

    -

    The LD2410 is a mmWave radar sensor capable of detecting both moving and stationary targets, reporting presence, distance, and per-gate signal strength. This class implements a non-blocking, asynchronous interface for communicating with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).

    -

    -Features

    -
      -
    • Continuous background task that parses incoming frames and updates data.
    • -
    • Access to latest detection results via getDetectionData() or getDetectionDataRef().
    • -
    • Access to current configuration via getConfigData() or getConfigDataRef().
    • -
    • Asynchronous commands for configuration (with callbacks).
    • -
    • Support for engineering mode (per-gate signal values).
    • -
    • Automatic inactivity handling (optional recovery and reboot).
    • -
    • Utility methods for safe enum conversion and debugging output.
    • -
    -

    -Accessing data

    -

    You can either clone the structs (safe to modify) or access them by reference (efficient read-only):

    -

    -Example: Access detection data without cloning

    -
    const DetectionData& data = radar.getDetectionDataRef(); // no copy
    -
    Serial.print("Target state: ");
    -
    Serial.println(static_cast<int>(data.targetState));
    -

    -Example: Clone config data, modify, and write back

    -
    ConfigData cfg = radar.getConfigData(); // clone
    -
    cfg.noOneTimeout = 60;
    -
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.println("Config updated successfully!");
    -
    }
    -
    });
    -
    Asynchronous driver for the LD2410 human presence radar sensor.
    Definition LD2410Async.h:86
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:95
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -

    -Usage

    -

    Typical workflow:

      -
    1. Construct with a reference to a Stream object connected to the sensor.
    2. -
    3. Call begin() to start the background task.
    4. -
    5. Register callbacks for detection data and/or config updates.
    6. -
    7. Use async commands to adjust sensor configuration as needed.
    8. -
    9. Call end() to stop background processing if no longer required.
    10. -
    -

    Example:

    HardwareSerial radarSerial(2);
    -
    LD2410Async radar(radarSerial);
    -
    -
    void setup() {
    -
    Serial.begin(115200);
    -
    radar.begin();
    -
    -
    // Register callback for detection updates
    -
    radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
    -
    sender->getDetectionDataRef().print(); // direct access, no copy
    -
    });
    -
    }
    -
    -
    void loop() {
    -
    // Other application logic
    -
    }
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    -
    void print() const
    Debug helper: print detection data contents to Serial.
    -
    -

    Definition at line 86 of file LD2410Async.h.

    -

    Member Typedef Documentation

    - -

    ◆ AsyncCommandCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    -
    - -

    Callback signature for asynchronous command completion.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    userDataUser-specified value passed when registering the callback.
    -
    -
    - -

    Definition at line 112 of file LD2410Async.h.

    - -
    -
    - -

    ◆ DetectionDataCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    -
    - -

    Callback type for receiving detection data events.

    -

    This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
    userDataUser-defined value passed when registering the callback.
    -
    -
    - -

    Definition at line 134 of file LD2410Async.h.

    - -
    -
    - -

    ◆ GenericCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
    -
    - -

    Generic callback signature used for simple notifications.

    -
    Parameters
    - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    userDataUser-specified value passed when registering the callback.
    -
    -
    - -

    Definition at line 120 of file LD2410Async.h.

    - -
    -
    -

    Member Enumeration Documentation

    - -

    ◆ AsyncCommandResult

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Async::AsyncCommandResult : byte
    -
    -strong
    -
    - -

    Result of an asynchronous command execution.

    -

    Every async command reports back its outcome via the callback.

    - - - - - -
    Enumerator
    SUCCESS 

    Command completed successfully and ACK was received.

    -
    FAILED 

    Command failed (sensor responded with negative ACK).

    -
    TIMEOUT 

    No ACK received within the expected time window.

    -
    CANCELED 

    Command was canceled by the user before completion.

    -
    - -

    Definition at line 95 of file LD2410Async.h.

    -
    95 : byte {
    -
    96 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    97 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    98 TIMEOUT, ///< No ACK received within the expected time window.
    -
    99 CANCELED ///< Command was canceled by the user before completion.
    -
    100 };
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ LD2410Async()

    - -
    -
    - - - - - - - -
    LD2410Async::LD2410Async (Stream & serial)
    -
    - -

    Constructs a new LD2410Async instance bound to a given serial stream.

    -

    The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

    -

    Example:

    HardwareSerial radarSerial(2);
    -
    LD2410Async radar(radarSerial);
    -
    Parameters
    - - -
    serialReference to a Stream object used to exchange data with the sensor.
    -
    -
    - -

    Definition at line 1646 of file LD2410Async.cpp.

    -
    1647{
    -
    1648 sensor = &serial;
    -
    1649}
    -
    -
    -
    -

    Member Function Documentation

    +
    +

    Definition at line 88 of file LD2410Async.h.

    +

    Member Function Documentation

    ◆ asyncCancel()

    @@ -573,8 +348,9 @@

    Definition at line 534 of file LD2410Async.cpp.

    534 {
    -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    +
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    536}
    +
    @ CANCELED
    Command was canceled by the user before completion.

  • @@ -606,65 +382,6 @@

    - - - -

    ◆ begin()

    - -
    -
    - - - - - - - -
    bool LD2410Async::begin ()
    -
    - -

    Starts the background task that continuously reads data from the sensor.

    -

    This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

    -
    Returns
    true if the task was successfully started, false if already running.
    - -

    Definition at line 1577 of file LD2410Async.cpp.

    -
    1577 {
    -
    1578 if (taskHandle == NULL) {
    - -
    1580 DEBUG_PRINTLN("Starting data processing task");
    -
    1581 taskStop = false;
    -
    1582
    -
    1583 BaseType_t result = xTaskCreate(
    -
    1584 [](void* param) {
    -
    1585 if (param) {
    -
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    -
    1587 }
    -
    1588 vTaskDelete(NULL);
    -
    1589 },
    -
    1590 "LD2410Task",
    -
    1591 4096,
    -
    1592 this,
    -
    1593 1,
    -
    1594 &taskHandle
    -
    1595 );
    -
    1596
    -
    1597 if (result == pdPASS) {
    -
    1598 return true;
    -
    1599 }
    -
    1600 else {
    - -
    1602 DEBUG_PRINTLN("Task creation failed");
    -
    1603 taskHandle = NULL;
    -
    1604 return false;
    -
    1605 }
    -
    1606 }
    - -
    1608 DEBUG_PRINTLN("Data processing task already active");
    -
    1609 return false;
    -
    1610}
    -
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    -
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    -
    @@ -676,7 +393,7 @@

    bool LD2410Async::beginAutoConfigAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -695,14 +412,17 @@

    Example: Run auto-config

    radar.beginAutoConfigAsync([](LD2410Async* sender,
    - +
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    Serial.println("Auto-config started.");
    } else {
    Serial.println("Failed to start auto-config.");
    }
    });
    + +
    AsyncCommandResult
    Result of an asynchronous command execution.
    +
    @ SUCCESS
    Command completed successfully and ACK was received.

    Do:

    Returns
    Const reference to the current ConfigData.
    -

    Definition at line 523 of file LD2410Async.h.

    -
    523{ return configData; }
    +

    Definition at line 554 of file LD2410Async.h.

    +
    554{ return configData; }
    @@ -2185,9 +1783,9 @@

    Definition at line 1447 of file LD2410Async.cpp.

    1447 {
    -
    1448 return detectionData;
    +
    1448 return detectionData;
    1449}
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    @@ -2238,39 +1836,8 @@

    Returns
    Const reference to the current DetectionData.
    -

    Definition at line 446 of file LD2410Async.h.

    -
    446{ return detectionData; }
    -
    - - - -

    ◆ getInactivityTimeoutMs()

    - -
    -
    - - - - - -
    - - - - - - - -
    unsigned long LD2410Async::getInactivityTimeoutMs () const
    -
    -inline
    -
    - -

    Returns the current inactivity timeout period.

    -
    Returns
    Timeout in milliseconds.
    - -

    Definition at line 335 of file LD2410Async.h.

    -
    335{ return inactivityHandlingTimeoutMs; };
    +

    Definition at line 477 of file LD2410Async.h.

    +
    477{ return detectionData; }
    @@ -2300,11 +1867,11 @@

    Returns
    true if config mode is anabled, false if config mode is disabled
    -

    Definition at line 612 of file LD2410Async.h.

    -
    612 {
    -
    613 return configModeEnabled;
    -
    614 };
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +

    Definition at line 643 of file LD2410Async.h.

    +
    643 {
    +
    644 return configModeEnabled;
    +
    645 };
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    Here is the caller graph for this function:
    @@ -2339,42 +1906,11 @@

    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    -

    Definition at line 655 of file LD2410Async.h.

    -
    655 {
    - -
    657 };
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    -

    -
    - -

    ◆ isInactivityHandlingEnabled()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool LD2410Async::isInactivityHandlingEnabled () const
    -
    -inline
    -
    - -

    Returns whether inactivity handling is currently enabled.

    -
    Returns
    true if inactivity handling is enabled, false otherwise.
    - -

    Definition at line 315 of file LD2410Async.h.

    -
    315{ return inactivityHandlingEnabled; };
    +

    Definition at line 686 of file LD2410Async.h.

    +
    686 {
    + +
    688 };
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    @@ -2387,7 +1923,7 @@

    bool LD2410Async::rebootAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2426,118 +1962,6 @@

    - - - -

    ◆ registerConfigChangedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for configuration changes.

    -

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 212 of file LD2410Async.cpp.

    -
    212 {
    -
    213 configChangedCallbackUserData = userData;
    -
    214 configChangedCallback = callback;
    -
    215}
    -
    -
    -
    - -

    ◆ registerConfigUpdateReceivedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for configuration data updates.

    -

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 206 of file LD2410Async.cpp.

    -
    206 {
    -
    207
    -
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    -
    209 configUpdateReceivedReceivedCallback = callback;
    -
    210}
    -
    -
    -
    - -

    ◆ registerDetectionDataReceivedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for new detection data.

    -

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 201 of file LD2410Async.cpp.

    -
    201 {
    -
    202 detectionDataCallback = callback;
    -
    203 detectionDataCallbackUserData = userData;
    -
    204}
    -
    @@ -2549,7 +1973,7 @@

    bool LD2410Async::requestAllConfigSettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2565,7 +1989,7 @@

    registerConfigUpdateReceivedCallback() is invoked after completion.

    +

    The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

    Note
    This is a high-level method that involves multiple commands.
    Requires config mode. This method will manage mode switching automatically.
    @@ -2574,14 +1998,14 @@

    Example: Refresh config data

    radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    - +
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    Serial.println("All config data refreshed:");
    sender->getConfigDataRef().print();
    }
    });
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    void print() const
    Debug helper: print configuration contents to Serial.

    Do:

    @@ -2638,7 +2062,7 @@

    bool LD2410Async::requestAllStaticDataAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2662,18 +2086,18 @@

    Example: Retrieve firmware and MAC

    radar.requestAllStaticDataAsync([](LD2410Async* sender,
    - +
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    Serial.print("Firmware: ");
    -
    Serial.println(sender->firmware);
    +
    Serial.println(sender->firmware);
    Serial.print("MAC: ");
    -
    Serial.println(sender->macString);
    +
    Serial.println(sender->macString);
    }
    });
    -
    String firmware
    Firmware version string of the radar.
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    String firmware
    Firmware version string of the radar.
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

    Do:

      @@ -2728,7 +2152,7 @@

      bool LD2410Async::requestAutoConfigStatusAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2750,10 +2174,10 @@

      Example: Check auto-config status

      radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
      - +
      byte) {
      -
      if (result == AsyncCommandResult::SUCCESS) {
      -
      switch (sender->autoConfigStatus) {
      +
      if (result == AsyncCommandResult::SUCCESS) {
      +
      switch (sender->autoConfigStatus) {
      case AutoConfigStatus::NOT_IN_PROGRESS:
      Serial.println("Auto-config not running.");
      break;
      @@ -2770,7 +2194,7 @@

      Serial.println("Failed to request auto-config status.");
      }
      });
      -
      LD2410Types::AutoConfigStatus autoConfigStatus
      Current status of the auto-configuration routine.
      +
      LD2410Types::AutoConfigStatus autoConfigStatus
      Current status of the auto-configuration routine.

      Do:

        @@ -2818,7 +2242,7 @@

        bool LD2410Async::requestAuxControlSettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2866,7 +2290,7 @@

        bool LD2410Async::requestBluetoothMacAddressAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2911,7 +2335,7 @@

        bool LD2410Async::requestDistanceResolutioncmAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2957,7 +2381,7 @@

        bool LD2410Async::requestFirmwareAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -3005,7 +2429,7 @@

        bool LD2410Async::requestGateParametersAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -3053,7 +2477,7 @@

        bool LD2410Async::restoreFactorySettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -3126,280 +2550,9 @@

        Definition at line 555 of file LD2410Async.h.

        -
        555{ asyncCommandTimeoutMs = timeoutMs; }
        +

        Definition at line 586 of file LD2410Async.h.

        +
        586{ asyncCommandTimeoutMs = timeoutMs; }
        -
        - - -

        ◆ setInactivityHandling()

        - -
        -
        - - - - - - - -
        void LD2410Async::setInactivityHandling (bool enable)
        -
        - -

        Enables or disables automatic inactivity handling of the sensor.

        -

        When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

          -
        1. It first tries to exit config mode (even if configModeEnabled is false).
        2. -
        3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
        4. -
        -

        This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

        -
        Parameters
        - - -
        enablePass true to enable inactivity handling, false to disable it.
        -
        -
        - -

        Definition at line 1521 of file LD2410Async.cpp.

        -
        1521 {
        -
        1522 inactivityHandlingEnabled = enable;
        -
        1523}
        -
        -Here is the caller graph for this function:
        -
        -
        -
        - -
        -
        - -

        ◆ setInactivityTimeoutMs()

        - -
        -
        - - - - - -
        - - - - - - - -
        void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
        -
        -inline
        -
        - -

        Sets the timeout period for inactivity handling.

        -

        If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

        -

        Default is 60000 ms (1 minute).

        -
        Parameters
        - - -
        timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
        -
        -
        - -

        Definition at line 328 of file LD2410Async.h.

        -
        328{ inactivityHandlingTimeoutMs = timeoutMs; };
        -
        -
        -
        -

        Member Data Documentation

        - -

        ◆ autoConfigStatus

        - -
        -
        - - - - -
        LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
        -
        - -

        Current status of the auto-configuration routine.

        -

        Updated by requestAutoConfigStatusAsync().

        - -

        Definition at line 226 of file LD2410Async.h.

        - -
        -
        - -

        ◆ bufferSize

        - -
        -
        - - - - -
        unsigned long LD2410Async::bufferSize = 0
        -
        - -

        Buffer size reported by the radar protocol.

        -

        Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

        - -

        Definition at line 177 of file LD2410Async.h.

        - -
        -
        - -

        ◆ configData

        - -
        -
        - - - - -
        LD2410Types::ConfigData LD2410Async::configData
        -
        - -

        Current configuration parameters of the radar.

        -

        Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

        -

        Structure will contain only uninitilaized data if config data is not queried explicitly.

        - -

        Definition at line 161 of file LD2410Async.h.

        - -
        -
        - -

        ◆ configModeEnabled

        - -
        -
        - - - - -
        bool LD2410Async::configModeEnabled = false
        -
        - -

        True if the sensor is currently in config mode.

        -

        Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

        - -

        Definition at line 186 of file LD2410Async.h.

        - -
        -
        - -

        ◆ detectionData

        - -
        -
        - - - - -
        LD2410Types::DetectionData LD2410Async::detectionData
        -
        - -

        Latest detection results from the radar.

        -

        Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

        - -

        Definition at line 149 of file LD2410Async.h.

        - -
        -
        - -

        ◆ engineeringModeEnabled

        - -
        -
        - - - - -
        bool LD2410Async::engineeringModeEnabled = false
        -
        - -

        True if the sensor is currently in engineering mode.

        -

        In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

        -

        Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

        - -

        Definition at line 197 of file LD2410Async.h.

        - -
        -
        - -

        ◆ firmware

        - -
        -
        - - - - -
        String LD2410Async::firmware = ""
        -
        - -

        Firmware version string of the radar.

        -

        Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

        - -

        Definition at line 205 of file LD2410Async.h.

        - -
        -
        - -

        ◆ mac

        - -
        -
        - - - - -
        byte LD2410Async::mac[6]
        -
        - -

        MAC address of the radar’s Bluetooth module (if available).

        -

        Populated by requestBluetoothMacAddressAsync().

        - -

        Definition at line 212 of file LD2410Async.h.

        - -
        -
        - -

        ◆ macString

        - -
        -
        - - - - -
        String LD2410Async::macString = ""
        -
        - -

        MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

        -

        Populated by requestBluetoothMacAddressAsync().

        - -

        Definition at line 218 of file LD2410Async.h.

        - -
        -
        - -

        ◆ protocolVersion

        - -
        -
        - - - - -
        unsigned long LD2410Async::protocolVersion = 0
        -
        - -

        Protocol version reported by the radar.

        -

        This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

        - -

        Definition at line 169 of file LD2410Async.h.

        -

        The documentation for this class was generated from the following files:
          diff --git a/docu/classLD2410Async.js b/docu/classLD2410Async.js index b071293..4de8fca 100644 --- a/docu/classLD2410Async.js +++ b/docu/classLD2410Async.js @@ -1,18 +1,18 @@ var classLD2410Async = [ - [ "AsyncCommandCallback", "classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603", null ], - [ "DetectionDataCallback", "classLD2410Async.html#a19278199112e9358e96a192056e58e81", null ], - [ "GenericCallback", "classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383", null ], - [ "AsyncCommandResult", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab", [ - [ "SUCCESS", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], - [ "FAILED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], - [ "TIMEOUT", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], - [ "CANCELED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + [ "AsyncCommandCallback", "group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "DetectionDataCallback", "group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81", null ], + [ "GenericCallback", "group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383", null ], + [ "AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ + [ "SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] ] ], - [ "LD2410Async", "classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900", null ], + [ "LD2410Async", "group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900", null ], [ "asyncCancel", "classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1", null ], [ "asyncIsBusy", "classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153", null ], - [ "begin", "classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024", null ], + [ "begin", "group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], [ "beginAutoConfigAsync", "classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc", null ], [ "configureAllConfigSettingsAsync", "classLD2410Async.html#a509170bfc50580131d0c72f5c91daede", null ], [ "configureAuxControlSettingsAsync", "classLD2410Async.html#a90e3bc56482783249d966a670310bffd", null ], @@ -30,25 +30,25 @@ var classLD2410Async = [ "disableBluetoothAsync", "classLD2410Async.html#addcbab1709f2a80571563609f4a23862", null ], [ "disableConfigModeAsync", "classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c", null ], [ "disableEngineeringModeAsync", "classLD2410Async.html#a377464026350140b0277369a13e8c1d3", null ], - [ "disableInactivityHandling", "classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2", null ], + [ "disableInactivityHandling", "group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2", null ], [ "enableBluetoothAsync", "classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973", null ], [ "enableConfigModeAsync", "classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9", null ], [ "enableEngineeringModeAsync", "classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], - [ "enableInactivityHandling", "classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3", null ], - [ "end", "classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "enableInactivityHandling", "group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "end", "group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], [ "getAsyncCommandTimeoutMs", "classLD2410Async.html#a93962bd109f67775ea3420596207b23a", null ], [ "getConfigData", "classLD2410Async.html#a54388c929cea610f92891def29db66a5", null ], [ "getConfigDataRef", "classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13", null ], [ "getDetectionData", "classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50", null ], [ "getDetectionDataRef", "classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090", null ], - [ "getInactivityTimeoutMs", "classLD2410Async.html#a74138af198ac827349a25e122277803f", null ], + [ "getInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f", null ], [ "isConfigModeEnabled", "classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48", null ], [ "isEngineeringModeEnabled", "classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19", null ], - [ "isInactivityHandlingEnabled", "classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6", null ], + [ "isInactivityHandlingEnabled", "group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6", null ], [ "rebootAsync", "classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235", null ], - [ "registerConfigChangedCallback", "classLD2410Async.html#a714e62534394a52243f8f50fd58726f9", null ], - [ "registerConfigUpdateReceivedCallback", "classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285", null ], - [ "registerDetectionDataReceivedCallback", "classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282", null ], + [ "registerConfigChangedCallback", "group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9", null ], + [ "registerConfigUpdateReceivedCallback", "group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "registerDetectionDataReceivedCallback", "group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282", null ], [ "requestAllConfigSettingsAsync", "classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38", null ], [ "requestAllStaticDataAsync", "classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6", null ], [ "requestAutoConfigStatusAsync", "classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6", null ], @@ -59,16 +59,16 @@ var classLD2410Async = [ "requestGateParametersAsync", "classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6", null ], [ "restoreFactorySettingsAsync", "classLD2410Async.html#aadb841697a992c1bf203944211bd8659", null ], [ "setAsyncCommandTimeoutMs", "classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325", null ], - [ "setInactivityHandling", "classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76", null ], - [ "setInactivityTimeoutMs", "classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4", null ], - [ "autoConfigStatus", "classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694", null ], - [ "bufferSize", "classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1", null ], - [ "configData", "classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02", null ], - [ "configModeEnabled", "classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7", null ], - [ "detectionData", "classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8", null ], - [ "engineeringModeEnabled", "classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7", null ], - [ "firmware", "classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf", null ], - [ "mac", "classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e", null ], - [ "macString", "classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1", null ], - [ "protocolVersion", "classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b", null ] + [ "setInactivityHandling", "group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76", null ], + [ "setInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ], + [ "autoConfigStatus", "group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "bufferSize", "group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "configData", "group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02", null ], + [ "configModeEnabled", "group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "detectionData", "group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8", null ], + [ "engineeringModeEnabled", "group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "firmware", "group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "mac", "group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e", null ], + [ "macString", "group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "protocolVersion", "group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b", null ] ]; \ No newline at end of file diff --git a/docu/classLD2410Async__coll__graph.map b/docu/classLD2410Async__coll__graph.map index 5a5977d..8cf269a 100644 --- a/docu/classLD2410Async__coll__graph.map +++ b/docu/classLD2410Async__coll__graph.map @@ -1,5 +1,5 @@ - + diff --git a/docu/classLD2410Async__coll__graph.md5 b/docu/classLD2410Async__coll__graph.md5 index 295ff57..c8ae334 100644 --- a/docu/classLD2410Async__coll__graph.md5 +++ b/docu/classLD2410Async__coll__graph.md5 @@ -1 +1 @@ -58daa817c627302ae6a5a1944577a686 \ No newline at end of file +e5e6cb9114dc44f309a396c2691c0763 \ No newline at end of file diff --git a/docu/classLD2410Async__coll__graph.svg b/docu/classLD2410Async__coll__graph.svg index 857ecc7..fe3a681 100644 --- a/docu/classLD2410Async__coll__graph.svg +++ b/docu/classLD2410Async__coll__graph.svg @@ -11,7 +11,7 @@ Node1 - + LD2410Async diff --git a/docu/doxygen_crawl.html b/docu/doxygen_crawl.html index f9a67c3..4047085 100644 --- a/docu/doxygen_crawl.html +++ b/docu/doxygen_crawl.html @@ -28,6 +28,11 @@ + + + + + @@ -44,6 +49,7 @@ + @@ -242,72 +248,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -324,6 +300,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455,5 +473,6 @@ + diff --git a/docu/functions.html b/docu/functions.html index f1c5fa3..b58d3c3 100644 --- a/docu/functions.html +++ b/docu/functions.html @@ -101,23 +101,23 @@

          - a -

          - b -

          - c -

            -
          • configData : LD2410Async
          • -
          • configModeEnabled : LD2410Async
          • +
          • configData : LD2410Async
          • +
          • configModeEnabled : LD2410Async
          • configureAllConfigSettingsAsync() : LD2410Async
          • configureAuxControlSettingsAsync() : LD2410Async
          • configureBaudRateAsync() : LD2410Async
          • @@ -133,12 +133,12 @@

            - c -

              - d -

              • detectedDistance : LD2410Types::DetectionData
              • -
              • detectionData : LD2410Async
              • -
              • DetectionDataCallback : LD2410Async
              • +
              • detectionData : LD2410Async
              • +
              • DetectionDataCallback : LD2410Async
              • disableBluetoothAsync() : LD2410Async
              • disableConfigModeAsync() : LD2410Async
              • disableEngineeringModeAsync() : LD2410Async
              • -
              • disableInactivityHandling() : LD2410Async
              • +
              • disableInactivityHandling() : LD2410Async
              • distanceGateMotionSensitivity : LD2410Types::ConfigData
              • distanceGateStationarySensitivity : LD2410Types::ConfigData
              • distanceResolution : LD2410Types::ConfigData
              • @@ -149,40 +149,40 @@

                - e -

                - f -

                - g -

                - i -

                - l -

                  -
                • LD2410Async() : LD2410Async
                • +
                • LD2410Async() : LD2410Async
                • lightControl : LD2410Types::ConfigData
                • lightLevel : LD2410Types::DetectionData
                • lightThreshold : LD2410Types::ConfigData
                • @@ -190,8 +190,8 @@

                  - l -

                    - m -

                      -
                    • mac : LD2410Async
                    • -
                    • macString : LD2410Async
                    • +
                    • mac : LD2410Async
                    • +
                    • macString : LD2410Async
                    • maxMotionDistanceGate : LD2410Types::ConfigData
                    • maxStationaryDistanceGate : LD2410Types::ConfigData
                    • movingPresenceDetected : LD2410Types::DetectionData
                    • @@ -217,15 +217,15 @@

                      - o -

                        - p -

                        - r -

                        • rebootAsync() : LD2410Async
                        • -
                        • registerConfigChangedCallback() : LD2410Async
                        • -
                        • registerConfigUpdateReceivedCallback() : LD2410Async
                        • -
                        • registerDetectionDataReceivedCallback() : LD2410Async
                        • +
                        • registerConfigChangedCallback() : LD2410Async
                        • +
                        • registerConfigUpdateReceivedCallback() : LD2410Async
                        • +
                        • registerDetectionDataReceivedCallback() : LD2410Async
                        • requestAllConfigSettingsAsync() : LD2410Async
                        • requestAllStaticDataAsync() : LD2410Async
                        • requestAutoConfigStatusAsync() : LD2410Async
                        • @@ -240,8 +240,8 @@

                          - r -

                            - s -

                            • setAsyncCommandTimeoutMs() : LD2410Async
                            • -
                            • setInactivityHandling() : LD2410Async
                            • -
                            • setInactivityTimeoutMs() : LD2410Async
                            • +
                            • setInactivityHandling() : LD2410Async
                            • +
                            • setInactivityTimeoutMs() : LD2410Async
                            • stationaryPresenceDetected : LD2410Types::DetectionData
                            • stationaryTargetDistance : LD2410Types::DetectionData
                            • stationaryTargetGateSignalCount : LD2410Types::DetectionData
                            • diff --git a/docu/functions_enum.html b/docu/functions_enum.html index 47a0ecf..e95a348 100644 --- a/docu/functions_enum.html +++ b/docu/functions_enum.html @@ -98,7 +98,7 @@
                              Here is a list of all enums with links to the classes they belong to:
                              diff --git a/docu/functions_func.html b/docu/functions_func.html index 2b7980f..738c471 100644 --- a/docu/functions_func.html +++ b/docu/functions_func.html @@ -106,7 +106,7 @@

                              - a -

                                - b -

                                @@ -129,7 +129,7 @@

                                - d -

                                @@ -137,8 +137,8 @@

                                - e -

                                @@ -149,20 +149,20 @@

                                - g -

                                - i -

                                - l -

                                @@ -173,9 +173,9 @@

                                - p -

                                  - r -

                                  • rebootAsync() : LD2410Async
                                  • -
                                  • registerConfigChangedCallback() : LD2410Async
                                  • -
                                  • registerConfigUpdateReceivedCallback() : LD2410Async
                                  • -
                                  • registerDetectionDataReceivedCallback() : LD2410Async
                                  • +
                                  • registerConfigChangedCallback() : LD2410Async
                                  • +
                                  • registerConfigUpdateReceivedCallback() : LD2410Async
                                  • +
                                  • registerDetectionDataReceivedCallback() : LD2410Async
                                  • requestAllConfigSettingsAsync() : LD2410Async
                                  • requestAllStaticDataAsync() : LD2410Async
                                  • requestAutoConfigStatusAsync() : LD2410Async
                                  • @@ -190,8 +190,8 @@

                                    - r -

                                      - s -

                                      diff --git a/docu/functions_type.html b/docu/functions_type.html index 59e5475..6f4f730 100644 --- a/docu/functions_type.html +++ b/docu/functions_type.html @@ -98,9 +98,9 @@
                                      Here is a list of all typedefs with links to the classes they belong to:
                                      diff --git a/docu/functions_vars.html b/docu/functions_vars.html index f748caf..21183c5 100644 --- a/docu/functions_vars.html +++ b/docu/functions_vars.html @@ -100,24 +100,24 @@
                                      Here is a list of all variables with links to the classes they belong to:

                                      - a -

                                      - b -

                                      - c -

                                      - d -

                                      • detectedDistance : LD2410Types::DetectionData
                                      • -
                                      • detectionData : LD2410Async
                                      • +
                                      • detectionData : LD2410Async
                                      • distanceGateMotionSensitivity : LD2410Types::ConfigData
                                      • distanceGateStationarySensitivity : LD2410Types::ConfigData
                                      • distanceResolution : LD2410Types::ConfigData
                                      • @@ -126,12 +126,12 @@

                                        - d -

                                          - e -

                                          - f -

                                          @@ -143,8 +143,8 @@

                                          - l -

                                            - m -

                                              -
                                            • mac : LD2410Async
                                            • -
                                            • macString : LD2410Async
                                            • +
                                            • mac : LD2410Async
                                            • +
                                            • macString : LD2410Async
                                            • maxMotionDistanceGate : LD2410Types::ConfigData
                                            • maxStationaryDistanceGate : LD2410Types::ConfigData
                                            • movingPresenceDetected : LD2410Types::DetectionData
                                            • @@ -169,7 +169,7 @@

                                              - o -

                                                - p -

                                                diff --git a/docu/group__LD2410Async__Callbacks.html b/docu/group__LD2410Async__Callbacks.html new file mode 100644 index 0000000..4100da9 --- /dev/null +++ b/docu/group__LD2410Async__Callbacks.html @@ -0,0 +1,242 @@ + + + + + + + +LD2410Async: Callback Registration + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                + +
                                                Callback Registration
                                                +
                                                +
                                                + + + + + + + + + + + +

                                                +Functions

                                                void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
                                                 Registers a callback for new detection data.
                                                 
                                                void LD2410Async::registerConfigChangedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration changes.
                                                 
                                                void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration data updates.
                                                 
                                                +

                                                Detailed Description

                                                +

                                                Registrierung von Callback-Funktionen.

                                                +

                                                Function Documentation

                                                + +

                                                ◆ registerConfigChangedCallback()

                                                + +
                                                +
                                                + + + + + + + + + + + +
                                                void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
                                                byte userData = 0 )
                                                +
                                                + +

                                                Registers a callback for configuration changes.

                                                +

                                                The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

                                                +
                                                Parameters
                                                + + + +
                                                callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
                                                userDataOptional value that will be passed to the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 212 of file LD2410Async.cpp.

                                                +
                                                212 {
                                                +
                                                213 configChangedCallbackUserData = userData;
                                                +
                                                214 configChangedCallback = callback;
                                                +
                                                215}
                                                +
                                                +
                                                +
                                                + +

                                                ◆ registerConfigUpdateReceivedCallback()

                                                + +
                                                +
                                                + + + + + + + + + + + +
                                                void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
                                                byte userData = 0 )
                                                +
                                                + +

                                                Registers a callback for configuration data updates.

                                                +

                                                The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

                                                +
                                                Parameters
                                                + + + +
                                                callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
                                                userDataOptional value that will be passed to the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 206 of file LD2410Async.cpp.

                                                +
                                                206 {
                                                +
                                                207
                                                +
                                                208 configUpdateReceivedReceivedCallbackUserData = userData;
                                                +
                                                209 configUpdateReceivedReceivedCallback = callback;
                                                +
                                                210}
                                                +
                                                +
                                                +
                                                + +

                                                ◆ registerDetectionDataReceivedCallback()

                                                + +
                                                +
                                                + + + + + + + + + + + +
                                                void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
                                                byte userData = 0 )
                                                +
                                                + +

                                                Registers a callback for new detection data.

                                                +

                                                The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

                                                +
                                                Parameters
                                                + + + +
                                                callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
                                                userDataOptional value that will be passed to the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 201 of file LD2410Async.cpp.

                                                +
                                                201 {
                                                +
                                                202 detectionDataCallback = callback;
                                                +
                                                203 detectionDataCallbackUserData = userData;
                                                +
                                                204}
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + diff --git a/docu/group__LD2410Async__Callbacks.js b/docu/group__LD2410Async__Callbacks.js new file mode 100644 index 0000000..df30e38 --- /dev/null +++ b/docu/group__LD2410Async__Callbacks.js @@ -0,0 +1,6 @@ +var group__LD2410Async__Callbacks = +[ + [ "LD2410Async::registerConfigChangedCallback", "group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9", null ], + [ "LD2410Async::registerConfigUpdateReceivedCallback", "group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "LD2410Async::registerDetectionDataReceivedCallback", "group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Data.html b/docu/group__LD2410Async__Data.html new file mode 100644 index 0000000..9f8518a --- /dev/null +++ b/docu/group__LD2410Async__Data.html @@ -0,0 +1,343 @@ + + + + + + + +LD2410Async: Public Data Members + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                + +
                                                Public Data Members
                                                +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                +Variables

                                                LD2410Types::DetectionData LD2410Async::detectionData
                                                 Latest detection results from the radar.
                                                 
                                                LD2410Types::ConfigData LD2410Async::configData
                                                 Current configuration parameters of the radar.
                                                 
                                                unsigned long LD2410Async::protocolVersion = 0
                                                 Protocol version reported by the radar.
                                                 
                                                unsigned long LD2410Async::bufferSize = 0
                                                 Buffer size reported by the radar protocol.
                                                 
                                                bool LD2410Async::configModeEnabled = false
                                                 True if the sensor is currently in config mode.
                                                 
                                                bool LD2410Async::engineeringModeEnabled = false
                                                 True if the sensor is currently in engineering mode.
                                                 
                                                String LD2410Async::firmware = ""
                                                 Firmware version string of the radar.
                                                 
                                                byte LD2410Async::mac [6]
                                                 MAC address of the radar’s Bluetooth module (if available).
                                                 
                                                String LD2410Async::macString = ""
                                                 MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                 
                                                LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
                                                 Current status of the auto-configuration routine.
                                                 
                                                +

                                                Detailed Description

                                                +

                                                Public data structures and variables.

                                                +

                                                Variable Documentation

                                                + +

                                                ◆ autoConfigStatus

                                                + +
                                                +
                                                + + + + +
                                                LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
                                                +
                                                + +

                                                Current status of the auto-configuration routine.

                                                +

                                                Updated by requestAutoConfigStatusAsync().

                                                + +

                                                Definition at line 237 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ bufferSize

                                                + +
                                                +
                                                + + + + +
                                                unsigned long LD2410Async::bufferSize = 0
                                                +
                                                + +

                                                Buffer size reported by the radar protocol.

                                                +

                                                Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

                                                + +

                                                Definition at line 188 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ configData

                                                + +
                                                +
                                                + + + + +
                                                LD2410Types::ConfigData LD2410Async::configData
                                                +
                                                + +

                                                Current configuration parameters of the radar.

                                                +

                                                Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

                                                +

                                                Structure will contain only uninitilaized data if config data is not queried explicitly.

                                                + +

                                                Definition at line 172 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ configModeEnabled

                                                + +
                                                +
                                                + + + + +
                                                bool LD2410Async::configModeEnabled = false
                                                +
                                                + +

                                                True if the sensor is currently in config mode.

                                                +

                                                Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

                                                + +

                                                Definition at line 197 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ detectionData

                                                + +
                                                +
                                                + + + + +
                                                LD2410Types::DetectionData LD2410Async::detectionData
                                                +
                                                + +

                                                Latest detection results from the radar.

                                                +

                                                Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

                                                + +

                                                Definition at line 160 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ engineeringModeEnabled

                                                + +
                                                +
                                                + + + + +
                                                bool LD2410Async::engineeringModeEnabled = false
                                                +
                                                + +

                                                True if the sensor is currently in engineering mode.

                                                +

                                                In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

                                                +

                                                Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

                                                + +

                                                Definition at line 208 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ firmware

                                                + +
                                                +
                                                + + + + +
                                                String LD2410Async::firmware = ""
                                                +
                                                + +

                                                Firmware version string of the radar.

                                                +

                                                Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

                                                + +

                                                Definition at line 216 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ mac

                                                + +
                                                +
                                                + + + + +
                                                byte LD2410Async::mac[6]
                                                +
                                                + +

                                                MAC address of the radar’s Bluetooth module (if available).

                                                +

                                                Populated by requestBluetoothMacAddressAsync().

                                                + +

                                                Definition at line 223 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ macString

                                                + +
                                                +
                                                + + + + +
                                                String LD2410Async::macString = ""
                                                +
                                                + +

                                                MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

                                                +

                                                Populated by requestBluetoothMacAddressAsync().

                                                + +

                                                Definition at line 229 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ protocolVersion

                                                + +
                                                +
                                                + + + + +
                                                unsigned long LD2410Async::protocolVersion = 0
                                                +
                                                + +

                                                Protocol version reported by the radar.

                                                +

                                                This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

                                                + +

                                                Definition at line 180 of file LD2410Async.h.

                                                + +
                                                +
                                                +
                                                +
                                                + + + + diff --git a/docu/group__LD2410Async__Data.js b/docu/group__LD2410Async__Data.js new file mode 100644 index 0000000..3dbad0b --- /dev/null +++ b/docu/group__LD2410Async__Data.js @@ -0,0 +1,13 @@ +var group__LD2410Async__Data = +[ + [ "LD2410Async::autoConfigStatus", "group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "LD2410Async::bufferSize", "group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "LD2410Async::configData", "group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02", null ], + [ "LD2410Async::configModeEnabled", "group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "LD2410Async::detectionData", "group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8", null ], + [ "LD2410Async::engineeringModeEnabled", "group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "LD2410Async::firmware", "group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "LD2410Async::mac", "group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e", null ], + [ "LD2410Async::macString", "group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "LD2410Async::protocolVersion", "group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Inactivity.html b/docu/group__LD2410Async__Inactivity.html new file mode 100644 index 0000000..b9c5f49 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity.html @@ -0,0 +1,352 @@ + + + + + + + +LD2410Async: Inactivity Handling + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                + +
                                                Inactivity Handling
                                                +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + +

                                                +Functions

                                                void LD2410Async::setInactivityHandling (bool enable)
                                                 Enables or disables automatic inactivity handling of the sensor.
                                                 
                                                void LD2410Async::enableInactivityHandling ()
                                                 Convenience method: enables inactivity handling.
                                                 
                                                void LD2410Async::disableInactivityHandling ()
                                                 Convenience method: disables inactivity handling.
                                                 
                                                bool LD2410Async::isInactivityHandlingEnabled () const
                                                 Returns whether inactivity handling is currently enabled.
                                                 
                                                void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
                                                 Sets the timeout period for inactivity handling.
                                                 
                                                unsigned long LD2410Async::getInactivityTimeoutMs () const
                                                 Returns the current inactivity timeout period.
                                                 
                                                +

                                                Detailed Description

                                                +

                                                Methods for automatic inactivity detection and recovery.

                                                +

                                                Function Documentation

                                                + +

                                                ◆ disableInactivityHandling()

                                                + +
                                                +
                                                + + + + + +
                                                + + + + + + + +
                                                void LD2410Async::disableInactivityHandling ()
                                                +
                                                +inline
                                                +
                                                + +

                                                Convenience method: disables inactivity handling.

                                                +

                                                Equivalent to calling setInactivityHandling(false).

                                                + +

                                                Definition at line 331 of file LD2410Async.h.

                                                +
                                                331{ setInactivityHandling(false); };
                                                +
                                                void setInactivityHandling(bool enable)
                                                Enables or disables automatic inactivity handling of the sensor.
                                                +
                                                +Here is the call graph for this function:
                                                +
                                                +
                                                +
                                                + +
                                                +
                                                + +

                                                ◆ enableInactivityHandling()

                                                + +
                                                +
                                                + + + + + +
                                                + + + + + + + +
                                                void LD2410Async::enableInactivityHandling ()
                                                +
                                                +inline
                                                +
                                                + +

                                                Convenience method: enables inactivity handling.

                                                +

                                                Equivalent to calling setInactivityHandling(true).

                                                + +

                                                Definition at line 324 of file LD2410Async.h.

                                                +
                                                324{ setInactivityHandling(true); };
                                                +
                                                +Here is the call graph for this function:
                                                +
                                                +
                                                +
                                                + +
                                                +
                                                + +

                                                ◆ getInactivityTimeoutMs()

                                                + +
                                                +
                                                + + + + + +
                                                + + + + + + + +
                                                unsigned long LD2410Async::getInactivityTimeoutMs () const
                                                +
                                                +inline
                                                +
                                                + +

                                                Returns the current inactivity timeout period.

                                                +
                                                Returns
                                                Timeout in milliseconds.
                                                + +

                                                Definition at line 358 of file LD2410Async.h.

                                                +
                                                358{ return inactivityHandlingTimeoutMs; };
                                                +
                                                +
                                                +
                                                + +

                                                ◆ isInactivityHandlingEnabled()

                                                + +
                                                +
                                                + + + + + +
                                                + + + + + + + +
                                                bool LD2410Async::isInactivityHandlingEnabled () const
                                                +
                                                +inline
                                                +
                                                + +

                                                Returns whether inactivity handling is currently enabled.

                                                +
                                                Returns
                                                true if inactivity handling is enabled, false otherwise.
                                                + +

                                                Definition at line 338 of file LD2410Async.h.

                                                +
                                                338{ return inactivityHandlingEnabled; };
                                                +
                                                +
                                                +
                                                + +

                                                ◆ setInactivityHandling()

                                                + +
                                                +
                                                + + + + + + + +
                                                void LD2410Async::setInactivityHandling (bool enable)
                                                +
                                                + +

                                                Enables or disables automatic inactivity handling of the sensor.

                                                +

                                                When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

                                                  +
                                                1. It first tries to exit config mode (even if configModeEnabled is false).
                                                2. +
                                                3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
                                                4. +
                                                +

                                                This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

                                                +
                                                Parameters
                                                + + +
                                                enablePass true to enable inactivity handling, false to disable it.
                                                +
                                                +
                                                + +

                                                Definition at line 1521 of file LD2410Async.cpp.

                                                +
                                                1521 {
                                                +
                                                1522 inactivityHandlingEnabled = enable;
                                                +
                                                1523}
                                                +
                                                +Here is the caller graph for this function:
                                                +
                                                +
                                                +
                                                + +
                                                +
                                                + +

                                                ◆ setInactivityTimeoutMs()

                                                + +
                                                +
                                                + + + + + +
                                                + + + + + + + +
                                                void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
                                                +
                                                +inline
                                                +
                                                + +

                                                Sets the timeout period for inactivity handling.

                                                +

                                                If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

                                                +

                                                Default is 60000 ms (1 minute).

                                                +
                                                Parameters
                                                + + +
                                                timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
                                                +
                                                +
                                                + +

                                                Definition at line 351 of file LD2410Async.h.

                                                +
                                                351{ inactivityHandlingTimeoutMs = timeoutMs; };
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + diff --git a/docu/group__LD2410Async__Inactivity.js b/docu/group__LD2410Async__Inactivity.js new file mode 100644 index 0000000..4653956 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity.js @@ -0,0 +1,9 @@ +var group__LD2410Async__Inactivity = +[ + [ "LD2410Async::disableInactivityHandling", "group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2", null ], + [ "LD2410Async::enableInactivityHandling", "group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "LD2410Async::getInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f", null ], + [ "LD2410Async::isInactivityHandlingEnabled", "group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6", null ], + [ "LD2410Async::setInactivityHandling", "group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76", null ], + [ "LD2410Async::setInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map new file mode 100644 index 0000000..f3c07ca --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 new file mode 100644 index 0000000..d30bde7 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.md5 @@ -0,0 +1 @@ +65ce957de5d1992d60e4bdb27ae1f137 \ No newline at end of file diff --git a/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg new file mode 100644 index 0000000..c3fe7d0 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga3e538b0e12f6aa3f28fc025e54aa2dc3_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::enableInactivityHandling + + +Node1 + + +LD2410Async::enableInactivity +Handling + + + + + +Node2 + + +LD2410Async::setInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.map b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.map new file mode 100644 index 0000000..23e6913 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.md5 b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.md5 new file mode 100644 index 0000000..037442f --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.md5 @@ -0,0 +1 @@ +982948e9419df15b0deee734fe21547d \ No newline at end of file diff --git a/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.svg b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.svg new file mode 100644 index 0000000..7a5b367 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga4b30773f7a69dad507caaa636f08fa76_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +LD2410Async::setInactivityHandling + + +Node1 + + +LD2410Async::setInactivity +Handling + + + + + +Node2 + + +LD2410Async::disableInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +LD2410Async::enableInactivity +Handling + + + + + +Node1->Node3 + + + + + + + + diff --git a/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.map b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.map new file mode 100644 index 0000000..1f08fc2 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.md5 b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.md5 new file mode 100644 index 0000000..2b230be --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.md5 @@ -0,0 +1 @@ +404530e985ef8fd19379fc80012dcd70 \ No newline at end of file diff --git a/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.svg b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.svg new file mode 100644 index 0000000..b1e8e33 --- /dev/null +++ b/docu/group__LD2410Async__Inactivity_ga66ca514c34bec7957b46395dabb602f2_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +LD2410Async::disableInactivityHandling + + +Node1 + + +LD2410Async::disableInactivity +Handling + + + + + +Node2 + + +LD2410Async::setInactivity +Handling + + + + + +Node1->Node2 + + + + + + + + diff --git a/docu/group__LD2410Async__Lifecycle.html b/docu/group__LD2410Async__Lifecycle.html new file mode 100644 index 0000000..c79d7e5 --- /dev/null +++ b/docu/group__LD2410Async__Lifecycle.html @@ -0,0 +1,273 @@ + + + + + + + +LD2410Async: Constructor & Basic Methods + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                + +
                                                Constructor & Basic Methods
                                                +
                                                +
                                                + + + + + + + + + + + +

                                                +Functions

                                                 LD2410Async::LD2410Async (Stream &serial)
                                                 Constructs a new LD2410Async instance bound to a given serial stream.
                                                 
                                                bool LD2410Async::begin ()
                                                 Starts the background task that continuously reads data from the sensor.
                                                 
                                                bool LD2410Async::end ()
                                                 Stops the background task started by begin().
                                                 
                                                +

                                                Detailed Description

                                                +

                                                Constructor and basic start/stop methods.

                                                +

                                                Function Documentation

                                                + +

                                                ◆ begin()

                                                + +
                                                +
                                                + + + + + + + +
                                                bool LD2410Async::begin ()
                                                +
                                                + +

                                                Starts the background task that continuously reads data from the sensor.

                                                +

                                                This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

                                                +
                                                Returns
                                                true if the task was successfully started, false if already running.
                                                + +

                                                Definition at line 1577 of file LD2410Async.cpp.

                                                +
                                                1577 {
                                                +
                                                1578 if (taskHandle == NULL) {
                                                + +
                                                1580 DEBUG_PRINTLN("Starting data processing task");
                                                +
                                                1581 taskStop = false;
                                                +
                                                1582
                                                +
                                                1583 BaseType_t result = xTaskCreate(
                                                +
                                                1584 [](void* param) {
                                                +
                                                1585 if (param) {
                                                +
                                                1586 static_cast<LD2410Async*>(param)->taskLoop();
                                                +
                                                1587 }
                                                +
                                                1588 vTaskDelete(NULL);
                                                +
                                                1589 },
                                                +
                                                1590 "LD2410Task",
                                                +
                                                1591 4096,
                                                +
                                                1592 this,
                                                +
                                                1593 1,
                                                +
                                                1594 &taskHandle
                                                +
                                                1595 );
                                                +
                                                1596
                                                +
                                                1597 if (result == pdPASS) {
                                                +
                                                1598 return true;
                                                +
                                                1599 }
                                                +
                                                1600 else {
                                                + +
                                                1602 DEBUG_PRINTLN("Task creation failed");
                                                +
                                                1603 taskHandle = NULL;
                                                +
                                                1604 return false;
                                                +
                                                1605 }
                                                +
                                                1606 }
                                                + +
                                                1608 DEBUG_PRINTLN("Data processing task already active");
                                                +
                                                1609 return false;
                                                +
                                                1610}
                                                +
                                                #define DEBUG_PRINT_MILLIS
                                                Definition LD2410Debug.h:48
                                                +
                                                #define DEBUG_PRINTLN(...)
                                                Definition LD2410Debug.h:50
                                                + +
                                                +
                                                +
                                                + +

                                                ◆ end()

                                                + +
                                                +
                                                + + + + + + + +
                                                bool LD2410Async::end ()
                                                +
                                                + +

                                                Stops the background task started by begin().

                                                +

                                                After calling end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

                                                +
                                                Returns
                                                true if the task was stopped, false if it was not active.
                                                + +

                                                Definition at line 1612 of file LD2410Async.cpp.

                                                +
                                                1612 {
                                                +
                                                1613 if (taskHandle != NULL) {
                                                + +
                                                1615 DEBUG_PRINTLN("Stopping data processing task");
                                                +
                                                1616 taskStop = true;
                                                +
                                                1617
                                                +
                                                1618 // Wait up to 200ms for graceful exit
                                                +
                                                1619 for (int i = 0; i < 20; i++) {
                                                +
                                                1620 if (taskHandle == NULL) {
                                                + +
                                                1622 DEBUG_PRINTLN("Task exited gracefully");
                                                +
                                                1623 return true;
                                                +
                                                1624 }
                                                +
                                                1625 vTaskDelay(1 / portTICK_PERIOD_MS);
                                                +
                                                1626 }
                                                +
                                                1627
                                                +
                                                1628 // If still not NULL, force delete
                                                + +
                                                1630 DEBUG_PRINTLN("Forcing task stop");
                                                +
                                                1631 vTaskDelete(taskHandle);
                                                +
                                                1632 taskHandle = NULL;
                                                +
                                                1633 return true;
                                                +
                                                1634 }
                                                +
                                                1635
                                                +
                                                1636 DEBUG_PRINTLN("Data processing task is not active");
                                                +
                                                1637 return false;
                                                +
                                                1638}
                                                +
                                                +
                                                +
                                                + +

                                                ◆ LD2410Async()

                                                + +
                                                +
                                                + + + + + + + +
                                                LD2410Async::LD2410Async (Stream & serial)
                                                +
                                                + +

                                                Constructs a new LD2410Async instance bound to a given serial stream.

                                                +

                                                The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

                                                +

                                                Example:

                                                HardwareSerial radarSerial(2);
                                                +
                                                LD2410Async radar(radarSerial);
                                                +
                                                Parameters
                                                + + +
                                                serialReference to a Stream object used to exchange data with the sensor.
                                                +
                                                +
                                                + +

                                                Definition at line 1646 of file LD2410Async.cpp.

                                                +
                                                1647{
                                                +
                                                1648 sensor = &serial;
                                                +
                                                1649}
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + diff --git a/docu/group__LD2410Async__Lifecycle.js b/docu/group__LD2410Async__Lifecycle.js new file mode 100644 index 0000000..e63905d --- /dev/null +++ b/docu/group__LD2410Async__Lifecycle.js @@ -0,0 +1,6 @@ +var group__LD2410Async__Lifecycle = +[ + [ "LD2410Async::begin", "group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], + [ "LD2410Async::end", "group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "LD2410Async::LD2410Async", "group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Types.html b/docu/group__LD2410Async__Types.html new file mode 100644 index 0000000..eceb42d --- /dev/null +++ b/docu/group__LD2410Async__Types.html @@ -0,0 +1,267 @@ + + + + + + + +LD2410Async: Types And Callbacks + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                + +
                                                Types And Callbacks
                                                +
                                                +
                                                + + + + + + + + + + + +

                                                +Typedefs

                                                typedef void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                 Callback signature for asynchronous command completion.
                                                 
                                                typedef void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
                                                 Generic callback signature used for simple notifications.
                                                 
                                                typedef void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                 Callback type for receiving detection data events.
                                                 
                                                + + + + +

                                                +Enumerations

                                                enum class  LD2410Async::AsyncCommandResult : byte { LD2410Async::AsyncCommandResult::SUCCESS +, LD2410Async::AsyncCommandResult::FAILED +, LD2410Async::AsyncCommandResult::TIMEOUT +, LD2410Async::AsyncCommandResult::CANCELED + }
                                                 Result of an asynchronous command execution. More...
                                                 
                                                +

                                                Detailed Description

                                                +

                                                Public types , enums and callback definitions

                                                +

                                                Typedef Documentation

                                                + +

                                                ◆ AsyncCommandCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                +
                                                + +

                                                Callback signature for asynchronous command completion.

                                                +
                                                Parameters
                                                + + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
                                                userDataUser-specified value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 117 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ DetectionDataCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                +
                                                + +

                                                Callback type for receiving detection data events.

                                                +

                                                This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

                                                +
                                                Parameters
                                                + + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
                                                userDataUser-defined value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 139 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ GenericCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
                                                +
                                                + +

                                                Generic callback signature used for simple notifications.

                                                +
                                                Parameters
                                                + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                userDataUser-specified value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 125 of file LD2410Async.h.

                                                + +
                                                +
                                                +

                                                Enumeration Type Documentation

                                                + +

                                                ◆ AsyncCommandResult

                                                + +
                                                +
                                                + + + + + +
                                                + + + + +
                                                enum class LD2410Async::AsyncCommandResult : byte
                                                +
                                                +strong
                                                +
                                                + +

                                                Result of an asynchronous command execution.

                                                +

                                                Every async command reports back its outcome via the callback.

                                                + + + + + +
                                                Enumerator
                                                SUCCESS 

                                                Command completed successfully and ACK was received.

                                                +
                                                FAILED 

                                                Command failed (sensor responded with negative ACK).

                                                +
                                                TIMEOUT 

                                                No ACK received within the expected time window.

                                                +
                                                CANCELED 

                                                Command was canceled by the user before completion.

                                                +
                                                + +

                                                Definition at line 100 of file LD2410Async.h.

                                                +
                                                100 : byte {
                                                +
                                                101 SUCCESS, ///< Command completed successfully and ACK was received.
                                                +
                                                102 FAILED, ///< Command failed (sensor responded with negative ACK).
                                                +
                                                103 TIMEOUT, ///< No ACK received within the expected time window.
                                                +
                                                104 CANCELED ///< Command was canceled by the user before completion.
                                                +
                                                105 };
                                                +
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                +
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                +
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                +
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + diff --git a/docu/group__LD2410Async__Types.js b/docu/group__LD2410Async__Types.js new file mode 100644 index 0000000..fff48a7 --- /dev/null +++ b/docu/group__LD2410Async__Types.js @@ -0,0 +1,12 @@ +var group__LD2410Async__Types = +[ + [ "LD2410Async::AsyncCommandCallback", "group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "LD2410Async::DetectionDataCallback", "group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81", null ], + [ "LD2410Async::GenericCallback", "group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383", null ], + [ "LD2410Async::AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ + [ "LD2410Async::AsyncCommandResult::SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "LD2410Async::AsyncCommandResult::FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "LD2410Async::AsyncCommandResult::TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "LD2410Async::AsyncCommandResult::CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + ] ] +]; \ No newline at end of file diff --git a/docu/index.html b/docu/index.html index 6ffbd92..f5c3b2d 100644 --- a/docu/index.html +++ b/docu/index.html @@ -5,7 +5,7 @@ -LD2410Async: Main Page +LD2410Async: LD2410Async @@ -96,10 +96,73 @@ -
                                                -
                                                LD2410Async Documentation
                                                +
                                                +

                                                Asynchronous driver for the LD2410 human presence radar sensor.

                                                +

                                                +Introduction

                                                +

                                                The LD2410 is a mmWave radar sensor capable of detecting both moving and stationary targets, reporting presence, distance, and per-gate signal strength. This class implements a non-blocking, asynchronous interface for communicating with the sensor over a UART stream (HardwareSerial, SoftwareSerial, etc.).

                                                +

                                                +Features

                                                +
                                                  +
                                                • Continuous background task that parses incoming frames and updates data.
                                                • +
                                                • Access to latest detection results via getDetectionData() or getDetectionDataRef().
                                                • +
                                                • Access to current configuration via getConfigData() or getConfigDataRef().
                                                • +
                                                • Asynchronous commands for configuration (with callbacks).
                                                • +
                                                • Support for engineering mode (per-gate signal values).
                                                • +
                                                • Automatic inactivity handling (optional recovery and reboot).
                                                • +
                                                • Utility methods for safe enum conversion and debugging output.
                                                • +
                                                +

                                                +Accessing data

                                                +

                                                You can either clone the structs (safe to modify) or access them by reference (efficient read-only):

                                                +

                                                +Example: Access detection data without cloning

                                                +
                                                const DetectionData& data = radar.getDetectionDataRef(); // no copy
                                                +
                                                Serial.print("Target state: ");
                                                +
                                                Serial.println(static_cast<int>(data.targetState));
                                                +

                                                +Example: Clone config data, modify, and write back

                                                +
                                                ConfigData cfg = radar.getConfigData(); // clone
                                                +
                                                cfg.noOneTimeout = 60;
                                                +
                                                radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
                                                +
                                                AsyncCommandResult result,
                                                +
                                                byte) {
                                                +
                                                if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                Serial.println("Config updated successfully!");
                                                +
                                                }
                                                +
                                                });
                                                + +

                                                +Usage

                                                +

                                                Typical workflow:

                                                  +
                                                1. Construct with a reference to a Stream object connected to the sensor.
                                                2. +
                                                3. Call begin() to start the background task.
                                                4. +
                                                5. Register callbacks for detection data and/or config updates.
                                                6. +
                                                7. Use async commands to adjust sensor configuration as needed.
                                                8. +
                                                9. Call end() to stop background processing if no longer required.
                                                10. +
                                                +

                                                Example:

                                                HardwareSerial radarSerial(2);
                                                +
                                                LD2410Async radar(radarSerial);
                                                +
                                                +
                                                void setup() {
                                                +
                                                Serial.begin(115200);
                                                +
                                                radar.begin();
                                                +
                                                +
                                                // Register callback for detection updates
                                                +
                                                radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
                                                +
                                                sender->getDetectionDataRef().print(); // direct access, no copy
                                                +
                                                });
                                                +
                                                }
                                                +
                                                +
                                                void loop() {
                                                +
                                                // Other application logic
                                                +
                                                }
                                                +
                                                const LD2410Types::DetectionData & getDetectionDataRef() const
                                                Access the current detection data without making a copy.
                                                +
                                                void print() const
                                                Debug helper: print detection data contents to Serial.
                                                +
                                                diff --git a/docu/menudata.js b/docu/menudata.js index 3616a12..6032c01 100644 --- a/docu/menudata.js +++ b/docu/menudata.js @@ -24,6 +24,7 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, +{text:"Topics",url:"topics.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ diff --git a/docu/namespaceLD2410Types.html b/docu/namespaceLD2410Types.html index e1e4879..5390098 100644 --- a/docu/namespaceLD2410Types.html +++ b/docu/namespaceLD2410Types.html @@ -170,7 +170,7 @@  

                                                Detailed Description

                                                -

                                                @ brief All enums, structs, and type helpers for LD2410Async

                                                +

                                                @ brief All enums, structs, and type helpers for LD2410Async

                                                Enumeration Type Documentation

                                                ◆ AutoConfigStatus

                                                diff --git a/docu/navtreedata.js b/docu/navtreedata.js index 52c9eb3..d040678 100644 --- a/docu/navtreedata.js +++ b/docu/navtreedata.js @@ -25,6 +25,15 @@ var NAVTREE = [ [ "LD2410Async", "index.html", [ + [ "Introduction", "index.html#intro_sec", [ + [ "Features", "index.html#autotoc_md0", null ], + [ "Accessing data", "index.html#autotoc_md1", [ + [ "Example: Access detection data without cloning", "index.html#autotoc_md2", null ], + [ "Example: Clone config data, modify, and write back", "index.html#autotoc_md3", null ] + ] ], + [ "Usage", "index.html#autotoc_md4", null ] + ] ], + [ "Topics", "topics.html", "topics" ], [ "Namespaces", "namespaces.html", [ [ "Namespace List", "namespaces.html", "namespaces_dup" ], [ "Namespace Members", "namespacemembers.html", [ @@ -59,7 +68,7 @@ var NAVTREE = var NAVTREEINDEX = [ "LD2410Async_8cpp.html", -"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816" +"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docu/navtreeindex0.js b/docu/navtreeindex0.js index eb8118e..e86ad8a 100644 --- a/docu/navtreeindex0.js +++ b/docu/navtreeindex0.js @@ -1,253 +1,253 @@ var NAVTREEINDEX0 = { -"LD2410Async_8cpp.html":[2,0,4], -"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[2,0,4,1], -"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[2,0,4,0], -"LD2410Async_8cpp_source.html":[2,0,4], -"LD2410Async_8h.html":[2,0,5], -"LD2410Async_8h_source.html":[2,0,5], -"LD2410CommandBuilder_8h.html":[2,0,6], -"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[2,0,6,5], -"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[2,0,6,3], -"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[2,0,6,0], -"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[2,0,6,4], -"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[2,0,6,2], -"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[2,0,6,1], -"LD2410CommandBuilder_8h_source.html":[2,0,6], -"LD2410Debug_8h.html":[2,0,7], -"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[2,0,7,4], -"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[2,0,7,7], -"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[2,0,7,2], -"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[2,0,7,1], -"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[2,0,7,6], -"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[2,0,7,0], -"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[2,0,7,3], -"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[2,0,7,5], -"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[2,0,7,8], -"LD2410Debug_8h_source.html":[2,0,7], -"LD2410Defs_8h.html":[2,0,8], -"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[2,0,8,24], -"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[2,0,8,37], -"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[2,0,8,5], -"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[2,0,8,28], -"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[2,0,8,45], -"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[2,0,8,8], -"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[2,0,8,11], -"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[2,0,8,32], -"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[2,0,8,38], -"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[2,0,8,9], -"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[2,0,8,2], -"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[2,0,8,35], -"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[2,0,8,26], -"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[2,0,8,10], -"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[2,0,8,42], -"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[2,0,8,43], -"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[2,0,8,20], -"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,8,39], -"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,8,46], -"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,8,16], -"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,8,41], -"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,8,23], -"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,8,12], -"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,8,22], -"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,8,25], -"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,8,40], -"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,8,36], -"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,8,4], -"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[2,0,8,33], -"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[2,0,8,3], -"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[2,0,8,31], -"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[2,0,8,17], -"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[2,0,8,44], -"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[2,0,8,21], -"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[2,0,8,29], -"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[2,0,8,1], -"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[2,0,8,18], -"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[2,0,8,19], -"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[2,0,8,0], -"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[2,0,8,6], -"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[2,0,8,15], -"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[2,0,8,7], -"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[2,0,8,47], -"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[2,0,8,30], -"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[2,0,8,14], -"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[2,0,8,13], -"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[2,0,8,27], -"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[2,0,8,34], -"LD2410Defs_8h_source.html":[2,0,8], -"LD2410Types_8h.html":[2,0,9], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[2,0,9,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[2,0,9,2,0], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[2,0,9,2,3], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[2,0,9,2,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[2,0,9,2,1], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[2,0,9,6], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[2,0,9,6,0], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[2,0,9,6,2], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[2,0,9,6,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[2,0,9,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[2,0,9,3,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[2,0,9,3,2], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[2,0,9,3,5], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[2,0,9,3,4], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[2,0,9,3,6], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[2,0,9,3,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[2,0,9,3,0], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[2,0,9,3,7], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[2,0,9,4], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[2,0,9,4,0], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[2,0,9,4,2], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[2,0,9,4,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[2,0,9,7], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[2,0,9,7,3], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[2,0,9,7,0], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[2,0,9,7,4], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[2,0,9,7,6], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[2,0,9,7,2], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[2,0,9,7,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[2,0,9,7,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[2,0,9,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[2,0,9,5,0], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[2,0,9,5,2], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[2,0,9,5,3], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[2,0,9,5,1], -"LD2410Types_8h_source.html":[2,0,9], -"annotated.html":[1,0], -"basicPresenceDetection_8ino.html":[2,0,0,0], -"basicPresenceDetection_8ino_source.html":[2,0,0,0], -"changeConfig_8ino.html":[2,0,1,0], -"changeConfig_8ino_source.html":[2,0,1,0], -"changeDistanceResolution_8ino.html":[2,0,2,0], -"changeDistanceResolution_8ino_source.html":[2,0,2,0], -"classLD2410Async.html":[1,0,1], -"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[1,0,1,21], -"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[1,0,1,5], -"classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4":[1,0,1,55], -"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[1,0,1,20], -"classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024":[1,0,1,7], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab":[1,0,1,3], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[1,0,1,3,2], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[1,0,1,3,1], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[1,0,1,3,0], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[1,0,1,3,3], -"classLD2410Async.html#a19278199112e9358e96a192056e58e81":[1,0,1,1], -"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[1,0,1,17], -"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[1,0,1,37], -"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[1,0,1,49], -"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[1,0,1,24], -"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[1,0,1,48], -"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[1,0,1,11], -"classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3":[1,0,1,29], -"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[1,0,1,18], -"classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76":[1,0,1,54], -"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[1,0,1,9], -"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[1,0,1,32], -"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[1,0,1,34], -"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[1,0,1,53], -"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[1,0,1,50], -"classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02":[1,0,1,58], -"classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2":[1,0,1,25], -"classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf":[1,0,1,62], -"classLD2410Async.html#a714e62534394a52243f8f50fd58726f9":[1,0,1,41], -"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[1,0,1,6], -"classLD2410Async.html#a74138af198ac827349a25e122277803f":[1,0,1,36], -"classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7":[1,0,1,59], -"classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383":[1,0,1,2], -"classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e":[1,0,1,63], -"classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1":[1,0,1,64], -"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[1,0,1,45], -"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[1,0,1,10], -"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[1,0,1,31], -"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[1,0,1,16], -"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[1,0,1,23], -"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[1,0,1,26], -"classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8":[1,0,1,60], -"classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694":[1,0,1,56], -"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[1,0,1,13], -"classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7":[1,0,1,61], -"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[1,0,1,52], -"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[1,0,1,44], -"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[1,0,1,15], -"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[1,0,1,14], -"classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900":[1,0,1,4], -"classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1":[1,0,1,57], -"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[1,0,1,46], -"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[1,0,1,27], -"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[1,0,1,38], -"classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285":[1,0,1,42], -"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[1,0,1,28], -"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[1,0,1,51], -"classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b":[1,0,1,65], -"classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603":[1,0,1,0], -"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[1,0,1,12], -"classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6":[1,0,1,39], -"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[1,0,1,22], -"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[1,0,1,35], -"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[1,0,1,19], -"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[1,0,1,40], -"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[1,0,1,8], -"classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282":[1,0,1,43], -"classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54":[1,0,1,30], -"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[1,0,1,33], -"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[1,0,1,47], -"classes.html":[1,1], -"dir_0877bab65d936efc50d6280cdd9a4b61.html":[2,0,1], -"dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html":[2,0,0], -"dir_214001d413268a160f69364489f85961.html":[2,0,3], -"dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html":[2,0,2], -"files.html":[2,0], -"functions.html":[1,2,0], -"functions_enum.html":[1,2,4], -"functions_func.html":[1,2,1], -"functions_type.html":[1,2,3], -"functions_vars.html":[1,2,2], -"globals.html":[2,1,0], -"globals_defs.html":[2,1,2], -"globals_func.html":[2,1,1], +"LD2410Async_8cpp.html":[4,0,4], +"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[4,0,4,1], +"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[4,0,4,0], +"LD2410Async_8cpp_source.html":[4,0,4], +"LD2410Async_8h.html":[4,0,5], +"LD2410Async_8h_source.html":[4,0,5], +"LD2410CommandBuilder_8h.html":[4,0,6], +"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[4,0,6,5], +"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[4,0,6,3], +"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[4,0,6,0], +"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[4,0,6,4], +"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[4,0,6,2], +"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[4,0,6,1], +"LD2410CommandBuilder_8h_source.html":[4,0,6], +"LD2410Debug_8h.html":[4,0,7], +"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[4,0,7,4], +"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[4,0,7,7], +"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[4,0,7,2], +"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[4,0,7,1], +"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[4,0,7,6], +"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[4,0,7,0], +"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[4,0,7,3], +"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[4,0,7,5], +"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[4,0,7,8], +"LD2410Debug_8h_source.html":[4,0,7], +"LD2410Defs_8h.html":[4,0,8], +"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[4,0,8,24], +"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[4,0,8,37], +"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[4,0,8,5], +"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[4,0,8,28], +"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[4,0,8,45], +"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[4,0,8,8], +"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[4,0,8,11], +"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[4,0,8,32], +"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[4,0,8,38], +"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[4,0,8,9], +"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[4,0,8,2], +"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[4,0,8,35], +"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[4,0,8,26], +"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[4,0,8,10], +"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[4,0,8,42], +"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[4,0,8,43], +"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[4,0,8,20], +"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[4,0,8,39], +"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[4,0,8,46], +"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[4,0,8,16], +"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[4,0,8,41], +"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[4,0,8,23], +"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[4,0,8,12], +"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[4,0,8,22], +"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[4,0,8,25], +"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[4,0,8,40], +"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[4,0,8,36], +"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[4,0,8,4], +"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[4,0,8,33], +"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[4,0,8,3], +"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[4,0,8,31], +"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[4,0,8,17], +"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[4,0,8,44], +"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[4,0,8,21], +"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[4,0,8,29], +"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[4,0,8,1], +"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[4,0,8,18], +"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[4,0,8,19], +"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[4,0,8,0], +"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[4,0,8,6], +"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[4,0,8,15], +"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[4,0,8,7], +"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[4,0,8,47], +"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[4,0,8,30], +"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[4,0,8,14], +"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[4,0,8,13], +"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[4,0,8,27], +"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[4,0,8,34], +"LD2410Defs_8h_source.html":[4,0,8], +"LD2410Types_8h.html":[4,0,9], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[4,0,9,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,2,0], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[4,0,9,2,3], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[4,0,9,2,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[4,0,9,2,1], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[4,0,9,6], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[4,0,9,6,0], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[4,0,9,6,2], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[4,0,9,6,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[4,0,9,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[4,0,9,3,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[4,0,9,3,2], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[4,0,9,3,5], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[4,0,9,3,4], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[4,0,9,3,6], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[4,0,9,3,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[4,0,9,3,0], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[4,0,9,3,7], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[4,0,9,4], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,4,0], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[4,0,9,4,2], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[4,0,9,4,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[4,0,9,7], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[4,0,9,7,3], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[4,0,9,7,0], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[4,0,9,7,4], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[4,0,9,7,6], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[4,0,9,7,2], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[4,0,9,7,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[4,0,9,7,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[4,0,9,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,5,0], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[4,0,9,5,2], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[4,0,9,5,3], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[4,0,9,5,1], +"LD2410Types_8h_source.html":[4,0,9], +"annotated.html":[3,0], +"basicPresenceDetection_8ino.html":[4,0,0,0], +"basicPresenceDetection_8ino_source.html":[4,0,0,0], +"changeConfig_8ino.html":[4,0,1,0], +"changeConfig_8ino_source.html":[4,0,1,0], +"changeDistanceResolution_8ino.html":[4,0,2,0], +"changeDistanceResolution_8ino_source.html":[4,0,2,0], +"classLD2410Async.html":[3,0,1], +"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[3,0,1,21], +"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[3,0,1,5], +"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[3,0,1,20], +"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[3,0,1,17], +"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[3,0,1,37], +"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[3,0,1,49], +"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[3,0,1,24], +"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[3,0,1,48], +"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[3,0,1,11], +"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[3,0,1,18], +"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[3,0,1,9], +"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[3,0,1,32], +"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[3,0,1,34], +"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[3,0,1,53], +"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[3,0,1,50], +"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[3,0,1,6], +"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[3,0,1,45], +"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[3,0,1,10], +"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[3,0,1,31], +"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[3,0,1,16], +"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[3,0,1,23], +"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[3,0,1,26], +"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[3,0,1,13], +"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[3,0,1,52], +"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[3,0,1,44], +"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[3,0,1,15], +"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[3,0,1,14], +"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[3,0,1,46], +"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[3,0,1,27], +"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[3,0,1,38], +"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[3,0,1,28], +"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[3,0,1,51], +"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[3,0,1,12], +"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[3,0,1,22], +"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[3,0,1,35], +"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[3,0,1,19], +"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[3,0,1,40], +"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[3,0,1,8], +"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[3,0,1,33], +"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[3,0,1,47], +"classes.html":[3,1], +"dir_0877bab65d936efc50d6280cdd9a4b61.html":[4,0,1], +"dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html":[4,0,0], +"dir_214001d413268a160f69364489f85961.html":[4,0,3], +"dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html":[4,0,2], +"files.html":[4,0], +"functions.html":[3,2,0], +"functions_enum.html":[3,2,4], +"functions_func.html":[3,2,1], +"functions_type.html":[3,2,3], +"functions_vars.html":[3,2,2], +"globals.html":[4,1,0], +"globals_defs.html":[4,1,2], +"globals_func.html":[4,1,1], +"group__LD2410Async__Callbacks.html":[1,0], +"group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9":[1,0,0], +"group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285":[1,0,1], +"group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282":[1,0,2], +"group__LD2410Async__Data.html":[1,3], +"group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02":[1,3,2], +"group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf":[1,3,6], +"group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7":[1,3,3], +"group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e":[1,3,7], +"group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1":[1,3,8], +"group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8":[1,3,4], +"group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694":[1,3,0], +"group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7":[1,3,5], +"group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1":[1,3,1], +"group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b":[1,3,9], +"group__LD2410Async__Inactivity.html":[1,2], +"group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4":[1,2,5], +"group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3":[1,2,1], +"group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76":[1,2,4], +"group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2":[1,2,0], +"group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f":[1,2,2], +"group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6":[1,2,3], +"group__LD2410Async__Lifecycle.html":[1,1], +"group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024":[1,1,0], +"group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900":[1,1,2], +"group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54":[1,1,1], +"group__LD2410Async__Types.html":[1,4], +"group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab":[1,4,3], +"group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81":[1,4,1], +"group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383":[1,4,2], +"group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603":[1,4,0], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[1,4,3,2], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[1,4,3,1], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[1,4,3,0], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[1,4,3,3], "index.html":[], -"namespaceLD2410CommandBuilder.html":[0,0,0], -"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[0,0,0,5], -"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[0,0,0,3], -"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[0,0,0,0], -"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[0,0,0,4], -"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[0,0,0,2], -"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[0,0,0,1], -"namespaceLD2410Defs.html":[0,0,1], -"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[0,0,1,24], -"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[0,0,1,37], -"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[0,0,1,5], -"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[0,0,1,28], -"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[0,0,1,45], -"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[0,0,1,8], -"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[0,0,1,11], -"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[0,0,1,32], -"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[0,0,1,38], -"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[0,0,1,9], -"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[0,0,1,2], -"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[0,0,1,35], -"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[0,0,1,26], -"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[0,0,1,10], -"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[0,0,1,42], -"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[0,0,1,43], -"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[0,0,1,20], -"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[0,0,1,39], -"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[0,0,1,46], -"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[0,0,1,16], -"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[0,0,1,41], -"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[0,0,1,23], -"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[0,0,1,12], -"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[0,0,1,22], -"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[0,0,1,25], -"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[0,0,1,40], -"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[0,0,1,36], -"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[0,0,1,4], -"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[0,0,1,33], -"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[0,0,1,3], -"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[0,0,1,31], -"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[0,0,1,17], -"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[0,0,1,44], -"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[0,0,1,21], -"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[0,0,1,29], -"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[0,0,1,1], -"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[0,0,1,18] +"index.html#autotoc_md0":[0,0], +"index.html#autotoc_md1":[0,1], +"index.html#autotoc_md2":[0,1,0], +"index.html#autotoc_md3":[0,1,1], +"index.html#autotoc_md4":[0,2], +"index.html#intro_sec":[0], +"namespaceLD2410CommandBuilder.html":[2,0,0], +"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[2,0,0,5], +"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[2,0,0,3], +"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[2,0,0,0], +"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[2,0,0,4], +"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[2,0,0,2], +"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[2,0,0,1], +"namespaceLD2410Defs.html":[2,0,1], +"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[2,0,1,24], +"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[2,0,1,37], +"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[2,0,1,5], +"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[2,0,1,28], +"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[2,0,1,45], +"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[2,0,1,8], +"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[2,0,1,11], +"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[2,0,1,32], +"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[2,0,1,38], +"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[2,0,1,9], +"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[2,0,1,2], +"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[2,0,1,35], +"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[2,0,1,26], +"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[2,0,1,10], +"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[2,0,1,42], +"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[2,0,1,43], +"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[2,0,1,20], +"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,1,39], +"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,1,46], +"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,1,16], +"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,1,41], +"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,1,23], +"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,1,12], +"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,1,22], +"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,1,25], +"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,1,40] }; diff --git a/docu/navtreeindex1.js b/docu/navtreeindex1.js index 507618e..0dc7f4b 100644 --- a/docu/navtreeindex1.js +++ b/docu/navtreeindex1.js @@ -1,124 +1,136 @@ var NAVTREEINDEX1 = { -"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[0,0,1,19], -"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[0,0,1,0], -"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[0,0,1,6], -"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[0,0,1,15], -"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[0,0,1,7], -"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[0,0,1,47], -"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[0,0,1,30], -"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[0,0,1,14], -"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[0,0,1,13], -"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[0,0,1,27], -"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[0,0,1,34], -"namespaceLD2410Types.html":[0,0,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[0,0,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[0,0,2,2,0], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[0,0,2,2,3], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[0,0,2,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[0,0,2,2,1], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[0,0,2,6], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[0,0,2,6,0], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[0,0,2,6,2], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[0,0,2,6,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[0,0,2,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[0,0,2,3,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[0,0,2,3,2], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[0,0,2,3,5], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[0,0,2,3,4], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[0,0,2,3,6], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[0,0,2,3,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[0,0,2,3,0], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[0,0,2,3,7], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[0,0,2,4], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[0,0,2,4,0], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[0,0,2,4,2], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[0,0,2,4,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[0,0,2,7], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[0,0,2,7,3], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[0,0,2,7,0], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[0,0,2,7,4], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[0,0,2,7,6], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[0,0,2,7,2], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[0,0,2,7,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[0,0,2,7,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[0,0,2,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[0,0,2,5,0], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[0,0,2,5,2], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[0,0,2,5,3], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[0,0,2,5,1], -"namespacemembers.html":[0,1,0], -"namespacemembers_enum.html":[0,1,3], -"namespacemembers_func.html":[0,1,1], -"namespacemembers_vars.html":[0,1,2], -"namespaces.html":[0,0], +"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,1,36], +"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,1,4], +"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[2,0,1,33], +"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[2,0,1,3], +"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[2,0,1,31], +"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[2,0,1,17], +"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[2,0,1,44], +"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[2,0,1,21], +"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[2,0,1,29], +"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[2,0,1,1], +"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[2,0,1,18], +"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[2,0,1,19], +"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[2,0,1,0], +"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[2,0,1,6], +"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[2,0,1,15], +"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[2,0,1,7], +"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[2,0,1,47], +"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[2,0,1,30], +"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[2,0,1,14], +"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[2,0,1,13], +"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[2,0,1,27], +"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[2,0,1,34], +"namespaceLD2410Types.html":[2,0,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[2,0,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,2,0], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[2,0,2,2,3], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[2,0,2,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[2,0,2,2,1], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[2,0,2,6], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[2,0,2,6,0], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[2,0,2,6,2], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[2,0,2,6,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[2,0,2,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[2,0,2,3,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[2,0,2,3,2], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[2,0,2,3,5], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[2,0,2,3,4], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[2,0,2,3,6], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[2,0,2,3,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[2,0,2,3,0], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[2,0,2,3,7], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[2,0,2,4], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,4,0], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[2,0,2,4,2], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[2,0,2,4,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[2,0,2,7], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[2,0,2,7,3], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[2,0,2,7,0], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[2,0,2,7,4], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[2,0,2,7,6], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[2,0,2,7,2], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[2,0,2,7,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[2,0,2,7,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[2,0,2,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,5,0], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[2,0,2,5,2], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[2,0,2,5,3], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[2,0,2,5,1], +"namespacemembers.html":[2,1,0], +"namespacemembers_enum.html":[2,1,3], +"namespacemembers_func.html":[2,1,1], +"namespacemembers_vars.html":[2,1,2], +"namespaces.html":[2,0], "pages.html":[], -"receiveData_8ino.html":[2,0,3,0], -"receiveData_8ino_source.html":[2,0,3,0], -"structLD2410Types_1_1ConfigData.html":[0,0,2,0], -"structLD2410Types_1_1ConfigData.html":[1,0,0,0], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[0,0,2,0,4], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,0,0,0,4], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[0,0,2,0,2], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,0,0,0,2], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[0,0,2,0,3], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,0,0,0,3], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[0,0,2,0,8], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,0,0,0,8], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[0,0,2,0,12], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,0,0,0,12], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[0,0,2,0,0], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,0,0,0,0], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[0,0,2,0,7], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,0,0,0,7], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[0,0,2,0,1], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,0,0,0,1], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[0,0,2,0,6], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,0,0,0,6], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[0,0,2,0,9], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,0,0,0,9], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[0,0,2,0,11], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,0,0,0,11], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[0,0,2,0,5], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,0,0,0,5], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[0,0,2,0,10], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,0,0,0,10], -"structLD2410Types_1_1DetectionData.html":[0,0,2,1], -"structLD2410Types_1_1DetectionData.html":[1,0,0,1], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[0,0,2,1,0], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,0,0,1,0], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[0,0,2,1,14], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,0,0,1,14], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[0,0,2,1,2], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,0,0,1,2], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[0,0,2,1,11], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,0,0,1,11], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[0,0,2,1,15], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,0,0,1,15], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[0,0,2,1,3], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,0,0,1,3], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[0,0,2,1,1], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,0,0,1,1], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[0,0,2,1,6], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,0,0,1,6], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[0,0,2,1,16], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,0,0,1,16], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[0,0,2,1,7], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,0,0,1,7], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[0,0,2,1,13], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,0,0,1,13], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[0,0,2,1,10], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,0,0,1,10], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[0,0,2,1,8], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,0,0,1,8], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[0,0,2,1,9], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,0,0,1,9], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[0,0,2,1,17], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,0,0,1,17], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[0,0,2,1,4], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,0,0,1,4], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[0,0,2,1,5], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,0,0,1,5], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[0,0,2,1,12], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,0,0,1,12] +"receiveData_8ino.html":[4,0,3,0], +"receiveData_8ino_source.html":[4,0,3,0], +"structLD2410Types_1_1ConfigData.html":[2,0,2,0], +"structLD2410Types_1_1ConfigData.html":[3,0,0,0], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[2,0,2,0,4], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[3,0,0,0,4], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[2,0,2,0,2], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[3,0,0,0,2], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[2,0,2,0,3], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[3,0,0,0,3], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[2,0,2,0,8], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[3,0,0,0,8], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[2,0,2,0,12], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[3,0,0,0,12], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[2,0,2,0,0], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[3,0,0,0,0], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[2,0,2,0,7], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[3,0,0,0,7], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[2,0,2,0,1], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[3,0,0,0,1], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[2,0,2,0,6], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[3,0,0,0,6], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[2,0,2,0,9], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[3,0,0,0,9], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[2,0,2,0,11], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[3,0,0,0,11], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[2,0,2,0,5], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[3,0,0,0,5], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[2,0,2,0,10], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[3,0,0,0,10], +"structLD2410Types_1_1DetectionData.html":[2,0,2,1], +"structLD2410Types_1_1DetectionData.html":[3,0,0,1], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[2,0,2,1,0], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[3,0,0,1,0], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[2,0,2,1,14], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[3,0,0,1,14], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[2,0,2,1,2], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[3,0,0,1,2], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[2,0,2,1,11], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[3,0,0,1,11], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[2,0,2,1,15], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[3,0,0,1,15], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[2,0,2,1,3], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[3,0,0,1,3], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[2,0,2,1,1], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[3,0,0,1,1], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[2,0,2,1,6], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[3,0,0,1,6], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[2,0,2,1,16], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[3,0,0,1,16], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[2,0,2,1,7], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[3,0,0,1,7], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[2,0,2,1,13], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[3,0,0,1,13], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[2,0,2,1,10], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[3,0,0,1,10], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[2,0,2,1,8], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[3,0,0,1,8], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[2,0,2,1,9], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[3,0,0,1,9], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[2,0,2,1,17], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[3,0,0,1,17], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[2,0,2,1,4], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[3,0,0,1,4], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[2,0,2,1,5], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[3,0,0,1,5], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[2,0,2,1,12], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[3,0,0,1,12], +"topics.html":[1] }; diff --git a/docu/search/all_0.js b/docu/search/all_0.js index fd4e7b9..97e5e8a 100644 --- a/docu/search/all_0.js +++ b/docu/search/all_0.js @@ -1,23 +1,24 @@ var searchData= [ ['a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['access_20detection_20data_20without_20cloning_1',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['access_20detection_20data_20without_20cloning_1',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], ['access_20without_20cloning_3',['access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['accessing_20data_4',['Accessing data',['../classLD2410Async.html#autotoc_md1',1,'']]], + ['accessing_20data_4',['Accessing data',['../index.html#autotoc_md1',1,'']]], ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['and_20mac_6',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['and_20write_20back_7',['and write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['asynccancel_9',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asynccommandcallback_10',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], - ['asynccommandresult_11',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['asyncisbusy_12',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], - ['auto_20config_13',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], - ['auto_20config_20status_14',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['autoconfig_5ffailed_15',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_16',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_17',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], - ['autoconfigstatus_18',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], - ['autoconfigstatus_19',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['and_20callbacks_6',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], + ['and_20mac_7',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['and_20write_20back_8',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['apply_20config_9',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['asynccancel_10',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asynccommandcallback_11',['AsyncCommandCallback',['../group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], + ['asynccommandresult_12',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asyncisbusy_13',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], + ['auto_20config_14',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], + ['auto_20config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['autoconfig_5ffailed_16',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_17',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_18',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], + ['autoconfigstatus_19',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], + ['autoconfigstatus_20',['autoConfigStatus',['../group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/all_1.js b/docu/search/all_1.js index 24a1191..d7621bb 100644 --- a/docu/search/all_1.js +++ b/docu/search/all_1.js @@ -1,30 +1,31 @@ var searchData= [ - ['back_0',['back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['basicpresencedetection_2eino_1',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], - ['baudrate_2',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], - ['baudrate_5f115200_3',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_4',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_5',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_6',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_7',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_8',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_9',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_10',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], - ['begin_11',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_12',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], - ['beginautoconfigcommand_13',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], - ['beginautoconfigcommanddata_14',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], - ['bluetoothsettingscommand_15',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], - ['bluetoothsettingsoffcommanddata_16',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], - ['bluetoothsettingsoncommanddata_17',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['bufferendswith_18',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], - ['buffersize_19',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], - ['buildauxcontrolcommand_20',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], - ['buildbaudratecommand_21',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], - ['buildbluetoothpasswordcommand_22',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], - ['builddistanceresolutioncommand_23',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], - ['buildgatesensitivitycommand_24',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], - ['buildmaxgatecommand_25',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], - ['byte2hex_26',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] + ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['basic_20methods_1',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]], + ['basicpresencedetection_2eino_2',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], + ['baudrate_3',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], + ['baudrate_5f115200_4',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_5',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_6',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_7',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_8',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_9',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_10',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_11',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], + ['begin_12',['begin',['../group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_13',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['beginautoconfigcommand_14',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], + ['beginautoconfigcommanddata_15',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], + ['bluetoothsettingscommand_16',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], + ['bluetoothsettingsoffcommanddata_17',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], + ['bluetoothsettingsoncommanddata_18',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], + ['bufferendswith_19',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], + ['buffersize_20',['bufferSize',['../group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], + ['buildauxcontrolcommand_21',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], + ['buildbaudratecommand_22',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], + ['buildbluetoothpasswordcommand_23',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], + ['builddistanceresolutioncommand_24',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], + ['buildgatesensitivitycommand_25',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], + ['buildmaxgatecommand_26',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], + ['byte2hex_27',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] ]; diff --git a/docu/search/all_10.js b/docu/search/all_10.js index 431533e..49bed96 100644 --- a/docu/search/all_10.js +++ b/docu/search/all_10.js @@ -4,6 +4,7 @@ var searchData= ['taildata_1',['tailData',['../namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f',1,'LD2410Defs']]], ['targetstate_2',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], ['targetstate_3',['targetState',['../structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7',1,'LD2410Types::DetectionData']]], - ['timeout_4',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], - ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]] + ['timeout_4',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], + ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]], + ['types_20and_20callbacks_6',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] ]; diff --git a/docu/search/all_11.js b/docu/search/all_11.js index 3c1c98a..cdfacfb 100644 --- a/docu/search/all_11.js +++ b/docu/search/all_11.js @@ -1,4 +1,4 @@ var searchData= [ - ['usage_0',['Usage',['../classLD2410Async.html#autotoc_md4',1,'']]] + ['usage_0',['Usage',['../index.html#autotoc_md4',1,'']]] ]; diff --git a/docu/search/all_13.js b/docu/search/all_13.js index 7a47fc5..e78f009 100644 --- a/docu/search/all_13.js +++ b/docu/search/all_13.js @@ -1,5 +1,5 @@ var searchData= [ - ['without_20cloning_0',['without cloning',['../classLD2410Async.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['write_20back_1',['write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] + ['without_20cloning_0',['without cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['write_20back_1',['write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] ]; diff --git a/docu/search/all_2.js b/docu/search/all_2.js index 942cf2f..480b9c6 100644 --- a/docu/search/all_2.js +++ b/docu/search/all_2.js @@ -1,34 +1,37 @@ var searchData= [ - ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], - ['changeconfig_2eino_1',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], - ['changedistanceresolution_2eino_2',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], - ['check_20auto_20config_20status_3',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['clone_20config_20data_20modify_20and_20write_20back_5',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], - ['clone_20modify_20and_20apply_20config_6',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['clone_20modify_20and_20write_20back_7',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], - ['cloning_8',['cloning',['../classLD2410Async.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['completed_9',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], - ['config_10',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], - ['config_20data_11',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['config_20data_20modify_20and_20write_20back_12',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], - ['config_20status_13',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['configdata_14',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], - ['configdata_15',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], - ['configdisablecommand_16',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], - ['configdisablecommanddata_17',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], - ['configenablecommand_18',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], - ['configenablecommanddata_19',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_20',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], - ['configureallconfigsettingsasync_21',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_22',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_23',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_24',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_25',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_26',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_27',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_28',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_29',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_30',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] + ['callback_20registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], + ['callbacks_1',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], + ['canceled_2',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['changeconfig_2eino_3',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], + ['changedistanceresolution_2eino_4',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], + ['check_20auto_20config_20status_5',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['clone_6',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['clone_20config_20data_20modify_20and_20write_20back_7',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['clone_20modify_20and_20apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['clone_20modify_20and_20write_20back_9',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['cloning_10',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['completed_11',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], + ['config_12',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], + ['config_20data_13',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['config_20data_20modify_20and_20write_20back_14',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['configdata_16',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], + ['configdata_17',['configData',['../group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdisablecommand_18',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], + ['configdisablecommanddata_19',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], + ['configenablecommand_20',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], + ['configenablecommanddata_21',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], + ['configmodeenabled_22',['configModeEnabled',['../group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], + ['configureallconfigsettingsasync_23',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_24',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_25',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_26',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_27',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_28',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_29',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_30',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_31',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_32',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]], + ['constructor_20basic_20methods_33',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] ]; diff --git a/docu/search/all_3.js b/docu/search/all_3.js index 25e355f..2e3840f 100644 --- a/docu/search/all_3.js +++ b/docu/search/all_3.js @@ -1,32 +1,33 @@ var searchData= [ - ['data_0',['data',['../classLD2410Async.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], - ['data_20modify_20and_20write_20back_1',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], - ['data_20without_20cloning_2',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], - ['debug_5fprint_3',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], - ['debug_5fprint_5fdata_4',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], - ['debug_5fprint_5fmillis_5',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_6',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_5fdata_7',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], - ['debug_5fprintln_8',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], - ['debug_5fprintln_5fdata_9',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], - ['default_5fhigh_5fdetected_5flow_10',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_11',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], - ['detecteddistance_12',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], - ['detectiondata_14',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], - ['detectiondata_15',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], - ['detectiondatacallback_16',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]], - ['disablebluetoothasync_17',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_18',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_19',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_20',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], - ['distancegatemotionsensitivity_21',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], - ['distancegatesensitivityconfigcommand_22',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], - ['distancegatesensitivityconfigcommanddata_23',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], - ['distancegatestationarysensitivity_24',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], - ['distanceresolution_25',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], - ['distanceresolution_26',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], - ['do_3a_27',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], - ['don’t_3a_28',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] + ['data_0',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], + ['data_20members_1',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], + ['data_20modify_20and_20write_20back_2',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['data_20without_20cloning_3',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['debug_5fprint_4',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], + ['debug_5fprint_5fdata_5',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], + ['debug_5fprint_5fmillis_6',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_7',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_5fdata_8',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], + ['debug_5fprintln_9',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], + ['debug_5fprintln_5fdata_10',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], + ['default_5fhigh_5fdetected_5flow_11',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_12',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], + ['detecteddistance_13',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], + ['detection_20data_20without_20cloning_14',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['detectiondata_15',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], + ['detectiondata_16',['detectionData',['../group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondatacallback_17',['DetectionDataCallback',['../group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]], + ['disablebluetoothasync_18',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_19',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_20',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_21',['disableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], + ['distancegatemotionsensitivity_22',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], + ['distancegatesensitivityconfigcommand_23',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], + ['distancegatesensitivityconfigcommanddata_24',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], + ['distancegatestationarysensitivity_25',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], + ['distanceresolution_26',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], + ['distanceresolution_27',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], + ['do_3a_28',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], + ['don’t_3a_29',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] ]; diff --git a/docu/search/all_4.js b/docu/search/all_4.js index c007b62..8662c9f 100644 --- a/docu/search/all_4.js +++ b/docu/search/all_4.js @@ -4,19 +4,19 @@ var searchData= ['enablebluetoothasync_1',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], ['enableconfigmodeasync_2',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_4',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_5',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enableinactivityhandling_4',['enableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_5',['end',['../group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['engineeringmode_6',['engineeringMode',['../structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7',1,'LD2410Types::DetectionData']]], ['engineeringmodedisablecomand_7',['engineeringModeDisableComand',['../namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d',1,'LD2410Defs']]], ['engineeringmodedisablecommanddata_8',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_9',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_10',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_11',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], + ['engineeringmodeenabled_11',['engineeringModeEnabled',['../group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], ['equals_12',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], - ['example_3a_20access_20detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../classLD2410Async.html#autotoc_md2',1,'']]], + ['example_3a_20access_20detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], ['example_3a_20access_20values_20from_20a_20clone_14',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], ['example_3a_20check_20auto_20config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_16',['Example: Clone config data, modify, and write back',['../classLD2410Async.html#autotoc_md3',1,'']]], + ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_16',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], ['example_3a_20clone_20modify_20and_20apply_20config_17',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], ['example_3a_20clone_20modify_20and_20write_20back_18',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], ['example_3a_20efficient_20read_20access_20without_20cloning_19',['Example: Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], diff --git a/docu/search/all_5.js b/docu/search/all_5.js index 8d55e9f..6de2876 100644 --- a/docu/search/all_5.js +++ b/docu/search/all_5.js @@ -1,8 +1,8 @@ var searchData= [ - ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], - ['features_1',['Features',['../classLD2410Async.html#autotoc_md0',1,'']]], - ['firmware_2',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], + ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], + ['features_1',['Features',['../index.html#autotoc_md0',1,'']]], + ['firmware_2',['firmware',['../group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], ['from_20a_20clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_6.js b/docu/search/all_6.js index 39faca2..6d2a7c9 100644 --- a/docu/search/all_6.js +++ b/docu/search/all_6.js @@ -1,11 +1,11 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], + ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], ['getbluetoothpermissionscommand_2',['getBluetoothPermissionsCommand',['../namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34',1,'LD2410Defs']]], ['getconfigdata_3',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], ['getconfigdataref_4',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], ['getdetectiondata_5',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], ['getdetectiondataref_6',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/all_7.js b/docu/search/all_7.js index 33f656d..b4ceb01 100644 --- a/docu/search/all_7.js +++ b/docu/search/all_7.js @@ -1,5 +1,6 @@ var searchData= [ - ['headconfig_0',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], - ['headdata_1',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] + ['handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]], + ['headconfig_1',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], + ['headdata_2',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] ]; diff --git a/docu/search/all_8.js b/docu/search/all_8.js index b6b23e2..e7a2336 100644 --- a/docu/search/all_8.js +++ b/docu/search/all_8.js @@ -1,8 +1,10 @@ var searchData= [ ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], - ['isconfigmodeenabled_1',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_2',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_3',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], - ['isvalid_4',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] + ['inactivity_20handling_1',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]], + ['introduction_2',['Introduction',['../index.html#intro_sec',1,'']]], + ['isconfigmodeenabled_3',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_4',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_5',['isInactivityHandlingEnabled',['../group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isvalid_6',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_9.js b/docu/search/all_9.js index af8d5b8..6e36042 100644 --- a/docu/search/all_9.js +++ b/docu/search/all_9.js @@ -1,7 +1,7 @@ var searchData= [ ['ld2410_5fbuffer_5fsize_0',['LD2410_Buffer_Size',['../namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f',1,'LD2410Defs']]], - ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()']]], + ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], ['ld2410async_2ecpp_2',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], ['ld2410async_2eh_3',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], ['ld2410async_5fdebug_5fdata_5flevel_4',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], diff --git a/docu/search/all_a.js b/docu/search/all_a.js index a899d99..27fbd47 100644 --- a/docu/search/all_a.js +++ b/docu/search/all_a.js @@ -1,19 +1,21 @@ var searchData= [ ['mac_0',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['mac_1',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_2',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_1',['mac',['../group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_2',['macString',['../group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_3',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_4',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_5',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], ['maxstationarydistancegate_6',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], - ['modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['modify_20and_20write_20back_8',['modify and write back',['../classLD2410Async.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['moving_5fand_5fstationary_5ftarget_9',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_10',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], - ['movingpresencedetected_11',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], - ['movingtargetdistance_12',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignalcount_13',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignals_14',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], - ['movingtargetsignal_15',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] + ['members_7',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], + ['methods_8',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]], + ['modify_20and_20apply_20config_9',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['modify_20and_20write_20back_10',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['moving_5fand_5fstationary_5ftarget_11',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_12',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], + ['movingpresencedetected_13',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], + ['movingtargetdistance_14',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignalcount_15',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignals_16',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], + ['movingtargetsignal_17',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] ]; diff --git a/docu/search/all_d.js b/docu/search/all_d.js index 658dc94..8052777 100644 --- a/docu/search/all_d.js +++ b/docu/search/all_d.js @@ -2,5 +2,6 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], ['print_1',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], - ['protocolversion_2',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['protocolversion_2',['protocolVersion',['../group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]], + ['public_20data_20members_3',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] ]; diff --git a/docu/search/all_e.js b/docu/search/all_e.js index b62e4e0..ad259aa 100644 --- a/docu/search/all_e.js +++ b/docu/search/all_e.js @@ -6,34 +6,35 @@ var searchData= ['rebootcommanddata_3',['rebootCommandData',['../namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a',1,'LD2410Defs']]], ['receivedata_2eino_4',['receiveData.ino',['../receiveData_8ino.html',1,'']]], ['refresh_20config_20data_5',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], - ['requestautoconfigstatuscommand_12',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], - ['requestautoconfigstatuscommanddata_13',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], - ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], - ['requestauxcontrolsettingscommand_15',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], - ['requestauxcontrolsettingscommanddata_16',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], - ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], - ['requestdistanceresolutioncommand_19',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], - ['requestdistanceresolutioncommanddata_20',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], - ['requestfirmwareasync_21',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], - ['requestfirmwarecommand_22',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], - ['requestfirmwarecommanddata_23',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], - ['requestgateparametersasync_24',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], - ['requestmacaddresscommand_25',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], - ['requestmacaddresscommanddata_26',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], - ['requestparamscommand_27',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], - ['requestparamscommanddata_28',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], - ['resolution_5f20cm_29',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_30',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], - ['restorefactorsettingscommanddata_31',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], - ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], - ['restorefactorysettingsasynccommand_33',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], - ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['run_20auto_20config_35',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] + ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['registration_9',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], + ['requestallconfigsettingsasync_10',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_11',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_12',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestautoconfigstatuscommand_13',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], + ['requestautoconfigstatuscommanddata_14',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], + ['requestauxcontrolsettingsasync_15',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestauxcontrolsettingscommand_16',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], + ['requestauxcontrolsettingscommanddata_17',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], + ['requestbluetoothmacaddressasync_18',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_19',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestdistanceresolutioncommand_20',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], + ['requestdistanceresolutioncommanddata_21',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], + ['requestfirmwareasync_22',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestfirmwarecommand_23',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], + ['requestfirmwarecommanddata_24',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], + ['requestgateparametersasync_25',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['requestmacaddresscommand_26',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], + ['requestmacaddresscommanddata_27',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], + ['requestparamscommand_28',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], + ['requestparamscommanddata_29',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], + ['resolution_5f20cm_30',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_31',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], + ['restorefactorsettingscommanddata_32',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], + ['restorefactorysettingsasync_33',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], + ['restorefactorysettingsasynccommand_34',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], + ['retrieve_20firmware_20and_20mac_35',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['run_20auto_20config_36',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_f.js b/docu/search/all_f.js index 339930d..a1fc637 100644 --- a/docu/search/all_f.js +++ b/docu/search/all_f.js @@ -10,8 +10,8 @@ var searchData= ['setdistanceresolution20cmcommanddata_7',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], ['setdistanceresolution75cmcommanddata_8',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], ['setdistanceresolutioncommand_9',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], - ['setinactivityhandling_10',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], + ['setinactivityhandling_10',['setInactivityHandling',['../group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], ['stationary_5ftarget_12',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], ['stationarypresencedetected_13',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], ['stationarytargetdistance_14',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], @@ -19,5 +19,5 @@ var searchData= ['stationarytargetgatesignals_16',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], ['stationarytargetsignal_17',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], ['status_18',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['success_19',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['success_19',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enums_0.js b/docu/search/enums_0.js index ec7d65e..52c5f4f 100644 --- a/docu/search/enums_0.js +++ b/docu/search/enums_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccommandresult_0',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asynccommandresult_0',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], ['autoconfigstatus_1',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_2.js b/docu/search/enumvalues_2.js index 0733392..648090b 100644 --- a/docu/search/enumvalues_2.js +++ b/docu/search/enumvalues_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['canceled_0',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], ['completed_1',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_4.js b/docu/search/enumvalues_4.js index b56eb90..03124b3 100644 --- a/docu/search/enumvalues_4.js +++ b/docu/search/enumvalues_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] + ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_a.js b/docu/search/enumvalues_a.js index 5cb9cc1..dd71f2f 100644 --- a/docu/search/enumvalues_a.js +++ b/docu/search/enumvalues_a.js @@ -1,5 +1,5 @@ var searchData= [ ['stationary_5ftarget_0',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], - ['success_1',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['success_1',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_b.js b/docu/search/enumvalues_b.js index c466cc0..40b3921 100644 --- a/docu/search/enumvalues_b.js +++ b/docu/search/enumvalues_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['timeout_0',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] + ['timeout_0',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_1.js b/docu/search/functions_1.js index 0818f99..e37433d 100644 --- a/docu/search/functions_1.js +++ b/docu/search/functions_1.js @@ -1,6 +1,6 @@ var searchData= [ - ['begin_0',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['begin_0',['begin',['../group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], ['beginautoconfigasync_1',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['bufferendswith_2',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], ['buildauxcontrolcommand_3',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], diff --git a/docu/search/functions_3.js b/docu/search/functions_3.js index 072953d..df11e81 100644 --- a/docu/search/functions_3.js +++ b/docu/search/functions_3.js @@ -3,5 +3,5 @@ var searchData= ['disablebluetoothasync_0',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], ['disableconfigmodeasync_1',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_3',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] + ['disableinactivityhandling_3',['disableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_4.js b/docu/search/functions_4.js index 4151ded..b4f7000 100644 --- a/docu/search/functions_4.js +++ b/docu/search/functions_4.js @@ -3,7 +3,7 @@ var searchData= ['enablebluetoothasync_0',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], ['enableconfigmodeasync_1',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_3',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_4',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enableinactivityhandling_3',['enableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_4',['end',['../group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['equals_5',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_5.js b/docu/search/functions_5.js index 7a0cce8..c5885dc 100644 --- a/docu/search/functions_5.js +++ b/docu/search/functions_5.js @@ -5,5 +5,5 @@ var searchData= ['getconfigdataref_2',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], ['getdetectiondata_3',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], ['getdetectiondataref_4',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_6.js b/docu/search/functions_6.js index 8c8e0e6..b7b96bb 100644 --- a/docu/search/functions_6.js +++ b/docu/search/functions_6.js @@ -2,6 +2,6 @@ var searchData= [ ['isconfigmodeenabled_0',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], ['isvalid_3',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_7.js b/docu/search/functions_7.js index 92323e6..e6d84d5 100644 --- a/docu/search/functions_7.js +++ b/docu/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['ld2410async_0',['LD2410Async',['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] + ['ld2410async_0',['LD2410Async',['../group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_9.js b/docu/search/functions_9.js index 237074f..11719a8 100644 --- a/docu/search/functions_9.js +++ b/docu/search/functions_9.js @@ -1,9 +1,9 @@ var searchData= [ ['rebootasync_0',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], - ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], diff --git a/docu/search/functions_a.js b/docu/search/functions_a.js index 4246c3c..b9bd543 100644 --- a/docu/search/functions_a.js +++ b/docu/search/functions_a.js @@ -1,6 +1,6 @@ var searchData= [ ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], - ['setinactivityhandling_1',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] + ['setinactivityhandling_1',['setInactivityHandling',['../group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] ]; diff --git a/docu/search/groups_0.js b/docu/search/groups_0.js new file mode 100644 index 0000000..a9ae1be --- /dev/null +++ b/docu/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['and_20callbacks_0',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] +]; diff --git a/docu/search/groups_1.js b/docu/search/groups_1.js new file mode 100644 index 0000000..f6a8c33 --- /dev/null +++ b/docu/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basic_20methods_0',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] +]; diff --git a/docu/search/groups_2.js b/docu/search/groups_2.js new file mode 100644 index 0000000..780cf88 --- /dev/null +++ b/docu/search/groups_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['callback_20registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], + ['callbacks_1',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], + ['constructor_20basic_20methods_2',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] +]; diff --git a/docu/search/groups_3.js b/docu/search/groups_3.js new file mode 100644 index 0000000..c09df6b --- /dev/null +++ b/docu/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data_20members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] +]; diff --git a/docu/search/groups_4.js b/docu/search/groups_4.js new file mode 100644 index 0000000..494deef --- /dev/null +++ b/docu/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]] +]; diff --git a/docu/search/groups_5.js b/docu/search/groups_5.js new file mode 100644 index 0000000..b928161 --- /dev/null +++ b/docu/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inactivity_20handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]] +]; diff --git a/docu/search/groups_6.js b/docu/search/groups_6.js new file mode 100644 index 0000000..59429aa --- /dev/null +++ b/docu/search/groups_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], + ['methods_1',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] +]; diff --git a/docu/search/groups_7.js b/docu/search/groups_7.js new file mode 100644 index 0000000..b530a99 --- /dev/null +++ b/docu/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['public_20data_20members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] +]; diff --git a/docu/search/groups_8.js b/docu/search/groups_8.js new file mode 100644 index 0000000..137cea5 --- /dev/null +++ b/docu/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]] +]; diff --git a/docu/search/groups_9.js b/docu/search/groups_9.js new file mode 100644 index 0000000..30f9ed4 --- /dev/null +++ b/docu/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['types_20and_20callbacks_0',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] +]; diff --git a/docu/search/pages_0.js b/docu/search/pages_0.js new file mode 100644 index 0000000..d0cc836 --- /dev/null +++ b/docu/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ld2410async_0',['LD2410Async',['../index.html',1,'']]] +]; diff --git a/docu/search/searchdata.js b/docu/search/searchdata.js index af3ace7..9a1943d 100644 --- a/docu/search/searchdata.js +++ b/docu/search/searchdata.js @@ -9,7 +9,9 @@ var indexSectionsWithContent = 6: "adg", 7: "abdlot", 8: "abcdfilmnrst", - 9: "dl" + 9: "dl", + 10: "abcdhimprt", + 11: "l" }; var indexSectionNames = @@ -23,7 +25,9 @@ var indexSectionNames = 6: "typedefs", 7: "enums", 8: "enumvalues", - 9: "defines" + 9: "defines", + 10: "groups", + 11: "pages" }; var indexSectionLabels = @@ -37,6 +41,8 @@ var indexSectionLabels = 6: "Typedefs", 7: "Enumerations", 8: "Enumerator", - 9: "Macros" + 9: "Macros", + 10: "Modules", + 11: "Pages" }; diff --git a/docu/search/typedefs_0.js b/docu/search/typedefs_0.js index f554ef9..97c1f89 100644 --- a/docu/search/typedefs_0.js +++ b/docu/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['asynccommandcallback_0',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] + ['asynccommandcallback_0',['AsyncCommandCallback',['../group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_1.js b/docu/search/typedefs_1.js index 111b7e0..815c1e1 100644 --- a/docu/search/typedefs_1.js +++ b/docu/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['detectiondatacallback_0',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]] + ['detectiondatacallback_0',['DetectionDataCallback',['../group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_2.js b/docu/search/typedefs_2.js index d967de0..7b1f251 100644 --- a/docu/search/typedefs_2.js +++ b/docu/search/typedefs_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] + ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_0.js b/docu/search/variables_0.js index 1e3a26c..9c4b8a4 100644 --- a/docu/search/variables_0.js +++ b/docu/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['autoconfigstatus_0',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['autoconfigstatus_0',['autoConfigStatus',['../group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_1.js b/docu/search/variables_1.js index c7266ad..0eb8cfd 100644 --- a/docu/search/variables_1.js +++ b/docu/search/variables_1.js @@ -5,5 +5,5 @@ var searchData= ['bluetoothsettingscommand_2',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], ['bluetoothsettingsoffcommanddata_3',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], ['bluetoothsettingsoncommanddata_4',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['buffersize_5',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] + ['buffersize_5',['bufferSize',['../group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_2.js b/docu/search/variables_2.js index 090f1af..fc3fcfe 100644 --- a/docu/search/variables_2.js +++ b/docu/search/variables_2.js @@ -1,9 +1,9 @@ var searchData= [ - ['configdata_0',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdata_0',['configData',['../group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], ['configdisablecommand_1',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], ['configdisablecommanddata_2',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], ['configenablecommand_3',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], ['configenablecommanddata_4',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_5',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] + ['configmodeenabled_5',['configModeEnabled',['../group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_3.js b/docu/search/variables_3.js index 48d60d4..b8425cc 100644 --- a/docu/search/variables_3.js +++ b/docu/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ ['detecteddistance_0',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detectiondata_1',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondata_1',['detectionData',['../group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], ['distancegatemotionsensitivity_2',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], ['distancegatesensitivityconfigcommand_3',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], ['distancegatesensitivityconfigcommanddata_4',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], diff --git a/docu/search/variables_4.js b/docu/search/variables_4.js index 0aba132..d260430 100644 --- a/docu/search/variables_4.js +++ b/docu/search/variables_4.js @@ -5,5 +5,5 @@ var searchData= ['engineeringmodedisablecommanddata_2',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_3',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_4',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_5',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] + ['engineeringmodeenabled_5',['engineeringModeEnabled',['../group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_5.js b/docu/search/variables_5.js index d2f07d1..39d58db 100644 --- a/docu/search/variables_5.js +++ b/docu/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['firmware_0',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] + ['firmware_0',['firmware',['../group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_9.js b/docu/search/variables_9.js index 11bf95a..d11ae54 100644 --- a/docu/search/variables_9.js +++ b/docu/search/variables_9.js @@ -1,7 +1,7 @@ var searchData= [ - ['mac_0',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_1',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_0',['mac',['../group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_1',['macString',['../group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_2',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_3',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_4',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], diff --git a/docu/search/variables_c.js b/docu/search/variables_c.js index f458503..487c60a 100644 --- a/docu/search/variables_c.js +++ b/docu/search/variables_c.js @@ -1,5 +1,5 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], - ['protocolversion_1',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['protocolversion_1',['protocolVersion',['../group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] ]; diff --git a/docu/topics.html b/docu/topics.html new file mode 100644 index 0000000..9c03c3f --- /dev/null +++ b/docu/topics.html @@ -0,0 +1,121 @@ + + + + + + + +LD2410Async: Topics + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + +
                                                +
                                                LD2410Async +
                                                +
                                                Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
                                                +
                                                +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                +
                                                + +
                                                + +
                                                +
                                                + + +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                Loading...
                                                +
                                                Searching...
                                                +
                                                No Matches
                                                +
                                                +
                                                +
                                                +
                                                + +
                                                +
                                                Topics
                                                +
                                                +
                                                +
                                                Here is a list of all topics with brief descriptions:
                                                +
                                                +
                                                + + + + diff --git a/docu/topics.js b/docu/topics.js new file mode 100644 index 0000000..b9971a6 --- /dev/null +++ b/docu/topics.js @@ -0,0 +1,8 @@ +var topics = +[ + [ "Callback Registration", "group__LD2410Async__Callbacks.html", "group__LD2410Async__Callbacks" ], + [ "Constructor & Basic Methods", "group__LD2410Async__Lifecycle.html", "group__LD2410Async__Lifecycle" ], + [ "Inactivity Handling", "group__LD2410Async__Inactivity.html", "group__LD2410Async__Inactivity" ], + [ "Public Data Members", "group__LD2410Async__Data.html", "group__LD2410Async__Data" ], + [ "Types And Callbacks", "group__LD2410Async__Types.html", "group__LD2410Async__Types" ] +]; \ No newline at end of file From 58270ae67a9f12d280db8e79a9fd33bf37cae572 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 15:10:17 +0200 Subject: [PATCH 020/114] Disable graphwiz --- Doxyfile | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Doxyfile b/Doxyfile index 5e8253d..2fcf6ab 100644 --- a/Doxyfile +++ b/Doxyfile @@ -37,16 +37,15 @@ HTML_COLORSTYLE_GAMMA = 80 GENERATE_LATEX = NO # Dot/Graphviz support -HAVE_DOT = YES -DOT_IMAGE_FORMAT = svg -CALL_GRAPH = YES -CALLER_GRAPH = YES -CLASS_DIAGRAMS = YES -COLLABORATION_GRAPH = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -GRAPHICAL_HIERARCHY = YES -DOT_MULTI_TARGETS = YES +HAVE_DOT = NO +CALL_GRAPH = NO +CALLER_GRAPH = NO +CLASS_DIAGRAMS = NO +COLLABORATION_GRAPH= NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO +GRAPHICAL_HIERARCHY= NO +DOT_MULTI_TARGETS = NO # Warnings WARN_IF_UNDOCUMENTED = YES From fe2f6ac574503b326cafa65be22d4dd9ebd7e0c1 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 20:40:46 +0200 Subject: [PATCH 021/114] Groups added to comments/docu. --- Doxyfile | 2 +- LD2410Async.vcxitems | 1 + LD2410Async.vcxitems.filters | 1 + dox/groups.dox | 71 ++ src/LD2410Async.h | 1782 +++++++++++++++++++--------------- src/LD2410Types.h | 30 + 6 files changed, 1095 insertions(+), 792 deletions(-) create mode 100644 dox/groups.dox diff --git a/Doxyfile b/Doxyfile index 2fcf6ab..aa8159b 100644 --- a/Doxyfile +++ b/Doxyfile @@ -16,7 +16,7 @@ SORT_MEMBER_DOCS = YES SORT_GROUP_NAMES = YES # Input -INPUT = src examples +INPUT = src examples dox FILE_PATTERNS = *.h *.cpp *.ino RECURSIVE = YES diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index cb36aec..8fede8a 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -25,6 +25,7 @@ + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 885d929..78221f6 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -35,6 +35,7 @@ + diff --git a/dox/groups.dox b/dox/groups.dox new file mode 100644 index 0000000..5171ebb --- /dev/null +++ b/dox/groups.dox @@ -0,0 +1,71 @@ +/** + * @defgroup LD2410Async_Types Types, Enums & Structs + * Type, enum and struct definitions that are used by the LD2410Async lib. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_Callbacks Callbacks + * Callback related definitions and methods. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_PresenceDetection Presence Detection + * Presence detection related methods, definitions and data + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_PublicData Public Data Members + * Public data members of the LD2410Async lib. + * @note It is not recommended to read and even less write to these data members. Use the data access methods instead. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_Configuration Sensor Configuration + * Methods, definitions and data for LD2410 configuration. + * @note Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_HighLevelCommands High Level Commands + * High level commands to request data from the sensor and to write config settings to the sensor. + * @note Whenever possible, use these methods instead of the native methods + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_StaticData Static Sensor Data + * Methods, definitions and data to access static data (firmware version, bluetooth mac and so on) of the sensor. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_Bluetooth Bluetooth + * Bluetooth related methods and data. + * @{ + */ +/** @} */ + +/** + * @defgroup LD2410Async_NativeCommands Native Commands + * Native commands of the LD2410. Each of these commands sends a single command (plus the necessary config mode enable/disable commands) to the LD2410. + * @note Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410. + * @{ + */ +/** @} */ + + + + + diff --git a/src/LD2410Async.h b/src/LD2410Async.h index 5e18750..ff46c97 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -87,16 +87,14 @@ class LD2410Async { public: - /** @defgroup LD2410Async_Types Types And Callbacks - * Public types , enums and callback definitions - * @{ - */ - /** - * @brief Result of an asynchronous command execution. - * - * Every async command reports back its outcome via the callback. - */ + /** + * @brief Result of an asynchronous command execution. + * + * Every async command reports back its outcome via the callback. + * + * @ingroup LD2410Async_Types + */ enum class AsyncCommandResult : byte { SUCCESS, ///< Command completed successfully and ACK was received. FAILED, ///< Command failed (sensor responded with negative ACK). @@ -113,6 +111,9 @@ class LD2410Async { * @param sender Pointer to the LD2410Async instance that triggered the callback. * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED). * @param userData User-specified value passed when registering the callback. + * + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Callbacks */ typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData); @@ -121,6 +122,10 @@ class LD2410Async { * * @param sender Pointer to the LD2410Async instance that triggered the callback. * @param userData User-specified value passed when registering the callback. + * + * + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Callbacks */ typedef void (*GenericCallback)(LD2410Async* sender, byte userData); @@ -135,40 +140,47 @@ class LD2410Async { * @param sender Pointer to the LD2410Async instance that triggered the callback. * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise. * @param userData User-defined value passed when registering the callback. + * + * @ingroup LD2410Async_Callbacks + * @ingroup LD2410Async_PresenceDetection */ typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData); - /** @} */ // end of LD2410Async_Types + public: - /** @defgroup LD2410Async_Data Public Data Members - * Public data structures and variables. - * @{ - */ - /** + + /** * @brief Latest detection results from the radar. * * Updated automatically whenever new data frames are received. * Use registerDetectionDataReceivedCallback() to be notified * whenever this struct changes. * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_PresenceDetection + * */ LD2410Types::DetectionData detectionData; /** - * @brief Current configuration parameters of the radar. - * - * Filled when configuration query commands are issued - * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). - * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. - * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly. - * - * Structure will contain only uninitilaized data if config data is not queried explicitly. - */ + * @brief Current configuration parameters of the radar. + * + * Filled when configuration query commands are issued + * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). + * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. + * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly. + * + * Structure will contain only uninitilaized data if config data is not queried explicitly. + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_Configuration + */ LD2410Types::ConfigData configData; /** @@ -176,6 +188,9 @@ class LD2410Async { * * This value is set when entering config mode. It can be useful * for compatibility checks between firmware and library. + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_StaticData */ unsigned long protocolVersion = 0; @@ -184,48 +199,65 @@ class LD2410Async { * * Set when entering config mode. Typically not required by users * unless debugging low-level protocol behavior. + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_StaticData */ unsigned long bufferSize = 0; /** - * @brief True if the sensor is currently in config mode. - * - * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. - * After sending config commands, always disable the config mode using disableConfigModeAsync(), - * otherwiese the radar will not send any detection data. - */ + * @brief True if the sensor is currently in config mode. + * + * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. + * After sending config commands, always disable the config mode using disableConfigModeAsync(), + * otherwiese the radar will not send any detection data. + * + * @ingroup LD2410Async_PublicData + */ bool configModeEnabled = false; /** - * @brief True if the sensor is currently in engineering mode. - * - * In engineering mode, the radar sends detailed per-gate - * signal data in addition to basic detection data. - * - * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode. - */ + * @brief True if the sensor is currently in engineering mode. + * + * In engineering mode, the radar sends detailed per-gate + * signal data in addition to basic detection data. + * + * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode. + * + * @ingroup LD2410Async_PublicData + */ bool engineeringModeEnabled = false; /** - * @brief Firmware version string of the radar. - * - * Populated by requestFirmwareAsync(). Format is usually - * "major.minor.build". - */ + * @brief Firmware version string of the radar. + * + * Populated by requestFirmwareAsync(). Format is usually + * "major.minor.build". + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_StaticData + */ String firmware = ""; /** - * @brief MAC address of the radar’s Bluetooth module (if available). - * - * Populated by requestBluetoothMacAddressAsync(). - */ + * @brief MAC address of the radar’s Bluetooth module (if available). + * + * Populated by requestBluetoothMacAddressAsync(). + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_StaticData + */ byte mac[6]; + /** - * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF"). - * - * Populated by requestBluetoothMacAddressAsync(). - */ + * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF"). + * + * Populated by requestBluetoothMacAddressAsync(). + * + * @ingroup LD2410Async_PublicData + * @ingroup LD2410Async_StaticData + */ String macString = ""; @@ -233,48 +265,52 @@ class LD2410Async { * @brief Current status of the auto-configuration routine. * * Updated by requestAutoConfigStatusAsync(). + * + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_PublicData */ LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET; - /** @} */ // end of LD2410Async_Data - /** @defgroup LD2410Async_Lifecycle Constructor & Basic Methods - * Constructor and basic start/stop methods. - * @{ - */ - /********************************************************************************** - * Constrcutor - ***********************************************************************************/ - /** - * @brief Constructs a new LD2410Async instance bound to a given serial stream. - * - * The sensor communicates over a UART interface. Pass the corresponding - * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible - * implementation) that is connected to the LD2410 sensor. - * - * Example: - * @code - * HardwareSerial radarSerial(2); - * LD2410Async radar(radarSerial); - * @endcode - * - * @param serial Reference to a Stream object used to exchange data with the sensor. - */ + + /********************************************************************************** + * Constrcutor + ***********************************************************************************/ + + /** + * @brief Constructs a new LD2410Async instance bound to a given serial stream. + * + * The sensor communicates over a UART interface. Pass the corresponding + * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible + * implementation) that is connected to the LD2410 sensor. + * + * Example: + * @code + * HardwareSerial radarSerial(2); + * LD2410Async radar(radarSerial); + * @endcode + * + * @param serial Reference to a Stream object used to exchange data with the sensor. + * + * @ingroup LD2410Async_MainMethods + */ LD2410Async(Stream& serial); /********************************************************************************** * begin, end ***********************************************************************************/ /** - * @brief Starts the background task that continuously reads data from the sensor. - * - * This method creates a FreeRTOS task which parses all incoming frames - * and dispatches registered callbacks. Without calling begin(), the - * sensor cannot deliver detection results asynchronously. - * - * @returns true if the task was successfully started, false if already running. - */ + * @brief Starts the background task that continuously reads data from the sensor. + * + * This method creates a FreeRTOS task which parses all incoming frames + * and dispatches registered callbacks. Without calling begin(), the + * sensor cannot deliver detection results asynchronously. + * + * @returns true if the task was successfully started, false if already running. + * + * @ingroup LD2410Async_MainMethods + */ bool begin(); /** @@ -284,126 +320,143 @@ class LD2410Async { * This is useful to temporarily suspend radar processing without rebooting. * * @returns true if the task was stopped, false if it was not active. + * + * @ingroup LD2410Async_MainMethods */ bool end(); - /** @} */ // end of LD2410Async_Lifecycle - - /********************************************************************************** - * Inactivity handling - ***********************************************************************************/ - - /** @defgroup LD2410Async_Inactivity Inactivity Handling - * Methods for automatic inactivity detection and recovery. - * @{ - */ - - /** - * @brief Enables or disables automatic inactivity handling of the sensor. - * - * When inactivity handling is enabled, the library continuously monitors the time - * since the last activity (received data or command ACK). If no activity is detected - * for a longer period (defined by activityTimeoutMs), the library will attempt to - * recover the sensor automatically: - * 1. It first tries to exit config mode (even if configModeEnabled is false). - * 2. If no activity is restored within 5 seconds after leaving config mode, - * the library reboots the sensor. - * - * This helps recover the sensor from rare cases where it gets "stuck" - * in config mode or stops sending data. - * - * @param enable Pass true to enable inactivity handling, false to disable it. - */ + + + /********************************************************************************** + * Inactivity handling + ***********************************************************************************/ + + + + /** + * @brief Enables or disables automatic inactivity handling of the sensor. + * + * When inactivity handling is enabled, the library continuously monitors the time + * since the last activity (received data or command ACK). If no activity is detected + * for a longer period (defined by activityTimeoutMs), the library will attempt to + * recover the sensor automatically: + * 1. It first tries to exit config mode (even if configModeEnabled is false). + * 2. If no activity is restored within 5 seconds after leaving config mode, + * the library reboots the sensor. + * + * This helps recover the sensor from rare cases where it gets "stuck" + * in config mode or stops sending data. + * + * @param enable Pass true to enable inactivity handling, false to disable it. + * + * @ingroup LD2410Async_InactivityHandling + */ void setInactivityHandling(bool enable); /** - * @brief Convenience method: enables inactivity handling. - * - * Equivalent to calling setInactivityHandling(true). - */ + * @brief Convenience method: enables inactivity handling. + * + * Equivalent to calling setInactivityHandling(true). + * + * @ingroup LD2410Async_InactivityHandling + */ void enableInactivityHandling() { setInactivityHandling(true); }; /** - * @brief Convenience method: disables inactivity handling. - * - * Equivalent to calling setInactivityHandling(false). - */ + * @brief Convenience method: disables inactivity handling. + * + * Equivalent to calling setInactivityHandling(false). + * + * @ingroup LD2410Async_InactivityHandling + */ void disableInactivityHandling() { setInactivityHandling(false); }; /** - * @brief Returns whether inactivity handling is currently enabled. - * - * @returns true if inactivity handling is enabled, false otherwise. - */ + * @brief Returns whether inactivity handling is currently enabled. + * + * @returns true if inactivity handling is enabled, false otherwise. + * + * @ingroup LD2410Async_InactivityHandling + */ bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; }; /** - * @brief Sets the timeout period for inactivity handling. - * - * If no data or command ACK is received within this period, - * the library will attempt to recover the sensor as described - * in setInactivityHandling(). - * - * Default is 60000 ms (1 minute). - * - * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling. - */ + * @brief Sets the timeout period for inactivity handling. + * + * If no data or command ACK is received within this period, + * the library will attempt to recover the sensor as described + * in setInactivityHandling(). + * + * Default is 60000 ms (1 minute). + * + * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling. + * + * @ingroup LD2410Async_InactivityHandling + */ void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; }; /** - * @brief Returns the current inactivity timeout period. - * - * @returns Timeout in milliseconds. - */ + * @brief Returns the current inactivity timeout period. + * + * @returns Timeout in milliseconds. + * + * @ingroup LD2410Async_InactivityHandling + */ unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; }; - /** @} */ // end of LD2410Async_Inactivity + /********************************************************************************** * Callback registration methods ***********************************************************************************/ - /** @defgroup LD2410Async_Callbacks Callback Registration - * Registrierung von Callback-Funktionen. - * @{ - */ - /** - * @brief Registers a callback for new detection data. - * - * The callback is invoked whenever a valid data frame is received - * from the radar, after detectionData has been updated. - * - * @param callback Function pointer with signature - * void methodName(LD2410Async* sender, bool presenceDetected, byte userData). - * @param userData Optional value that will be passed to the callback. - */ + + /** + * @brief Registers a callback for new detection data. + * + * The callback is invoked whenever a valid data frame is received + * from the radar, after detectionData has been updated. + * + * @param callback Function pointer with signature + * void methodName(LD2410Async* sender, bool presenceDetected, byte userData). + * @param userData Optional value that will be passed to the callback. + * + * @ingroup LD2410Async_Callbacks + * @ingroup LD2410Async_PresenceDetection + */ void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0); /** - * @brief Registers a callback for configuration changes. - * - * The callback is invoked whenever the sensor’s configuration - * has been successfully updated (e.g. after setting sensitivity). - * - * @param callback Function pointer with signature - * void methodName(LD2410Async* sender, byte userData). - * @param userData Optional value that will be passed to the callback. - */ + * @brief Registers a callback for configuration changes. + * + * The callback is invoked whenever the sensor’s configuration + * has been successfully updated (e.g. after setting sensitivity). + * + * @param callback Function pointer with signature + * void methodName(LD2410Async* sender, byte userData). + * @param userData Optional value that will be passed to the callback. + * + * @ingroup LD2410Async_Callbacks + * @ingroup LD2410Async_Configuration + */ void registerConfigChangedCallback(GenericCallback callback, byte userData = 0); /** - * @brief Registers a callback for configuration data updates. - * - * The callback is invoked whenever new configuration information - * has been received from the sensor (e.g. after requestGateParametersAsync()). - * - * @param callback Function pointer with signature - * void methodName(LD2410Async* sender, byte userData). - * @param userData Optional value that will be passed to the callback. - */ + * @brief Registers a callback for configuration data updates. + * + * The callback is invoked whenever new configuration information + * has been received from the sensor (e.g. after requestGateParametersAsync()). + * + * @param callback Function pointer with signature + * void methodName(LD2410Async* sender, byte userData). + * @param userData Optional value that will be passed to the callback. + * + * @ingroup LD2410Async_Callbacks + * @ingroup LD2410Async_Configuration + */ void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0); - /** @} */ // end of LD2410Async_Callbacks + /********************************************************************************** * Detection and config data access commands @@ -411,146 +464,158 @@ class LD2410Async { // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly. /** - * @brief Returns a clone of the latest detection data from the radar. - * - * The returned struct contains the most recently received frame, - * including target state, distances, signal strengths, and - * (if enabled) engineering mode per-gate data. - * - * Equivalent to directly accessing the public member detectionData, - * but provided for encapsulation and future-proofing. - * - * @note This function will not query the sensor for data. It just returns - * the data that has already been received from the sensor. - * - * ## Example: Access values from a clone - * @code - * DetectionData data = radar.getDetectionData(); // makes a copy - * if (data.targetState == TargetState::MOVING_TARGET) { - * Serial.print("Moving target at distance: "); - * Serial.println(data.movingTargetDistance); - * } - * @endcode - * - * ## Do: - * - Use when you want a snapshot of the latest detection data. - * - Modify the returned struct freely without affecting the internal state. - * - * ## Don’t: - * - Expect this to fetch new data from the sensor (it only returns what was already received). - * - * @returns A copy of the current DetectionData. - */ + * @brief Returns a clone of the latest detection data from the radar. + * + * The returned struct contains the most recently received frame, + * including target state, distances, signal strengths, and + * (if enabled) engineering mode per-gate data. + * + * Equivalent to directly accessing the public member detectionData, + * but provided for encapsulation and future-proofing. + * + * @note This function will not query the sensor for data. It just returns + * the data that has already been received from the sensor. + * + * ## Example: Access values from a clone + * @code + * DetectionData data = radar.getDetectionData(); // makes a copy + * if (data.targetState == TargetState::MOVING_TARGET) { + * Serial.print("Moving target at distance: "); + * Serial.println(data.movingTargetDistance); + * } + * @endcode + * + * ## Do: + * - Use when you want a snapshot of the latest detection data. + * - Modify the returned struct freely without affecting the internal state. + * + * ## Don’t: + * - Expect this to fetch new data from the sensor (it only returns what was already received). + * + * @returns A copy of the current DetectionData. + * + * @ingroup LD2410Async_PresenceDetection + * @ingroup LD2410Async_PublicData + */ LD2410Types::DetectionData getDetectionData() const; /** - * @brief Access the current detection data without making a copy. - * - * This returns a const reference to the internal struct. It is efficient, - * but the data must not be modified directly. Use this if you only want - * to read values. - * - * @note Since this returns a reference to the internal data, the values - * may change as new frames arrive. Do not store the reference for - * long-term use. - * @note This function will not query the sensor for data. It just returns - * the data that has already been received from the sensor. - * - * ## Example: Efficient read access without cloning - * @code - * const DetectionData& data = radar.getDetectionDataRef(); // no copy - * Serial.print("Stationary signal: "); - * Serial.println(data.stationaryTargetSignal); - * @endcode - * - * ## Do: - * - Use when you only need to read values quickly and efficiently. - * - Use when printing or inspecting live data without keeping it. - * - * ## Don’t: - * - Try to modify the returned struct (it’s const). - * - Store the reference long-term (it may be updated at any time). - * - * @returns Const reference to the current DetectionData. - */ + * @brief Access the current detection data without making a copy. + * + * This returns a const reference to the internal struct. It is efficient, + * but the data must not be modified directly. Use this if you only want + * to read values. + * + * @note Since this returns a reference to the internal data, the values + * may change as new frames arrive. Do not store the reference for + * long-term use. + * @note This function will not query the sensor for data. It just returns + * the data that has already been received from the sensor. + * + * ## Example: Efficient read access without cloning + * @code + * const DetectionData& data = radar.getDetectionDataRef(); // no copy + * Serial.print("Stationary signal: "); + * Serial.println(data.stationaryTargetSignal); + * @endcode + * + * ## Do: + * - Use when you only need to read values quickly and efficiently. + * - Use when printing or inspecting live data without keeping it. + * + * ## Don’t: + * - Try to modify the returned struct (it’s const). + * - Store the reference long-term (it may be updated at any time). + * + * @returns Const reference to the current DetectionData. + * + * @ingroup LD2410Async_PresenceDetection + * @ingroup LD2410Async_PublicData + */ const LD2410Types::DetectionData& getDetectionDataRef() const { return detectionData; } /** - * @brief Returns a clone of the current configuration data of the radar. - * - * The returned struct contains the most recently requested - * or received configuration values, such as sensitivities, - * resolution, timeouts, and auxiliary settings. - * - * Equivalent to directly accessing the public member configData, - * but provided for encapsulation and future-proofing. - * - * @note This function will not query the sensor for data. It just returns - * the data that has already been received from the sensor. - * - * ## Example: Clone, modify, and write back - * @code - * // Clone current config - * ConfigData cfg = radar.getConfigData(); - * - * // Modify locally - * cfg.noOneTimeout = 60; // change timeout - * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity - * - * // Send modified config back to sensor - * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.println("Config updated successfully!"); - * } - * }); - * @endcode - * - * ## Do: - * - Use when you want a clone of the current config to adjust and send back. - * - Safely modify the struct without risking internal state corruption. - * - * ## Don’t: - * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data). - * - * @returns A copy of the current ConfigData. - */ + * @brief Returns a clone of the current configuration data of the radar. + * + * The returned struct contains the most recently requested + * or received configuration values, such as sensitivities, + * resolution, timeouts, and auxiliary settings. + * + * Equivalent to directly accessing the public member configData, + * but provided for encapsulation and future-proofing. + * + * @note This function will not query the sensor for data. It just returns + * the data that has already been received from the sensor. + * + * ## Example: Clone, modify, and write back + * @code + * // Clone current config + * ConfigData cfg = radar.getConfigData(); + * + * // Modify locally + * cfg.noOneTimeout = 60; // change timeout + * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity + * + * // Send modified config back to sensor + * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.println("Config updated successfully!"); + * } + * }); + * @endcode + * + * ## Do: + * - Use when you want a clone of the current config to adjust and send back. + * - Safely modify the struct without risking internal state corruption. + * + * ## Don’t: + * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data). + * + * @returns A copy of the current ConfigData. + * + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_PublicData + */ LD2410Types::ConfigData getConfigData() const; /** - * @brief Access the current config data without making a copy. - * - * This returns a const reference to the internal struct. It is efficient, - * but the data must not be modified directly. Use this if you only want - * to read values. - * - * @note Since this returns a reference to the internal data, the values - * may change when new configuration is received. Do not store the - * reference for long-term use. - * @note This function will not query the sensor for data. It just returns - * the data that has already been received from the sensor. - * - * ## Example: Efficient read access without cloning - * @code - * const ConfigData& cfg = radar.getConfigDataRef(); // no copy - * Serial.print("Resolution: "); - * Serial.println(static_cast(cfg.distanceResolution)); - * @endcode - * - * ## Do: - * - Use when you only want to inspect configuration quickly. - * - Use for efficient read-only access. - * - * ## Don’t: - * - Try to modify the returned struct (it’s const). - * - Keep the reference and assume it will remain valid forever. - * - * @returns Const reference to the current ConfigData. - */ + * @brief Access the current config data without making a copy. + * + * This returns a const reference to the internal struct. It is efficient, + * but the data must not be modified directly. Use this if you only want + * to read values. + * + * @note Since this returns a reference to the internal data, the values + * may change when new configuration is received. Do not store the + * reference for long-term use. + * @note This function will not query the sensor for data. It just returns + * the data that has already been received from the sensor. + * + * ## Example: Efficient read access without cloning + * @code + * const ConfigData& cfg = radar.getConfigDataRef(); // no copy + * Serial.print("Resolution: "); + * Serial.println(static_cast(cfg.distanceResolution)); + * @endcode + * + * ## Do: + * - Use when you only want to inspect configuration quickly. + * - Use for efficient read-only access. + * + * ## Don’t: + * - Try to modify the returned struct (it’s const). + * - Keep the reference and assume it will remain valid forever. + * + * @returns Const reference to the current ConfigData. + * + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_PublicData + */ const LD2410Types::ConfigData& getConfigDataRef() const { return configData; } @@ -558,38 +623,46 @@ class LD2410Async { * Special async commands ***********************************************************************************/ /** - * @brief Checks if an asynchronous command is currently pending. - * - * @returns true if there is an active command awaiting an ACK, - * false if the library is idle. - */ + * @brief Checks if an asynchronous command is currently pending. + * + * @returns true if there is an active command awaiting an ACK, + * false if the library is idle. + * + * @ingroup LD2410Async_AsyncCommands + */ bool asyncIsBusy(); /** - * @brief Cancels any pending asynchronous command or sequence. - * - * If canceled, the callback of the running command is invoked - * with result type CANCELED. After canceling, the sensor may - * remain in config mode — consider disabling config mode or - * rebooting to return to detection operation. - */ + * @brief Cancels any pending asynchronous command or sequence. + * + * If canceled, the callback of the running command is invoked + * with result type CANCELED. After canceling, the sensor may + * remain in config mode — consider disabling config mode or + * rebooting to return to detection operation. + * + * @ingroup LD2410Async_AsyncCommands + */ void asyncCancel(); /** - * @brief Sets the timeout for async command callbacks. - * - * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs. - * - * - * @param timeoutMs Timeout in milliseconds (default 6000 ms). - */ + * @brief Sets the timeout for async command callbacks. + * + * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs. + * + * + * @param timeoutMs Timeout in milliseconds (default 6000 ms). + * + * @ingroup LD2410Async_AsyncCommands + */ void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; } /** - * @brief Returns the current async command timeout. - * - * @return Timeout in milliseconds. - */ + * @brief Returns the current async command timeout. + * + * @return Timeout in milliseconds. + * + * @ingroup LD2410Async_AsyncCommands + */ unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; } @@ -601,47 +674,55 @@ class LD2410Async { - Config mode commands ---------------------------------------------------------------------------------*/ /** - * @brief Enables config mode on the radar. - * - * Config mode must be enabled before issuing most configuration commands. - * This command itself is asynchronous — the callback fires once the - * sensor acknowledges the mode switch. - * - * @note If asyncIsBusy() is true, this command will not be sent. - * @note Normal detection data is suspended while config mode is active. - * - * @param callback Callback with signature - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * @param userData Optional value that will be passed to the callback. - * - * @returns true if the command was sent, false if blocked. - */ + * @brief Enables config mode on the radar. + * + * Config mode must be enabled before issuing most configuration commands. + * This command itself is asynchronous — the callback fires once the + * sensor acknowledges the mode switch. + * + * @note If asyncIsBusy() is true, this command will not be sent. + * @note Normal detection data is suspended while config mode is active. + * + * @param callback Callback with signature + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * @param userData Optional value that will be passed to the callback. + * + * @returns true if the command was sent, false if blocked. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + */ bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Disables config mode on the radar. - * - * This should be called after finishing configuration, to return - * the sensor to normal detection operation. - * - * @note If an async command is already pending (asyncIsBusy() == true), - * this command will not be sent. - * - * @param callback Callback with signature - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Disables config mode on the radar. + * + * This should be called after finishing configuration, to return + * the sensor to normal detection operation. + * + * @note If an async command is already pending (asyncIsBusy() == true), + * this command will not be sent. + * + * @param callback Callback with signature + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + */ bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0); /** * @brief Detects if config mode is enabled * * @returns true if config mode is anabled, false if config mode is disabled + * + * @ingroup LD2410Async_Configuration */ bool isConfigModeEnabled() const { - return configModeEnabled; + return configModeEnabled; }; @@ -649,159 +730,193 @@ class LD2410Async { - Engineering mode commands ---------------------------------------------------------------------------------*/ /** - * @brief Enables engineering mode. - * - * In this mode, the sensor sends detailed per-gate signal values - * in addition to basic detection results. - * - * @note Engineering mode is temporary and lost after power cycle. - * @note Requires config mode. Will be enabled automatically if not active. - * - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Enables engineering mode. + * + * In this mode, the sensor sends detailed per-gate signal values + * in addition to basic detection results. + * + * @note Engineering mode is temporary and lost after power cycle. + * @note Requires config mode. Will be enabled automatically if not active. + * + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_NativeCommands + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_PresenceDetection + */ bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Disables engineering mode. - * - * Returns sensor reporting to basic detection results only. - * - * @note Requires config mode. Will be enabled automatically if not active. - * - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ - bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); - - /** - * @brief Detects if engineering mode is enabled + * @brief Disables engineering mode. * - * @returns true if engineering mode is anabled, false if engineering mode is disabled + * Returns sensor reporting to basic detection results only. + * + * @note Requires config mode. Will be enabled automatically if not active. + * + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_PresenceDetection + * @ingroup LD2410Async_AsyncCommands + */ + bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); + + /** + * @brief Detects if engineering mode is enabled + * + * @returns true if engineering mode is anabled, false if engineering mode is disabled + * + * @ingroup LD2410Async_PresenceDetection */ bool isEngineeringModeEnabled() const { - return engineeringModeEnabled; + return engineeringModeEnabled; }; /*--------------------------------------------------------------------------------- - Native sensor commands ---------------------------------------------------------------------------------*/ /** - * @brief Requests the current gate parameters from the sensor. - * - * Retrieves sensitivities, max gates, and timeout settings, - * which will be written into configData. - * - * @note Requires config mode. The method will manage mode switching if needed. - * @note If an async command is already pending, the request is rejected. - * - * @param callback Callback fired when data is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests the current gate parameters from the sensor. + * + * Retrieves sensitivities, max gates, and timeout settings, + * which will be written into configData. + * + * @note Requires config mode. The method will manage mode switching if needed. + * @note If an async command is already pending, the request is rejected. + * + * @param callback Callback fired when data is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures the maximum detection gates and "no-one" timeout on the sensor. - * - * This command updates: - * - Maximum motion detection distance gate (2–8). - * - Maximum stationary detection distance gate (2–8). - * - Timeout duration (0–65535 seconds) until "no presence" is declared. - * - * @note Requires config mode to be enabled. The method will internally - * enable/disable config mode if necessary. - * @note If another async command is pending, this call fails. - * - * @param maxMovingGate Furthest gate used for motion detection (2–8). - * @param maxStationaryGate Furthest gate used for stationary detection (2–8). - * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535). - * @param callback Callback fired when ACK is received or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise (busy state or invalid values). - */ + * @brief Configures the maximum detection gates and "no-one" timeout on the sensor. + * + * This command updates: + * - Maximum motion detection distance gate (2–8). + * - Maximum stationary detection distance gate (2–8). + * - Timeout duration (0–65535 seconds) until "no presence" is declared. + * + * @note Requires config mode to be enabled. The method will internally + * enable/disable config mode if necessary. + * @note If another async command is pending, this call fails. + * + * @param maxMovingGate Furthest gate used for motion detection (2–8). + * @param maxStationaryGate Furthest gate used for stationary detection (2–8). + * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535). + * @param callback Callback fired when ACK is received or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise (busy state or invalid values). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures sensitivity thresholds for all gates at once. - * - * A sequence of commands will be sent, one for each gate. - * Threshold values are automatically clamped to 0–100. - * - * @note Requires config mode. Will be managed automatically. - * @note If another async command is pending, this call fails. - * - * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100). - * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100). - * @param callback Callback fired when all updates are acknowledged or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the sequence was started, false otherwise. - */ + * @brief Configures sensitivity thresholds for all gates at once. + * + * A sequence of commands will be sent, one for each gate. + * Threshold values are automatically clamped to 0–100. + * + * @note Requires config mode. Will be managed automatically. + * @note If another async command is pending, this call fails. + * + * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100). + * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100). + * @param callback Callback fired when all updates are acknowledged or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the sequence was started, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures sensitivity thresholds for a single gate. - * - * Updates both moving and stationary thresholds for the given gate index. - * If the gate index is greater than 8, all gates are updated instead. - * - * @note Requires config mode. Will be managed automatically. - * @note If another async command is pending, this call fails. - * - * @param gate Index of the gate (0–8). Values >8 apply to all gates. - * @param movingThreshold Sensitivity for moving targets (0–100). - * @param stationaryThreshold Sensitivity for stationary targets (0–100). - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Configures sensitivity thresholds for a single gate. + * + * Updates both moving and stationary thresholds for the given gate index. + * If the gate index is greater than 8, all gates are updated instead. + * + * @note Requires config mode. Will be managed automatically. + * @note If another async command is pending, this call fails. + * + * @param gate Index of the gate (0–8). Values >8 apply to all gates. + * @param movingThreshold Sensitivity for moving targets (0–100). + * @param stationaryThreshold Sensitivity for stationary targets (0–100). + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests the firmware version of the sensor. - * - * Populates the firmware string when the ACK response arrives. - * - * @note Requires config mode. Will be managed automatically. - * - * @param callback Callback fired when firmware info is received. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests the firmware version of the sensor. + * + * Populates the firmware string when the ACK response arrives. + * + * @note Requires config mode. Will be managed automatically. + * + * @param callback Callback fired when firmware info is received. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_StaticData + * @ingroup LD2410Async_NativeCommands + */ bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures the UART baud rate of the sensor. - * - * The new baud rate becomes active only after reboot. - * The ESP32’s Serial interface must also be reconfigured - * to the new baud rate after reboot. - * - * @note Valid values are 1–8. Values outside range are rejected resp. method will fail. - * @note Requires config mode. Will be managed automatically. - * @note If another async command is pending, this call fails. - * @note After execution, call rebootAsync() to activate changes. - * - * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800. - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Configures the UART baud rate of the sensor. + * + * The new baud rate becomes active only after reboot. + * The ESP32’s Serial interface must also be reconfigured + * to the new baud rate after reboot. + * + * @note Valid values are 1–8. Values outside range are rejected resp. method will fail. + * @note Requires config mode. Will be managed automatically. + * @note If another async command is pending, this call fails. + * @note After execution, call rebootAsync() to activate changes. + * + * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800. + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0); /** @@ -819,38 +934,49 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands */ bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Restores factory settings of the sensor. - * - * Restored settings only become active after a reboot. - * - * @note Requires config mode. Will be managed automatically. - * @note After execution, call rebootAsync() to activate changes. - * - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Restores factory settings of the sensor. + * + * Restored settings only become active after a reboot. + * + * @note Requires config mode. Will be managed automatically. + * @note After execution, call rebootAsync() to activate changes. + * + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Reboots the sensor. - * - * After reboot, the sensor stops responding for a few seconds. - * Config and engineering mode are reset. - * - * @note The reboot of the sensor takes place after the ACK has been sent. - * - * @param callback Callback fired when ACK is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Reboots the sensor. + * + * After reboot, the sensor stops responding for a few seconds. + * Config and engineering mode are reset. + * + * @note The reboot of the sensor takes place after the ACK has been sent. + * + * @param callback Callback fired when ACK is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_NativeCommands + */ bool rebootAsync(AsyncCommandCallback callback, byte userData = 0); /** @@ -860,6 +986,11 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_NativeCommands */ bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0); @@ -870,6 +1001,11 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_NativeCommands */ bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0); @@ -882,6 +1018,11 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_StaticData + * @ingroup LD2410Async_NativeCommands */ bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0); @@ -893,6 +1034,11 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_NativeCommands */ bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0); @@ -904,6 +1050,11 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_NativeCommands */ bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0); @@ -913,31 +1064,40 @@ class LD2410Async { * @param userData Optional value that will be passed to the callback function. * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_Bluetooth + * @ingroup LD2410Async_NativeCommands */ bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures the distance resolution of the radar. - * - * The distance resolution defines the size of each distance gate - * and the maximum detection range: - * - RESOLUTION_75CM → longer range, coarser detail. - * - RESOLUTION_20CM → shorter range, finer detail. - * - * @note Requires config mode. Will be managed automatically. - * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. - * @note Fails if another async command is pending. - * - * @param distanceResolution Value from the DistanceResolution enum. - * Must not be NOT_SET. - * @param callback Function pointer with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when the ACK is received or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false if invalid parameters - * or the library is busy. - */ + * @brief Configures the distance resolution of the radar. + * + * The distance resolution defines the size of each distance gate + * and the maximum detection range: + * - RESOLUTION_75CM → longer range, coarser detail. + * - RESOLUTION_20CM → shorter range, finer detail. + * + * @note Requires config mode. Will be managed automatically. + * @note Requires a reboot to activate value changes. Call rebootAsync() after setting. + * @note Fails if another async command is pending. + * + * @param distanceResolution Value from the DistanceResolution enum. + * Must not be NOT_SET. + * @param callback Function pointer with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when the ACK is received or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false if invalid parameters + * or the library is busy. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); /** @@ -954,6 +1114,10 @@ class LD2410Async { * @param userData Optional value passed to the callback. * * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands */ bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0); @@ -971,158 +1135,182 @@ class LD2410Async { * @param userData Optional value passed to the callback. * * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands */ bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests the current distance resolution setting from the sensor. - * - * The result is written into configData.distanceResolution. - * - * @note Requires config mode. Will be managed automatically. - * - * @param callback Function pointer with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests the current distance resolution setting from the sensor. + * + * The result is written into configData.distanceResolution. + * + * @note Requires config mode. Will be managed automatically. + * + * @param callback Function pointer with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Configures the auxiliary control parameters (light and output pin). - * - * This configures how the OUT pin behaves depending on light levels - * and presence detection. Typical use cases include controlling - * an external lamp or relay. - * - * @note Requires config mode. Will be managed automatically. - * @note Both enums must be set to valid values (not NOT_SET). - * @note Fails if another async command is pending. - * - * @param lightControl Light control behavior (see LightControl enum). - * @param lightThreshold Threshold (0–255) used for light-based switching. - * @param outputControl Output pin logic configuration (see OutputControl enum). - * @param callback Function pointer with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when ACK is received or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Configures the auxiliary control parameters (light and output pin). + * + * This configures how the OUT pin behaves depending on light levels + * and presence detection. Typical use cases include controlling + * an external lamp or relay. + * + * @note Requires config mode. Will be managed automatically. + * @note Both enums must be set to valid values (not NOT_SET). + * @note Fails if another async command is pending. + * + * @param lightControl Light control behavior (see LightControl enum). + * @param lightThreshold Threshold (0–255) used for light-based switching. + * @param outputControl Output pin logic configuration (see OutputControl enum). + * @param callback Function pointer with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when ACK is received or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests the current auxiliary control settings. - * - * Fills configData.lightControl, configData.lightThreshold, - * and configData.outputControl. - * - * @note Requires config mode. Will be managed automatically. - * - * @param callback Function pointer with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when ACK is received or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests the current auxiliary control settings. + * + * Fills configData.lightControl, configData.lightThreshold, + * and configData.outputControl. + * + * @note Requires config mode. Will be managed automatically. + * + * @param callback Function pointer with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when ACK is received or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Starts the automatic configuration (auto-config) routine on the sensor. - * - * Auto-config lets the radar adjust its internal thresholds and - * sensitivities for the current environment. This can take several - * seconds to complete and results in updated sensitivity values. - * - * The progress and result can be checked with requestAutoConfigStatusAsync(). - * - * @note Requires config mode. This method will manage entering and - * exiting config mode automatically. - * @note Auto-config temporarily suspends normal detection reporting. - * - * ## Example: Run auto-config - * @code - * radar.beginAutoConfigAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.println("Auto-config started."); - * } else { - * Serial.println("Failed to start auto-config."); - * } - * }); - * @endcode - * - * ## Do: - * - Use in new environments to optimize detection performance. - * - Query status afterwards with requestAutoConfigStatusAsync(). - * - * ## Don’t: - * - Expect instant results — the sensor needs time to complete the process. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when the command is acknowledged or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Starts the automatic configuration (auto-config) routine on the sensor. + * + * Auto-config lets the radar adjust its internal thresholds and + * sensitivities for the current environment. This can take several + * seconds to complete and results in updated sensitivity values. + * + * The progress and result can be checked with requestAutoConfigStatusAsync(). + * + * @note Requires config mode. This method will manage entering and + * exiting config mode automatically. + * @note Auto-config temporarily suspends normal detection reporting. + * + * ## Example: Run auto-config + * @code + * radar.beginAutoConfigAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.println("Auto-config started."); + * } else { + * Serial.println("Failed to start auto-config."); + * } + * }); + * @endcode + * + * ## Do: + * - Use in new environments to optimize detection performance. + * - Query status afterwards with requestAutoConfigStatusAsync(). + * + * ## Don’t: + * - Expect instant results — the sensor needs time to complete the process. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when the command is acknowledged or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests the current status of the auto-config routine. - * - * The status is written into the member variable autoConfigStatus: - * - NOT_IN_PROGRESS → no auto-config running. - * - IN_PROGRESS → auto-config is currently running. - * - COMPLETED → auto-config finished (success or failure). - * - * @note Requires config mode. This method will manage mode switching automatically. - * @note If another async command is already pending, this call fails. - * - * ## Example: Check auto-config status - * @code - * radar.requestAutoConfigStatusAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * switch (sender->autoConfigStatus) { - * case AutoConfigStatus::NOT_IN_PROGRESS: - * Serial.println("Auto-config not running."); - * break; - * case AutoConfigStatus::IN_PROGRESS: - * Serial.println("Auto-config in progress..."); - * break; - * case AutoConfigStatus::COMPLETED: - * Serial.println("Auto-config completed."); - * break; - * default: - * Serial.println("Unknown auto-config status."); - * } - * } else { - * Serial.println("Failed to request auto-config status."); - * } - * }); - * @endcode - * - * ## Do: - * - Use this after beginAutoConfigAsync() to track progress. - * - Use autoConfigStatus for decision-making in your logic. - * - * ## Don’t: - * - Assume COMPLETED means success — thresholds should still be verified. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when the sensor replies or on failure/timeout. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests the current status of the auto-config routine. + * + * The status is written into the member variable autoConfigStatus: + * - NOT_IN_PROGRESS → no auto-config running. + * - IN_PROGRESS → auto-config is currently running. + * - COMPLETED → auto-config finished (success or failure). + * + * @note Requires config mode. This method will manage mode switching automatically. + * @note If another async command is already pending, this call fails. + * + * ## Example: Check auto-config status + * @code + * radar.requestAutoConfigStatusAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * switch (sender->autoConfigStatus) { + * case AutoConfigStatus::NOT_IN_PROGRESS: + * Serial.println("Auto-config not running."); + * break; + * case AutoConfigStatus::IN_PROGRESS: + * Serial.println("Auto-config in progress..."); + * break; + * case AutoConfigStatus::COMPLETED: + * Serial.println("Auto-config completed."); + * break; + * default: + * Serial.println("Unknown auto-config status."); + * } + * } else { + * Serial.println("Failed to request auto-config status."); + * } + * }); + * @endcode + * + * ## Do: + * - Use this after beginAutoConfigAsync() to track progress. + * - Use autoConfigStatus for decision-making in your logic. + * + * ## Don’t: + * - Assume COMPLETED means success — thresholds should still be verified. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when the sensor replies or on failure/timeout. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_NativeCommands + */ bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1137,152 +1325,164 @@ class LD2410Async { //The highlevel commands encapsulate both situation into a single command /** - * @brief Requests all configuration settings from the sensor. - * - * This triggers a sequence of queries that retrieves and updates: - * - Gate parameters (sensitivities, max gates, timeout). - * - Distance resolution setting. - * - Auxiliary light/output control settings. - * - * The results are stored in configData, and the - * registerConfigUpdateReceivedCallback() is invoked after completion. - * - * @note This is a high-level method that involves multiple commands. - * @note Requires config mode. This method will manage mode switching automatically. - * @note If another async command is already pending, the request fails. - * - * ## Example: Refresh config data - * @code - * radar.requestAllConfigSettingsAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.println("All config data refreshed:"); - * sender->getConfigDataRef().print(); - * } - * }); - * @endcode - * - * ## Do: - * - Use this after connecting to ensure configData is fully populated. - * - Call before modifying config if you’re unsure of current values. - * - * ## Don’t: - * - Expect it to succeed if another async command is still running. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when all config data has been received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests all configuration settings from the sensor. + * + * This triggers a sequence of queries that retrieves and updates: + * - Gate parameters (sensitivities, max gates, timeout). + * - Distance resolution setting. + * - Auxiliary light/output control settings. + * + * The results are stored in configData, and the + * registerConfigUpdateReceivedCallback() is invoked after completion. + * + * @note This is a high-level method that involves multiple commands. + * @note Requires config mode. This method will manage mode switching automatically. + * @note If another async command is already pending, the request fails. + * + * ## Example: Refresh config data + * @code + * radar.requestAllConfigSettingsAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.println("All config data refreshed:"); + * sender->getConfigDataRef().print(); + * } + * }); + * @endcode + * + * ## Do: + * - Use this after connecting to ensure configData is fully populated. + * - Call before modifying config if you’re unsure of current values. + * + * ## Don’t: + * - Expect it to succeed if another async command is still running. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when all config data has been received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_Configuration + * @ingroup LD2410Async_HighLevelCommands + */ bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Requests all static information from the sensor. - * - * This includes: - * - Firmware version string. - * - Bluetooth MAC address (numeric and string form). - * - * The values are written into the public members `firmware`, `mac`, - * and `macString`. - * - * @note This is a high-level method that involves multiple commands. - * @note Requires config mode. Managed automatically by this method. - * @note If another async command is already pending, the request fails. - * - * ## Example: Retrieve firmware and MAC - * @code - * radar.requestAllStaticDataAsync([](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.print("Firmware: "); - * Serial.println(sender->firmware); - * - * Serial.print("MAC: "); - * Serial.println(sender->macString); - * } - * }); - * @endcode - * - * ## Do: - * - Use after initialization to log firmware version and MAC. - * - Useful for debugging or inventory identification. - * - * ## Don’t: - * - Expect frequently changing data — this is static information. - * - * @param callback Callback with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData). - * Fired when static data is received or on failure. - * @param userData Optional value passed to the callback. - * - * @returns true if the command was sent, false otherwise. - */ + * @brief Requests all static information from the sensor. + * + * This includes: + * - Firmware version string. + * - Bluetooth MAC address (numeric and string form). + * + * The values are written into the public members `firmware`, `mac`, + * and `macString`. + * + * @note This is a high-level method that involves multiple commands. + * @note Requires config mode. Managed automatically by this method. + * @note If another async command is already pending, the request fails. + * + * ## Example: Retrieve firmware and MAC + * @code + * radar.requestAllStaticDataAsync([](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.print("Firmware: "); + * Serial.println(sender->firmware); + * + * Serial.print("MAC: "); + * Serial.println(sender->macString); + * } + * }); + * @endcode + * + * ## Do: + * - Use after initialization to log firmware version and MAC. + * - Useful for debugging or inventory identification. + * + * ## Don’t: + * - Expect frequently changing data — this is static information. + * + * @param callback Callback with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData). + * Fired when static data is received or on failure. + * @param userData Optional value passed to the callback. + * + * @returns true if the command was sent, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_StaticData + * @ingroup LD2410Async_HighLevelCommands + */ bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0); /** - * @brief Applies a full ConfigData struct to the LD2410. - * - * If writeAllConfigData is true, the method will first fetch the current config, - * compare it with the provide Config data and then create a command sequence that - * will only update the changes config values. - * If writeAllConfigData is false, the method will write all values in the provided - * ConfigData to the sensor, regardless of whether they differ from the current config. - * - * @note This is a high-level method that involves multiple commands (up to 18). - * @note Requires config mode. This method will manage entering and - * exiting config mode automatically (if config mode is not already active). - * @note If another async command is already pending, the command fails. - * @note Any members of ConfigData that are left at invalid values - * (e.g. enums set to NOT_SET) will cause the sequence to fail. - * - * ## Example: Clone, modify, and apply config - * @code - * ConfigData cfg = radar.getConfigData(); // clone current config - * cfg.noOneTimeout = 120; // change timeout - * cfg.distanceGateMotionSensitivity[2] = 75; - * - * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, - * AsyncCommandResult result, - * byte) { - * if (result == AsyncCommandResult::SUCCESS) { - * Serial.println("All config applied successfully!"); - * } - * }); - * @endcode - * - * ## Do: - * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change. - * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. - * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need. - * - * ## Don’t: - * - Dont write all config data (writeAllConfigData=true) if not really necessary. - * This generates unnecessary wear on the sensors memory. - * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings) + * @brief Applies a full ConfigData struct to the LD2410. + * + * If writeAllConfigData is true, the method will first fetch the current config, + * compare it with the provide Config data and then create a command sequence that + * will only update the changes config values. + * If writeAllConfigData is false, the method will write all values in the provided + * ConfigData to the sensor, regardless of whether they differ from the current config. + * + * @note This is a high-level method that involves multiple commands (up to 18). + * @note Requires config mode. This method will manage entering and + * exiting config mode automatically (if config mode is not already active). + * @note If another async command is already pending, the command fails. + * @note Any members of ConfigData that are left at invalid values + * (e.g. enums set to NOT_SET) will cause the sequence to fail. + * + * ## Example: Clone, modify, and apply config + * @code + * ConfigData cfg = radar.getConfigData(); // clone current config + * cfg.noOneTimeout = 120; // change timeout + * cfg.distanceGateMotionSensitivity[2] = 75; + * + * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender, + * AsyncCommandResult result, + * byte) { + * if (result == AsyncCommandResult::SUCCESS) { + * Serial.println("All config applied successfully!"); + * } + * }); + * @endcode + * + * ## Do: + * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change. + * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. + * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need. + * + * ## Don’t: + * - Dont write all config data (writeAllConfigData=true) if not really necessary. + * This generates unnecessary wear on the sensors memory. + * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings) - * - * @param configToWrite The configuration data to be applied. - * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written. - * @param callback Function with signature: - * void(LD2410Async* sender, AsyncCommandResult result, byte userData), - * executed when the sequence finishes (success/fail/timeout/cancel). - * @param userData Optional value passed to the callback. - * - * @returns true if the command sequence has been started, false otherwise. - */ + * + * @param configToWrite The configuration data to be applied. + * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written. + * @param callback Function with signature: + * void(LD2410Async* sender, AsyncCommandResult result, byte userData), + * executed when the sequence finishes (success/fail/timeout/cancel). + * @param userData Optional value passed to the callback. + * + * @returns true if the command sequence has been started, false otherwise. + * + * @ingroup LD2410Async_AsyncCommands + * @ingroup LD2410Async_StaticData + * @ingroup LD2410Async_HighLevelCommands + */ bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0); -private: + private: // ============================================================================ // Low-level serial interface // ============================================================================ @@ -1297,20 +1497,20 @@ class LD2410Async { /// States used when parsing incoming frames from the sensor enum ReadFrameState { - WAITING_FOR_HEADER, ///< Waiting for frame header sequence - ACK_HEADER, ///< Parsing header of an ACK frame - DATA_HEADER, ///< Parsing header of a DATA frame - READ_ACK_SIZE, ///< Reading payload size field of an ACK frame - READ_DATA_SIZE, ///< Reading payload size field of a DATA frame - READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame - READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame + WAITING_FOR_HEADER, ///< Waiting for frame header sequence + ACK_HEADER, ///< Parsing header of an ACK frame + DATA_HEADER, ///< Parsing header of a DATA frame + READ_ACK_SIZE, ///< Reading payload size field of an ACK frame + READ_DATA_SIZE, ///< Reading payload size field of a DATA frame + READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame + READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame }; /// Result type when trying to read a frame enum FrameReadResponse { - FAIL = 0, ///< Frame was invalid or incomplete - ACK, ///< A valid ACK frame was received - DATA ///< A valid DATA frame was received + FAIL = 0, ///< Frame was invalid or incomplete + ACK, ///< A valid ACK frame was received + DATA ///< A valid DATA frame was received }; int readFrameHeaderIndex = 0; ///< Current index while matching the frame header diff --git a/src/LD2410Types.h b/src/LD2410Types.h index bdf8de7..6a77de0 100644 --- a/src/LD2410Types.h +++ b/src/LD2410Types.h @@ -14,6 +14,8 @@ namespace LD2410Types { * signal evaluation logic. The AUTO-CONFIG states are special values * that are only reported while the sensor is running its * self-calibration routine. + * + * @ingroup LD2410Async_Types */ enum class TargetState { @@ -38,6 +40,8 @@ namespace LD2410Types { * - 5 → AUTOCONFIG_SUCCESS * - 6 → AUTOCONFIG_FAILED * @returns The matching TargetState value, or NO_TARGET if invalid. + * + * @ingroup LD2410Async_Types */ static TargetState toTargetState(int value) { switch (value) { @@ -59,6 +63,8 @@ namespace LD2410Types { * * @param state TargetState enum value. * @returns Human-readable string such as "No target", "Moving target", etc. + * + * @ingroup LD2410Async_Types */ static String targetStateToString(TargetState state) { switch (state) { @@ -85,6 +91,8 @@ namespace LD2410Types { * light level in combination with presence detection. * * Use NOT_SET only as a placeholder; it is not a valid configuration value. + * + * @ingroup LD2410Async_Types */ enum class LightControl { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -100,6 +108,8 @@ namespace LD2410Types { * - 1 → LIGHT_BELOW_THRESHOLD * - 2 → LIGHT_ABOVE_THRESHOLD * @returns The matching LightControl value, or NOT_SET if invalid. + * + * @ingroup LD2410Async_Types */ static LightControl toLightControl(int value) { switch (value) { @@ -118,6 +128,8 @@ namespace LD2410Types { * in relation to presence detection. * * Use NOT_SET only as a placeholder; it is not a valid configuration value. + * + * @ingroup LD2410Async_Types */ enum class OutputControl { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -132,6 +144,8 @@ namespace LD2410Types { * - 0 → DEFAULT_LOW_DETECTED_HIGH * - 1 → DEFAULT_HIGH_DETECTED_LOW * @returns The matching OutputControl value, or NOT_SET if invalid. + * + * @ingroup LD2410Async_Types */ static OutputControl toOutputControl(int value) { switch (value) { @@ -148,6 +162,8 @@ namespace LD2410Types { * in the current environment. This process may take several seconds. * * Use NOT_SET only as a placeholder; it is not a valid configuration value. + * + * @ingroup LD2410Async_Types */ enum class AutoConfigStatus { NOT_SET = -1, ///< Status not yet retrieved. @@ -164,6 +180,8 @@ namespace LD2410Types { * - 1 → IN_PROGRESS * - 2 → COMPLETED * @returns The matching AutoConfigStatus value, or NOT_SET if invalid. + * + * @ingroup LD2410Async_Types */ static AutoConfigStatus toAutoConfigStatus(int value) { switch (value) { @@ -181,6 +199,8 @@ namespace LD2410Types { * These values correspond to the configuration commands accepted * by the LD2410. After changing the baud rate, a sensor reboot * is required, and the ESP32’s UART must be reconfigured to match. + * + * @ingroup LD2410Async_Types */ enum class Baudrate { BAUDRATE_9600 = 1, ///< 9600 baud. @@ -201,6 +221,8 @@ namespace LD2410Types { * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide. * * Use NOT_SET only as a placeholder; it is not a valid configuration value. + * + * @ingroup LD2410Async_Types */ enum class DistanceResolution { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -215,6 +237,8 @@ namespace LD2410Types { * - 0 → RESOLUTION_75CM * - 1 → RESOLUTION_20CM * @returns The matching DistanceResolution value, or NOT_SET if invalid. + * + * @ingroup LD2410Async_Types */ static DistanceResolution toDistanceResolution(int value) { switch (value) { @@ -230,6 +254,9 @@ namespace LD2410Types { * This structure is continuously updated as new frames arrive. * Values reflect either the basic presence information or, if * engineering mode is enabled, per-gate signal details. + * + * @ingroup LD2410Async_Types + * @ingroup LD2410Async_PresenceDetection */ struct DetectionData { @@ -337,6 +364,9 @@ namespace LD2410Types { * The values are typically filled by request commands * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). + * + * @ingroup LD2410Async_Types + * @ingroup LD2410Async_Configuration */ struct ConfigData { // === Radar capabilities === From e5b4a6412b29f7526fe7a0e01ecc7593910136bd Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 18:41:00 +0000 Subject: [PATCH 022/114] Update documentation --- docu/LD2410Async_8cpp.html | 5 - docu/LD2410Async_8cpp_source.html | 358 +- docu/LD2410Async_8h.html | 10 - docu/LD2410Async_8h_source.html | 3152 ++++++++++-------- docu/LD2410CommandBuilder_8h.html | 10 - docu/LD2410CommandBuilder_8h_source.html | 6 +- docu/LD2410Debug_8h.html | 10 - docu/LD2410Defs_8h.html | 10 - docu/LD2410Types_8h.html | 10 - docu/LD2410Types_8h_source.html | 1012 +++--- docu/classLD2410Async-members.html | 52 +- docu/classLD2410Async.html | 1408 +++++--- docu/classLD2410Async.js | 60 +- docu/doxygen_crawl.html | 73 +- docu/functions.html | 52 +- docu/functions_enum.html | 2 +- docu/functions_func.html | 24 +- docu/functions_type.html | 6 +- docu/functions_vars.html | 20 +- docu/index.html | 4 +- docu/menudata.js | 1 - docu/namespaceLD2410CommandBuilder.html | 42 +- docu/namespaceLD2410Types.html | 94 +- docu/navtreedata.js | 3 +- docu/navtreeindex0.js | 486 +-- docu/navtreeindex1.js | 258 +- docu/search/all_0.js | 29 +- docu/search/all_1.js | 53 +- docu/search/all_10.js | 5 +- docu/search/all_2.js | 65 +- docu/search/all_3.js | 57 +- docu/search/all_4.js | 6 +- docu/search/all_5.js | 4 +- docu/search/all_6.js | 4 +- docu/search/all_7.js | 5 +- docu/search/all_8.js | 11 +- docu/search/all_9.js | 2 +- docu/search/all_a.js | 24 +- docu/search/all_d.js | 3 +- docu/search/all_e.js | 61 +- docu/search/all_f.js | 6 +- docu/search/enums_0.js | 2 +- docu/search/enumvalues_2.js | 2 +- docu/search/enumvalues_4.js | 2 +- docu/search/enumvalues_a.js | 2 +- docu/search/enumvalues_b.js | 2 +- docu/search/functions_1.js | 2 +- docu/search/functions_3.js | 2 +- docu/search/functions_4.js | 4 +- docu/search/functions_5.js | 2 +- docu/search/functions_6.js | 2 +- docu/search/functions_7.js | 2 +- docu/search/functions_9.js | 6 +- docu/search/functions_a.js | 4 +- docu/search/searchdata.js | 9 +- docu/search/typedefs_0.js | 2 +- docu/search/typedefs_1.js | 2 +- docu/search/typedefs_2.js | 2 +- docu/search/variables_0.js | 2 +- docu/search/variables_1.js | 2 +- docu/search/variables_2.js | 4 +- docu/search/variables_3.js | 2 +- docu/search/variables_4.js | 2 +- docu/search/variables_5.js | 2 +- docu/search/variables_9.js | 4 +- docu/search/variables_c.js | 2 +- docu/structLD2410Types_1_1ConfigData.html | 213 +- docu/structLD2410Types_1_1DetectionData.html | 186 +- 68 files changed, 4334 insertions(+), 3637 deletions(-) diff --git a/docu/LD2410Async_8cpp.html b/docu/LD2410Async_8cpp.html index f248cb8..60cd0bd 100644 --- a/docu/LD2410Async_8cpp.html +++ b/docu/LD2410Async_8cpp.html @@ -108,11 +108,6 @@ #include "LD2410Defs.h"
                                                #include "LD2410Types.h"
                                                #include "LD2410CommandBuilder.h"
                                                -
                                                -Include dependency graph for LD2410Async.cpp:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html index e5cf004..28df4ca 100644 --- a/docu/LD2410Async_8cpp_source.html +++ b/docu/LD2410Async_8cpp_source.html @@ -305,14 +305,14 @@
                                                199* Generic Callbacks
                                                200******************************************************************************************/
                                                -
                                                201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
                                                +
                                                201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
                                                202 detectionDataCallback = callback;
                                                203 detectionDataCallbackUserData = userData;
                                                204}
                                                205
                                                -
                                                206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
                                                +
                                                206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
                                                207
                                                208 configUpdateReceivedReceivedCallbackUserData = userData;
                                                209 configUpdateReceivedReceivedCallback = callback;
                                                @@ -320,7 +320,7 @@
                                                211
                                                -
                                                212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
                                                +
                                                212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
                                                213 configChangedCallbackUserData = userData;
                                                214 configChangedCallback = callback;
                                                215}
                                                @@ -359,7 +359,7 @@
                                                248 DEBUG_PRINT("FAIL for command: ");
                                                249 DEBUG_PRINTLN(byte2hex(command));
                                                -
                                                250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
                                                +
                                                250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
                                                251 return false;
                                                252 };
                                                253
                                                @@ -367,14 +367,14 @@
                                                255 switch (command)
                                                256 {
                                                257 case LD2410Defs::configEnableCommand: // entered config mode
                                                -
                                                258 configModeEnabled = true;
                                                -
                                                259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
                                                -
                                                260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
                                                +
                                                258 configModeEnabled = true;
                                                +
                                                259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
                                                +
                                                260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
                                                262 DEBUG_PRINTLN("ACK for config mode enable received");
                                                263 break;
                                                264 case LD2410Defs::configDisableCommand: // exited config mode
                                                -
                                                265 configModeEnabled = false;
                                                +
                                                265 configModeEnabled = false;
                                                267 DEBUG_PRINTLN("ACK for config mode disable received");
                                                268 break;
                                                @@ -383,12 +383,12 @@
                                                271 executeConfigChangedCallback();
                                                272 break;
                                                - +
                                                276 DEBUG_PRINTLN("ACK for engineeringModeEnableComand received");
                                                277 break;
                                                - +
                                                281 DEBUG_PRINTLN("ACK for engineeringModeDisableComand received");
                                                282 break;
                                                @@ -402,8 +402,8 @@
                                                290 executeConfigChangedCallback();
                                                291 break;
                                                - -
                                                294 configModeEnabled = false;
                                                + +
                                                294 configModeEnabled = false;
                                                296 DEBUG_PRINTLN("ACK for rebootCommand received");
                                                297 break;
                                                @@ -426,7 +426,7 @@
                                                314 executeConfigChangedCallback();
                                                315 break;
                                                -
                                                317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
                                                +
                                                317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
                                                319 DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received");
                                                320 executeConfigUpdateReceivedCallback();
                                                @@ -438,19 +438,19 @@
                                                326 break;
                                                328 for (int i = 0; i < 6; i++) {
                                                -
                                                329 mac[i] = receiveBuffer[i + 4];
                                                +
                                                329 mac[i] = receiveBuffer[i + 4];
                                                330 };
                                                - -
                                                332 + ":" + byte2hex(mac[1])
                                                -
                                                333 + ":" + byte2hex(mac[2])
                                                -
                                                334 + ":" + byte2hex(mac[3])
                                                -
                                                335 + ":" + byte2hex(mac[4])
                                                -
                                                336 + ":" + byte2hex(mac[5]);
                                                + +
                                                332 + ":" + byte2hex(mac[1])
                                                +
                                                333 + ":" + byte2hex(mac[2])
                                                +
                                                334 + ":" + byte2hex(mac[3])
                                                +
                                                335 + ":" + byte2hex(mac[4])
                                                +
                                                336 + ":" + byte2hex(mac[5]);
                                                338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
                                                339 break;
                                                -
                                                341 firmware = byte2hex(receiveBuffer[7], false)
                                                +
                                                341 firmware = byte2hex(receiveBuffer[7], false)
                                                342 + "." + byte2hex(receiveBuffer[6])
                                                343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
                                                @@ -458,9 +458,9 @@
                                                346 break;
                                                347
                                                -
                                                349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
                                                -
                                                350 configData.lightThreshold = receiveBuffer[5];
                                                -
                                                351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
                                                +
                                                349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
                                                +
                                                350 configData.lightThreshold = receiveBuffer[5];
                                                +
                                                351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
                                                353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
                                                354 executeConfigUpdateReceivedCallback();
                                                @@ -470,19 +470,19 @@
                                                358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
                                                359 break;
                                                -
                                                361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
                                                +
                                                361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
                                                363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
                                                364 break;
                                                365 case LD2410Defs::requestParamsCommand: // Query parameters
                                                -
                                                366 configData.numberOfGates = receiveBuffer[5];
                                                -
                                                367 configData.maxMotionDistanceGate = receiveBuffer[6];
                                                -
                                                368 configData.maxStationaryDistanceGate = receiveBuffer[7];
                                                -
                                                369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
                                                -
                                                370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
                                                -
                                                371 for (byte i = 0; i <= configData.numberOfGates; i++)
                                                -
                                                372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
                                                -
                                                373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
                                                +
                                                366 configData.numberOfGates = receiveBuffer[5];
                                                +
                                                367 configData.maxMotionDistanceGate = receiveBuffer[6];
                                                +
                                                368 configData.maxStationaryDistanceGate = receiveBuffer[7];
                                                +
                                                369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
                                                +
                                                370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
                                                +
                                                371 for (byte i = 0; i <= configData.numberOfGates; i++)
                                                +
                                                372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
                                                +
                                                373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
                                                375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
                                                376 executeConfigUpdateReceivedCallback();
                                                @@ -500,7 +500,7 @@
                                                388 };
                                                389
                                                390 if (command != 0) {
                                                -
                                                391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
                                                +
                                                391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
                                                392 }
                                                393
                                                394
                                                @@ -516,75 +516,75 @@
                                                404
                                                405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
                                                406 {
                                                -
                                                407 configModeEnabled = false;
                                                +
                                                407 configModeEnabled = false;
                                                408
                                                -
                                                409 detectionData.timestamp = millis();
                                                +
                                                409 detectionData.timestamp = millis();
                                                410 //Basic data
                                                -
                                                411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
                                                -
                                                412 switch (detectionData.targetState) {
                                                +
                                                411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
                                                +
                                                412 switch (detectionData.targetState) {
                                                - - - + + +
                                                417 break;
                                                418
                                                - - - + + +
                                                423 break;
                                                424
                                                - - - + + +
                                                429 break;
                                                430 default:
                                                - - - + + +
                                                434 break;
                                                435 }
                                                -
                                                436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
                                                -
                                                437 detectionData.movingTargetSignal = receiveBuffer[5];
                                                -
                                                438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
                                                -
                                                439 detectionData.stationaryTargetSignal = receiveBuffer[8];
                                                -
                                                440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
                                                -
                                                441 detectionData.engineeringMode = receiveBuffer[0] == 1;
                                                +
                                                436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
                                                +
                                                437 detectionData.movingTargetSignal = receiveBuffer[5];
                                                +
                                                438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
                                                +
                                                439 detectionData.stationaryTargetSignal = receiveBuffer[8];
                                                +
                                                440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
                                                +
                                                441 detectionData.engineeringMode = receiveBuffer[0] == 1;
                                                442
                                                - +
                                                444
                                                - +
                                                446 { // Engineering mode data
                                                -
                                                447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
                                                - +
                                                447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
                                                +
                                                449
                                                450
                                                451 int index = 13;
                                                -
                                                452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
                                                -
                                                453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
                                                -
                                                454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
                                                -
                                                455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
                                                +
                                                452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
                                                +
                                                453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
                                                +
                                                454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
                                                +
                                                455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
                                                456
                                                - - + +
                                                459 if (index < payloadSize) {
                                                -
                                                460 detectionData.lightLevel = receiveBuffer[index++];
                                                +
                                                460 detectionData.lightLevel = receiveBuffer[index++];
                                                461 if (index < payloadSize) {
                                                -
                                                462 detectionData.outPinStatus = receiveBuffer[index++];
                                                +
                                                462 detectionData.outPinStatus = receiveBuffer[index++];
                                                463 }
                                                464 }
                                                465 }
                                                466 else
                                                467 { // Clear engineering mode data
                                                - - - - + + + +
                                                472 }
                                                473
                                                474 if (detectionDataCallback != nullptr) {
                                                -
                                                475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
                                                +
                                                475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
                                                476 };
                                                477 DEBUG_PRINTLN_DATA("DATA received");
                                                478 return true;
                                                @@ -616,7 +616,7 @@
                                                504/**********************************************************************************
                                                505* Send async command methods
                                                506***********************************************************************************/
                                                -
                                                507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
                                                +
                                                507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
                                                508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
                                                509
                                                @@ -625,7 +625,7 @@
                                                513
                                                514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
                                                515 vTaskSuspendAll();
                                                -
                                                516 AsyncCommandCallback cb = asyncCommandCallback;
                                                +
                                                516 AsyncCommandCallback cb = asyncCommandCallback;
                                                517 byte userData = asyncCommandCallbackUserData;
                                                518 asyncCommandCallback = nullptr;
                                                519 asyncCommandCallbackUserData = 0;
                                                @@ -645,7 +645,7 @@
                                                533
                                                -
                                                535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
                                                +
                                                535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
                                                536}
                                                537
                                                @@ -657,7 +657,7 @@
                                                543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
                                                544 DEBUG_PRINT(asyncCommandStartMs);
                                                545 DEBUG_PRINTLN(". Execute callback with timeout result.");
                                                -
                                                546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
                                                +
                                                546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
                                                547 }
                                                548 }
                                                549}
                                                @@ -733,7 +733,7 @@
                                                617/**********************************************************************************
                                                618* Async command sequence methods
                                                619***********************************************************************************/
                                                -
                                                620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
                                                +
                                                620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
                                                621 if (executeCommandSequenceActive) {
                                                622
                                                @@ -741,7 +741,7 @@
                                                625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
                                                626
                                                627 vTaskSuspendAll();
                                                -
                                                628 AsyncCommandCallback cb = executeCommandSequenceCallback;
                                                +
                                                628 AsyncCommandCallback cb = executeCommandSequenceCallback;
                                                629 byte userData = executeCommandSequenceUserData;
                                                630 executeCommandSequenceCallback = nullptr;
                                                631 executeCommandSequenceUserData = 0;
                                                @@ -756,11 +756,11 @@
                                                640
                                                641
                                                642// Callback after disabling config mode at the end of sequence
                                                -
                                                643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                644
                                                -
                                                645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
                                                +
                                                645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
                                                646
                                                - +
                                                649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
                                                650 DEBUG_PRINTLN(result);
                                                @@ -769,7 +769,7 @@
                                                653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
                                                654}
                                                655
                                                -
                                                656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
                                                +
                                                656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
                                                657 if (!executeCommandSequenceInitialConfigModeState) {
                                                658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
                                                659 }
                                                @@ -780,8 +780,8 @@
                                                664
                                                665
                                                666// Called when a single command in the sequence completes
                                                -
                                                667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                - +
                                                667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                669 // Abort sequence if a command fails
                                                671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
                                                @@ -804,7 +804,7 @@
                                                688 else {
                                                689 // Sequence finished successfully
                                                690
                                                -
                                                691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
                                                +
                                                691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
                                                692 }
                                                693}
                                                694
                                                @@ -821,19 +821,19 @@
                                                705 executeCommandSequenceActive = true;
                                                706 executeCommandSequenceCallback = callback;
                                                707 executeCommandSequenceUserData = userData;
                                                -
                                                708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
                                                +
                                                708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
                                                709 executeCommandSequenceStartMs = millis();
                                                710
                                                711 if (commandSequenceBufferCount == 0) {
                                                712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
                                                713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
                                                -
                                                714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
                                                +
                                                714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
                                                715 });
                                                716 return true;
                                                717
                                                718 }
                                                719
                                                -
                                                720 if (!configModeEnabled) {
                                                +
                                                720 if (!configModeEnabled) {
                                                721 // Need to enable config mode first
                                                722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
                                                723 executeCommandSequenceIndex = -1;
                                                @@ -1272,8 +1272,8 @@
                                                1100// It uses a first command sequences to get the current sensor config, then checks what
                                                1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
                                                1102
                                                -
                                                1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
                                                -
                                                1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
                                                +
                                                1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
                                                +
                                                1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
                                                1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
                                                1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
                                                1107 configureAllConfigSettingsAsyncConfigActive = false;
                                                @@ -1288,8 +1288,8 @@
                                                1116
                                                1117}
                                                1118
                                                -
                                                1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                - +
                                                1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
                                                1123 DEBUG_PRINTLN(result);
                                                @@ -1301,7 +1301,7 @@
                                                1129 }
                                                1130}
                                                1131
                                                -
                                                1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
                                                +
                                                1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
                                                1133
                                                1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
                                                1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
                                                @@ -1309,7 +1309,7 @@
                                                1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
                                                1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
                                                -
                                                1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
                                                +
                                                1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
                                                1141 }
                                                1142 }
                                                1143 else {
                                                @@ -1318,8 +1318,8 @@
                                                1146}
                                                1147
                                                1148
                                                -
                                                1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                -
                                                1150 if (AsyncCommandResult::SUCCESS != result) {
                                                +
                                                1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1150 if (AsyncCommandResult::SUCCESS != result) {
                                                1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
                                                1153 };
                                                @@ -1454,8 +1454,8 @@
                                                1282
                                                1283};
                                                1284
                                                -
                                                1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                - +
                                                1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
                                                1289 DEBUG_PRINTLN(result);
                                                @@ -1469,7 +1469,7 @@
                                                1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
                                                1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
                                                -
                                                1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
                                                +
                                                1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
                                                1301 }
                                                1302}
                                                1303
                                                @@ -1492,8 +1492,8 @@
                                                1320 return false;
                                                1321}
                                                1322
                                                -
                                                1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                -
                                                1324 if (result != AsyncCommandResult::SUCCESS) {
                                                +
                                                1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1324 if (result != AsyncCommandResult::SUCCESS) {
                                                1325
                                                1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
                                                @@ -1518,7 +1518,7 @@
                                                1346 if (!ret) {
                                                1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
                                                -
                                                1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
                                                +
                                                1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
                                                1350 }
                                                1351
                                                1352
                                                @@ -1570,10 +1570,10 @@
                                                1396//The reboot command is special, since it needs to be sent in config mode,
                                                1397//but doesnt have to disable config mode, since the sensor goes into normal
                                                1398//detection mode after the reboot anyway.
                                                -
                                                1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                - -
                                                1401 sender->configModeEnabled = false;
                                                -
                                                1402 sender->engineeringModeEnabled = false;
                                                +
                                                1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                + +
                                                1401 sender->configModeEnabled = false;
                                                +
                                                1402 sender->engineeringModeEnabled = false;
                                                1403
                                                1405 DEBUG_PRINTLN("Reboot initiated");
                                                @@ -1587,8 +1587,8 @@
                                                1413
                                                1414}
                                                1415
                                                -
                                                1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                - +
                                                1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1418 //Got ack of enable config mode command
                                                1420 DEBUG_PRINTLN("Config mode enabled before reboot");
                                                @@ -1622,25 +1622,25 @@
                                                1446***********************************************************************************/
                                                1450
                                                -
                                                1452 return configData;
                                                +
                                                1452 return configData;
                                                1453}
                                                1454
                                                1455/**********************************************************************************
                                                1456* Inactivity handling
                                                1457***********************************************************************************/
                                                -
                                                1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                -
                                                1459 sender->configModeEnabled = false;
                                                -
                                                1460 sender->engineeringModeEnabled = false;
                                                +
                                                1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1459 sender->configModeEnabled = false;
                                                +
                                                1460 sender->engineeringModeEnabled = false;
                                                1461
                                                1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
                                                -
                                                1463 if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1463 if (result == AsyncCommandResult::SUCCESS) {
                                                1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
                                                1466 }
                                                @@ -1654,11 +1654,11 @@
                                                1474
                                                1475}
                                                1476
                                                -
                                                1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                +
                                                1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
                                                1478
                                                1479
                                                1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
                                                -
                                                1481 if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1481 if (result == AsyncCommandResult::SUCCESS) {
                                                1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
                                                1484 }
                                                @@ -1699,7 +1699,7 @@
                                                1519}
                                                1520
                                                - +
                                                1522 inactivityHandlingEnabled = enable;
                                                1523}
                                                @@ -1757,7 +1757,7 @@
                                                1575***********************************************************************************/
                                                1576
                                                - +
                                                1578 if (taskHandle == NULL) {
                                                1580 DEBUG_PRINTLN("Starting data processing task");
                                                @@ -1794,7 +1794,7 @@
                                                1611
                                                - +
                                                1613 if (taskHandle != NULL) {
                                                1615 DEBUG_PRINTLN("Stopping data processing task");
                                                @@ -1830,7 +1830,7 @@
                                                1644* Constructor
                                                1645***********************************************************************************/
                                                - +
                                                1647{
                                                1648 sensor = &serial;
                                                1649}
                                                @@ -1851,58 +1851,58 @@
                                                bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution explicitly to 20 cm per gate.
                                                void asyncCancel()
                                                Cancels any pending asynchronous command or sequence.
                                                bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
                                                Configures the maximum detection gates and "no-one" timeout on the sensor.
                                                +
                                                bool begin()
                                                Starts the background task that continuously reads data from the sensor.
                                                +
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                Definition LD2410Async.h:98
                                                +
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                +
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                +
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                +
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
                                                Configures sensitivity thresholds for all gates at once.
                                                -
                                                bool isConfigModeEnabled() const
                                                Detects if config mode is enabled.
                                                +
                                                bool isConfigModeEnabled() const
                                                Detects if config mode is enabled.
                                                bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current distance resolution setting from the sensor.
                                                bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables engineering mode.
                                                bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the bluetooth mac address.
                                                bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
                                                Configures the UART baud rate of the sensor.
                                                bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution explicitly to 75 cm per gate.
                                                +
                                                void setInactivityHandling(bool enable)
                                                Enables or disables automatic inactivity handling of the sensor.
                                                bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
                                                Applies a full ConfigData struct to the LD2410.
                                                LD2410Types::ConfigData getConfigData() const
                                                Returns a clone of the current configuration data of the radar.
                                                LD2410Types::DetectionData getDetectionData() const
                                                Returns a clone of the latest detection data from the radar.
                                                bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the firmware version of the sensor.
                                                +
                                                LD2410Types::ConfigData configData
                                                Current configuration parameters of the radar.
                                                +
                                                String firmware
                                                Firmware version string of the radar.
                                                +
                                                void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration changes.
                                                bool asyncIsBusy()
                                                Checks if an asynchronous command is currently pending.
                                                +
                                                bool configModeEnabled
                                                True if the sensor is currently in config mode.
                                                +
                                                byte mac[6]
                                                MAC address of the radar’s Bluetooth module (if available).
                                                +
                                                String macString
                                                MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests all static information from the sensor.
                                                bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
                                                Configures the auxiliary control parameters (light and output pin).
                                                bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables config mode on the radar.
                                                bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables bluetooth.
                                                +
                                                LD2410Types::DetectionData detectionData
                                                Latest detection results from the radar.
                                                +
                                                LD2410Types::AutoConfigStatus autoConfigStatus
                                                Current status of the auto-configuration routine.
                                                bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
                                                Sets the password for bluetooth access to the sensor.
                                                +
                                                bool engineeringModeEnabled
                                                True if the sensor is currently in engineering mode.
                                                bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Restores factory settings of the sensor.
                                                bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests all configuration settings from the sensor.
                                                bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
                                                Resets the password for bluetooth access to the default value (HiLink)
                                                +
                                                LD2410Async(Stream &serial)
                                                Constructs a new LD2410Async instance bound to a given serial stream.
                                                +
                                                unsigned long bufferSize
                                                Buffer size reported by the radar protocol.
                                                bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current status of the auto-config routine.
                                                bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables config mode on the radar.
                                                +
                                                void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration data updates.
                                                bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables engineering mode.
                                                bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current gate parameters from the sensor.
                                                +
                                                unsigned long protocolVersion
                                                Protocol version reported by the radar.
                                                +
                                                void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                Callback signature for asynchronous command completion.
                                                bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables bluetooth.
                                                bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution of the radar.
                                                bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
                                                Reboots the sensor.
                                                bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
                                                Starts the automatic configuration (auto-config) routine on the sensor.
                                                +
                                                void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
                                                Registers a callback for new detection data.
                                                +
                                                bool end()
                                                Stops the background task started by begin().
                                                bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current auxiliary control settings.
                                                -
                                                void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration changes.
                                                -
                                                void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration data updates.
                                                -
                                                void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
                                                Registers a callback for new detection data.
                                                -
                                                LD2410Types::ConfigData configData
                                                Current configuration parameters of the radar.
                                                -
                                                String firmware
                                                Firmware version string of the radar.
                                                -
                                                bool configModeEnabled
                                                True if the sensor is currently in config mode.
                                                -
                                                byte mac[6]
                                                MAC address of the radar’s Bluetooth module (if available).
                                                -
                                                String macString
                                                MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                -
                                                LD2410Types::DetectionData detectionData
                                                Latest detection results from the radar.
                                                -
                                                LD2410Types::AutoConfigStatus autoConfigStatus
                                                Current status of the auto-configuration routine.
                                                -
                                                bool engineeringModeEnabled
                                                True if the sensor is currently in engineering mode.
                                                -
                                                unsigned long bufferSize
                                                Buffer size reported by the radar protocol.
                                                -
                                                unsigned long protocolVersion
                                                Protocol version reported by the radar.
                                                -
                                                void setInactivityHandling(bool enable)
                                                Enables or disables automatic inactivity handling of the sensor.
                                                -
                                                bool begin()
                                                Starts the background task that continuously reads data from the sensor.
                                                -
                                                LD2410Async(Stream &serial)
                                                Constructs a new LD2410Async instance bound to a given serial stream.
                                                -
                                                bool end()
                                                Stops the background task started by begin().
                                                -
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                -
                                                void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                Callback signature for asynchronous command completion.
                                                -
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                -
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                -
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                -
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
                                                bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
                                                bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
                                                @@ -1956,43 +1956,43 @@
                                                constexpr byte engineeringModeEnableComand
                                                Definition LD2410Defs.h:58
                                                constexpr byte requestDistanceResolutionCommand
                                                Definition LD2410Defs.h:30
                                                constexpr byte requestParamsCommandData[4]
                                                Definition LD2410Defs.h:56
                                                -
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                -
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                -
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                +
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                +
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                +
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                @ MOVING_AND_STATIONARY_TARGET
                                                Both moving and stationary targets detected.
                                                @ STATIONARY_TARGET
                                                A stationary target has been detected.
                                                @ MOVING_TARGET
                                                A moving target has been detected.
                                                -
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:89
                                                -
                                                Stores the sensor’s configuration parameters.
                                                -
                                                byte distanceGateStationarySensitivity[9]
                                                Stationary sensitivity values per gate (0–100).
                                                -
                                                byte distanceGateMotionSensitivity[9]
                                                Motion sensitivity values per gate (0–100).
                                                -
                                                byte maxMotionDistanceGate
                                                Furthest gate used for motion detection.
                                                -
                                                OutputControl outputControl
                                                Logic configuration of the OUT pin.
                                                -
                                                byte lightThreshold
                                                Threshold for auxiliary light control (0–255).
                                                -
                                                bool isValid() const
                                                Validates the configuration data for correctness.
                                                -
                                                LightControl lightControl
                                                Light-dependent auxiliary control mode.
                                                -
                                                byte maxStationaryDistanceGate
                                                Furthest gate used for stationary detection.
                                                -
                                                byte numberOfGates
                                                Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
                                                -
                                                DistanceResolution distanceResolution
                                                Current distance resolution. A reboot is required to activate changed setting after calling configure...
                                                -
                                                unsigned short noOneTimeout
                                                Timeout (seconds) until "no presence" is declared.
                                                -
                                                Holds the most recent detection data reported by the radar.
                                                -
                                                byte stationaryTargetGateSignals[9]
                                                Per-gate signal strengths for stationary targets.
                                                -
                                                bool engineeringMode
                                                True if engineering mode data was received.
                                                -
                                                bool stationaryPresenceDetected
                                                True if a stationary target is detected.
                                                -
                                                byte stationaryTargetSignal
                                                Signal strength (0–100) of the stationary target.
                                                -
                                                byte lightLevel
                                                Reported ambient light level (0–255).
                                                -
                                                unsigned int detectedDistance
                                                General detection distance (cm).
                                                -
                                                byte movingTargetGateSignalCount
                                                Number of gates with moving target signals.
                                                -
                                                TargetState targetState
                                                Current detection state.
                                                -
                                                byte movingTargetGateSignals[9]
                                                Per-gate signal strengths for moving targets.
                                                -
                                                byte stationaryTargetGateSignalCount
                                                Number of gates with stationary target signals.
                                                -
                                                bool presenceDetected
                                                True if any target is detected.
                                                -
                                                byte movingTargetSignal
                                                Signal strength (0–100) of the moving target.
                                                -
                                                bool outPinStatus
                                                Current status of the OUT pin (true = high, false = low).
                                                -
                                                unsigned long timestamp
                                                Timestamp (ms since boot) when this data was received.
                                                -
                                                bool movingPresenceDetected
                                                True if a moving target is detected.
                                                -
                                                unsigned int movingTargetDistance
                                                Distance (cm) to the nearest moving target.
                                                -
                                                unsigned int stationaryTargetDistance
                                                Distance (cm) to the nearest stationary target.
                                                +
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:97
                                                +
                                                Stores the sensor’s configuration parameters.
                                                +
                                                byte distanceGateStationarySensitivity[9]
                                                Stationary sensitivity values per gate (0–100).
                                                +
                                                byte distanceGateMotionSensitivity[9]
                                                Motion sensitivity values per gate (0–100).
                                                +
                                                byte maxMotionDistanceGate
                                                Furthest gate used for motion detection.
                                                +
                                                OutputControl outputControl
                                                Logic configuration of the OUT pin.
                                                +
                                                byte lightThreshold
                                                Threshold for auxiliary light control (0–255).
                                                +
                                                bool isValid() const
                                                Validates the configuration data for correctness.
                                                +
                                                LightControl lightControl
                                                Light-dependent auxiliary control mode.
                                                +
                                                byte maxStationaryDistanceGate
                                                Furthest gate used for stationary detection.
                                                +
                                                byte numberOfGates
                                                Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
                                                +
                                                DistanceResolution distanceResolution
                                                Current distance resolution. A reboot is required to activate changed setting after calling configure...
                                                +
                                                unsigned short noOneTimeout
                                                Timeout (seconds) until "no presence" is declared.
                                                +
                                                Holds the most recent detection data reported by the radar.
                                                +
                                                byte stationaryTargetGateSignals[9]
                                                Per-gate signal strengths for stationary targets.
                                                +
                                                bool engineeringMode
                                                True if engineering mode data was received.
                                                +
                                                bool stationaryPresenceDetected
                                                True if a stationary target is detected.
                                                +
                                                byte stationaryTargetSignal
                                                Signal strength (0–100) of the stationary target.
                                                +
                                                byte lightLevel
                                                Reported ambient light level (0–255).
                                                +
                                                unsigned int detectedDistance
                                                General detection distance (cm).
                                                +
                                                byte movingTargetGateSignalCount
                                                Number of gates with moving target signals.
                                                +
                                                TargetState targetState
                                                Current detection state.
                                                +
                                                byte movingTargetGateSignals[9]
                                                Per-gate signal strengths for moving targets.
                                                +
                                                byte stationaryTargetGateSignalCount
                                                Number of gates with stationary target signals.
                                                +
                                                bool presenceDetected
                                                True if any target is detected.
                                                +
                                                byte movingTargetSignal
                                                Signal strength (0–100) of the moving target.
                                                +
                                                bool outPinStatus
                                                Current status of the OUT pin (true = high, false = low).
                                                +
                                                unsigned long timestamp
                                                Timestamp (ms since boot) when this data was received.
                                                +
                                                bool movingPresenceDetected
                                                True if a moving target is detected.
                                                +
                                                unsigned int movingTargetDistance
                                                Distance (cm) to the nearest moving target.
                                                +
                                                unsigned int stationaryTargetDistance
                                                Distance (cm) to the nearest stationary target.
                                                diff --git a/docu/LD2410Async_8h.html b/docu/LD2410Async_8h.html index 183f832..571ab27 100644 --- a/docu/LD2410Async_8h.html +++ b/docu/LD2410Async_8h.html @@ -107,16 +107,6 @@ #include "LD2410Debug.h"
                                                #include "LD2410Types.h"
                                                #include "LD2410Defs.h"
                                                -
                                                -Include dependency graph for LD2410Async.h:
                                                -
                                                -
                                                -
                                                -
                                                -This graph shows which files directly or indirectly include this file:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index 28a2628..2837ab9 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -189,1460 +189,1660 @@
                                                87
                                                -
                                                89public:
                                                -
                                                90 /** @defgroup LD2410Async_Types Types And Callbacks
                                                -
                                                91 * Public types , enums and callback definitions
                                                -
                                                92 * @{
                                                -
                                                93 */
                                                -
                                                94
                                                -
                                                95 /**
                                                -
                                                96 * @brief Result of an asynchronous command execution.
                                                -
                                                97 *
                                                -
                                                98 * Every async command reports back its outcome via the callback.
                                                -
                                                99 */
                                                -
                                                -
                                                100 enum class AsyncCommandResult : byte {
                                                -
                                                101 SUCCESS, ///< Command completed successfully and ACK was received.
                                                -
                                                102 FAILED, ///< Command failed (sensor responded with negative ACK).
                                                -
                                                103 TIMEOUT, ///< No ACK received within the expected time window.
                                                -
                                                104 CANCELED ///< Command was canceled by the user before completion.
                                                -
                                                105 };
                                                +
                                                89public:
                                                +
                                                90
                                                +
                                                91 /**
                                                +
                                                92 * @brief Result of an asynchronous command execution.
                                                +
                                                93 *
                                                +
                                                94 * Every async command reports back its outcome via the callback.
                                                +
                                                95 *
                                                +
                                                96 * @ingroup LD2410Async_Types
                                                +
                                                97 */
                                                +
                                                +
                                                98 enum class AsyncCommandResult : byte {
                                                +
                                                99 SUCCESS, ///< Command completed successfully and ACK was received.
                                                +
                                                100 FAILED, ///< Command failed (sensor responded with negative ACK).
                                                +
                                                101 TIMEOUT, ///< No ACK received within the expected time window.
                                                +
                                                102 CANCELED ///< Command was canceled by the user before completion.
                                                +
                                                103 };
                                                +
                                                104
                                                +
                                                105
                                                106
                                                -
                                                107
                                                -
                                                108
                                                -
                                                109
                                                -
                                                110 /**
                                                -
                                                111 * @brief Callback signature for asynchronous command completion.
                                                -
                                                112 *
                                                -
                                                113 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                -
                                                114 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
                                                -
                                                115 * @param userData User-specified value passed when registering the callback.
                                                -
                                                116 */
                                                -
                                                117 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
                                                -
                                                118
                                                -
                                                119 /**
                                                -
                                                120 * @brief Generic callback signature used for simple notifications.
                                                -
                                                121 *
                                                -
                                                122 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                -
                                                123 * @param userData User-specified value passed when registering the callback.
                                                -
                                                124 */
                                                -
                                                125 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
                                                -
                                                126
                                                -
                                                127 /**
                                                -
                                                128 * @brief Callback type for receiving detection data events.
                                                -
                                                129 *
                                                -
                                                130 * This callback is invoked whenever new detection data is processed.
                                                -
                                                131 * It provides direct access to the LD2410Async instance, along with
                                                -
                                                132 * a quick flag for presence detection so that applications which only
                                                -
                                                133 * care about presence can avoid parsing the full DetectionData struct.
                                                +
                                                107
                                                +
                                                108 /**
                                                +
                                                109 * @brief Callback signature for asynchronous command completion.
                                                +
                                                110 *
                                                +
                                                111 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                +
                                                112 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
                                                +
                                                113 * @param userData User-specified value passed when registering the callback.
                                                +
                                                114 *
                                                +
                                                115 * @ingroup LD2410Async_Configuration
                                                +
                                                116 * @ingroup LD2410Async_Callbacks
                                                +
                                                117 */
                                                +
                                                118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
                                                +
                                                119
                                                +
                                                120 /**
                                                +
                                                121 * @brief Generic callback signature used for simple notifications.
                                                +
                                                122 *
                                                +
                                                123 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                +
                                                124 * @param userData User-specified value passed when registering the callback.
                                                +
                                                125 *
                                                +
                                                126 *
                                                +
                                                127 * @ingroup LD2410Async_Configuration
                                                +
                                                128 * @ingroup LD2410Async_Callbacks
                                                +
                                                129 */
                                                +
                                                130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
                                                +
                                                131
                                                +
                                                132 /**
                                                +
                                                133 * @brief Callback type for receiving detection data events.
                                                134 *
                                                -
                                                135 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                -
                                                136 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
                                                -
                                                137 * @param userData User-defined value passed when registering the callback.
                                                -
                                                138 */
                                                -
                                                139 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
                                                -
                                                140
                                                -
                                                141
                                                -
                                                142
                                                -
                                                143 /** @} */ // end of LD2410Async_Types
                                                -
                                                144
                                                -
                                                145public:
                                                -
                                                146 /** @defgroup LD2410Async_Data Public Data Members
                                                -
                                                147 * Public data structures and variables.
                                                -
                                                148 * @{
                                                -
                                                149 */
                                                +
                                                135 * This callback is invoked whenever new detection data is processed.
                                                +
                                                136 * It provides direct access to the LD2410Async instance, along with
                                                +
                                                137 * a quick flag for presence detection so that applications which only
                                                +
                                                138 * care about presence can avoid parsing the full DetectionData struct.
                                                +
                                                139 *
                                                +
                                                140 * @param sender Pointer to the LD2410Async instance that triggered the callback.
                                                +
                                                141 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
                                                +
                                                142 * @param userData User-defined value passed when registering the callback.
                                                +
                                                143 *
                                                +
                                                144 * @ingroup LD2410Async_Callbacks
                                                +
                                                145 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                146 */
                                                +
                                                147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
                                                +
                                                148
                                                +
                                                149
                                                150
                                                -
                                                151
                                                -
                                                152 /**
                                                -
                                                153 * @brief Latest detection results from the radar.
                                                -
                                                154 *
                                                -
                                                155 * Updated automatically whenever new data frames are received.
                                                -
                                                156 * Use registerDetectionDataReceivedCallback() to be notified
                                                -
                                                157 * whenever this struct changes.
                                                -
                                                158 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
                                                -
                                                159 */
                                                - -
                                                161
                                                -
                                                162 /**
                                                -
                                                163 * @brief Current configuration parameters of the radar.
                                                -
                                                164 *
                                                -
                                                165 * Filled when configuration query commands are issued
                                                -
                                                166 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
                                                -
                                                167 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
                                                -
                                                168 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
                                                -
                                                169 *
                                                -
                                                170 * Structure will contain only uninitilaized data if config data is not queried explicitly.
                                                -
                                                171 */
                                                - -
                                                173
                                                -
                                                174 /**
                                                -
                                                175 * @brief Protocol version reported by the radar.
                                                -
                                                176 *
                                                -
                                                177 * This value is set when entering config mode. It can be useful
                                                -
                                                178 * for compatibility checks between firmware and library.
                                                -
                                                179 */
                                                -
                                                180 unsigned long protocolVersion = 0;
                                                -
                                                181
                                                -
                                                182 /**
                                                -
                                                183 * @brief Buffer size reported by the radar protocol.
                                                -
                                                184 *
                                                -
                                                185 * Set when entering config mode. Typically not required by users
                                                -
                                                186 * unless debugging low-level protocol behavior.
                                                -
                                                187 */
                                                -
                                                188 unsigned long bufferSize = 0;
                                                -
                                                189
                                                -
                                                190 /**
                                                -
                                                191 * @brief True if the sensor is currently in config mode.
                                                -
                                                192 *
                                                -
                                                193 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
                                                -
                                                194 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
                                                -
                                                195 * otherwiese the radar will not send any detection data.
                                                -
                                                196 */
                                                -
                                                197 bool configModeEnabled = false;
                                                -
                                                198
                                                -
                                                199
                                                -
                                                200 /**
                                                -
                                                201 * @brief True if the sensor is currently in engineering mode.
                                                -
                                                202 *
                                                -
                                                203 * In engineering mode, the radar sends detailed per-gate
                                                -
                                                204 * signal data in addition to basic detection data.
                                                -
                                                205 *
                                                -
                                                206 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
                                                -
                                                207 */
                                                - -
                                                209
                                                -
                                                210 /**
                                                -
                                                211 * @brief Firmware version string of the radar.
                                                -
                                                212 *
                                                -
                                                213 * Populated by requestFirmwareAsync(). Format is usually
                                                -
                                                214 * "major.minor.build".
                                                -
                                                215 */
                                                -
                                                216 String firmware = "";
                                                -
                                                217
                                                -
                                                218 /**
                                                -
                                                219 * @brief MAC address of the radar’s Bluetooth module (if available).
                                                -
                                                220 *
                                                -
                                                221 * Populated by requestBluetoothMacAddressAsync().
                                                -
                                                222 */
                                                -
                                                223 byte mac[6];
                                                -
                                                224 /**
                                                -
                                                225 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                -
                                                226 *
                                                -
                                                227 * Populated by requestBluetoothMacAddressAsync().
                                                -
                                                228 */
                                                -
                                                229 String macString = "";
                                                -
                                                230
                                                +
                                                151
                                                +
                                                152
                                                +
                                                153public:
                                                +
                                                154
                                                +
                                                155
                                                +
                                                156
                                                +
                                                157 /**
                                                +
                                                158 * @brief Latest detection results from the radar.
                                                +
                                                159 *
                                                +
                                                160 * Updated automatically whenever new data frames are received.
                                                +
                                                161 * Use registerDetectionDataReceivedCallback() to be notified
                                                +
                                                162 * whenever this struct changes.
                                                +
                                                163 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
                                                +
                                                164 *
                                                +
                                                165 * @ingroup LD2410Async_PublicData
                                                +
                                                166 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                167 *
                                                +
                                                168 */
                                                + +
                                                170
                                                +
                                                171 /**
                                                +
                                                172 * @brief Current configuration parameters of the radar.
                                                +
                                                173 *
                                                +
                                                174 * Filled when configuration query commands are issued
                                                +
                                                175 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
                                                +
                                                176 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
                                                +
                                                177 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
                                                +
                                                178 *
                                                +
                                                179 * Structure will contain only uninitilaized data if config data is not queried explicitly.
                                                +
                                                180 *
                                                +
                                                181 * @ingroup LD2410Async_PublicData
                                                +
                                                182 * @ingroup LD2410Async_Configuration
                                                +
                                                183 */
                                                + +
                                                185
                                                +
                                                186 /**
                                                +
                                                187 * @brief Protocol version reported by the radar.
                                                +
                                                188 *
                                                +
                                                189 * This value is set when entering config mode. It can be useful
                                                +
                                                190 * for compatibility checks between firmware and library.
                                                +
                                                191 *
                                                +
                                                192 * @ingroup LD2410Async_PublicData
                                                +
                                                193 * @ingroup LD2410Async_StaticData
                                                +
                                                194 */
                                                +
                                                195 unsigned long protocolVersion = 0;
                                                +
                                                196
                                                +
                                                197 /**
                                                +
                                                198 * @brief Buffer size reported by the radar protocol.
                                                +
                                                199 *
                                                +
                                                200 * Set when entering config mode. Typically not required by users
                                                +
                                                201 * unless debugging low-level protocol behavior.
                                                +
                                                202 *
                                                +
                                                203 * @ingroup LD2410Async_PublicData
                                                +
                                                204 * @ingroup LD2410Async_StaticData
                                                +
                                                205 */
                                                +
                                                206 unsigned long bufferSize = 0;
                                                +
                                                207
                                                +
                                                208 /**
                                                +
                                                209 * @brief True if the sensor is currently in config mode.
                                                +
                                                210 *
                                                +
                                                211 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
                                                +
                                                212 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
                                                +
                                                213 * otherwiese the radar will not send any detection data.
                                                +
                                                214 *
                                                +
                                                215 * @ingroup LD2410Async_PublicData
                                                +
                                                216 */
                                                +
                                                217 bool configModeEnabled = false;
                                                +
                                                218
                                                +
                                                219
                                                +
                                                220 /**
                                                +
                                                221 * @brief True if the sensor is currently in engineering mode.
                                                +
                                                222 *
                                                +
                                                223 * In engineering mode, the radar sends detailed per-gate
                                                +
                                                224 * signal data in addition to basic detection data.
                                                +
                                                225 *
                                                +
                                                226 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
                                                +
                                                227 *
                                                +
                                                228 * @ingroup LD2410Async_PublicData
                                                +
                                                229 */
                                                +
                                                231
                                                232 /**
                                                -
                                                233 * @brief Current status of the auto-configuration routine.
                                                +
                                                233 * @brief Firmware version string of the radar.
                                                234 *
                                                -
                                                235 * Updated by requestAutoConfigStatusAsync().
                                                -
                                                236 */
                                                - -
                                                238 /** @} */ // end of LD2410Async_Data
                                                -
                                                239
                                                -
                                                240 /** @defgroup LD2410Async_Lifecycle Constructor & Basic Methods
                                                -
                                                241 * Constructor and basic start/stop methods.
                                                -
                                                242 * @{
                                                -
                                                243 */
                                                -
                                                244
                                                -
                                                245 /**********************************************************************************
                                                -
                                                246 * Constrcutor
                                                -
                                                247 ***********************************************************************************/
                                                -
                                                248
                                                -
                                                249 /**
                                                -
                                                250 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
                                                -
                                                251 *
                                                -
                                                252 * The sensor communicates over a UART interface. Pass the corresponding
                                                -
                                                253 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
                                                -
                                                254 * implementation) that is connected to the LD2410 sensor.
                                                -
                                                255 *
                                                -
                                                256 * Example:
                                                -
                                                257 * @code
                                                -
                                                258 * HardwareSerial radarSerial(2);
                                                -
                                                259 * LD2410Async radar(radarSerial);
                                                -
                                                260 * @endcode
                                                -
                                                261 *
                                                -
                                                262 * @param serial Reference to a Stream object used to exchange data with the sensor.
                                                -
                                                263 */
                                                -
                                                264 LD2410Async(Stream& serial);
                                                -
                                                265
                                                -
                                                266 /**********************************************************************************
                                                -
                                                267 * begin, end
                                                -
                                                268 ***********************************************************************************/
                                                -
                                                269 /**
                                                -
                                                270 * @brief Starts the background task that continuously reads data from the sensor.
                                                -
                                                271 *
                                                -
                                                272 * This method creates a FreeRTOS task which parses all incoming frames
                                                -
                                                273 * and dispatches registered callbacks. Without calling begin(), the
                                                -
                                                274 * sensor cannot deliver detection results asynchronously.
                                                -
                                                275 *
                                                -
                                                276 * @returns true if the task was successfully started, false if already running.
                                                -
                                                277 */
                                                -
                                                278 bool begin();
                                                -
                                                279
                                                -
                                                280 /**
                                                -
                                                281 * @brief Stops the background task started by begin().
                                                -
                                                282 *
                                                -
                                                283 * After calling end(), no more data will be processed until begin() is called again.
                                                -
                                                284 * This is useful to temporarily suspend radar processing without rebooting.
                                                -
                                                285 *
                                                -
                                                286 * @returns true if the task was stopped, false if it was not active.
                                                -
                                                287 */
                                                -
                                                288 bool end();
                                                -
                                                289
                                                -
                                                290 /** @} */ // end of LD2410Async_Lifecycle
                                                -
                                                291
                                                -
                                                292 /**********************************************************************************
                                                -
                                                293 * Inactivity handling
                                                -
                                                294 ***********************************************************************************/
                                                -
                                                295
                                                -
                                                296 /** @defgroup LD2410Async_Inactivity Inactivity Handling
                                                -
                                                297 * Methods for automatic inactivity detection and recovery.
                                                -
                                                298 * @{
                                                -
                                                299 */
                                                -
                                                300
                                                -
                                                301 /**
                                                -
                                                302 * @brief Enables or disables automatic inactivity handling of the sensor.
                                                -
                                                303 *
                                                -
                                                304 * When inactivity handling is enabled, the library continuously monitors the time
                                                -
                                                305 * since the last activity (received data or command ACK). If no activity is detected
                                                -
                                                306 * for a longer period (defined by activityTimeoutMs), the library will attempt to
                                                -
                                                307 * recover the sensor automatically:
                                                -
                                                308 * 1. It first tries to exit config mode (even if configModeEnabled is false).
                                                -
                                                309 * 2. If no activity is restored within 5 seconds after leaving config mode,
                                                -
                                                310 * the library reboots the sensor.
                                                -
                                                311 *
                                                -
                                                312 * This helps recover the sensor from rare cases where it gets "stuck"
                                                -
                                                313 * in config mode or stops sending data.
                                                -
                                                314 *
                                                -
                                                315 * @param enable Pass true to enable inactivity handling, false to disable it.
                                                -
                                                316 */
                                                -
                                                317 void setInactivityHandling(bool enable);
                                                -
                                                318
                                                -
                                                319 /**
                                                -
                                                320 * @brief Convenience method: enables inactivity handling.
                                                -
                                                321 *
                                                -
                                                322 * Equivalent to calling setInactivityHandling(true).
                                                -
                                                323 */
                                                - -
                                                325
                                                -
                                                326 /**
                                                -
                                                327 * @brief Convenience method: disables inactivity handling.
                                                -
                                                328 *
                                                -
                                                329 * Equivalent to calling setInactivityHandling(false).
                                                -
                                                330 */
                                                - -
                                                332
                                                -
                                                333 /**
                                                -
                                                334 * @brief Returns whether inactivity handling is currently enabled.
                                                -
                                                335 *
                                                -
                                                336 * @returns true if inactivity handling is enabled, false otherwise.
                                                -
                                                337 */
                                                -
                                                338 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
                                                -
                                                339
                                                -
                                                340 /**
                                                -
                                                341 * @brief Sets the timeout period for inactivity handling.
                                                -
                                                342 *
                                                -
                                                343 * If no data or command ACK is received within this period,
                                                -
                                                344 * the library will attempt to recover the sensor as described
                                                -
                                                345 * in setInactivityHandling().
                                                -
                                                346 *
                                                -
                                                347 * Default is 60000 ms (1 minute).
                                                -
                                                348 *
                                                -
                                                349 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
                                                -
                                                350 */
                                                -
                                                351 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
                                                -
                                                352
                                                -
                                                353 /**
                                                -
                                                354 * @brief Returns the current inactivity timeout period.
                                                -
                                                355 *
                                                -
                                                356 * @returns Timeout in milliseconds.
                                                -
                                                357 */
                                                -
                                                358 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
                                                -
                                                359
                                                -
                                                360 /** @} */ // end of LD2410Async_Inactivity
                                                -
                                                361
                                                -
                                                362 /**********************************************************************************
                                                -
                                                363 * Callback registration methods
                                                -
                                                364 ***********************************************************************************/
                                                -
                                                365 /** @defgroup LD2410Async_Callbacks Callback Registration
                                                -
                                                366 * Registrierung von Callback-Funktionen.
                                                -
                                                367 * @{
                                                -
                                                368 */
                                                -
                                                369
                                                -
                                                370 /**
                                                -
                                                371 * @brief Registers a callback for new detection data.
                                                -
                                                372 *
                                                -
                                                373 * The callback is invoked whenever a valid data frame is received
                                                -
                                                374 * from the radar, after detectionData has been updated.
                                                -
                                                375 *
                                                -
                                                376 * @param callback Function pointer with signature
                                                -
                                                377 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
                                                -
                                                378 * @param userData Optional value that will be passed to the callback.
                                                -
                                                379 */
                                                -
                                                380 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
                                                -
                                                381
                                                -
                                                382 /**
                                                -
                                                383 * @brief Registers a callback for configuration changes.
                                                -
                                                384 *
                                                -
                                                385 * The callback is invoked whenever the sensor’s configuration
                                                -
                                                386 * has been successfully updated (e.g. after setting sensitivity).
                                                -
                                                387 *
                                                -
                                                388 * @param callback Function pointer with signature
                                                -
                                                389 * void methodName(LD2410Async* sender, byte userData).
                                                -
                                                390 * @param userData Optional value that will be passed to the callback.
                                                -
                                                391 */
                                                -
                                                392 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
                                                -
                                                393
                                                -
                                                394 /**
                                                -
                                                395 * @brief Registers a callback for configuration data updates.
                                                -
                                                396 *
                                                -
                                                397 * The callback is invoked whenever new configuration information
                                                -
                                                398 * has been received from the sensor (e.g. after requestGateParametersAsync()).
                                                -
                                                399 *
                                                -
                                                400 * @param callback Function pointer with signature
                                                -
                                                401 * void methodName(LD2410Async* sender, byte userData).
                                                -
                                                402 * @param userData Optional value that will be passed to the callback.
                                                -
                                                403 */
                                                -
                                                404 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
                                                -
                                                405
                                                -
                                                406 /** @} */ // end of LD2410Async_Callbacks
                                                +
                                                235 * Populated by requestFirmwareAsync(). Format is usually
                                                +
                                                236 * "major.minor.build".
                                                +
                                                237 *
                                                +
                                                238 * @ingroup LD2410Async_PublicData
                                                +
                                                239 * @ingroup LD2410Async_StaticData
                                                +
                                                240 */
                                                +
                                                241 String firmware = "";
                                                +
                                                242
                                                +
                                                243 /**
                                                +
                                                244 * @brief MAC address of the radar’s Bluetooth module (if available).
                                                +
                                                245 *
                                                +
                                                246 * Populated by requestBluetoothMacAddressAsync().
                                                +
                                                247 *
                                                +
                                                248 * @ingroup LD2410Async_PublicData
                                                +
                                                249 * @ingroup LD2410Async_StaticData
                                                +
                                                250 */
                                                +
                                                251 byte mac[6];
                                                +
                                                252
                                                +
                                                253 /**
                                                +
                                                254 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                +
                                                255 *
                                                +
                                                256 * Populated by requestBluetoothMacAddressAsync().
                                                +
                                                257 *
                                                +
                                                258 * @ingroup LD2410Async_PublicData
                                                +
                                                259 * @ingroup LD2410Async_StaticData
                                                +
                                                260 */
                                                +
                                                261 String macString = "";
                                                +
                                                262
                                                +
                                                263
                                                +
                                                264 /**
                                                +
                                                265 * @brief Current status of the auto-configuration routine.
                                                +
                                                266 *
                                                +
                                                267 * Updated by requestAutoConfigStatusAsync().
                                                +
                                                268 *
                                                +
                                                269 * @ingroup LD2410Async_Configuration
                                                +
                                                270 * @ingroup LD2410Async_PublicData
                                                +
                                                271 */
                                                + +
                                                273
                                                +
                                                274
                                                +
                                                275
                                                +
                                                276
                                                +
                                                277 /**********************************************************************************
                                                +
                                                278 * Constrcutor
                                                +
                                                279 ***********************************************************************************/
                                                +
                                                280
                                                +
                                                281 /**
                                                +
                                                282 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
                                                +
                                                283 *
                                                +
                                                284 * The sensor communicates over a UART interface. Pass the corresponding
                                                +
                                                285 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
                                                +
                                                286 * implementation) that is connected to the LD2410 sensor.
                                                +
                                                287 *
                                                +
                                                288 * Example:
                                                +
                                                289 * @code
                                                +
                                                290 * HardwareSerial radarSerial(2);
                                                +
                                                291 * LD2410Async radar(radarSerial);
                                                +
                                                292 * @endcode
                                                +
                                                293 *
                                                +
                                                294 * @param serial Reference to a Stream object used to exchange data with the sensor.
                                                +
                                                295 *
                                                +
                                                296 * @ingroup LD2410Async_MainMethods
                                                +
                                                297 */
                                                +
                                                298 LD2410Async(Stream& serial);
                                                +
                                                299
                                                +
                                                300 /**********************************************************************************
                                                +
                                                301 * begin, end
                                                +
                                                302 ***********************************************************************************/
                                                +
                                                303 /**
                                                +
                                                304 * @brief Starts the background task that continuously reads data from the sensor.
                                                +
                                                305 *
                                                +
                                                306 * This method creates a FreeRTOS task which parses all incoming frames
                                                +
                                                307 * and dispatches registered callbacks. Without calling begin(), the
                                                +
                                                308 * sensor cannot deliver detection results asynchronously.
                                                +
                                                309 *
                                                +
                                                310 * @returns true if the task was successfully started, false if already running.
                                                +
                                                311 *
                                                +
                                                312 * @ingroup LD2410Async_MainMethods
                                                +
                                                313 */
                                                +
                                                314 bool begin();
                                                +
                                                315
                                                +
                                                316 /**
                                                +
                                                317 * @brief Stops the background task started by begin().
                                                +
                                                318 *
                                                +
                                                319 * After calling end(), no more data will be processed until begin() is called again.
                                                +
                                                320 * This is useful to temporarily suspend radar processing without rebooting.
                                                +
                                                321 *
                                                +
                                                322 * @returns true if the task was stopped, false if it was not active.
                                                +
                                                323 *
                                                +
                                                324 * @ingroup LD2410Async_MainMethods
                                                +
                                                325 */
                                                +
                                                326 bool end();
                                                +
                                                327
                                                +
                                                328
                                                +
                                                329
                                                +
                                                330 /**********************************************************************************
                                                +
                                                331 * Inactivity handling
                                                +
                                                332 ***********************************************************************************/
                                                +
                                                333
                                                +
                                                334
                                                +
                                                335
                                                +
                                                336 /**
                                                +
                                                337 * @brief Enables or disables automatic inactivity handling of the sensor.
                                                +
                                                338 *
                                                +
                                                339 * When inactivity handling is enabled, the library continuously monitors the time
                                                +
                                                340 * since the last activity (received data or command ACK). If no activity is detected
                                                +
                                                341 * for a longer period (defined by activityTimeoutMs), the library will attempt to
                                                +
                                                342 * recover the sensor automatically:
                                                +
                                                343 * 1. It first tries to exit config mode (even if configModeEnabled is false).
                                                +
                                                344 * 2. If no activity is restored within 5 seconds after leaving config mode,
                                                +
                                                345 * the library reboots the sensor.
                                                +
                                                346 *
                                                +
                                                347 * This helps recover the sensor from rare cases where it gets "stuck"
                                                +
                                                348 * in config mode or stops sending data.
                                                +
                                                349 *
                                                +
                                                350 * @param enable Pass true to enable inactivity handling, false to disable it.
                                                +
                                                351 *
                                                +
                                                352 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                353 */
                                                +
                                                354 void setInactivityHandling(bool enable);
                                                +
                                                355
                                                +
                                                356 /**
                                                +
                                                357 * @brief Convenience method: enables inactivity handling.
                                                +
                                                358 *
                                                +
                                                359 * Equivalent to calling setInactivityHandling(true).
                                                +
                                                360 *
                                                +
                                                361 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                362 */
                                                + +
                                                364
                                                +
                                                365 /**
                                                +
                                                366 * @brief Convenience method: disables inactivity handling.
                                                +
                                                367 *
                                                +
                                                368 * Equivalent to calling setInactivityHandling(false).
                                                +
                                                369 *
                                                +
                                                370 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                371 */
                                                + +
                                                373
                                                +
                                                374 /**
                                                +
                                                375 * @brief Returns whether inactivity handling is currently enabled.
                                                +
                                                376 *
                                                +
                                                377 * @returns true if inactivity handling is enabled, false otherwise.
                                                +
                                                378 *
                                                +
                                                379 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                380 */
                                                +
                                                381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
                                                +
                                                382
                                                +
                                                383 /**
                                                +
                                                384 * @brief Sets the timeout period for inactivity handling.
                                                +
                                                385 *
                                                +
                                                386 * If no data or command ACK is received within this period,
                                                +
                                                387 * the library will attempt to recover the sensor as described
                                                +
                                                388 * in setInactivityHandling().
                                                +
                                                389 *
                                                +
                                                390 * Default is 60000 ms (1 minute).
                                                +
                                                391 *
                                                +
                                                392 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
                                                +
                                                393 *
                                                +
                                                394 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                395 */
                                                +
                                                396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
                                                +
                                                397
                                                +
                                                398 /**
                                                +
                                                399 * @brief Returns the current inactivity timeout period.
                                                +
                                                400 *
                                                +
                                                401 * @returns Timeout in milliseconds.
                                                +
                                                402 *
                                                +
                                                403 * @ingroup LD2410Async_InactivityHandling
                                                +
                                                404 */
                                                +
                                                405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
                                                +
                                                406
                                                407
                                                -
                                                408 /**********************************************************************************
                                                -
                                                409 * Detection and config data access commands
                                                -
                                                410 ***********************************************************************************/
                                                -
                                                411 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
                                                -
                                                412
                                                -
                                                413 /**
                                                -
                                                414 * @brief Returns a clone of the latest detection data from the radar.
                                                -
                                                415 *
                                                -
                                                416 * The returned struct contains the most recently received frame,
                                                -
                                                417 * including target state, distances, signal strengths, and
                                                -
                                                418 * (if enabled) engineering mode per-gate data.
                                                -
                                                419 *
                                                -
                                                420 * Equivalent to directly accessing the public member detectionData,
                                                -
                                                421 * but provided for encapsulation and future-proofing.
                                                -
                                                422 *
                                                -
                                                423 * @note This function will not query the sensor for data. It just returns
                                                -
                                                424 * the data that has already been received from the sensor.
                                                -
                                                425 *
                                                -
                                                426 * ## Example: Access values from a clone
                                                -
                                                427 * @code
                                                -
                                                428 * DetectionData data = radar.getDetectionData(); // makes a copy
                                                -
                                                429 * if (data.targetState == TargetState::MOVING_TARGET) {
                                                -
                                                430 * Serial.print("Moving target at distance: ");
                                                -
                                                431 * Serial.println(data.movingTargetDistance);
                                                -
                                                432 * }
                                                -
                                                433 * @endcode
                                                -
                                                434 *
                                                -
                                                435 * ## Do:
                                                -
                                                436 * - Use when you want a snapshot of the latest detection data.
                                                -
                                                437 * - Modify the returned struct freely without affecting the internal state.
                                                -
                                                438 *
                                                -
                                                439 * ## Don’t:
                                                -
                                                440 * - Expect this to fetch new data from the sensor (it only returns what was already received).
                                                -
                                                441 *
                                                -
                                                442 * @returns A copy of the current DetectionData.
                                                -
                                                443 */
                                                - -
                                                445
                                                -
                                                446
                                                -
                                                447 /**
                                                -
                                                448 * @brief Access the current detection data without making a copy.
                                                -
                                                449 *
                                                -
                                                450 * This returns a const reference to the internal struct. It is efficient,
                                                -
                                                451 * but the data must not be modified directly. Use this if you only want
                                                -
                                                452 * to read values.
                                                -
                                                453 *
                                                -
                                                454 * @note Since this returns a reference to the internal data, the values
                                                -
                                                455 * may change as new frames arrive. Do not store the reference for
                                                -
                                                456 * long-term use.
                                                -
                                                457 * @note This function will not query the sensor for data. It just returns
                                                -
                                                458 * the data that has already been received from the sensor.
                                                -
                                                459 *
                                                -
                                                460 * ## Example: Efficient read access without cloning
                                                -
                                                461 * @code
                                                -
                                                462 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
                                                -
                                                463 * Serial.print("Stationary signal: ");
                                                -
                                                464 * Serial.println(data.stationaryTargetSignal);
                                                -
                                                465 * @endcode
                                                -
                                                466 *
                                                -
                                                467 * ## Do:
                                                -
                                                468 * - Use when you only need to read values quickly and efficiently.
                                                -
                                                469 * - Use when printing or inspecting live data without keeping it.
                                                -
                                                470 *
                                                -
                                                471 * ## Don’t:
                                                -
                                                472 * - Try to modify the returned struct (it’s const).
                                                -
                                                473 * - Store the reference long-term (it may be updated at any time).
                                                -
                                                474 *
                                                -
                                                475 * @returns Const reference to the current DetectionData.
                                                -
                                                476 */
                                                - -
                                                478
                                                -
                                                479
                                                -
                                                480 /**
                                                -
                                                481 * @brief Returns a clone of the current configuration data of the radar.
                                                -
                                                482 *
                                                -
                                                483 * The returned struct contains the most recently requested
                                                -
                                                484 * or received configuration values, such as sensitivities,
                                                -
                                                485 * resolution, timeouts, and auxiliary settings.
                                                -
                                                486 *
                                                -
                                                487 * Equivalent to directly accessing the public member configData,
                                                -
                                                488 * but provided for encapsulation and future-proofing.
                                                -
                                                489 *
                                                -
                                                490 * @note This function will not query the sensor for data. It just returns
                                                -
                                                491 * the data that has already been received from the sensor.
                                                -
                                                492 *
                                                -
                                                493 * ## Example: Clone, modify, and write back
                                                -
                                                494 * @code
                                                -
                                                495 * // Clone current config
                                                -
                                                496 * ConfigData cfg = radar.getConfigData();
                                                -
                                                497 *
                                                -
                                                498 * // Modify locally
                                                -
                                                499 * cfg.noOneTimeout = 60; // change timeout
                                                -
                                                500 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
                                                -
                                                501 *
                                                -
                                                502 * // Send modified config back to sensor
                                                -
                                                503 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
                                                -
                                                504 * AsyncCommandResult result,
                                                -
                                                505 * byte) {
                                                -
                                                506 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                507 * Serial.println("Config updated successfully!");
                                                -
                                                508 * }
                                                -
                                                509 * });
                                                -
                                                510 * @endcode
                                                -
                                                511 *
                                                -
                                                512 * ## Do:
                                                -
                                                513 * - Use when you want a clone of the current config to adjust and send back.
                                                -
                                                514 * - Safely modify the struct without risking internal state corruption.
                                                -
                                                515 *
                                                -
                                                516 * ## Don’t:
                                                -
                                                517 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
                                                -
                                                518 *
                                                -
                                                519 * @returns A copy of the current ConfigData.
                                                -
                                                520 */
                                                - -
                                                522
                                                -
                                                523
                                                -
                                                524 /**
                                                -
                                                525 * @brief Access the current config data without making a copy.
                                                -
                                                526 *
                                                -
                                                527 * This returns a const reference to the internal struct. It is efficient,
                                                -
                                                528 * but the data must not be modified directly. Use this if you only want
                                                -
                                                529 * to read values.
                                                -
                                                530 *
                                                -
                                                531 * @note Since this returns a reference to the internal data, the values
                                                -
                                                532 * may change when new configuration is received. Do not store the
                                                -
                                                533 * reference for long-term use.
                                                -
                                                534 * @note This function will not query the sensor for data. It just returns
                                                -
                                                535 * the data that has already been received from the sensor.
                                                -
                                                536 *
                                                -
                                                537 * ## Example: Efficient read access without cloning
                                                -
                                                538 * @code
                                                -
                                                539 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
                                                -
                                                540 * Serial.print("Resolution: ");
                                                -
                                                541 * Serial.println(static_cast<int>(cfg.distanceResolution));
                                                -
                                                542 * @endcode
                                                -
                                                543 *
                                                -
                                                544 * ## Do:
                                                -
                                                545 * - Use when you only want to inspect configuration quickly.
                                                -
                                                546 * - Use for efficient read-only access.
                                                -
                                                547 *
                                                -
                                                548 * ## Don’t:
                                                -
                                                549 * - Try to modify the returned struct (it’s const).
                                                -
                                                550 * - Keep the reference and assume it will remain valid forever.
                                                -
                                                551 *
                                                -
                                                552 * @returns Const reference to the current ConfigData.
                                                -
                                                553 */
                                                - -
                                                555
                                                -
                                                556
                                                -
                                                557 /**********************************************************************************
                                                -
                                                558 * Special async commands
                                                -
                                                559 ***********************************************************************************/
                                                -
                                                560 /**
                                                -
                                                561 * @brief Checks if an asynchronous command is currently pending.
                                                -
                                                562 *
                                                -
                                                563 * @returns true if there is an active command awaiting an ACK,
                                                -
                                                564 * false if the library is idle.
                                                -
                                                565 */
                                                -
                                                566 bool asyncIsBusy();
                                                -
                                                567
                                                -
                                                568 /**
                                                -
                                                569 * @brief Cancels any pending asynchronous command or sequence.
                                                -
                                                570 *
                                                -
                                                571 * If canceled, the callback of the running command is invoked
                                                -
                                                572 * with result type CANCELED. After canceling, the sensor may
                                                -
                                                573 * remain in config mode — consider disabling config mode or
                                                -
                                                574 * rebooting to return to detection operation.
                                                -
                                                575 */
                                                -
                                                576 void asyncCancel();
                                                -
                                                577
                                                -
                                                578 /**
                                                -
                                                579 * @brief Sets the timeout for async command callbacks.
                                                -
                                                580 *
                                                -
                                                581 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
                                                -
                                                582 *
                                                -
                                                583 *
                                                -
                                                584 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
                                                -
                                                585 */
                                                -
                                                586 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
                                                -
                                                587
                                                -
                                                588 /**
                                                -
                                                589 * @brief Returns the current async command timeout.
                                                -
                                                590 *
                                                -
                                                591 * @return Timeout in milliseconds.
                                                -
                                                592 */
                                                -
                                                593 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
                                                -
                                                594
                                                -
                                                595
                                                -
                                                596 /**********************************************************************************
                                                -
                                                597 * Commands
                                                -
                                                598 ***********************************************************************************/
                                                -
                                                599
                                                -
                                                600 /*---------------------------------------------------------------------------------
                                                -
                                                601 - Config mode commands
                                                -
                                                602 ---------------------------------------------------------------------------------*/
                                                -
                                                603 /**
                                                -
                                                604 * @brief Enables config mode on the radar.
                                                -
                                                605 *
                                                -
                                                606 * Config mode must be enabled before issuing most configuration commands.
                                                -
                                                607 * This command itself is asynchronous — the callback fires once the
                                                -
                                                608 * sensor acknowledges the mode switch.
                                                -
                                                609 *
                                                -
                                                610 * @note If asyncIsBusy() is true, this command will not be sent.
                                                -
                                                611 * @note Normal detection data is suspended while config mode is active.
                                                -
                                                612 *
                                                -
                                                613 * @param callback Callback with signature
                                                -
                                                614 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                615 * @param userData Optional value that will be passed to the callback.
                                                -
                                                616 *
                                                -
                                                617 * @returns true if the command was sent, false if blocked.
                                                -
                                                618 */
                                                -
                                                619 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                620
                                                -
                                                621 /**
                                                -
                                                622 * @brief Disables config mode on the radar.
                                                -
                                                623 *
                                                -
                                                624 * This should be called after finishing configuration, to return
                                                -
                                                625 * the sensor to normal detection operation.
                                                -
                                                626 *
                                                -
                                                627 * @note If an async command is already pending (asyncIsBusy() == true),
                                                -
                                                628 * this command will not be sent.
                                                -
                                                629 *
                                                -
                                                630 * @param callback Callback with signature
                                                -
                                                631 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                632 * @param userData Optional value passed to the callback.
                                                -
                                                633 *
                                                -
                                                634 * @returns true if the command was sent, false otherwise.
                                                -
                                                635 */
                                                -
                                                636 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                637
                                                -
                                                638 /**
                                                -
                                                639 * @brief Detects if config mode is enabled
                                                -
                                                640 *
                                                -
                                                641 * @returns true if config mode is anabled, false if config mode is disabled
                                                -
                                                642 */
                                                -
                                                -
                                                643 bool isConfigModeEnabled() const {
                                                -
                                                644 return configModeEnabled;
                                                -
                                                645 };
                                                +
                                                408
                                                +
                                                409 /**********************************************************************************
                                                +
                                                410 * Callback registration methods
                                                +
                                                411 ***********************************************************************************/
                                                +
                                                412
                                                +
                                                413
                                                +
                                                414 /**
                                                +
                                                415 * @brief Registers a callback for new detection data.
                                                +
                                                416 *
                                                +
                                                417 * The callback is invoked whenever a valid data frame is received
                                                +
                                                418 * from the radar, after detectionData has been updated.
                                                +
                                                419 *
                                                +
                                                420 * @param callback Function pointer with signature
                                                +
                                                421 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
                                                +
                                                422 * @param userData Optional value that will be passed to the callback.
                                                +
                                                423 *
                                                +
                                                424 * @ingroup LD2410Async_Callbacks
                                                +
                                                425 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                426 */
                                                +
                                                427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
                                                +
                                                428
                                                +
                                                429 /**
                                                +
                                                430 * @brief Registers a callback for configuration changes.
                                                +
                                                431 *
                                                +
                                                432 * The callback is invoked whenever the sensor’s configuration
                                                +
                                                433 * has been successfully updated (e.g. after setting sensitivity).
                                                +
                                                434 *
                                                +
                                                435 * @param callback Function pointer with signature
                                                +
                                                436 * void methodName(LD2410Async* sender, byte userData).
                                                +
                                                437 * @param userData Optional value that will be passed to the callback.
                                                +
                                                438 *
                                                +
                                                439 * @ingroup LD2410Async_Callbacks
                                                +
                                                440 * @ingroup LD2410Async_Configuration
                                                +
                                                441 */
                                                +
                                                442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
                                                +
                                                443
                                                +
                                                444 /**
                                                +
                                                445 * @brief Registers a callback for configuration data updates.
                                                +
                                                446 *
                                                +
                                                447 * The callback is invoked whenever new configuration information
                                                +
                                                448 * has been received from the sensor (e.g. after requestGateParametersAsync()).
                                                +
                                                449 *
                                                +
                                                450 * @param callback Function pointer with signature
                                                +
                                                451 * void methodName(LD2410Async* sender, byte userData).
                                                +
                                                452 * @param userData Optional value that will be passed to the callback.
                                                +
                                                453 *
                                                +
                                                454 * @ingroup LD2410Async_Callbacks
                                                +
                                                455 * @ingroup LD2410Async_Configuration
                                                +
                                                456 */
                                                +
                                                457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
                                                +
                                                458
                                                +
                                                459
                                                +
                                                460
                                                +
                                                461 /**********************************************************************************
                                                +
                                                462 * Detection and config data access commands
                                                +
                                                463 ***********************************************************************************/
                                                +
                                                464 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
                                                +
                                                465
                                                +
                                                466 /**
                                                +
                                                467 * @brief Returns a clone of the latest detection data from the radar.
                                                +
                                                468 *
                                                +
                                                469 * The returned struct contains the most recently received frame,
                                                +
                                                470 * including target state, distances, signal strengths, and
                                                +
                                                471 * (if enabled) engineering mode per-gate data.
                                                +
                                                472 *
                                                +
                                                473 * Equivalent to directly accessing the public member detectionData,
                                                +
                                                474 * but provided for encapsulation and future-proofing.
                                                +
                                                475 *
                                                +
                                                476 * @note This function will not query the sensor for data. It just returns
                                                +
                                                477 * the data that has already been received from the sensor.
                                                +
                                                478 *
                                                +
                                                479 * ## Example: Access values from a clone
                                                +
                                                480 * @code
                                                +
                                                481 * DetectionData data = radar.getDetectionData(); // makes a copy
                                                +
                                                482 * if (data.targetState == TargetState::MOVING_TARGET) {
                                                +
                                                483 * Serial.print("Moving target at distance: ");
                                                +
                                                484 * Serial.println(data.movingTargetDistance);
                                                +
                                                485 * }
                                                +
                                                486 * @endcode
                                                +
                                                487 *
                                                +
                                                488 * ## Do:
                                                +
                                                489 * - Use when you want a snapshot of the latest detection data.
                                                +
                                                490 * - Modify the returned struct freely without affecting the internal state.
                                                +
                                                491 *
                                                +
                                                492 * ## Don’t:
                                                +
                                                493 * - Expect this to fetch new data from the sensor (it only returns what was already received).
                                                +
                                                494 *
                                                +
                                                495 * @returns A copy of the current DetectionData.
                                                +
                                                496 *
                                                +
                                                497 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                498 * @ingroup LD2410Async_PublicData
                                                +
                                                499 */
                                                + +
                                                501
                                                +
                                                502
                                                +
                                                503 /**
                                                +
                                                504 * @brief Access the current detection data without making a copy.
                                                +
                                                505 *
                                                +
                                                506 * This returns a const reference to the internal struct. It is efficient,
                                                +
                                                507 * but the data must not be modified directly. Use this if you only want
                                                +
                                                508 * to read values.
                                                +
                                                509 *
                                                +
                                                510 * @note Since this returns a reference to the internal data, the values
                                                +
                                                511 * may change as new frames arrive. Do not store the reference for
                                                +
                                                512 * long-term use.
                                                +
                                                513 * @note This function will not query the sensor for data. It just returns
                                                +
                                                514 * the data that has already been received from the sensor.
                                                +
                                                515 *
                                                +
                                                516 * ## Example: Efficient read access without cloning
                                                +
                                                517 * @code
                                                +
                                                518 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
                                                +
                                                519 * Serial.print("Stationary signal: ");
                                                +
                                                520 * Serial.println(data.stationaryTargetSignal);
                                                +
                                                521 * @endcode
                                                +
                                                522 *
                                                +
                                                523 * ## Do:
                                                +
                                                524 * - Use when you only need to read values quickly and efficiently.
                                                +
                                                525 * - Use when printing or inspecting live data without keeping it.
                                                +
                                                526 *
                                                +
                                                527 * ## Don’t:
                                                +
                                                528 * - Try to modify the returned struct (it’s const).
                                                +
                                                529 * - Store the reference long-term (it may be updated at any time).
                                                +
                                                530 *
                                                +
                                                531 * @returns Const reference to the current DetectionData.
                                                +
                                                532 *
                                                +
                                                533 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                534 * @ingroup LD2410Async_PublicData
                                                +
                                                535 */
                                                + +
                                                537
                                                +
                                                538
                                                +
                                                539 /**
                                                +
                                                540 * @brief Returns a clone of the current configuration data of the radar.
                                                +
                                                541 *
                                                +
                                                542 * The returned struct contains the most recently requested
                                                +
                                                543 * or received configuration values, such as sensitivities,
                                                +
                                                544 * resolution, timeouts, and auxiliary settings.
                                                +
                                                545 *
                                                +
                                                546 * Equivalent to directly accessing the public member configData,
                                                +
                                                547 * but provided for encapsulation and future-proofing.
                                                +
                                                548 *
                                                +
                                                549 * @note This function will not query the sensor for data. It just returns
                                                +
                                                550 * the data that has already been received from the sensor.
                                                +
                                                551 *
                                                +
                                                552 * ## Example: Clone, modify, and write back
                                                +
                                                553 * @code
                                                +
                                                554 * // Clone current config
                                                +
                                                555 * ConfigData cfg = radar.getConfigData();
                                                +
                                                556 *
                                                +
                                                557 * // Modify locally
                                                +
                                                558 * cfg.noOneTimeout = 60; // change timeout
                                                +
                                                559 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
                                                +
                                                560 *
                                                +
                                                561 * // Send modified config back to sensor
                                                +
                                                562 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
                                                +
                                                563 * AsyncCommandResult result,
                                                +
                                                564 * byte) {
                                                +
                                                565 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                566 * Serial.println("Config updated successfully!");
                                                +
                                                567 * }
                                                +
                                                568 * });
                                                +
                                                569 * @endcode
                                                +
                                                570 *
                                                +
                                                571 * ## Do:
                                                +
                                                572 * - Use when you want a clone of the current config to adjust and send back.
                                                +
                                                573 * - Safely modify the struct without risking internal state corruption.
                                                +
                                                574 *
                                                +
                                                575 * ## Don’t:
                                                +
                                                576 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
                                                +
                                                577 *
                                                +
                                                578 * @returns A copy of the current ConfigData.
                                                +
                                                579 *
                                                +
                                                580 * @ingroup LD2410Async_Configuration
                                                +
                                                581 * @ingroup LD2410Async_PublicData
                                                +
                                                582 */
                                                + +
                                                584
                                                +
                                                585
                                                +
                                                586 /**
                                                +
                                                587 * @brief Access the current config data without making a copy.
                                                +
                                                588 *
                                                +
                                                589 * This returns a const reference to the internal struct. It is efficient,
                                                +
                                                590 * but the data must not be modified directly. Use this if you only want
                                                +
                                                591 * to read values.
                                                +
                                                592 *
                                                +
                                                593 * @note Since this returns a reference to the internal data, the values
                                                +
                                                594 * may change when new configuration is received. Do not store the
                                                +
                                                595 * reference for long-term use.
                                                +
                                                596 * @note This function will not query the sensor for data. It just returns
                                                +
                                                597 * the data that has already been received from the sensor.
                                                +
                                                598 *
                                                +
                                                599 * ## Example: Efficient read access without cloning
                                                +
                                                600 * @code
                                                +
                                                601 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
                                                +
                                                602 * Serial.print("Resolution: ");
                                                +
                                                603 * Serial.println(static_cast<int>(cfg.distanceResolution));
                                                +
                                                604 * @endcode
                                                +
                                                605 *
                                                +
                                                606 * ## Do:
                                                +
                                                607 * - Use when you only want to inspect configuration quickly.
                                                +
                                                608 * - Use for efficient read-only access.
                                                +
                                                609 *
                                                +
                                                610 * ## Don’t:
                                                +
                                                611 * - Try to modify the returned struct (it’s const).
                                                +
                                                612 * - Keep the reference and assume it will remain valid forever.
                                                +
                                                613 *
                                                +
                                                614 * @returns Const reference to the current ConfigData.
                                                +
                                                615 *
                                                +
                                                616 * @ingroup LD2410Async_Configuration
                                                +
                                                617 * @ingroup LD2410Async_PublicData
                                                +
                                                618 */
                                                + +
                                                620
                                                +
                                                621
                                                +
                                                622 /**********************************************************************************
                                                +
                                                623 * Special async commands
                                                +
                                                624 ***********************************************************************************/
                                                +
                                                625 /**
                                                +
                                                626 * @brief Checks if an asynchronous command is currently pending.
                                                +
                                                627 *
                                                +
                                                628 * @returns true if there is an active command awaiting an ACK,
                                                +
                                                629 * false if the library is idle.
                                                +
                                                630 *
                                                +
                                                631 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                632 */
                                                +
                                                633 bool asyncIsBusy();
                                                +
                                                634
                                                +
                                                635 /**
                                                +
                                                636 * @brief Cancels any pending asynchronous command or sequence.
                                                +
                                                637 *
                                                +
                                                638 * If canceled, the callback of the running command is invoked
                                                +
                                                639 * with result type CANCELED. After canceling, the sensor may
                                                +
                                                640 * remain in config mode — consider disabling config mode or
                                                +
                                                641 * rebooting to return to detection operation.
                                                +
                                                642 *
                                                +
                                                643 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                644 */
                                                +
                                                645 void asyncCancel();
                                                +
                                                646
                                                +
                                                647 /**
                                                +
                                                648 * @brief Sets the timeout for async command callbacks.
                                                +
                                                649 *
                                                +
                                                650 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
                                                +
                                                651 *
                                                +
                                                652 *
                                                +
                                                653 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
                                                +
                                                654 *
                                                +
                                                655 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                656 */
                                                +
                                                657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
                                                +
                                                658
                                                +
                                                659 /**
                                                +
                                                660 * @brief Returns the current async command timeout.
                                                +
                                                661 *
                                                +
                                                662 * @return Timeout in milliseconds.
                                                +
                                                663 *
                                                +
                                                664 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                665 */
                                                +
                                                666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
                                                +
                                                667
                                                +
                                                668
                                                +
                                                669 /**********************************************************************************
                                                +
                                                670 * Commands
                                                +
                                                671 ***********************************************************************************/
                                                +
                                                672
                                                +
                                                673 /*---------------------------------------------------------------------------------
                                                +
                                                674 - Config mode commands
                                                +
                                                675 ---------------------------------------------------------------------------------*/
                                                +
                                                676 /**
                                                +
                                                677 * @brief Enables config mode on the radar.
                                                +
                                                678 *
                                                +
                                                679 * Config mode must be enabled before issuing most configuration commands.
                                                +
                                                680 * This command itself is asynchronous — the callback fires once the
                                                +
                                                681 * sensor acknowledges the mode switch.
                                                +
                                                682 *
                                                +
                                                683 * @note If asyncIsBusy() is true, this command will not be sent.
                                                +
                                                684 * @note Normal detection data is suspended while config mode is active.
                                                +
                                                685 *
                                                +
                                                686 * @param callback Callback with signature
                                                +
                                                687 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                688 * @param userData Optional value that will be passed to the callback.
                                                +
                                                689 *
                                                +
                                                690 * @returns true if the command was sent, false if blocked.
                                                +
                                                691 *
                                                +
                                                692 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                693 * @ingroup LD2410Async_Configuration
                                                +
                                                694 */
                                                +
                                                695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                696
                                                +
                                                697 /**
                                                +
                                                698 * @brief Disables config mode on the radar.
                                                +
                                                699 *
                                                +
                                                700 * This should be called after finishing configuration, to return
                                                +
                                                701 * the sensor to normal detection operation.
                                                +
                                                702 *
                                                +
                                                703 * @note If an async command is already pending (asyncIsBusy() == true),
                                                +
                                                704 * this command will not be sent.
                                                +
                                                705 *
                                                +
                                                706 * @param callback Callback with signature
                                                +
                                                707 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                708 * @param userData Optional value passed to the callback.
                                                +
                                                709 *
                                                +
                                                710 * @returns true if the command was sent, false otherwise.
                                                +
                                                711 *
                                                +
                                                712 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                713 * @ingroup LD2410Async_Configuration
                                                +
                                                714 */
                                                +
                                                715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                716
                                                +
                                                717 /**
                                                +
                                                718 * @brief Detects if config mode is enabled
                                                +
                                                719 *
                                                +
                                                720 * @returns true if config mode is anabled, false if config mode is disabled
                                                +
                                                721 *
                                                +
                                                722 * @ingroup LD2410Async_Configuration
                                                +
                                                723 */
                                                +
                                                +
                                                724 bool isConfigModeEnabled() const {
                                                +
                                                725 return configModeEnabled;
                                                +
                                                726 };
                                                -
                                                646
                                                -
                                                647
                                                -
                                                648 /*---------------------------------------------------------------------------------
                                                -
                                                649 - Engineering mode commands
                                                -
                                                650 ---------------------------------------------------------------------------------*/
                                                -
                                                651 /**
                                                -
                                                652 * @brief Enables engineering mode.
                                                -
                                                653 *
                                                -
                                                654 * In this mode, the sensor sends detailed per-gate signal values
                                                -
                                                655 * in addition to basic detection results.
                                                -
                                                656 *
                                                -
                                                657 * @note Engineering mode is temporary and lost after power cycle.
                                                -
                                                658 * @note Requires config mode. Will be enabled automatically if not active.
                                                -
                                                659 *
                                                -
                                                660 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                661 * @param userData Optional value passed to the callback.
                                                -
                                                662 *
                                                -
                                                663 * @returns true if the command was sent, false otherwise.
                                                -
                                                664 */
                                                -
                                                665 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                666
                                                -
                                                667 /**
                                                -
                                                668 * @brief Disables engineering mode.
                                                -
                                                669 *
                                                -
                                                670 * Returns sensor reporting to basic detection results only.
                                                -
                                                671 *
                                                -
                                                672 * @note Requires config mode. Will be enabled automatically if not active.
                                                -
                                                673 *
                                                -
                                                674 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                675 * @param userData Optional value passed to the callback.
                                                -
                                                676 *
                                                -
                                                677 * @returns true if the command was sent, false otherwise.
                                                -
                                                678 */
                                                -
                                                679 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                680
                                                -
                                                681 /**
                                                -
                                                682 * @brief Detects if engineering mode is enabled
                                                -
                                                683 *
                                                -
                                                684 * @returns true if engineering mode is anabled, false if engineering mode is disabled
                                                -
                                                685 */
                                                -
                                                - - -
                                                688 };
                                                +
                                                727
                                                +
                                                728
                                                +
                                                729 /*---------------------------------------------------------------------------------
                                                +
                                                730 - Engineering mode commands
                                                +
                                                731 ---------------------------------------------------------------------------------*/
                                                +
                                                732 /**
                                                +
                                                733 * @brief Enables engineering mode.
                                                +
                                                734 *
                                                +
                                                735 * In this mode, the sensor sends detailed per-gate signal values
                                                +
                                                736 * in addition to basic detection results.
                                                +
                                                737 *
                                                +
                                                738 * @note Engineering mode is temporary and lost after power cycle.
                                                +
                                                739 * @note Requires config mode. Will be enabled automatically if not active.
                                                +
                                                740 *
                                                +
                                                741 * @param callback Callback fired when ACK is received or on failure.
                                                +
                                                742 * @param userData Optional value passed to the callback.
                                                +
                                                743 *
                                                +
                                                744 * @returns true if the command was sent, false otherwise.
                                                +
                                                745 *
                                                +
                                                746 * @ingroup LD2410Async_NativeCommands
                                                +
                                                747 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                748 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                749 */
                                                +
                                                750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                751
                                                +
                                                752 /**
                                                +
                                                753 * @brief Disables engineering mode.
                                                +
                                                754 *
                                                +
                                                755 * Returns sensor reporting to basic detection results only.
                                                +
                                                756 *
                                                +
                                                757 * @note Requires config mode. Will be enabled automatically if not active.
                                                +
                                                758 *
                                                +
                                                759 * @param callback Callback fired when ACK is received or on failure.
                                                +
                                                760 * @param userData Optional value passed to the callback.
                                                +
                                                761 *
                                                +
                                                762 * @returns true if the command was sent, false otherwise.
                                                +
                                                763 *
                                                +
                                                764 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                765 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                766 */
                                                +
                                                767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                768
                                                +
                                                769 /**
                                                +
                                                770 * @brief Detects if engineering mode is enabled
                                                +
                                                771 *
                                                +
                                                772 * @returns true if engineering mode is anabled, false if engineering mode is disabled
                                                +
                                                773 *
                                                +
                                                774 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                775 */
                                                +
                                                + + +
                                                778 };
                                                -
                                                689
                                                -
                                                690 /*---------------------------------------------------------------------------------
                                                -
                                                691 - Native sensor commands
                                                -
                                                692 ---------------------------------------------------------------------------------*/
                                                -
                                                693 /**
                                                -
                                                694 * @brief Requests the current gate parameters from the sensor.
                                                -
                                                695 *
                                                -
                                                696 * Retrieves sensitivities, max gates, and timeout settings,
                                                -
                                                697 * which will be written into configData.
                                                -
                                                698 *
                                                -
                                                699 * @note Requires config mode. The method will manage mode switching if needed.
                                                -
                                                700 * @note If an async command is already pending, the request is rejected.
                                                -
                                                701 *
                                                -
                                                702 * @param callback Callback fired when data is received or on failure.
                                                -
                                                703 * @param userData Optional value passed to the callback.
                                                -
                                                704 *
                                                -
                                                705 * @returns true if the command was sent, false otherwise.
                                                -
                                                706 */
                                                -
                                                707 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                708
                                                -
                                                709
                                                -
                                                710
                                                -
                                                711 /**
                                                -
                                                712 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
                                                -
                                                713 *
                                                -
                                                714 * This command updates:
                                                -
                                                715 * - Maximum motion detection distance gate (2–8).
                                                -
                                                716 * - Maximum stationary detection distance gate (2–8).
                                                -
                                                717 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
                                                -
                                                718 *
                                                -
                                                719 * @note Requires config mode to be enabled. The method will internally
                                                -
                                                720 * enable/disable config mode if necessary.
                                                -
                                                721 * @note If another async command is pending, this call fails.
                                                -
                                                722 *
                                                -
                                                723 * @param maxMovingGate Furthest gate used for motion detection (2–8).
                                                -
                                                724 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
                                                -
                                                725 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
                                                -
                                                726 * @param callback Callback fired when ACK is received or on failure/timeout.
                                                -
                                                727 * @param userData Optional value passed to the callback.
                                                -
                                                728 *
                                                -
                                                729 * @returns true if the command was sent, false otherwise (busy state or invalid values).
                                                -
                                                730 */
                                                -
                                                731 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                732
                                                -
                                                733
                                                -
                                                734 /**
                                                -
                                                735 * @brief Configures sensitivity thresholds for all gates at once.
                                                -
                                                736 *
                                                -
                                                737 * A sequence of commands will be sent, one for each gate.
                                                -
                                                738 * Threshold values are automatically clamped to 0–100.
                                                -
                                                739 *
                                                -
                                                740 * @note Requires config mode. Will be managed automatically.
                                                -
                                                741 * @note If another async command is pending, this call fails.
                                                -
                                                742 *
                                                -
                                                743 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
                                                -
                                                744 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
                                                -
                                                745 * @param callback Callback fired when all updates are acknowledged or on failure.
                                                -
                                                746 * @param userData Optional value passed to the callback.
                                                -
                                                747 *
                                                -
                                                748 * @returns true if the sequence was started, false otherwise.
                                                -
                                                749 */
                                                -
                                                750
                                                -
                                                751 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                752
                                                -
                                                753
                                                -
                                                754 /**
                                                -
                                                755 * @brief Configures sensitivity thresholds for a single gate.
                                                -
                                                756 *
                                                -
                                                757 * Updates both moving and stationary thresholds for the given gate index.
                                                -
                                                758 * If the gate index is greater than 8, all gates are updated instead.
                                                -
                                                759 *
                                                -
                                                760 * @note Requires config mode. Will be managed automatically.
                                                -
                                                761 * @note If another async command is pending, this call fails.
                                                -
                                                762 *
                                                -
                                                763 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
                                                -
                                                764 * @param movingThreshold Sensitivity for moving targets (0–100).
                                                -
                                                765 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
                                                -
                                                766 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                767 * @param userData Optional value passed to the callback.
                                                -
                                                768 *
                                                -
                                                769 * @returns true if the command was sent, false otherwise.
                                                -
                                                770 */
                                                -
                                                771 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                772
                                                -
                                                773 /**
                                                -
                                                774 * @brief Requests the firmware version of the sensor.
                                                -
                                                775 *
                                                -
                                                776 * Populates the firmware string when the ACK response arrives.
                                                -
                                                777 *
                                                -
                                                778 * @note Requires config mode. Will be managed automatically.
                                                -
                                                779 *
                                                -
                                                780 * @param callback Callback fired when firmware info is received.
                                                -
                                                781 * @param userData Optional value passed to the callback.
                                                -
                                                782 *
                                                -
                                                783 * @returns true if the command was sent, false otherwise.
                                                -
                                                784 */
                                                -
                                                785 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                786
                                                -
                                                787 /**
                                                -
                                                788 * @brief Configures the UART baud rate of the sensor.
                                                -
                                                789 *
                                                -
                                                790 * The new baud rate becomes active only after reboot.
                                                -
                                                791 * The ESP32’s Serial interface must also be reconfigured
                                                -
                                                792 * to the new baud rate after reboot.
                                                -
                                                793 *
                                                -
                                                794 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
                                                -
                                                795 * @note Requires config mode. Will be managed automatically.
                                                -
                                                796 * @note If another async command is pending, this call fails.
                                                -
                                                797 * @note After execution, call rebootAsync() to activate changes.
                                                -
                                                798 *
                                                -
                                                799 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
                                                -
                                                800 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                801 * @param userData Optional value passed to the callback.
                                                -
                                                802 *
                                                -
                                                803 * @returns true if the command was sent, false otherwise.
                                                -
                                                804 */
                                                -
                                                805 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                806
                                                -
                                                807 /**
                                                -
                                                808 * @brief Configures the baudrate of the serial port of the sensor.
                                                -
                                                809 *
                                                -
                                                810 * The new baudrate will only become active after a reboot of the sensor.
                                                -
                                                811 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
                                                +
                                                779
                                                +
                                                780 /*---------------------------------------------------------------------------------
                                                +
                                                781 - Native sensor commands
                                                +
                                                782 ---------------------------------------------------------------------------------*/
                                                +
                                                783 /**
                                                +
                                                784 * @brief Requests the current gate parameters from the sensor.
                                                +
                                                785 *
                                                +
                                                786 * Retrieves sensitivities, max gates, and timeout settings,
                                                +
                                                787 * which will be written into configData.
                                                +
                                                788 *
                                                +
                                                789 * @note Requires config mode. The method will manage mode switching if needed.
                                                +
                                                790 * @note If an async command is already pending, the request is rejected.
                                                +
                                                791 *
                                                +
                                                792 * @param callback Callback fired when data is received or on failure.
                                                +
                                                793 * @param userData Optional value passed to the callback.
                                                +
                                                794 *
                                                +
                                                795 * @returns true if the command was sent, false otherwise.
                                                +
                                                796 *
                                                +
                                                797 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                798 * @ingroup LD2410Async_Configuration
                                                +
                                                799 * @ingroup LD2410Async_NativeCommands
                                                +
                                                800 */
                                                +
                                                801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                802
                                                +
                                                803
                                                +
                                                804
                                                +
                                                805 /**
                                                +
                                                806 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
                                                +
                                                807 *
                                                +
                                                808 * This command updates:
                                                +
                                                809 * - Maximum motion detection distance gate (2–8).
                                                +
                                                810 * - Maximum stationary detection distance gate (2–8).
                                                +
                                                811 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
                                                812 *
                                                -
                                                813 * @note If another async command is pending, this call fails.
                                                -
                                                814 * @note After execution, call rebootAsync() to activate changes.
                                                -
                                                815 *
                                                -
                                                816 * @param baudrate A valid baud rate from the Baudrate enum.
                                                -
                                                817 *
                                                -
                                                818 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                819 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                820 *
                                                -
                                                821 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                822 */
                                                -
                                                823 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                824
                                                -
                                                825
                                                -
                                                826 /**
                                                -
                                                827 * @brief Restores factory settings of the sensor.
                                                -
                                                828 *
                                                -
                                                829 * Restored settings only become active after a reboot.
                                                -
                                                830 *
                                                -
                                                831 * @note Requires config mode. Will be managed automatically.
                                                -
                                                832 * @note After execution, call rebootAsync() to activate changes.
                                                -
                                                833 *
                                                -
                                                834 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                835 * @param userData Optional value passed to the callback.
                                                -
                                                836 *
                                                -
                                                837 * @returns true if the command was sent, false otherwise.
                                                -
                                                838 */
                                                -
                                                839 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                840
                                                -
                                                841 /**
                                                -
                                                842 * @brief Reboots the sensor.
                                                -
                                                843 *
                                                -
                                                844 * After reboot, the sensor stops responding for a few seconds.
                                                -
                                                845 * Config and engineering mode are reset.
                                                -
                                                846 *
                                                -
                                                847 * @note The reboot of the sensor takes place after the ACK has been sent.
                                                -
                                                848 *
                                                -
                                                849 * @param callback Callback fired when ACK is received or on failure.
                                                -
                                                850 * @param userData Optional value passed to the callback.
                                                -
                                                851 *
                                                -
                                                852 * @returns true if the command was sent, false otherwise.
                                                -
                                                853 */
                                                -
                                                854 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                813 * @note Requires config mode to be enabled. The method will internally
                                                +
                                                814 * enable/disable config mode if necessary.
                                                +
                                                815 * @note If another async command is pending, this call fails.
                                                +
                                                816 *
                                                +
                                                817 * @param maxMovingGate Furthest gate used for motion detection (2–8).
                                                +
                                                818 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
                                                +
                                                819 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
                                                +
                                                820 * @param callback Callback fired when ACK is received or on failure/timeout.
                                                +
                                                821 * @param userData Optional value passed to the callback.
                                                +
                                                822 *
                                                +
                                                823 * @returns true if the command was sent, false otherwise (busy state or invalid values).
                                                +
                                                824 *
                                                +
                                                825 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                826 * @ingroup LD2410Async_Configuration
                                                +
                                                827 * @ingroup LD2410Async_NativeCommands
                                                +
                                                828 */
                                                +
                                                829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                830
                                                +
                                                831
                                                +
                                                832 /**
                                                +
                                                833 * @brief Configures sensitivity thresholds for all gates at once.
                                                +
                                                834 *
                                                +
                                                835 * A sequence of commands will be sent, one for each gate.
                                                +
                                                836 * Threshold values are automatically clamped to 0–100.
                                                +
                                                837 *
                                                +
                                                838 * @note Requires config mode. Will be managed automatically.
                                                +
                                                839 * @note If another async command is pending, this call fails.
                                                +
                                                840 *
                                                +
                                                841 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
                                                +
                                                842 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
                                                +
                                                843 * @param callback Callback fired when all updates are acknowledged or on failure.
                                                +
                                                844 * @param userData Optional value passed to the callback.
                                                +
                                                845 *
                                                +
                                                846 * @returns true if the sequence was started, false otherwise.
                                                +
                                                847 *
                                                +
                                                848 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                849 * @ingroup LD2410Async_Configuration
                                                +
                                                850 * @ingroup LD2410Async_NativeCommands
                                                +
                                                851 */
                                                +
                                                852
                                                +
                                                853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                854
                                                855
                                                856 /**
                                                -
                                                857 * @brief Enables bluetooth
                                                +
                                                857 * @brief Configures sensitivity thresholds for a single gate.
                                                858 *
                                                -
                                                859 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                860 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                859 * Updates both moving and stationary thresholds for the given gate index.
                                                +
                                                860 * If the gate index is greater than 8, all gates are updated instead.
                                                861 *
                                                -
                                                862 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                863 */
                                                -
                                                864 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                865
                                                -
                                                866 /**
                                                -
                                                867 * @brief Disables bluetooth
                                                -
                                                868 *
                                                -
                                                869 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                870 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                871 *
                                                -
                                                872 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                873 */
                                                -
                                                874 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                875
                                                -
                                                876 /**
                                                -
                                                877 * @brief Requests the bluetooth mac address
                                                -
                                                878 *
                                                -
                                                879 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
                                                -
                                                880 *
                                                -
                                                881 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                882 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                883 *
                                                -
                                                884 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                885 */
                                                -
                                                886 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                887
                                                -
                                                888 /**
                                                -
                                                889 * @brief Sets the password for bluetooth access to the sensor.
                                                -
                                                890 *
                                                -
                                                891 * @param password New bluetooth password. Max 6. chars.
                                                -
                                                892 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                893 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                894 *
                                                -
                                                895 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                896 */
                                                -
                                                897 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                898
                                                -
                                                899 /**
                                                -
                                                900 * @brief Sets the password for bluetooth access to the sensor.
                                                -
                                                901 *
                                                -
                                                902 * @param password New bluetooth password. Max 6. chars.
                                                -
                                                903 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                904 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                905 *
                                                -
                                                906 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                907 */
                                                -
                                                908 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                909
                                                -
                                                910 /**
                                                -
                                                911 * @brief Resets the password for bluetooth access to the default value (HiLink)
                                                -
                                                912 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                -
                                                913 * @param userData Optional value that will be passed to the callback function.
                                                -
                                                914 *
                                                -
                                                915 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                -
                                                916 */
                                                -
                                                917 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                918
                                                -
                                                919 /**
                                                -
                                                920 * @brief Configures the distance resolution of the radar.
                                                -
                                                921 *
                                                -
                                                922 * The distance resolution defines the size of each distance gate
                                                -
                                                923 * and the maximum detection range:
                                                -
                                                924 * - RESOLUTION_75CM → longer range, coarser detail.
                                                -
                                                925 * - RESOLUTION_20CM → shorter range, finer detail.
                                                -
                                                926 *
                                                -
                                                927 * @note Requires config mode. Will be managed automatically.
                                                -
                                                928 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                -
                                                929 * @note Fails if another async command is pending.
                                                -
                                                930 *
                                                -
                                                931 * @param distanceResolution Value from the DistanceResolution enum.
                                                -
                                                932 * Must not be NOT_SET.
                                                -
                                                933 * @param callback Function pointer with signature:
                                                -
                                                934 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                935 * Fired when the ACK is received or on failure/timeout.
                                                -
                                                936 * @param userData Optional value passed to the callback.
                                                -
                                                937 *
                                                -
                                                938 * @returns true if the command was sent, false if invalid parameters
                                                -
                                                939 * or the library is busy.
                                                -
                                                940 */
                                                -
                                                941 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                942
                                                -
                                                943 /**
                                                -
                                                944 * @brief Configures the distance resolution explicitly to 75 cm per gate.
                                                -
                                                945 *
                                                -
                                                946 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
                                                +
                                                862 * @note Requires config mode. Will be managed automatically.
                                                +
                                                863 * @note If another async command is pending, this call fails.
                                                +
                                                864 *
                                                +
                                                865 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
                                                +
                                                866 * @param movingThreshold Sensitivity for moving targets (0–100).
                                                +
                                                867 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
                                                +
                                                868 * @param callback Callback fired when ACK is received or on failure.
                                                +
                                                869 * @param userData Optional value passed to the callback.
                                                +
                                                870 *
                                                +
                                                871 * @returns true if the command was sent, false otherwise.
                                                +
                                                872 *
                                                +
                                                873 *
                                                +
                                                874 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                875 * @ingroup LD2410Async_Configuration
                                                +
                                                876 * @ingroup LD2410Async_NativeCommands
                                                +
                                                877 */
                                                +
                                                878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                879
                                                +
                                                880 /**
                                                +
                                                881 * @brief Requests the firmware version of the sensor.
                                                +
                                                882 *
                                                +
                                                883 * Populates the firmware string when the ACK response arrives.
                                                +
                                                884 *
                                                +
                                                885 * @note Requires config mode. Will be managed automatically.
                                                +
                                                886 *
                                                +
                                                887 * @param callback Callback fired when firmware info is received.
                                                +
                                                888 * @param userData Optional value passed to the callback.
                                                +
                                                889 *
                                                +
                                                890 * @returns true if the command was sent, false otherwise.
                                                +
                                                891 *
                                                +
                                                892 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                893 * @ingroup LD2410Async_StaticData
                                                +
                                                894 * @ingroup LD2410Async_NativeCommands
                                                +
                                                895 */
                                                +
                                                896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                897
                                                +
                                                898 /**
                                                +
                                                899 * @brief Configures the UART baud rate of the sensor.
                                                +
                                                900 *
                                                +
                                                901 * The new baud rate becomes active only after reboot.
                                                +
                                                902 * The ESP32’s Serial interface must also be reconfigured
                                                +
                                                903 * to the new baud rate after reboot.
                                                +
                                                904 *
                                                +
                                                905 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
                                                +
                                                906 * @note Requires config mode. Will be managed automatically.
                                                +
                                                907 * @note If another async command is pending, this call fails.
                                                +
                                                908 * @note After execution, call rebootAsync() to activate changes.
                                                +
                                                909 *
                                                +
                                                910 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
                                                +
                                                911 * @param callback Callback fired when ACK is received or on failure.
                                                +
                                                912 * @param userData Optional value passed to the callback.
                                                +
                                                913 *
                                                +
                                                914 * @returns true if the command was sent, false otherwise.
                                                +
                                                915 *
                                                +
                                                916 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                917 * @ingroup LD2410Async_Configuration
                                                +
                                                918 * @ingroup LD2410Async_NativeCommands
                                                +
                                                919 */
                                                +
                                                920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                921
                                                +
                                                922 /**
                                                +
                                                923 * @brief Configures the baudrate of the serial port of the sensor.
                                                +
                                                924 *
                                                +
                                                925 * The new baudrate will only become active after a reboot of the sensor.
                                                +
                                                926 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
                                                +
                                                927 *
                                                +
                                                928 * @note If another async command is pending, this call fails.
                                                +
                                                929 * @note After execution, call rebootAsync() to activate changes.
                                                +
                                                930 *
                                                +
                                                931 * @param baudrate A valid baud rate from the Baudrate enum.
                                                +
                                                932 *
                                                +
                                                933 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                934 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                935 *
                                                +
                                                936 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                937 *
                                                +
                                                938 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                939 * @ingroup LD2410Async_Configuration
                                                +
                                                940 * @ingroup LD2410Async_NativeCommands
                                                +
                                                941 */
                                                +
                                                942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                943
                                                +
                                                944
                                                +
                                                945 /**
                                                +
                                                946 * @brief Restores factory settings of the sensor.
                                                947 *
                                                -
                                                948 * @note Requires config mode. Will be managed automatically.
                                                -
                                                949 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                -
                                                950 * @note Fails if another async command is pending.
                                                -
                                                951 *
                                                -
                                                952 * @param callback Function pointer with signature:
                                                -
                                                953 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                948 * Restored settings only become active after a reboot.
                                                +
                                                949 *
                                                +
                                                950 * @note Requires config mode. Will be managed automatically.
                                                +
                                                951 * @note After execution, call rebootAsync() to activate changes.
                                                +
                                                952 *
                                                +
                                                953 * @param callback Callback fired when ACK is received or on failure.
                                                954 * @param userData Optional value passed to the callback.
                                                955 *
                                                956 * @returns true if the command was sent, false otherwise.
                                                -
                                                957 */
                                                -
                                                958 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                959
                                                -
                                                960 /**
                                                -
                                                961 * @brief Configures the distance resolution explicitly to 20 cm per gate.
                                                -
                                                962 *
                                                -
                                                963 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
                                                -
                                                964 *
                                                -
                                                965 * @note Requires config mode. Will be managed automatically.
                                                -
                                                966 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                -
                                                967 * @note Fails if another async command is pending.
                                                -
                                                968 *
                                                -
                                                969 * @param callback Function pointer with signature:
                                                -
                                                970 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                971 * @param userData Optional value passed to the callback.
                                                -
                                                972 *
                                                -
                                                973 * @returns true if the command was sent, false otherwise.
                                                -
                                                974 */
                                                -
                                                975 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                976
                                                -
                                                977 /**
                                                -
                                                978 * @brief Requests the current distance resolution setting from the sensor.
                                                -
                                                979 *
                                                -
                                                980 * The result is written into configData.distanceResolution.
                                                -
                                                981 *
                                                -
                                                982 * @note Requires config mode. Will be managed automatically.
                                                -
                                                983 *
                                                -
                                                984 * @param callback Function pointer with signature:
                                                -
                                                985 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                986 * @param userData Optional value passed to the callback.
                                                -
                                                987 *
                                                -
                                                988 * @returns true if the command was sent, false otherwise.
                                                -
                                                989 */
                                                -
                                                990 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                991
                                                -
                                                992 /**
                                                -
                                                993 * @brief Configures the auxiliary control parameters (light and output pin).
                                                -
                                                994 *
                                                -
                                                995 * This configures how the OUT pin behaves depending on light levels
                                                -
                                                996 * and presence detection. Typical use cases include controlling
                                                -
                                                997 * an external lamp or relay.
                                                -
                                                998 *
                                                -
                                                999 * @note Requires config mode. Will be managed automatically.
                                                -
                                                1000 * @note Both enums must be set to valid values (not NOT_SET).
                                                -
                                                1001 * @note Fails if another async command is pending.
                                                -
                                                1002 *
                                                -
                                                1003 * @param lightControl Light control behavior (see LightControl enum).
                                                -
                                                1004 * @param lightThreshold Threshold (0–255) used for light-based switching.
                                                -
                                                1005 * @param outputControl Output pin logic configuration (see OutputControl enum).
                                                -
                                                1006 * @param callback Function pointer with signature:
                                                -
                                                1007 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1008 * Fired when ACK is received or on failure/timeout.
                                                -
                                                1009 * @param userData Optional value passed to the callback.
                                                -
                                                1010 *
                                                -
                                                1011 * @returns true if the command was sent, false otherwise.
                                                -
                                                1012 */
                                                -
                                                1013 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1014
                                                -
                                                1015 /**
                                                -
                                                1016 * @brief Requests the current auxiliary control settings.
                                                -
                                                1017 *
                                                -
                                                1018 * Fills configData.lightControl, configData.lightThreshold,
                                                -
                                                1019 * and configData.outputControl.
                                                -
                                                1020 *
                                                -
                                                1021 * @note Requires config mode. Will be managed automatically.
                                                -
                                                1022 *
                                                -
                                                1023 * @param callback Function pointer with signature:
                                                -
                                                1024 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1025 * Fired when ACK is received or on failure/timeout.
                                                -
                                                1026 * @param userData Optional value passed to the callback.
                                                -
                                                1027 *
                                                -
                                                1028 * @returns true if the command was sent, false otherwise.
                                                -
                                                1029 */
                                                -
                                                1030 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1031
                                                -
                                                1032
                                                -
                                                1033 /**
                                                -
                                                1034 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
                                                -
                                                1035 *
                                                -
                                                1036 * Auto-config lets the radar adjust its internal thresholds and
                                                -
                                                1037 * sensitivities for the current environment. This can take several
                                                -
                                                1038 * seconds to complete and results in updated sensitivity values.
                                                -
                                                1039 *
                                                -
                                                1040 * The progress and result can be checked with requestAutoConfigStatusAsync().
                                                -
                                                1041 *
                                                -
                                                1042 * @note Requires config mode. This method will manage entering and
                                                -
                                                1043 * exiting config mode automatically.
                                                -
                                                1044 * @note Auto-config temporarily suspends normal detection reporting.
                                                -
                                                1045 *
                                                -
                                                1046 * ## Example: Run auto-config
                                                -
                                                1047 * @code
                                                -
                                                1048 * radar.beginAutoConfigAsync([](LD2410Async* sender,
                                                -
                                                1049 * AsyncCommandResult result,
                                                -
                                                1050 * byte) {
                                                -
                                                1051 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                1052 * Serial.println("Auto-config started.");
                                                -
                                                1053 * } else {
                                                -
                                                1054 * Serial.println("Failed to start auto-config.");
                                                -
                                                1055 * }
                                                -
                                                1056 * });
                                                -
                                                1057 * @endcode
                                                -
                                                1058 *
                                                -
                                                1059 * ## Do:
                                                -
                                                1060 * - Use in new environments to optimize detection performance.
                                                -
                                                1061 * - Query status afterwards with requestAutoConfigStatusAsync().
                                                -
                                                1062 *
                                                -
                                                1063 * ## Don’t:
                                                -
                                                1064 * - Expect instant results — the sensor needs time to complete the process.
                                                -
                                                1065 *
                                                -
                                                1066 * @param callback Callback with signature:
                                                -
                                                1067 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1068 * Fired when the command is acknowledged or on failure/timeout.
                                                -
                                                1069 * @param userData Optional value passed to the callback.
                                                -
                                                1070 *
                                                -
                                                1071 * @returns true if the command was sent, false otherwise.
                                                -
                                                1072 */
                                                -
                                                1073 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1074
                                                -
                                                1075
                                                -
                                                1076 /**
                                                -
                                                1077 * @brief Requests the current status of the auto-config routine.
                                                -
                                                1078 *
                                                -
                                                1079 * The status is written into the member variable autoConfigStatus:
                                                -
                                                1080 * - NOT_IN_PROGRESS → no auto-config running.
                                                -
                                                1081 * - IN_PROGRESS → auto-config is currently running.
                                                -
                                                1082 * - COMPLETED → auto-config finished (success or failure).
                                                -
                                                1083 *
                                                -
                                                1084 * @note Requires config mode. This method will manage mode switching automatically.
                                                -
                                                1085 * @note If another async command is already pending, this call fails.
                                                -
                                                1086 *
                                                -
                                                1087 * ## Example: Check auto-config status
                                                -
                                                1088 * @code
                                                -
                                                1089 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
                                                -
                                                1090 * AsyncCommandResult result,
                                                -
                                                1091 * byte) {
                                                -
                                                1092 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                1093 * switch (sender->autoConfigStatus) {
                                                -
                                                1094 * case AutoConfigStatus::NOT_IN_PROGRESS:
                                                -
                                                1095 * Serial.println("Auto-config not running.");
                                                -
                                                1096 * break;
                                                -
                                                1097 * case AutoConfigStatus::IN_PROGRESS:
                                                -
                                                1098 * Serial.println("Auto-config in progress...");
                                                -
                                                1099 * break;
                                                -
                                                1100 * case AutoConfigStatus::COMPLETED:
                                                -
                                                1101 * Serial.println("Auto-config completed.");
                                                -
                                                1102 * break;
                                                -
                                                1103 * default:
                                                -
                                                1104 * Serial.println("Unknown auto-config status.");
                                                -
                                                1105 * }
                                                -
                                                1106 * } else {
                                                -
                                                1107 * Serial.println("Failed to request auto-config status.");
                                                -
                                                1108 * }
                                                -
                                                1109 * });
                                                -
                                                1110 * @endcode
                                                -
                                                1111 *
                                                -
                                                1112 * ## Do:
                                                -
                                                1113 * - Use this after beginAutoConfigAsync() to track progress.
                                                -
                                                1114 * - Use autoConfigStatus for decision-making in your logic.
                                                -
                                                1115 *
                                                -
                                                1116 * ## Don’t:
                                                -
                                                1117 * - Assume COMPLETED means success — thresholds should still be verified.
                                                -
                                                1118 *
                                                -
                                                1119 * @param callback Callback with signature:
                                                -
                                                1120 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1121 * Fired when the sensor replies or on failure/timeout.
                                                -
                                                1122 * @param userData Optional value passed to the callback.
                                                -
                                                1123 *
                                                -
                                                1124 * @returns true if the command was sent, false otherwise.
                                                -
                                                1125 */
                                                -
                                                1126 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1127
                                                -
                                                1128
                                                -
                                                1129
                                                -
                                                1130 /*---------------------------------------------------------------------------------
                                                -
                                                1131 - High level commands
                                                -
                                                1132 ---------------------------------------------------------------------------------*/
                                                -
                                                1133 // High level commands typically encapsulate several native commands.
                                                -
                                                1134 // They provide a more consistent access to the sensors configuration,
                                                -
                                                1135 // e.g. for reading all config data 3 native commands are necessary,
                                                -
                                                1136 // to update the same data up to 12 native commands may be required.
                                                -
                                                1137 //The highlevel commands encapsulate both situation into a single command
                                                -
                                                1138
                                                -
                                                1139 /**
                                                -
                                                1140 * @brief Requests all configuration settings from the sensor.
                                                -
                                                1141 *
                                                -
                                                1142 * This triggers a sequence of queries that retrieves and updates:
                                                -
                                                1143 * - Gate parameters (sensitivities, max gates, timeout).
                                                -
                                                1144 * - Distance resolution setting.
                                                -
                                                1145 * - Auxiliary light/output control settings.
                                                -
                                                1146 *
                                                -
                                                1147 * The results are stored in configData, and the
                                                -
                                                1148 * registerConfigUpdateReceivedCallback() is invoked after completion.
                                                -
                                                1149 *
                                                -
                                                1150 * @note This is a high-level method that involves multiple commands.
                                                -
                                                1151 * @note Requires config mode. This method will manage mode switching automatically.
                                                -
                                                1152 * @note If another async command is already pending, the request fails.
                                                -
                                                1153 *
                                                -
                                                1154 * ## Example: Refresh config data
                                                -
                                                1155 * @code
                                                -
                                                1156 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
                                                -
                                                1157 * AsyncCommandResult result,
                                                -
                                                1158 * byte) {
                                                -
                                                1159 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                1160 * Serial.println("All config data refreshed:");
                                                -
                                                1161 * sender->getConfigDataRef().print();
                                                -
                                                1162 * }
                                                -
                                                1163 * });
                                                -
                                                1164 * @endcode
                                                -
                                                1165 *
                                                -
                                                1166 * ## Do:
                                                -
                                                1167 * - Use this after connecting to ensure configData is fully populated.
                                                -
                                                1168 * - Call before modifying config if you’re unsure of current values.
                                                -
                                                1169 *
                                                -
                                                1170 * ## Don’t:
                                                -
                                                1171 * - Expect it to succeed if another async command is still running.
                                                -
                                                1172 *
                                                -
                                                1173 * @param callback Callback with signature:
                                                -
                                                1174 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1175 * Fired when all config data has been received or on failure.
                                                -
                                                1176 * @param userData Optional value passed to the callback.
                                                -
                                                1177 *
                                                -
                                                1178 * @returns true if the command was sent, false otherwise.
                                                -
                                                1179 */
                                                -
                                                1180 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1181
                                                -
                                                1182
                                                -
                                                1183 /**
                                                -
                                                1184 * @brief Requests all static information from the sensor.
                                                -
                                                1185 *
                                                -
                                                1186 * This includes:
                                                -
                                                1187 * - Firmware version string.
                                                -
                                                1188 * - Bluetooth MAC address (numeric and string form).
                                                -
                                                1189 *
                                                -
                                                1190 * The values are written into the public members `firmware`, `mac`,
                                                -
                                                1191 * and `macString`.
                                                -
                                                1192 *
                                                -
                                                1193 * @note This is a high-level method that involves multiple commands.
                                                -
                                                1194 * @note Requires config mode. Managed automatically by this method.
                                                -
                                                1195 * @note If another async command is already pending, the request fails.
                                                -
                                                1196 *
                                                -
                                                1197 * ## Example: Retrieve firmware and MAC
                                                -
                                                1198 * @code
                                                -
                                                1199 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
                                                -
                                                1200 * AsyncCommandResult result,
                                                -
                                                1201 * byte) {
                                                -
                                                1202 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                1203 * Serial.print("Firmware: ");
                                                -
                                                1204 * Serial.println(sender->firmware);
                                                -
                                                1205 *
                                                -
                                                1206 * Serial.print("MAC: ");
                                                -
                                                1207 * Serial.println(sender->macString);
                                                -
                                                1208 * }
                                                -
                                                1209 * });
                                                -
                                                1210 * @endcode
                                                -
                                                1211 *
                                                -
                                                1212 * ## Do:
                                                -
                                                1213 * - Use after initialization to log firmware version and MAC.
                                                -
                                                1214 * - Useful for debugging or inventory identification.
                                                -
                                                1215 *
                                                -
                                                1216 * ## Don’t:
                                                -
                                                1217 * - Expect frequently changing data — this is static information.
                                                -
                                                1218 *
                                                -
                                                1219 * @param callback Callback with signature:
                                                -
                                                1220 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                -
                                                1221 * Fired when static data is received or on failure.
                                                -
                                                1222 * @param userData Optional value passed to the callback.
                                                -
                                                1223 *
                                                -
                                                1224 * @returns true if the command was sent, false otherwise.
                                                -
                                                1225 */
                                                -
                                                1226 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1227
                                                -
                                                1228
                                                -
                                                1229
                                                -
                                                1230 /**
                                                -
                                                1231 * @brief Applies a full ConfigData struct to the LD2410.
                                                -
                                                1232 *
                                                -
                                                1233 * If writeAllConfigData is true, the method will first fetch the current config,
                                                -
                                                1234 * compare it with the provide Config data and then create a command sequence that
                                                -
                                                1235 * will only update the changes config values.
                                                -
                                                1236 * If writeAllConfigData is false, the method will write all values in the provided
                                                -
                                                1237 * ConfigData to the sensor, regardless of whether they differ from the current config.
                                                -
                                                1238 *
                                                -
                                                1239 * @note This is a high-level method that involves multiple commands (up to 18).
                                                -
                                                1240 * @note Requires config mode. This method will manage entering and
                                                -
                                                1241 * exiting config mode automatically (if config mode is not already active).
                                                -
                                                1242 * @note If another async command is already pending, the command fails.
                                                -
                                                1243 * @note Any members of ConfigData that are left at invalid values
                                                -
                                                1244 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
                                                -
                                                1245 *
                                                -
                                                1246 * ## Example: Clone, modify, and apply config
                                                -
                                                1247 * @code
                                                -
                                                1248 * ConfigData cfg = radar.getConfigData(); // clone current config
                                                -
                                                1249 * cfg.noOneTimeout = 120; // change timeout
                                                -
                                                1250 * cfg.distanceGateMotionSensitivity[2] = 75;
                                                -
                                                1251 *
                                                -
                                                1252 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
                                                -
                                                1253 * AsyncCommandResult result,
                                                -
                                                1254 * byte) {
                                                -
                                                1255 * if (result == AsyncCommandResult::SUCCESS) {
                                                -
                                                1256 * Serial.println("All config applied successfully!");
                                                -
                                                1257 * }
                                                -
                                                1258 * });
                                                -
                                                1259 * @endcode
                                                -
                                                1260 *
                                                -
                                                1261 * ## Do:
                                                -
                                                1262 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
                                                -
                                                1263 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
                                                -
                                                1264 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
                                                -
                                                1265 *
                                                -
                                                1266 * ## Don’t:
                                                -
                                                1267 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
                                                -
                                                1268 * This generates unnecessary wear on the sensors memory.
                                                -
                                                1269 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
                                                -
                                                1270
                                                -
                                                1271 *
                                                -
                                                1272 * @param configToWrite The configuration data to be applied.
                                                -
                                                1273 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
                                                -
                                                1274 * @param callback Function with signature:
                                                -
                                                1275 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
                                                -
                                                1276 * executed when the sequence finishes (success/fail/timeout/cancel).
                                                -
                                                1277 * @param userData Optional value passed to the callback.
                                                -
                                                1278 *
                                                -
                                                1279 * @returns true if the command sequence has been started, false otherwise.
                                                -
                                                1280 */
                                                -
                                                1281 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1282
                                                -
                                                1283
                                                -
                                                1284
                                                -
                                                1285private:
                                                -
                                                1286 // ============================================================================
                                                -
                                                1287 // Low-level serial interface
                                                -
                                                1288 // ============================================================================
                                                -
                                                1289
                                                -
                                                1290 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
                                                -
                                                1291 Stream* sensor;
                                                -
                                                1292
                                                -
                                                1293
                                                -
                                                1294 // ============================================================================
                                                -
                                                1295 // Frame parsing state machine
                                                -
                                                1296 // ============================================================================
                                                -
                                                1297
                                                -
                                                1298 /// States used when parsing incoming frames from the sensor
                                                -
                                                1299 enum ReadFrameState {
                                                -
                                                1300 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
                                                -
                                                1301 ACK_HEADER, ///< Parsing header of an ACK frame
                                                -
                                                1302 DATA_HEADER, ///< Parsing header of a DATA frame
                                                -
                                                1303 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
                                                -
                                                1304 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
                                                -
                                                1305 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
                                                -
                                                1306 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
                                                -
                                                1307 };
                                                -
                                                1308
                                                -
                                                1309 /// Result type when trying to read a frame
                                                -
                                                1310 enum FrameReadResponse {
                                                -
                                                1311 FAIL = 0, ///< Frame was invalid or incomplete
                                                -
                                                1312 ACK, ///< A valid ACK frame was received
                                                -
                                                1313 DATA ///< A valid DATA frame was received
                                                -
                                                1314 };
                                                +
                                                957 *
                                                +
                                                958 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                959 * @ingroup LD2410Async_Configuration
                                                +
                                                960 * @ingroup LD2410Async_NativeCommands
                                                +
                                                961 */
                                                +
                                                962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                963
                                                +
                                                964 /**
                                                +
                                                965 * @brief Reboots the sensor.
                                                +
                                                966 *
                                                +
                                                967 * After reboot, the sensor stops responding for a few seconds.
                                                +
                                                968 * Config and engineering mode are reset.
                                                +
                                                969 *
                                                +
                                                970 * @note The reboot of the sensor takes place after the ACK has been sent.
                                                +
                                                971 *
                                                +
                                                972 * @param callback Callback fired when ACK is received or on failure.
                                                +
                                                973 * @param userData Optional value passed to the callback.
                                                +
                                                974 *
                                                +
                                                975 * @returns true if the command was sent, false otherwise.
                                                +
                                                976 *
                                                +
                                                977 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                978 * @ingroup LD2410Async_NativeCommands
                                                +
                                                979 */
                                                +
                                                980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                981
                                                +
                                                982 /**
                                                +
                                                983 * @brief Enables bluetooth
                                                +
                                                984 *
                                                +
                                                985 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                986 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                987 *
                                                +
                                                988 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                989 *
                                                +
                                                990 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                991 * @ingroup LD2410Async_Configuration
                                                +
                                                992 * @ingroup LD2410Async_Bluetooth
                                                +
                                                993 * @ingroup LD2410Async_NativeCommands
                                                +
                                                994 */
                                                +
                                                995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                996
                                                +
                                                997 /**
                                                +
                                                998 * @brief Disables bluetooth
                                                +
                                                999 *
                                                +
                                                1000 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                1001 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                1002 *
                                                +
                                                1003 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                1004 *
                                                +
                                                1005 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1006 * @ingroup LD2410Async_Configuration
                                                +
                                                1007 * @ingroup LD2410Async_Bluetooth
                                                +
                                                1008 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1009 */
                                                +
                                                1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1011
                                                +
                                                1012 /**
                                                +
                                                1013 * @brief Requests the bluetooth mac address
                                                +
                                                1014 *
                                                +
                                                1015 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
                                                +
                                                1016 *
                                                +
                                                1017 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                1018 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                1019 *
                                                +
                                                1020 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                1021 *
                                                +
                                                1022 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1023 * @ingroup LD2410Async_Bluetooth
                                                +
                                                1024 * @ingroup LD2410Async_StaticData
                                                +
                                                1025 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1026 */
                                                +
                                                1027 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1028
                                                +
                                                1029 /**
                                                +
                                                1030 * @brief Sets the password for bluetooth access to the sensor.
                                                +
                                                1031 *
                                                +
                                                1032 * @param password New bluetooth password. Max 6. chars.
                                                +
                                                1033 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                1034 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                1035 *
                                                +
                                                1036 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                1037 *
                                                +
                                                1038 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1039 * @ingroup LD2410Async_Configuration
                                                +
                                                1040 * @ingroup LD2410Async_Bluetooth
                                                +
                                                1041 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1042 */
                                                +
                                                1043 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1044
                                                +
                                                1045 /**
                                                +
                                                1046 * @brief Sets the password for bluetooth access to the sensor.
                                                +
                                                1047 *
                                                +
                                                1048 * @param password New bluetooth password. Max 6. chars.
                                                +
                                                1049 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                1050 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                1051 *
                                                +
                                                1052 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                1053 *
                                                +
                                                1054 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1055 * @ingroup LD2410Async_Configuration
                                                +
                                                1056 * @ingroup LD2410Async_Bluetooth
                                                +
                                                1057 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1058 */
                                                +
                                                1059 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1060
                                                +
                                                1061 /**
                                                +
                                                1062 * @brief Resets the password for bluetooth access to the default value (HiLink)
                                                +
                                                1063 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
                                                +
                                                1064 * @param userData Optional value that will be passed to the callback function.
                                                +
                                                1065 *
                                                +
                                                1066 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
                                                +
                                                1067 *
                                                +
                                                1068 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1069 * @ingroup LD2410Async_Configuration
                                                +
                                                1070 * @ingroup LD2410Async_Bluetooth
                                                +
                                                1071 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1072 */
                                                +
                                                1073 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1074
                                                +
                                                1075 /**
                                                +
                                                1076 * @brief Configures the distance resolution of the radar.
                                                +
                                                1077 *
                                                +
                                                1078 * The distance resolution defines the size of each distance gate
                                                +
                                                1079 * and the maximum detection range:
                                                +
                                                1080 * - RESOLUTION_75CM → longer range, coarser detail.
                                                +
                                                1081 * - RESOLUTION_20CM → shorter range, finer detail.
                                                +
                                                1082 *
                                                +
                                                1083 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1084 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                +
                                                1085 * @note Fails if another async command is pending.
                                                +
                                                1086 *
                                                +
                                                1087 * @param distanceResolution Value from the DistanceResolution enum.
                                                +
                                                1088 * Must not be NOT_SET.
                                                +
                                                1089 * @param callback Function pointer with signature:
                                                +
                                                1090 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1091 * Fired when the ACK is received or on failure/timeout.
                                                +
                                                1092 * @param userData Optional value passed to the callback.
                                                +
                                                1093 *
                                                +
                                                1094 * @returns true if the command was sent, false if invalid parameters
                                                +
                                                1095 * or the library is busy.
                                                +
                                                1096 *
                                                +
                                                1097 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1098 * @ingroup LD2410Async_Configuration
                                                +
                                                1099 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1100 */
                                                +
                                                1101 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1102
                                                +
                                                1103 /**
                                                +
                                                1104 * @brief Configures the distance resolution explicitly to 75 cm per gate.
                                                +
                                                1105 *
                                                +
                                                1106 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
                                                +
                                                1107 *
                                                +
                                                1108 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1109 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                +
                                                1110 * @note Fails if another async command is pending.
                                                +
                                                1111 *
                                                +
                                                1112 * @param callback Function pointer with signature:
                                                +
                                                1113 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1114 * @param userData Optional value passed to the callback.
                                                +
                                                1115 *
                                                +
                                                1116 * @returns true if the command was sent, false otherwise.
                                                +
                                                1117 *
                                                +
                                                1118 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1119 * @ingroup LD2410Async_Configuration
                                                +
                                                1120 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1121 */
                                                +
                                                1122 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1123
                                                +
                                                1124 /**
                                                +
                                                1125 * @brief Configures the distance resolution explicitly to 20 cm per gate.
                                                +
                                                1126 *
                                                +
                                                1127 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
                                                +
                                                1128 *
                                                +
                                                1129 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1130 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
                                                +
                                                1131 * @note Fails if another async command is pending.
                                                +
                                                1132 *
                                                +
                                                1133 * @param callback Function pointer with signature:
                                                +
                                                1134 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1135 * @param userData Optional value passed to the callback.
                                                +
                                                1136 *
                                                +
                                                1137 * @returns true if the command was sent, false otherwise.
                                                +
                                                1138 *
                                                +
                                                1139 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1140 * @ingroup LD2410Async_Configuration
                                                +
                                                1141 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1142 */
                                                +
                                                1143 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1144
                                                +
                                                1145 /**
                                                +
                                                1146 * @brief Requests the current distance resolution setting from the sensor.
                                                +
                                                1147 *
                                                +
                                                1148 * The result is written into configData.distanceResolution.
                                                +
                                                1149 *
                                                +
                                                1150 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1151 *
                                                +
                                                1152 * @param callback Function pointer with signature:
                                                +
                                                1153 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1154 * @param userData Optional value passed to the callback.
                                                +
                                                1155 *
                                                +
                                                1156 * @returns true if the command was sent, false otherwise.
                                                +
                                                1157 *
                                                +
                                                1158 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1159 * @ingroup LD2410Async_Configuration
                                                +
                                                1160 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1161 */
                                                +
                                                1162 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1163
                                                +
                                                1164 /**
                                                +
                                                1165 * @brief Configures the auxiliary control parameters (light and output pin).
                                                +
                                                1166 *
                                                +
                                                1167 * This configures how the OUT pin behaves depending on light levels
                                                +
                                                1168 * and presence detection. Typical use cases include controlling
                                                +
                                                1169 * an external lamp or relay.
                                                +
                                                1170 *
                                                +
                                                1171 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1172 * @note Both enums must be set to valid values (not NOT_SET).
                                                +
                                                1173 * @note Fails if another async command is pending.
                                                +
                                                1174 *
                                                +
                                                1175 * @param lightControl Light control behavior (see LightControl enum).
                                                +
                                                1176 * @param lightThreshold Threshold (0–255) used for light-based switching.
                                                +
                                                1177 * @param outputControl Output pin logic configuration (see OutputControl enum).
                                                +
                                                1178 * @param callback Function pointer with signature:
                                                +
                                                1179 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1180 * Fired when ACK is received or on failure/timeout.
                                                +
                                                1181 * @param userData Optional value passed to the callback.
                                                +
                                                1182 *
                                                +
                                                1183 * @returns true if the command was sent, false otherwise.
                                                +
                                                1184 *
                                                +
                                                1185 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1186 * @ingroup LD2410Async_Configuration
                                                +
                                                1187 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1188 */
                                                +
                                                1189 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1190
                                                +
                                                1191 /**
                                                +
                                                1192 * @brief Requests the current auxiliary control settings.
                                                +
                                                1193 *
                                                +
                                                1194 * Fills configData.lightControl, configData.lightThreshold,
                                                +
                                                1195 * and configData.outputControl.
                                                +
                                                1196 *
                                                +
                                                1197 * @note Requires config mode. Will be managed automatically.
                                                +
                                                1198 *
                                                +
                                                1199 * @param callback Function pointer with signature:
                                                +
                                                1200 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1201 * Fired when ACK is received or on failure/timeout.
                                                +
                                                1202 * @param userData Optional value passed to the callback.
                                                +
                                                1203 *
                                                +
                                                1204 * @returns true if the command was sent, false otherwise.
                                                +
                                                1205 *
                                                +
                                                1206 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1207 * @ingroup LD2410Async_Configuration
                                                +
                                                1208 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1209 */
                                                +
                                                1210 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1211
                                                +
                                                1212
                                                +
                                                1213 /**
                                                +
                                                1214 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
                                                +
                                                1215 *
                                                +
                                                1216 * Auto-config lets the radar adjust its internal thresholds and
                                                +
                                                1217 * sensitivities for the current environment. This can take several
                                                +
                                                1218 * seconds to complete and results in updated sensitivity values.
                                                +
                                                1219 *
                                                +
                                                1220 * The progress and result can be checked with requestAutoConfigStatusAsync().
                                                +
                                                1221 *
                                                +
                                                1222 * @note Requires config mode. This method will manage entering and
                                                +
                                                1223 * exiting config mode automatically.
                                                +
                                                1224 * @note Auto-config temporarily suspends normal detection reporting.
                                                +
                                                1225 *
                                                +
                                                1226 * ## Example: Run auto-config
                                                +
                                                1227 * @code
                                                +
                                                1228 * radar.beginAutoConfigAsync([](LD2410Async* sender,
                                                +
                                                1229 * AsyncCommandResult result,
                                                +
                                                1230 * byte) {
                                                +
                                                1231 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1232 * Serial.println("Auto-config started.");
                                                +
                                                1233 * } else {
                                                +
                                                1234 * Serial.println("Failed to start auto-config.");
                                                +
                                                1235 * }
                                                +
                                                1236 * });
                                                +
                                                1237 * @endcode
                                                +
                                                1238 *
                                                +
                                                1239 * ## Do:
                                                +
                                                1240 * - Use in new environments to optimize detection performance.
                                                +
                                                1241 * - Query status afterwards with requestAutoConfigStatusAsync().
                                                +
                                                1242 *
                                                +
                                                1243 * ## Don’t:
                                                +
                                                1244 * - Expect instant results — the sensor needs time to complete the process.
                                                +
                                                1245 *
                                                +
                                                1246 * @param callback Callback with signature:
                                                +
                                                1247 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1248 * Fired when the command is acknowledged or on failure/timeout.
                                                +
                                                1249 * @param userData Optional value passed to the callback.
                                                +
                                                1250 *
                                                +
                                                1251 * @returns true if the command was sent, false otherwise.
                                                +
                                                1252 *
                                                +
                                                1253 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1254 * @ingroup LD2410Async_Configuration
                                                +
                                                1255 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1256 */
                                                +
                                                1257 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1258
                                                +
                                                1259
                                                +
                                                1260 /**
                                                +
                                                1261 * @brief Requests the current status of the auto-config routine.
                                                +
                                                1262 *
                                                +
                                                1263 * The status is written into the member variable autoConfigStatus:
                                                +
                                                1264 * - NOT_IN_PROGRESS → no auto-config running.
                                                +
                                                1265 * - IN_PROGRESS → auto-config is currently running.
                                                +
                                                1266 * - COMPLETED → auto-config finished (success or failure).
                                                +
                                                1267 *
                                                +
                                                1268 * @note Requires config mode. This method will manage mode switching automatically.
                                                +
                                                1269 * @note If another async command is already pending, this call fails.
                                                +
                                                1270 *
                                                +
                                                1271 * ## Example: Check auto-config status
                                                +
                                                1272 * @code
                                                +
                                                1273 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
                                                +
                                                1274 * AsyncCommandResult result,
                                                +
                                                1275 * byte) {
                                                +
                                                1276 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1277 * switch (sender->autoConfigStatus) {
                                                +
                                                1278 * case AutoConfigStatus::NOT_IN_PROGRESS:
                                                +
                                                1279 * Serial.println("Auto-config not running.");
                                                +
                                                1280 * break;
                                                +
                                                1281 * case AutoConfigStatus::IN_PROGRESS:
                                                +
                                                1282 * Serial.println("Auto-config in progress...");
                                                +
                                                1283 * break;
                                                +
                                                1284 * case AutoConfigStatus::COMPLETED:
                                                +
                                                1285 * Serial.println("Auto-config completed.");
                                                +
                                                1286 * break;
                                                +
                                                1287 * default:
                                                +
                                                1288 * Serial.println("Unknown auto-config status.");
                                                +
                                                1289 * }
                                                +
                                                1290 * } else {
                                                +
                                                1291 * Serial.println("Failed to request auto-config status.");
                                                +
                                                1292 * }
                                                +
                                                1293 * });
                                                +
                                                1294 * @endcode
                                                +
                                                1295 *
                                                +
                                                1296 * ## Do:
                                                +
                                                1297 * - Use this after beginAutoConfigAsync() to track progress.
                                                +
                                                1298 * - Use autoConfigStatus for decision-making in your logic.
                                                +
                                                1299 *
                                                +
                                                1300 * ## Don’t:
                                                +
                                                1301 * - Assume COMPLETED means success — thresholds should still be verified.
                                                +
                                                1302 *
                                                +
                                                1303 * @param callback Callback with signature:
                                                +
                                                1304 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1305 * Fired when the sensor replies or on failure/timeout.
                                                +
                                                1306 * @param userData Optional value passed to the callback.
                                                +
                                                1307 *
                                                +
                                                1308 * @returns true if the command was sent, false otherwise.
                                                +
                                                1309 *
                                                +
                                                1310 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1311 * @ingroup LD2410Async_Configuration
                                                +
                                                1312 * @ingroup LD2410Async_NativeCommands
                                                +
                                                1313 */
                                                +
                                                1314 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
                                                1315
                                                -
                                                1316 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
                                                -
                                                1317 int payloadSize = 0; ///< Expected payload size of current frame
                                                -
                                                1318 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
                                                -
                                                1319
                                                -
                                                1320 /// Extract payload size from the current byte and update state machine
                                                -
                                                1321 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
                                                -
                                                1322
                                                -
                                                1323 /// Read payload bytes until full ACK/DATA frame is assembled
                                                -
                                                1324 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
                                                -
                                                1325
                                                -
                                                1326 /// State machine entry: read incoming frame and return read response
                                                -
                                                1327 FrameReadResponse readFrame();
                                                -
                                                1328
                                                -
                                                1329
                                                -
                                                1330 // ============================================================================
                                                -
                                                1331 // Receive buffer
                                                -
                                                1332 // ============================================================================
                                                -
                                                1333
                                                -
                                                1334 /// Raw buffer for storing incoming bytes
                                                -
                                                1335 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
                                                -
                                                1336
                                                -
                                                1337 /// Current index into receiveBuffer
                                                -
                                                1338 byte receiveBufferIndex = 0;
                                                -
                                                1339
                                                -
                                                1340
                                                -
                                                1341 // ============================================================================
                                                -
                                                1342 // Asynchronous command sequence handling
                                                -
                                                1343 // ============================================================================
                                                -
                                                1344
                                                -
                                                1345 /// Maximum number of commands in one async sequence
                                                -
                                                1346 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
                                                -
                                                1347
                                                -
                                                1348 /// Buffer holding queued commands for sequence execution
                                                -
                                                1349 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
                                                -
                                                1350
                                                -
                                                1351 /// Number of commands currently queued in the sequence buffer
                                                -
                                                1352 byte commandSequenceBufferCount = 0;
                                                -
                                                1353
                                                -
                                                1354 /// Timestamp when the current async sequence started
                                                -
                                                1355 unsigned long executeCommandSequenceStartMs = 0;
                                                -
                                                1356
                                                -
                                                1357 /// Callback for current async sequence
                                                -
                                                1358 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
                                                -
                                                1359
                                                -
                                                1360 /// User-provided data passed to async sequence callback
                                                -
                                                1361 byte executeCommandSequenceUserData = 0;
                                                -
                                                1362
                                                -
                                                1363 /// True if an async sequence is currently pending.
                                                -
                                                1364 bool executeCommandSequenceActive = false;
                                                -
                                                1365
                                                -
                                                1366 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
                                                -
                                                1367 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
                                                -
                                                1368 Ticker executeCommandSequenceOnceTicker;
                                                -
                                                1369
                                                -
                                                1370 /// Index of currently active command in the sequence buffer
                                                -
                                                1371 int executeCommandSequenceIndex = 0;
                                                -
                                                1372
                                                -
                                                1373 /// Stores config mode state before sequence started (to restore later)
                                                -
                                                1374 bool executeCommandSequenceInitialConfigModeState = false;
                                                -
                                                1375
                                                -
                                                1376 /// Finalize an async sequence and invoke its callback
                                                -
                                                1377 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
                                                -
                                                1378
                                                -
                                                1379 /// Final step of an async sequence: restore config mode if needed and call callback
                                                -
                                                1380 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
                                                -
                                                1381
                                                -
                                                1382 /// Internal callbacks for sequence steps
                                                -
                                                1383 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                -
                                                1384 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                -
                                                1385
                                                -
                                                1386 /// Start executing an async sequence
                                                -
                                                1387 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1388
                                                -
                                                1389 /// Add one command to the sequence buffer
                                                -
                                                1390 bool addCommandToSequence(const byte* command);
                                                -
                                                1391
                                                -
                                                1392 /// Reset sequence buffer to empty
                                                -
                                                1393 bool resetCommandSequence();
                                                -
                                                1394
                                                -
                                                1395
                                                -
                                                1396 // ============================================================================
                                                -
                                                1397 // Inactivity handling
                                                -
                                                1398 // ============================================================================
                                                -
                                                1399
                                                -
                                                1400 /// Update last-activity timestamp ("I am alive" signal)
                                                -
                                                1401 void heartbeat();
                                                -
                                                1402
                                                -
                                                1403 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
                                                -
                                                1404 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
                                                -
                                                1405 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
                                                -
                                                1406 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
                                                -
                                                1407
                                                -
                                                1408 /// Main inactivity handler: exit config mode or reboot if stuck
                                                -
                                                1409 void handleInactivity();
                                                -
                                                1410
                                                -
                                                1411 /// Callback for reboot triggered by inactivity handler
                                                -
                                                1412 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1413
                                                -
                                                1414 /// Callback for disabling config mode during inactivity recovery
                                                -
                                                1415 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1416
                                                -
                                                1417
                                                -
                                                1418 // ============================================================================
                                                -
                                                1419 // Reboot handling
                                                -
                                                1420 // ============================================================================
                                                -
                                                1421
                                                -
                                                1422 /// Step 1: Enter config mode before reboot
                                                -
                                                1423 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                -
                                                1424
                                                -
                                                1425 /// Step 2: Issue reboot command
                                                -
                                                1426 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                -
                                                1427
                                                -
                                                1428
                                                -
                                                1429 // ============================================================================
                                                -
                                                1430 // ACK/DATA processing
                                                -
                                                1431 // ============================================================================
                                                -
                                                1432
                                                -
                                                1433 /// Process a received ACK frame
                                                -
                                                1434 bool processAck();
                                                -
                                                1435
                                                -
                                                1436 /// Process a received DATA frame
                                                -
                                                1437 bool processData();
                                                -
                                                1438
                                                -
                                                1439
                                                -
                                                1440 // ============================================================================
                                                -
                                                1441 // Callbacks
                                                -
                                                1442 // ============================================================================
                                                -
                                                1443
                                                -
                                                1444 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
                                                -
                                                1445 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
                                                -
                                                1446 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
                                                -
                                                1447
                                                -
                                                1448 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
                                                -
                                                1449 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
                                                -
                                                1450 void executeConfigChangedCallback(); ///< Execute config-changed callback
                                                -
                                                1451
                                                -
                                                1452 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
                                                -
                                                1453 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
                                                -
                                                1454
                                                -
                                                1455
                                                -
                                                1456 // ============================================================================
                                                -
                                                1457 // Command sending
                                                -
                                                1458 // ============================================================================
                                                -
                                                1459
                                                -
                                                1460 /// Send raw command bytes to the sensor
                                                -
                                                1461 void sendCommand(const byte* command);
                                                -
                                                1462
                                                -
                                                1463
                                                -
                                                1464 // ============================================================================
                                                -
                                                1465 // FreeRTOS task management
                                                -
                                                1466 // ============================================================================
                                                -
                                                1467
                                                -
                                                1468 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
                                                -
                                                1469 bool taskStop = false; ///< Stop flag for task loop
                                                -
                                                1470 void taskLoop(); ///< Background task loop for reading data
                                                -
                                                1471
                                                -
                                                1472
                                                -
                                                1473 // ============================================================================
                                                -
                                                1474 // Async command handling
                                                -
                                                1475 // ============================================================================
                                                -
                                                1476
                                                -
                                                1477 ///< Timeout for async commands in ms (default 6000).
                                                -
                                                1478 unsigned long asyncCommandTimeoutMs = 6000;
                                                -
                                                1479
                                                -
                                                1480 /// Send a generic async command
                                                -
                                                1481 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
                                                -
                                                1482
                                                -
                                                1483 /// Invoke async command callback with result
                                                -
                                                1484 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
                                                -
                                                1485
                                                -
                                                1486
                                                -
                                                1487
                                                -
                                                1488 /// Handle async command timeout
                                                -
                                                1489 void handleAsyncCommandCallbackTimeout();
                                                -
                                                1490
                                                -
                                                1491 /// Send async command that modifies configuration
                                                -
                                                1492 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1316
                                                +
                                                1317
                                                +
                                                1318 /*---------------------------------------------------------------------------------
                                                +
                                                1319 - High level commands
                                                +
                                                1320 ---------------------------------------------------------------------------------*/
                                                +
                                                1321 // High level commands typically encapsulate several native commands.
                                                +
                                                1322 // They provide a more consistent access to the sensors configuration,
                                                +
                                                1323 // e.g. for reading all config data 3 native commands are necessary,
                                                +
                                                1324 // to update the same data up to 12 native commands may be required.
                                                +
                                                1325 //The highlevel commands encapsulate both situation into a single command
                                                +
                                                1326
                                                +
                                                1327 /**
                                                +
                                                1328 * @brief Requests all configuration settings from the sensor.
                                                +
                                                1329 *
                                                +
                                                1330 * This triggers a sequence of queries that retrieves and updates:
                                                +
                                                1331 * - Gate parameters (sensitivities, max gates, timeout).
                                                +
                                                1332 * - Distance resolution setting.
                                                +
                                                1333 * - Auxiliary light/output control settings.
                                                +
                                                1334 *
                                                +
                                                1335 * The results are stored in configData, and the
                                                +
                                                1336 * registerConfigUpdateReceivedCallback() is invoked after completion.
                                                +
                                                1337 *
                                                +
                                                1338 * @note This is a high-level method that involves multiple commands.
                                                +
                                                1339 * @note Requires config mode. This method will manage mode switching automatically.
                                                +
                                                1340 * @note If another async command is already pending, the request fails.
                                                +
                                                1341 *
                                                +
                                                1342 * ## Example: Refresh config data
                                                +
                                                1343 * @code
                                                +
                                                1344 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
                                                +
                                                1345 * AsyncCommandResult result,
                                                +
                                                1346 * byte) {
                                                +
                                                1347 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1348 * Serial.println("All config data refreshed:");
                                                +
                                                1349 * sender->getConfigDataRef().print();
                                                +
                                                1350 * }
                                                +
                                                1351 * });
                                                +
                                                1352 * @endcode
                                                +
                                                1353 *
                                                +
                                                1354 * ## Do:
                                                +
                                                1355 * - Use this after connecting to ensure configData is fully populated.
                                                +
                                                1356 * - Call before modifying config if you’re unsure of current values.
                                                +
                                                1357 *
                                                +
                                                1358 * ## Don’t:
                                                +
                                                1359 * - Expect it to succeed if another async command is still running.
                                                +
                                                1360 *
                                                +
                                                1361 * @param callback Callback with signature:
                                                +
                                                1362 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1363 * Fired when all config data has been received or on failure.
                                                +
                                                1364 * @param userData Optional value passed to the callback.
                                                +
                                                1365 *
                                                +
                                                1366 * @returns true if the command was sent, false otherwise.
                                                +
                                                1367 *
                                                +
                                                1368 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1369 * @ingroup LD2410Async_Configuration
                                                +
                                                1370 * @ingroup LD2410Async_HighLevelCommands
                                                +
                                                1371 */
                                                +
                                                1372 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1373
                                                +
                                                1374
                                                +
                                                1375 /**
                                                +
                                                1376 * @brief Requests all static information from the sensor.
                                                +
                                                1377 *
                                                +
                                                1378 * This includes:
                                                +
                                                1379 * - Firmware version string.
                                                +
                                                1380 * - Bluetooth MAC address (numeric and string form).
                                                +
                                                1381 *
                                                +
                                                1382 * The values are written into the public members `firmware`, `mac`,
                                                +
                                                1383 * and `macString`.
                                                +
                                                1384 *
                                                +
                                                1385 * @note This is a high-level method that involves multiple commands.
                                                +
                                                1386 * @note Requires config mode. Managed automatically by this method.
                                                +
                                                1387 * @note If another async command is already pending, the request fails.
                                                +
                                                1388 *
                                                +
                                                1389 * ## Example: Retrieve firmware and MAC
                                                +
                                                1390 * @code
                                                +
                                                1391 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
                                                +
                                                1392 * AsyncCommandResult result,
                                                +
                                                1393 * byte) {
                                                +
                                                1394 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1395 * Serial.print("Firmware: ");
                                                +
                                                1396 * Serial.println(sender->firmware);
                                                +
                                                1397 *
                                                +
                                                1398 * Serial.print("MAC: ");
                                                +
                                                1399 * Serial.println(sender->macString);
                                                +
                                                1400 * }
                                                +
                                                1401 * });
                                                +
                                                1402 * @endcode
                                                +
                                                1403 *
                                                +
                                                1404 * ## Do:
                                                +
                                                1405 * - Use after initialization to log firmware version and MAC.
                                                +
                                                1406 * - Useful for debugging or inventory identification.
                                                +
                                                1407 *
                                                +
                                                1408 * ## Don’t:
                                                +
                                                1409 * - Expect frequently changing data — this is static information.
                                                +
                                                1410 *
                                                +
                                                1411 * @param callback Callback with signature:
                                                +
                                                1412 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
                                                +
                                                1413 * Fired when static data is received or on failure.
                                                +
                                                1414 * @param userData Optional value passed to the callback.
                                                +
                                                1415 *
                                                +
                                                1416 * @returns true if the command was sent, false otherwise.
                                                +
                                                1417 *
                                                +
                                                1418 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1419 * @ingroup LD2410Async_StaticData
                                                +
                                                1420 * @ingroup LD2410Async_HighLevelCommands
                                                +
                                                1421 */
                                                +
                                                1422 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1423
                                                +
                                                1424
                                                +
                                                1425
                                                +
                                                1426 /**
                                                +
                                                1427 * @brief Applies a full ConfigData struct to the LD2410.
                                                +
                                                1428 *
                                                +
                                                1429 * If writeAllConfigData is true, the method will first fetch the current config,
                                                +
                                                1430 * compare it with the provide Config data and then create a command sequence that
                                                +
                                                1431 * will only update the changes config values.
                                                +
                                                1432 * If writeAllConfigData is false, the method will write all values in the provided
                                                +
                                                1433 * ConfigData to the sensor, regardless of whether they differ from the current config.
                                                +
                                                1434 *
                                                +
                                                1435 * @note This is a high-level method that involves multiple commands (up to 18).
                                                +
                                                1436 * @note Requires config mode. This method will manage entering and
                                                +
                                                1437 * exiting config mode automatically (if config mode is not already active).
                                                +
                                                1438 * @note If another async command is already pending, the command fails.
                                                +
                                                1439 * @note Any members of ConfigData that are left at invalid values
                                                +
                                                1440 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
                                                +
                                                1441 *
                                                +
                                                1442 * ## Example: Clone, modify, and apply config
                                                +
                                                1443 * @code
                                                +
                                                1444 * ConfigData cfg = radar.getConfigData(); // clone current config
                                                +
                                                1445 * cfg.noOneTimeout = 120; // change timeout
                                                +
                                                1446 * cfg.distanceGateMotionSensitivity[2] = 75;
                                                +
                                                1447 *
                                                +
                                                1448 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
                                                +
                                                1449 * AsyncCommandResult result,
                                                +
                                                1450 * byte) {
                                                +
                                                1451 * if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                1452 * Serial.println("All config applied successfully!");
                                                +
                                                1453 * }
                                                +
                                                1454 * });
                                                +
                                                1455 * @endcode
                                                +
                                                1456 *
                                                +
                                                1457 * ## Do:
                                                +
                                                1458 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
                                                +
                                                1459 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
                                                +
                                                1460 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
                                                +
                                                1461 *
                                                +
                                                1462 * ## Don’t:
                                                +
                                                1463 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
                                                +
                                                1464 * This generates unnecessary wear on the sensors memory.
                                                +
                                                1465 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
                                                +
                                                1466
                                                +
                                                1467 *
                                                +
                                                1468 * @param configToWrite The configuration data to be applied.
                                                +
                                                1469 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
                                                +
                                                1470 * @param callback Function with signature:
                                                +
                                                1471 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
                                                +
                                                1472 * executed when the sequence finishes (success/fail/timeout/cancel).
                                                +
                                                1473 * @param userData Optional value passed to the callback.
                                                +
                                                1474 *
                                                +
                                                1475 * @returns true if the command sequence has been started, false otherwise.
                                                +
                                                1476 *
                                                +
                                                1477 * @ingroup LD2410Async_AsyncCommands
                                                +
                                                1478 * @ingroup LD2410Async_StaticData
                                                +
                                                1479 * @ingroup LD2410Async_HighLevelCommands
                                                +
                                                1480 */
                                                +
                                                1481 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1482
                                                +
                                                1483
                                                +
                                                1484
                                                +
                                                1485 private:
                                                +
                                                1486 // ============================================================================
                                                +
                                                1487 // Low-level serial interface
                                                +
                                                1488 // ============================================================================
                                                +
                                                1489
                                                +
                                                1490 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
                                                +
                                                1491 Stream* sensor;
                                                +
                                                1492
                                                1493
                                                -
                                                1494 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
                                                -
                                                1495 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
                                                -
                                                1496 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
                                                -
                                                1497 byte asyncCommandCommandCode = 0; ///< Last command code issued
                                                -
                                                1498 bool asyncCommandActive = false; ///< True if an async command is currently pending.
                                                -
                                                1499
                                                -
                                                1500
                                                -
                                                1501 // ============================================================================
                                                -
                                                1502 // Data processing
                                                -
                                                1503 // ============================================================================
                                                -
                                                1504
                                                -
                                                1505 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
                                                -
                                                1506 void processReceivedData();
                                                -
                                                1507
                                                -
                                                1508 // ============================================================================
                                                -
                                                1509 // Config mode
                                                -
                                                1510 // ============================================================================
                                                -
                                                1511 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
                                                -
                                                1512 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
                                                -
                                                1513
                                                -
                                                1514 // ============================================================================
                                                -
                                                1515 // Config writing
                                                -
                                                1516 // ============================================================================
                                                -
                                                1517 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
                                                -
                                                1518 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
                                                -
                                                1519 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
                                                -
                                                1520 byte configureAllConfigSettingsAsyncConfigUserData = 0;
                                                -
                                                1521 bool configureAllConfigSettingsAsyncConfigActive = false;
                                                -
                                                1522 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
                                                -
                                                1523 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
                                                -
                                                1524
                                                -
                                                1525 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
                                                -
                                                1526 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1527 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
                                                -
                                                1528 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1529 bool configureAllConfigSettingsAsyncWriteConfig();
                                                -
                                                1530 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1531 bool configureAllConfigSettingsAsyncRequestAllConfigData();
                                                -
                                                1532 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                -
                                                1533
                                                -
                                                1534 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
                                                -
                                                1535
                                                -
                                                1536};
                                                +
                                                1494 // ============================================================================
                                                +
                                                1495 // Frame parsing state machine
                                                +
                                                1496 // ============================================================================
                                                +
                                                1497
                                                +
                                                1498 /// States used when parsing incoming frames from the sensor
                                                +
                                                1499 enum ReadFrameState {
                                                +
                                                1500 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
                                                +
                                                1501 ACK_HEADER, ///< Parsing header of an ACK frame
                                                +
                                                1502 DATA_HEADER, ///< Parsing header of a DATA frame
                                                +
                                                1503 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
                                                +
                                                1504 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
                                                +
                                                1505 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
                                                +
                                                1506 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
                                                +
                                                1507 };
                                                +
                                                1508
                                                +
                                                1509 /// Result type when trying to read a frame
                                                +
                                                1510 enum FrameReadResponse {
                                                +
                                                1511 FAIL = 0, ///< Frame was invalid or incomplete
                                                +
                                                1512 ACK, ///< A valid ACK frame was received
                                                +
                                                1513 DATA ///< A valid DATA frame was received
                                                +
                                                1514 };
                                                +
                                                1515
                                                +
                                                1516 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
                                                +
                                                1517 int payloadSize = 0; ///< Expected payload size of current frame
                                                +
                                                1518 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
                                                +
                                                1519
                                                +
                                                1520 /// Extract payload size from the current byte and update state machine
                                                +
                                                1521 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
                                                +
                                                1522
                                                +
                                                1523 /// Read payload bytes until full ACK/DATA frame is assembled
                                                +
                                                1524 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
                                                +
                                                1525
                                                +
                                                1526 /// State machine entry: read incoming frame and return read response
                                                +
                                                1527 FrameReadResponse readFrame();
                                                +
                                                1528
                                                +
                                                1529
                                                +
                                                1530 // ============================================================================
                                                +
                                                1531 // Receive buffer
                                                +
                                                1532 // ============================================================================
                                                +
                                                1533
                                                +
                                                1534 /// Raw buffer for storing incoming bytes
                                                +
                                                1535 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
                                                +
                                                1536
                                                +
                                                1537 /// Current index into receiveBuffer
                                                +
                                                1538 byte receiveBufferIndex = 0;
                                                +
                                                1539
                                                +
                                                1540
                                                +
                                                1541 // ============================================================================
                                                +
                                                1542 // Asynchronous command sequence handling
                                                +
                                                1543 // ============================================================================
                                                +
                                                1544
                                                +
                                                1545 /// Maximum number of commands in one async sequence
                                                +
                                                1546 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
                                                +
                                                1547
                                                +
                                                1548 /// Buffer holding queued commands for sequence execution
                                                +
                                                1549 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
                                                +
                                                1550
                                                +
                                                1551 /// Number of commands currently queued in the sequence buffer
                                                +
                                                1552 byte commandSequenceBufferCount = 0;
                                                +
                                                1553
                                                +
                                                1554 /// Timestamp when the current async sequence started
                                                +
                                                1555 unsigned long executeCommandSequenceStartMs = 0;
                                                +
                                                1556
                                                +
                                                1557 /// Callback for current async sequence
                                                +
                                                1558 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
                                                +
                                                1559
                                                +
                                                1560 /// User-provided data passed to async sequence callback
                                                +
                                                1561 byte executeCommandSequenceUserData = 0;
                                                +
                                                1562
                                                +
                                                1563 /// True if an async sequence is currently pending.
                                                +
                                                1564 bool executeCommandSequenceActive = false;
                                                +
                                                1565
                                                +
                                                1566 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
                                                +
                                                1567 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
                                                +
                                                1568 Ticker executeCommandSequenceOnceTicker;
                                                +
                                                1569
                                                +
                                                1570 /// Index of currently active command in the sequence buffer
                                                +
                                                1571 int executeCommandSequenceIndex = 0;
                                                +
                                                1572
                                                +
                                                1573 /// Stores config mode state before sequence started (to restore later)
                                                +
                                                1574 bool executeCommandSequenceInitialConfigModeState = false;
                                                +
                                                1575
                                                +
                                                1576 /// Finalize an async sequence and invoke its callback
                                                +
                                                1577 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
                                                +
                                                1578
                                                +
                                                1579 /// Final step of an async sequence: restore config mode if needed and call callback
                                                +
                                                1580 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
                                                +
                                                1581
                                                +
                                                1582 /// Internal callbacks for sequence steps
                                                +
                                                1583 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                +
                                                1584 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                +
                                                1585
                                                +
                                                1586 /// Start executing an async sequence
                                                +
                                                1587 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1588
                                                +
                                                1589 /// Add one command to the sequence buffer
                                                +
                                                1590 bool addCommandToSequence(const byte* command);
                                                +
                                                1591
                                                +
                                                1592 /// Reset sequence buffer to empty
                                                +
                                                1593 bool resetCommandSequence();
                                                +
                                                1594
                                                +
                                                1595
                                                +
                                                1596 // ============================================================================
                                                +
                                                1597 // Inactivity handling
                                                +
                                                1598 // ============================================================================
                                                +
                                                1599
                                                +
                                                1600 /// Update last-activity timestamp ("I am alive" signal)
                                                +
                                                1601 void heartbeat();
                                                +
                                                1602
                                                +
                                                1603 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
                                                +
                                                1604 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
                                                +
                                                1605 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
                                                +
                                                1606 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
                                                +
                                                1607
                                                +
                                                1608 /// Main inactivity handler: exit config mode or reboot if stuck
                                                +
                                                1609 void handleInactivity();
                                                +
                                                1610
                                                +
                                                1611 /// Callback for reboot triggered by inactivity handler
                                                +
                                                1612 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1613
                                                +
                                                1614 /// Callback for disabling config mode during inactivity recovery
                                                +
                                                1615 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1616
                                                +
                                                1617
                                                +
                                                1618 // ============================================================================
                                                +
                                                1619 // Reboot handling
                                                +
                                                1620 // ============================================================================
                                                +
                                                1621
                                                +
                                                1622 /// Step 1: Enter config mode before reboot
                                                +
                                                1623 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                +
                                                1624
                                                +
                                                1625 /// Step 2: Issue reboot command
                                                +
                                                1626 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
                                                +
                                                1627
                                                +
                                                1628
                                                +
                                                1629 // ============================================================================
                                                +
                                                1630 // ACK/DATA processing
                                                +
                                                1631 // ============================================================================
                                                +
                                                1632
                                                +
                                                1633 /// Process a received ACK frame
                                                +
                                                1634 bool processAck();
                                                +
                                                1635
                                                +
                                                1636 /// Process a received DATA frame
                                                +
                                                1637 bool processData();
                                                +
                                                1638
                                                +
                                                1639
                                                +
                                                1640 // ============================================================================
                                                +
                                                1641 // Callbacks
                                                +
                                                1642 // ============================================================================
                                                +
                                                1643
                                                +
                                                1644 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
                                                +
                                                1645 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
                                                +
                                                1646 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
                                                +
                                                1647
                                                +
                                                1648 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
                                                +
                                                1649 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
                                                +
                                                1650 void executeConfigChangedCallback(); ///< Execute config-changed callback
                                                +
                                                1651
                                                +
                                                1652 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
                                                +
                                                1653 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
                                                +
                                                1654
                                                +
                                                1655
                                                +
                                                1656 // ============================================================================
                                                +
                                                1657 // Command sending
                                                +
                                                1658 // ============================================================================
                                                +
                                                1659
                                                +
                                                1660 /// Send raw command bytes to the sensor
                                                +
                                                1661 void sendCommand(const byte* command);
                                                +
                                                1662
                                                +
                                                1663
                                                +
                                                1664 // ============================================================================
                                                +
                                                1665 // FreeRTOS task management
                                                +
                                                1666 // ============================================================================
                                                +
                                                1667
                                                +
                                                1668 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
                                                +
                                                1669 bool taskStop = false; ///< Stop flag for task loop
                                                +
                                                1670 void taskLoop(); ///< Background task loop for reading data
                                                +
                                                1671
                                                +
                                                1672
                                                +
                                                1673 // ============================================================================
                                                +
                                                1674 // Async command handling
                                                +
                                                1675 // ============================================================================
                                                +
                                                1676
                                                +
                                                1677 ///< Timeout for async commands in ms (default 6000).
                                                +
                                                1678 unsigned long asyncCommandTimeoutMs = 6000;
                                                +
                                                1679
                                                +
                                                1680 /// Send a generic async command
                                                +
                                                1681 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1682
                                                +
                                                1683 /// Invoke async command callback with result
                                                +
                                                1684 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
                                                +
                                                1685
                                                +
                                                1686
                                                +
                                                1687
                                                +
                                                1688 /// Handle async command timeout
                                                +
                                                1689 void handleAsyncCommandCallbackTimeout();
                                                +
                                                1690
                                                +
                                                1691 /// Send async command that modifies configuration
                                                +
                                                1692 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
                                                +
                                                1693
                                                +
                                                1694 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
                                                +
                                                1695 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
                                                +
                                                1696 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
                                                +
                                                1697 byte asyncCommandCommandCode = 0; ///< Last command code issued
                                                +
                                                1698 bool asyncCommandActive = false; ///< True if an async command is currently pending.
                                                +
                                                1699
                                                +
                                                1700
                                                +
                                                1701 // ============================================================================
                                                +
                                                1702 // Data processing
                                                +
                                                1703 // ============================================================================
                                                +
                                                1704
                                                +
                                                1705 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
                                                +
                                                1706 void processReceivedData();
                                                +
                                                1707
                                                +
                                                1708 // ============================================================================
                                                +
                                                1709 // Config mode
                                                +
                                                1710 // ============================================================================
                                                +
                                                1711 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
                                                +
                                                1712 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
                                                +
                                                1713
                                                +
                                                1714 // ============================================================================
                                                +
                                                1715 // Config writing
                                                +
                                                1716 // ============================================================================
                                                +
                                                1717 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
                                                +
                                                1718 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
                                                +
                                                1719 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
                                                +
                                                1720 byte configureAllConfigSettingsAsyncConfigUserData = 0;
                                                +
                                                1721 bool configureAllConfigSettingsAsyncConfigActive = false;
                                                +
                                                1722 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
                                                +
                                                1723 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
                                                +
                                                1724
                                                +
                                                1725 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
                                                +
                                                1726 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1727 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
                                                +
                                                1728 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1729 bool configureAllConfigSettingsAsyncWriteConfig();
                                                +
                                                1730 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1731 bool configureAllConfigSettingsAsyncRequestAllConfigData();
                                                +
                                                1732 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
                                                +
                                                1733
                                                +
                                                1734 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
                                                +
                                                1735
                                                +
                                                1736};
                                                @@ -1650,80 +1850,80 @@
                                                bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution explicitly to 20 cm per gate.
                                                void asyncCancel()
                                                Cancels any pending asynchronous command or sequence.
                                                +
                                                void setInactivityTimeoutMs(unsigned long timeoutMs)
                                                Sets the timeout period for inactivity handling.
                                                bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
                                                Configures the maximum detection gates and "no-one" timeout on the sensor.
                                                +
                                                bool begin()
                                                Starts the background task that continuously reads data from the sensor.
                                                +
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                Definition LD2410Async.h:98
                                                +
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                +
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                +
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                +
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                +
                                                void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                Callback type for receiving detection data events.
                                                bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
                                                Configures sensitivity thresholds for all gates at once.
                                                -
                                                bool isConfigModeEnabled() const
                                                Detects if config mode is enabled.
                                                +
                                                bool isConfigModeEnabled() const
                                                Detects if config mode is enabled.
                                                bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current distance resolution setting from the sensor.
                                                bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables engineering mode.
                                                bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the bluetooth mac address.
                                                bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
                                                Configures the UART baud rate of the sensor.
                                                +
                                                void enableInactivityHandling()
                                                Convenience method: enables inactivity handling.
                                                bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution explicitly to 75 cm per gate.
                                                +
                                                void setInactivityHandling(bool enable)
                                                Enables or disables automatic inactivity handling of the sensor.
                                                bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
                                                Applies a full ConfigData struct to the LD2410.
                                                LD2410Types::ConfigData getConfigData() const
                                                Returns a clone of the current configuration data of the radar.
                                                LD2410Types::DetectionData getDetectionData() const
                                                Returns a clone of the latest detection data from the radar.
                                                -
                                                void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
                                                Sets the timeout for async command callbacks.
                                                +
                                                void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
                                                Sets the timeout for async command callbacks.
                                                bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the firmware version of the sensor.
                                                +
                                                LD2410Types::ConfigData configData
                                                Current configuration parameters of the radar.
                                                +
                                                void disableInactivityHandling()
                                                Convenience method: disables inactivity handling.
                                                +
                                                String firmware
                                                Firmware version string of the radar.
                                                +
                                                void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration changes.
                                                bool asyncIsBusy()
                                                Checks if an asynchronous command is currently pending.
                                                +
                                                unsigned long getInactivityTimeoutMs() const
                                                Returns the current inactivity timeout period.
                                                +
                                                bool configModeEnabled
                                                True if the sensor is currently in config mode.
                                                +
                                                void(*) GenericCallback(LD2410Async *sender, byte userData)
                                                Generic callback signature used for simple notifications.
                                                +
                                                byte mac[6]
                                                MAC address of the radar’s Bluetooth module (if available).
                                                +
                                                String macString
                                                MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests all static information from the sensor.
                                                bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
                                                Configures the auxiliary control parameters (light and output pin).
                                                -
                                                unsigned long getAsyncCommandTimeoutMs() const
                                                Returns the current async command timeout.
                                                +
                                                unsigned long getAsyncCommandTimeoutMs() const
                                                Returns the current async command timeout.
                                                bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables config mode on the radar.
                                                bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables bluetooth.
                                                +
                                                LD2410Types::DetectionData detectionData
                                                Latest detection results from the radar.
                                                +
                                                LD2410Types::AutoConfigStatus autoConfigStatus
                                                Current status of the auto-configuration routine.
                                                bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
                                                Sets the password for bluetooth access to the sensor.
                                                +
                                                bool engineeringModeEnabled
                                                True if the sensor is currently in engineering mode.
                                                bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Restores factory settings of the sensor.
                                                bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests all configuration settings from the sensor.
                                                bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
                                                Resets the password for bluetooth access to the default value (HiLink)
                                                +
                                                LD2410Async(Stream &serial)
                                                Constructs a new LD2410Async instance bound to a given serial stream.
                                                +
                                                unsigned long bufferSize
                                                Buffer size reported by the radar protocol.
                                                bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current status of the auto-config routine.
                                                bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables config mode on the radar.
                                                -
                                                bool isEngineeringModeEnabled() const
                                                Detects if engineering mode is enabled.
                                                +
                                                bool isEngineeringModeEnabled() const
                                                Detects if engineering mode is enabled.
                                                +
                                                void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration data updates.
                                                bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
                                                Enables engineering mode.
                                                bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current gate parameters from the sensor.
                                                +
                                                unsigned long protocolVersion
                                                Protocol version reported by the radar.
                                                +
                                                void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                Callback signature for asynchronous command completion.
                                                +
                                                bool isInactivityHandlingEnabled() const
                                                Returns whether inactivity handling is currently enabled.
                                                bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
                                                Disables bluetooth.
                                                -
                                                const LD2410Types::DetectionData & getDetectionDataRef() const
                                                Access the current detection data without making a copy.
                                                +
                                                const LD2410Types::DetectionData & getDetectionDataRef() const
                                                Access the current detection data without making a copy.
                                                bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
                                                Configures the distance resolution of the radar.
                                                bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
                                                Reboots the sensor.
                                                bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
                                                Starts the automatic configuration (auto-config) routine on the sensor.
                                                -
                                                const LD2410Types::ConfigData & getConfigDataRef() const
                                                Access the current config data without making a copy.
                                                +
                                                void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
                                                Registers a callback for new detection data.
                                                +
                                                bool end()
                                                Stops the background task started by begin().
                                                +
                                                const LD2410Types::ConfigData & getConfigDataRef() const
                                                Access the current config data without making a copy.
                                                bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
                                                Requests the current auxiliary control settings.
                                                -
                                                void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration changes.
                                                -
                                                void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
                                                Registers a callback for configuration data updates.
                                                -
                                                void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
                                                Registers a callback for new detection data.
                                                -
                                                LD2410Types::ConfigData configData
                                                Current configuration parameters of the radar.
                                                -
                                                String firmware
                                                Firmware version string of the radar.
                                                -
                                                bool configModeEnabled
                                                True if the sensor is currently in config mode.
                                                -
                                                byte mac[6]
                                                MAC address of the radar’s Bluetooth module (if available).
                                                -
                                                String macString
                                                MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                -
                                                LD2410Types::DetectionData detectionData
                                                Latest detection results from the radar.
                                                -
                                                LD2410Types::AutoConfigStatus autoConfigStatus
                                                Current status of the auto-configuration routine.
                                                -
                                                bool engineeringModeEnabled
                                                True if the sensor is currently in engineering mode.
                                                -
                                                unsigned long bufferSize
                                                Buffer size reported by the radar protocol.
                                                -
                                                unsigned long protocolVersion
                                                Protocol version reported by the radar.
                                                -
                                                void setInactivityTimeoutMs(unsigned long timeoutMs)
                                                Sets the timeout period for inactivity handling.
                                                -
                                                void enableInactivityHandling()
                                                Convenience method: enables inactivity handling.
                                                -
                                                void setInactivityHandling(bool enable)
                                                Enables or disables automatic inactivity handling of the sensor.
                                                -
                                                void disableInactivityHandling()
                                                Convenience method: disables inactivity handling.
                                                -
                                                unsigned long getInactivityTimeoutMs() const
                                                Returns the current inactivity timeout period.
                                                -
                                                bool isInactivityHandlingEnabled() const
                                                Returns whether inactivity handling is currently enabled.
                                                -
                                                bool begin()
                                                Starts the background task that continuously reads data from the sensor.
                                                -
                                                LD2410Async(Stream &serial)
                                                Constructs a new LD2410Async instance bound to a given serial stream.
                                                -
                                                bool end()
                                                Stops the background task started by begin().
                                                -
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                -
                                                void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                Callback type for receiving detection data events.
                                                -
                                                void(*) GenericCallback(LD2410Async *sender, byte userData)
                                                Generic callback signature used for simple notifications.
                                                -
                                                void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                Callback signature for asynchronous command completion.
                                                -
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                -
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                -
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                -
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                constexpr size_t LD2410_Buffer_Size
                                                Definition LD2410Defs.h:11
                                                -
                                                AutoConfigStatus
                                                State of the automatic threshold configuration routine.
                                                +
                                                AutoConfigStatus
                                                State of the automatic threshold configuration routine.
                                                @ NOT_SET
                                                Status not yet retrieved.
                                                -
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                -
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                -
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                -
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:89
                                                -
                                                Stores the sensor’s configuration parameters.
                                                -
                                                Holds the most recent detection data reported by the radar.
                                                +
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                +
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                +
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                +
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:97
                                                +
                                                Stores the sensor’s configuration parameters.
                                                +
                                                Holds the most recent detection data reported by the radar.
                                                diff --git a/docu/LD2410CommandBuilder_8h.html b/docu/LD2410CommandBuilder_8h.html index cce2e42..dbb801b 100644 --- a/docu/LD2410CommandBuilder_8h.html +++ b/docu/LD2410CommandBuilder_8h.html @@ -107,16 +107,6 @@ #include "LD2410Async.h"
                                                #include "LD2410Defs.h"
                                                #include "LD2410Types.h"
                                                -
                                                -Include dependency graph for LD2410CommandBuilder.h:
                                                -
                                                -
                                                -
                                                -
                                                -This graph shows which files directly or indirectly include this file:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410CommandBuilder_8h_source.html b/docu/LD2410CommandBuilder_8h_source.html index 516f3bd..d8469ac 100644 --- a/docu/LD2410CommandBuilder_8h_source.html +++ b/docu/LD2410CommandBuilder_8h_source.html @@ -232,12 +232,12 @@
                                                constexpr byte maxGateCommandData[0x16]
                                                Definition LD2410Defs.h:83
                                                constexpr byte setBaudRateCommandData[6]
                                                Definition LD2410Defs.h:38
                                                constexpr byte setDistanceResolution75cmCommandData[6]
                                                Definition LD2410Defs.h:34
                                                -
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                +
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                @ NOT_SET
                                                Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                -
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                +
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                @ RESOLUTION_20CM
                                                Each gate ~0.20 m, max range ~1.8 m.
                                                @ RESOLUTION_75CM
                                                Each gate ~0.75 m, max range ~6 m.
                                                -
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:89
                                                +
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:97
                                                @ NOT_SET
                                                Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                diff --git a/docu/LD2410Debug_8h.html b/docu/LD2410Debug_8h.html index 1c3da5a..6aadb57 100644 --- a/docu/LD2410Debug_8h.html +++ b/docu/LD2410Debug_8h.html @@ -103,16 +103,6 @@
                                                #include "Arduino.h"
                                                -
                                                -Include dependency graph for LD2410Debug.h:
                                                -
                                                -
                                                -
                                                -
                                                -This graph shows which files directly or indirectly include this file:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410Defs_8h.html b/docu/LD2410Defs_8h.html index 1f44fbb..1eeb06f 100644 --- a/docu/LD2410Defs_8h.html +++ b/docu/LD2410Defs_8h.html @@ -105,16 +105,6 @@
                                                #include "Arduino.h"
                                                #include "LD2410Async.h"
                                                -
                                                -Include dependency graph for LD2410Defs.h:
                                                -
                                                -
                                                -
                                                -
                                                -This graph shows which files directly or indirectly include this file:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410Types_8h.html b/docu/LD2410Types_8h.html index 30aa549..3ef0a90 100644 --- a/docu/LD2410Types_8h.html +++ b/docu/LD2410Types_8h.html @@ -105,16 +105,6 @@
                                                #include <Arduino.h>
                                                -
                                                -Include dependency graph for LD2410Types.h:
                                                -
                                                -
                                                -
                                                -
                                                -This graph shows which files directly or indirectly include this file:
                                                -
                                                -
                                                -

                                                Go to the source code of this file.

                                                diff --git a/docu/LD2410Types_8h_source.html b/docu/LD2410Types_8h_source.html index 8d26828..5fb2a90 100644 --- a/docu/LD2410Types_8h_source.html +++ b/docu/LD2410Types_8h_source.html @@ -117,493 +117,523 @@
                                                14 * signal evaluation logic. The AUTO-CONFIG states are special values
                                                15 * that are only reported while the sensor is running its
                                                16 * self-calibration routine.
                                                -
                                                17 */
                                                -
                                                18
                                                -
                                                -
                                                19 enum class TargetState {
                                                -
                                                20 NO_TARGET = 0, ///< No moving or stationary target detected.
                                                -
                                                21 MOVING_TARGET = 1, ///< A moving target has been detected.
                                                -
                                                22 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
                                                -
                                                23 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
                                                -
                                                24 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
                                                -
                                                25 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
                                                -
                                                26 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
                                                -
                                                27 };
                                                +
                                                17 *
                                                +
                                                18 * @ingroup LD2410Async_Types
                                                +
                                                19 */
                                                +
                                                20
                                                +
                                                +
                                                21 enum class TargetState {
                                                +
                                                22 NO_TARGET = 0, ///< No moving or stationary target detected.
                                                +
                                                23 MOVING_TARGET = 1, ///< A moving target has been detected.
                                                +
                                                24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
                                                +
                                                25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
                                                +
                                                26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
                                                +
                                                27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
                                                +
                                                28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
                                                +
                                                29 };
                                                -
                                                28
                                                -
                                                29 /**
                                                -
                                                30 * @brief Safely converts a numeric value to a TargetState enum.
                                                -
                                                31 *
                                                -
                                                32 * @param value Raw numeric value (0–6 expected).
                                                -
                                                33 * - 0 → NO_TARGET
                                                -
                                                34 * - 1 → MOVING_TARGET
                                                -
                                                35 * - 2 → STATIONARY_TARGET
                                                -
                                                36 * - 3 → MOVING_AND_STATIONARY_TARGET
                                                -
                                                37 * - 4 → AUTOCONFIG_IN_PROGRESS
                                                -
                                                38 * - 5 → AUTOCONFIG_SUCCESS
                                                -
                                                39 * - 6 → AUTOCONFIG_FAILED
                                                -
                                                40 * @returns The matching TargetState value, or NO_TARGET if invalid.
                                                -
                                                41 */
                                                -
                                                42 static TargetState toTargetState(int value) {
                                                -
                                                43 switch (value) {
                                                -
                                                44 case 0: return TargetState::NO_TARGET;
                                                -
                                                45 case 1: return TargetState::MOVING_TARGET;
                                                -
                                                46 case 2: return TargetState::STATIONARY_TARGET;
                                                - - - -
                                                50 case 6: return TargetState::AUTOCONFIG_FAILED;
                                                -
                                                51 default: return TargetState::NO_TARGET; // safe fallback
                                                -
                                                52 }
                                                -
                                                53 }
                                                -
                                                54
                                                -
                                                55 /**
                                                -
                                                56 * @brief Converts a TargetState enum value to a human-readable String.
                                                -
                                                57 *
                                                -
                                                58 * Useful for printing detection results in logs or Serial Monitor.
                                                -
                                                59 *
                                                -
                                                60 * @param state TargetState enum value.
                                                -
                                                61 * @returns Human-readable string such as "No target", "Moving target", etc.
                                                -
                                                62 */
                                                -
                                                63 static String targetStateToString(TargetState state) {
                                                -
                                                64 switch (state) {
                                                -
                                                65 case TargetState::NO_TARGET: return "No target";
                                                -
                                                66 case TargetState::MOVING_TARGET: return "Moving target";
                                                -
                                                67 case TargetState::STATIONARY_TARGET: return "Stationary target";
                                                -
                                                68 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
                                                -
                                                69 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
                                                -
                                                70 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
                                                -
                                                71 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
                                                -
                                                72 default: return "Unknown";
                                                -
                                                73 }
                                                -
                                                74 }
                                                -
                                                75
                                                -
                                                76
                                                -
                                                77
                                                -
                                                78
                                                -
                                                79
                                                -
                                                80
                                                -
                                                81 /**
                                                -
                                                82 * @brief Light-dependent control status of the auxiliary output.
                                                -
                                                83 *
                                                -
                                                84 * The radar sensor can control an external output based on ambient
                                                -
                                                85 * light level in combination with presence detection.
                                                -
                                                86 *
                                                -
                                                87 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                -
                                                88 */
                                                -
                                                -
                                                89 enum class LightControl {
                                                -
                                                90 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                -
                                                91 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
                                                -
                                                92 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
                                                -
                                                93 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
                                                -
                                                94 };
                                                +
                                                30
                                                +
                                                31 /**
                                                +
                                                32 * @brief Safely converts a numeric value to a TargetState enum.
                                                +
                                                33 *
                                                +
                                                34 * @param value Raw numeric value (0–6 expected).
                                                +
                                                35 * - 0 → NO_TARGET
                                                +
                                                36 * - 1 → MOVING_TARGET
                                                +
                                                37 * - 2 → STATIONARY_TARGET
                                                +
                                                38 * - 3 → MOVING_AND_STATIONARY_TARGET
                                                +
                                                39 * - 4 → AUTOCONFIG_IN_PROGRESS
                                                +
                                                40 * - 5 → AUTOCONFIG_SUCCESS
                                                +
                                                41 * - 6 → AUTOCONFIG_FAILED
                                                +
                                                42 * @returns The matching TargetState value, or NO_TARGET if invalid.
                                                +
                                                43 *
                                                +
                                                44 * @ingroup LD2410Async_Types
                                                +
                                                45 */
                                                +
                                                46 static TargetState toTargetState(int value) {
                                                +
                                                47 switch (value) {
                                                +
                                                48 case 0: return TargetState::NO_TARGET;
                                                +
                                                49 case 1: return TargetState::MOVING_TARGET;
                                                +
                                                50 case 2: return TargetState::STATIONARY_TARGET;
                                                + + + +
                                                54 case 6: return TargetState::AUTOCONFIG_FAILED;
                                                +
                                                55 default: return TargetState::NO_TARGET; // safe fallback
                                                +
                                                56 }
                                                +
                                                57 }
                                                +
                                                58
                                                +
                                                59 /**
                                                +
                                                60 * @brief Converts a TargetState enum value to a human-readable String.
                                                +
                                                61 *
                                                +
                                                62 * Useful for printing detection results in logs or Serial Monitor.
                                                +
                                                63 *
                                                +
                                                64 * @param state TargetState enum value.
                                                +
                                                65 * @returns Human-readable string such as "No target", "Moving target", etc.
                                                +
                                                66 *
                                                +
                                                67 * @ingroup LD2410Async_Types
                                                +
                                                68 */
                                                +
                                                69 static String targetStateToString(TargetState state) {
                                                +
                                                70 switch (state) {
                                                +
                                                71 case TargetState::NO_TARGET: return "No target";
                                                +
                                                72 case TargetState::MOVING_TARGET: return "Moving target";
                                                +
                                                73 case TargetState::STATIONARY_TARGET: return "Stationary target";
                                                +
                                                74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
                                                +
                                                75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
                                                +
                                                76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
                                                +
                                                77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
                                                +
                                                78 default: return "Unknown";
                                                +
                                                79 }
                                                +
                                                80 }
                                                +
                                                81
                                                +
                                                82
                                                +
                                                83
                                                +
                                                84
                                                +
                                                85
                                                +
                                                86
                                                +
                                                87 /**
                                                +
                                                88 * @brief Light-dependent control status of the auxiliary output.
                                                +
                                                89 *
                                                +
                                                90 * The radar sensor can control an external output based on ambient
                                                +
                                                91 * light level in combination with presence detection.
                                                +
                                                92 *
                                                +
                                                93 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                +
                                                94 *
                                                +
                                                95 * @ingroup LD2410Async_Types
                                                +
                                                96 */
                                                +
                                                +
                                                97 enum class LightControl {
                                                +
                                                98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                +
                                                99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
                                                +
                                                100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
                                                +
                                                101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
                                                +
                                                102 };
                                                -
                                                95 /**
                                                -
                                                96 * @brief Safely converts a numeric value to a LightControl enum.
                                                -
                                                97 *
                                                -
                                                98 * @param value Raw numeric value (0–2 expected).
                                                -
                                                99 * - 0 → NO_LIGHT_CONTROL
                                                -
                                                100 * - 1 → LIGHT_BELOW_THRESHOLD
                                                -
                                                101 * - 2 → LIGHT_ABOVE_THRESHOLD
                                                -
                                                102 * @returns The matching LightControl value, or NOT_SET if invalid.
                                                -
                                                103 */
                                                -
                                                104 static LightControl toLightControl(int value) {
                                                -
                                                105 switch (value) {
                                                -
                                                106 case 0: return LightControl::NO_LIGHT_CONTROL;
                                                - - -
                                                109 default: return LightControl::NOT_SET;
                                                -
                                                110 }
                                                -
                                                111 }
                                                -
                                                112
                                                -
                                                113
                                                -
                                                114 /**
                                                -
                                                115 * @brief Logic level behavior of the auxiliary output pin.
                                                -
                                                116 *
                                                -
                                                117 * Determines whether the output pin is active-high or active-low
                                                -
                                                118 * in relation to presence detection.
                                                -
                                                119 *
                                                -
                                                120 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                -
                                                121 */
                                                -
                                                -
                                                122 enum class OutputControl {
                                                -
                                                123 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                -
                                                124 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
                                                -
                                                125 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
                                                -
                                                126 };
                                                +
                                                103 /**
                                                +
                                                104 * @brief Safely converts a numeric value to a LightControl enum.
                                                +
                                                105 *
                                                +
                                                106 * @param value Raw numeric value (0–2 expected).
                                                +
                                                107 * - 0 → NO_LIGHT_CONTROL
                                                +
                                                108 * - 1 → LIGHT_BELOW_THRESHOLD
                                                +
                                                109 * - 2 → LIGHT_ABOVE_THRESHOLD
                                                +
                                                110 * @returns The matching LightControl value, or NOT_SET if invalid.
                                                +
                                                111 *
                                                +
                                                112 * @ingroup LD2410Async_Types
                                                +
                                                113 */
                                                +
                                                114 static LightControl toLightControl(int value) {
                                                +
                                                115 switch (value) {
                                                +
                                                116 case 0: return LightControl::NO_LIGHT_CONTROL;
                                                + + +
                                                119 default: return LightControl::NOT_SET;
                                                +
                                                120 }
                                                +
                                                121 }
                                                +
                                                122
                                                +
                                                123
                                                +
                                                124 /**
                                                +
                                                125 * @brief Logic level behavior of the auxiliary output pin.
                                                +
                                                126 *
                                                +
                                                127 * Determines whether the output pin is active-high or active-low
                                                +
                                                128 * in relation to presence detection.
                                                +
                                                129 *
                                                +
                                                130 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                +
                                                131 *
                                                +
                                                132 * @ingroup LD2410Async_Types
                                                +
                                                133 */
                                                +
                                                +
                                                134 enum class OutputControl {
                                                +
                                                135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                +
                                                136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
                                                +
                                                137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
                                                +
                                                138 };
                                                -
                                                127
                                                -
                                                128 /**
                                                -
                                                129 * @brief Safely converts a numeric value to an OutputControl enum.
                                                -
                                                130 *
                                                -
                                                131 * @param value Raw numeric value (0–1 expected).
                                                -
                                                132 * - 0 → DEFAULT_LOW_DETECTED_HIGH
                                                -
                                                133 * - 1 → DEFAULT_HIGH_DETECTED_LOW
                                                -
                                                134 * @returns The matching OutputControl value, or NOT_SET if invalid.
                                                -
                                                135 */
                                                -
                                                136 static OutputControl toOutputControl(int value) {
                                                -
                                                137 switch (value) {
                                                - - -
                                                140 default: return OutputControl::NOT_SET;
                                                -
                                                141 }
                                                -
                                                142 }
                                                -
                                                143
                                                -
                                                144 /**
                                                -
                                                145 * @brief State of the automatic threshold configuration routine.
                                                -
                                                146 *
                                                -
                                                147 * Auto-config adjusts the sensitivity thresholds for optimal detection
                                                -
                                                148 * in the current environment. This process may take several seconds.
                                                -
                                                149 *
                                                -
                                                150 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                -
                                                151 */
                                                -
                                                -
                                                152 enum class AutoConfigStatus {
                                                -
                                                153 NOT_SET = -1, ///< Status not yet retrieved.
                                                -
                                                154 NOT_IN_PROGRESS, ///< Auto-configuration not running.
                                                -
                                                155 IN_PROGRESS, ///< Auto-configuration is currently running.
                                                -
                                                156 COMPLETED ///< Auto-configuration finished (success or failure).
                                                -
                                                157 };
                                                -
                                                -
                                                158
                                                -
                                                159 /**
                                                -
                                                160 * @brief Safely converts a numeric value to an AutoConfigStatus enum.
                                                -
                                                161 *
                                                -
                                                162 * @param value Raw numeric value (0–2 expected).
                                                -
                                                163 * - 0 → NOT_IN_PROGRESS
                                                -
                                                164 * - 1 → IN_PROGRESS
                                                -
                                                165 * - 2 → COMPLETED
                                                -
                                                166 * @returns The matching AutoConfigStatus value, or NOT_SET if invalid.
                                                +
                                                139
                                                +
                                                140 /**
                                                +
                                                141 * @brief Safely converts a numeric value to an OutputControl enum.
                                                +
                                                142 *
                                                +
                                                143 * @param value Raw numeric value (0–1 expected).
                                                +
                                                144 * - 0 → DEFAULT_LOW_DETECTED_HIGH
                                                +
                                                145 * - 1 → DEFAULT_HIGH_DETECTED_LOW
                                                +
                                                146 * @returns The matching OutputControl value, or NOT_SET if invalid.
                                                +
                                                147 *
                                                +
                                                148 * @ingroup LD2410Async_Types
                                                +
                                                149 */
                                                +
                                                150 static OutputControl toOutputControl(int value) {
                                                +
                                                151 switch (value) {
                                                + + +
                                                154 default: return OutputControl::NOT_SET;
                                                +
                                                155 }
                                                +
                                                156 }
                                                +
                                                157
                                                +
                                                158 /**
                                                +
                                                159 * @brief State of the automatic threshold configuration routine.
                                                +
                                                160 *
                                                +
                                                161 * Auto-config adjusts the sensitivity thresholds for optimal detection
                                                +
                                                162 * in the current environment. This process may take several seconds.
                                                +
                                                163 *
                                                +
                                                164 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                +
                                                165 *
                                                +
                                                166 * @ingroup LD2410Async_Types
                                                167 */
                                                -
                                                168 static AutoConfigStatus toAutoConfigStatus(int value) {
                                                -
                                                169 switch (value) {
                                                - -
                                                171 case 1: return AutoConfigStatus::IN_PROGRESS;
                                                -
                                                172 case 2: return AutoConfigStatus::COMPLETED;
                                                -
                                                173 default: return AutoConfigStatus::NOT_SET;
                                                -
                                                174 }
                                                -
                                                175 }
                                                -
                                                176
                                                -
                                                177
                                                -
                                                178 /**
                                                -
                                                179 * @brief Supported baud rates for the sensor’s UART interface.
                                                -
                                                180 *
                                                -
                                                181 * These values correspond to the configuration commands accepted
                                                -
                                                182 * by the LD2410. After changing the baud rate, a sensor reboot
                                                -
                                                183 * is required, and the ESP32’s UART must be reconfigured to match.
                                                -
                                                184 */
                                                -
                                                -
                                                185 enum class Baudrate {
                                                -
                                                186 BAUDRATE_9600 = 1, ///< 9600 baud.
                                                -
                                                187 BAUDRATE_19200 = 2, ///< 19200 baud.
                                                -
                                                188 BAUDRATE_38400 = 3, ///< 38400 baud.
                                                -
                                                189 BAUDRATE_57600 = 4, ///< 57600 baud.
                                                -
                                                190 BAUDRATE_115200 = 5, ///< 115200 baud.
                                                -
                                                191 BAUDRATE_230500 = 6, ///< 230400 baud.
                                                -
                                                192 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
                                                -
                                                193 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
                                                -
                                                194 };
                                                +
                                                +
                                                168 enum class AutoConfigStatus {
                                                +
                                                169 NOT_SET = -1, ///< Status not yet retrieved.
                                                +
                                                170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
                                                +
                                                171 IN_PROGRESS, ///< Auto-configuration is currently running.
                                                +
                                                172 COMPLETED ///< Auto-configuration finished (success or failure).
                                                +
                                                173 };
                                                +
                                                174
                                                +
                                                175 /**
                                                +
                                                176 * @brief Safely converts a numeric value to an AutoConfigStatus enum.
                                                +
                                                177 *
                                                +
                                                178 * @param value Raw numeric value (0–2 expected).
                                                +
                                                179 * - 0 → NOT_IN_PROGRESS
                                                +
                                                180 * - 1 → IN_PROGRESS
                                                +
                                                181 * - 2 → COMPLETED
                                                +
                                                182 * @returns The matching AutoConfigStatus value, or NOT_SET if invalid.
                                                +
                                                183 *
                                                +
                                                184 * @ingroup LD2410Async_Types
                                                +
                                                185 */
                                                +
                                                186 static AutoConfigStatus toAutoConfigStatus(int value) {
                                                +
                                                187 switch (value) {
                                                + +
                                                189 case 1: return AutoConfigStatus::IN_PROGRESS;
                                                +
                                                190 case 2: return AutoConfigStatus::COMPLETED;
                                                +
                                                191 default: return AutoConfigStatus::NOT_SET;
                                                +
                                                192 }
                                                +
                                                193 }
                                                +
                                                194
                                                195
                                                196 /**
                                                -
                                                197 * @brief Distance resolution per gate for detection.
                                                +
                                                197 * @brief Supported baud rates for the sensor’s UART interface.
                                                198 *
                                                -
                                                199 * The resolution defines how fine-grained the distance measurement is:
                                                -
                                                200 * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
                                                -
                                                201 * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
                                                +
                                                199 * These values correspond to the configuration commands accepted
                                                +
                                                200 * by the LD2410. After changing the baud rate, a sensor reboot
                                                +
                                                201 * is required, and the ESP32’s UART must be reconfigured to match.
                                                202 *
                                                -
                                                203 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                +
                                                203 * @ingroup LD2410Async_Types
                                                204 */
                                                - -
                                                206 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                -
                                                207 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
                                                -
                                                208 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
                                                -
                                                209 };
                                                +
                                                205 enum class Baudrate {
                                                +
                                                206 BAUDRATE_9600 = 1, ///< 9600 baud.
                                                +
                                                207 BAUDRATE_19200 = 2, ///< 19200 baud.
                                                +
                                                208 BAUDRATE_38400 = 3, ///< 38400 baud.
                                                +
                                                209 BAUDRATE_57600 = 4, ///< 57600 baud.
                                                +
                                                210 BAUDRATE_115200 = 5, ///< 115200 baud.
                                                +
                                                211 BAUDRATE_230500 = 6, ///< 230400 baud.
                                                +
                                                212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
                                                +
                                                213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
                                                +
                                                214 };
                                                +
                                                +
                                                215
                                                +
                                                216 /**
                                                +
                                                217 * @brief Distance resolution per gate for detection.
                                                +
                                                218 *
                                                +
                                                219 * The resolution defines how fine-grained the distance measurement is:
                                                +
                                                220 * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
                                                +
                                                221 * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
                                                +
                                                222 *
                                                +
                                                223 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
                                                +
                                                224 *
                                                +
                                                225 * @ingroup LD2410Async_Types
                                                +
                                                226 */
                                                +
                                                + +
                                                228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                +
                                                229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
                                                +
                                                230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
                                                +
                                                231 };
                                                -
                                                210 /**
                                                -
                                                211 * @brief Safely converts a numeric value to a DistanceResolution enum.
                                                -
                                                212 *
                                                -
                                                213 * @param value Raw numeric value (typically from a sensor response).
                                                -
                                                214 * Expected values:
                                                -
                                                215 * - 0 → RESOLUTION_75CM
                                                -
                                                216 * - 1 → RESOLUTION_20CM
                                                -
                                                217 * @returns The matching DistanceResolution value, or NOT_SET if invalid.
                                                -
                                                218 */
                                                -
                                                219 static DistanceResolution toDistanceResolution(int value) {
                                                -
                                                220 switch (value) {
                                                - - -
                                                223 default: return DistanceResolution::NOT_SET;
                                                -
                                                224 }
                                                -
                                                225 }
                                                -
                                                226
                                                -
                                                227 /**
                                                -
                                                228 * @brief Holds the most recent detection data reported by the radar.
                                                -
                                                229 *
                                                -
                                                230 * This structure is continuously updated as new frames arrive.
                                                -
                                                231 * Values reflect either the basic presence information or, if
                                                -
                                                232 * engineering mode is enabled, per-gate signal details.
                                                -
                                                233 */
                                                -
                                                - -
                                                235 {
                                                -
                                                236 unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received.
                                                -
                                                237
                                                -
                                                238 // === Basic detection results ===
                                                -
                                                239
                                                -
                                                240 bool engineeringMode = false; ///< True if engineering mode data was received.
                                                -
                                                241
                                                -
                                                242 bool presenceDetected = false; ///< True if any target is detected.
                                                -
                                                243 bool movingPresenceDetected = false; ///< True if a moving target is detected.
                                                -
                                                244 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
                                                -
                                                245
                                                -
                                                246 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
                                                -
                                                247 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
                                                -
                                                248 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
                                                -
                                                249 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
                                                -
                                                250 byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target.
                                                -
                                                251 unsigned int detectedDistance = 0; ///< General detection distance (cm).
                                                -
                                                252
                                                -
                                                253 // === Engineering mode data ===
                                                -
                                                254 byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals.
                                                -
                                                255 byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets.
                                                -
                                                256
                                                -
                                                257 byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals.
                                                -
                                                258 byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets.
                                                -
                                                259
                                                -
                                                260 byte lightLevel = 0; ///< Reported ambient light level (0–255).
                                                -
                                                261 bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low).
                                                -
                                                262
                                                -
                                                263
                                                -
                                                264 /**
                                                -
                                                265 * @brief Debug helper: print detection data contents to Serial.
                                                -
                                                266 */
                                                -
                                                -
                                                267 void print() const {
                                                -
                                                268 Serial.println("=== DetectionData ===");
                                                -
                                                269
                                                -
                                                270 Serial.print(" Timestamp: ");
                                                -
                                                271 Serial.println(timestamp);
                                                +
                                                232 /**
                                                +
                                                233 * @brief Safely converts a numeric value to a DistanceResolution enum.
                                                +
                                                234 *
                                                +
                                                235 * @param value Raw numeric value (typically from a sensor response).
                                                +
                                                236 * Expected values:
                                                +
                                                237 * - 0 → RESOLUTION_75CM
                                                +
                                                238 * - 1 → RESOLUTION_20CM
                                                +
                                                239 * @returns The matching DistanceResolution value, or NOT_SET if invalid.
                                                +
                                                240 *
                                                +
                                                241 * @ingroup LD2410Async_Types
                                                +
                                                242 */
                                                +
                                                243 static DistanceResolution toDistanceResolution(int value) {
                                                +
                                                244 switch (value) {
                                                + + +
                                                247 default: return DistanceResolution::NOT_SET;
                                                +
                                                248 }
                                                +
                                                249 }
                                                +
                                                250
                                                +
                                                251 /**
                                                +
                                                252 * @brief Holds the most recent detection data reported by the radar.
                                                +
                                                253 *
                                                +
                                                254 * This structure is continuously updated as new frames arrive.
                                                +
                                                255 * Values reflect either the basic presence information or, if
                                                +
                                                256 * engineering mode is enabled, per-gate signal details.
                                                +
                                                257 *
                                                +
                                                258 * @ingroup LD2410Async_Types
                                                +
                                                259 * @ingroup LD2410Async_PresenceDetection
                                                +
                                                260 */
                                                +
                                                + +
                                                262 {
                                                +
                                                263 unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received.
                                                +
                                                264
                                                +
                                                265 // === Basic detection results ===
                                                +
                                                266
                                                +
                                                267 bool engineeringMode = false; ///< True if engineering mode data was received.
                                                +
                                                268
                                                +
                                                269 bool presenceDetected = false; ///< True if any target is detected.
                                                +
                                                270 bool movingPresenceDetected = false; ///< True if a moving target is detected.
                                                +
                                                271 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
                                                272
                                                -
                                                273 Serial.print(" Engineering Mode: ");
                                                -
                                                274 Serial.println(engineeringMode ? "Yes" : "No");
                                                -
                                                275
                                                -
                                                276 Serial.print(" Target State: ");
                                                -
                                                277 Serial.println(static_cast<int>(targetState));
                                                -
                                                278
                                                -
                                                279 Serial.print(" Moving Target Distance (cm): ");
                                                -
                                                280 Serial.println(movingTargetDistance);
                                                -
                                                281
                                                -
                                                282 Serial.print(" Moving Target Signal: ");
                                                -
                                                283 Serial.println(movingTargetSignal);
                                                -
                                                284
                                                -
                                                285 Serial.print(" Stationary Target Distance (cm): ");
                                                -
                                                286 Serial.println(stationaryTargetDistance);
                                                -
                                                287
                                                -
                                                288 Serial.print(" Stationary Target Signal: ");
                                                -
                                                289 Serial.println(stationaryTargetSignal);
                                                -
                                                290
                                                -
                                                291 Serial.print(" Detected Distance (cm): ");
                                                -
                                                292 Serial.println(detectedDistance);
                                                -
                                                293
                                                -
                                                294 Serial.print(" Light Level: ");
                                                -
                                                295 Serial.println(lightLevel);
                                                +
                                                273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
                                                +
                                                274 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
                                                +
                                                275 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
                                                +
                                                276 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
                                                +
                                                277 byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target.
                                                +
                                                278 unsigned int detectedDistance = 0; ///< General detection distance (cm).
                                                +
                                                279
                                                +
                                                280 // === Engineering mode data ===
                                                +
                                                281 byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals.
                                                +
                                                282 byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets.
                                                +
                                                283
                                                +
                                                284 byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals.
                                                +
                                                285 byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets.
                                                +
                                                286
                                                +
                                                287 byte lightLevel = 0; ///< Reported ambient light level (0–255).
                                                +
                                                288 bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low).
                                                +
                                                289
                                                +
                                                290
                                                +
                                                291 /**
                                                +
                                                292 * @brief Debug helper: print detection data contents to Serial.
                                                +
                                                293 */
                                                +
                                                +
                                                294 void print() const {
                                                +
                                                295 Serial.println("=== DetectionData ===");
                                                296
                                                -
                                                297 Serial.print(" OUT Pin Status: ");
                                                -
                                                298 Serial.println(outPinStatus ? "High" : "Low");
                                                +
                                                297 Serial.print(" Timestamp: ");
                                                +
                                                298 Serial.println(timestamp);
                                                299
                                                -
                                                300 // --- Engineering mode fields ---
                                                -
                                                301 if (engineeringMode) {
                                                -
                                                302 Serial.println(" --- Engineering Mode Data ---");
                                                -
                                                303
                                                -
                                                304 Serial.print(" Moving Target Gate Signal Count: ");
                                                -
                                                305 Serial.println(movingTargetGateSignalCount);
                                                -
                                                306
                                                -
                                                307 Serial.print(" Moving Target Gate Signals: ");
                                                -
                                                308 for (int i = 0; i < movingTargetGateSignalCount; i++) {
                                                -
                                                309 Serial.print(movingTargetGateSignals[i]);
                                                -
                                                310 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
                                                -
                                                311 }
                                                -
                                                312 Serial.println();
                                                -
                                                313
                                                -
                                                314 Serial.print(" Stationary Target Gate Signal Count: ");
                                                -
                                                315 Serial.println(stationaryTargetGateSignalCount);
                                                -
                                                316
                                                -
                                                317 Serial.print(" Stationary Target Gate Signals: ");
                                                -
                                                318 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
                                                -
                                                319 Serial.print(stationaryTargetGateSignals[i]);
                                                -
                                                320 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
                                                -
                                                321 }
                                                -
                                                322 Serial.println();
                                                -
                                                323 }
                                                -
                                                324
                                                -
                                                325 Serial.println("======================");
                                                -
                                                326 }
                                                +
                                                300 Serial.print(" Engineering Mode: ");
                                                +
                                                301 Serial.println(engineeringMode ? "Yes" : "No");
                                                +
                                                302
                                                +
                                                303 Serial.print(" Target State: ");
                                                +
                                                304 Serial.println(static_cast<int>(targetState));
                                                +
                                                305
                                                +
                                                306 Serial.print(" Moving Target Distance (cm): ");
                                                +
                                                307 Serial.println(movingTargetDistance);
                                                +
                                                308
                                                +
                                                309 Serial.print(" Moving Target Signal: ");
                                                +
                                                310 Serial.println(movingTargetSignal);
                                                +
                                                311
                                                +
                                                312 Serial.print(" Stationary Target Distance (cm): ");
                                                +
                                                313 Serial.println(stationaryTargetDistance);
                                                +
                                                314
                                                +
                                                315 Serial.print(" Stationary Target Signal: ");
                                                +
                                                316 Serial.println(stationaryTargetSignal);
                                                +
                                                317
                                                +
                                                318 Serial.print(" Detected Distance (cm): ");
                                                +
                                                319 Serial.println(detectedDistance);
                                                +
                                                320
                                                +
                                                321 Serial.print(" Light Level: ");
                                                +
                                                322 Serial.println(lightLevel);
                                                +
                                                323
                                                +
                                                324 Serial.print(" OUT Pin Status: ");
                                                +
                                                325 Serial.println(outPinStatus ? "High" : "Low");
                                                +
                                                326
                                                +
                                                327 // --- Engineering mode fields ---
                                                +
                                                328 if (engineeringMode) {
                                                +
                                                329 Serial.println(" --- Engineering Mode Data ---");
                                                +
                                                330
                                                +
                                                331 Serial.print(" Moving Target Gate Signal Count: ");
                                                +
                                                332 Serial.println(movingTargetGateSignalCount);
                                                +
                                                333
                                                +
                                                334 Serial.print(" Moving Target Gate Signals: ");
                                                +
                                                335 for (int i = 0; i < movingTargetGateSignalCount; i++) {
                                                +
                                                336 Serial.print(movingTargetGateSignals[i]);
                                                +
                                                337 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
                                                +
                                                338 }
                                                +
                                                339 Serial.println();
                                                +
                                                340
                                                +
                                                341 Serial.print(" Stationary Target Gate Signal Count: ");
                                                +
                                                342 Serial.println(stationaryTargetGateSignalCount);
                                                +
                                                343
                                                +
                                                344 Serial.print(" Stationary Target Gate Signals: ");
                                                +
                                                345 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
                                                +
                                                346 Serial.print(stationaryTargetGateSignals[i]);
                                                +
                                                347 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
                                                +
                                                348 }
                                                +
                                                349 Serial.println();
                                                +
                                                350 }
                                                +
                                                351
                                                +
                                                352 Serial.println("======================");
                                                +
                                                353 }
                                                -
                                                327
                                                -
                                                328 };
                                                +
                                                354
                                                +
                                                355 };
                                                -
                                                329
                                                -
                                                330 /**
                                                -
                                                331 * @brief Stores the sensor’s configuration parameters.
                                                -
                                                332 *
                                                -
                                                333 * This structure represents both static capabilities
                                                -
                                                334 * (e.g. number of gates) and configurable settings
                                                -
                                                335 * (e.g. sensitivities, timeouts, resolution).
                                                -
                                                336 *
                                                -
                                                337 * The values are typically filled by request commands
                                                -
                                                338 * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or
                                                -
                                                339 * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().
                                                -
                                                340 */
                                                -
                                                -
                                                341 struct ConfigData {
                                                -
                                                342 // === Radar capabilities ===
                                                -
                                                343 byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
                                                -
                                                344
                                                -
                                                345 // === Max distance gate settings ===
                                                -
                                                346 byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection.
                                                -
                                                347 byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection.
                                                -
                                                348
                                                -
                                                349 // === Per-gate sensitivity settings ===
                                                -
                                                350 byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100).
                                                -
                                                351 byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100).
                                                -
                                                352
                                                -
                                                353 // === Timeout parameters ===
                                                -
                                                354 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
                                                -
                                                355
                                                -
                                                356 // === Distance resolution ===
                                                -
                                                357 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
                                                -
                                                358
                                                -
                                                359 // === Auxiliary controls ===
                                                -
                                                360 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
                                                -
                                                361 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
                                                -
                                                362 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
                                                -
                                                363
                                                -
                                                364
                                                -
                                                365
                                                -
                                                366
                                                -
                                                367 /**
                                                -
                                                368 * @brief Validates the configuration data for correctness.
                                                -
                                                369 *
                                                -
                                                370 * Ensures that enum values are set and values are within valid ranges.
                                                -
                                                371 * This method is called internally before applying a config
                                                -
                                                372 * via configureAllConfigSettingsAsync().
                                                -
                                                373 *
                                                -
                                                374 * @returns True if the configuration is valid, false otherwise.
                                                -
                                                375 */
                                                -
                                                -
                                                376 bool isValid() const {
                                                -
                                                377 // Validate enum settings
                                                - -
                                                379 if (lightControl == LightControl::NOT_SET) return false;
                                                -
                                                380 if (outputControl == OutputControl::NOT_SET) return false;
                                                -
                                                381
                                                -
                                                382 // Validate max distance gates
                                                - - +
                                                356
                                                +
                                                357 /**
                                                +
                                                358 * @brief Stores the sensor’s configuration parameters.
                                                +
                                                359 *
                                                +
                                                360 * This structure represents both static capabilities
                                                +
                                                361 * (e.g. number of gates) and configurable settings
                                                +
                                                362 * (e.g. sensitivities, timeouts, resolution).
                                                +
                                                363 *
                                                +
                                                364 * The values are typically filled by request commands
                                                +
                                                365 * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or
                                                +
                                                366 * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().
                                                +
                                                367 *
                                                +
                                                368 * @ingroup LD2410Async_Types
                                                +
                                                369 * @ingroup LD2410Async_Configuration
                                                +
                                                370 */
                                                +
                                                +
                                                371 struct ConfigData {
                                                +
                                                372 // === Radar capabilities ===
                                                +
                                                373 byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
                                                +
                                                374
                                                +
                                                375 // === Max distance gate settings ===
                                                +
                                                376 byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection.
                                                +
                                                377 byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection.
                                                +
                                                378
                                                +
                                                379 // === Per-gate sensitivity settings ===
                                                +
                                                380 byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100).
                                                +
                                                381 byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100).
                                                +
                                                382
                                                +
                                                383 // === Timeout parameters ===
                                                +
                                                384 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
                                                385
                                                -
                                                386 // Validate sensitivities
                                                -
                                                387 for (int i = 0; i < 9; i++) {
                                                -
                                                388 if (distanceGateMotionSensitivity[i] > 100) return false;
                                                -
                                                389 if (distanceGateStationarySensitivity[i] > 100) return false;
                                                -
                                                390 }
                                                -
                                                391
                                                -
                                                392 return true;
                                                -
                                                393 }
                                                +
                                                386 // === Distance resolution ===
                                                +
                                                387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
                                                +
                                                388
                                                +
                                                389 // === Auxiliary controls ===
                                                +
                                                390 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
                                                +
                                                391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
                                                +
                                                392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
                                                +
                                                393
                                                +
                                                394
                                                +
                                                395
                                                +
                                                396
                                                +
                                                397 /**
                                                +
                                                398 * @brief Validates the configuration data for correctness.
                                                +
                                                399 *
                                                +
                                                400 * Ensures that enum values are set and values are within valid ranges.
                                                +
                                                401 * This method is called internally before applying a config
                                                +
                                                402 * via configureAllConfigSettingsAsync().
                                                +
                                                403 *
                                                +
                                                404 * @returns True if the configuration is valid, false otherwise.
                                                +
                                                405 */
                                                +
                                                +
                                                406 bool isValid() const {
                                                +
                                                407 // Validate enum settings
                                                + +
                                                409 if (lightControl == LightControl::NOT_SET) return false;
                                                +
                                                410 if (outputControl == OutputControl::NOT_SET) return false;
                                                +
                                                411
                                                +
                                                412 // Validate max distance gates
                                                + + +
                                                415
                                                +
                                                416 // Validate sensitivities
                                                +
                                                417 for (int i = 0; i < 9; i++) {
                                                +
                                                418 if (distanceGateMotionSensitivity[i] > 100) return false;
                                                +
                                                419 if (distanceGateStationarySensitivity[i] > 100) return false;
                                                +
                                                420 }
                                                +
                                                421
                                                +
                                                422 return true;
                                                +
                                                423 }
                                                -
                                                394
                                                -
                                                395 /**
                                                -
                                                396 * @brief Compares this ConfigData with another for equality.
                                                -
                                                397 *
                                                -
                                                398 * @param other The other ConfigData instance to compare against.
                                                -
                                                399 * @returns True if all fields are equal, false otherwise.
                                                -
                                                400 */
                                                -
                                                -
                                                401 bool equals(const ConfigData& other) const {
                                                -
                                                402 if (numberOfGates != other.numberOfGates) return false;
                                                -
                                                403 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
                                                -
                                                404 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
                                                -
                                                405 if (noOneTimeout != other.noOneTimeout) return false;
                                                -
                                                406 if (distanceResolution != other.distanceResolution) return false;
                                                -
                                                407 if (lightThreshold != other.lightThreshold) return false;
                                                -
                                                408 if (lightControl != other.lightControl) return false;
                                                -
                                                409 if (outputControl != other.outputControl) return false;
                                                -
                                                410
                                                -
                                                411 for (int i = 0; i < 9; i++) {
                                                -
                                                412 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
                                                - -
                                                414 }
                                                -
                                                415 return true;
                                                -
                                                416 }
                                                -
                                                -
                                                417
                                                -
                                                418 /**
                                                -
                                                419 * @brief Debug helper: print configuration contents to Serial.
                                                -
                                                420 */
                                                -
                                                -
                                                421 void print() const {
                                                -
                                                422 Serial.println("=== ConfigData ===");
                                                -
                                                423
                                                -
                                                424 Serial.print(" Number of Gates: ");
                                                -
                                                425 Serial.println(numberOfGates);
                                                -
                                                426
                                                -
                                                427 Serial.print(" Max Motion Distance Gate: ");
                                                -
                                                428 Serial.println(maxMotionDistanceGate);
                                                -
                                                429
                                                -
                                                430 Serial.print(" Max Stationary Distance Gate: ");
                                                -
                                                431 Serial.println(maxStationaryDistanceGate);
                                                -
                                                432
                                                -
                                                433 Serial.print(" Motion Sensitivity: ");
                                                -
                                                434 for (int i = 0; i < 9; i++) {
                                                -
                                                435 Serial.print(distanceGateMotionSensitivity[i]);
                                                -
                                                436 if (i < 8) Serial.print(",");
                                                -
                                                437 }
                                                -
                                                438 Serial.println();
                                                -
                                                439
                                                -
                                                440 Serial.print(" Stationary Sensitivity: ");
                                                +
                                                424
                                                +
                                                425 /**
                                                +
                                                426 * @brief Compares this ConfigData with another for equality.
                                                +
                                                427 *
                                                +
                                                428 * @param other The other ConfigData instance to compare against.
                                                +
                                                429 * @returns True if all fields are equal, false otherwise.
                                                +
                                                430 */
                                                +
                                                +
                                                431 bool equals(const ConfigData& other) const {
                                                +
                                                432 if (numberOfGates != other.numberOfGates) return false;
                                                +
                                                433 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
                                                +
                                                434 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
                                                +
                                                435 if (noOneTimeout != other.noOneTimeout) return false;
                                                +
                                                436 if (distanceResolution != other.distanceResolution) return false;
                                                +
                                                437 if (lightThreshold != other.lightThreshold) return false;
                                                +
                                                438 if (lightControl != other.lightControl) return false;
                                                +
                                                439 if (outputControl != other.outputControl) return false;
                                                +
                                                440
                                                441 for (int i = 0; i < 9; i++) {
                                                -
                                                442 Serial.print(distanceGateStationarySensitivity[i]);
                                                -
                                                443 if (i < 8) Serial.print(",");
                                                +
                                                442 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
                                                +
                                                444 }
                                                -
                                                445 Serial.println();
                                                -
                                                446
                                                -
                                                447 Serial.print(" No One Timeout: ");
                                                -
                                                448 Serial.println(noOneTimeout);
                                                -
                                                449
                                                -
                                                450 Serial.print(" Distance Resolution: ");
                                                -
                                                451 Serial.println(static_cast<int>(distanceResolution));
                                                -
                                                452
                                                -
                                                453 Serial.print(" Light Threshold: ");
                                                -
                                                454 Serial.println(lightThreshold);
                                                -
                                                455
                                                -
                                                456 Serial.print(" Light Control: ");
                                                -
                                                457 Serial.println(static_cast<int>(lightControl));
                                                -
                                                458
                                                -
                                                459 Serial.print(" Output Control: ");
                                                -
                                                460 Serial.println(static_cast<int>(outputControl));
                                                -
                                                461
                                                -
                                                462 Serial.println("===================");
                                                -
                                                463 }
                                                +
                                                445 return true;
                                                +
                                                446 }
                                                +
                                                +
                                                447
                                                +
                                                448 /**
                                                +
                                                449 * @brief Debug helper: print configuration contents to Serial.
                                                +
                                                450 */
                                                +
                                                +
                                                451 void print() const {
                                                +
                                                452 Serial.println("=== ConfigData ===");
                                                +
                                                453
                                                +
                                                454 Serial.print(" Number of Gates: ");
                                                +
                                                455 Serial.println(numberOfGates);
                                                +
                                                456
                                                +
                                                457 Serial.print(" Max Motion Distance Gate: ");
                                                +
                                                458 Serial.println(maxMotionDistanceGate);
                                                +
                                                459
                                                +
                                                460 Serial.print(" Max Stationary Distance Gate: ");
                                                +
                                                461 Serial.println(maxStationaryDistanceGate);
                                                +
                                                462
                                                +
                                                463 Serial.print(" Motion Sensitivity: ");
                                                +
                                                464 for (int i = 0; i < 9; i++) {
                                                +
                                                465 Serial.print(distanceGateMotionSensitivity[i]);
                                                +
                                                466 if (i < 8) Serial.print(",");
                                                +
                                                467 }
                                                +
                                                468 Serial.println();
                                                +
                                                469
                                                +
                                                470 Serial.print(" Stationary Sensitivity: ");
                                                +
                                                471 for (int i = 0; i < 9; i++) {
                                                +
                                                472 Serial.print(distanceGateStationarySensitivity[i]);
                                                +
                                                473 if (i < 8) Serial.print(",");
                                                +
                                                474 }
                                                +
                                                475 Serial.println();
                                                +
                                                476
                                                +
                                                477 Serial.print(" No One Timeout: ");
                                                +
                                                478 Serial.println(noOneTimeout);
                                                +
                                                479
                                                +
                                                480 Serial.print(" Distance Resolution: ");
                                                +
                                                481 Serial.println(static_cast<int>(distanceResolution));
                                                +
                                                482
                                                +
                                                483 Serial.print(" Light Threshold: ");
                                                +
                                                484 Serial.println(lightThreshold);
                                                +
                                                485
                                                +
                                                486 Serial.print(" Light Control: ");
                                                +
                                                487 Serial.println(static_cast<int>(lightControl));
                                                +
                                                488
                                                +
                                                489 Serial.print(" Output Control: ");
                                                +
                                                490 Serial.println(static_cast<int>(outputControl));
                                                +
                                                491
                                                +
                                                492 Serial.println("===================");
                                                +
                                                493 }
                                                -
                                                464 };
                                                +
                                                494 };
                                                -
                                                465
                                                -
                                                466
                                                -
                                                467}
                                                +
                                                495
                                                +
                                                496
                                                +
                                                497}
                                                -
                                                AutoConfigStatus
                                                State of the automatic threshold configuration routine.
                                                +
                                                AutoConfigStatus
                                                State of the automatic threshold configuration routine.
                                                @ NOT_SET
                                                Status not yet retrieved.
                                                @ COMPLETED
                                                Auto-configuration finished (success or failure).
                                                @ IN_PROGRESS
                                                Auto-configuration is currently running.
                                                @ NOT_IN_PROGRESS
                                                Auto-configuration not running.
                                                -
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                +
                                                OutputControl
                                                Logic level behavior of the auxiliary output pin.
                                                @ NOT_SET
                                                Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                @ DEFAULT_HIGH_DETECTED_LOW
                                                Default high, goes LOW when detection occurs.
                                                @ DEFAULT_LOW_DETECTED_HIGH
                                                Default low, goes HIGH when detection occurs.
                                                -
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                +
                                                Baudrate
                                                Supported baud rates for the sensor’s UART interface.
                                                @ BAUDRATE_57600
                                                57600 baud.
                                                @ BAUDRATE_38400
                                                38400 baud.
                                                @ BAUDRATE_230500
                                                230400 baud.
                                                @@ -612,11 +642,11 @@
                                                @ BAUDRATE_19200
                                                19200 baud.
                                                @ BAUDRATE_9600
                                                9600 baud.
                                                @ BAUDRATE_460800
                                                460800 baud (high-speed).
                                                -
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                +
                                                DistanceResolution
                                                Distance resolution per gate for detection.
                                                @ NOT_SET
                                                Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                @ RESOLUTION_20CM
                                                Each gate ~0.20 m, max range ~1.8 m.
                                                @ RESOLUTION_75CM
                                                Each gate ~0.75 m, max range ~6 m.
                                                -
                                                TargetState
                                                Represents the current target detection state reported by the radar.
                                                Definition LD2410Types.h:19
                                                +
                                                TargetState
                                                Represents the current target detection state reported by the radar.
                                                Definition LD2410Types.h:21
                                                @ MOVING_AND_STATIONARY_TARGET
                                                Both moving and stationary targets detected.
                                                @ NO_TARGET
                                                No moving or stationary target detected.
                                                @ AUTOCONFIG_IN_PROGRESS
                                                Auto-configuration routine is running.
                                                @@ -624,44 +654,44 @@
                                                @ STATIONARY_TARGET
                                                A stationary target has been detected.
                                                @ MOVING_TARGET
                                                A moving target has been detected.
                                                @ AUTOCONFIG_SUCCESS
                                                Auto-configuration completed successfully.
                                                -
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:89
                                                +
                                                LightControl
                                                Light-dependent control status of the auxiliary output.
                                                Definition LD2410Types.h:97
                                                @ NOT_SET
                                                Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                @ LIGHT_BELOW_THRESHOLD
                                                Condition: light < threshold.
                                                @ LIGHT_ABOVE_THRESHOLD
                                                Condition: light ≥ threshold.
                                                @ NO_LIGHT_CONTROL
                                                Output is not influenced by light levels.
                                                -
                                                Stores the sensor’s configuration parameters.
                                                -
                                                byte distanceGateStationarySensitivity[9]
                                                Stationary sensitivity values per gate (0–100).
                                                -
                                                void print() const
                                                Debug helper: print configuration contents to Serial.
                                                -
                                                byte distanceGateMotionSensitivity[9]
                                                Motion sensitivity values per gate (0–100).
                                                -
                                                byte maxMotionDistanceGate
                                                Furthest gate used for motion detection.
                                                -
                                                OutputControl outputControl
                                                Logic configuration of the OUT pin.
                                                -
                                                bool equals(const ConfigData &other) const
                                                Compares this ConfigData with another for equality.
                                                -
                                                byte lightThreshold
                                                Threshold for auxiliary light control (0–255).
                                                -
                                                bool isValid() const
                                                Validates the configuration data for correctness.
                                                -
                                                LightControl lightControl
                                                Light-dependent auxiliary control mode.
                                                -
                                                byte maxStationaryDistanceGate
                                                Furthest gate used for stationary detection.
                                                -
                                                byte numberOfGates
                                                Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
                                                -
                                                DistanceResolution distanceResolution
                                                Current distance resolution. A reboot is required to activate changed setting after calling configure...
                                                -
                                                unsigned short noOneTimeout
                                                Timeout (seconds) until "no presence" is declared.
                                                -
                                                Holds the most recent detection data reported by the radar.
                                                -
                                                void print() const
                                                Debug helper: print detection data contents to Serial.
                                                -
                                                byte stationaryTargetGateSignals[9]
                                                Per-gate signal strengths for stationary targets.
                                                -
                                                bool engineeringMode
                                                True if engineering mode data was received.
                                                -
                                                bool stationaryPresenceDetected
                                                True if a stationary target is detected.
                                                -
                                                byte stationaryTargetSignal
                                                Signal strength (0–100) of the stationary target.
                                                -
                                                byte lightLevel
                                                Reported ambient light level (0–255).
                                                -
                                                unsigned int detectedDistance
                                                General detection distance (cm).
                                                -
                                                byte movingTargetGateSignalCount
                                                Number of gates with moving target signals.
                                                -
                                                TargetState targetState
                                                Current detection state.
                                                -
                                                byte movingTargetGateSignals[9]
                                                Per-gate signal strengths for moving targets.
                                                -
                                                byte stationaryTargetGateSignalCount
                                                Number of gates with stationary target signals.
                                                -
                                                bool presenceDetected
                                                True if any target is detected.
                                                -
                                                byte movingTargetSignal
                                                Signal strength (0–100) of the moving target.
                                                -
                                                bool outPinStatus
                                                Current status of the OUT pin (true = high, false = low).
                                                -
                                                unsigned long timestamp
                                                Timestamp (ms since boot) when this data was received.
                                                -
                                                bool movingPresenceDetected
                                                True if a moving target is detected.
                                                -
                                                unsigned int movingTargetDistance
                                                Distance (cm) to the nearest moving target.
                                                -
                                                unsigned int stationaryTargetDistance
                                                Distance (cm) to the nearest stationary target.
                                                +
                                                Stores the sensor’s configuration parameters.
                                                +
                                                byte distanceGateStationarySensitivity[9]
                                                Stationary sensitivity values per gate (0–100).
                                                +
                                                void print() const
                                                Debug helper: print configuration contents to Serial.
                                                +
                                                byte distanceGateMotionSensitivity[9]
                                                Motion sensitivity values per gate (0–100).
                                                +
                                                byte maxMotionDistanceGate
                                                Furthest gate used for motion detection.
                                                +
                                                OutputControl outputControl
                                                Logic configuration of the OUT pin.
                                                +
                                                bool equals(const ConfigData &other) const
                                                Compares this ConfigData with another for equality.
                                                +
                                                byte lightThreshold
                                                Threshold for auxiliary light control (0–255).
                                                +
                                                bool isValid() const
                                                Validates the configuration data for correctness.
                                                +
                                                LightControl lightControl
                                                Light-dependent auxiliary control mode.
                                                +
                                                byte maxStationaryDistanceGate
                                                Furthest gate used for stationary detection.
                                                +
                                                byte numberOfGates
                                                Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
                                                +
                                                DistanceResolution distanceResolution
                                                Current distance resolution. A reboot is required to activate changed setting after calling configure...
                                                +
                                                unsigned short noOneTimeout
                                                Timeout (seconds) until "no presence" is declared.
                                                +
                                                Holds the most recent detection data reported by the radar.
                                                +
                                                void print() const
                                                Debug helper: print detection data contents to Serial.
                                                +
                                                byte stationaryTargetGateSignals[9]
                                                Per-gate signal strengths for stationary targets.
                                                +
                                                bool engineeringMode
                                                True if engineering mode data was received.
                                                +
                                                bool stationaryPresenceDetected
                                                True if a stationary target is detected.
                                                +
                                                byte stationaryTargetSignal
                                                Signal strength (0–100) of the stationary target.
                                                +
                                                byte lightLevel
                                                Reported ambient light level (0–255).
                                                +
                                                unsigned int detectedDistance
                                                General detection distance (cm).
                                                +
                                                byte movingTargetGateSignalCount
                                                Number of gates with moving target signals.
                                                +
                                                TargetState targetState
                                                Current detection state.
                                                +
                                                byte movingTargetGateSignals[9]
                                                Per-gate signal strengths for moving targets.
                                                +
                                                byte stationaryTargetGateSignalCount
                                                Number of gates with stationary target signals.
                                                +
                                                bool presenceDetected
                                                True if any target is detected.
                                                +
                                                byte movingTargetSignal
                                                Signal strength (0–100) of the moving target.
                                                +
                                                bool outPinStatus
                                                Current status of the OUT pin (true = high, false = low).
                                                +
                                                unsigned long timestamp
                                                Timestamp (ms since boot) when this data was received.
                                                +
                                                bool movingPresenceDetected
                                                True if a moving target is detected.
                                                +
                                                unsigned int movingTargetDistance
                                                Distance (cm) to the nearest moving target.
                                                +
                                                unsigned int stationaryTargetDistance
                                                Distance (cm) to the nearest stationary target.
                                                diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html index a6971e2..d72e74c 100644 --- a/docu/classLD2410Async-members.html +++ b/docu/classLD2410Async-members.html @@ -104,15 +104,15 @@

                                                This is the complete list of members for LD2410Async, including all inherited members.

                                                - - + + - - + + - - - + + + @@ -126,37 +126,37 @@ - - + + - + - - - - - + + + + + - + - - - - - + + + + + - - - + + + @@ -167,8 +167,8 @@ - - + +
                                                asyncCancel()LD2410Async
                                                AsyncCommandCallback typedefLD2410Async
                                                AsyncCommandResult enum nameLD2410Async
                                                AsyncCommandCallback typedefLD2410Async
                                                AsyncCommandResult enum nameLD2410Async
                                                asyncIsBusy()LD2410Async
                                                autoConfigStatusLD2410Async
                                                begin()LD2410Async
                                                autoConfigStatusLD2410Async
                                                begin()LD2410Async
                                                beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                bufferSizeLD2410Async
                                                configDataLD2410Async
                                                configModeEnabledLD2410Async
                                                bufferSizeLD2410Async
                                                configDataLD2410Async
                                                configModeEnabledLD2410Async
                                                configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                detectionDataLD2410Async
                                                DetectionDataCallback typedefLD2410Async
                                                detectionDataLD2410Async
                                                DetectionDataCallback typedefLD2410Async
                                                disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                disableInactivityHandling()LD2410Asyncinline
                                                disableInactivityHandling()LD2410Asyncinline
                                                enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                enableInactivityHandling()LD2410Asyncinline
                                                end()LD2410Async
                                                engineeringModeEnabledLD2410Async
                                                firmwareLD2410Async
                                                GenericCallback typedefLD2410Async
                                                enableInactivityHandling()LD2410Asyncinline
                                                end()LD2410Async
                                                engineeringModeEnabledLD2410Async
                                                firmwareLD2410Async
                                                GenericCallback typedefLD2410Async
                                                getAsyncCommandTimeoutMs() constLD2410Asyncinline
                                                getConfigData() constLD2410Async
                                                getConfigDataRef() constLD2410Asyncinline
                                                getDetectionData() constLD2410Async
                                                getDetectionDataRef() constLD2410Asyncinline
                                                getInactivityTimeoutMs() constLD2410Asyncinline
                                                getInactivityTimeoutMs() constLD2410Asyncinline
                                                isConfigModeEnabled() constLD2410Asyncinline
                                                isEngineeringModeEnabled() constLD2410Asyncinline
                                                isInactivityHandlingEnabled() constLD2410Asyncinline
                                                LD2410Async(Stream &serial)LD2410Async
                                                macLD2410Async
                                                macStringLD2410Async
                                                protocolVersionLD2410Async
                                                isInactivityHandlingEnabled() constLD2410Asyncinline
                                                LD2410Async(Stream &serial)LD2410Async
                                                macLD2410Async
                                                macStringLD2410Async
                                                protocolVersionLD2410Async
                                                rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
                                                registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
                                                registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
                                                registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
                                                registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
                                                registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
                                                requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
                                                setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
                                                setInactivityHandling(bool enable)LD2410Async
                                                setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
                                                setInactivityHandling(bool enable)LD2410Async
                                                setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
                                                diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html index c1e65c7..3184c4b 100644 --- a/docu/classLD2410Async.html +++ b/docu/classLD2410Async.html @@ -107,69 +107,64 @@

                                                #include <LD2410Async.h>

                                                -
                                                -Collaboration diagram for LD2410Async:
                                                -
                                                -
                                                -
                                                [legend]
                                                - - - - - - - - - - - - + + + + + + + + + + +

                                                Public Types

                                                enum class  AsyncCommandResult : byte { AsyncCommandResult::SUCCESS -, AsyncCommandResult::FAILED -, AsyncCommandResult::TIMEOUT -, AsyncCommandResult::CANCELED +
                                                enum class  AsyncCommandResult : byte { SUCCESS +, FAILED +, TIMEOUT +, CANCELED }
                                                 Result of an asynchronous command execution. More...
                                                 
                                                typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                 Callback signature for asynchronous command completion.
                                                 
                                                typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
                                                 Generic callback signature used for simple notifications.
                                                 
                                                typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                 Callback type for receiving detection data events.
                                                 
                                                 Result of an asynchronous command execution. More...
                                                 
                                                typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                 Callback signature for asynchronous command completion.
                                                 
                                                typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
                                                 Generic callback signature used for simple notifications.
                                                 
                                                typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                 Callback type for receiving detection data events.
                                                 
                                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -194,140 +189,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

                                                Public Member Functions

                                                 LD2410Async (Stream &serial)
                                                 Constructs a new LD2410Async instance bound to a given serial stream.
                                                 
                                                bool begin ()
                                                 Starts the background task that continuously reads data from the sensor.
                                                 
                                                bool end ()
                                                 Stops the background task started by begin().
                                                 
                                                void setInactivityHandling (bool enable)
                                                 Enables or disables automatic inactivity handling of the sensor.
                                                 
                                                void enableInactivityHandling ()
                                                 Convenience method: enables inactivity handling.
                                                 
                                                void disableInactivityHandling ()
                                                 Convenience method: disables inactivity handling.
                                                 
                                                bool isInactivityHandlingEnabled () const
                                                 Returns whether inactivity handling is currently enabled.
                                                 
                                                void setInactivityTimeoutMs (unsigned long timeoutMs)
                                                 Sets the timeout period for inactivity handling.
                                                 
                                                unsigned long getInactivityTimeoutMs () const
                                                 Returns the current inactivity timeout period.
                                                 
                                                void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
                                                 Registers a callback for new detection data.
                                                 
                                                void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration changes.
                                                 
                                                void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration data updates.
                                                 
                                                 LD2410Async (Stream &serial)
                                                 Constructs a new LD2410Async instance bound to a given serial stream.
                                                 
                                                bool begin ()
                                                 Starts the background task that continuously reads data from the sensor.
                                                 
                                                bool end ()
                                                 Stops the background task started by begin().
                                                 
                                                void setInactivityHandling (bool enable)
                                                 Enables or disables automatic inactivity handling of the sensor.
                                                 
                                                void enableInactivityHandling ()
                                                 Convenience method: enables inactivity handling.
                                                 
                                                void disableInactivityHandling ()
                                                 Convenience method: disables inactivity handling.
                                                 
                                                bool isInactivityHandlingEnabled () const
                                                 Returns whether inactivity handling is currently enabled.
                                                 
                                                void setInactivityTimeoutMs (unsigned long timeoutMs)
                                                 Sets the timeout period for inactivity handling.
                                                 
                                                unsigned long getInactivityTimeoutMs () const
                                                 Returns the current inactivity timeout period.
                                                 
                                                void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
                                                 Registers a callback for new detection data.
                                                 
                                                void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration changes.
                                                 
                                                void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
                                                 Registers a callback for configuration data updates.
                                                 
                                                LD2410Types::DetectionData getDetectionData () const
                                                 Returns a clone of the latest detection data from the radar.
                                                 
                                                unsigned long getAsyncCommandTimeoutMs () const
                                                 Returns the current async command timeout.
                                                 
                                                bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Enables config mode on the radar.
                                                 
                                                bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Disables config mode on the radar.
                                                 
                                                bool isConfigModeEnabled () const
                                                 Detects if config mode is enabled.
                                                 
                                                bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Enables engineering mode.
                                                 
                                                bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Disables engineering mode.
                                                 
                                                bool isEngineeringModeEnabled () const
                                                 Detects if engineering mode is enabled.
                                                 
                                                bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the current gate parameters from the sensor.
                                                 
                                                bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
                                                bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
                                                 Configures the maximum detection gates and "no-one" timeout on the sensor.
                                                 
                                                bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
                                                bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
                                                 Configures sensitivity thresholds for all gates at once.
                                                 
                                                bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
                                                bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
                                                 Configures sensitivity thresholds for a single gate.
                                                 
                                                bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the firmware version of the sensor.
                                                 
                                                bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
                                                bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
                                                 Configures the UART baud rate of the sensor.
                                                 
                                                bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
                                                bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
                                                 Configures the baudrate of the serial port of the sensor.
                                                 
                                                bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Restores factory settings of the sensor.
                                                 
                                                bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Reboots the sensor.
                                                 
                                                bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Enables bluetooth.
                                                 
                                                bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Disables bluetooth.
                                                 
                                                bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the bluetooth mac address.
                                                 
                                                bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
                                                bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
                                                 Sets the password for bluetooth access to the sensor.
                                                 
                                                bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
                                                bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
                                                 Sets the password for bluetooth access to the sensor.
                                                 
                                                bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Resets the password for bluetooth access to the default value (HiLink)
                                                 
                                                bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
                                                bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
                                                 Configures the distance resolution of the radar.
                                                 
                                                bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Configures the distance resolution explicitly to 75 cm per gate.
                                                 
                                                bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Configures the distance resolution explicitly to 20 cm per gate.
                                                 
                                                bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the current distance resolution setting from the sensor.
                                                 
                                                bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
                                                bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
                                                 Configures the auxiliary control parameters (light and output pin).
                                                 
                                                bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the current auxiliary control settings.
                                                 
                                                bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Starts the automatic configuration (auto-config) routine on the sensor.
                                                 
                                                bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests the current status of the auto-config routine.
                                                 
                                                bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests all configuration settings from the sensor.
                                                 
                                                bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
                                                bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
                                                 Requests all static information from the sensor.
                                                 
                                                bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
                                                bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
                                                 Applies a full ConfigData struct to the LD2410.
                                                 
                                                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                Public Attributes

                                                LD2410Types::DetectionData detectionData
                                                 Latest detection results from the radar.
                                                 
                                                LD2410Types::ConfigData configData
                                                 Current configuration parameters of the radar.
                                                 
                                                unsigned long protocolVersion = 0
                                                 Protocol version reported by the radar.
                                                 
                                                unsigned long bufferSize = 0
                                                 Buffer size reported by the radar protocol.
                                                 
                                                bool configModeEnabled = false
                                                 True if the sensor is currently in config mode.
                                                 
                                                bool engineeringModeEnabled = false
                                                 True if the sensor is currently in engineering mode.
                                                 
                                                String firmware = ""
                                                 Firmware version string of the radar.
                                                 
                                                byte mac [6]
                                                 MAC address of the radar’s Bluetooth module (if available).
                                                 
                                                String macString = ""
                                                 MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                 
                                                LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
                                                 Current status of the auto-configuration routine.
                                                 
                                                LD2410Types::DetectionData detectionData
                                                 Latest detection results from the radar.
                                                 
                                                LD2410Types::ConfigData configData
                                                 Current configuration parameters of the radar.
                                                 
                                                unsigned long protocolVersion = 0
                                                 Protocol version reported by the radar.
                                                 
                                                unsigned long bufferSize = 0
                                                 Buffer size reported by the radar protocol.
                                                 
                                                bool configModeEnabled = false
                                                 True if the sensor is currently in config mode.
                                                 
                                                bool engineeringModeEnabled = false
                                                 True if the sensor is currently in engineering mode.
                                                 
                                                String firmware = ""
                                                 Firmware version string of the radar.
                                                 
                                                byte mac [6]
                                                 MAC address of the radar’s Bluetooth module (if available).
                                                 
                                                String macString = ""
                                                 MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
                                                 
                                                LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
                                                 Current status of the auto-configuration routine.
                                                 

                                                Detailed Description

                                                Definition at line 88 of file LD2410Async.h.

                                                -

                                                Member Function Documentation

                                                +

                                                Member Typedef Documentation

                                                + +

                                                ◆ AsyncCommandCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
                                                +
                                                + +

                                                Callback signature for asynchronous command completion.

                                                +
                                                Parameters
                                                + + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
                                                userDataUser-specified value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 118 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ DetectionDataCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
                                                +
                                                + +

                                                Callback type for receiving detection data events.

                                                +

                                                This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

                                                +
                                                Parameters
                                                + + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
                                                userDataUser-defined value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 147 of file LD2410Async.h.

                                                + +
                                                +
                                                + +

                                                ◆ GenericCallback

                                                + +
                                                +
                                                + + + + +
                                                void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
                                                +
                                                + +

                                                Generic callback signature used for simple notifications.

                                                +
                                                Parameters
                                                + + + +
                                                senderPointer to the LD2410Async instance that triggered the callback.
                                                userDataUser-specified value passed when registering the callback.
                                                +
                                                +
                                                + +

                                                Definition at line 130 of file LD2410Async.h.

                                                + +
                                                +
                                                +

                                                Member Enumeration Documentation

                                                + +

                                                ◆ AsyncCommandResult

                                                + +
                                                +
                                                + + + + + +
                                                + + + + +
                                                enum class LD2410Async::AsyncCommandResult : byte
                                                +
                                                +strong
                                                +
                                                + +

                                                Result of an asynchronous command execution.

                                                +

                                                Every async command reports back its outcome via the callback.

                                                + + + + + +
                                                Enumerator
                                                SUCCESS 

                                                Command completed successfully and ACK was received.

                                                +
                                                FAILED 

                                                Command failed (sensor responded with negative ACK).

                                                +
                                                TIMEOUT 

                                                No ACK received within the expected time window.

                                                +
                                                CANCELED 

                                                Command was canceled by the user before completion.

                                                +
                                                + +

                                                Definition at line 98 of file LD2410Async.h.

                                                +
                                                98 : byte {
                                                +
                                                99 SUCCESS, ///< Command completed successfully and ACK was received.
                                                +
                                                100 FAILED, ///< Command failed (sensor responded with negative ACK).
                                                +
                                                101 TIMEOUT, ///< No ACK received within the expected time window.
                                                +
                                                102 CANCELED ///< Command was canceled by the user before completion.
                                                +
                                                103 };
                                                +
                                                @ TIMEOUT
                                                No ACK received within the expected time window.
                                                +
                                                @ FAILED
                                                Command failed (sensor responded with negative ACK).
                                                +
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                +
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                +
                                                +
                                                +
                                                +

                                                Constructor & Destructor Documentation

                                                + +

                                                ◆ LD2410Async()

                                                + +
                                                +
                                                + + + + + + + +
                                                LD2410Async::LD2410Async (Stream & serial)
                                                +
                                                + +

                                                Constructs a new LD2410Async instance bound to a given serial stream.

                                                +

                                                The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

                                                +

                                                Example:

                                                HardwareSerial radarSerial(2);
                                                +
                                                LD2410Async radar(radarSerial);
                                                + +
                                                Parameters
                                                + + +
                                                serialReference to a Stream object used to exchange data with the sensor.
                                                +
                                                +
                                                + +

                                                Definition at line 1646 of file LD2410Async.cpp.

                                                +
                                                1647{
                                                +
                                                1648 sensor = &serial;
                                                +
                                                1649}
                                                +
                                                +
                                                +
                                                +

                                                Member Function Documentation

                                                ◆ asyncCancel()

                                                @@ -348,9 +505,8 @@

                                                Definition at line 534 of file LD2410Async.cpp.

                                                534 {
                                                -
                                                535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
                                                +
                                                535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
                                                536}
                                                -
                                                @ CANCELED
                                                Command was canceled by the user before completion.
                                                @@ -376,12 +532,66 @@

                                                594 {
                                                595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
                                                596}
                                                -
                                                -Here is the caller graph for this function:
                                                -
                                                -
                                                +
                                                + +
                                                +

                                                ◆ begin()

                                                + +
                                                +
                                                + + + + + + + +
                                                bool LD2410Async::begin ()
                                                +
                                                +

                                                Starts the background task that continuously reads data from the sensor.

                                                +

                                                This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

                                                +
                                                Returns
                                                true if the task was successfully started, false if already running.
                                                + +

                                                Definition at line 1577 of file LD2410Async.cpp.

                                                +
                                                1577 {
                                                +
                                                1578 if (taskHandle == NULL) {
                                                + +
                                                1580 DEBUG_PRINTLN("Starting data processing task");
                                                +
                                                1581 taskStop = false;
                                                +
                                                1582
                                                +
                                                1583 BaseType_t result = xTaskCreate(
                                                +
                                                1584 [](void* param) {
                                                +
                                                1585 if (param) {
                                                +
                                                1586 static_cast<LD2410Async*>(param)->taskLoop();
                                                +
                                                1587 }
                                                +
                                                1588 vTaskDelete(NULL);
                                                +
                                                1589 },
                                                +
                                                1590 "LD2410Task",
                                                +
                                                1591 4096,
                                                +
                                                1592 this,
                                                +
                                                1593 1,
                                                +
                                                1594 &taskHandle
                                                +
                                                1595 );
                                                +
                                                1596
                                                +
                                                1597 if (result == pdPASS) {
                                                +
                                                1598 return true;
                                                +
                                                1599 }
                                                +
                                                1600 else {
                                                + +
                                                1602 DEBUG_PRINTLN("Task creation failed");
                                                +
                                                1603 taskHandle = NULL;
                                                +
                                                1604 return false;
                                                +
                                                1605 }
                                                +
                                                1606 }
                                                + +
                                                1608 DEBUG_PRINTLN("Data processing task already active");
                                                +
                                                1609 return false;
                                                +
                                                1610}
                                                +
                                                #define DEBUG_PRINT_MILLIS
                                                Definition LD2410Debug.h:48
                                                +
                                                #define DEBUG_PRINTLN(...)
                                                Definition LD2410Debug.h:50
                                                +
                                                @@ -393,7 +603,7 @@

                                                bool LD2410Async::beginAutoConfigAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -412,17 +622,15 @@

                                                Example: Run auto-config

                                                radar.beginAutoConfigAsync([](LD2410Async* sender,
                                                - +
                                                byte) {
                                                -
                                                if (result == AsyncCommandResult::SUCCESS) {
                                                +
                                                if (result == AsyncCommandResult::SUCCESS) {
                                                Serial.println("Auto-config started.");
                                                } else {
                                                Serial.println("Failed to start auto-config.");
                                                }
                                                });
                                                - -
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                -
                                                @ SUCCESS
                                                Command completed successfully and ACK was received.
                                                +
                                                AsyncCommandResult
                                                Result of an asynchronous command execution.
                                                Definition LD2410Async.h:98

                                                Do:

    -

    Definition at line 593 of file LD2410Async.h.

    -
    593{ return asyncCommandTimeoutMs; }
    +

    Definition at line 666 of file LD2410Async.h.

    +
    666{ return asyncCommandTimeoutMs; }
    @@ -1663,9 +1872,9 @@

    // Send modified config back to sensor
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    - +
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    Serial.println("Config updated successfully!");
    }
    });
    @@ -1684,9 +1893,9 @@

    Definition at line 1451 of file LD2410Async.cpp.

    1451 {
    -
    1452 return configData;
    +
    1452 return configData;
    1453}
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    @@ -1737,8 +1946,8 @@

    Returns
    Const reference to the current ConfigData.
    -

    Definition at line 554 of file LD2410Async.h.

    -
    554{ return configData; }
    +

    Definition at line 619 of file LD2410Async.h.

    +
    619{ return configData; }
    @@ -1783,9 +1992,9 @@

    Definition at line 1447 of file LD2410Async.cpp.

    1447 {
    -
    1448 return detectionData;
    +
    1448 return detectionData;
    1449}
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    @@ -1836,13 +2045,13 @@

    Returns
    Const reference to the current DetectionData.
    -

    Definition at line 477 of file LD2410Async.h.

    -
    477{ return detectionData; }
    +

    Definition at line 536 of file LD2410Async.h.

    +
    536{ return detectionData; }
    - -

    ◆ isConfigModeEnabled()

    + +

    ◆ getInactivityTimeoutMs()

    @@ -1851,7 +2060,7 @@

    - + @@ -1864,24 +2073,16 @@

    -

    Detects if config mode is enabled.

    -
    Returns
    true if config mode is anabled, false if config mode is disabled
    - -

    Definition at line 643 of file LD2410Async.h.

    -
    643 {
    -
    644 return configModeEnabled;
    -
    645 };
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    -Here is the caller graph for this function:
    -
    -
    -
    +

    Returns the current inactivity timeout period.

    +
    Returns
    Timeout in milliseconds.
    +

    Definition at line 405 of file LD2410Async.h.

    +
    405{ return inactivityHandlingTimeoutMs; };
    +
    - -

    ◆ isEngineeringModeEnabled()

    + +

    ◆ isConfigModeEnabled()

    @@ -1890,7 +2091,7 @@

    bool LD2410Async::isConfigModeEnabled unsigned long LD2410Async::getInactivityTimeoutMs ( ) const
    - + @@ -1903,27 +2104,92 @@

    -

    Detects if engineering mode is enabled.

    -
    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    +

    Detects if config mode is enabled.

    +
    Returns
    true if config mode is anabled, false if config mode is disabled
    -

    Definition at line 686 of file LD2410Async.h.

    -
    686 {
    - -
    688 };
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +

    Definition at line 724 of file LD2410Async.h.

    +
    724 {
    +
    725 return configModeEnabled;
    +
    726 };
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    - -

    ◆ rebootAsync()

    + +

    ◆ isEngineeringModeEnabled()

    -
    bool LD2410Async::isEngineeringModeEnabled bool LD2410Async::isConfigModeEnabled ( ) const
    - +
    + + + + +
    + + + + + + + +
    bool LD2410Async::isEngineeringModeEnabled () const
    +
    +inline
    +

    + +

    Detects if engineering mode is enabled.

    +
    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    + +

    Definition at line 776 of file LD2410Async.h.

    +
    776 {
    + +
    778 };
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    +
    +
    + +

    ◆ isInactivityHandlingEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isInactivityHandlingEnabled () const
    +
    +inline
    +
    + +

    Returns whether inactivity handling is currently enabled.

    +
    Returns
    true if inactivity handling is enabled, false otherwise.
    + +

    Definition at line 381 of file LD2410Async.h.

    +
    381{ return inactivityHandlingEnabled; };
    +
    +
    +
    + +

    ◆ rebootAsync()

    + +
    +
    + + - + @@ -1956,12 +2222,119 @@

    1440
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    1442}
    -
    -Here is the call graph for this function:
    -
    -
    +
    + + +
    +

    ◆ registerConfigChangedCallback()

    + +
    +
    +

    bool LD2410Async::rebootAsync (AsyncCommandCallback callback, AsyncCommandCallback callback,
    + + + + + + + + + + +
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration changes.

    +

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 212 of file LD2410Async.cpp.

    +
    212 {
    +
    213 configChangedCallbackUserData = userData;
    +
    214 configChangedCallback = callback;
    +
    215}
    +
    +
    +
    + +

    ◆ registerConfigUpdateReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration data updates.

    +

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 206 of file LD2410Async.cpp.

    +
    206 {
    +
    207
    +
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    +
    209 configUpdateReceivedReceivedCallback = callback;
    +
    210}
    +
    +
    + +

    ◆ registerDetectionDataReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for new detection data.

    +

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    +

    Definition at line 201 of file LD2410Async.cpp.

    +
    201 {
    +
    202 detectionDataCallback = callback;
    +
    203 detectionDataCallbackUserData = userData;
    +
    204}
    +
    @@ -1973,7 +2346,7 @@

    bool LD2410Async::requestAllConfigSettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -1989,7 +2362,7 @@

    registerConfigUpdateReceivedCallback() is invoked after completion.

    +

    The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

    Note
    This is a high-level method that involves multiple commands.
    Requires config mode. This method will manage mode switching automatically.
    @@ -1998,15 +2371,15 @@

    Example: Refresh config data

    radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    - +
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    Serial.println("All config data refreshed:");
    sender->getConfigDataRef().print();
    }
    });
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    void print() const
    Debug helper: print configuration contents to Serial.
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    void print() const
    Debug helper: print configuration contents to Serial.

    Do:

      @@ -2045,12 +2418,7 @@

      constexpr byte requestDistanceResolutionCommandData[4]
      Definition LD2410Defs.h:31
      constexpr byte requestAuxControlSettingsCommandData[4]
      Definition LD2410Defs.h:65
      constexpr byte requestParamsCommandData[4]
      Definition LD2410Defs.h:56
      -
      -Here is the call graph for this function:
      -
      -
      -
      - + @@ -2062,7 +2430,7 @@

      bool LD2410Async::requestAllStaticDataAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2086,18 +2454,18 @@

      Example: Retrieve firmware and MAC

      radar.requestAllStaticDataAsync([](LD2410Async* sender,
      - +
      byte) {
      -
      if (result == AsyncCommandResult::SUCCESS) {
      +
      if (result == AsyncCommandResult::SUCCESS) {
      Serial.print("Firmware: ");
      -
      Serial.println(sender->firmware);
      +
      Serial.println(sender->firmware);
      Serial.print("MAC: ");
      -
      Serial.println(sender->macString);
      +
      Serial.println(sender->macString);
      }
      });
      -
      String firmware
      Firmware version string of the radar.
      -
      String macString
      MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
      +
      String firmware
      Firmware version string of the radar.
      +
      String macString
      MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

      Do:

        @@ -2135,12 +2503,7 @@

        1080}
        constexpr byte requestMacAddressCommandData[6]
        Definition LD2410Defs.h:25
        constexpr byte requestFirmwareCommandData[4]
        Definition LD2410Defs.h:28
        -
        -Here is the call graph for this function:
        -
        -
        -
        - + @@ -2152,7 +2515,7 @@

        bool LD2410Async::requestAutoConfigStatusAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2174,10 +2537,10 @@

        Example: Check auto-config status

        radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
        - +
        byte) {
        -
        if (result == AsyncCommandResult::SUCCESS) {
        -
        switch (sender->autoConfigStatus) {
        +
        if (result == AsyncCommandResult::SUCCESS) {
        +
        switch (sender->autoConfigStatus) {
        case AutoConfigStatus::NOT_IN_PROGRESS:
        Serial.println("Auto-config not running.");
        break;
        @@ -2194,7 +2557,7 @@

        Serial.println("Failed to request auto-config status.");
        }
        });
        -
        LD2410Types::AutoConfigStatus autoConfigStatus
        Current status of the auto-configuration routine.
        +
        LD2410Types::AutoConfigStatus autoConfigStatus
        Current status of the auto-configuration routine.

        Do:

          @@ -2225,12 +2588,7 @@

          1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
          1058}
          constexpr byte requestAutoConfigStatusCommandData[4]
          Definition LD2410Defs.h:74
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2242,7 +2600,7 @@

          bool LD2410Async::requestAuxControlSettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2273,12 +2631,7 @@

          1037
          1039}
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2290,7 +2643,7 @@

          bool LD2410Async::requestBluetoothMacAddressAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2318,12 +2671,7 @@

          950 if (asyncIsBusy()) return false;
          951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
          952}
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2335,7 +2683,7 @@

          bool LD2410Async::requestDistanceResolutioncmAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2364,12 +2712,7 @@

          1012 if (asyncIsBusy()) return false;
          1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
          1014}
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2381,7 +2724,7 @@

          bool LD2410Async::requestFirmwareAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2412,12 +2755,7 @@

          889
          891}
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2429,7 +2767,7 @@

          bool LD2410Async::requestGateParametersAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2460,12 +2798,7 @@

          827 if (asyncIsBusy()) return false;
          828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
          829}
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2477,7 +2810,7 @@

          bool LD2410Async::restoreFactorySettingsAsync ( - AsyncCommandCallback callback, + AsyncCommandCallback callback, @@ -2510,12 +2843,7 @@

          926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
          927}
          constexpr byte restoreFactorSettingsCommandData[4]
          Definition LD2410Defs.h:41
          -
          -Here is the call graph for this function:
          -
          -
          -
          - + @@ -2550,9 +2878,275 @@

          Definition at line 586 of file LD2410Async.h.

          -
          586{ asyncCommandTimeoutMs = timeoutMs; }
          +

          Definition at line 657 of file LD2410Async.h.

          +
          657{ asyncCommandTimeoutMs = timeoutMs; }
          +
          +
          + + +

          ◆ setInactivityHandling()

          + +
          +
          + + + + + + + +
          void LD2410Async::setInactivityHandling (bool enable)
          +
          + +

          Enables or disables automatic inactivity handling of the sensor.

          +

          When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

            +
          1. It first tries to exit config mode (even if configModeEnabled is false).
          2. +
          3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
          4. +
          +

          This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

          +
          Parameters
          + + +
          enablePass true to enable inactivity handling, false to disable it.
          +
          +
          + +

          Definition at line 1521 of file LD2410Async.cpp.

          +
          1521 {
          +
          1522 inactivityHandlingEnabled = enable;
          +
          1523}
          +
          +
          +
          + +

          ◆ setInactivityTimeoutMs()

          + +
          +
          + + + + + +
          + + + + + + + +
          void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
          +
          +inline
          +
          + +

          Sets the timeout period for inactivity handling.

          +

          If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

          +

          Default is 60000 ms (1 minute).

          +
          Parameters
          + + +
          timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
          +
          +
          + +

          Definition at line 396 of file LD2410Async.h.

          +
          396{ inactivityHandlingTimeoutMs = timeoutMs; };
          +
          +
          +

          Member Data Documentation

          + +

          ◆ autoConfigStatus

          + +
          +
          + + + + +
          LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
          +
          + +

          Current status of the auto-configuration routine.

          +

          Updated by requestAutoConfigStatusAsync().

          + +

          Definition at line 272 of file LD2410Async.h.

          + +
          +
          + +

          ◆ bufferSize

          + +
          +
          + + + + +
          unsigned long LD2410Async::bufferSize = 0
          +
          + +

          Buffer size reported by the radar protocol.

          +

          Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

          + +

          Definition at line 206 of file LD2410Async.h.

          + +
          +
          + +

          ◆ configData

          + +
          +
          + + + + +
          LD2410Types::ConfigData LD2410Async::configData
          +
          + +

          Current configuration parameters of the radar.

          +

          Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

          +

          Structure will contain only uninitilaized data if config data is not queried explicitly.

          + +

          Definition at line 184 of file LD2410Async.h.

          + +
          +
          + +

          ◆ configModeEnabled

          + +
          +
          + + + + +
          bool LD2410Async::configModeEnabled = false
          +
          + +

          True if the sensor is currently in config mode.

          +

          Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

          + +

          Definition at line 217 of file LD2410Async.h.

          + +
          +
          + +

          ◆ detectionData

          + +
          +
          + + + + +
          LD2410Types::DetectionData LD2410Async::detectionData
          +
          + +

          Latest detection results from the radar.

          +

          Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

          + +

          Definition at line 169 of file LD2410Async.h.

          + +
          +
          + +

          ◆ engineeringModeEnabled

          + +
          +
          + + + + +
          bool LD2410Async::engineeringModeEnabled = false
          +
          + +

          True if the sensor is currently in engineering mode.

          +

          In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

          +

          Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

          + +

          Definition at line 230 of file LD2410Async.h.

          + +
          +
          + +

          ◆ firmware

          + +
          +
          + + + + +
          String LD2410Async::firmware = ""
          +
          + +

          Firmware version string of the radar.

          +

          Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

          + +

          Definition at line 241 of file LD2410Async.h.

          + +
          +
          + +

          ◆ mac

          + +
          +
          + + + + +
          byte LD2410Async::mac[6]
          +
          + +

          MAC address of the radar’s Bluetooth module (if available).

          +

          Populated by requestBluetoothMacAddressAsync().

          + +

          Definition at line 251 of file LD2410Async.h.

          + +
          +
          + +

          ◆ macString

          + +
          +
          + + + + +
          String LD2410Async::macString = ""
          +
          + +

          MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

          +

          Populated by requestBluetoothMacAddressAsync().

          + +

          Definition at line 261 of file LD2410Async.h.

          + +
          +
          + +

          ◆ protocolVersion

          + +
          +
          + + + + +
          unsigned long LD2410Async::protocolVersion = 0
          +
          + +

          Protocol version reported by the radar.

          +

          This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

          + +

          Definition at line 195 of file LD2410Async.h.

          +

          The documentation for this class was generated from the following files:
            diff --git a/docu/classLD2410Async.js b/docu/classLD2410Async.js index 4de8fca..b071293 100644 --- a/docu/classLD2410Async.js +++ b/docu/classLD2410Async.js @@ -1,18 +1,18 @@ var classLD2410Async = [ - [ "AsyncCommandCallback", "group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], - [ "DetectionDataCallback", "group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81", null ], - [ "GenericCallback", "group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383", null ], - [ "AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ - [ "SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], - [ "FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], - [ "TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], - [ "CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + [ "AsyncCommandCallback", "classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "DetectionDataCallback", "classLD2410Async.html#a19278199112e9358e96a192056e58e81", null ], + [ "GenericCallback", "classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383", null ], + [ "AsyncCommandResult", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab", [ + [ "SUCCESS", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "TIMEOUT", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "CANCELED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] ] ], - [ "LD2410Async", "group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900", null ], + [ "LD2410Async", "classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900", null ], [ "asyncCancel", "classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1", null ], [ "asyncIsBusy", "classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153", null ], - [ "begin", "group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], + [ "begin", "classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024", null ], [ "beginAutoConfigAsync", "classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc", null ], [ "configureAllConfigSettingsAsync", "classLD2410Async.html#a509170bfc50580131d0c72f5c91daede", null ], [ "configureAuxControlSettingsAsync", "classLD2410Async.html#a90e3bc56482783249d966a670310bffd", null ], @@ -30,25 +30,25 @@ var classLD2410Async = [ "disableBluetoothAsync", "classLD2410Async.html#addcbab1709f2a80571563609f4a23862", null ], [ "disableConfigModeAsync", "classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c", null ], [ "disableEngineeringModeAsync", "classLD2410Async.html#a377464026350140b0277369a13e8c1d3", null ], - [ "disableInactivityHandling", "group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2", null ], + [ "disableInactivityHandling", "classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2", null ], [ "enableBluetoothAsync", "classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973", null ], [ "enableConfigModeAsync", "classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9", null ], [ "enableEngineeringModeAsync", "classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], - [ "enableInactivityHandling", "group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], - [ "end", "group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "enableInactivityHandling", "classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "end", "classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54", null ], [ "getAsyncCommandTimeoutMs", "classLD2410Async.html#a93962bd109f67775ea3420596207b23a", null ], [ "getConfigData", "classLD2410Async.html#a54388c929cea610f92891def29db66a5", null ], [ "getConfigDataRef", "classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13", null ], [ "getDetectionData", "classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50", null ], [ "getDetectionDataRef", "classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090", null ], - [ "getInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f", null ], + [ "getInactivityTimeoutMs", "classLD2410Async.html#a74138af198ac827349a25e122277803f", null ], [ "isConfigModeEnabled", "classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48", null ], [ "isEngineeringModeEnabled", "classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19", null ], - [ "isInactivityHandlingEnabled", "group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6", null ], + [ "isInactivityHandlingEnabled", "classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6", null ], [ "rebootAsync", "classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235", null ], - [ "registerConfigChangedCallback", "group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9", null ], - [ "registerConfigUpdateReceivedCallback", "group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], - [ "registerDetectionDataReceivedCallback", "group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282", null ], + [ "registerConfigChangedCallback", "classLD2410Async.html#a714e62534394a52243f8f50fd58726f9", null ], + [ "registerConfigUpdateReceivedCallback", "classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "registerDetectionDataReceivedCallback", "classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282", null ], [ "requestAllConfigSettingsAsync", "classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38", null ], [ "requestAllStaticDataAsync", "classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6", null ], [ "requestAutoConfigStatusAsync", "classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6", null ], @@ -59,16 +59,16 @@ var classLD2410Async = [ "requestGateParametersAsync", "classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6", null ], [ "restoreFactorySettingsAsync", "classLD2410Async.html#aadb841697a992c1bf203944211bd8659", null ], [ "setAsyncCommandTimeoutMs", "classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325", null ], - [ "setInactivityHandling", "group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76", null ], - [ "setInactivityTimeoutMs", "group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ], - [ "autoConfigStatus", "group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], - [ "bufferSize", "group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], - [ "configData", "group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02", null ], - [ "configModeEnabled", "group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], - [ "detectionData", "group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8", null ], - [ "engineeringModeEnabled", "group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ], - [ "firmware", "group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], - [ "mac", "group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e", null ], - [ "macString", "group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], - [ "protocolVersion", "group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b", null ] + [ "setInactivityHandling", "classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76", null ], + [ "setInactivityTimeoutMs", "classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4", null ], + [ "autoConfigStatus", "classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "bufferSize", "classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "configData", "classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02", null ], + [ "configModeEnabled", "classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "detectionData", "classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8", null ], + [ "engineeringModeEnabled", "classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "firmware", "classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "mac", "classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e", null ], + [ "macString", "classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "protocolVersion", "classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b", null ] ]; \ No newline at end of file diff --git a/docu/doxygen_crawl.html b/docu/doxygen_crawl.html index 4047085..054c3b6 100644 --- a/docu/doxygen_crawl.html +++ b/docu/doxygen_crawl.html @@ -28,11 +28,6 @@ - - - - - @@ -42,14 +37,12 @@ - - @@ -248,42 +241,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300,41 +323,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -473,6 +461,5 @@ - diff --git a/docu/functions.html b/docu/functions.html index b58d3c3..f1c5fa3 100644 --- a/docu/functions.html +++ b/docu/functions.html @@ -101,23 +101,23 @@

            - a -

            - b -

            - c -

              -
            • configData : LD2410Async
            • -
            • configModeEnabled : LD2410Async
            • +
            • configData : LD2410Async
            • +
            • configModeEnabled : LD2410Async
            • configureAllConfigSettingsAsync() : LD2410Async
            • configureAuxControlSettingsAsync() : LD2410Async
            • configureBaudRateAsync() : LD2410Async
            • @@ -133,12 +133,12 @@

              - c -

                - d -

                • detectedDistance : LD2410Types::DetectionData
                • -
                • detectionData : LD2410Async
                • -
                • DetectionDataCallback : LD2410Async
                • +
                • detectionData : LD2410Async
                • +
                • DetectionDataCallback : LD2410Async
                • disableBluetoothAsync() : LD2410Async
                • disableConfigModeAsync() : LD2410Async
                • disableEngineeringModeAsync() : LD2410Async
                • -
                • disableInactivityHandling() : LD2410Async
                • +
                • disableInactivityHandling() : LD2410Async
                • distanceGateMotionSensitivity : LD2410Types::ConfigData
                • distanceGateStationarySensitivity : LD2410Types::ConfigData
                • distanceResolution : LD2410Types::ConfigData
                • @@ -149,40 +149,40 @@

                  - e -

                  - f -

                  - g -

                  - i -

                  - l -

                    -
                  • LD2410Async() : LD2410Async
                  • +
                  • LD2410Async() : LD2410Async
                  • lightControl : LD2410Types::ConfigData
                  • lightLevel : LD2410Types::DetectionData
                  • lightThreshold : LD2410Types::ConfigData
                  • @@ -190,8 +190,8 @@

                    - l -

                      - m -

                        -
                      • mac : LD2410Async
                      • -
                      • macString : LD2410Async
                      • +
                      • mac : LD2410Async
                      • +
                      • macString : LD2410Async
                      • maxMotionDistanceGate : LD2410Types::ConfigData
                      • maxStationaryDistanceGate : LD2410Types::ConfigData
                      • movingPresenceDetected : LD2410Types::DetectionData
                      • @@ -217,15 +217,15 @@

                        - o -

                          - p -

                          - r -

                          • rebootAsync() : LD2410Async
                          • -
                          • registerConfigChangedCallback() : LD2410Async
                          • -
                          • registerConfigUpdateReceivedCallback() : LD2410Async
                          • -
                          • registerDetectionDataReceivedCallback() : LD2410Async
                          • +
                          • registerConfigChangedCallback() : LD2410Async
                          • +
                          • registerConfigUpdateReceivedCallback() : LD2410Async
                          • +
                          • registerDetectionDataReceivedCallback() : LD2410Async
                          • requestAllConfigSettingsAsync() : LD2410Async
                          • requestAllStaticDataAsync() : LD2410Async
                          • requestAutoConfigStatusAsync() : LD2410Async
                          • @@ -240,8 +240,8 @@

                            - r -

                              - s -

                              • setAsyncCommandTimeoutMs() : LD2410Async
                              • -
                              • setInactivityHandling() : LD2410Async
                              • -
                              • setInactivityTimeoutMs() : LD2410Async
                              • +
                              • setInactivityHandling() : LD2410Async
                              • +
                              • setInactivityTimeoutMs() : LD2410Async
                              • stationaryPresenceDetected : LD2410Types::DetectionData
                              • stationaryTargetDistance : LD2410Types::DetectionData
                              • stationaryTargetGateSignalCount : LD2410Types::DetectionData
                              • diff --git a/docu/functions_enum.html b/docu/functions_enum.html index e95a348..47a0ecf 100644 --- a/docu/functions_enum.html +++ b/docu/functions_enum.html @@ -98,7 +98,7 @@
                                Here is a list of all enums with links to the classes they belong to:
                                diff --git a/docu/functions_func.html b/docu/functions_func.html index 738c471..2b7980f 100644 --- a/docu/functions_func.html +++ b/docu/functions_func.html @@ -106,7 +106,7 @@

                                - a -

                                  - b -

                                  @@ -129,7 +129,7 @@

                                  - d -

                                  @@ -137,8 +137,8 @@

                                  - e -

                                  @@ -149,20 +149,20 @@

                                  - g -

                                  - i -

                                  - l -

                                  @@ -173,9 +173,9 @@

                                  - p -

                                    - r -

                                    • rebootAsync() : LD2410Async
                                    • -
                                    • registerConfigChangedCallback() : LD2410Async
                                    • -
                                    • registerConfigUpdateReceivedCallback() : LD2410Async
                                    • -
                                    • registerDetectionDataReceivedCallback() : LD2410Async
                                    • +
                                    • registerConfigChangedCallback() : LD2410Async
                                    • +
                                    • registerConfigUpdateReceivedCallback() : LD2410Async
                                    • +
                                    • registerDetectionDataReceivedCallback() : LD2410Async
                                    • requestAllConfigSettingsAsync() : LD2410Async
                                    • requestAllStaticDataAsync() : LD2410Async
                                    • requestAutoConfigStatusAsync() : LD2410Async
                                    • @@ -190,8 +190,8 @@

                                      - r -

                                        - s -

                                        diff --git a/docu/functions_type.html b/docu/functions_type.html index 6f4f730..59e5475 100644 --- a/docu/functions_type.html +++ b/docu/functions_type.html @@ -98,9 +98,9 @@
                                        Here is a list of all typedefs with links to the classes they belong to:
                                        diff --git a/docu/functions_vars.html b/docu/functions_vars.html index 21183c5..f748caf 100644 --- a/docu/functions_vars.html +++ b/docu/functions_vars.html @@ -100,24 +100,24 @@
                                        Here is a list of all variables with links to the classes they belong to:

                                        - a -

                                        - b -

                                        - c -

                                        - d -

                                        • detectedDistance : LD2410Types::DetectionData
                                        • -
                                        • detectionData : LD2410Async
                                        • +
                                        • detectionData : LD2410Async
                                        • distanceGateMotionSensitivity : LD2410Types::ConfigData
                                        • distanceGateStationarySensitivity : LD2410Types::ConfigData
                                        • distanceResolution : LD2410Types::ConfigData
                                        • @@ -126,12 +126,12 @@

                                          - d -

                                            - e -

                                            - f -

                                            @@ -143,8 +143,8 @@

                                            - l -

                                              - m -

                                                -
                                              • mac : LD2410Async
                                              • -
                                              • macString : LD2410Async
                                              • +
                                              • mac : LD2410Async
                                              • +
                                              • macString : LD2410Async
                                              • maxMotionDistanceGate : LD2410Types::ConfigData
                                              • maxStationaryDistanceGate : LD2410Types::ConfigData
                                              • movingPresenceDetected : LD2410Types::DetectionData
                                              • @@ -169,7 +169,7 @@

                                                - o -

                                                  - p -

                                                  diff --git a/docu/index.html b/docu/index.html index f5c3b2d..6fd92f8 100644 --- a/docu/index.html +++ b/docu/index.html @@ -160,8 +160,8 @@

                                                  void loop() {
                                                  // Other application logic
                                                  }
                                                  -
                                                  const LD2410Types::DetectionData & getDetectionDataRef() const
                                                  Access the current detection data without making a copy.
                                                  -
                                                  void print() const
                                                  Debug helper: print detection data contents to Serial.
                                                  +
                                                  const LD2410Types::DetectionData & getDetectionDataRef() const
                                                  Access the current detection data without making a copy.
                                                  +
                                                  void print() const
                                                  Debug helper: print detection data contents to Serial.
                                                  diff --git a/docu/menudata.js b/docu/menudata.js index 6032c01..3616a12 100644 --- a/docu/menudata.js +++ b/docu/menudata.js @@ -24,7 +24,6 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, -{text:"Topics",url:"topics.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ diff --git a/docu/namespaceLD2410CommandBuilder.html b/docu/namespaceLD2410CommandBuilder.html index 63a509b..74858f9 100644 --- a/docu/namespaceLD2410CommandBuilder.html +++ b/docu/namespaceLD2410CommandBuilder.html @@ -172,12 +172,7 @@

                                                  constexpr byte setAuxControlSettingCommandData[8]
                                                  Definition LD2410Defs.h:68
                                                  @ NOT_SET
                                                  Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                  @ NOT_SET
                                                  Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + @@ -215,12 +210,7 @@

                                                  81 return true;
                                                  82 }
                                                  constexpr byte setBaudRateCommandData[6]
                                                  Definition LD2410Defs.h:38
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + @@ -268,12 +258,7 @@

                                                  98 return true;
                                                  99 }
                                                  constexpr byte setBluetoothPasswordCommandData[10]
                                                  Definition LD2410Defs.h:53
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + @@ -322,12 +307,7 @@

                                                  constexpr byte setDistanceResolution75cmCommandData[6]
                                                  Definition LD2410Defs.h:34
                                                  @ RESOLUTION_20CM
                                                  Each gate ~0.20 m, max range ~1.8 m.
                                                  @ RESOLUTION_75CM
                                                  Each gate ~0.75 m, max range ~6 m.
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + @@ -392,12 +372,7 @@

                                                  46 return true;
                                                  47 }
                                                  constexpr byte distanceGateSensitivityConfigCommandData[0x16]
                                                  Definition LD2410Defs.h:77
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + @@ -454,12 +429,7 @@

                                                  22
                                                  23 }
                                                  constexpr byte maxGateCommandData[0x16]
                                                  Definition LD2410Defs.h:83
                                                  -
                                                  -Here is the caller graph for this function:
                                                  -
                                                  -
                                                  -
                                                  - + diff --git a/docu/namespaceLD2410Types.html b/docu/namespaceLD2410Types.html index 5390098..231ef52 100644 --- a/docu/namespaceLD2410Types.html +++ b/docu/namespaceLD2410Types.html @@ -206,13 +206,13 @@

                                                  Definition at line 152 of file LD2410Types.h.

                                                  -
                                                  152 {
                                                  -
                                                  153 NOT_SET = -1, ///< Status not yet retrieved.
                                                  -
                                                  154 NOT_IN_PROGRESS, ///< Auto-configuration not running.
                                                  -
                                                  155 IN_PROGRESS, ///< Auto-configuration is currently running.
                                                  -
                                                  156 COMPLETED ///< Auto-configuration finished (success or failure).
                                                  -
                                                  157 };
                                                  +

                                                  Definition at line 168 of file LD2410Types.h.

                                                  +
                                                  168 {
                                                  +
                                                  169 NOT_SET = -1, ///< Status not yet retrieved.
                                                  +
                                                  170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
                                                  +
                                                  171 IN_PROGRESS, ///< Auto-configuration is currently running.
                                                  +
                                                  172 COMPLETED ///< Auto-configuration finished (success or failure).
                                                  +
                                                  173 };
                                                  @ COMPLETED
                                                  Auto-configuration finished (success or failure).
                                                  @ IN_PROGRESS
                                                  Auto-configuration is currently running.
                                                  @ NOT_IN_PROGRESS
                                                  Auto-configuration not running.
                                                  @@ -261,17 +261,17 @@

                                                  Definition at line 185 of file LD2410Types.h.

                                                  -
                                                  185 {
                                                  -
                                                  186 BAUDRATE_9600 = 1, ///< 9600 baud.
                                                  -
                                                  187 BAUDRATE_19200 = 2, ///< 19200 baud.
                                                  -
                                                  188 BAUDRATE_38400 = 3, ///< 38400 baud.
                                                  -
                                                  189 BAUDRATE_57600 = 4, ///< 57600 baud.
                                                  -
                                                  190 BAUDRATE_115200 = 5, ///< 115200 baud.
                                                  -
                                                  191 BAUDRATE_230500 = 6, ///< 230400 baud.
                                                  -
                                                  192 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
                                                  -
                                                  193 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
                                                  -
                                                  194 };
                                                  +

                                                  Definition at line 205 of file LD2410Types.h.

                                                  +
                                                  205 {
                                                  +
                                                  206 BAUDRATE_9600 = 1, ///< 9600 baud.
                                                  +
                                                  207 BAUDRATE_19200 = 2, ///< 19200 baud.
                                                  +
                                                  208 BAUDRATE_38400 = 3, ///< 38400 baud.
                                                  +
                                                  209 BAUDRATE_57600 = 4, ///< 57600 baud.
                                                  +
                                                  210 BAUDRATE_115200 = 5, ///< 115200 baud.
                                                  +
                                                  211 BAUDRATE_230500 = 6, ///< 230400 baud.
                                                  +
                                                  212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
                                                  +
                                                  213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
                                                  +
                                                  214 };
                                                  @ BAUDRATE_57600
                                                  57600 baud.
                                                  @ BAUDRATE_38400
                                                  38400 baud.
                                                  @ BAUDRATE_230500
                                                  230400 baud.
                                                  @@ -318,12 +318,12 @@

                                                  Definition at line 205 of file LD2410Types.h.

                                                  -
                                                  205 {
                                                  -
                                                  206 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  -
                                                  207 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
                                                  -
                                                  208 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
                                                  -
                                                  209 };
                                                  +

                                                  Definition at line 227 of file LD2410Types.h.

                                                  +
                                                  227 {
                                                  +
                                                  228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  +
                                                  229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
                                                  +
                                                  230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
                                                  +
                                                  231 };
                                                  @ RESOLUTION_20CM
                                                  Each gate ~0.20 m, max range ~1.8 m.
                                                  @ RESOLUTION_75CM
                                                  Each gate ~0.75 m, max range ~6 m.
                                                  @@ -363,13 +363,13 @@

                                                  Definition at line 89 of file LD2410Types.h.

                                                  -
                                                  89 {
                                                  -
                                                  90 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  -
                                                  91 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
                                                  -
                                                  92 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
                                                  -
                                                  93 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
                                                  -
                                                  94 };
                                                  +

                                                  Definition at line 97 of file LD2410Types.h.

                                                  +
                                                  97 {
                                                  +
                                                  98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  +
                                                  99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
                                                  +
                                                  100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
                                                  +
                                                  101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
                                                  +
                                                  102 };
                                                  @ LIGHT_BELOW_THRESHOLD
                                                  Condition: light < threshold.
                                                  @ LIGHT_ABOVE_THRESHOLD
                                                  Condition: light ≥ threshold.
                                                  @ NO_LIGHT_CONTROL
                                                  Output is not influenced by light levels.
                                                  @@ -408,12 +408,12 @@

                                                  Definition at line 122 of file LD2410Types.h.

                                                  -
                                                  122 {
                                                  -
                                                  123 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  -
                                                  124 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
                                                  -
                                                  125 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
                                                  -
                                                  126 };
                                                  +

                                                  Definition at line 134 of file LD2410Types.h.

                                                  +
                                                  134 {
                                                  +
                                                  135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
                                                  +
                                                  136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
                                                  +
                                                  137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
                                                  +
                                                  138 };
                                                  @ DEFAULT_HIGH_DETECTED_LOW
                                                  Default high, goes LOW when detection occurs.
                                                  @ DEFAULT_LOW_DETECTED_HIGH
                                                  Default low, goes HIGH when detection occurs.
                                                  @@ -458,16 +458,16 @@

                                                  Definition at line 19 of file LD2410Types.h.

                                                  -
                                                  19 {
                                                  -
                                                  20 NO_TARGET = 0, ///< No moving or stationary target detected.
                                                  -
                                                  21 MOVING_TARGET = 1, ///< A moving target has been detected.
                                                  -
                                                  22 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
                                                  -
                                                  23 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
                                                  -
                                                  24 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
                                                  -
                                                  25 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
                                                  -
                                                  26 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
                                                  -
                                                  27 };
                                                  +

                                                  Definition at line 21 of file LD2410Types.h.

                                                  +
                                                  21 {
                                                  +
                                                  22 NO_TARGET = 0, ///< No moving or stationary target detected.
                                                  +
                                                  23 MOVING_TARGET = 1, ///< A moving target has been detected.
                                                  +
                                                  24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
                                                  +
                                                  25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
                                                  +
                                                  26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
                                                  +
                                                  27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
                                                  +
                                                  28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
                                                  +
                                                  29 };
                                                  @ MOVING_AND_STATIONARY_TARGET
                                                  Both moving and stationary targets detected.
                                                  @ NO_TARGET
                                                  No moving or stationary target detected.
                                                  @ AUTOCONFIG_IN_PROGRESS
                                                  Auto-configuration routine is running.
                                                  diff --git a/docu/navtreedata.js b/docu/navtreedata.js index d040678..92e3375 100644 --- a/docu/navtreedata.js +++ b/docu/navtreedata.js @@ -33,7 +33,6 @@ var NAVTREE = ] ], [ "Usage", "index.html#autotoc_md4", null ] ] ], - [ "Topics", "topics.html", "topics" ], [ "Namespaces", "namespaces.html", [ [ "Namespace List", "namespaces.html", "namespaces_dup" ], [ "Namespace Members", "namespacemembers.html", [ @@ -68,7 +67,7 @@ var NAVTREE = var NAVTREEINDEX = [ "LD2410Async_8cpp.html", -"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75" +"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docu/navtreeindex0.js b/docu/navtreeindex0.js index e86ad8a..973557b 100644 --- a/docu/navtreeindex0.js +++ b/docu/navtreeindex0.js @@ -1,214 +1,209 @@ var NAVTREEINDEX0 = { -"LD2410Async_8cpp.html":[4,0,4], -"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[4,0,4,1], -"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[4,0,4,0], -"LD2410Async_8cpp_source.html":[4,0,4], -"LD2410Async_8h.html":[4,0,5], -"LD2410Async_8h_source.html":[4,0,5], -"LD2410CommandBuilder_8h.html":[4,0,6], -"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[4,0,6,5], -"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[4,0,6,3], -"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[4,0,6,0], -"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[4,0,6,4], -"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[4,0,6,2], -"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[4,0,6,1], -"LD2410CommandBuilder_8h_source.html":[4,0,6], -"LD2410Debug_8h.html":[4,0,7], -"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[4,0,7,4], -"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[4,0,7,7], -"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[4,0,7,2], -"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[4,0,7,1], -"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[4,0,7,6], -"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[4,0,7,0], -"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[4,0,7,3], -"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[4,0,7,5], -"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[4,0,7,8], -"LD2410Debug_8h_source.html":[4,0,7], -"LD2410Defs_8h.html":[4,0,8], -"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[4,0,8,24], -"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[4,0,8,37], -"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[4,0,8,5], -"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[4,0,8,28], -"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[4,0,8,45], -"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[4,0,8,8], -"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[4,0,8,11], -"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[4,0,8,32], -"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[4,0,8,38], -"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[4,0,8,9], -"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[4,0,8,2], -"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[4,0,8,35], -"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[4,0,8,26], -"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[4,0,8,10], -"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[4,0,8,42], -"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[4,0,8,43], -"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[4,0,8,20], -"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[4,0,8,39], -"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[4,0,8,46], -"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[4,0,8,16], -"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[4,0,8,41], -"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[4,0,8,23], -"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[4,0,8,12], -"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[4,0,8,22], -"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[4,0,8,25], -"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[4,0,8,40], -"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[4,0,8,36], -"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[4,0,8,4], -"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[4,0,8,33], -"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[4,0,8,3], -"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[4,0,8,31], -"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[4,0,8,17], -"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[4,0,8,44], -"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[4,0,8,21], -"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[4,0,8,29], -"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[4,0,8,1], -"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[4,0,8,18], -"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[4,0,8,19], -"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[4,0,8,0], -"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[4,0,8,6], -"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[4,0,8,15], -"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[4,0,8,7], -"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[4,0,8,47], -"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[4,0,8,30], -"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[4,0,8,14], -"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[4,0,8,13], -"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[4,0,8,27], -"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[4,0,8,34], -"LD2410Defs_8h_source.html":[4,0,8], -"LD2410Types_8h.html":[4,0,9], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[4,0,9,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,2,0], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[4,0,9,2,3], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[4,0,9,2,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[4,0,9,2,1], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[4,0,9,6], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[4,0,9,6,0], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[4,0,9,6,2], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[4,0,9,6,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[4,0,9,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[4,0,9,3,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[4,0,9,3,2], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[4,0,9,3,5], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[4,0,9,3,4], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[4,0,9,3,6], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[4,0,9,3,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[4,0,9,3,0], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[4,0,9,3,7], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[4,0,9,4], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,4,0], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[4,0,9,4,2], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[4,0,9,4,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[4,0,9,7], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[4,0,9,7,3], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[4,0,9,7,0], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[4,0,9,7,4], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[4,0,9,7,6], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[4,0,9,7,2], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[4,0,9,7,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[4,0,9,7,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[4,0,9,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[4,0,9,5,0], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[4,0,9,5,2], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[4,0,9,5,3], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[4,0,9,5,1], -"LD2410Types_8h_source.html":[4,0,9], -"annotated.html":[3,0], -"basicPresenceDetection_8ino.html":[4,0,0,0], -"basicPresenceDetection_8ino_source.html":[4,0,0,0], -"changeConfig_8ino.html":[4,0,1,0], -"changeConfig_8ino_source.html":[4,0,1,0], -"changeDistanceResolution_8ino.html":[4,0,2,0], -"changeDistanceResolution_8ino_source.html":[4,0,2,0], -"classLD2410Async.html":[3,0,1], -"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[3,0,1,21], -"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[3,0,1,5], -"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[3,0,1,20], -"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[3,0,1,17], -"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[3,0,1,37], -"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[3,0,1,49], -"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[3,0,1,24], -"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[3,0,1,48], -"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[3,0,1,11], -"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[3,0,1,18], -"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[3,0,1,9], -"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[3,0,1,32], -"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[3,0,1,34], -"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[3,0,1,53], -"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[3,0,1,50], -"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[3,0,1,6], -"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[3,0,1,45], -"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[3,0,1,10], -"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[3,0,1,31], -"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[3,0,1,16], -"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[3,0,1,23], -"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[3,0,1,26], -"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[3,0,1,13], -"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[3,0,1,52], -"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[3,0,1,44], -"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[3,0,1,15], -"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[3,0,1,14], -"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[3,0,1,46], -"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[3,0,1,27], -"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[3,0,1,38], -"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[3,0,1,28], -"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[3,0,1,51], -"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[3,0,1,12], -"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[3,0,1,22], -"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[3,0,1,35], -"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[3,0,1,19], -"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[3,0,1,40], -"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[3,0,1,8], -"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[3,0,1,33], -"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[3,0,1,47], -"classes.html":[3,1], -"dir_0877bab65d936efc50d6280cdd9a4b61.html":[4,0,1], -"dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html":[4,0,0], -"dir_214001d413268a160f69364489f85961.html":[4,0,3], -"dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html":[4,0,2], -"files.html":[4,0], -"functions.html":[3,2,0], -"functions_enum.html":[3,2,4], -"functions_func.html":[3,2,1], -"functions_type.html":[3,2,3], -"functions_vars.html":[3,2,2], -"globals.html":[4,1,0], -"globals_defs.html":[4,1,2], -"globals_func.html":[4,1,1], -"group__LD2410Async__Callbacks.html":[1,0], -"group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9":[1,0,0], -"group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285":[1,0,1], -"group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282":[1,0,2], -"group__LD2410Async__Data.html":[1,3], -"group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02":[1,3,2], -"group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf":[1,3,6], -"group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7":[1,3,3], -"group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e":[1,3,7], -"group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1":[1,3,8], -"group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8":[1,3,4], -"group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694":[1,3,0], -"group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7":[1,3,5], -"group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1":[1,3,1], -"group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b":[1,3,9], -"group__LD2410Async__Inactivity.html":[1,2], -"group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4":[1,2,5], -"group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3":[1,2,1], -"group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76":[1,2,4], -"group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2":[1,2,0], -"group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f":[1,2,2], -"group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6":[1,2,3], -"group__LD2410Async__Lifecycle.html":[1,1], -"group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024":[1,1,0], -"group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900":[1,1,2], -"group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54":[1,1,1], -"group__LD2410Async__Types.html":[1,4], -"group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab":[1,4,3], -"group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81":[1,4,1], -"group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383":[1,4,2], -"group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603":[1,4,0], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[1,4,3,2], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[1,4,3,1], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[1,4,3,0], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[1,4,3,3], +"LD2410Async_8cpp.html":[3,0,4], +"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[3,0,4,1], +"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[3,0,4,0], +"LD2410Async_8cpp_source.html":[3,0,4], +"LD2410Async_8h.html":[3,0,5], +"LD2410Async_8h_source.html":[3,0,5], +"LD2410CommandBuilder_8h.html":[3,0,6], +"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[3,0,6,5], +"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[3,0,6,3], +"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[3,0,6,0], +"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[3,0,6,4], +"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[3,0,6,2], +"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[3,0,6,1], +"LD2410CommandBuilder_8h_source.html":[3,0,6], +"LD2410Debug_8h.html":[3,0,7], +"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[3,0,7,4], +"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[3,0,7,7], +"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[3,0,7,2], +"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[3,0,7,1], +"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[3,0,7,6], +"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[3,0,7,0], +"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[3,0,7,3], +"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[3,0,7,5], +"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[3,0,7,8], +"LD2410Debug_8h_source.html":[3,0,7], +"LD2410Defs_8h.html":[3,0,8], +"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[3,0,8,24], +"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[3,0,8,37], +"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[3,0,8,5], +"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[3,0,8,28], +"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[3,0,8,45], +"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[3,0,8,8], +"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[3,0,8,11], +"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[3,0,8,32], +"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[3,0,8,38], +"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[3,0,8,9], +"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[3,0,8,2], +"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[3,0,8,35], +"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[3,0,8,26], +"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[3,0,8,10], +"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[3,0,8,42], +"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[3,0,8,43], +"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[3,0,8,20], +"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[3,0,8,39], +"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[3,0,8,46], +"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[3,0,8,16], +"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[3,0,8,41], +"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[3,0,8,23], +"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[3,0,8,12], +"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[3,0,8,22], +"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[3,0,8,25], +"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[3,0,8,40], +"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[3,0,8,36], +"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[3,0,8,4], +"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[3,0,8,33], +"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[3,0,8,3], +"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[3,0,8,31], +"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[3,0,8,17], +"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[3,0,8,44], +"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[3,0,8,21], +"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[3,0,8,29], +"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[3,0,8,1], +"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[3,0,8,18], +"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[3,0,8,19], +"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[3,0,8,0], +"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[3,0,8,6], +"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[3,0,8,15], +"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[3,0,8,7], +"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[3,0,8,47], +"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[3,0,8,30], +"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[3,0,8,14], +"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[3,0,8,13], +"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[3,0,8,27], +"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[3,0,8,34], +"LD2410Defs_8h_source.html":[3,0,8], +"LD2410Types_8h.html":[3,0,9], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[3,0,9,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,2,0], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[3,0,9,2,3], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[3,0,9,2,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[3,0,9,2,1], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[3,0,9,6], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[3,0,9,6,0], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[3,0,9,6,2], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[3,0,9,6,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[3,0,9,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[3,0,9,3,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[3,0,9,3,2], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[3,0,9,3,5], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[3,0,9,3,4], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[3,0,9,3,6], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[3,0,9,3,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[3,0,9,3,0], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[3,0,9,3,7], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[3,0,9,4], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,4,0], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[3,0,9,4,2], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[3,0,9,4,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[3,0,9,7], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[3,0,9,7,3], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[3,0,9,7,0], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[3,0,9,7,4], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[3,0,9,7,6], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[3,0,9,7,2], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[3,0,9,7,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[3,0,9,7,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[3,0,9,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,5,0], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[3,0,9,5,2], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[3,0,9,5,3], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[3,0,9,5,1], +"LD2410Types_8h_source.html":[3,0,9], +"annotated.html":[2,0], +"basicPresenceDetection_8ino.html":[3,0,0,0], +"basicPresenceDetection_8ino_source.html":[3,0,0,0], +"changeConfig_8ino.html":[3,0,1,0], +"changeConfig_8ino_source.html":[3,0,1,0], +"changeDistanceResolution_8ino.html":[3,0,2,0], +"changeDistanceResolution_8ino_source.html":[3,0,2,0], +"classLD2410Async.html":[2,0,1], +"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[2,0,1,21], +"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[2,0,1,5], +"classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4":[2,0,1,55], +"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[2,0,1,20], +"classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024":[2,0,1,7], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab":[2,0,1,3], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[2,0,1,3,2], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[2,0,1,3,1], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[2,0,1,3,0], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[2,0,1,3,3], +"classLD2410Async.html#a19278199112e9358e96a192056e58e81":[2,0,1,1], +"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[2,0,1,17], +"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[2,0,1,37], +"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[2,0,1,49], +"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[2,0,1,24], +"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[2,0,1,48], +"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[2,0,1,11], +"classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3":[2,0,1,29], +"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[2,0,1,18], +"classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76":[2,0,1,54], +"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[2,0,1,9], +"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[2,0,1,32], +"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[2,0,1,34], +"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[2,0,1,53], +"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[2,0,1,50], +"classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02":[2,0,1,58], +"classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2":[2,0,1,25], +"classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf":[2,0,1,62], +"classLD2410Async.html#a714e62534394a52243f8f50fd58726f9":[2,0,1,41], +"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[2,0,1,6], +"classLD2410Async.html#a74138af198ac827349a25e122277803f":[2,0,1,36], +"classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7":[2,0,1,59], +"classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383":[2,0,1,2], +"classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e":[2,0,1,63], +"classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1":[2,0,1,64], +"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[2,0,1,45], +"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[2,0,1,10], +"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[2,0,1,31], +"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[2,0,1,16], +"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[2,0,1,23], +"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[2,0,1,26], +"classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8":[2,0,1,60], +"classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694":[2,0,1,56], +"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[2,0,1,13], +"classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7":[2,0,1,61], +"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[2,0,1,52], +"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[2,0,1,44], +"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[2,0,1,15], +"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[2,0,1,14], +"classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900":[2,0,1,4], +"classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1":[2,0,1,57], +"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[2,0,1,46], +"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[2,0,1,27], +"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[2,0,1,38], +"classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285":[2,0,1,42], +"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[2,0,1,28], +"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[2,0,1,51], +"classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b":[2,0,1,65], +"classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603":[2,0,1,0], +"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[2,0,1,12], +"classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6":[2,0,1,39], +"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[2,0,1,22], +"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[2,0,1,35], +"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[2,0,1,19], +"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[2,0,1,40], +"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[2,0,1,8], +"classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282":[2,0,1,43], +"classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54":[2,0,1,30], +"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[2,0,1,33], +"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[2,0,1,47], +"classes.html":[2,1], +"dir_0877bab65d936efc50d6280cdd9a4b61.html":[3,0,1], +"dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html":[3,0,0], +"dir_214001d413268a160f69364489f85961.html":[3,0,3], +"dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html":[3,0,2], +"files.html":[3,0], +"functions.html":[2,2,0], +"functions_enum.html":[2,2,4], +"functions_func.html":[2,2,1], +"functions_type.html":[2,2,3], +"functions_vars.html":[2,2,2], +"globals.html":[3,1,0], +"globals_defs.html":[3,1,2], +"globals_func.html":[3,1,1], "index.html":[], "index.html#autotoc_md0":[0,0], "index.html#autotoc_md1":[0,1], @@ -216,38 +211,43 @@ var NAVTREEINDEX0 = "index.html#autotoc_md3":[0,1,1], "index.html#autotoc_md4":[0,2], "index.html#intro_sec":[0], -"namespaceLD2410CommandBuilder.html":[2,0,0], -"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[2,0,0,5], -"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[2,0,0,3], -"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[2,0,0,0], -"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[2,0,0,4], -"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[2,0,0,2], -"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[2,0,0,1], -"namespaceLD2410Defs.html":[2,0,1], -"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[2,0,1,24], -"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[2,0,1,37], -"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[2,0,1,5], -"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[2,0,1,28], -"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[2,0,1,45], -"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[2,0,1,8], -"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[2,0,1,11], -"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[2,0,1,32], -"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[2,0,1,38], -"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[2,0,1,9], -"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[2,0,1,2], -"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[2,0,1,35], -"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[2,0,1,26], -"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[2,0,1,10], -"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[2,0,1,42], -"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[2,0,1,43], -"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[2,0,1,20], -"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,1,39], -"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,1,46], -"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,1,16], -"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,1,41], -"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,1,23], -"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,1,12], -"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,1,22], -"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,1,25], -"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,1,40] +"namespaceLD2410CommandBuilder.html":[1,0,0], +"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[1,0,0,5], +"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[1,0,0,3], +"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[1,0,0,0], +"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[1,0,0,4], +"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[1,0,0,2], +"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[1,0,0,1], +"namespaceLD2410Defs.html":[1,0,1], +"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[1,0,1,24], +"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[1,0,1,37], +"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[1,0,1,5], +"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[1,0,1,28], +"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[1,0,1,45], +"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[1,0,1,8], +"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[1,0,1,11], +"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[1,0,1,32], +"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[1,0,1,38], +"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[1,0,1,9], +"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[1,0,1,2], +"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[1,0,1,35], +"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[1,0,1,26], +"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[1,0,1,10], +"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[1,0,1,42], +"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[1,0,1,43], +"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[1,0,1,20], +"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[1,0,1,39], +"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[1,0,1,46], +"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[1,0,1,16], +"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[1,0,1,41], +"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[1,0,1,23], +"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[1,0,1,12], +"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[1,0,1,22], +"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[1,0,1,25], +"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[1,0,1,40], +"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[1,0,1,36], +"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[1,0,1,4], +"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[1,0,1,33], +"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[1,0,1,3], +"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[1,0,1,31] }; diff --git a/docu/navtreeindex1.js b/docu/navtreeindex1.js index 0dc7f4b..b38834a 100644 --- a/docu/navtreeindex1.js +++ b/docu/navtreeindex1.js @@ -1,136 +1,130 @@ var NAVTREEINDEX1 = { -"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,1,36], -"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,1,4], -"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[2,0,1,33], -"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[2,0,1,3], -"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[2,0,1,31], -"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[2,0,1,17], -"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[2,0,1,44], -"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[2,0,1,21], -"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[2,0,1,29], -"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[2,0,1,1], -"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[2,0,1,18], -"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[2,0,1,19], -"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[2,0,1,0], -"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[2,0,1,6], -"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[2,0,1,15], -"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[2,0,1,7], -"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[2,0,1,47], -"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[2,0,1,30], -"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[2,0,1,14], -"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[2,0,1,13], -"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[2,0,1,27], -"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[2,0,1,34], -"namespaceLD2410Types.html":[2,0,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[2,0,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,2,0], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[2,0,2,2,3], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[2,0,2,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[2,0,2,2,1], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[2,0,2,6], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[2,0,2,6,0], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[2,0,2,6,2], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[2,0,2,6,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[2,0,2,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[2,0,2,3,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[2,0,2,3,2], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[2,0,2,3,5], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[2,0,2,3,4], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[2,0,2,3,6], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[2,0,2,3,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[2,0,2,3,0], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[2,0,2,3,7], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[2,0,2,4], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,4,0], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[2,0,2,4,2], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[2,0,2,4,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[2,0,2,7], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[2,0,2,7,3], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[2,0,2,7,0], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[2,0,2,7,4], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[2,0,2,7,6], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[2,0,2,7,2], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[2,0,2,7,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[2,0,2,7,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[2,0,2,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,5,0], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[2,0,2,5,2], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[2,0,2,5,3], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[2,0,2,5,1], -"namespacemembers.html":[2,1,0], -"namespacemembers_enum.html":[2,1,3], -"namespacemembers_func.html":[2,1,1], -"namespacemembers_vars.html":[2,1,2], -"namespaces.html":[2,0], +"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[1,0,1,17], +"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[1,0,1,44], +"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[1,0,1,21], +"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[1,0,1,29], +"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[1,0,1,1], +"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[1,0,1,18], +"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[1,0,1,19], +"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[1,0,1,0], +"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[1,0,1,6], +"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[1,0,1,15], +"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[1,0,1,7], +"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[1,0,1,47], +"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[1,0,1,30], +"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[1,0,1,14], +"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[1,0,1,13], +"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[1,0,1,27], +"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[1,0,1,34], +"namespaceLD2410Types.html":[1,0,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[1,0,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,2,0], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[1,0,2,2,3], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[1,0,2,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[1,0,2,2,1], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[1,0,2,6], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[1,0,2,6,0], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[1,0,2,6,2], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[1,0,2,6,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[1,0,2,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[1,0,2,3,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[1,0,2,3,2], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[1,0,2,3,5], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[1,0,2,3,4], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[1,0,2,3,6], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[1,0,2,3,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[1,0,2,3,0], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[1,0,2,3,7], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[1,0,2,4], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,4,0], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[1,0,2,4,2], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[1,0,2,4,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[1,0,2,7], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[1,0,2,7,3], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[1,0,2,7,0], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[1,0,2,7,4], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[1,0,2,7,6], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[1,0,2,7,2], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[1,0,2,7,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[1,0,2,7,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[1,0,2,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,5,0], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[1,0,2,5,2], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[1,0,2,5,3], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[1,0,2,5,1], +"namespacemembers.html":[1,1,0], +"namespacemembers_enum.html":[1,1,3], +"namespacemembers_func.html":[1,1,1], +"namespacemembers_vars.html":[1,1,2], +"namespaces.html":[1,0], "pages.html":[], -"receiveData_8ino.html":[4,0,3,0], -"receiveData_8ino_source.html":[4,0,3,0], -"structLD2410Types_1_1ConfigData.html":[2,0,2,0], -"structLD2410Types_1_1ConfigData.html":[3,0,0,0], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[2,0,2,0,4], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[3,0,0,0,4], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[2,0,2,0,2], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[3,0,0,0,2], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[2,0,2,0,3], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[3,0,0,0,3], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[2,0,2,0,8], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[3,0,0,0,8], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[2,0,2,0,12], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[3,0,0,0,12], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[2,0,2,0,0], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[3,0,0,0,0], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[2,0,2,0,7], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[3,0,0,0,7], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[2,0,2,0,1], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[3,0,0,0,1], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[2,0,2,0,6], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[3,0,0,0,6], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[2,0,2,0,9], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[3,0,0,0,9], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[2,0,2,0,11], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[3,0,0,0,11], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[2,0,2,0,5], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[3,0,0,0,5], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[2,0,2,0,10], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[3,0,0,0,10], -"structLD2410Types_1_1DetectionData.html":[2,0,2,1], -"structLD2410Types_1_1DetectionData.html":[3,0,0,1], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[2,0,2,1,0], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[3,0,0,1,0], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[2,0,2,1,14], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[3,0,0,1,14], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[2,0,2,1,2], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[3,0,0,1,2], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[2,0,2,1,11], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[3,0,0,1,11], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[2,0,2,1,15], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[3,0,0,1,15], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[2,0,2,1,3], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[3,0,0,1,3], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[2,0,2,1,1], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[3,0,0,1,1], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[2,0,2,1,6], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[3,0,0,1,6], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[2,0,2,1,16], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[3,0,0,1,16], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[2,0,2,1,7], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[3,0,0,1,7], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[2,0,2,1,13], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[3,0,0,1,13], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[2,0,2,1,10], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[3,0,0,1,10], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[2,0,2,1,8], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[3,0,0,1,8], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[2,0,2,1,9], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[3,0,0,1,9], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[2,0,2,1,17], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[3,0,0,1,17], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[2,0,2,1,4], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[3,0,0,1,4], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[2,0,2,1,5], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[3,0,0,1,5], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[2,0,2,1,12], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[3,0,0,1,12], -"topics.html":[1] +"receiveData_8ino.html":[3,0,3,0], +"receiveData_8ino_source.html":[3,0,3,0], +"structLD2410Types_1_1ConfigData.html":[1,0,2,0], +"structLD2410Types_1_1ConfigData.html":[2,0,0,0], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,0,2,0,4], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[2,0,0,0,4], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,0,2,0,2], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[2,0,0,0,2], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,0,2,0,3], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[2,0,0,0,3], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,0,2,0,8], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[2,0,0,0,8], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,0,2,0,12], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[2,0,0,0,12], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,0,2,0,0], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[2,0,0,0,0], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,0,2,0,7], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[2,0,0,0,7], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,0,2,0,1], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[2,0,0,0,1], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,0,2,0,6], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[2,0,0,0,6], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,0,2,0,9], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[2,0,0,0,9], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,0,2,0,11], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[2,0,0,0,11], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,0,2,0,5], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[2,0,0,0,5], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,0,2,0,10], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[2,0,0,0,10], +"structLD2410Types_1_1DetectionData.html":[1,0,2,1], +"structLD2410Types_1_1DetectionData.html":[2,0,0,1], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,0,2,1,0], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[2,0,0,1,0], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,0,2,1,14], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[2,0,0,1,14], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,0,2,1,2], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[2,0,0,1,2], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,0,2,1,11], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[2,0,0,1,11], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,0,2,1,15], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[2,0,0,1,15], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,0,2,1,3], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[2,0,0,1,3], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,0,2,1,1], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[2,0,0,1,1], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,0,2,1,6], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[2,0,0,1,6], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,0,2,1,16], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[2,0,0,1,16], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,0,2,1,7], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[2,0,0,1,7], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,0,2,1,13], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[2,0,0,1,13], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,0,2,1,10], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[2,0,0,1,10], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,0,2,1,8], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[2,0,0,1,8], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,0,2,1,9], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[2,0,0,1,9], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,0,2,1,17], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[2,0,0,1,17], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,0,2,1,4], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[2,0,0,1,4], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,0,2,1,5], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[2,0,0,1,5], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,0,2,1,12], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[2,0,0,1,12] }; diff --git a/docu/search/all_0.js b/docu/search/all_0.js index 97e5e8a..1198aad 100644 --- a/docu/search/all_0.js +++ b/docu/search/all_0.js @@ -6,19 +6,18 @@ var searchData= ['access_20without_20cloning_3',['access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], ['accessing_20data_4',['Accessing data',['../index.html#autotoc_md1',1,'']]], ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['and_20callbacks_6',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], - ['and_20mac_7',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['and_20write_20back_8',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['apply_20config_9',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['asynccancel_10',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asynccommandcallback_11',['AsyncCommandCallback',['../group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], - ['asynccommandresult_12',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['asyncisbusy_13',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], - ['auto_20config_14',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], - ['auto_20config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['autoconfig_5ffailed_16',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_17',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_18',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], - ['autoconfigstatus_19',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], - ['autoconfigstatus_20',['autoConfigStatus',['../group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['and_20mac_6',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['and_20write_20back_7',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['asynccancel_9',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asynccommandcallback_10',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], + ['asynccommandresult_11',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asyncisbusy_12',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], + ['auto_20config_13',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], + ['auto_20config_20status_14',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['autoconfig_5ffailed_15',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_16',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_17',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], + ['autoconfigstatus_18',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], + ['autoconfigstatus_19',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/all_1.js b/docu/search/all_1.js index d7621bb..82723f7 100644 --- a/docu/search/all_1.js +++ b/docu/search/all_1.js @@ -1,31 +1,30 @@ var searchData= [ ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['basic_20methods_1',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]], - ['basicpresencedetection_2eino_2',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], - ['baudrate_3',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], - ['baudrate_5f115200_4',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_5',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_6',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_7',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_8',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_9',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_10',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_11',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], - ['begin_12',['begin',['../group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_13',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], - ['beginautoconfigcommand_14',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], - ['beginautoconfigcommanddata_15',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], - ['bluetoothsettingscommand_16',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], - ['bluetoothsettingsoffcommanddata_17',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], - ['bluetoothsettingsoncommanddata_18',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['bufferendswith_19',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], - ['buffersize_20',['bufferSize',['../group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], - ['buildauxcontrolcommand_21',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], - ['buildbaudratecommand_22',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], - ['buildbluetoothpasswordcommand_23',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], - ['builddistanceresolutioncommand_24',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], - ['buildgatesensitivitycommand_25',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], - ['buildmaxgatecommand_26',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], - ['byte2hex_27',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] + ['basicpresencedetection_2eino_1',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], + ['baudrate_2',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], + ['baudrate_5f115200_3',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_4',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_5',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_6',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_7',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_8',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_9',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_10',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], + ['begin_11',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_12',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['beginautoconfigcommand_13',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], + ['beginautoconfigcommanddata_14',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], + ['bluetoothsettingscommand_15',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], + ['bluetoothsettingsoffcommanddata_16',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], + ['bluetoothsettingsoncommanddata_17',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], + ['bufferendswith_18',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], + ['buffersize_19',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], + ['buildauxcontrolcommand_20',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], + ['buildbaudratecommand_21',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], + ['buildbluetoothpasswordcommand_22',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], + ['builddistanceresolutioncommand_23',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], + ['buildgatesensitivitycommand_24',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], + ['buildmaxgatecommand_25',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], + ['byte2hex_26',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] ]; diff --git a/docu/search/all_10.js b/docu/search/all_10.js index 49bed96..431533e 100644 --- a/docu/search/all_10.js +++ b/docu/search/all_10.js @@ -4,7 +4,6 @@ var searchData= ['taildata_1',['tailData',['../namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f',1,'LD2410Defs']]], ['targetstate_2',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], ['targetstate_3',['targetState',['../structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7',1,'LD2410Types::DetectionData']]], - ['timeout_4',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], - ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]], - ['types_20and_20callbacks_6',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] + ['timeout_4',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], + ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]] ]; diff --git a/docu/search/all_2.js b/docu/search/all_2.js index 480b9c6..0acf7bd 100644 --- a/docu/search/all_2.js +++ b/docu/search/all_2.js @@ -1,37 +1,34 @@ var searchData= [ - ['callback_20registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], - ['callbacks_1',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], - ['canceled_2',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], - ['changeconfig_2eino_3',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], - ['changedistanceresolution_2eino_4',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], - ['check_20auto_20config_20status_5',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['clone_6',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['clone_20config_20data_20modify_20and_20write_20back_7',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['clone_20modify_20and_20apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['clone_20modify_20and_20write_20back_9',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], - ['cloning_10',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['completed_11',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], - ['config_12',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], - ['config_20data_13',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['config_20data_20modify_20and_20write_20back_14',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['configdata_16',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], - ['configdata_17',['configData',['../group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], - ['configdisablecommand_18',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], - ['configdisablecommanddata_19',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], - ['configenablecommand_20',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], - ['configenablecommanddata_21',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_22',['configModeEnabled',['../group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], - ['configureallconfigsettingsasync_23',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_24',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_25',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_26',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_27',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_28',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_29',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_30',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_31',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_32',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]], - ['constructor_20basic_20methods_33',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] + ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['changeconfig_2eino_1',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], + ['changedistanceresolution_2eino_2',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], + ['check_20auto_20config_20status_3',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['clone_20config_20data_20modify_20and_20write_20back_5',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['clone_20modify_20and_20apply_20config_6',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['clone_20modify_20and_20write_20back_7',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['cloning_8',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['completed_9',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], + ['config_10',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], + ['config_20data_11',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['config_20data_20modify_20and_20write_20back_12',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['config_20status_13',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['configdata_14',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], + ['configdata_15',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdisablecommand_16',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], + ['configdisablecommanddata_17',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], + ['configenablecommand_18',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], + ['configenablecommanddata_19',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], + ['configmodeenabled_20',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], + ['configureallconfigsettingsasync_21',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_22',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_23',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_24',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_25',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_26',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_27',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_28',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_29',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_30',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] ]; diff --git a/docu/search/all_3.js b/docu/search/all_3.js index 2e3840f..9b05031 100644 --- a/docu/search/all_3.js +++ b/docu/search/all_3.js @@ -1,33 +1,32 @@ var searchData= [ ['data_0',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], - ['data_20members_1',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], - ['data_20modify_20and_20write_20back_2',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['data_20without_20cloning_3',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['debug_5fprint_4',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], - ['debug_5fprint_5fdata_5',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], - ['debug_5fprint_5fmillis_6',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_7',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_5fdata_8',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], - ['debug_5fprintln_9',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], - ['debug_5fprintln_5fdata_10',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], - ['default_5fhigh_5fdetected_5flow_11',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_12',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], - ['detecteddistance_13',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detection_20data_20without_20cloning_14',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['detectiondata_15',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], - ['detectiondata_16',['detectionData',['../group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], - ['detectiondatacallback_17',['DetectionDataCallback',['../group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]], - ['disablebluetoothasync_18',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_19',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_20',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_21',['disableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], - ['distancegatemotionsensitivity_22',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], - ['distancegatesensitivityconfigcommand_23',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], - ['distancegatesensitivityconfigcommanddata_24',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], - ['distancegatestationarysensitivity_25',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], - ['distanceresolution_26',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], - ['distanceresolution_27',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], - ['do_3a_28',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], - ['don’t_3a_29',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] + ['data_20modify_20and_20write_20back_1',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['data_20without_20cloning_2',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['debug_5fprint_3',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], + ['debug_5fprint_5fdata_4',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], + ['debug_5fprint_5fmillis_5',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_6',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_5fdata_7',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], + ['debug_5fprintln_8',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], + ['debug_5fprintln_5fdata_9',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], + ['default_5fhigh_5fdetected_5flow_10',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_11',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], + ['detecteddistance_12',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], + ['detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['detectiondata_14',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], + ['detectiondata_15',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondatacallback_16',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]], + ['disablebluetoothasync_17',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_18',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_19',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_20',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], + ['distancegatemotionsensitivity_21',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], + ['distancegatesensitivityconfigcommand_22',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], + ['distancegatesensitivityconfigcommanddata_23',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], + ['distancegatestationarysensitivity_24',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], + ['distanceresolution_25',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], + ['distanceresolution_26',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], + ['do_3a_27',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], + ['don’t_3a_28',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] ]; diff --git a/docu/search/all_4.js b/docu/search/all_4.js index 8662c9f..45bfa7f 100644 --- a/docu/search/all_4.js +++ b/docu/search/all_4.js @@ -4,14 +4,14 @@ var searchData= ['enablebluetoothasync_1',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], ['enableconfigmodeasync_2',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_4',['enableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_5',['end',['../group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enableinactivityhandling_4',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_5',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['engineeringmode_6',['engineeringMode',['../structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7',1,'LD2410Types::DetectionData']]], ['engineeringmodedisablecomand_7',['engineeringModeDisableComand',['../namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d',1,'LD2410Defs']]], ['engineeringmodedisablecommanddata_8',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_9',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_10',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_11',['engineeringModeEnabled',['../group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], + ['engineeringmodeenabled_11',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], ['equals_12',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], ['example_3a_20access_20detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], ['example_3a_20access_20values_20from_20a_20clone_14',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], diff --git a/docu/search/all_5.js b/docu/search/all_5.js index 6de2876..92d010d 100644 --- a/docu/search/all_5.js +++ b/docu/search/all_5.js @@ -1,8 +1,8 @@ var searchData= [ - ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], ['features_1',['Features',['../index.html#autotoc_md0',1,'']]], - ['firmware_2',['firmware',['../group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], + ['firmware_2',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], ['from_20a_20clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_6.js b/docu/search/all_6.js index 6d2a7c9..39faca2 100644 --- a/docu/search/all_6.js +++ b/docu/search/all_6.js @@ -1,11 +1,11 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], + ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], ['getbluetoothpermissionscommand_2',['getBluetoothPermissionsCommand',['../namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34',1,'LD2410Defs']]], ['getconfigdata_3',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], ['getconfigdataref_4',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], ['getdetectiondata_5',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], ['getdetectiondataref_6',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/all_7.js b/docu/search/all_7.js index b4ceb01..33f656d 100644 --- a/docu/search/all_7.js +++ b/docu/search/all_7.js @@ -1,6 +1,5 @@ var searchData= [ - ['handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]], - ['headconfig_1',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], - ['headdata_2',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] + ['headconfig_0',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], + ['headdata_1',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] ]; diff --git a/docu/search/all_8.js b/docu/search/all_8.js index e7a2336..63adc8d 100644 --- a/docu/search/all_8.js +++ b/docu/search/all_8.js @@ -1,10 +1,9 @@ var searchData= [ ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], - ['inactivity_20handling_1',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]], - ['introduction_2',['Introduction',['../index.html#intro_sec',1,'']]], - ['isconfigmodeenabled_3',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_4',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_5',['isInactivityHandlingEnabled',['../group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], - ['isvalid_6',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] + ['introduction_1',['Introduction',['../index.html#intro_sec',1,'']]], + ['isconfigmodeenabled_2',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_3',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_4',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isvalid_5',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_9.js b/docu/search/all_9.js index 6e36042..f46798a 100644 --- a/docu/search/all_9.js +++ b/docu/search/all_9.js @@ -1,7 +1,7 @@ var searchData= [ ['ld2410_5fbuffer_5fsize_0',['LD2410_Buffer_Size',['../namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f',1,'LD2410Defs']]], - ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], + ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], ['ld2410async_2ecpp_2',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], ['ld2410async_2eh_3',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], ['ld2410async_5fdebug_5fdata_5flevel_4',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], diff --git a/docu/search/all_a.js b/docu/search/all_a.js index 27fbd47..c2e5691 100644 --- a/docu/search/all_a.js +++ b/docu/search/all_a.js @@ -1,21 +1,19 @@ var searchData= [ ['mac_0',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['mac_1',['mac',['../group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_2',['macString',['../group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_1',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_2',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_3',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_4',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_5',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], ['maxstationarydistancegate_6',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], - ['members_7',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], - ['methods_8',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]], - ['modify_20and_20apply_20config_9',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['modify_20and_20write_20back_10',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['moving_5fand_5fstationary_5ftarget_11',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_12',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], - ['movingpresencedetected_13',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], - ['movingtargetdistance_14',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignalcount_15',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignals_16',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], - ['movingtargetsignal_17',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] + ['modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['modify_20and_20write_20back_8',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['moving_5fand_5fstationary_5ftarget_9',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_10',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], + ['movingpresencedetected_11',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], + ['movingtargetdistance_12',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignalcount_13',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignals_14',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], + ['movingtargetsignal_15',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] ]; diff --git a/docu/search/all_d.js b/docu/search/all_d.js index 8052777..658dc94 100644 --- a/docu/search/all_d.js +++ b/docu/search/all_d.js @@ -2,6 +2,5 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], ['print_1',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], - ['protocolversion_2',['protocolVersion',['../group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]], - ['public_20data_20members_3',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] + ['protocolversion_2',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] ]; diff --git a/docu/search/all_e.js b/docu/search/all_e.js index ad259aa..b62e4e0 100644 --- a/docu/search/all_e.js +++ b/docu/search/all_e.js @@ -6,35 +6,34 @@ var searchData= ['rebootcommanddata_3',['rebootCommandData',['../namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a',1,'LD2410Defs']]], ['receivedata_2eino_4',['receiveData.ino',['../receiveData_8ino.html',1,'']]], ['refresh_20config_20data_5',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['registration_9',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], - ['requestallconfigsettingsasync_10',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_11',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_12',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], - ['requestautoconfigstatuscommand_13',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], - ['requestautoconfigstatuscommanddata_14',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], - ['requestauxcontrolsettingsasync_15',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], - ['requestauxcontrolsettingscommand_16',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], - ['requestauxcontrolsettingscommanddata_17',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], - ['requestbluetoothmacaddressasync_18',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_19',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], - ['requestdistanceresolutioncommand_20',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], - ['requestdistanceresolutioncommanddata_21',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], - ['requestfirmwareasync_22',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], - ['requestfirmwarecommand_23',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], - ['requestfirmwarecommanddata_24',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], - ['requestgateparametersasync_25',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], - ['requestmacaddresscommand_26',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], - ['requestmacaddresscommanddata_27',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], - ['requestparamscommand_28',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], - ['requestparamscommanddata_29',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], - ['resolution_5f20cm_30',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_31',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], - ['restorefactorsettingscommanddata_32',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], - ['restorefactorysettingsasync_33',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], - ['restorefactorysettingsasynccommand_34',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], - ['retrieve_20firmware_20and_20mac_35',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['run_20auto_20config_36',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] + ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestautoconfigstatuscommand_12',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], + ['requestautoconfigstatuscommanddata_13',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], + ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestauxcontrolsettingscommand_15',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], + ['requestauxcontrolsettingscommanddata_16',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], + ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestdistanceresolutioncommand_19',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], + ['requestdistanceresolutioncommanddata_20',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], + ['requestfirmwareasync_21',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestfirmwarecommand_22',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], + ['requestfirmwarecommanddata_23',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], + ['requestgateparametersasync_24',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['requestmacaddresscommand_25',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], + ['requestmacaddresscommanddata_26',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], + ['requestparamscommand_27',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], + ['requestparamscommanddata_28',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], + ['resolution_5f20cm_29',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_30',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], + ['restorefactorsettingscommanddata_31',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], + ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], + ['restorefactorysettingsasynccommand_33',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], + ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['run_20auto_20config_35',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_f.js b/docu/search/all_f.js index a1fc637..339930d 100644 --- a/docu/search/all_f.js +++ b/docu/search/all_f.js @@ -10,8 +10,8 @@ var searchData= ['setdistanceresolution20cmcommanddata_7',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], ['setdistanceresolution75cmcommanddata_8',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], ['setdistanceresolutioncommand_9',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], - ['setinactivityhandling_10',['setInactivityHandling',['../group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], + ['setinactivityhandling_10',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], ['stationary_5ftarget_12',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], ['stationarypresencedetected_13',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], ['stationarytargetdistance_14',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], @@ -19,5 +19,5 @@ var searchData= ['stationarytargetgatesignals_16',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], ['stationarytargetsignal_17',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], ['status_18',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['success_19',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['success_19',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enums_0.js b/docu/search/enums_0.js index 52c5f4f..ec7d65e 100644 --- a/docu/search/enums_0.js +++ b/docu/search/enums_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccommandresult_0',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asynccommandresult_0',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], ['autoconfigstatus_1',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_2.js b/docu/search/enumvalues_2.js index 648090b..0733392 100644 --- a/docu/search/enumvalues_2.js +++ b/docu/search/enumvalues_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['canceled_0',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], ['completed_1',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_4.js b/docu/search/enumvalues_4.js index 03124b3..b56eb90 100644 --- a/docu/search/enumvalues_4.js +++ b/docu/search/enumvalues_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_a.js b/docu/search/enumvalues_a.js index dd71f2f..5cb9cc1 100644 --- a/docu/search/enumvalues_a.js +++ b/docu/search/enumvalues_a.js @@ -1,5 +1,5 @@ var searchData= [ ['stationary_5ftarget_0',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], - ['success_1',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['success_1',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_b.js b/docu/search/enumvalues_b.js index 40b3921..c466cc0 100644 --- a/docu/search/enumvalues_b.js +++ b/docu/search/enumvalues_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['timeout_0',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] + ['timeout_0',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_1.js b/docu/search/functions_1.js index e37433d..0818f99 100644 --- a/docu/search/functions_1.js +++ b/docu/search/functions_1.js @@ -1,6 +1,6 @@ var searchData= [ - ['begin_0',['begin',['../group__LD2410Async__Lifecycle.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['begin_0',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], ['beginautoconfigasync_1',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['bufferendswith_2',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], ['buildauxcontrolcommand_3',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], diff --git a/docu/search/functions_3.js b/docu/search/functions_3.js index df11e81..072953d 100644 --- a/docu/search/functions_3.js +++ b/docu/search/functions_3.js @@ -3,5 +3,5 @@ var searchData= ['disablebluetoothasync_0',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], ['disableconfigmodeasync_1',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_3',['disableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] + ['disableinactivityhandling_3',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_4.js b/docu/search/functions_4.js index b4f7000..4151ded 100644 --- a/docu/search/functions_4.js +++ b/docu/search/functions_4.js @@ -3,7 +3,7 @@ var searchData= ['enablebluetoothasync_0',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], ['enableconfigmodeasync_1',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_3',['enableInactivityHandling',['../group__LD2410Async__Inactivity.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_4',['end',['../group__LD2410Async__Lifecycle.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enableinactivityhandling_3',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_4',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['equals_5',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_5.js b/docu/search/functions_5.js index c5885dc..7a0cce8 100644 --- a/docu/search/functions_5.js +++ b/docu/search/functions_5.js @@ -5,5 +5,5 @@ var searchData= ['getconfigdataref_2',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], ['getdetectiondata_3',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], ['getdetectiondataref_4',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_6.js b/docu/search/functions_6.js index b7b96bb..8c8e0e6 100644 --- a/docu/search/functions_6.js +++ b/docu/search/functions_6.js @@ -2,6 +2,6 @@ var searchData= [ ['isconfigmodeenabled_0',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../group__LD2410Async__Inactivity.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], ['isvalid_3',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_7.js b/docu/search/functions_7.js index e6d84d5..92323e6 100644 --- a/docu/search/functions_7.js +++ b/docu/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['ld2410async_0',['LD2410Async',['../group__LD2410Async__Lifecycle.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] + ['ld2410async_0',['LD2410Async',['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_9.js b/docu/search/functions_9.js index 11719a8..237074f 100644 --- a/docu/search/functions_9.js +++ b/docu/search/functions_9.js @@ -1,9 +1,9 @@ var searchData= [ ['rebootasync_0',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], - ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], diff --git a/docu/search/functions_a.js b/docu/search/functions_a.js index b9bd543..4246c3c 100644 --- a/docu/search/functions_a.js +++ b/docu/search/functions_a.js @@ -1,6 +1,6 @@ var searchData= [ ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], - ['setinactivityhandling_1',['setInactivityHandling',['../group__LD2410Async__Inactivity.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../group__LD2410Async__Inactivity.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] + ['setinactivityhandling_1',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] ]; diff --git a/docu/search/searchdata.js b/docu/search/searchdata.js index 9a1943d..f9cff2e 100644 --- a/docu/search/searchdata.js +++ b/docu/search/searchdata.js @@ -10,8 +10,7 @@ var indexSectionsWithContent = 7: "abdlot", 8: "abcdfilmnrst", 9: "dl", - 10: "abcdhimprt", - 11: "l" + 10: "l" }; var indexSectionNames = @@ -26,8 +25,7 @@ var indexSectionNames = 7: "enums", 8: "enumvalues", 9: "defines", - 10: "groups", - 11: "pages" + 10: "pages" }; var indexSectionLabels = @@ -42,7 +40,6 @@ var indexSectionLabels = 7: "Enumerations", 8: "Enumerator", 9: "Macros", - 10: "Modules", - 11: "Pages" + 10: "Pages" }; diff --git a/docu/search/typedefs_0.js b/docu/search/typedefs_0.js index 97c1f89..f554ef9 100644 --- a/docu/search/typedefs_0.js +++ b/docu/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['asynccommandcallback_0',['AsyncCommandCallback',['../group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] + ['asynccommandcallback_0',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_1.js b/docu/search/typedefs_1.js index 815c1e1..111b7e0 100644 --- a/docu/search/typedefs_1.js +++ b/docu/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['detectiondatacallback_0',['DetectionDataCallback',['../group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]] + ['detectiondatacallback_0',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_2.js b/docu/search/typedefs_2.js index 7b1f251..d967de0 100644 --- a/docu/search/typedefs_2.js +++ b/docu/search/typedefs_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] + ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_0.js b/docu/search/variables_0.js index 9c4b8a4..1e3a26c 100644 --- a/docu/search/variables_0.js +++ b/docu/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['autoconfigstatus_0',['autoConfigStatus',['../group__LD2410Async__Data.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['autoconfigstatus_0',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_1.js b/docu/search/variables_1.js index 0eb8cfd..c7266ad 100644 --- a/docu/search/variables_1.js +++ b/docu/search/variables_1.js @@ -5,5 +5,5 @@ var searchData= ['bluetoothsettingscommand_2',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], ['bluetoothsettingsoffcommanddata_3',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], ['bluetoothsettingsoncommanddata_4',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['buffersize_5',['bufferSize',['../group__LD2410Async__Data.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] + ['buffersize_5',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_2.js b/docu/search/variables_2.js index fc3fcfe..090f1af 100644 --- a/docu/search/variables_2.js +++ b/docu/search/variables_2.js @@ -1,9 +1,9 @@ var searchData= [ - ['configdata_0',['configData',['../group__LD2410Async__Data.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdata_0',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], ['configdisablecommand_1',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], ['configdisablecommanddata_2',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], ['configenablecommand_3',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], ['configenablecommanddata_4',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_5',['configModeEnabled',['../group__LD2410Async__Data.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] + ['configmodeenabled_5',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_3.js b/docu/search/variables_3.js index b8425cc..48d60d4 100644 --- a/docu/search/variables_3.js +++ b/docu/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ ['detecteddistance_0',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detectiondata_1',['detectionData',['../group__LD2410Async__Data.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondata_1',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], ['distancegatemotionsensitivity_2',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], ['distancegatesensitivityconfigcommand_3',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], ['distancegatesensitivityconfigcommanddata_4',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], diff --git a/docu/search/variables_4.js b/docu/search/variables_4.js index d260430..0aba132 100644 --- a/docu/search/variables_4.js +++ b/docu/search/variables_4.js @@ -5,5 +5,5 @@ var searchData= ['engineeringmodedisablecommanddata_2',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_3',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_4',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_5',['engineeringModeEnabled',['../group__LD2410Async__Data.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] + ['engineeringmodeenabled_5',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_5.js b/docu/search/variables_5.js index 39d58db..d2f07d1 100644 --- a/docu/search/variables_5.js +++ b/docu/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['firmware_0',['firmware',['../group__LD2410Async__Data.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] + ['firmware_0',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_9.js b/docu/search/variables_9.js index d11ae54..11bf95a 100644 --- a/docu/search/variables_9.js +++ b/docu/search/variables_9.js @@ -1,7 +1,7 @@ var searchData= [ - ['mac_0',['mac',['../group__LD2410Async__Data.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_1',['macString',['../group__LD2410Async__Data.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_0',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_1',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_2',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_3',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_4',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], diff --git a/docu/search/variables_c.js b/docu/search/variables_c.js index 487c60a..f458503 100644 --- a/docu/search/variables_c.js +++ b/docu/search/variables_c.js @@ -1,5 +1,5 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], - ['protocolversion_1',['protocolVersion',['../group__LD2410Async__Data.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['protocolversion_1',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] ]; diff --git a/docu/structLD2410Types_1_1ConfigData.html b/docu/structLD2410Types_1_1ConfigData.html index 221b8b2..b7c609f 100644 --- a/docu/structLD2410Types_1_1ConfigData.html +++ b/docu/structLD2410Types_1_1ConfigData.html @@ -160,7 +160,7 @@

                                                  This structure represents both static capabilities (e.g. number of gates) and configurable settings (e.g. sensitivities, timeouts, resolution).

                                                  The values are typically filled by request commands such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().

                                                  -

                                                  Definition at line 341 of file LD2410Types.h.

                                                  +

                                                  Definition at line 371 of file LD2410Types.h.

                                                  Member Function Documentation

                                                  ◆ equals()

                                                  @@ -194,33 +194,33 @@

                                                  Returns
                                                  True if all fields are equal, false otherwise.

    -

    Definition at line 401 of file LD2410Types.h.

    -
    401 {
    -
    402 if (numberOfGates != other.numberOfGates) return false;
    -
    403 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
    -
    404 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
    -
    405 if (noOneTimeout != other.noOneTimeout) return false;
    -
    406 if (distanceResolution != other.distanceResolution) return false;
    -
    407 if (lightThreshold != other.lightThreshold) return false;
    -
    408 if (lightControl != other.lightControl) return false;
    -
    409 if (outputControl != other.outputControl) return false;
    -
    410
    -
    411 for (int i = 0; i < 9; i++) {
    -
    412 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
    -
    413 if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false;
    -
    414 }
    -
    415 return true;
    -
    416 }
    -
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    -
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    -
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    -
    OutputControl outputControl
    Logic configuration of the OUT pin.
    -
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    -
    LightControl lightControl
    Light-dependent auxiliary control mode.
    -
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    -
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    -
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    -
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    +

    Definition at line 431 of file LD2410Types.h.

    +
    431 {
    +
    432 if (numberOfGates != other.numberOfGates) return false;
    +
    433 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
    +
    434 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
    +
    435 if (noOneTimeout != other.noOneTimeout) return false;
    +
    436 if (distanceResolution != other.distanceResolution) return false;
    +
    437 if (lightThreshold != other.lightThreshold) return false;
    +
    438 if (lightControl != other.lightControl) return false;
    +
    439 if (outputControl != other.outputControl) return false;
    +
    440
    +
    441 for (int i = 0; i < 9; i++) {
    +
    442 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
    +
    443 if (distanceGateStationarySensitivity[i] != other.distanceGateStationarySensitivity[i]) return false;
    +
    444 }
    +
    445 return true;
    +
    446 }
    +
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    +
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    +
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    +
    OutputControl outputControl
    Logic configuration of the OUT pin.
    +
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    +
    LightControl lightControl
    Light-dependent auxiliary control mode.
    +
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    +
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    +
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    +
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    @@ -251,34 +251,29 @@

    Returns
    True if the configuration is valid, false otherwise.
    -

    Definition at line 376 of file LD2410Types.h.

    -
    376 {
    -
    377 // Validate enum settings
    - -
    379 if (lightControl == LightControl::NOT_SET) return false;
    -
    380 if (outputControl == OutputControl::NOT_SET) return false;
    -
    381
    -
    382 // Validate max distance gates
    - - -
    385
    -
    386 // Validate sensitivities
    -
    387 for (int i = 0; i < 9; i++) {
    -
    388 if (distanceGateMotionSensitivity[i] > 100) return false;
    -
    389 if (distanceGateStationarySensitivity[i] > 100) return false;
    -
    390 }
    -
    391
    -
    392 return true;
    -
    393 }
    +

    Definition at line 406 of file LD2410Types.h.

    +
    406 {
    +
    407 // Validate enum settings
    + +
    409 if (lightControl == LightControl::NOT_SET) return false;
    +
    410 if (outputControl == OutputControl::NOT_SET) return false;
    +
    411
    +
    412 // Validate max distance gates
    + + +
    415
    +
    416 // Validate sensitivities
    +
    417 for (int i = 0; i < 9; i++) {
    +
    418 if (distanceGateMotionSensitivity[i] > 100) return false;
    +
    419 if (distanceGateStationarySensitivity[i] > 100) return false;
    +
    420 }
    +
    421
    +
    422 return true;
    +
    423 }
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    -Here is the caller graph for this function:
    -
    -
    -
    - +
    @@ -306,50 +301,50 @@

    Definition at line 421 of file LD2410Types.h.

    -
    421 {
    -
    422 Serial.println("=== ConfigData ===");
    -
    423
    -
    424 Serial.print(" Number of Gates: ");
    -
    425 Serial.println(numberOfGates);
    -
    426
    -
    427 Serial.print(" Max Motion Distance Gate: ");
    -
    428 Serial.println(maxMotionDistanceGate);
    -
    429
    -
    430 Serial.print(" Max Stationary Distance Gate: ");
    -
    431 Serial.println(maxStationaryDistanceGate);
    -
    432
    -
    433 Serial.print(" Motion Sensitivity: ");
    -
    434 for (int i = 0; i < 9; i++) {
    -
    435 Serial.print(distanceGateMotionSensitivity[i]);
    -
    436 if (i < 8) Serial.print(",");
    -
    437 }
    -
    438 Serial.println();
    -
    439
    -
    440 Serial.print(" Stationary Sensitivity: ");
    -
    441 for (int i = 0; i < 9; i++) {
    -
    442 Serial.print(distanceGateStationarySensitivity[i]);
    -
    443 if (i < 8) Serial.print(",");
    -
    444 }
    -
    445 Serial.println();
    -
    446
    -
    447 Serial.print(" No One Timeout: ");
    -
    448 Serial.println(noOneTimeout);
    -
    449
    -
    450 Serial.print(" Distance Resolution: ");
    -
    451 Serial.println(static_cast<int>(distanceResolution));
    -
    452
    -
    453 Serial.print(" Light Threshold: ");
    -
    454 Serial.println(lightThreshold);
    -
    455
    -
    456 Serial.print(" Light Control: ");
    -
    457 Serial.println(static_cast<int>(lightControl));
    -
    458
    -
    459 Serial.print(" Output Control: ");
    -
    460 Serial.println(static_cast<int>(outputControl));
    -
    461
    -
    462 Serial.println("===================");
    -
    463 }
    +

    Definition at line 451 of file LD2410Types.h.

    +
    451 {
    +
    452 Serial.println("=== ConfigData ===");
    +
    453
    +
    454 Serial.print(" Number of Gates: ");
    +
    455 Serial.println(numberOfGates);
    +
    456
    +
    457 Serial.print(" Max Motion Distance Gate: ");
    +
    458 Serial.println(maxMotionDistanceGate);
    +
    459
    +
    460 Serial.print(" Max Stationary Distance Gate: ");
    +
    461 Serial.println(maxStationaryDistanceGate);
    +
    462
    +
    463 Serial.print(" Motion Sensitivity: ");
    +
    464 for (int i = 0; i < 9; i++) {
    +
    465 Serial.print(distanceGateMotionSensitivity[i]);
    +
    466 if (i < 8) Serial.print(",");
    +
    467 }
    +
    468 Serial.println();
    +
    469
    +
    470 Serial.print(" Stationary Sensitivity: ");
    +
    471 for (int i = 0; i < 9; i++) {
    +
    472 Serial.print(distanceGateStationarySensitivity[i]);
    +
    473 if (i < 8) Serial.print(",");
    +
    474 }
    +
    475 Serial.println();
    +
    476
    +
    477 Serial.print(" No One Timeout: ");
    +
    478 Serial.println(noOneTimeout);
    +
    479
    +
    480 Serial.print(" Distance Resolution: ");
    +
    481 Serial.println(static_cast<int>(distanceResolution));
    +
    482
    +
    483 Serial.print(" Light Threshold: ");
    +
    484 Serial.println(lightThreshold);
    +
    485
    +
    486 Serial.print(" Light Control: ");
    +
    487 Serial.println(static_cast<int>(lightControl));
    +
    488
    +
    489 Serial.print(" Output Control: ");
    +
    490 Serial.println(static_cast<int>(outputControl));
    +
    491
    +
    492 Serial.println("===================");
    +
    493 }
    @@ -368,8 +363,8 @@

    Definition at line 350 of file LD2410Types.h.

    -
    350{ 0 }; ///< Motion sensitivity values per gate (0–100).
    +

    Definition at line 380 of file LD2410Types.h.

    +
    380{ 0 }; ///< Motion sensitivity values per gate (0–100).
    @@ -387,8 +382,8 @@

    Definition at line 351 of file LD2410Types.h.

    -
    351{ 0 }; ///< Stationary sensitivity values per gate (0–100).
    +

    Definition at line 381 of file LD2410Types.h.

    +
    381{ 0 }; ///< Stationary sensitivity values per gate (0–100).
    @@ -406,7 +401,7 @@

    Definition at line 357 of file LD2410Types.h.

    +

    Definition at line 387 of file LD2410Types.h.

    @@ -424,7 +419,7 @@

    Definition at line 361 of file LD2410Types.h.

    +

    Definition at line 391 of file LD2410Types.h.

    @@ -442,7 +437,7 @@

    Definition at line 360 of file LD2410Types.h.

    +

    Definition at line 390 of file LD2410Types.h.

    @@ -460,7 +455,7 @@

    Definition at line 346 of file LD2410Types.h.

    +

    Definition at line 376 of file LD2410Types.h.

    @@ -478,7 +473,7 @@

    Definition at line 347 of file LD2410Types.h.

    +

    Definition at line 377 of file LD2410Types.h.

    @@ -496,7 +491,7 @@

    -

    Definition at line 354 of file LD2410Types.h.

    +

    Definition at line 384 of file LD2410Types.h.

    @@ -514,7 +509,7 @@

    Definition at line 343 of file LD2410Types.h.

    +

    Definition at line 373 of file LD2410Types.h.

    @@ -532,7 +527,7 @@

    Definition at line 362 of file LD2410Types.h.

    +

    Definition at line 392 of file LD2410Types.h.

    diff --git a/docu/structLD2410Types_1_1DetectionData.html b/docu/structLD2410Types_1_1DetectionData.html index 2cf8e16..55913bd 100644 --- a/docu/structLD2410Types_1_1DetectionData.html +++ b/docu/structLD2410Types_1_1DetectionData.html @@ -174,7 +174,7 @@

    Holds the most recent detection data reported by the radar.

    This structure is continuously updated as new frames arrive. Values reflect either the basic presence information or, if engineering mode is enabled, per-gate signal details.

    -

    Definition at line 234 of file LD2410Types.h.

    +

    Definition at line 261 of file LD2410Types.h.

    Member Function Documentation

    ◆ print()

    @@ -201,81 +201,81 @@

    Definition at line 267 of file LD2410Types.h.

    -
    267 {
    -
    268 Serial.println("=== DetectionData ===");
    -
    269
    -
    270 Serial.print(" Timestamp: ");
    -
    271 Serial.println(timestamp);
    -
    272
    -
    273 Serial.print(" Engineering Mode: ");
    -
    274 Serial.println(engineeringMode ? "Yes" : "No");
    -
    275
    -
    276 Serial.print(" Target State: ");
    -
    277 Serial.println(static_cast<int>(targetState));
    -
    278
    -
    279 Serial.print(" Moving Target Distance (cm): ");
    -
    280 Serial.println(movingTargetDistance);
    -
    281
    -
    282 Serial.print(" Moving Target Signal: ");
    -
    283 Serial.println(movingTargetSignal);
    -
    284
    -
    285 Serial.print(" Stationary Target Distance (cm): ");
    -
    286 Serial.println(stationaryTargetDistance);
    -
    287
    -
    288 Serial.print(" Stationary Target Signal: ");
    -
    289 Serial.println(stationaryTargetSignal);
    -
    290
    -
    291 Serial.print(" Detected Distance (cm): ");
    -
    292 Serial.println(detectedDistance);
    -
    293
    -
    294 Serial.print(" Light Level: ");
    -
    295 Serial.println(lightLevel);
    +

    Definition at line 294 of file LD2410Types.h.

    +
    294 {
    +
    295 Serial.println("=== DetectionData ===");
    296
    -
    297 Serial.print(" OUT Pin Status: ");
    -
    298 Serial.println(outPinStatus ? "High" : "Low");
    +
    297 Serial.print(" Timestamp: ");
    +
    298 Serial.println(timestamp);
    299
    -
    300 // --- Engineering mode fields ---
    -
    301 if (engineeringMode) {
    -
    302 Serial.println(" --- Engineering Mode Data ---");
    -
    303
    -
    304 Serial.print(" Moving Target Gate Signal Count: ");
    -
    305 Serial.println(movingTargetGateSignalCount);
    -
    306
    -
    307 Serial.print(" Moving Target Gate Signals: ");
    -
    308 for (int i = 0; i < movingTargetGateSignalCount; i++) {
    -
    309 Serial.print(movingTargetGateSignals[i]);
    -
    310 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
    -
    311 }
    -
    312 Serial.println();
    -
    313
    -
    314 Serial.print(" Stationary Target Gate Signal Count: ");
    -
    315 Serial.println(stationaryTargetGateSignalCount);
    -
    316
    -
    317 Serial.print(" Stationary Target Gate Signals: ");
    -
    318 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
    -
    319 Serial.print(stationaryTargetGateSignals[i]);
    -
    320 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
    -
    321 }
    -
    322 Serial.println();
    -
    323 }
    -
    324
    -
    325 Serial.println("======================");
    -
    326 }
    -
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    -
    bool engineeringMode
    True if engineering mode data was received.
    -
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    -
    byte lightLevel
    Reported ambient light level (0–255).
    -
    unsigned int detectedDistance
    General detection distance (cm).
    -
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    -
    TargetState targetState
    Current detection state.
    -
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    -
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    -
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    -
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    -
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    -
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    -
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    +
    300 Serial.print(" Engineering Mode: ");
    +
    301 Serial.println(engineeringMode ? "Yes" : "No");
    +
    302
    +
    303 Serial.print(" Target State: ");
    +
    304 Serial.println(static_cast<int>(targetState));
    +
    305
    +
    306 Serial.print(" Moving Target Distance (cm): ");
    +
    307 Serial.println(movingTargetDistance);
    +
    308
    +
    309 Serial.print(" Moving Target Signal: ");
    +
    310 Serial.println(movingTargetSignal);
    +
    311
    +
    312 Serial.print(" Stationary Target Distance (cm): ");
    +
    313 Serial.println(stationaryTargetDistance);
    +
    314
    +
    315 Serial.print(" Stationary Target Signal: ");
    +
    316 Serial.println(stationaryTargetSignal);
    +
    317
    +
    318 Serial.print(" Detected Distance (cm): ");
    +
    319 Serial.println(detectedDistance);
    +
    320
    +
    321 Serial.print(" Light Level: ");
    +
    322 Serial.println(lightLevel);
    +
    323
    +
    324 Serial.print(" OUT Pin Status: ");
    +
    325 Serial.println(outPinStatus ? "High" : "Low");
    +
    326
    +
    327 // --- Engineering mode fields ---
    +
    328 if (engineeringMode) {
    +
    329 Serial.println(" --- Engineering Mode Data ---");
    +
    330
    +
    331 Serial.print(" Moving Target Gate Signal Count: ");
    +
    332 Serial.println(movingTargetGateSignalCount);
    +
    333
    +
    334 Serial.print(" Moving Target Gate Signals: ");
    +
    335 for (int i = 0; i < movingTargetGateSignalCount; i++) {
    +
    336 Serial.print(movingTargetGateSignals[i]);
    +
    337 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
    +
    338 }
    +
    339 Serial.println();
    +
    340
    +
    341 Serial.print(" Stationary Target Gate Signal Count: ");
    +
    342 Serial.println(stationaryTargetGateSignalCount);
    +
    343
    +
    344 Serial.print(" Stationary Target Gate Signals: ");
    +
    345 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
    +
    346 Serial.print(stationaryTargetGateSignals[i]);
    +
    347 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
    +
    348 }
    +
    349 Serial.println();
    +
    350 }
    +
    351
    +
    352 Serial.println("======================");
    +
    353 }
    +
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    +
    bool engineeringMode
    True if engineering mode data was received.
    +
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    +
    byte lightLevel
    Reported ambient light level (0–255).
    +
    unsigned int detectedDistance
    General detection distance (cm).
    +
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    +
    TargetState targetState
    Current detection state.
    +
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    +
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    +
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    +
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    +
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    +
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    +
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    @@ -294,7 +294,7 @@

    Definition at line 251 of file LD2410Types.h.

    +

    Definition at line 278 of file LD2410Types.h.

    @@ -312,7 +312,7 @@

    Definition at line 240 of file LD2410Types.h.

    +

    Definition at line 267 of file LD2410Types.h.

    @@ -330,7 +330,7 @@

    Definition at line 260 of file LD2410Types.h.

    +

    Definition at line 287 of file LD2410Types.h.

    @@ -348,7 +348,7 @@

    Definition at line 243 of file LD2410Types.h.

    +

    Definition at line 270 of file LD2410Types.h.

    @@ -366,7 +366,7 @@

    Definition at line 247 of file LD2410Types.h.

    +

    Definition at line 274 of file LD2410Types.h.

    @@ -384,7 +384,7 @@

    Definition at line 254 of file LD2410Types.h.

    +

    Definition at line 281 of file LD2410Types.h.

    @@ -402,8 +402,8 @@

    Definition at line 255 of file LD2410Types.h.

    -
    255{ 0 }; ///< Per-gate signal strengths for moving targets.
    +

    Definition at line 282 of file LD2410Types.h.

    +
    282{ 0 }; ///< Per-gate signal strengths for moving targets.
    @@ -421,7 +421,7 @@

    Definition at line 248 of file LD2410Types.h.

    +

    Definition at line 275 of file LD2410Types.h.

    @@ -439,7 +439,7 @@

    Definition at line 261 of file LD2410Types.h.

    +

    Definition at line 288 of file LD2410Types.h.

    @@ -457,7 +457,7 @@

    Definition at line 242 of file LD2410Types.h.

    +

    Definition at line 269 of file LD2410Types.h.

    @@ -475,7 +475,7 @@

    Definition at line 244 of file LD2410Types.h.

    +

    Definition at line 271 of file LD2410Types.h.

    @@ -493,7 +493,7 @@

    Definition at line 249 of file LD2410Types.h.

    +

    Definition at line 276 of file LD2410Types.h.

    @@ -511,7 +511,7 @@

    Definition at line 257 of file LD2410Types.h.

    +

    Definition at line 284 of file LD2410Types.h.

    @@ -529,8 +529,8 @@

    Definition at line 258 of file LD2410Types.h.

    -
    258{ 0 }; ///< Per-gate signal strengths for stationary targets.
    +

    Definition at line 285 of file LD2410Types.h.

    +
    285{ 0 }; ///< Per-gate signal strengths for stationary targets.
    @@ -548,7 +548,7 @@

    Definition at line 250 of file LD2410Types.h.

    +

    Definition at line 277 of file LD2410Types.h.

    @@ -566,7 +566,7 @@

    Definition at line 246 of file LD2410Types.h.

    +

    Definition at line 273 of file LD2410Types.h.

    @@ -584,7 +584,7 @@

    Definition at line 236 of file LD2410Types.h.

    +

    Definition at line 263 of file LD2410Types.h.

    From 21b0f1e847f6cfdbb0060435ff72df433a5d9635 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 21:17:54 +0200 Subject: [PATCH 023/114] Fixes to make groups work (i hope) --- Doxyfile | 2 +- dox/groups.dox | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Doxyfile b/Doxyfile index aa8159b..38ff315 100644 --- a/Doxyfile +++ b/Doxyfile @@ -17,7 +17,7 @@ SORT_GROUP_NAMES = YES # Input INPUT = src examples dox -FILE_PATTERNS = *.h *.cpp *.ino +FILE_PATTERNS = *.h *.cpp *.ino *.dox RECURSIVE = YES # Source code browsing diff --git a/dox/groups.dox b/dox/groups.dox index 5171ebb..786903a 100644 --- a/dox/groups.dox +++ b/dox/groups.dox @@ -65,7 +65,32 @@ */ /** @} */ +/** + * @defgroup LD2410Async_MainMethods Constructor & Main methods + * + * Constructor and main methods (begin(), end() of the LD2410Async class. + * + * @{ + */ +/** @} */ +/** + * @defgroup LD2410Async_InactivityHandling Inactivity Handling + * + * Methods for inactivity handling. Inactivity handling allows to automatically recover from situations where the sensor remains silent for a long time. + * Typically this happen only if the sensor is stuck resp. left in config mode unwillingly. + * + * @{ + */ +/** @} */ +/** + * @defgroup LD2410Async_AsyncCommands Async Commands + * + * Commands with async behaviour. These commands return immediately and the result of the command is provided later via a callback. + * The return value of these methods indicates whther the command could be sent to the sensor or if there was a problem. When commands cant be executed, the causes are either another pending async command (only one async command allowed at a time) or due to invalid parameters. * + * @{ + */ +/** @} */ From 095263644b90290bd17f2c3ece099031f4153a45 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 19:18:06 +0000 Subject: [PATCH 024/114] Update documentation --- docu/LD2410Async_8cpp_source.html | 516 +-- docu/LD2410Async_8h_source.html | 344 +- docu/LD2410CommandBuilder_8h.html | 4 +- docu/LD2410CommandBuilder_8h_source.html | 26 +- docu/LD2410Types_8h.html | 86 +- docu/LD2410Types_8h.js | 72 +- docu/LD2410Types_8h_source.html | 224 +- docu/basicPresenceDetection_8ino.html | 2 +- docu/basicPresenceDetection_8ino_source.html | 2 +- docu/changeConfig_8ino.html | 2 +- docu/changeConfig_8ino_source.html | 2 +- docu/changeDistanceResolution_8ino.html | 2 +- .../changeDistanceResolution_8ino_source.html | 2 +- docu/classLD2410Async-members.html | 132 +- docu/classLD2410Async.html | 3231 ++--------------- docu/classLD2410Async.js | 140 +- .../dir_107e309f9f293897177ec4de6cf5a764.html | 113 + .../dir_30f1c3aaa201f9bae8f75919357e181e.html | 119 + docu/dir_30f1c3aaa201f9bae8f75919357e181e.js | 4 + .../dir_50142b4b88c8e10a7393418c3979093f.html | 119 + docu/dir_50142b4b88c8e10a7393418c3979093f.js | 4 + .../dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html | 119 + docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.js | 4 + .../dir_595d66bff896d8b55fe1899c99f27ac3.html | 119 + docu/dir_595d66bff896d8b55fe1899c99f27ac3.js | 4 + docu/doxygen_crawl.html | 325 +- docu/files.html | 23 +- docu/files_dup.js | 9 +- docu/functions.html | 126 +- docu/functions_enum.html | 2 +- docu/functions_func.html | 98 +- docu/functions_type.html | 6 +- docu/functions_vars.html | 20 +- docu/group__LD2410Async__AsyncCommands.html | 300 ++ docu/group__LD2410Async__AsyncCommands.js | 8 + docu/group__LD2410Async__Bluetooth.html | 113 + docu/group__LD2410Async__Callbacks.html | 122 +- docu/group__LD2410Async__Callbacks.js | 5 +- docu/group__LD2410Async__Configuration.html | 361 ++ docu/group__LD2410Async__Configuration.js | 24 + ...group__LD2410Async__HighLevelCommands.html | 420 +++ docu/group__LD2410Async__HighLevelCommands.js | 6 + ...roup__LD2410Async__InactivityHandling.html | 337 ++ .../group__LD2410Async__InactivityHandling.js | 9 + docu/group__LD2410Async__MainMethods.html | 273 ++ docu/group__LD2410Async__MainMethods.js | 6 + docu/group__LD2410Async__NativeCommands.html | 1407 +++++++ docu/group__LD2410Async__NativeCommands.js | 26 + ...group__LD2410Async__PresenceDetection.html | 317 ++ docu/group__LD2410Async__PresenceDetection.js | 28 + docu/group__LD2410Async__PublicData.html | 416 +++ docu/group__LD2410Async__PublicData.js | 10 + docu/group__LD2410Async__StaticData.html | 231 ++ docu/group__LD2410Async__StaticData.js | 8 + docu/group__LD2410Async__Types.html | 429 ++- docu/group__LD2410Async__Types.js | 79 +- docu/groups_8dox.html | 113 + docu/index.html | 4 +- docu/menudata.js | 1 + docu/namespaceLD2410CommandBuilder.html | 26 +- docu/namespaceLD2410Types.html | 395 +- docu/namespaceLD2410Types.js | 70 +- docu/namespacemembers.html | 12 +- docu/namespacemembers_enum.html | 12 +- docu/navtreedata.js | 3 +- docu/navtreeindex0.js | 486 +-- docu/navtreeindex1.js | 231 +- docu/receiveData_8ino.html | 2 +- docu/receiveData_8ino_source.html | 2 +- docu/search/all_0.js | 37 +- docu/search/all_1.js | 49 +- docu/search/all_10.js | 7 +- docu/search/all_12.js | 2 +- docu/search/all_13.js | 4 +- docu/search/all_2.js | 66 +- docu/search/all_3.js | 61 +- docu/search/all_4.js | 37 +- docu/search/all_5.js | 8 +- docu/search/all_6.js | 15 +- docu/search/all_7.js | 6 +- docu/search/all_8.js | 13 +- docu/search/all_9.js | 15 +- docu/search/all_a.js | 35 +- docu/search/all_b.js | 13 +- docu/search/all_c.js | 2 +- docu/search/all_d.js | 8 +- docu/search/all_e.js | 38 +- docu/search/all_f.js | 44 +- docu/search/enums_0.js | 4 +- docu/search/enums_1.js | 2 +- docu/search/enums_2.js | 2 +- docu/search/enums_3.js | 2 +- docu/search/enums_4.js | 2 +- docu/search/enums_5.js | 2 +- docu/search/enumvalues_0.js | 6 +- docu/search/enumvalues_1.js | 16 +- docu/search/enumvalues_2.js | 4 +- docu/search/enumvalues_3.js | 4 +- docu/search/enumvalues_4.js | 2 +- docu/search/enumvalues_5.js | 2 +- docu/search/enumvalues_6.js | 4 +- docu/search/enumvalues_7.js | 4 +- docu/search/enumvalues_8.js | 8 +- docu/search/enumvalues_9.js | 4 +- docu/search/enumvalues_a.js | 4 +- docu/search/enumvalues_b.js | 2 +- docu/search/files_2.js | 7 +- docu/search/files_3.js | 7 +- docu/search/files_4.js | 4 + docu/search/functions_0.js | 4 +- docu/search/functions_1.js | 4 +- docu/search/functions_2.js | 20 +- docu/search/functions_3.js | 8 +- docu/search/functions_4.js | 10 +- docu/search/functions_5.js | 12 +- docu/search/functions_6.js | 6 +- docu/search/functions_7.js | 2 +- docu/search/functions_9.js | 26 +- docu/search/functions_a.js | 6 +- docu/search/groups_0.js | 2 +- docu/search/groups_1.js | 2 +- docu/search/groups_2.js | 7 +- docu/search/groups_3.js | 4 +- docu/search/groups_4.js | 2 +- docu/search/groups_5.js | 3 +- docu/search/groups_6.js | 3 +- docu/search/groups_7.js | 2 +- docu/search/groups_8.js | 4 +- docu/search/groups_9.js | 2 +- docu/search/groups_a.js | 5 + docu/search/groups_b.js | 7 + docu/search/groups_c.js | 4 + docu/search/searchdata.js | 11 +- docu/search/typedefs_0.js | 2 +- docu/search/typedefs_1.js | 2 +- docu/search/typedefs_2.js | 2 +- docu/search/variables_0.js | 2 +- docu/search/variables_1.js | 2 +- docu/search/variables_2.js | 4 +- docu/search/variables_3.js | 2 +- docu/search/variables_4.js | 2 +- docu/search/variables_5.js | 2 +- docu/search/variables_9.js | 4 +- docu/search/variables_c.js | 2 +- docu/structLD2410Types_1_1ConfigData.html | 26 +- docu/structLD2410Types_1_1DetectionData.html | 6 +- docu/topics.html | 17 +- docu/topics.js | 17 +- 148 files changed, 7670 insertions(+), 5423 deletions(-) create mode 100644 docu/dir_107e309f9f293897177ec4de6cf5a764.html create mode 100644 docu/dir_30f1c3aaa201f9bae8f75919357e181e.html create mode 100644 docu/dir_30f1c3aaa201f9bae8f75919357e181e.js create mode 100644 docu/dir_50142b4b88c8e10a7393418c3979093f.html create mode 100644 docu/dir_50142b4b88c8e10a7393418c3979093f.js create mode 100644 docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html create mode 100644 docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.js create mode 100644 docu/dir_595d66bff896d8b55fe1899c99f27ac3.html create mode 100644 docu/dir_595d66bff896d8b55fe1899c99f27ac3.js create mode 100644 docu/group__LD2410Async__AsyncCommands.html create mode 100644 docu/group__LD2410Async__AsyncCommands.js create mode 100644 docu/group__LD2410Async__Bluetooth.html create mode 100644 docu/group__LD2410Async__Configuration.html create mode 100644 docu/group__LD2410Async__Configuration.js create mode 100644 docu/group__LD2410Async__HighLevelCommands.html create mode 100644 docu/group__LD2410Async__HighLevelCommands.js create mode 100644 docu/group__LD2410Async__InactivityHandling.html create mode 100644 docu/group__LD2410Async__InactivityHandling.js create mode 100644 docu/group__LD2410Async__MainMethods.html create mode 100644 docu/group__LD2410Async__MainMethods.js create mode 100644 docu/group__LD2410Async__NativeCommands.html create mode 100644 docu/group__LD2410Async__NativeCommands.js create mode 100644 docu/group__LD2410Async__PresenceDetection.html create mode 100644 docu/group__LD2410Async__PresenceDetection.js create mode 100644 docu/group__LD2410Async__PublicData.html create mode 100644 docu/group__LD2410Async__PublicData.js create mode 100644 docu/group__LD2410Async__StaticData.html create mode 100644 docu/group__LD2410Async__StaticData.js create mode 100644 docu/groups_8dox.html create mode 100644 docu/search/files_4.js create mode 100644 docu/search/groups_a.js create mode 100644 docu/search/groups_b.js create mode 100644 docu/search/groups_c.js diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html index 28df4ca..25d5024 100644 --- a/docu/LD2410Async_8cpp_source.html +++ b/docu/LD2410Async_8cpp_source.html @@ -305,14 +305,14 @@
    199* Generic Callbacks
    200******************************************************************************************/
    -
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    +
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    202 detectionDataCallback = callback;
    203 detectionDataCallbackUserData = userData;
    204}
    205
    -
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    +
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    207
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    209 configUpdateReceivedReceivedCallback = callback;
    @@ -320,7 +320,7 @@
    211
    -
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    +
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    213 configChangedCallbackUserData = userData;
    214 configChangedCallback = callback;
    215}
    @@ -359,7 +359,7 @@
    248 DEBUG_PRINT("FAIL for command: ");
    249 DEBUG_PRINTLN(byte2hex(command));
    -
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    +
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    251 return false;
    252 };
    253
    @@ -367,14 +367,14 @@
    255 switch (command)
    256 {
    257 case LD2410Defs::configEnableCommand: // entered config mode
    -
    258 configModeEnabled = true;
    -
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    -
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    258 configModeEnabled = true;
    +
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    +
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    262 DEBUG_PRINTLN("ACK for config mode enable received");
    263 break;
    264 case LD2410Defs::configDisableCommand: // exited config mode
    -
    265 configModeEnabled = false;
    +
    265 configModeEnabled = false;
    267 DEBUG_PRINTLN("ACK for config mode disable received");
    268 break;
    @@ -383,12 +383,12 @@
    271 executeConfigChangedCallback();
    272 break;
    - +
    276 DEBUG_PRINTLN("ACK for engineeringModeEnableComand received");
    277 break;
    - +
    281 DEBUG_PRINTLN("ACK for engineeringModeDisableComand received");
    282 break;
    @@ -402,8 +402,8 @@
    290 executeConfigChangedCallback();
    291 break;
    - -
    294 configModeEnabled = false;
    + +
    294 configModeEnabled = false;
    296 DEBUG_PRINTLN("ACK for rebootCommand received");
    297 break;
    @@ -426,7 +426,7 @@
    314 executeConfigChangedCallback();
    315 break;
    -
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    +
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    319 DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received");
    320 executeConfigUpdateReceivedCallback();
    @@ -438,19 +438,19 @@
    326 break;
    328 for (int i = 0; i < 6; i++) {
    -
    329 mac[i] = receiveBuffer[i + 4];
    +
    329 mac[i] = receiveBuffer[i + 4];
    330 };
    - -
    332 + ":" + byte2hex(mac[1])
    -
    333 + ":" + byte2hex(mac[2])
    -
    334 + ":" + byte2hex(mac[3])
    -
    335 + ":" + byte2hex(mac[4])
    -
    336 + ":" + byte2hex(mac[5]);
    + +
    332 + ":" + byte2hex(mac[1])
    +
    333 + ":" + byte2hex(mac[2])
    +
    334 + ":" + byte2hex(mac[3])
    +
    335 + ":" + byte2hex(mac[4])
    +
    336 + ":" + byte2hex(mac[5]);
    338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
    339 break;
    -
    341 firmware = byte2hex(receiveBuffer[7], false)
    +
    341 firmware = byte2hex(receiveBuffer[7], false)
    342 + "." + byte2hex(receiveBuffer[6])
    343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
    @@ -458,9 +458,9 @@
    346 break;
    347
    -
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    -
    350 configData.lightThreshold = receiveBuffer[5];
    -
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    +
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    +
    350 configData.lightThreshold = receiveBuffer[5];
    +
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
    354 executeConfigUpdateReceivedCallback();
    @@ -470,19 +470,19 @@
    358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
    359 break;
    -
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    +
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
    364 break;
    365 case LD2410Defs::requestParamsCommand: // Query parameters
    -
    366 configData.numberOfGates = receiveBuffer[5];
    -
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    -
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    -
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    -
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    -
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    -
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    -
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    +
    366 configData.numberOfGates = receiveBuffer[5];
    +
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    +
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    +
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    +
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    +
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    +
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    +
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
    376 executeConfigUpdateReceivedCallback();
    @@ -500,7 +500,7 @@
    388 };
    389
    390 if (command != 0) {
    -
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    +
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    392 }
    393
    394
    @@ -516,75 +516,75 @@
    404
    405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
    406 {
    -
    407 configModeEnabled = false;
    +
    407 configModeEnabled = false;
    408
    -
    409 detectionData.timestamp = millis();
    +
    409 detectionData.timestamp = millis();
    410 //Basic data
    -
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    -
    412 switch (detectionData.targetState) {
    - - - - +
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    +
    412 switch (detectionData.targetState) {
    + + + +
    417 break;
    418
    - - - - + + + +
    423 break;
    424
    - - - - + + + +
    429 break;
    430 default:
    - - - + + +
    434 break;
    435 }
    -
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    -
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    -
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    -
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    -
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    -
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    +
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    +
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    +
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    +
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    +
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    442
    - +
    444
    - +
    446 { // Engineering mode data
    -
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    - +
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    +
    449
    450
    451 int index = 13;
    -
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    -
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    -
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    -
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    +
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    +
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    +
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    +
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    456
    - - + +
    459 if (index < payloadSize) {
    -
    460 detectionData.lightLevel = receiveBuffer[index++];
    +
    460 detectionData.lightLevel = receiveBuffer[index++];
    461 if (index < payloadSize) {
    -
    462 detectionData.outPinStatus = receiveBuffer[index++];
    +
    462 detectionData.outPinStatus = receiveBuffer[index++];
    463 }
    464 }
    465 }
    466 else
    467 { // Clear engineering mode data
    - - - - + + + +
    472 }
    473
    474 if (detectionDataCallback != nullptr) {
    -
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    +
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    476 };
    477 DEBUG_PRINTLN_DATA("DATA received");
    478 return true;
    @@ -616,7 +616,7 @@
    504/**********************************************************************************
    505* Send async command methods
    506***********************************************************************************/
    -
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    +
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
    509
    @@ -625,7 +625,7 @@
    513
    514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
    515 vTaskSuspendAll();
    -
    516 AsyncCommandCallback cb = asyncCommandCallback;
    +
    516 AsyncCommandCallback cb = asyncCommandCallback;
    517 byte userData = asyncCommandCallbackUserData;
    518 asyncCommandCallback = nullptr;
    519 asyncCommandCallbackUserData = 0;
    @@ -644,8 +644,8 @@
    532
    533
    - -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    + +
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    536}
    537
    @@ -657,7 +657,7 @@
    543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
    544 DEBUG_PRINT(asyncCommandStartMs);
    545 DEBUG_PRINTLN(". Execute callback with timeout result.");
    -
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    +
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    547 }
    548 }
    549}
    @@ -706,7 +706,7 @@
    592***********************************************************************************/
    593
    - +
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    596}
    @@ -733,7 +733,7 @@
    617/**********************************************************************************
    618* Async command sequence methods
    619***********************************************************************************/
    -
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    621 if (executeCommandSequenceActive) {
    622
    @@ -741,7 +741,7 @@
    625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
    626
    627 vTaskSuspendAll();
    -
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    +
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    629 byte userData = executeCommandSequenceUserData;
    630 executeCommandSequenceCallback = nullptr;
    631 executeCommandSequenceUserData = 0;
    @@ -756,11 +756,11 @@
    640
    641
    642// Callback after disabling config mode at the end of sequence
    -
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    644
    -
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    +
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    646
    - +
    649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
    650 DEBUG_PRINTLN(result);
    @@ -769,9 +769,9 @@
    653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
    654}
    655
    -
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    +
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    657 if (!executeCommandSequenceInitialConfigModeState) {
    -
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    +
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    659 }
    660 else {
    661 executeCommandSequenceAsyncExecuteCallback(result);
    @@ -780,8 +780,8 @@
    664
    665
    666// Called when a single command in the sequence completes
    -
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    669 // Abort sequence if a command fails
    671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
    @@ -804,7 +804,7 @@
    688 else {
    689 // Sequence finished successfully
    690
    -
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    692 }
    693}
    694
    @@ -821,19 +821,19 @@
    705 executeCommandSequenceActive = true;
    706 executeCommandSequenceCallback = callback;
    707 executeCommandSequenceUserData = userData;
    -
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    +
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    709 executeCommandSequenceStartMs = millis();
    710
    711 if (commandSequenceBufferCount == 0) {
    712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
    713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
    -
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    715 });
    716 return true;
    717
    718 }
    719
    -
    720 if (!configModeEnabled) {
    +
    720 if (!configModeEnabled) {
    721 // Need to enable config mode first
    722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
    723 executeCommandSequenceIndex = -1;
    @@ -900,8 +900,8 @@
    784}
    785
    -
    786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    787 if (asyncIsBusy()) return false;
    +
    786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    787 if (asyncIsBusy()) return false;
    788 return enableConfigModeInternalAsync(callback, userData);
    789}
    @@ -913,8 +913,8 @@
    795}
    796
    -
    797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    798 if (asyncIsBusy()) return false;
    +
    797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    798 if (asyncIsBusy()) return false;
    799 return disableConfigModeInternalAsync(callback, userData);
    800}
    @@ -926,13 +926,13 @@
    806// The code takes care of that. Enables/disable config mode if necessary,
    807// but also keeps config mode active if it was already active before the command
    -
    808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    +
    808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    809 unsigned short noOneTimeout,
    810 AsyncCommandCallback callback, byte userData)
    811{
    813 DEBUG_PRINTLN("Set Max Gate");
    -
    814 if (asyncIsBusy()) return false;
    +
    814 if (asyncIsBusy()) return false;
    815
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    @@ -944,41 +944,41 @@
    822
    823
    -
    824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    +
    824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    826 DEBUG_PRINTLN("Request Gate Parameters");
    -
    827 if (asyncIsBusy()) return false;
    +
    827 if (asyncIsBusy()) return false;
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    829}
    830
    -
    831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    -
    834 if (asyncIsBusy()) return false;
    +
    834 if (asyncIsBusy()) return false;
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    836}
    837
    -
    838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    -
    841 if (asyncIsBusy()) return false;
    +
    841 if (asyncIsBusy()) return false;
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    843}
    844
    -
    845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    +
    845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    846 const byte stationaryThresholds[9],
    847 AsyncCommandCallback callback, byte userData)
    848{
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    851
    -
    852 if (asyncIsBusy()) return false;
    +
    852 if (asyncIsBusy()) return false;
    853
    854 if (!resetCommandSequence()) return false;
    855
    @@ -995,14 +995,14 @@
    865
    866
    -
    867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    +
    867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    868 byte stationaryThreshold,
    869 AsyncCommandCallback callback, byte userData)
    870{
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    873
    -
    874 if (asyncIsBusy()) return false;
    +
    874 if (asyncIsBusy()) return false;
    875
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    @@ -1014,11 +1014,11 @@
    882
    883
    -
    884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    +
    884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    886 DEBUG_PRINTLN("Request Firmware");
    887
    -
    888 if (asyncIsBusy()) return false;
    +
    888 if (asyncIsBusy()) return false;
    889
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    891}
    @@ -1026,13 +1026,13 @@
    892
    893
    -
    894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    +
    894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    895 AsyncCommandCallback callback, byte userData)
    896{
    898 DEBUG_PRINTLN("Set Baud Rate");
    899
    -
    900 if (asyncIsBusy()) return false;
    +
    900 if (asyncIsBusy()) return false;
    901
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    903 return false;
    @@ -1047,21 +1047,21 @@
    911
    912
    -
    913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    +
    913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    914
    -
    915 if (asyncIsBusy()) return false;
    +
    915 if (asyncIsBusy()) return false;
    916
    -
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    918}
    919
    920
    -
    921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    923 DEBUG_PRINTLN("Restore Factory Settings");
    924
    -
    925 if (asyncIsBusy()) return false;
    +
    925 if (asyncIsBusy()) return false;
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    927}
    @@ -1069,41 +1069,41 @@
    929
    930
    -
    931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    +
    931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    933 DEBUG_PRINTLN("Enable Bluetooth");
    -
    934 if (asyncIsBusy()) return false;
    +
    934 if (asyncIsBusy()) return false;
    935
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    937}
    938
    -
    939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    +
    939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    941 DEBUG_PRINTLN("Disable Bluetooth");
    -
    942 if (asyncIsBusy()) return false;
    +
    942 if (asyncIsBusy()) return false;
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    944}
    945
    946
    -
    947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    +
    947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    949 DEBUG_PRINTLN("Request Mac Address");
    -
    950 if (asyncIsBusy()) return false;
    +
    950 if (asyncIsBusy()) return false;
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    952}
    953
    - +
    955 AsyncCommandCallback callback, byte userData)
    956{
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    -
    959 if (asyncIsBusy()) return false;
    +
    959 if (asyncIsBusy()) return false;
    960
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    @@ -1115,38 +1115,38 @@
    967
    968
    -
    969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    +
    969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    970
    -
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    972}
    973
    974
    -
    975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    +
    975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    -
    978 if (asyncIsBusy()) return false;
    +
    978 if (asyncIsBusy()) return false;
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    980}
    981
    -
    982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    +
    982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    -
    985 if (asyncIsBusy()) return false;
    +
    985 if (asyncIsBusy()) return false;
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    987};
    988
    - +
    990 AsyncCommandCallback callback, byte userData)
    991{
    993 DEBUG_PRINTLN("Set Distance Resolution");
    -
    994 if (asyncIsBusy()) return false;
    +
    994 if (asyncIsBusy()) return false;
    995
    996 byte cmd[6];
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    @@ -1156,31 +1156,31 @@
    1001
    -
    1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    +
    1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    -
    1005 if (asyncIsBusy()) return false;
    +
    1005 if (asyncIsBusy()) return false;
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    1007};
    1008
    -
    1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    +
    1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    -
    1012 if (asyncIsBusy()) return false;
    +
    1012 if (asyncIsBusy()) return false;
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    1014}
    1015
    - -
    1017 LD2410Types::OutputControl outputControl,
    + +
    1017 LD2410Types::OutputControl outputControl,
    1018 AsyncCommandCallback callback, byte userData)
    1019{
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    -
    1022 if (asyncIsBusy()) return false;
    +
    1022 if (asyncIsBusy()) return false;
    1023
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    @@ -1192,11 +1192,11 @@
    1030
    1031
    -
    1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    1035
    -
    1036 if (asyncIsBusy()) return false;
    +
    1036 if (asyncIsBusy()) return false;
    1037
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    1039}
    @@ -1204,22 +1204,22 @@
    1040
    1041
    -
    1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    +
    1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    1044 DEBUG_PRINTLN("Begin auto config");
    1045
    -
    1046 if (asyncIsBusy()) return false;
    +
    1046 if (asyncIsBusy()) return false;
    1047
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    1049};
    1050
    -
    1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    +
    1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    1054
    -
    1055 if (asyncIsBusy()) return false;
    +
    1055 if (asyncIsBusy()) return false;
    1056
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    1058}
    @@ -1233,11 +1233,11 @@
    1065
    1066
    -
    1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    +
    1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    1069 DEBUG_PRINTLN("Request all static data");
    1070
    -
    1071 if (asyncIsBusy()) return false;
    +
    1071 if (asyncIsBusy()) return false;
    1072
    1073
    1074 if (!resetCommandSequence()) return false;
    @@ -1250,11 +1250,11 @@
    1081
    -
    1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    1084 DEBUG_PRINTLN("Request all config data");
    1085
    -
    1086 if (asyncIsBusy()) return false;
    +
    1086 if (asyncIsBusy()) return false;
    1087
    1088 if (!resetCommandSequence()) return false;
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    @@ -1272,8 +1272,8 @@
    1100// It uses a first command sequences to get the current sensor config, then checks what
    1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
    1102
    -
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    -
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    +
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
    1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
    1107 configureAllConfigSettingsAsyncConfigActive = false;
    @@ -1288,8 +1288,8 @@
    1116
    1117}
    1118
    -
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
    1123 DEBUG_PRINTLN(result);
    @@ -1301,15 +1301,15 @@
    1129 }
    1130}
    1131
    -
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    +
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    1133
    1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
    1136
    -
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    +
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
    -
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    +
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    1141 }
    1142 }
    1143 else {
    @@ -1318,8 +1318,8 @@
    1146}
    1147
    1148
    -
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1150 if (AsyncCommandResult::SUCCESS != result) {
    +
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1150 if (AsyncCommandResult::SUCCESS != result) {
    1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
    1153 };
    @@ -1330,7 +1330,7 @@
    1158
    1159bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() {
    1160 //Get a clone of the current config, so it does not get changed while we are working
    - +
    1162
    1163 if (!resetCommandSequence()) {
    @@ -1454,8 +1454,8 @@
    1282
    1283};
    1284
    -
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
    1289 DEBUG_PRINTLN(result);
    @@ -1469,7 +1469,7 @@
    1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
    1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
    -
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1301 }
    1302}
    1303
    @@ -1492,8 +1492,8 @@
    1320 return false;
    1321}
    1322
    -
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1324 if (result != AsyncCommandResult::SUCCESS) {
    +
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1324 if (result != AsyncCommandResult::SUCCESS) {
    1325
    1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
    @@ -1518,20 +1518,20 @@
    1346 if (!ret) {
    1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
    -
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1350 }
    1351
    1352
    1353}
    1354
    -
    1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    +
    1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    1356{
    1357
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    1360
    -
    1361 if (asyncIsBusy()) return false;
    +
    1361 if (asyncIsBusy()) return false;
    1362
    1363
    1364 if (!configToWrite.isValid()) {
    @@ -1545,7 +1545,7 @@
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    -
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    +
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    1376
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    @@ -1570,10 +1570,10 @@
    1396//The reboot command is special, since it needs to be sent in config mode,
    1397//but doesnt have to disable config mode, since the sensor goes into normal
    1398//detection mode after the reboot anyway.
    -
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    1401 sender->configModeEnabled = false;
    -
    1402 sender->engineeringModeEnabled = false;
    +
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    1401 sender->configModeEnabled = false;
    +
    1402 sender->engineeringModeEnabled = false;
    1403
    1405 DEBUG_PRINTLN("Reboot initiated");
    @@ -1587,8 +1587,8 @@
    1413
    1414}
    1415
    -
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1418 //Got ack of enable config mode command
    1420 DEBUG_PRINTLN("Config mode enabled before reboot");
    @@ -1605,13 +1605,13 @@
    1431
    1432
    -
    1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    +
    1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    1434
    1435
    1437 DEBUG_PRINTLN("Reboot");
    1438
    -
    1439 if (asyncIsBusy()) return false;
    +
    1439 if (asyncIsBusy()) return false;
    1440
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    1442}
    @@ -1621,26 +1621,26 @@
    1445* Data access
    1446***********************************************************************************/
    1450
    1454
    1455/**********************************************************************************
    1456* Inactivity handling
    1457***********************************************************************************/
    -
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1459 sender->configModeEnabled = false;
    -
    1460 sender->engineeringModeEnabled = false;
    +
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1459 sender->configModeEnabled = false;
    +
    1460 sender->engineeringModeEnabled = false;
    1461
    1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1463 if (result == AsyncCommandResult::SUCCESS) {
    +
    1463 if (result == AsyncCommandResult::SUCCESS) {
    1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
    1466 }
    @@ -1654,11 +1654,11 @@
    1474
    1475}
    1476
    -
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    1478
    1479
    1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1481 if (result == AsyncCommandResult::SUCCESS) {
    +
    1481 if (result == AsyncCommandResult::SUCCESS) {
    1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
    1484 }
    @@ -1681,10 +1681,10 @@
    1501 if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) {
    1502 if (!handleInactivityExitConfigModeDone) {
    1503 handleInactivityExitConfigModeDone = true;
    -
    1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    +
    1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    1505 }
    1506 else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) {
    -
    1507 rebootAsync(handleInactivityRebootCallback, 0);
    +
    1507 rebootAsync(handleInactivityRebootCallback, 0);
    1508 lastActivityMs = currentTime;
    1509 }
    1510 }
    @@ -1699,7 +1699,7 @@
    1519}
    1520
    - +
    1522 inactivityHandlingEnabled = enable;
    1523}
    @@ -1757,7 +1757,7 @@
    1575***********************************************************************************/
    1576
    - +
    1578 if (taskHandle == NULL) {
    1580 DEBUG_PRINTLN("Starting data processing task");
    @@ -1794,7 +1794,7 @@
    1611
    - +
    1613 if (taskHandle != NULL) {
    1615 DEBUG_PRINTLN("Stopping data processing task");
    @@ -1830,7 +1830,7 @@
    1644* Constructor
    1645***********************************************************************************/
    - +
    1647{
    1648 sensor = &serial;
    1649}
    @@ -1848,61 +1848,68 @@ -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    String firmware
    Firmware version string of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool end()
    Stops the background task started by begin().
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    String firmware
    Firmware version string of the radar.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    @@ -1956,13 +1963,6 @@
    constexpr byte engineeringModeEnableComand
    Definition LD2410Defs.h:58
    constexpr byte requestDistanceResolutionCommand
    Definition LD2410Defs.h:30
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    -
    @ STATIONARY_TARGET
    A stationary target has been detected.
    -
    @ MOVING_TARGET
    A moving target has been detected.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    Stores the sensor’s configuration parameters.
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index 2837ab9..114a09c 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -199,11 +199,11 @@
    96 * @ingroup LD2410Async_Types
    97 */
    -
    98 enum class AsyncCommandResult : byte {
    -
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    101 TIMEOUT, ///< No ACK received within the expected time window.
    -
    102 CANCELED ///< Command was canceled by the user before completion.
    +
    98 enum class AsyncCommandResult : byte {
    +
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    101 TIMEOUT, ///< No ACK received within the expected time window.
    +
    102 CANCELED ///< Command was canceled by the user before completion.
    103 };
    104
    @@ -220,7 +220,7 @@
    115 * @ingroup LD2410Async_Configuration
    116 * @ingroup LD2410Async_Callbacks
    117 */
    -
    118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    +
    118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    119
    120 /**
    121 * @brief Generic callback signature used for simple notifications.
    @@ -232,7 +232,7 @@
    127 * @ingroup LD2410Async_Configuration
    128 * @ingroup LD2410Async_Callbacks
    129 */
    -
    130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    +
    130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    131
    132 /**
    133 * @brief Callback type for receiving detection data events.
    @@ -249,7 +249,7 @@
    144 * @ingroup LD2410Async_Callbacks
    145 * @ingroup LD2410Async_PresenceDetection
    146 */
    -
    147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    +
    147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    148
    149
    150
    @@ -271,7 +271,7 @@
    166 * @ingroup LD2410Async_PresenceDetection
    167 *
    168 */
    - +
    170
    171 /**
    172 * @brief Current configuration parameters of the radar.
    @@ -286,7 +286,7 @@
    181 * @ingroup LD2410Async_PublicData
    182 * @ingroup LD2410Async_Configuration
    183 */
    - +
    185
    186 /**
    187 * @brief Protocol version reported by the radar.
    @@ -297,7 +297,7 @@
    192 * @ingroup LD2410Async_PublicData
    193 * @ingroup LD2410Async_StaticData
    194 */
    -
    195 unsigned long protocolVersion = 0;
    +
    195 unsigned long protocolVersion = 0;
    196
    197 /**
    198 * @brief Buffer size reported by the radar protocol.
    @@ -308,7 +308,7 @@
    203 * @ingroup LD2410Async_PublicData
    204 * @ingroup LD2410Async_StaticData
    205 */
    -
    206 unsigned long bufferSize = 0;
    +
    206 unsigned long bufferSize = 0;
    207
    208 /**
    209 * @brief True if the sensor is currently in config mode.
    @@ -319,7 +319,7 @@
    214 *
    215 * @ingroup LD2410Async_PublicData
    216 */
    -
    217 bool configModeEnabled = false;
    +
    217 bool configModeEnabled = false;
    218
    219
    220 /**
    @@ -332,7 +332,7 @@
    227 *
    228 * @ingroup LD2410Async_PublicData
    229 */
    - +
    231
    232 /**
    233 * @brief Firmware version string of the radar.
    @@ -343,7 +343,7 @@
    238 * @ingroup LD2410Async_PublicData
    239 * @ingroup LD2410Async_StaticData
    240 */
    -
    241 String firmware = "";
    +
    241 String firmware = "";
    242
    243 /**
    244 * @brief MAC address of the radar’s Bluetooth module (if available).
    @@ -353,7 +353,7 @@
    248 * @ingroup LD2410Async_PublicData
    249 * @ingroup LD2410Async_StaticData
    250 */
    -
    251 byte mac[6];
    +
    251 byte mac[6];
    252
    253 /**
    254 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    @@ -363,7 +363,7 @@
    258 * @ingroup LD2410Async_PublicData
    259 * @ingroup LD2410Async_StaticData
    260 */
    -
    261 String macString = "";
    +
    261 String macString = "";
    262
    263
    264 /**
    @@ -374,7 +374,7 @@
    269 * @ingroup LD2410Async_Configuration
    270 * @ingroup LD2410Async_PublicData
    271 */
    - +
    273
    274
    275
    @@ -400,7 +400,7 @@
    295 *
    296 * @ingroup LD2410Async_MainMethods
    297 */
    -
    298 LD2410Async(Stream& serial);
    +
    298 LD2410Async(Stream& serial);
    299
    300 /**********************************************************************************
    301 * begin, end
    @@ -416,7 +416,7 @@
    311 *
    312 * @ingroup LD2410Async_MainMethods
    313 */
    -
    314 bool begin();
    +
    314 bool begin();
    315
    316 /**
    317 * @brief Stops the background task started by begin().
    @@ -428,7 +428,7 @@
    323 *
    324 * @ingroup LD2410Async_MainMethods
    325 */
    -
    326 bool end();
    +
    326 bool end();
    327
    328
    329
    @@ -456,7 +456,7 @@
    351 *
    352 * @ingroup LD2410Async_InactivityHandling
    353 */
    -
    354 void setInactivityHandling(bool enable);
    +
    354 void setInactivityHandling(bool enable);
    355
    356 /**
    357 * @brief Convenience method: enables inactivity handling.
    @@ -465,7 +465,7 @@
    360 *
    361 * @ingroup LD2410Async_InactivityHandling
    362 */
    - +
    364
    365 /**
    366 * @brief Convenience method: disables inactivity handling.
    @@ -474,7 +474,7 @@
    369 *
    370 * @ingroup LD2410Async_InactivityHandling
    371 */
    - +
    373
    374 /**
    375 * @brief Returns whether inactivity handling is currently enabled.
    @@ -483,7 +483,7 @@
    378 *
    379 * @ingroup LD2410Async_InactivityHandling
    380 */
    -
    381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    +
    381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    382
    383 /**
    384 * @brief Sets the timeout period for inactivity handling.
    @@ -498,7 +498,7 @@
    393 *
    394 * @ingroup LD2410Async_InactivityHandling
    395 */
    -
    396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    +
    396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    397
    398 /**
    399 * @brief Returns the current inactivity timeout period.
    @@ -507,7 +507,7 @@
    402 *
    403 * @ingroup LD2410Async_InactivityHandling
    404 */
    -
    405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    +
    405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    406
    407
    408
    @@ -529,7 +529,7 @@
    424 * @ingroup LD2410Async_Callbacks
    425 * @ingroup LD2410Async_PresenceDetection
    426 */
    -
    427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    +
    427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    428
    429 /**
    430 * @brief Registers a callback for configuration changes.
    @@ -544,7 +544,7 @@
    439 * @ingroup LD2410Async_Callbacks
    440 * @ingroup LD2410Async_Configuration
    441 */
    -
    442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    +
    442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    443
    444 /**
    445 * @brief Registers a callback for configuration data updates.
    @@ -559,7 +559,7 @@
    454 * @ingroup LD2410Async_Callbacks
    455 * @ingroup LD2410Async_Configuration
    456 */
    -
    457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    +
    457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    458
    459
    460
    @@ -602,7 +602,7 @@
    497 * @ingroup LD2410Async_PresenceDetection
    498 * @ingroup LD2410Async_PublicData
    499 */
    - +
    501
    502
    503 /**
    @@ -638,7 +638,7 @@
    533 * @ingroup LD2410Async_PresenceDetection
    534 * @ingroup LD2410Async_PublicData
    535 */
    - +
    537
    538
    539 /**
    @@ -685,7 +685,7 @@
    580 * @ingroup LD2410Async_Configuration
    581 * @ingroup LD2410Async_PublicData
    582 */
    - +
    584
    585
    586 /**
    @@ -721,7 +721,7 @@
    616 * @ingroup LD2410Async_Configuration
    617 * @ingroup LD2410Async_PublicData
    618 */
    - +
    620
    621
    622 /**********************************************************************************
    @@ -735,7 +735,7 @@
    630 *
    631 * @ingroup LD2410Async_AsyncCommands
    632 */
    -
    633 bool asyncIsBusy();
    +
    633 bool asyncIsBusy();
    634
    635 /**
    636 * @brief Cancels any pending asynchronous command or sequence.
    @@ -747,7 +747,7 @@
    642 *
    643 * @ingroup LD2410Async_AsyncCommands
    644 */
    -
    645 void asyncCancel();
    +
    645 void asyncCancel();
    646
    647 /**
    648 * @brief Sets the timeout for async command callbacks.
    @@ -759,7 +759,7 @@
    654 *
    655 * @ingroup LD2410Async_AsyncCommands
    656 */
    -
    657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    +
    657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    658
    659 /**
    660 * @brief Returns the current async command timeout.
    @@ -768,7 +768,7 @@
    663 *
    664 * @ingroup LD2410Async_AsyncCommands
    665 */
    -
    666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    +
    666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    667
    668
    669 /**********************************************************************************
    @@ -797,7 +797,7 @@
    692 * @ingroup LD2410Async_AsyncCommands
    693 * @ingroup LD2410Async_Configuration
    694 */
    -
    695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    696
    697 /**
    698 * @brief Disables config mode on the radar.
    @@ -817,7 +817,7 @@
    712 * @ingroup LD2410Async_AsyncCommands
    713 * @ingroup LD2410Async_Configuration
    714 */
    -
    715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    716
    717 /**
    718 * @brief Detects if config mode is enabled
    @@ -827,8 +827,8 @@
    722 * @ingroup LD2410Async_Configuration
    723 */
    -
    724 bool isConfigModeEnabled() const {
    -
    725 return configModeEnabled;
    +
    724 bool isConfigModeEnabled() const {
    +
    725 return configModeEnabled;
    726 };
    727
    @@ -854,7 +854,7 @@
    747 * @ingroup LD2410Async_AsyncCommands
    748 * @ingroup LD2410Async_PresenceDetection
    749 */
    -
    750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    751
    752 /**
    753 * @brief Disables engineering mode.
    @@ -871,7 +871,7 @@
    764 * @ingroup LD2410Async_PresenceDetection
    765 * @ingroup LD2410Async_AsyncCommands
    766 */
    -
    767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    768
    769 /**
    770 * @brief Detects if engineering mode is enabled
    @@ -881,8 +881,8 @@
    774 * @ingroup LD2410Async_PresenceDetection
    775 */
    - - + +
    778 };
    779
    @@ -907,7 +907,7 @@
    798 * @ingroup LD2410Async_Configuration
    799 * @ingroup LD2410Async_NativeCommands
    800 */
    -
    801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    802
    803
    804
    @@ -935,7 +935,7 @@
    826 * @ingroup LD2410Async_Configuration
    827 * @ingroup LD2410Async_NativeCommands
    828 */
    -
    829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    +
    829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    830
    831
    832 /**
    @@ -959,7 +959,7 @@
    850 * @ingroup LD2410Async_NativeCommands
    851 */
    852
    -
    853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    +
    853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    854
    855
    856 /**
    @@ -984,7 +984,7 @@
    875 * @ingroup LD2410Async_Configuration
    876 * @ingroup LD2410Async_NativeCommands
    877 */
    -
    878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    +
    878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    879
    880 /**
    881 * @brief Requests the firmware version of the sensor.
    @@ -1002,7 +1002,7 @@
    893 * @ingroup LD2410Async_StaticData
    894 * @ingroup LD2410Async_NativeCommands
    895 */
    -
    896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    897
    898 /**
    899 * @brief Configures the UART baud rate of the sensor.
    @@ -1026,7 +1026,7 @@
    917 * @ingroup LD2410Async_Configuration
    918 * @ingroup LD2410Async_NativeCommands
    919 */
    -
    920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    +
    920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    921
    922 /**
    923 * @brief Configures the baudrate of the serial port of the sensor.
    @@ -1048,7 +1048,7 @@
    939 * @ingroup LD2410Async_Configuration
    940 * @ingroup LD2410Async_NativeCommands
    941 */
    -
    942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    +
    942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    943
    944
    945 /**
    @@ -1068,7 +1068,7 @@
    959 * @ingroup LD2410Async_Configuration
    960 * @ingroup LD2410Async_NativeCommands
    961 */
    -
    962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    963
    964 /**
    965 * @brief Reboots the sensor.
    @@ -1086,7 +1086,7 @@
    977 * @ingroup LD2410Async_AsyncCommands
    978 * @ingroup LD2410Async_NativeCommands
    979 */
    -
    980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    981
    982 /**
    983 * @brief Enables bluetooth
    @@ -1101,7 +1101,7 @@
    992 * @ingroup LD2410Async_Bluetooth
    993 * @ingroup LD2410Async_NativeCommands
    994 */
    -
    995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    996
    997 /**
    998 * @brief Disables bluetooth
    @@ -1116,7 +1116,7 @@
    1007 * @ingroup LD2410Async_Bluetooth
    1008 * @ingroup LD2410Async_NativeCommands
    1009 */
    -
    1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    1011
    1012 /**
    1013 * @brief Requests the bluetooth mac address
    @@ -1133,7 +1133,7 @@
    1024 * @ingroup LD2410Async_StaticData
    1025 * @ingroup LD2410Async_NativeCommands
    1026 */
    -
    1027 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1027 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    1028
    1029 /**
    1030 * @brief Sets the password for bluetooth access to the sensor.
    @@ -1149,7 +1149,7 @@
    1040 * @ingroup LD2410Async_Bluetooth
    1041 * @ingroup LD2410Async_NativeCommands
    1042 */
    -
    1043 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    +
    1043 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    1044
    1045 /**
    1046 * @brief Sets the password for bluetooth access to the sensor.
    @@ -1165,7 +1165,7 @@
    1056 * @ingroup LD2410Async_Bluetooth
    1057 * @ingroup LD2410Async_NativeCommands
    1058 */
    -
    1059 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    +
    1059 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    1060
    1061 /**
    1062 * @brief Resets the password for bluetooth access to the default value (HiLink)
    @@ -1179,7 +1179,7 @@
    1070 * @ingroup LD2410Async_Bluetooth
    1071 * @ingroup LD2410Async_NativeCommands
    1072 */
    -
    1073 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1073 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    1074
    1075 /**
    1076 * @brief Configures the distance resolution of the radar.
    @@ -1207,7 +1207,7 @@
    1098 * @ingroup LD2410Async_Configuration
    1099 * @ingroup LD2410Async_NativeCommands
    1100 */
    -
    1101 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    +
    1101 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    1102
    1103 /**
    1104 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    @@ -1228,7 +1228,7 @@
    1119 * @ingroup LD2410Async_Configuration
    1120 * @ingroup LD2410Async_NativeCommands
    1121 */
    -
    1122 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1122 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    1123
    1124 /**
    1125 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    @@ -1249,7 +1249,7 @@
    1140 * @ingroup LD2410Async_Configuration
    1141 * @ingroup LD2410Async_NativeCommands
    1142 */
    -
    1143 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1143 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    1144
    1145 /**
    1146 * @brief Requests the current distance resolution setting from the sensor.
    @@ -1268,7 +1268,7 @@
    1159 * @ingroup LD2410Async_Configuration
    1160 * @ingroup LD2410Async_NativeCommands
    1161 */
    -
    1162 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1162 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    1163
    1164 /**
    1165 * @brief Configures the auxiliary control parameters (light and output pin).
    @@ -1295,7 +1295,7 @@
    1186 * @ingroup LD2410Async_Configuration
    1187 * @ingroup LD2410Async_NativeCommands
    1188 */
    -
    1189 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    +
    1189 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    1190
    1191 /**
    1192 * @brief Requests the current auxiliary control settings.
    @@ -1316,7 +1316,7 @@
    1207 * @ingroup LD2410Async_Configuration
    1208 * @ingroup LD2410Async_NativeCommands
    1209 */
    -
    1210 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1210 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    1211
    1212
    1213 /**
    @@ -1363,7 +1363,7 @@
    1254 * @ingroup LD2410Async_Configuration
    1255 * @ingroup LD2410Async_NativeCommands
    1256 */
    -
    1257 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1257 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    1258
    1259
    1260 /**
    @@ -1420,7 +1420,7 @@
    1311 * @ingroup LD2410Async_Configuration
    1312 * @ingroup LD2410Async_NativeCommands
    1313 */
    -
    1314 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1314 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    1315
    1316
    1317
    @@ -1478,7 +1478,7 @@
    1369 * @ingroup LD2410Async_Configuration
    1370 * @ingroup LD2410Async_HighLevelCommands
    1371 */
    -
    1372 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1372 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    1373
    1374
    1375 /**
    @@ -1528,7 +1528,7 @@
    1419 * @ingroup LD2410Async_StaticData
    1420 * @ingroup LD2410Async_HighLevelCommands
    1421 */
    -
    1422 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1422 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    1423
    1424
    1425
    @@ -1587,7 +1587,7 @@
    1478 * @ingroup LD2410Async_StaticData
    1479 * @ingroup LD2410Async_HighLevelCommands
    1480 */
    -
    1481 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    +
    1481 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    1482
    1483
    1484
    @@ -1664,7 +1664,7 @@
    1555 unsigned long executeCommandSequenceStartMs = 0;
    1556
    1557 /// Callback for current async sequence
    -
    1558 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    +
    1558 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    1559
    1560 /// User-provided data passed to async sequence callback
    1561 byte executeCommandSequenceUserData = 0;
    @@ -1683,17 +1683,17 @@
    1574 bool executeCommandSequenceInitialConfigModeState = false;
    1575
    1576 /// Finalize an async sequence and invoke its callback
    -
    1577 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1577 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    1578
    1579 /// Final step of an async sequence: restore config mode if needed and call callback
    -
    1580 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1580 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    1581
    1582 /// Internal callbacks for sequence steps
    -
    1583 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1584 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1583 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1584 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1585
    1586 /// Start executing an async sequence
    -
    1587 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1587 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    1588
    1589 /// Add one command to the sequence buffer
    1590 bool addCommandToSequence(const byte* command);
    @@ -1718,10 +1718,10 @@
    1609 void handleInactivity();
    1610
    1611 /// Callback for reboot triggered by inactivity handler
    -
    1612 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1612 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1613
    1614 /// Callback for disabling config mode during inactivity recovery
    -
    1615 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1615 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1616
    1617
    1618 // ============================================================================
    @@ -1729,10 +1729,10 @@
    1620 // ============================================================================
    1621
    1622 /// Step 1: Enter config mode before reboot
    -
    1623 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1623 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1624
    1625 /// Step 2: Issue reboot command
    -
    1626 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1626 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1627
    1628
    1629 // ============================================================================
    @@ -1750,15 +1750,15 @@
    1641 // Callbacks
    1642 // ============================================================================
    1643
    -
    1644 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    +
    1644 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    1645 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    1646 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    1647
    -
    1648 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    +
    1648 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    1649 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    1650 void executeConfigChangedCallback(); ///< Execute config-changed callback
    1651
    -
    1652 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    +
    1652 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    1653 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    1654
    1655
    @@ -1787,10 +1787,10 @@
    1678 unsigned long asyncCommandTimeoutMs = 6000;
    1679
    1680 /// Send a generic async command
    -
    1681 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1681 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1682
    1683 /// Invoke async command callback with result
    -
    1684 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1684 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    1685
    1686
    1687
    @@ -1798,9 +1798,9 @@
    1689 void handleAsyncCommandCallbackTimeout();
    1690
    1691 /// Send async command that modifies configuration
    -
    1692 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1692 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1693
    -
    1694 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    +
    1694 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    1695 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    1696 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    1697 byte asyncCommandCommandCode = 0; ///< Last command code issued
    @@ -1817,28 +1817,28 @@
    1708 // ============================================================================
    1709 // Config mode
    1710 // ============================================================================
    -
    1711 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1712 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1711 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1712 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    1713
    1714 // ============================================================================
    1715 // Config writing
    1716 // ============================================================================
    1717 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    1718 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    -
    1719 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1719 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    1720 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    1721 bool configureAllConfigSettingsAsyncConfigActive = false;
    1722 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    -
    1723 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1723 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    1724
    -
    1725 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1726 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1727 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1728 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1725 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1726 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1727 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1728 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1729 bool configureAllConfigSettingsAsyncWriteConfig();
    -
    1730 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1730 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1731 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1732 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1732 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1733
    1734 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    1735
    @@ -1848,80 +1848,80 @@ -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    -
    String firmware
    Firmware version string of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    +
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    +
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    +
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    +
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool end()
    Stops the background task started by begin().
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    String firmware
    Firmware version string of the radar.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ NOT_SET
    Status not yet retrieved.
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    constexpr size_t LD2410_Buffer_Size
    Definition LD2410Defs.h:11
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    -
    @ NOT_SET
    Status not yet retrieved.
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    Stores the sensor’s configuration parameters.
    Holds the most recent detection data reported by the radar.
    diff --git a/docu/LD2410CommandBuilder_8h.html b/docu/LD2410CommandBuilder_8h.html index dbb801b..74219aa 100644 --- a/docu/LD2410CommandBuilder_8h.html +++ b/docu/LD2410CommandBuilder_8h.html @@ -121,9 +121,9 @@   bool LD2410CommandBuilder::buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)   -bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution) +bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)   -bool LD2410CommandBuilder::buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) +bool LD2410CommandBuilder::buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)   bool LD2410CommandBuilder::buildBaudRateCommand (byte *out, byte baudRateSetting)   diff --git a/docu/LD2410CommandBuilder_8h_source.html b/docu/LD2410CommandBuilder_8h_source.html index d8469ac..32ae3d1 100644 --- a/docu/LD2410CommandBuilder_8h_source.html +++ b/docu/LD2410CommandBuilder_8h_source.html @@ -154,12 +154,12 @@
    48
    63
    -
    64 inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) {
    +
    64 inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) {
    67
    -
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    -
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    +
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    +
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    70
    71 out[4] = byte(lightControl);
    72 out[5] = lightThreshold;
    @@ -218,6 +218,13 @@ +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    @@ -232,13 +239,6 @@
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    diff --git a/docu/LD2410Types_8h.html b/docu/LD2410Types_8h.html index 3ef0a90..afdc8a8 100644 --- a/docu/LD2410Types_8h.html +++ b/docu/LD2410Types_8h.html @@ -124,59 +124,59 @@ - - - - + + - - - + + - - - + + - - - + + - - - + + - - + +

    Enumerations

    enum class  LD2410Types::TargetState {
    -  LD2410Types::NO_TARGET = 0 -, LD2410Types::MOVING_TARGET = 1 -, LD2410Types::STATIONARY_TARGET = 2 -, LD2410Types::MOVING_AND_STATIONARY_TARGET = 3 +
    enum class  LD2410Types::TargetState {
    +  LD2410Types::TargetState::NO_TARGET = 0 +, LD2410Types::TargetState::MOVING_TARGET = 1 +, LD2410Types::TargetState::STATIONARY_TARGET = 2 +, LD2410Types::TargetState::MOVING_AND_STATIONARY_TARGET = 3 ,
    -  LD2410Types::AUTOCONFIG_IN_PROGRESS = 4 -, LD2410Types::AUTOCONFIG_SUCCESS = 5 -, LD2410Types::AUTOCONFIG_FAILED = 6 +  LD2410Types::TargetState::AUTOCONFIG_IN_PROGRESS = 4 +, LD2410Types::TargetState::AUTOCONFIG_SUCCESS = 5 +, LD2410Types::TargetState::AUTOCONFIG_FAILED = 6
    }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LD2410Types::LightControl { LD2410Types::NOT_SET = -1 -, LD2410Types::NO_LIGHT_CONTROL = 0 -, LD2410Types::LIGHT_BELOW_THRESHOLD = 1 -, LD2410Types::LIGHT_ABOVE_THRESHOLD = 2 +
     Represents the current target detection state reported by the radar. More...
     
    enum class  LD2410Types::LightControl { LD2410Types::LightControl::NOT_SET = -1 +, LD2410Types::LightControl::NO_LIGHT_CONTROL = 0 +, LD2410Types::LightControl::LIGHT_BELOW_THRESHOLD = 1 +, LD2410Types::LightControl::LIGHT_ABOVE_THRESHOLD = 2 }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  LD2410Types::OutputControl { LD2410Types::NOT_SET = -1 -, LD2410Types::DEFAULT_LOW_DETECTED_HIGH = 0 -, LD2410Types::DEFAULT_HIGH_DETECTED_LOW = 1 +
     Light-dependent control status of the auxiliary output. More...
     
    enum class  LD2410Types::OutputControl { LD2410Types::OutputControl::NOT_SET = -1 +, LD2410Types::OutputControl::DEFAULT_LOW_DETECTED_HIGH = 0 +, LD2410Types::OutputControl::DEFAULT_HIGH_DETECTED_LOW = 1 }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  LD2410Types::AutoConfigStatus { LD2410Types::NOT_SET = -1 -, LD2410Types::NOT_IN_PROGRESS -, LD2410Types::IN_PROGRESS -, LD2410Types::COMPLETED +
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  LD2410Types::AutoConfigStatus { LD2410Types::AutoConfigStatus::NOT_SET = -1 +, LD2410Types::AutoConfigStatus::NOT_IN_PROGRESS +, LD2410Types::AutoConfigStatus::IN_PROGRESS +, LD2410Types::AutoConfigStatus::COMPLETED }
     State of the automatic threshold configuration routine. More...
     
    enum class  LD2410Types::Baudrate {
    -  LD2410Types::BAUDRATE_9600 = 1 -, LD2410Types::BAUDRATE_19200 = 2 -, LD2410Types::BAUDRATE_38400 = 3 -, LD2410Types::BAUDRATE_57600 = 4 +
     State of the automatic threshold configuration routine. More...
     
    enum class  LD2410Types::Baudrate {
    +  LD2410Types::Baudrate::BAUDRATE_9600 = 1 +, LD2410Types::Baudrate::BAUDRATE_19200 = 2 +, LD2410Types::Baudrate::BAUDRATE_38400 = 3 +, LD2410Types::Baudrate::BAUDRATE_57600 = 4 ,
    -  LD2410Types::BAUDRATE_115200 = 5 -, LD2410Types::BAUDRATE_230500 = 6 -, LD2410Types::BAUDRATE_256000 = 7 -, LD2410Types::BAUDRATE_460800 = 8 +  LD2410Types::Baudrate::BAUDRATE_115200 = 5 +, LD2410Types::Baudrate::BAUDRATE_230500 = 6 +, LD2410Types::Baudrate::BAUDRATE_256000 = 7 +, LD2410Types::Baudrate::BAUDRATE_460800 = 8
    }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  LD2410Types::DistanceResolution { LD2410Types::NOT_SET = -1 -, LD2410Types::RESOLUTION_75CM = 0 -, LD2410Types::RESOLUTION_20CM = 1 +
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  LD2410Types::DistanceResolution { LD2410Types::DistanceResolution::NOT_SET = -1 +, LD2410Types::DistanceResolution::RESOLUTION_75CM = 0 +, LD2410Types::DistanceResolution::RESOLUTION_20CM = 1 }
     Distance resolution per gate for detection. More...
     
     Distance resolution per gate for detection. More...
     
    diff --git a/docu/LD2410Types_8h.js b/docu/LD2410Types_8h.js index fb70ba4..b7dfff9 100644 --- a/docu/LD2410Types_8h.js +++ b/docu/LD2410Types_8h.js @@ -1,46 +1,44 @@ var LD2410Types_8h = [ - [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], - [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], - [ "AutoConfigStatus", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995", [ - [ "NOT_SET", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], - [ "IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], - [ "COMPLETED", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] + [ "AutoConfigStatus", "LD2410Types_8h.html#ga035762090f81b93ab2008c3a8d37e995", [ + [ "NOT_SET", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], + [ "IN_PROGRESS", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], + [ "COMPLETED", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] ] ], - [ "Baudrate", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf", [ - [ "BAUDRATE_9600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], - [ "BAUDRATE_19200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], - [ "BAUDRATE_38400", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], - [ "BAUDRATE_57600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], - [ "BAUDRATE_115200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], - [ "BAUDRATE_230500", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], - [ "BAUDRATE_256000", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], - [ "BAUDRATE_460800", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] + [ "Baudrate", "LD2410Types_8h.html#ga5e710aa1a69067aab369a0a463189fdf", [ + [ "BAUDRATE_9600", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], + [ "BAUDRATE_19200", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], + [ "BAUDRATE_38400", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], + [ "BAUDRATE_57600", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], + [ "BAUDRATE_115200", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], + [ "BAUDRATE_230500", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], + [ "BAUDRATE_256000", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], + [ "BAUDRATE_460800", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] ] ], - [ "DistanceResolution", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79", [ - [ "NOT_SET", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "RESOLUTION_75CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], - [ "RESOLUTION_20CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] + [ "DistanceResolution", "LD2410Types_8h.html#ga89e3189ddef9f36629c460fbeb398c79", [ + [ "NOT_SET", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "RESOLUTION_75CM", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], + [ "RESOLUTION_20CM", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] ] ], - [ "LightControl", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844", [ - [ "NOT_SET", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "NO_LIGHT_CONTROL", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], - [ "LIGHT_BELOW_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], - [ "LIGHT_ABOVE_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] + [ "LightControl", "LD2410Types_8h.html#gafbd22de9579db591b3f122c51c730844", [ + [ "NOT_SET", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NO_LIGHT_CONTROL", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], + [ "LIGHT_BELOW_THRESHOLD", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], + [ "LIGHT_ABOVE_THRESHOLD", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] ] ], - [ "OutputControl", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bff", [ - [ "NOT_SET", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], - [ "DEFAULT_LOW_DETECTED_HIGH", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], - [ "DEFAULT_HIGH_DETECTED_LOW", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] + [ "OutputControl", "LD2410Types_8h.html#ga420c188999635485028764fe98cb0bff", [ + [ "NOT_SET", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], + [ "DEFAULT_LOW_DETECTED_HIGH", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], + [ "DEFAULT_HIGH_DETECTED_LOW", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] ] ], - [ "TargetState", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9", [ - [ "NO_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], - [ "MOVING_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], - [ "STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], - [ "MOVING_AND_STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], - [ "AUTOCONFIG_IN_PROGRESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], - [ "AUTOCONFIG_SUCCESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], - [ "AUTOCONFIG_FAILED", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] + [ "TargetState", "LD2410Types_8h.html#gaf838f34651382f6262c0d19397ac0be9", [ + [ "NO_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], + [ "MOVING_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], + [ "STATIONARY_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], + [ "MOVING_AND_STATIONARY_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], + [ "AUTOCONFIG_IN_PROGRESS", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], + [ "AUTOCONFIG_SUCCESS", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], + [ "AUTOCONFIG_FAILED", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] ] ] ]; \ No newline at end of file diff --git a/docu/LD2410Types_8h_source.html b/docu/LD2410Types_8h_source.html index 5fb2a90..3863eab 100644 --- a/docu/LD2410Types_8h_source.html +++ b/docu/LD2410Types_8h_source.html @@ -122,14 +122,14 @@
    19 */
    20
    -
    21 enum class TargetState {
    -
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    -
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    -
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    -
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    -
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    -
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    -
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    21 enum class TargetState {
    +
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    29 };
    30
    @@ -148,16 +148,16 @@
    43 *
    44 * @ingroup LD2410Async_Types
    45 */
    -
    46 static TargetState toTargetState(int value) {
    +
    46 static TargetState toTargetState(int value) {
    47 switch (value) {
    -
    48 case 0: return TargetState::NO_TARGET;
    -
    49 case 1: return TargetState::MOVING_TARGET;
    -
    50 case 2: return TargetState::STATIONARY_TARGET;
    - - - -
    54 case 6: return TargetState::AUTOCONFIG_FAILED;
    -
    55 default: return TargetState::NO_TARGET; // safe fallback
    +
    48 case 0: return TargetState::NO_TARGET;
    +
    49 case 1: return TargetState::MOVING_TARGET;
    +
    50 case 2: return TargetState::STATIONARY_TARGET;
    + + + +
    54 case 6: return TargetState::AUTOCONFIG_FAILED;
    +
    55 default: return TargetState::NO_TARGET; // safe fallback
    56 }
    57 }
    58
    @@ -171,15 +171,15 @@
    66 *
    67 * @ingroup LD2410Async_Types
    68 */
    -
    69 static String targetStateToString(TargetState state) {
    +
    69 static String targetStateToString(TargetState state) {
    70 switch (state) {
    -
    71 case TargetState::NO_TARGET: return "No target";
    -
    72 case TargetState::MOVING_TARGET: return "Moving target";
    -
    73 case TargetState::STATIONARY_TARGET: return "Stationary target";
    -
    74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    -
    75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    -
    76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    -
    77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    +
    71 case TargetState::NO_TARGET: return "No target";
    +
    72 case TargetState::MOVING_TARGET: return "Moving target";
    +
    73 case TargetState::STATIONARY_TARGET: return "Stationary target";
    +
    74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    +
    75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    +
    76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    +
    77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    78 default: return "Unknown";
    79 }
    80 }
    @@ -200,11 +200,11 @@
    95 * @ingroup LD2410Async_Types
    96 */
    -
    97 enum class LightControl {
    -
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    -
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    -
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    97 enum class LightControl {
    +
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    102 };
    103 /**
    @@ -218,12 +218,12 @@
    111 *
    112 * @ingroup LD2410Async_Types
    113 */
    -
    114 static LightControl toLightControl(int value) {
    +
    114 static LightControl toLightControl(int value) {
    115 switch (value) {
    -
    116 case 0: return LightControl::NO_LIGHT_CONTROL;
    - - -
    119 default: return LightControl::NOT_SET;
    +
    116 case 0: return LightControl::NO_LIGHT_CONTROL;
    + + +
    119 default: return LightControl::NOT_SET;
    120 }
    121 }
    122
    @@ -239,10 +239,10 @@
    132 * @ingroup LD2410Async_Types
    133 */
    -
    134 enum class OutputControl {
    -
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    -
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    134 enum class OutputControl {
    +
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    138 };
    139
    @@ -256,11 +256,11 @@
    147 *
    148 * @ingroup LD2410Async_Types
    149 */
    -
    150 static OutputControl toOutputControl(int value) {
    +
    150 static OutputControl toOutputControl(int value) {
    151 switch (value) {
    - - -
    154 default: return OutputControl::NOT_SET;
    + + +
    154 default: return OutputControl::NOT_SET;
    155 }
    156 }
    157
    @@ -275,11 +275,11 @@
    166 * @ingroup LD2410Async_Types
    167 */
    -
    168 enum class AutoConfigStatus {
    -
    169 NOT_SET = -1, ///< Status not yet retrieved.
    -
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    -
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    -
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    168 enum class AutoConfigStatus {
    +
    169 NOT_SET = -1, ///< Status not yet retrieved.
    +
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    173 };
    174
    @@ -294,12 +294,12 @@
    183 *
    184 * @ingroup LD2410Async_Types
    185 */
    -
    186 static AutoConfigStatus toAutoConfigStatus(int value) {
    +
    186 static AutoConfigStatus toAutoConfigStatus(int value) {
    187 switch (value) {
    - -
    189 case 1: return AutoConfigStatus::IN_PROGRESS;
    -
    190 case 2: return AutoConfigStatus::COMPLETED;
    -
    191 default: return AutoConfigStatus::NOT_SET;
    + +
    189 case 1: return AutoConfigStatus::IN_PROGRESS;
    +
    190 case 2: return AutoConfigStatus::COMPLETED;
    +
    191 default: return AutoConfigStatus::NOT_SET;
    192 }
    193 }
    194
    @@ -314,15 +314,15 @@
    203 * @ingroup LD2410Async_Types
    204 */
    -
    205 enum class Baudrate {
    -
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    -
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    -
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    -
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    -
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    -
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    -
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    -
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    205 enum class Baudrate {
    +
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    214 };
    215
    @@ -338,10 +338,10 @@
    225 * @ingroup LD2410Async_Types
    226 */
    - -
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    -
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    + +
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    231 };
    232 /**
    @@ -355,11 +355,11 @@
    240 *
    241 * @ingroup LD2410Async_Types
    242 */
    -
    243 static DistanceResolution toDistanceResolution(int value) {
    +
    243 static DistanceResolution toDistanceResolution(int value) {
    244 switch (value) {
    - - -
    247 default: return DistanceResolution::NOT_SET;
    + + +
    247 default: return DistanceResolution::NOT_SET;
    248 }
    249 }
    250
    @@ -386,7 +386,7 @@
    270 bool movingPresenceDetected = false; ///< True if a moving target is detected.
    271 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
    272
    -
    273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    +
    273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    274 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
    275 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
    276 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
    @@ -504,12 +504,12 @@
    384 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
    385
    386 // === Distance resolution ===
    -
    387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    +
    387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    388
    389 // === Auxiliary controls ===
    390 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
    -
    391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    -
    392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    +
    391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    +
    392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    393
    394
    395
    @@ -526,9 +526,9 @@
    406 bool isValid() const {
    407 // Validate enum settings
    - -
    409 if (lightControl == LightControl::NOT_SET) return false;
    -
    410 if (outputControl == OutputControl::NOT_SET) return false;
    + +
    409 if (lightControl == LightControl::NOT_SET) return false;
    +
    410 if (outputControl == OutputControl::NOT_SET) return false;
    411
    412 // Validate max distance gates
    @@ -623,42 +623,42 @@
    496
    497}
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:21
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ NOT_SET
    Status not yet retrieved.
    +
    @ COMPLETED
    Auto-configuration finished (success or failure).
    +
    @ IN_PROGRESS
    Auto-configuration is currently running.
    +
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    +
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    +
    @ BAUDRATE_57600
    57600 baud.
    +
    @ BAUDRATE_38400
    38400 baud.
    +
    @ BAUDRATE_230500
    230400 baud.
    +
    @ BAUDRATE_115200
    115200 baud.
    +
    @ BAUDRATE_256000
    256000 baud (factory default).
    +
    @ BAUDRATE_19200
    19200 baud.
    +
    @ BAUDRATE_9600
    9600 baud.
    +
    @ BAUDRATE_460800
    460800 baud (high-speed).
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ NO_TARGET
    No moving or stationary target detected.
    +
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    +
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    +
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    +
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    -
    @ NOT_SET
    Status not yet retrieved.
    -
    @ COMPLETED
    Auto-configuration finished (success or failure).
    -
    @ IN_PROGRESS
    Auto-configuration is currently running.
    -
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    -
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    @ BAUDRATE_57600
    57600 baud.
    -
    @ BAUDRATE_38400
    38400 baud.
    -
    @ BAUDRATE_230500
    230400 baud.
    -
    @ BAUDRATE_115200
    115200 baud.
    -
    @ BAUDRATE_256000
    256000 baud (factory default).
    -
    @ BAUDRATE_19200
    19200 baud.
    -
    @ BAUDRATE_9600
    9600 baud.
    -
    @ BAUDRATE_460800
    460800 baud (high-speed).
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:21
    -
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    -
    @ NO_TARGET
    No moving or stationary target detected.
    -
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    -
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    -
    @ STATIONARY_TARGET
    A stationary target has been detected.
    -
    @ MOVING_TARGET
    A moving target has been detected.
    -
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    -
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    -
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    Stores the sensor’s configuration parameters.
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    void print() const
    Debug helper: print configuration contents to Serial.
    diff --git a/docu/basicPresenceDetection_8ino.html b/docu/basicPresenceDetection_8ino.html index e03e5e3..01ad693 100644 --- a/docu/basicPresenceDetection_8ino.html +++ b/docu/basicPresenceDetection_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/basicPresenceDetection_8ino_source.html b/docu/basicPresenceDetection_8ino_source.html index aa2f37c..94cf9d2 100644 --- a/docu/basicPresenceDetection_8ino_source.html +++ b/docu/basicPresenceDetection_8ino_source.html @@ -179,7 +179,7 @@ diff --git a/docu/changeConfig_8ino.html b/docu/changeConfig_8ino.html index 03c549d..657cb70 100644 --- a/docu/changeConfig_8ino.html +++ b/docu/changeConfig_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/changeConfig_8ino_source.html b/docu/changeConfig_8ino_source.html index 7d217be..7a33f35 100644 --- a/docu/changeConfig_8ino_source.html +++ b/docu/changeConfig_8ino_source.html @@ -217,7 +217,7 @@ diff --git a/docu/changeDistanceResolution_8ino.html b/docu/changeDistanceResolution_8ino.html index 750723f..1098544 100644 --- a/docu/changeDistanceResolution_8ino.html +++ b/docu/changeDistanceResolution_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/changeDistanceResolution_8ino_source.html b/docu/changeDistanceResolution_8ino_source.html index 0e68753..c81c399 100644 --- a/docu/changeDistanceResolution_8ino_source.html +++ b/docu/changeDistanceResolution_8ino_source.html @@ -227,7 +227,7 @@ diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html index d72e74c..34c9db2 100644 --- a/docu/classLD2410Async-members.html +++ b/docu/classLD2410Async-members.html @@ -103,72 +103,72 @@

    This is the complete list of members for LD2410Async, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    asyncCancel()LD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    asyncIsBusy()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableInactivityHandling()LD2410Asyncinline
    enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    getAsyncCommandTimeoutMs() constLD2410Asyncinline
    getConfigData() constLD2410Async
    getConfigDataRef() constLD2410Asyncinline
    getDetectionData() constLD2410Async
    getDetectionDataRef() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    isConfigModeEnabled() constLD2410Asyncinline
    isEngineeringModeEnabled() constLD2410Asyncinline
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    asyncCancel()LD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    asyncIsBusy()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableInactivityHandling()LD2410Asyncinline
    enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    getAsyncCommandTimeoutMs() constLD2410Asyncinline
    getConfigData() constLD2410Async
    getConfigDataRef() constLD2410Asyncinline
    getDetectionData() constLD2410Async
    getDetectionDataRef() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    isConfigModeEnabled() constLD2410Asyncinline
    isEngineeringModeEnabled() constLD2410Asyncinline
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html index 3184c4b..fe1763c 100644 --- a/docu/classLD2410Async.html +++ b/docu/classLD2410Async.html @@ -110,3046 +110,219 @@ - - - - - - - - - - - - + + + + + + + + + + +

    Public Types

    enum class  AsyncCommandResult : byte { SUCCESS -, FAILED -, TIMEOUT -, CANCELED +
    enum class  AsyncCommandResult : byte { AsyncCommandResult::SUCCESS +, AsyncCommandResult::FAILED +, AsyncCommandResult::TIMEOUT +, AsyncCommandResult::CANCELED }
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    LD2410Types::DetectionData getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    const LD2410Types::DetectionDatagetDetectionDataRef () const
     Access the current detection data without making a copy.
     
    LD2410Types::ConfigData getConfigData () const
     Returns a clone of the current configuration data of the radar.
     
    const LD2410Types::ConfigDatagetConfigDataRef () const
     Access the current config data without making a copy.
     
    bool asyncIsBusy ()
     Checks if an asynchronous command is currently pending.
     
    void asyncCancel ()
     Cancels any pending asynchronous command or sequence.
     
    void setAsyncCommandTimeoutMs (unsigned long timeoutMs)
     Sets the timeout for async command callbacks.
     
    unsigned long getAsyncCommandTimeoutMs () const
     Returns the current async command timeout.
     
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables engineering mode.
     
    bool isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    LD2410Types::DetectionData getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    const LD2410Types::DetectionDatagetDetectionDataRef () const
     Access the current detection data without making a copy.
     
    LD2410Types::ConfigData getConfigData () const
     Returns a clone of the current configuration data of the radar.
     
    const LD2410Types::ConfigDatagetConfigDataRef () const
     Access the current config data without making a copy.
     
    bool asyncIsBusy ()
     Checks if an asynchronous command is currently pending.
     
    void asyncCancel ()
     Cancels any pending asynchronous command or sequence.
     
    void setAsyncCommandTimeoutMs (unsigned long timeoutMs)
     Sets the timeout for async command callbacks.
     
    unsigned long getAsyncCommandTimeoutMs () const
     Returns the current async command timeout.
     
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables engineering mode.
     
    bool isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     
    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     

    Detailed Description

    Definition at line 88 of file LD2410Async.h.

    -

    Member Typedef Documentation

    - -

    ◆ AsyncCommandCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    -
    - -

    Callback signature for asynchronous command completion.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    userDataUser-specified value passed when registering the callback.
    -
    -
    - -

    Definition at line 118 of file LD2410Async.h.

    - -
    -
    - -

    ◆ DetectionDataCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    -
    - -

    Callback type for receiving detection data events.

    -

    This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
    userDataUser-defined value passed when registering the callback.
    -
    -
    - -

    Definition at line 147 of file LD2410Async.h.

    - -
    -
    - -

    ◆ GenericCallback

    - -
    -
    - - - - -
    void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
    -
    - -

    Generic callback signature used for simple notifications.

    -
    Parameters
    - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    userDataUser-specified value passed when registering the callback.
    -
    -
    - -

    Definition at line 130 of file LD2410Async.h.

    - -
    -
    -

    Member Enumeration Documentation

    - -

    ◆ AsyncCommandResult

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Async::AsyncCommandResult : byte
    -
    -strong
    -
    - -

    Result of an asynchronous command execution.

    -

    Every async command reports back its outcome via the callback.

    - - - - - -
    Enumerator
    SUCCESS 

    Command completed successfully and ACK was received.

    -
    FAILED 

    Command failed (sensor responded with negative ACK).

    -
    TIMEOUT 

    No ACK received within the expected time window.

    -
    CANCELED 

    Command was canceled by the user before completion.

    -
    - -

    Definition at line 98 of file LD2410Async.h.

    -
    98 : byte {
    -
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    101 TIMEOUT, ///< No ACK received within the expected time window.
    -
    102 CANCELED ///< Command was canceled by the user before completion.
    -
    103 };
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ LD2410Async()

    - -
    -
    - - - - - - - -
    LD2410Async::LD2410Async (Stream & serial)
    -
    - -

    Constructs a new LD2410Async instance bound to a given serial stream.

    -

    The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

    -

    Example:

    HardwareSerial radarSerial(2);
    -
    LD2410Async radar(radarSerial);
    - -
    Parameters
    - - -
    serialReference to a Stream object used to exchange data with the sensor.
    -
    -
    - -

    Definition at line 1646 of file LD2410Async.cpp.

    -
    1647{
    -
    1648 sensor = &serial;
    -
    1649}
    -
    -
    -
    -

    Member Function Documentation

    - -

    ◆ asyncCancel()

    - -
    -
    - - - - - - - -
    void LD2410Async::asyncCancel ()
    -
    - -

    Cancels any pending asynchronous command or sequence.

    -

    If canceled, the callback of the running command is invoked with result type CANCELED. After canceling, the sensor may remain in config mode — consider disabling config mode or rebooting to return to detection operation.

    - -

    Definition at line 534 of file LD2410Async.cpp.

    -
    534 {
    -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    -
    536}
    -
    -
    -
    - -

    ◆ asyncIsBusy()

    - -
    -
    - - - - - - - -
    bool LD2410Async::asyncIsBusy ()
    -
    - -

    Checks if an asynchronous command is currently pending.

    -
    Returns
    true if there is an active command awaiting an ACK, false if the library is idle.
    - -

    Definition at line 594 of file LD2410Async.cpp.

    -
    594 {
    -
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    -
    596}
    -
    -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - -
    bool LD2410Async::begin ()
    -
    - -

    Starts the background task that continuously reads data from the sensor.

    -

    This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

    -
    Returns
    true if the task was successfully started, false if already running.
    - -

    Definition at line 1577 of file LD2410Async.cpp.

    -
    1577 {
    -
    1578 if (taskHandle == NULL) {
    - -
    1580 DEBUG_PRINTLN("Starting data processing task");
    -
    1581 taskStop = false;
    -
    1582
    -
    1583 BaseType_t result = xTaskCreate(
    -
    1584 [](void* param) {
    -
    1585 if (param) {
    -
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    -
    1587 }
    -
    1588 vTaskDelete(NULL);
    -
    1589 },
    -
    1590 "LD2410Task",
    -
    1591 4096,
    -
    1592 this,
    -
    1593 1,
    -
    1594 &taskHandle
    -
    1595 );
    -
    1596
    -
    1597 if (result == pdPASS) {
    -
    1598 return true;
    -
    1599 }
    -
    1600 else {
    - -
    1602 DEBUG_PRINTLN("Task creation failed");
    -
    1603 taskHandle = NULL;
    -
    1604 return false;
    -
    1605 }
    -
    1606 }
    - -
    1608 DEBUG_PRINTLN("Data processing task already active");
    -
    1609 return false;
    -
    1610}
    -
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    -
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    -
    -
    -
    - -

    ◆ beginAutoConfigAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::beginAutoConfigAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Starts the automatic configuration (auto-config) routine on the sensor.

    -

    Auto-config lets the radar adjust its internal thresholds and sensitivities for the current environment. This can take several seconds to complete and results in updated sensitivity values.

    -

    The progress and result can be checked with requestAutoConfigStatusAsync().

    -
    Note
    Requires config mode. This method will manage entering and exiting config mode automatically.
    -
    -Auto-config temporarily suspends normal detection reporting.
    -

    -Example: Run auto-config

    -
    radar.beginAutoConfigAsync([](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.println("Auto-config started.");
    -
    } else {
    -
    Serial.println("Failed to start auto-config.");
    -
    }
    -
    });
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    -

    -Do:

    - -

    -Don’t:

    -
      -
    • Expect instant results — the sensor needs time to complete the process.
    • -
    -
    Parameters
    - - - -
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the command is acknowledged or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1042 of file LD2410Async.cpp.

    -
    1042 {
    - -
    1044 DEBUG_PRINTLN("Begin auto config");
    -
    1045
    -
    1046 if (asyncIsBusy()) return false;
    -
    1047
    -
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    -
    1049};
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    constexpr byte beginAutoConfigCommandData[6]
    Definition LD2410Defs.h:71
    -
    -
    -
    - -

    ◆ configureAllConfigSettingsAsync()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureAllConfigSettingsAsync (const LD2410Types::ConfigData & configToWrite,
    bool writeAllConfigData,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Applies a full ConfigData struct to the LD2410.

    -

    If writeAllConfigData is true, the method will first fetch the current config, compare it with the provide Config data and then create a command sequence that will only update the changes config values. If writeAllConfigData is false, the method will write all values in the provided ConfigData to the sensor, regardless of whether they differ from the current config.

    -
    Note
    This is a high-level method that involves multiple commands (up to 18).
    -
    -Requires config mode. This method will manage entering and exiting config mode automatically (if config mode is not already active).
    -
    -If another async command is already pending, the command fails.
    -
    -Any members of ConfigData that are left at invalid values (e.g. enums set to NOT_SET) will cause the sequence to fail.
    -

    -Example: Clone, modify, and apply config

    -
    ConfigData cfg = radar.getConfigData(); // clone current config
    -
    cfg.noOneTimeout = 120; // change timeout
    -
    cfg.distanceGateMotionSensitivity[2] = 75;
    -
    -
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.println("All config applied successfully!");
    -
    }
    -
    });
    -

    -Do:

    -
      -
    • Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    • -
    • If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    • -
    -

    -Don’t:

    -
      -
    • Dont write all config data (writeAllConfigData=true) if not really necessary. This generates unnecessary wear on the sensors memory.
    • -
    • Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    • -
    -
    Parameters
    - - - - - -
    configToWriteThe configuration data to be applied.
    writeAllConfigDataIf true, all fields in configToWrite are applied. If false, changed values are written.
    callbackFunction with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData), executed when the sequence finishes (success/fail/timeout/cancel).
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command sequence has been started, false otherwise.
    - -

    Definition at line 1355 of file LD2410Async.cpp.

    -
    1356{
    -
    1357
    - -
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    -
    1360
    -
    1361 if (asyncIsBusy()) return false;
    -
    1362
    -
    1363
    -
    1364 if (!configToWrite.isValid()) {
    - -
    1366 DEBUG_PRINTLN("configToWrite is invalid.");
    -
    1367 return false;
    -
    1368 }
    -
    1369
    -
    1370 configureAllConfigSettingsAsyncConfigActive = true;
    -
    1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
    -
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    -
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    -
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    -
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    -
    1376
    -
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    -
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    -
    1379 }
    -
    1380 else {
    -
    1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
    -
    1382 //If we save all changes anyway, no need to request current config data first
    -
    1383 return configureAllConfigSettingsAsyncWriteConfig();
    -
    1384 }
    -
    1385 else {
    -
    1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1387 }
    -
    1388 }
    -
    1389
    -
    1390}
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    bool isValid() const
    Validates the configuration data for correctness.
    -
    -
    -
    - -

    ◆ configureAuxControlSettingsAsync()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureAuxControlSettingsAsync (LD2410Types::LightControl light_control,
    byte light_threshold,
    LD2410Types::OutputControl output_control,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the auxiliary control parameters (light and output pin).

    -

    This configures how the OUT pin behaves depending on light levels and presence detection. Typical use cases include controlling an external lamp or relay.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -Both enums must be set to valid values (not NOT_SET).
    -
    -Fails if another async command is pending.
    -
    Parameters
    - - - - - - -
    lightControlLight control behavior (see LightControl enum).
    lightThresholdThreshold (0–255) used for light-based switching.
    outputControlOutput pin logic configuration (see OutputControl enum).
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1016 of file LD2410Async.cpp.

    -
    1019{
    - -
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    -
    1022 if (asyncIsBusy()) return false;
    -
    1023
    - -
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    -
    1026
    -
    1027 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1028}
    -
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    -
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    -
    -
    -
    - -

    ◆ configureBaudRateAsync() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureBaudRateAsync (byte baudRateSetting,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the UART baud rate of the sensor.

    -

    The new baud rate becomes active only after reboot. The ESP32’s Serial interface must also be reconfigured to the new baud rate after reboot.

    -
    Note
    Valid values are 1–8. Values outside range are rejected resp. method will fail.
    -
    -Requires config mode. Will be managed automatically.
    -
    -If another async command is pending, this call fails.
    -
    -After execution, call rebootAsync() to activate changes.
    -
    Parameters
    - - - - -
    baudRateSettingNumeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 894 of file LD2410Async.cpp.

    -
    896{
    - -
    898 DEBUG_PRINTLN("Set Baud Rate");
    -
    899
    -
    900 if (asyncIsBusy()) return false;
    -
    901
    -
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    -
    903 return false;
    -
    904
    -
    905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    -
    906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    -
    907
    -
    908 return sendConfigCommandAsync(cmd, callback, userData);
    -
    909}
    -
    bool buildBaudRateCommand(byte *out, byte baudRateSetting)
    -
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    -
    -
    -
    - -

    ◆ configureBaudRateAsync() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureBaudRateAsync (LD2410Types::Baudrate baudRate,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the baudrate of the serial port of the sensor.

    -

    The new baudrate will only become active after a reboot of the sensor. If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.

    -
    Note
    If another async command is pending, this call fails.
    -
    -After execution, call rebootAsync() to activate changes.
    -
    Parameters
    - - - - -
    baudrateA valid baud rate from the Baudrate enum.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 913 of file LD2410Async.cpp.

    -
    913 {
    -
    914
    -
    915 if (asyncIsBusy()) return false;
    -
    916
    -
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    -
    918}
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    -
    -
    - -

    ◆ configureBluetoothPasswordAsync() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureBluetoothPasswordAsync (const char * password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Sets the password for bluetooth access to the sensor.

    -
    Parameters
    - - - - -
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 954 of file LD2410Async.cpp.

    -
    956{
    - -
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    -
    959 if (asyncIsBusy()) return false;
    -
    960
    - -
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    -
    963
    -
    964 return sendConfigCommandAsync(cmd, callback, userData);
    -
    965}
    -
    bool buildBluetoothPasswordCommand(byte *out, const char *password)
    -
    constexpr byte setBluetoothPasswordCommandData[10]
    Definition LD2410Defs.h:53
    -
    -
    -
    - -

    ◆ configureBluetoothPasswordAsync() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureBluetoothPasswordAsync (const String & password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Sets the password for bluetooth access to the sensor.

    -
    Parameters
    - - - - -
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 969 of file LD2410Async.cpp.

    -
    969 {
    -
    970
    -
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    -
    972}
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    -
    -
    - -

    ◆ configureDefaultBluetoothPasswordAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Resets the password for bluetooth access to the default value (HiLink)

    -
    Parameters
    - - - -
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 975 of file LD2410Async.cpp.

    -
    975 {
    - -
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    -
    978 if (asyncIsBusy()) return false;
    -
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    -
    980}
    -
    -
    -
    - -

    ◆ configureDistanceGateSensitivityAsync() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureDistanceGateSensitivityAsync (byte gate,
    byte movingThreshold,
    byte stationaryThreshold,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures sensitivity thresholds for a single gate.

    -

    Updates both moving and stationary thresholds for the given gate index. If the gate index is greater than 8, all gates are updated instead.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -If another async command is pending, this call fails.
    -
    Parameters
    - - - - - - -
    gateIndex of the gate (0–8). Values >8 apply to all gates.
    movingThresholdSensitivity for moving targets (0–100).
    stationaryThresholdSensitivity for stationary targets (0–100).
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 867 of file LD2410Async.cpp.

    -
    870{
    - -
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    -
    873
    -
    874 if (asyncIsBusy()) return false;
    -
    875
    - -
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    -
    878
    -
    879 return sendConfigCommandAsync(cmd, callback, userData);
    -
    880}
    -
    bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
    -
    constexpr byte distanceGateSensitivityConfigCommandData[0x16]
    Definition LD2410Defs.h:77
    -
    -
    -
    - -

    ◆ configureDistanceGateSensitivityAsync() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureDistanceGateSensitivityAsync (const byte movingThresholds[9],
    const byte stationaryThresholds[9],
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures sensitivity thresholds for all gates at once.

    -

    A sequence of commands will be sent, one for each gate. Threshold values are automatically clamped to 0–100.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -If another async command is pending, this call fails.
    -
    Parameters
    - - - - - -
    movingThresholdsArray of 9 sensitivity values for moving targets (0–100).
    stationaryThresholdsArray of 9 sensitivity values for stationary targets (0–100).
    callbackCallback fired when all updates are acknowledged or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the sequence was started, false otherwise.
    - -

    Definition at line 845 of file LD2410Async.cpp.

    -
    848{
    - -
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    -
    851
    -
    852 if (asyncIsBusy()) return false;
    -
    853
    -
    854 if (!resetCommandSequence()) return false;
    -
    855
    -
    856 for (byte gate = 0; gate < 9; gate++) {
    - -
    858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    -
    859 if (!addCommandToSequence(cmd)) return false;
    -
    860 }
    -
    861
    -
    862 return executeCommandSequenceAsync(callback, userData);
    -
    863}
    -
    -
    -
    - -

    ◆ configureDistanceResolution75cmAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::configureDistanceResolution75cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the distance resolution explicitly to 75 cm per gate.

    -

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    -Fails if another async command is pending.
    -
    Parameters
    - - - -
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 982 of file LD2410Async.cpp.

    -
    982 {
    - -
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    -
    985 if (asyncIsBusy()) return false;
    -
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    -
    987};
    -
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    -
    -
    -
    - -

    ◆ configureDistanceResolutionAsync()

    - -
    -
    - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the distance resolution of the radar.

    -

    The distance resolution defines the size of each distance gate and the maximum detection range:

      -
    • RESOLUTION_75CM → longer range, coarser detail.
    • -
    • RESOLUTION_20CM → shorter range, finer detail.
    • -
    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    -Fails if another async command is pending.
    -
    Parameters
    - - - - -
    distanceResolutionValue from the DistanceResolution enum. Must not be NOT_SET.
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false if invalid parameters or the library is busy.
    - -

    Definition at line 989 of file LD2410Async.cpp.

    -
    991{
    - -
    993 DEBUG_PRINTLN("Set Distance Resolution");
    -
    994 if (asyncIsBusy()) return false;
    -
    995
    -
    996 byte cmd[6];
    -
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    -
    998
    -
    999 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1000}
    -
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    -
    -
    -
    - -

    ◆ configureMaxGateAndNoOneTimeoutAsync()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate,
    byte maxStationaryGate,
    unsigned short noOneTimeout,
    AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the maximum detection gates and "no-one" timeout on the sensor.

    -

    This command updates:

      -
    • Maximum motion detection distance gate (2–8).
    • -
    • Maximum stationary detection distance gate (2–8).
    • -
    • Timeout duration (0–65535 seconds) until "no presence" is declared.
    • -
    -
    Note
    Requires config mode to be enabled. The method will internally enable/disable config mode if necessary.
    -
    -If another async command is pending, this call fails.
    -
    Parameters
    - - - - - - -
    maxMovingGateFurthest gate used for motion detection (2–8).
    maxStationaryGateFurthest gate used for stationary detection (2–8).
    noOneTimeoutTimeout in seconds until "no one" is reported (0–65535).
    callbackCallback fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise (busy state or invalid values).
    - -

    Definition at line 808 of file LD2410Async.cpp.

    -
    811{
    - -
    813 DEBUG_PRINTLN("Set Max Gate");
    -
    814 if (asyncIsBusy()) return false;
    -
    815
    -
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    -
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    -
    818 return sendConfigCommandAsync(cmd, callback, userData);
    -
    819 }
    -
    820 return false;
    -
    821}
    -
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    -
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    -
    -
    -
    - -

    ◆ configuresDistanceResolution20cmAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::configuresDistanceResolution20cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Configures the distance resolution explicitly to 20 cm per gate.

    -

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    -Fails if another async command is pending.
    -
    Parameters
    - - - -
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1002 of file LD2410Async.cpp.

    -
    1002 {
    - -
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    -
    1005 if (asyncIsBusy()) return false;
    -
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    -
    1007};
    -
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    -
    -
    -
    - -

    ◆ disableBluetoothAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::disableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Disables bluetooth.

    -
    Parameters
    - - - -
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 939 of file LD2410Async.cpp.

    -
    939 {
    - -
    941 DEBUG_PRINTLN("Disable Bluetooth");
    -
    942 if (asyncIsBusy()) return false;
    -
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    944}
    -
    constexpr byte bluetoothSettingsOnCommandData[6]
    Definition LD2410Defs.h:47
    -
    -
    -
    - -

    ◆ disableConfigModeAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::disableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Disables config mode on the radar.

    -

    This should be called after finishing configuration, to return the sensor to normal detection operation.

    -
    Note
    If an async command is already pending (asyncIsBusy() == true), this command will not be sent.
    -
    Parameters
    - - - -
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 797 of file LD2410Async.cpp.

    -
    797 {
    -
    798 if (asyncIsBusy()) return false;
    -
    799 return disableConfigModeInternalAsync(callback, userData);
    -
    800}
    -
    -
    -
    - -

    ◆ disableEngineeringModeAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::disableEngineeringModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Disables engineering mode.

    -

    Returns sensor reporting to basic detection results only.

    -
    Note
    Requires config mode. Will be enabled automatically if not active.
    -
    Parameters
    - - - -
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 838 of file LD2410Async.cpp.

    -
    838 {
    - -
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    -
    841 if (asyncIsBusy()) return false;
    -
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    -
    843}
    -
    constexpr byte engineeringModeDisableCommandData[4]
    Definition LD2410Defs.h:62
    -
    -
    -
    - -

    ◆ disableInactivityHandling()

    - -
    -
    - - - - - -
    - - - - - - - -
    void LD2410Async::disableInactivityHandling ()
    -
    -inline
    -
    - -

    Convenience method: disables inactivity handling.

    -

    Equivalent to calling setInactivityHandling(false).

    - -

    Definition at line 372 of file LD2410Async.h.

    -
    372{ setInactivityHandling(false); };
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    -
    -
    - -

    ◆ enableBluetoothAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::enableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Enables bluetooth.

    -
    Parameters
    - - - -
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 931 of file LD2410Async.cpp.

    -
    931 {
    - -
    933 DEBUG_PRINTLN("Enable Bluetooth");
    -
    934 if (asyncIsBusy()) return false;
    -
    935
    -
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    937}
    -
    -
    -
    - -

    ◆ enableConfigModeAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::enableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Enables config mode on the radar.

    -

    Config mode must be enabled before issuing most configuration commands. This command itself is asynchronous — the callback fires once the sensor acknowledges the mode switch.

    -
    Note
    If asyncIsBusy() is true, this command will not be sent.
    -
    -Normal detection data is suspended while config mode is active.
    -
    Parameters
    - - - -
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false if blocked.
    - -

    Definition at line 786 of file LD2410Async.cpp.

    -
    786 {
    -
    787 if (asyncIsBusy()) return false;
    -
    788 return enableConfigModeInternalAsync(callback, userData);
    -
    789}
    -
    -
    -
    - -

    ◆ enableEngineeringModeAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::enableEngineeringModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Enables engineering mode.

    -

    In this mode, the sensor sends detailed per-gate signal values in addition to basic detection results.

    -
    Note
    Engineering mode is temporary and lost after power cycle.
    -
    -Requires config mode. Will be enabled automatically if not active.
    -
    Parameters
    - - - -
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 831 of file LD2410Async.cpp.

    -
    831 {
    - -
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    -
    834 if (asyncIsBusy()) return false;
    -
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    -
    836}
    -
    constexpr byte engineeringModeEnableCommandData[4]
    Definition LD2410Defs.h:59
    -
    -
    -
    - -

    ◆ enableInactivityHandling()

    - -
    -
    - - - - - -
    - - - - - - - -
    void LD2410Async::enableInactivityHandling ()
    -
    -inline
    -
    - -

    Convenience method: enables inactivity handling.

    -

    Equivalent to calling setInactivityHandling(true).

    - -

    Definition at line 363 of file LD2410Async.h.

    -
    363{ setInactivityHandling(true); };
    -
    -
    -
    - -

    ◆ end()

    - -
    -
    - - - - - - - -
    bool LD2410Async::end ()
    -
    - -

    Stops the background task started by begin().

    -

    After calling end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

    -
    Returns
    true if the task was stopped, false if it was not active.
    - -

    Definition at line 1612 of file LD2410Async.cpp.

    -
    1612 {
    -
    1613 if (taskHandle != NULL) {
    - -
    1615 DEBUG_PRINTLN("Stopping data processing task");
    -
    1616 taskStop = true;
    -
    1617
    -
    1618 // Wait up to 200ms for graceful exit
    -
    1619 for (int i = 0; i < 20; i++) {
    -
    1620 if (taskHandle == NULL) {
    - -
    1622 DEBUG_PRINTLN("Task exited gracefully");
    -
    1623 return true;
    -
    1624 }
    -
    1625 vTaskDelay(1 / portTICK_PERIOD_MS);
    -
    1626 }
    -
    1627
    -
    1628 // If still not NULL, force delete
    - -
    1630 DEBUG_PRINTLN("Forcing task stop");
    -
    1631 vTaskDelete(taskHandle);
    -
    1632 taskHandle = NULL;
    -
    1633 return true;
    -
    1634 }
    -
    1635
    -
    1636 DEBUG_PRINTLN("Data processing task is not active");
    -
    1637 return false;
    -
    1638}
    -
    -
    -
    - -

    ◆ getAsyncCommandTimeoutMs()

    - -
    -
    - - - - - -
    - - - - - - - -
    unsigned long LD2410Async::getAsyncCommandTimeoutMs () const
    -
    -inline
    -
    - -

    Returns the current async command timeout.

    -
    Returns
    Timeout in milliseconds.
    - -

    Definition at line 666 of file LD2410Async.h.

    -
    666{ return asyncCommandTimeoutMs; }
    -
    -
    -
    - -

    ◆ getConfigData()

    - -
    -
    - - - - - - - -
    LD2410Types::ConfigData LD2410Async::getConfigData () const
    -
    - -

    Returns a clone of the current configuration data of the radar.

    -

    The returned struct contains the most recently requested or received configuration values, such as sensitivities, resolution, timeouts, and auxiliary settings.

    -

    Equivalent to directly accessing the public member configData, but provided for encapsulation and future-proofing.

    -
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    -

    -Example: Clone, modify, and write back

    -
    // Clone current config
    -
    ConfigData cfg = radar.getConfigData();
    -
    -
    // Modify locally
    -
    cfg.noOneTimeout = 60; // change timeout
    -
    cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    -
    -
    // Send modified config back to sensor
    -
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.println("Config updated successfully!");
    -
    }
    -
    });
    -

    -Do:

    -
      -
    • Use when you want a clone of the current config to adjust and send back.
    • -
    • Safely modify the struct without risking internal state corruption.
    • -
    -

    -Don’t:

    -
      -
    • Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    • -
    -
    Returns
    A copy of the current ConfigData.
    - -

    Definition at line 1451 of file LD2410Async.cpp.

    -
    1451 {
    -
    1452 return configData;
    -
    1453}
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    -
    -
    - -

    ◆ getConfigDataRef()

    - -
    -
    - - - - - -
    - - - - - - - -
    const LD2410Types::ConfigData & LD2410Async::getConfigDataRef () const
    -
    -inline
    -
    - -

    Access the current config data without making a copy.

    -

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    -
    Note
    Since this returns a reference to the internal data, the values may change when new configuration is received. Do not store the reference for long-term use.
    -
    -This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    -

    -Example: Efficient read access without cloning

    -
    const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    -
    Serial.print("Resolution: ");
    -
    Serial.println(static_cast<int>(cfg.distanceResolution));
    -

    -Do:

    -
      -
    • Use when you only want to inspect configuration quickly.
    • -
    • Use for efficient read-only access.
    • -
    -

    -Don’t:

    -
      -
    • Try to modify the returned struct (it’s const).
    • -
    • Keep the reference and assume it will remain valid forever.
    • -
    -
    Returns
    Const reference to the current ConfigData.
    - -

    Definition at line 619 of file LD2410Async.h.

    -
    619{ return configData; }
    -
    -
    -
    - -

    ◆ getDetectionData()

    - -
    -
    - - - - - - - -
    LD2410Types::DetectionData LD2410Async::getDetectionData () const
    -
    - -

    Returns a clone of the latest detection data from the radar.

    -

    The returned struct contains the most recently received frame, including target state, distances, signal strengths, and (if enabled) engineering mode per-gate data.

    -

    Equivalent to directly accessing the public member detectionData, but provided for encapsulation and future-proofing.

    -
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    -

    -Example: Access values from a clone

    -
    DetectionData data = radar.getDetectionData(); // makes a copy
    -
    if (data.targetState == TargetState::MOVING_TARGET) {
    -
    Serial.print("Moving target at distance: ");
    -
    Serial.println(data.movingTargetDistance);
    -
    }
    -

    -Do:

    -
      -
    • Use when you want a snapshot of the latest detection data.
    • -
    • Modify the returned struct freely without affecting the internal state.
    • -
    -

    -Don’t:

    -
      -
    • Expect this to fetch new data from the sensor (it only returns what was already received).
    • -
    -
    Returns
    A copy of the current DetectionData.
    - -

    Definition at line 1447 of file LD2410Async.cpp.

    -
    1447 {
    -
    1448 return detectionData;
    -
    1449}
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    -
    -
    - -

    ◆ getDetectionDataRef()

    - -
    -
    - - - - - -
    - - - - - - - -
    const LD2410Types::DetectionData & LD2410Async::getDetectionDataRef () const
    -
    -inline
    -
    - -

    Access the current detection data without making a copy.

    -

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    -
    Note
    Since this returns a reference to the internal data, the values may change as new frames arrive. Do not store the reference for long-term use.
    -
    -This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    -

    -Example: Efficient read access without cloning

    -
    const DetectionData& data = radar.getDetectionDataRef(); // no copy
    -
    Serial.print("Stationary signal: ");
    -
    Serial.println(data.stationaryTargetSignal);
    -

    -Do:

    -
      -
    • Use when you only need to read values quickly and efficiently.
    • -
    • Use when printing or inspecting live data without keeping it.
    • -
    -

    -Don’t:

    -
      -
    • Try to modify the returned struct (it’s const).
    • -
    • Store the reference long-term (it may be updated at any time).
    • -
    -
    Returns
    Const reference to the current DetectionData.
    - -

    Definition at line 536 of file LD2410Async.h.

    -
    536{ return detectionData; }
    -
    -
    -
    - -

    ◆ getInactivityTimeoutMs()

    - -
    -
    - - - - - -
    - - - - - - - -
    unsigned long LD2410Async::getInactivityTimeoutMs () const
    -
    -inline
    -
    - -

    Returns the current inactivity timeout period.

    -
    Returns
    Timeout in milliseconds.
    - -

    Definition at line 405 of file LD2410Async.h.

    -
    405{ return inactivityHandlingTimeoutMs; };
    -
    -
    -
    - -

    ◆ isConfigModeEnabled()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool LD2410Async::isConfigModeEnabled () const
    -
    -inline
    -
    - -

    Detects if config mode is enabled.

    -
    Returns
    true if config mode is anabled, false if config mode is disabled
    - -

    Definition at line 724 of file LD2410Async.h.

    -
    724 {
    -
    725 return configModeEnabled;
    -
    726 };
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    -
    -
    - -

    ◆ isEngineeringModeEnabled()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool LD2410Async::isEngineeringModeEnabled () const
    -
    -inline
    -
    - -

    Detects if engineering mode is enabled.

    -
    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    - -

    Definition at line 776 of file LD2410Async.h.

    -
    776 {
    - -
    778 };
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    -
    -
    - -

    ◆ isInactivityHandlingEnabled()

    - -
    -
    - - - - - -
    - - - - - - - -
    bool LD2410Async::isInactivityHandlingEnabled () const
    -
    -inline
    -
    - -

    Returns whether inactivity handling is currently enabled.

    -
    Returns
    true if inactivity handling is enabled, false otherwise.
    - -

    Definition at line 381 of file LD2410Async.h.

    -
    381{ return inactivityHandlingEnabled; };
    -
    -
    -
    - -

    ◆ rebootAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::rebootAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Reboots the sensor.

    -

    After reboot, the sensor stops responding for a few seconds. Config and engineering mode are reset.

    -
    Note
    The reboot of the sensor takes place after the ACK has been sent.
    -
    Parameters
    - - - -
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1433 of file LD2410Async.cpp.

    -
    1433 {
    -
    1434
    -
    1435
    - -
    1437 DEBUG_PRINTLN("Reboot");
    -
    1438
    -
    1439 if (asyncIsBusy()) return false;
    -
    1440
    -
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    -
    1442}
    -
    -
    -
    - -

    ◆ registerConfigChangedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for configuration changes.

    -

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 212 of file LD2410Async.cpp.

    -
    212 {
    -
    213 configChangedCallbackUserData = userData;
    -
    214 configChangedCallback = callback;
    -
    215}
    -
    -
    -
    - -

    ◆ registerConfigUpdateReceivedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for configuration data updates.

    -

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 206 of file LD2410Async.cpp.

    -
    206 {
    -
    207
    -
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    -
    209 configUpdateReceivedReceivedCallback = callback;
    -
    210}
    -
    -
    -
    - -

    ◆ registerDetectionDataReceivedCallback()

    - -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for new detection data.

    -

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 201 of file LD2410Async.cpp.

    -
    201 {
    -
    202 detectionDataCallback = callback;
    -
    203 detectionDataCallbackUserData = userData;
    -
    204}
    -
    -
    -
    - -

    ◆ requestAllConfigSettingsAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestAllConfigSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests all configuration settings from the sensor.

    -

    This triggers a sequence of queries that retrieves and updates:

      -
    • Gate parameters (sensitivities, max gates, timeout).
    • -
    • Distance resolution setting.
    • -
    • Auxiliary light/output control settings.
    • -
    -

    The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

    -
    Note
    This is a high-level method that involves multiple commands.
    -
    -Requires config mode. This method will manage mode switching automatically.
    -
    -If another async command is already pending, the request fails.
    -

    -Example: Refresh config data

    -
    radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.println("All config data refreshed:");
    -
    sender->getConfigDataRef().print();
    -
    }
    -
    });
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    void print() const
    Debug helper: print configuration contents to Serial.
    -

    -Do:

    -
      -
    • Use this after connecting to ensure configData is fully populated.
    • -
    • Call before modifying config if you’re unsure of current values.
    • -
    -

    -Don’t:

    -
      -
    • Expect it to succeed if another async command is still running.
    • -
    -
    Parameters
    - - - -
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when all config data has been received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1082 of file LD2410Async.cpp.

    -
    1082 {
    - -
    1084 DEBUG_PRINTLN("Request all config data");
    -
    1085
    -
    1086 if (asyncIsBusy()) return false;
    -
    1087
    -
    1088 if (!resetCommandSequence()) return false;
    -
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    -
    1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
    -
    1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
    -
    1092
    -
    1093 return executeCommandSequenceAsync(callback, userData);
    -
    1094
    -
    1095}
    -
    constexpr byte requestDistanceResolutionCommandData[4]
    Definition LD2410Defs.h:31
    -
    constexpr byte requestAuxControlSettingsCommandData[4]
    Definition LD2410Defs.h:65
    -
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    -
    -
    -
    - -

    ◆ requestAllStaticDataAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestAllStaticDataAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests all static information from the sensor.

    -

    This includes:

      -
    • Firmware version string.
    • -
    • Bluetooth MAC address (numeric and string form).
    • -
    -

    The values are written into the public members firmware, mac, and macString.

    -
    Note
    This is a high-level method that involves multiple commands.
    -
    -Requires config mode. Managed automatically by this method.
    -
    -If another async command is already pending, the request fails.
    -

    -Example: Retrieve firmware and MAC

    -
    radar.requestAllStaticDataAsync([](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    Serial.print("Firmware: ");
    -
    Serial.println(sender->firmware);
    -
    -
    Serial.print("MAC: ");
    -
    Serial.println(sender->macString);
    -
    }
    -
    });
    -
    String firmware
    Firmware version string of the radar.
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -

    -Do:

    -
      -
    • Use after initialization to log firmware version and MAC.
    • -
    • Useful for debugging or inventory identification.
    • -
    -

    -Don’t:

    -
      -
    • Expect frequently changing data — this is static information.
    • -
    -
    Parameters
    - - - -
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when static data is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1067 of file LD2410Async.cpp.

    -
    1067 {
    - -
    1069 DEBUG_PRINTLN("Request all static data");
    -
    1070
    -
    1071 if (asyncIsBusy()) return false;
    -
    1072
    -
    1073
    -
    1074 if (!resetCommandSequence()) return false;
    -
    1075
    -
    1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
    -
    1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
    -
    1078
    -
    1079 return executeCommandSequenceAsync(callback, userData);
    -
    1080}
    -
    constexpr byte requestMacAddressCommandData[6]
    Definition LD2410Defs.h:25
    -
    constexpr byte requestFirmwareCommandData[4]
    Definition LD2410Defs.h:28
    -
    -
    -
    - -

    ◆ requestAutoConfigStatusAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestAutoConfigStatusAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the current status of the auto-config routine.

    -

    The status is written into the member variable autoConfigStatus:

      -
    • NOT_IN_PROGRESS → no auto-config running.
    • -
    • IN_PROGRESS → auto-config is currently running.
    • -
    • COMPLETED → auto-config finished (success or failure).
    • -
    -
    Note
    Requires config mode. This method will manage mode switching automatically.
    -
    -If another async command is already pending, this call fails.
    -

    -Example: Check auto-config status

    -
    radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    - -
    byte) {
    -
    if (result == AsyncCommandResult::SUCCESS) {
    -
    switch (sender->autoConfigStatus) {
    -
    case AutoConfigStatus::NOT_IN_PROGRESS:
    -
    Serial.println("Auto-config not running.");
    -
    break;
    -
    case AutoConfigStatus::IN_PROGRESS:
    -
    Serial.println("Auto-config in progress...");
    -
    break;
    -
    case AutoConfigStatus::COMPLETED:
    -
    Serial.println("Auto-config completed.");
    -
    break;
    -
    default:
    -
    Serial.println("Unknown auto-config status.");
    -
    }
    -
    } else {
    -
    Serial.println("Failed to request auto-config status.");
    -
    }
    -
    });
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -

    -Do:

    -
      -
    • Use this after beginAutoConfigAsync() to track progress.
    • -
    • Use autoConfigStatus for decision-making in your logic.
    • -
    -

    -Don’t:

    -
      -
    • Assume COMPLETED means success — thresholds should still be verified.
    • -
    -
    Parameters
    - - - -
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the sensor replies or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1051 of file LD2410Async.cpp.

    -
    1051 {
    - -
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    -
    1054
    -
    1055 if (asyncIsBusy()) return false;
    -
    1056
    -
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    -
    1058}
    -
    constexpr byte requestAutoConfigStatusCommandData[4]
    Definition LD2410Defs.h:74
    -
    -
    -
    - -

    ◆ requestAuxControlSettingsAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestAuxControlSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the current auxiliary control settings.

    -

    Fills configData.lightControl, configData.lightThreshold, and configData.outputControl.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    Parameters
    - - - -
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1032 of file LD2410Async.cpp.

    -
    1032 {
    - -
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    -
    1035
    -
    1036 if (asyncIsBusy()) return false;
    -
    1037
    -
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    -
    1039}
    -
    -
    -
    - -

    ◆ requestBluetoothMacAddressAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestBluetoothMacAddressAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the bluetooth mac address.

    -
    Note
    The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    -
    Parameters
    - - - -
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    -
    -
    -
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    - -

    Definition at line 947 of file LD2410Async.cpp.

    -
    947 {
    - -
    949 DEBUG_PRINTLN("Request Mac Address");
    -
    950 if (asyncIsBusy()) return false;
    -
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    -
    952}
    -
    -
    -
    - -

    ◆ requestDistanceResolutioncmAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestDistanceResolutioncmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the current distance resolution setting from the sensor.

    -

    The result is written into configData.distanceResolution.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    Parameters
    - - - -
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 1009 of file LD2410Async.cpp.

    -
    1009 {
    - -
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    -
    1012 if (asyncIsBusy()) return false;
    -
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    -
    1014}
    -
    -
    -
    - -

    ◆ requestFirmwareAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestFirmwareAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the firmware version of the sensor.

    -

    Populates the firmware string when the ACK response arrives.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    Parameters
    - - - -
    callbackCallback fired when firmware info is received.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 884 of file LD2410Async.cpp.

    -
    884 {
    - -
    886 DEBUG_PRINTLN("Request Firmware");
    -
    887
    -
    888 if (asyncIsBusy()) return false;
    -
    889
    -
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    -
    891}
    -
    -
    -
    - -

    ◆ requestGateParametersAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::requestGateParametersAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Requests the current gate parameters from the sensor.

    -

    Retrieves sensitivities, max gates, and timeout settings, which will be written into configData.

    -
    Note
    Requires config mode. The method will manage mode switching if needed.
    -
    -If an async command is already pending, the request is rejected.
    -
    Parameters
    - - - -
    callbackCallback fired when data is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 824 of file LD2410Async.cpp.

    -
    824 {
    - -
    826 DEBUG_PRINTLN("Request Gate Parameters");
    -
    827 if (asyncIsBusy()) return false;
    -
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    -
    829}
    -
    -
    -
    - -

    ◆ restoreFactorySettingsAsync()

    - -
    -
    - - - - - - - - - - - -
    bool LD2410Async::restoreFactorySettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    -
    - -

    Restores factory settings of the sensor.

    -

    Restored settings only become active after a reboot.

    -
    Note
    Requires config mode. Will be managed automatically.
    -
    -After execution, call rebootAsync() to activate changes.
    -
    Parameters
    - - - -
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    -
    -
    -
    Returns
    true if the command was sent, false otherwise.
    - -

    Definition at line 921 of file LD2410Async.cpp.

    -
    921 {
    - -
    923 DEBUG_PRINTLN("Restore Factory Settings");
    -
    924
    -
    925 if (asyncIsBusy()) return false;
    -
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    -
    927}
    -
    constexpr byte restoreFactorSettingsCommandData[4]
    Definition LD2410Defs.h:41
    -
    -
    -
    - -

    ◆ setAsyncCommandTimeoutMs()

    - -
    -
    - - - - - -
    - - - - - - - -
    void LD2410Async::setAsyncCommandTimeoutMs (unsigned long timeoutMs)
    -
    -inline
    -
    - -

    Sets the timeout for async command callbacks.

    -

    #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.

    -
    Parameters
    - - -
    timeoutMsTimeout in milliseconds (default 6000 ms).
    -
    -
    - -

    Definition at line 657 of file LD2410Async.h.

    -
    657{ asyncCommandTimeoutMs = timeoutMs; }
    -
    -
    -
    - -

    ◆ setInactivityHandling()

    - -
    -
    - - - - - - - -
    void LD2410Async::setInactivityHandling (bool enable)
    -
    - -

    Enables or disables automatic inactivity handling of the sensor.

    -

    When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

      -
    1. It first tries to exit config mode (even if configModeEnabled is false).
    2. -
    3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
    4. -
    -

    This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

    -
    Parameters
    - - -
    enablePass true to enable inactivity handling, false to disable it.
    -
    -
    - -

    Definition at line 1521 of file LD2410Async.cpp.

    -
    1521 {
    -
    1522 inactivityHandlingEnabled = enable;
    -
    1523}
    -
    -
    -
    - -

    ◆ setInactivityTimeoutMs()

    - -
    -
    - - - - - -
    - - - - - - - -
    void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
    -
    -inline
    -
    - -

    Sets the timeout period for inactivity handling.

    -

    If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

    -

    Default is 60000 ms (1 minute).

    -
    Parameters
    - - -
    timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    -
    -
    - -

    Definition at line 396 of file LD2410Async.h.

    -
    396{ inactivityHandlingTimeoutMs = timeoutMs; };
    -
    -
    -
    -

    Member Data Documentation

    - -

    ◆ autoConfigStatus

    - -
    -
    - - - - -
    LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
    -
    - -

    Current status of the auto-configuration routine.

    -

    Updated by requestAutoConfigStatusAsync().

    - -

    Definition at line 272 of file LD2410Async.h.

    - -
    -
    - -

    ◆ bufferSize

    - -
    -
    - - - - -
    unsigned long LD2410Async::bufferSize = 0
    -
    - -

    Buffer size reported by the radar protocol.

    -

    Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

    - -

    Definition at line 206 of file LD2410Async.h.

    - -
    -
    - -

    ◆ configData

    - -
    -
    - - - - -
    LD2410Types::ConfigData LD2410Async::configData
    -
    - -

    Current configuration parameters of the radar.

    -

    Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

    -

    Structure will contain only uninitilaized data if config data is not queried explicitly.

    - -

    Definition at line 184 of file LD2410Async.h.

    - -
    -
    - -

    ◆ configModeEnabled

    - -
    -
    - - - - -
    bool LD2410Async::configModeEnabled = false
    -
    - -

    True if the sensor is currently in config mode.

    -

    Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

    - -

    Definition at line 217 of file LD2410Async.h.

    - -
    -
    - -

    ◆ detectionData

    - -
    -
    - - - - -
    LD2410Types::DetectionData LD2410Async::detectionData
    -
    - -

    Latest detection results from the radar.

    -

    Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

    - -

    Definition at line 169 of file LD2410Async.h.

    - -
    -
    - -

    ◆ engineeringModeEnabled

    - -
    -
    - - - - -
    bool LD2410Async::engineeringModeEnabled = false
    -
    - -

    True if the sensor is currently in engineering mode.

    -

    In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

    -

    Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

    - -

    Definition at line 230 of file LD2410Async.h.

    - -
    -
    - -

    ◆ firmware

    - -
    -
    - - - - -
    String LD2410Async::firmware = ""
    -
    - -

    Firmware version string of the radar.

    -

    Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

    - -

    Definition at line 241 of file LD2410Async.h.

    - -
    -
    - -

    ◆ mac

    - -
    -
    - - - - -
    byte LD2410Async::mac[6]
    -
    - -

    MAC address of the radar’s Bluetooth module (if available).

    -

    Populated by requestBluetoothMacAddressAsync().

    - -

    Definition at line 251 of file LD2410Async.h.

    - -
    -
    - -

    ◆ macString

    - -
    -
    - - - - -
    String LD2410Async::macString = ""
    -
    - -

    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

    -

    Populated by requestBluetoothMacAddressAsync().

    - -

    Definition at line 261 of file LD2410Async.h.

    - -
    -
    - -

    ◆ protocolVersion

    - -
    -
    - - - - -
    unsigned long LD2410Async::protocolVersion = 0
    -
    - -

    Protocol version reported by the radar.

    -

    This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

    - -

    Definition at line 195 of file LD2410Async.h.

    - -
    -
    -
    The documentation for this class was generated from the following files:
      +

    The documentation for this class was generated from the following files: diff --git a/docu/classLD2410Async.js b/docu/classLD2410Async.js index b071293..f047969 100644 --- a/docu/classLD2410Async.js +++ b/docu/classLD2410Async.js @@ -1,74 +1,74 @@ var classLD2410Async = [ - [ "AsyncCommandCallback", "classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603", null ], - [ "DetectionDataCallback", "classLD2410Async.html#a19278199112e9358e96a192056e58e81", null ], - [ "GenericCallback", "classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383", null ], - [ "AsyncCommandResult", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab", [ - [ "SUCCESS", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], - [ "FAILED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], - [ "TIMEOUT", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], - [ "CANCELED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + [ "AsyncCommandCallback", "group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "DetectionDataCallback", "group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81", null ], + [ "GenericCallback", "group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383", null ], + [ "AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ + [ "SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] ] ], - [ "LD2410Async", "classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900", null ], - [ "asyncCancel", "classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1", null ], - [ "asyncIsBusy", "classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153", null ], - [ "begin", "classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024", null ], - [ "beginAutoConfigAsync", "classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc", null ], - [ "configureAllConfigSettingsAsync", "classLD2410Async.html#a509170bfc50580131d0c72f5c91daede", null ], - [ "configureAuxControlSettingsAsync", "classLD2410Async.html#a90e3bc56482783249d966a670310bffd", null ], - [ "configureBaudRateAsync", "classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], - [ "configureBaudRateAsync", "classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a", null ], - [ "configureBluetoothPasswordAsync", "classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22", null ], - [ "configureBluetoothPasswordAsync", "classLD2410Async.html#abfe79850fa3e040a12de72ea99747266", null ], - [ "configureDefaultBluetoothPasswordAsync", "classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], - [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a9493caef9e22a89445741da019b99213", null ], - [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38", null ], - [ "configureDistanceResolution75cmAsync", "classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82", null ], - [ "configureDistanceResolutionAsync", "classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250", null ], - [ "configureMaxGateAndNoOneTimeoutAsync", "classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a", null ], - [ "configuresDistanceResolution20cmAsync", "classLD2410Async.html#a01705b527bc80949417de15b6e95140c", null ], - [ "disableBluetoothAsync", "classLD2410Async.html#addcbab1709f2a80571563609f4a23862", null ], - [ "disableConfigModeAsync", "classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c", null ], - [ "disableEngineeringModeAsync", "classLD2410Async.html#a377464026350140b0277369a13e8c1d3", null ], - [ "disableInactivityHandling", "classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2", null ], - [ "enableBluetoothAsync", "classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973", null ], - [ "enableConfigModeAsync", "classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9", null ], - [ "enableEngineeringModeAsync", "classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], - [ "enableInactivityHandling", "classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3", null ], - [ "end", "classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54", null ], - [ "getAsyncCommandTimeoutMs", "classLD2410Async.html#a93962bd109f67775ea3420596207b23a", null ], - [ "getConfigData", "classLD2410Async.html#a54388c929cea610f92891def29db66a5", null ], - [ "getConfigDataRef", "classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13", null ], - [ "getDetectionData", "classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50", null ], - [ "getDetectionDataRef", "classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090", null ], - [ "getInactivityTimeoutMs", "classLD2410Async.html#a74138af198ac827349a25e122277803f", null ], - [ "isConfigModeEnabled", "classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48", null ], - [ "isEngineeringModeEnabled", "classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19", null ], - [ "isInactivityHandlingEnabled", "classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6", null ], - [ "rebootAsync", "classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235", null ], - [ "registerConfigChangedCallback", "classLD2410Async.html#a714e62534394a52243f8f50fd58726f9", null ], - [ "registerConfigUpdateReceivedCallback", "classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285", null ], - [ "registerDetectionDataReceivedCallback", "classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282", null ], - [ "requestAllConfigSettingsAsync", "classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38", null ], - [ "requestAllStaticDataAsync", "classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6", null ], - [ "requestAutoConfigStatusAsync", "classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6", null ], - [ "requestAuxControlSettingsAsync", "classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb", null ], - [ "requestBluetoothMacAddressAsync", "classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be", null ], - [ "requestDistanceResolutioncmAsync", "classLD2410Async.html#a3260f74672079a7200f210e4ffde1046", null ], - [ "requestFirmwareAsync", "classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21", null ], - [ "requestGateParametersAsync", "classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6", null ], - [ "restoreFactorySettingsAsync", "classLD2410Async.html#aadb841697a992c1bf203944211bd8659", null ], - [ "setAsyncCommandTimeoutMs", "classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325", null ], - [ "setInactivityHandling", "classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76", null ], - [ "setInactivityTimeoutMs", "classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4", null ], - [ "autoConfigStatus", "classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694", null ], - [ "bufferSize", "classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1", null ], - [ "configData", "classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02", null ], - [ "configModeEnabled", "classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7", null ], - [ "detectionData", "classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8", null ], - [ "engineeringModeEnabled", "classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7", null ], - [ "firmware", "classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf", null ], - [ "mac", "classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e", null ], - [ "macString", "classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1", null ], - [ "protocolVersion", "classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b", null ] + [ "LD2410Async", "group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900", null ], + [ "asyncCancel", "group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1", null ], + [ "asyncIsBusy", "group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153", null ], + [ "begin", "group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], + [ "beginAutoConfigAsync", "group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc", null ], + [ "configureAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede", null ], + [ "configureAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd", null ], + [ "configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], + [ "configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a", null ], + [ "configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22", null ], + [ "configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266", null ], + [ "configureDefaultBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], + [ "configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213", null ], + [ "configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38", null ], + [ "configureDistanceResolution75cmAsync", "group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82", null ], + [ "configureDistanceResolutionAsync", "group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250", null ], + [ "configureMaxGateAndNoOneTimeoutAsync", "group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a", null ], + [ "configuresDistanceResolution20cmAsync", "group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c", null ], + [ "disableBluetoothAsync", "group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862", null ], + [ "disableConfigModeAsync", "group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c", null ], + [ "disableEngineeringModeAsync", "group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3", null ], + [ "disableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2", null ], + [ "enableBluetoothAsync", "group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973", null ], + [ "enableConfigModeAsync", "group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9", null ], + [ "enableEngineeringModeAsync", "group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], + [ "enableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "end", "group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "getAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a", null ], + [ "getConfigData", "group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5", null ], + [ "getConfigDataRef", "group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13", null ], + [ "getDetectionData", "group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50", null ], + [ "getDetectionDataRef", "group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090", null ], + [ "getInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f", null ], + [ "isConfigModeEnabled", "group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48", null ], + [ "isEngineeringModeEnabled", "group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19", null ], + [ "isInactivityHandlingEnabled", "group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6", null ], + [ "rebootAsync", "group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235", null ], + [ "registerConfigChangedCallback", "group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9", null ], + [ "registerConfigUpdateReceivedCallback", "group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "registerDetectionDataReceivedCallback", "group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282", null ], + [ "requestAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38", null ], + [ "requestAllStaticDataAsync", "group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6", null ], + [ "requestAutoConfigStatusAsync", "group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6", null ], + [ "requestAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb", null ], + [ "requestBluetoothMacAddressAsync", "group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be", null ], + [ "requestDistanceResolutioncmAsync", "group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046", null ], + [ "requestFirmwareAsync", "group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21", null ], + [ "requestGateParametersAsync", "group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6", null ], + [ "restoreFactorySettingsAsync", "group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659", null ], + [ "setAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325", null ], + [ "setInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76", null ], + [ "setInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ], + [ "autoConfigStatus", "group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "bufferSize", "group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "configData", "group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02", null ], + [ "configModeEnabled", "group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "detectionData", "group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8", null ], + [ "engineeringModeEnabled", "group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "firmware", "group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "mac", "group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e", null ], + [ "macString", "group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "protocolVersion", "group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b", null ] ]; \ No newline at end of file diff --git a/docu/dir_107e309f9f293897177ec4de6cf5a764.html b/docu/dir_107e309f9f293897177ec4de6cf5a764.html new file mode 100644 index 0000000..3939e0e --- /dev/null +++ b/docu/dir_107e309f9f293897177ec4de6cf5a764.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: dox Directory Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    dox Directory Reference
    +
    +
    +
    +
    + + + + diff --git a/docu/dir_30f1c3aaa201f9bae8f75919357e181e.html b/docu/dir_30f1c3aaa201f9bae8f75919357e181e.html new file mode 100644 index 0000000..91eea12 --- /dev/null +++ b/docu/dir_30f1c3aaa201f9bae8f75919357e181e.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: basicPresenceDetection Directory Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    basicPresenceDetection Directory Reference
    +
    +
    + + + + +

    +Files

     basicPresenceDetection.ino
     
    +
    +
    + + + + diff --git a/docu/dir_30f1c3aaa201f9bae8f75919357e181e.js b/docu/dir_30f1c3aaa201f9bae8f75919357e181e.js new file mode 100644 index 0000000..36e94b8 --- /dev/null +++ b/docu/dir_30f1c3aaa201f9bae8f75919357e181e.js @@ -0,0 +1,4 @@ +var dir_30f1c3aaa201f9bae8f75919357e181e = +[ + [ "basicPresenceDetection.ino", "basicPresenceDetection_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_50142b4b88c8e10a7393418c3979093f.html b/docu/dir_50142b4b88c8e10a7393418c3979093f.html new file mode 100644 index 0000000..a53d209 --- /dev/null +++ b/docu/dir_50142b4b88c8e10a7393418c3979093f.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: receiveData Directory Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    receiveData Directory Reference
    +
    +
    + + + + +

    +Files

     receiveData.ino
     
    +
    +
    + + + + diff --git a/docu/dir_50142b4b88c8e10a7393418c3979093f.js b/docu/dir_50142b4b88c8e10a7393418c3979093f.js new file mode 100644 index 0000000..63809bc --- /dev/null +++ b/docu/dir_50142b4b88c8e10a7393418c3979093f.js @@ -0,0 +1,4 @@ +var dir_50142b4b88c8e10a7393418c3979093f = +[ + [ "receiveData.ino", "receiveData_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html b/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html new file mode 100644 index 0000000..bc1b007 --- /dev/null +++ b/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: changeConfig Directory Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    changeConfig Directory Reference
    +
    +
    + + + + +

    +Files

     changeConfig.ino
     
    +
    +
    + + + + diff --git a/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.js b/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.js new file mode 100644 index 0000000..a7b3b6b --- /dev/null +++ b/docu/dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.js @@ -0,0 +1,4 @@ +var dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe = +[ + [ "changeConfig.ino", "changeConfig_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/dir_595d66bff896d8b55fe1899c99f27ac3.html b/docu/dir_595d66bff896d8b55fe1899c99f27ac3.html new file mode 100644 index 0000000..845f80b --- /dev/null +++ b/docu/dir_595d66bff896d8b55fe1899c99f27ac3.html @@ -0,0 +1,119 @@ + + + + + + + +LD2410Async: changeDistanceResolution Directory Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    changeDistanceResolution Directory Reference
    +
    +
    + + + + +

    +Files

     changeDistanceResolution.ino
     
    +
    +
    + + + + diff --git a/docu/dir_595d66bff896d8b55fe1899c99f27ac3.js b/docu/dir_595d66bff896d8b55fe1899c99f27ac3.js new file mode 100644 index 0000000..9e803c5 --- /dev/null +++ b/docu/dir_595d66bff896d8b55fe1899c99f27ac3.js @@ -0,0 +1,4 @@ +var dir_595d66bff896d8b55fe1899c99f27ac3 = +[ + [ "changeDistanceResolution.ino", "changeDistanceResolution_8ino.html", null ] +]; \ No newline at end of file diff --git a/docu/doxygen_crawl.html b/docu/doxygen_crawl.html index 054c3b6..eb1c06e 100644 --- a/docu/doxygen_crawl.html +++ b/docu/doxygen_crawl.html @@ -18,6 +18,7 @@ + @@ -28,6 +29,18 @@ + + + + + + + + + + + + @@ -37,12 +50,14 @@ - - - - + + + + + + @@ -199,121 +214,52 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -323,6 +269,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -387,41 +450,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -461,5 +489,6 @@ + diff --git a/docu/files.html b/docu/files.html index 9e32fdd..925ca02 100644 --- a/docu/files.html +++ b/docu/files.html @@ -102,20 +102,21 @@ diff --git a/docu/files_dup.js b/docu/files_dup.js index e921055..2a3aa96 100644 --- a/docu/files_dup.js +++ b/docu/files_dup.js @@ -1,9 +1,10 @@ var files_dup = [ - [ "basicPresenceDetection", "dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html", "dir_094f9dbbdfe7cfb87799ec39fb2dbfcf" ], - [ "changeConfig", "dir_0877bab65d936efc50d6280cdd9a4b61.html", "dir_0877bab65d936efc50d6280cdd9a4b61" ], - [ "changeDistanceResolution", "dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html", "dir_cbdfb87722f5bb03bbdd3fbaa888c5cd" ], - [ "receiveData", "dir_214001d413268a160f69364489f85961.html", "dir_214001d413268a160f69364489f85961" ], + [ "basicPresenceDetection", "dir_30f1c3aaa201f9bae8f75919357e181e.html", "dir_30f1c3aaa201f9bae8f75919357e181e" ], + [ "changeConfig", "dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html", "dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe" ], + [ "changeDistanceResolution", "dir_595d66bff896d8b55fe1899c99f27ac3.html", "dir_595d66bff896d8b55fe1899c99f27ac3" ], + [ "dox", "dir_107e309f9f293897177ec4de6cf5a764.html", null ], + [ "receiveData", "dir_50142b4b88c8e10a7393418c3979093f.html", "dir_50142b4b88c8e10a7393418c3979093f" ], [ "LD2410Async.cpp", "LD2410Async_8cpp.html", "LD2410Async_8cpp" ], [ "LD2410Async.h", "LD2410Async_8h.html", "LD2410Async_8h" ], [ "LD2410CommandBuilder.h", "LD2410CommandBuilder_8h.html", "LD2410CommandBuilder_8h" ], diff --git a/docu/functions.html b/docu/functions.html index f1c5fa3..a9872a0 100644 --- a/docu/functions.html +++ b/docu/functions.html @@ -100,45 +100,45 @@
    Here is a list of all class members with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    diff --git a/docu/functions_func.html b/docu/functions_func.html index 2b7980f..f5089ab 100644 --- a/docu/functions_func.html +++ b/docu/functions_func.html @@ -100,69 +100,69 @@
    Here is a list of all functions with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    - e -

    - g -

    - i -

    - l -

    @@ -172,26 +172,26 @@

    - p -

    diff --git a/docu/functions_type.html b/docu/functions_type.html index 59e5475..9ae3514 100644 --- a/docu/functions_type.html +++ b/docu/functions_type.html @@ -98,9 +98,9 @@
    Here is a list of all typedefs with links to the classes they belong to:
    diff --git a/docu/functions_vars.html b/docu/functions_vars.html index f748caf..7da165d 100644 --- a/docu/functions_vars.html +++ b/docu/functions_vars.html @@ -100,24 +100,24 @@
    Here is a list of all variables with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    • detectedDistance : LD2410Types::DetectionData
    • -
    • detectionData : LD2410Async
    • +
    • detectionData : LD2410Async
    • distanceGateMotionSensitivity : LD2410Types::ConfigData
    • distanceGateStationarySensitivity : LD2410Types::ConfigData
    • distanceResolution : LD2410Types::ConfigData
    • @@ -126,12 +126,12 @@

      - d -

        - e -

        - f -

        @@ -143,8 +143,8 @@

        - l -

          - m -

            -
          • mac : LD2410Async
          • -
          • macString : LD2410Async
          • +
          • mac : LD2410Async
          • +
          • macString : LD2410Async
          • maxMotionDistanceGate : LD2410Types::ConfigData
          • maxStationaryDistanceGate : LD2410Types::ConfigData
          • movingPresenceDetected : LD2410Types::DetectionData
          • @@ -169,7 +169,7 @@

            - o -

              - p -

              diff --git a/docu/group__LD2410Async__AsyncCommands.html b/docu/group__LD2410Async__AsyncCommands.html new file mode 100644 index 0000000..34b4333 --- /dev/null +++ b/docu/group__LD2410Async__AsyncCommands.html @@ -0,0 +1,300 @@ + + + + + + + +LD2410Async: Async Commands + + + + + + + + + + + + + + + +
              +
              + + + + + + +
              +
              LD2410Async +
              +
              Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
              +
              +
              + + + + + + + + +
              +
              + +
              +
              +
              + +
              + +
              +
              + + +
              +
              +
              +
              +
              +
              Loading...
              +
              Searching...
              +
              No Matches
              +
              +
              +
              +
              + +
              + +
              Async Commands
              +
              +
              + + + + + + + + + + + + + + + + + +

              +Functions

              bool LD2410Async::asyncIsBusy ()
               Checks if an asynchronous command is currently pending.
               
              void LD2410Async::asyncCancel ()
               Cancels any pending asynchronous command or sequence.
               
              void LD2410Async::setAsyncCommandTimeoutMs (unsigned long timeoutMs)
               Sets the timeout for async command callbacks.
               
              unsigned long LD2410Async::getAsyncCommandTimeoutMs () const
               Returns the current async command timeout.
               
              bool LD2410Async::disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
               Disables engineering mode.
               
              +

              Detailed Description

              +

              Commands with async behaviour. These commands return immediately and the result of the command is provided later via a callback. The return value of these methods indicates whther the command could be sent to the sensor or if there was a problem. When commands cant be executed, the causes are either another pending async command (only one async command allowed at a time) or due to invalid parameters. *

              +

              Function Documentation

              + +

              ◆ asyncCancel()

              + +
              +
              + + + + + + + +
              void LD2410Async::asyncCancel ()
              +
              + +

              Cancels any pending asynchronous command or sequence.

              +

              If canceled, the callback of the running command is invoked with result type CANCELED. After canceling, the sensor may remain in config mode — consider disabling config mode or rebooting to return to detection operation.

              + +

              Definition at line 534 of file LD2410Async.cpp.

              +
              534 {
              +
              535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
              +
              536}
              +
              @ CANCELED
              Command was canceled by the user before completion.
              +
              +
              +
              + +

              ◆ asyncIsBusy()

              + +
              +
              + + + + + + + +
              bool LD2410Async::asyncIsBusy ()
              +
              + +

              Checks if an asynchronous command is currently pending.

              +
              Returns
              true if there is an active command awaiting an ACK, false if the library is idle.
              + +

              Definition at line 594 of file LD2410Async.cpp.

              +
              594 {
              +
              595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
              +
              596}
              +
              +
              +
              + +

              ◆ disableEngineeringModeAsync()

              + +
              +
              + + + + + + + + + + + +
              bool LD2410Async::disableEngineeringModeAsync (AsyncCommandCallback callback,
              byte userData = 0 )
              +
              + +

              Disables engineering mode.

              +

              Returns sensor reporting to basic detection results only.

              +
              Note
              Requires config mode. Will be enabled automatically if not active.
              +
              Parameters
              + + + +
              callbackCallback fired when ACK is received or on failure.
              userDataOptional value passed to the callback.
              +
              +
              +
              Returns
              true if the command was sent, false otherwise.
              + +

              Definition at line 838 of file LD2410Async.cpp.

              +
              838 {
              + +
              840 DEBUG_PRINTLN("Disable EngineeringMode");
              +
              841 if (asyncIsBusy()) return false;
              +
              842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
              +
              843}
              +
              #define DEBUG_PRINT_MILLIS
              Definition LD2410Debug.h:48
              +
              #define DEBUG_PRINTLN(...)
              Definition LD2410Debug.h:50
              +
              bool asyncIsBusy()
              Checks if an asynchronous command is currently pending.
              +
              constexpr byte engineeringModeDisableCommandData[4]
              Definition LD2410Defs.h:62
              +
              +
              +
              + +

              ◆ getAsyncCommandTimeoutMs()

              + +
              +
              + + + + + +
              + + + + + + + +
              unsigned long LD2410Async::getAsyncCommandTimeoutMs () const
              +
              +inline
              +
              + +

              Returns the current async command timeout.

              +
              Returns
              Timeout in milliseconds.
              + +

              Definition at line 666 of file LD2410Async.h.

              +
              666{ return asyncCommandTimeoutMs; }
              +
              +
              +
              + +

              ◆ setAsyncCommandTimeoutMs()

              + +
              +
              + + + + + +
              + + + + + + + +
              void LD2410Async::setAsyncCommandTimeoutMs (unsigned long timeoutMs)
              +
              +inline
              +
              + +

              Sets the timeout for async command callbacks.

              +

              #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.

              +
              Parameters
              + + +
              timeoutMsTimeout in milliseconds (default 6000 ms).
              +
              +
              + +

              Definition at line 657 of file LD2410Async.h.

              +
              657{ asyncCommandTimeoutMs = timeoutMs; }
              +
              +
              +
              +
              +
              + + + + diff --git a/docu/group__LD2410Async__AsyncCommands.js b/docu/group__LD2410Async__AsyncCommands.js new file mode 100644 index 0000000..b6185af --- /dev/null +++ b/docu/group__LD2410Async__AsyncCommands.js @@ -0,0 +1,8 @@ +var group__LD2410Async__AsyncCommands = +[ + [ "LD2410Async::asyncCancel", "group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1", null ], + [ "LD2410Async::asyncIsBusy", "group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153", null ], + [ "LD2410Async::disableEngineeringModeAsync", "group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3", null ], + [ "LD2410Async::getAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a", null ], + [ "LD2410Async::setAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Bluetooth.html b/docu/group__LD2410Async__Bluetooth.html new file mode 100644 index 0000000..e93dbf6 --- /dev/null +++ b/docu/group__LD2410Async__Bluetooth.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: Bluetooth + + + + + + + + + + + + + + + +
              +
              + + + + + + +
              +
              LD2410Async +
              +
              Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
              +
              +
              + + + + + + + + +
              +
              + +
              +
              +
              + +
              + +
              +
              + + +
              +
              +
              +
              +
              +
              Loading...
              +
              Searching...
              +
              No Matches
              +
              +
              +
              +
              + +
              +
              Bluetooth
              +
              +
              +

              Bluetooth related methods and data.

              +
              +
              + + + + diff --git a/docu/group__LD2410Async__Callbacks.html b/docu/group__LD2410Async__Callbacks.html index 4100da9..4550976 100644 --- a/docu/group__LD2410Async__Callbacks.html +++ b/docu/group__LD2410Async__Callbacks.html @@ -5,7 +5,7 @@ -LD2410Async: Callback Registration +LD2410Async: Callbacks @@ -98,136 +98,72 @@
              -
              Callback Registration
              +Typedefs
              +
              Callbacks
    - - - - - - - - - - + + + + + + +

    -Functions

    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     

    +Typedefs

    typedef void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     

    Detailed Description

    -

    Registrierung von Callback-Funktionen.

    -

    Function Documentation

    - -

    ◆ registerConfigChangedCallback()

    +

    Callback related definitions and methods.

    +

    Typedef Documentation

    + +

    ◆ AsyncCommandCallback

    - - - - - - - - +
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    -

    Registers a callback for configuration changes.

    -

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    +

    Callback signature for asynchronous command completion.

    Parameters
    - - + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    senderPointer to the LD2410Async instance that triggered the callback.
    resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    userDataUser-specified value passed when registering the callback.
    -

    Definition at line 212 of file LD2410Async.cpp.

    -
    212 {
    -
    213 configChangedCallbackUserData = userData;
    -
    214 configChangedCallback = callback;
    -
    215}
    -
    -
    -
    - -

    ◆ registerConfigUpdateReceivedCallback()

    +

    Definition at line 118 of file LD2410Async.h.

    -
    -
    - - - - - - - - - - - -
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    -
    - -

    Registers a callback for configuration data updates.

    -

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    -
    Parameters
    - - - -
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    -
    -
    - -

    Definition at line 206 of file LD2410Async.cpp.

    -
    206 {
    -
    207
    -
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    -
    209 configUpdateReceivedReceivedCallback = callback;
    -
    210}
    -
    - -

    ◆ registerDetectionDataReceivedCallback()

    + +

    ◆ GenericCallback

    - - - - - - - - +
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
    -

    Registers a callback for new detection data.

    -

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    +

    Generic callback signature used for simple notifications.

    Parameters
    - - + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    senderPointer to the LD2410Async instance that triggered the callback.
    userDataUser-specified value passed when registering the callback.
    -

    Definition at line 201 of file LD2410Async.cpp.

    -
    201 {
    -
    202 detectionDataCallback = callback;
    -
    203 detectionDataCallbackUserData = userData;
    -
    204}
    -
    +

    Definition at line 130 of file LD2410Async.h.

    +
    diff --git a/docu/group__LD2410Async__Callbacks.js b/docu/group__LD2410Async__Callbacks.js index df30e38..8dcffff 100644 --- a/docu/group__LD2410Async__Callbacks.js +++ b/docu/group__LD2410Async__Callbacks.js @@ -1,6 +1,5 @@ var group__LD2410Async__Callbacks = [ - [ "LD2410Async::registerConfigChangedCallback", "group__LD2410Async__Callbacks.html#ga714e62534394a52243f8f50fd58726f9", null ], - [ "LD2410Async::registerConfigUpdateReceivedCallback", "group__LD2410Async__Callbacks.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], - [ "LD2410Async::registerDetectionDataReceivedCallback", "group__LD2410Async__Callbacks.html#gaf4a5bb569a656f369f739060b9a3f282", null ] + [ "LD2410Async::AsyncCommandCallback", "group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "LD2410Async::GenericCallback", "group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383", null ] ]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Configuration.html b/docu/group__LD2410Async__Configuration.html new file mode 100644 index 0000000..3816121 --- /dev/null +++ b/docu/group__LD2410Async__Configuration.html @@ -0,0 +1,361 @@ + + + + + + + +LD2410Async: Sensor Configuration + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Sensor Configuration
    +
    +
    + + + + + +

    +Classes

    struct  LD2410Types::ConfigData
     Stores the sensor’s configuration parameters. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    void LD2410Async::registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    bool LD2410Async::enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool LD2410Async::disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool LD2410Async::isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    + + + + +

    +Variables

    LD2410Types::ConfigData LD2410Async::configData
     Current configuration parameters of the radar.
     
    +

    Detailed Description

    +

    Methods, definitions and data for LD2410 configuration.

    Note
    Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410.
    +

    Function Documentation

    + +

    ◆ disableConfigModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::disableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Disables config mode on the radar.

    +

    This should be called after finishing configuration, to return the sensor to normal detection operation.

    +
    Note
    If an async command is already pending (asyncIsBusy() == true), this command will not be sent.
    +
    Parameters
    + + + +
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 797 of file LD2410Async.cpp.

    +
    797 {
    +
    798 if (asyncIsBusy()) return false;
    +
    799 return disableConfigModeInternalAsync(callback, userData);
    +
    800}
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    +
    +
    + +

    ◆ enableConfigModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables config mode on the radar.

    +

    Config mode must be enabled before issuing most configuration commands. This command itself is asynchronous — the callback fires once the sensor acknowledges the mode switch.

    +
    Note
    If asyncIsBusy() is true, this command will not be sent.
    +
    +Normal detection data is suspended while config mode is active.
    +
    Parameters
    + + + +
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false if blocked.
    + +

    Definition at line 786 of file LD2410Async.cpp.

    +
    786 {
    +
    787 if (asyncIsBusy()) return false;
    +
    788 return enableConfigModeInternalAsync(callback, userData);
    +
    789}
    +
    +
    +
    + +

    ◆ isConfigModeEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isConfigModeEnabled () const
    +
    +inline
    +
    + +

    Detects if config mode is enabled.

    +
    Returns
    true if config mode is anabled, false if config mode is disabled
    + +

    Definition at line 724 of file LD2410Async.h.

    +
    724 {
    +
    725 return configModeEnabled;
    +
    726 };
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    +
    +
    + +

    ◆ registerConfigChangedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration changes.

    +

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 212 of file LD2410Async.cpp.

    +
    212 {
    +
    213 configChangedCallbackUserData = userData;
    +
    214 configChangedCallback = callback;
    +
    215}
    +
    +
    +
    + +

    ◆ registerConfigUpdateReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration data updates.

    +

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 206 of file LD2410Async.cpp.

    +
    206 {
    +
    207
    +
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    +
    209 configUpdateReceivedReceivedCallback = callback;
    +
    210}
    +
    +
    +
    +

    Variable Documentation

    + +

    ◆ configData

    + +
    +
    + + + + +
    LD2410Types::ConfigData LD2410Async::configData
    +
    + +

    Current configuration parameters of the radar.

    +

    Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

    +

    Structure will contain only uninitilaized data if config data is not queried explicitly.

    + +

    Definition at line 184 of file LD2410Async.h.

    + +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__Configuration.js b/docu/group__LD2410Async__Configuration.js new file mode 100644 index 0000000..1136ca6 --- /dev/null +++ b/docu/group__LD2410Async__Configuration.js @@ -0,0 +1,24 @@ +var group__LD2410Async__Configuration = +[ + [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", [ + [ "equals", "structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028", null ], + [ "isValid", "structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885", null ], + [ "print", "structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624", null ], + [ "distanceGateMotionSensitivity", "structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c", null ], + [ "distanceGateStationarySensitivity", "structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8", null ], + [ "distanceResolution", "structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06", null ], + [ "lightControl", "structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7", null ], + [ "lightThreshold", "structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88", null ], + [ "maxMotionDistanceGate", "structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382", null ], + [ "maxStationaryDistanceGate", "structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6", null ], + [ "noOneTimeout", "structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf", null ], + [ "numberOfGates", "structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589", null ], + [ "outputControl", "structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87", null ] + ] ], + [ "LD2410Async::disableConfigModeAsync", "group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c", null ], + [ "LD2410Async::enableConfigModeAsync", "group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9", null ], + [ "LD2410Async::isConfigModeEnabled", "group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48", null ], + [ "LD2410Async::registerConfigChangedCallback", "group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9", null ], + [ "LD2410Async::registerConfigUpdateReceivedCallback", "group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "LD2410Async::configData", "group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__HighLevelCommands.html b/docu/group__LD2410Async__HighLevelCommands.html new file mode 100644 index 0000000..d83497d --- /dev/null +++ b/docu/group__LD2410Async__HighLevelCommands.html @@ -0,0 +1,420 @@ + + + + + + + +LD2410Async: High Level Commands + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    High Level Commands
    +
    +
    + + + + + + + + + + + +

    +Functions

    bool LD2410Async::requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool LD2410Async::requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool LD2410Async::configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
    +

    Detailed Description

    +

    High level commands to request data from the sensor and to write config settings to the sensor.

    Note
    Whenever possible, use these methods instead of the native methods
    +

    Function Documentation

    + +

    ◆ configureAllConfigSettingsAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureAllConfigSettingsAsync (const LD2410Types::ConfigData & configToWrite,
    bool writeAllConfigData,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Applies a full ConfigData struct to the LD2410.

    +

    If writeAllConfigData is true, the method will first fetch the current config, compare it with the provide Config data and then create a command sequence that will only update the changes config values. If writeAllConfigData is false, the method will write all values in the provided ConfigData to the sensor, regardless of whether they differ from the current config.

    +
    Note
    This is a high-level method that involves multiple commands (up to 18).
    +
    +Requires config mode. This method will manage entering and exiting config mode automatically (if config mode is not already active).
    +
    +If another async command is already pending, the command fails.
    +
    +Any members of ConfigData that are left at invalid values (e.g. enums set to NOT_SET) will cause the sequence to fail.
    +

    +Example: Clone, modify, and apply config

    +
    ConfigData cfg = radar.getConfigData(); // clone current config
    +
    cfg.noOneTimeout = 120; // change timeout
    +
    cfg.distanceGateMotionSensitivity[2] = 75;
    +
    +
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("All config applied successfully!");
    +
    }
    +
    });
    + +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +

    +Do:

    +
      +
    • Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    • +
    • If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    • +
    +

    +Don’t:

    +
      +
    • Dont write all config data (writeAllConfigData=true) if not really necessary. This generates unnecessary wear on the sensors memory.
    • +
    • Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    • +
    +
    Parameters
    + + + + + +
    configToWriteThe configuration data to be applied.
    writeAllConfigDataIf true, all fields in configToWrite are applied. If false, changed values are written.
    callbackFunction with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData), executed when the sequence finishes (success/fail/timeout/cancel).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command sequence has been started, false otherwise.
    + +

    Definition at line 1355 of file LD2410Async.cpp.

    +
    1356{
    +
    1357
    + +
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    +
    1360
    +
    1361 if (asyncIsBusy()) return false;
    +
    1362
    +
    1363
    +
    1364 if (!configToWrite.isValid()) {
    + +
    1366 DEBUG_PRINTLN("configToWrite is invalid.");
    +
    1367 return false;
    +
    1368 }
    +
    1369
    +
    1370 configureAllConfigSettingsAsyncConfigActive = true;
    +
    1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
    +
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    +
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    +
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    +
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    +
    1376
    +
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    +
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    +
    1379 }
    +
    1380 else {
    +
    1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
    +
    1382 //If we save all changes anyway, no need to request current config data first
    +
    1383 return configureAllConfigSettingsAsyncWriteConfig();
    +
    1384 }
    +
    1385 else {
    +
    1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1387 }
    +
    1388 }
    +
    1389
    +
    1390}
    +
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    +
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool isValid() const
    Validates the configuration data for correctness.
    +
    +
    +
    + +

    ◆ requestAllConfigSettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAllConfigSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests all configuration settings from the sensor.

    +

    This triggers a sequence of queries that retrieves and updates:

      +
    • Gate parameters (sensitivities, max gates, timeout).
    • +
    • Distance resolution setting.
    • +
    • Auxiliary light/output control settings.
    • +
    +

    The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

    +
    Note
    This is a high-level method that involves multiple commands.
    +
    +Requires config mode. This method will manage mode switching automatically.
    +
    +If another async command is already pending, the request fails.
    +

    +Example: Refresh config data

    +
    radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("All config data refreshed:");
    +
    sender->getConfigDataRef().print();
    +
    }
    +
    });
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    void print() const
    Debug helper: print configuration contents to Serial.
    +

    +Do:

    +
      +
    • Use this after connecting to ensure configData is fully populated.
    • +
    • Call before modifying config if you’re unsure of current values.
    • +
    +

    +Don’t:

    +
      +
    • Expect it to succeed if another async command is still running.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when all config data has been received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1082 of file LD2410Async.cpp.

    +
    1082 {
    + +
    1084 DEBUG_PRINTLN("Request all config data");
    +
    1085
    +
    1086 if (asyncIsBusy()) return false;
    +
    1087
    +
    1088 if (!resetCommandSequence()) return false;
    +
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    +
    1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
    +
    1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
    +
    1092
    +
    1093 return executeCommandSequenceAsync(callback, userData);
    +
    1094
    +
    1095}
    +
    constexpr byte requestDistanceResolutionCommandData[4]
    Definition LD2410Defs.h:31
    +
    constexpr byte requestAuxControlSettingsCommandData[4]
    Definition LD2410Defs.h:65
    +
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    +
    +
    +
    + +

    ◆ requestAllStaticDataAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAllStaticDataAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests all static information from the sensor.

    +

    This includes:

      +
    • Firmware version string.
    • +
    • Bluetooth MAC address (numeric and string form).
    • +
    +

    The values are written into the public members firmware, mac, and macString.

    +
    Note
    This is a high-level method that involves multiple commands.
    +
    +Requires config mode. Managed automatically by this method.
    +
    +If another async command is already pending, the request fails.
    +

    +Example: Retrieve firmware and MAC

    +
    radar.requestAllStaticDataAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.print("Firmware: ");
    +
    Serial.println(sender->firmware);
    +
    +
    Serial.print("MAC: ");
    +
    Serial.println(sender->macString);
    +
    }
    +
    });
    +
    String firmware
    Firmware version string of the radar.
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +

    +Do:

    +
      +
    • Use after initialization to log firmware version and MAC.
    • +
    • Useful for debugging or inventory identification.
    • +
    +

    +Don’t:

    +
      +
    • Expect frequently changing data — this is static information.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when static data is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1067 of file LD2410Async.cpp.

    +
    1067 {
    + +
    1069 DEBUG_PRINTLN("Request all static data");
    +
    1070
    +
    1071 if (asyncIsBusy()) return false;
    +
    1072
    +
    1073
    +
    1074 if (!resetCommandSequence()) return false;
    +
    1075
    +
    1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
    +
    1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
    +
    1078
    +
    1079 return executeCommandSequenceAsync(callback, userData);
    +
    1080}
    +
    constexpr byte requestMacAddressCommandData[6]
    Definition LD2410Defs.h:25
    +
    constexpr byte requestFirmwareCommandData[4]
    Definition LD2410Defs.h:28
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__HighLevelCommands.js b/docu/group__LD2410Async__HighLevelCommands.js new file mode 100644 index 0000000..10c9848 --- /dev/null +++ b/docu/group__LD2410Async__HighLevelCommands.js @@ -0,0 +1,6 @@ +var group__LD2410Async__HighLevelCommands = +[ + [ "LD2410Async::configureAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede", null ], + [ "LD2410Async::requestAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38", null ], + [ "LD2410Async::requestAllStaticDataAsync", "group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__InactivityHandling.html b/docu/group__LD2410Async__InactivityHandling.html new file mode 100644 index 0000000..f13888b --- /dev/null +++ b/docu/group__LD2410Async__InactivityHandling.html @@ -0,0 +1,337 @@ + + + + + + + +LD2410Async: Inactivity Handling + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Inactivity Handling
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void LD2410Async::setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void LD2410Async::enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void LD2410Async::disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool LD2410Async::isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long LD2410Async::getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    +

    Detailed Description

    +

    Methods for inactivity handling. Inactivity handling allows to automatically recover from situations where the sensor remains silent for a long time. Typically this happen only if the sensor is stuck resp. left in config mode unwillingly.

    +

    Function Documentation

    + +

    ◆ disableInactivityHandling()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::disableInactivityHandling ()
    +
    +inline
    +
    + +

    Convenience method: disables inactivity handling.

    +

    Equivalent to calling setInactivityHandling(false).

    + +

    Definition at line 372 of file LD2410Async.h.

    +
    372{ setInactivityHandling(false); };
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    +
    +
    + +

    ◆ enableInactivityHandling()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::enableInactivityHandling ()
    +
    +inline
    +
    + +

    Convenience method: enables inactivity handling.

    +

    Equivalent to calling setInactivityHandling(true).

    + +

    Definition at line 363 of file LD2410Async.h.

    +
    363{ setInactivityHandling(true); };
    +
    +
    +
    + +

    ◆ getInactivityTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned long LD2410Async::getInactivityTimeoutMs () const
    +
    +inline
    +
    + +

    Returns the current inactivity timeout period.

    +
    Returns
    Timeout in milliseconds.
    + +

    Definition at line 405 of file LD2410Async.h.

    +
    405{ return inactivityHandlingTimeoutMs; };
    +
    +
    +
    + +

    ◆ isInactivityHandlingEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isInactivityHandlingEnabled () const
    +
    +inline
    +
    + +

    Returns whether inactivity handling is currently enabled.

    +
    Returns
    true if inactivity handling is enabled, false otherwise.
    + +

    Definition at line 381 of file LD2410Async.h.

    +
    381{ return inactivityHandlingEnabled; };
    +
    +
    +
    + +

    ◆ setInactivityHandling()

    + +
    +
    + + + + + + + +
    void LD2410Async::setInactivityHandling (bool enable)
    +
    + +

    Enables or disables automatic inactivity handling of the sensor.

    +

    When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

      +
    1. It first tries to exit config mode (even if configModeEnabled is false).
    2. +
    3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
    4. +
    +

    This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

    +
    Parameters
    + + +
    enablePass true to enable inactivity handling, false to disable it.
    +
    +
    + +

    Definition at line 1521 of file LD2410Async.cpp.

    +
    1521 {
    +
    1522 inactivityHandlingEnabled = enable;
    +
    1523}
    +
    +
    +
    + +

    ◆ setInactivityTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
    +
    +inline
    +
    + +

    Sets the timeout period for inactivity handling.

    +

    If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

    +

    Default is 60000 ms (1 minute).

    +
    Parameters
    + + +
    timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    +
    +
    + +

    Definition at line 396 of file LD2410Async.h.

    +
    396{ inactivityHandlingTimeoutMs = timeoutMs; };
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__InactivityHandling.js b/docu/group__LD2410Async__InactivityHandling.js new file mode 100644 index 0000000..560f0a9 --- /dev/null +++ b/docu/group__LD2410Async__InactivityHandling.js @@ -0,0 +1,9 @@ +var group__LD2410Async__InactivityHandling = +[ + [ "LD2410Async::disableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2", null ], + [ "LD2410Async::enableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "LD2410Async::getInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f", null ], + [ "LD2410Async::isInactivityHandlingEnabled", "group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6", null ], + [ "LD2410Async::setInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76", null ], + [ "LD2410Async::setInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__MainMethods.html b/docu/group__LD2410Async__MainMethods.html new file mode 100644 index 0000000..46318bd --- /dev/null +++ b/docu/group__LD2410Async__MainMethods.html @@ -0,0 +1,273 @@ + + + + + + + +LD2410Async: Constructor & Main methods + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Constructor & Main methods
    +
    +
    + + + + + + + + + + + +

    +Functions

     LD2410Async::LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool LD2410Async::begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool LD2410Async::end ()
     Stops the background task started by begin().
     
    +

    Detailed Description

    +

    Constructor and main methods (begin(), end() of the LD2410Async class.

    +

    Function Documentation

    + +

    ◆ begin()

    + +
    +
    + + + + + + + +
    bool LD2410Async::begin ()
    +
    + +

    Starts the background task that continuously reads data from the sensor.

    +

    This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

    +
    Returns
    true if the task was successfully started, false if already running.
    + +

    Definition at line 1577 of file LD2410Async.cpp.

    +
    1577 {
    +
    1578 if (taskHandle == NULL) {
    + +
    1580 DEBUG_PRINTLN("Starting data processing task");
    +
    1581 taskStop = false;
    +
    1582
    +
    1583 BaseType_t result = xTaskCreate(
    +
    1584 [](void* param) {
    +
    1585 if (param) {
    +
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    +
    1587 }
    +
    1588 vTaskDelete(NULL);
    +
    1589 },
    +
    1590 "LD2410Task",
    +
    1591 4096,
    +
    1592 this,
    +
    1593 1,
    +
    1594 &taskHandle
    +
    1595 );
    +
    1596
    +
    1597 if (result == pdPASS) {
    +
    1598 return true;
    +
    1599 }
    +
    1600 else {
    + +
    1602 DEBUG_PRINTLN("Task creation failed");
    +
    1603 taskHandle = NULL;
    +
    1604 return false;
    +
    1605 }
    +
    1606 }
    + +
    1608 DEBUG_PRINTLN("Data processing task already active");
    +
    1609 return false;
    +
    1610}
    +
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    +
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    + +
    +
    +
    + +

    ◆ end()

    + +
    +
    + + + + + + + +
    bool LD2410Async::end ()
    +
    + +

    Stops the background task started by begin().

    +

    After calling end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

    +
    Returns
    true if the task was stopped, false if it was not active.
    + +

    Definition at line 1612 of file LD2410Async.cpp.

    +
    1612 {
    +
    1613 if (taskHandle != NULL) {
    + +
    1615 DEBUG_PRINTLN("Stopping data processing task");
    +
    1616 taskStop = true;
    +
    1617
    +
    1618 // Wait up to 200ms for graceful exit
    +
    1619 for (int i = 0; i < 20; i++) {
    +
    1620 if (taskHandle == NULL) {
    + +
    1622 DEBUG_PRINTLN("Task exited gracefully");
    +
    1623 return true;
    +
    1624 }
    +
    1625 vTaskDelay(1 / portTICK_PERIOD_MS);
    +
    1626 }
    +
    1627
    +
    1628 // If still not NULL, force delete
    + +
    1630 DEBUG_PRINTLN("Forcing task stop");
    +
    1631 vTaskDelete(taskHandle);
    +
    1632 taskHandle = NULL;
    +
    1633 return true;
    +
    1634 }
    +
    1635
    +
    1636 DEBUG_PRINTLN("Data processing task is not active");
    +
    1637 return false;
    +
    1638}
    +
    +
    +
    + +

    ◆ LD2410Async()

    + +
    +
    + + + + + + + +
    LD2410Async::LD2410Async (Stream & serial)
    +
    + +

    Constructs a new LD2410Async instance bound to a given serial stream.

    +

    The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

    +

    Example:

    HardwareSerial radarSerial(2);
    +
    LD2410Async radar(radarSerial);
    +
    Parameters
    + + +
    serialReference to a Stream object used to exchange data with the sensor.
    +
    +
    + +

    Definition at line 1646 of file LD2410Async.cpp.

    +
    1647{
    +
    1648 sensor = &serial;
    +
    1649}
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__MainMethods.js b/docu/group__LD2410Async__MainMethods.js new file mode 100644 index 0000000..1cd3cc4 --- /dev/null +++ b/docu/group__LD2410Async__MainMethods.js @@ -0,0 +1,6 @@ +var group__LD2410Async__MainMethods = +[ + [ "LD2410Async::begin", "group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], + [ "LD2410Async::end", "group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "LD2410Async::LD2410Async", "group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__NativeCommands.html b/docu/group__LD2410Async__NativeCommands.html new file mode 100644 index 0000000..ccd16fe --- /dev/null +++ b/docu/group__LD2410Async__NativeCommands.html @@ -0,0 +1,1407 @@ + + + + + + + +LD2410Async: Native Commands + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Native Commands
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool LD2410Async::requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool LD2410Async::configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool LD2410Async::configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool LD2410Async::requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool LD2410Async::configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool LD2410Async::configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool LD2410Async::restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool LD2410Async::rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool LD2410Async::enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool LD2410Async::disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool LD2410Async::requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool LD2410Async::configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool LD2410Async::configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool LD2410Async::configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool LD2410Async::configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool LD2410Async::configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool LD2410Async::configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool LD2410Async::requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool LD2410Async::configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool LD2410Async::requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool LD2410Async::beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool LD2410Async::requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    +

    Detailed Description

    +

    Native commands of the LD2410. Each of these commands sends a single command (plus the necessary config mode enable/disable commands) to the LD2410.

    Note
    Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410.
    +

    Function Documentation

    + +

    ◆ beginAutoConfigAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::beginAutoConfigAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Starts the automatic configuration (auto-config) routine on the sensor.

    +

    Auto-config lets the radar adjust its internal thresholds and sensitivities for the current environment. This can take several seconds to complete and results in updated sensitivity values.

    +

    The progress and result can be checked with requestAutoConfigStatusAsync().

    +
    Note
    Requires config mode. This method will manage entering and exiting config mode automatically.
    +
    +Auto-config temporarily suspends normal detection reporting.
    +

    +Example: Run auto-config

    +
    radar.beginAutoConfigAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("Auto-config started.");
    +
    } else {
    +
    Serial.println("Failed to start auto-config.");
    +
    }
    +
    });
    + +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +

    +Do:

    + +

    +Don’t:

    +
      +
    • Expect instant results — the sensor needs time to complete the process.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the command is acknowledged or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1042 of file LD2410Async.cpp.

    +
    1042 {
    + +
    1044 DEBUG_PRINTLN("Begin auto config");
    +
    1045
    +
    1046 if (asyncIsBusy()) return false;
    +
    1047
    +
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    +
    1049};
    +
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    +
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    constexpr byte beginAutoConfigCommandData[6]
    Definition LD2410Defs.h:71
    +
    +
    +
    + +

    ◆ configureAuxControlSettingsAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureAuxControlSettingsAsync (LD2410Types::LightControl light_control,
    byte light_threshold,
    LD2410Types::OutputControl output_control,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the auxiliary control parameters (light and output pin).

    +

    This configures how the OUT pin behaves depending on light levels and presence detection. Typical use cases include controlling an external lamp or relay.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Both enums must be set to valid values (not NOT_SET).
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + + + + +
    lightControlLight control behavior (see LightControl enum).
    lightThresholdThreshold (0–255) used for light-based switching.
    outputControlOutput pin logic configuration (see OutputControl enum).
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1016 of file LD2410Async.cpp.

    +
    1019{
    + +
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    +
    1022 if (asyncIsBusy()) return false;
    +
    1023
    + +
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    +
    1026
    +
    1027 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1028}
    +
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    +
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    +
    +
    +
    + +

    ◆ configureBaudRateAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBaudRateAsync (byte baudRateSetting,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the UART baud rate of the sensor.

    +

    The new baud rate becomes active only after reboot. The ESP32’s Serial interface must also be reconfigured to the new baud rate after reboot.

    +
    Note
    Valid values are 1–8. Values outside range are rejected resp. method will fail.
    +
    +Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + + +
    baudRateSettingNumeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 894 of file LD2410Async.cpp.

    +
    896{
    + +
    898 DEBUG_PRINTLN("Set Baud Rate");
    +
    899
    +
    900 if (asyncIsBusy()) return false;
    +
    901
    +
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    +
    903 return false;
    +
    904
    +
    905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    +
    906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    +
    907
    +
    908 return sendConfigCommandAsync(cmd, callback, userData);
    +
    909}
    +
    bool buildBaudRateCommand(byte *out, byte baudRateSetting)
    +
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    +
    +
    +
    + +

    ◆ configureBaudRateAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBaudRateAsync (LD2410Types::Baudrate baudRate,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the baudrate of the serial port of the sensor.

    +

    The new baudrate will only become active after a reboot of the sensor. If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.

    +
    Note
    If another async command is pending, this call fails.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + + +
    baudrateA valid baud rate from the Baudrate enum.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 913 of file LD2410Async.cpp.

    +
    913 {
    +
    914
    +
    915 if (asyncIsBusy()) return false;
    +
    916
    +
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    918}
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    +
    +
    + +

    ◆ configureBluetoothPasswordAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBluetoothPasswordAsync (const char * password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Sets the password for bluetooth access to the sensor.

    +
    Parameters
    + + + + +
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 954 of file LD2410Async.cpp.

    +
    956{
    + +
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    +
    959 if (asyncIsBusy()) return false;
    +
    960
    + +
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    +
    963
    +
    964 return sendConfigCommandAsync(cmd, callback, userData);
    +
    965}
    +
    bool buildBluetoothPasswordCommand(byte *out, const char *password)
    +
    constexpr byte setBluetoothPasswordCommandData[10]
    Definition LD2410Defs.h:53
    +
    +
    +
    + +

    ◆ configureBluetoothPasswordAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBluetoothPasswordAsync (const String & password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Sets the password for bluetooth access to the sensor.

    +
    Parameters
    + + + + +
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 969 of file LD2410Async.cpp.

    +
    969 {
    +
    970
    +
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    972}
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    +
    +
    + +

    ◆ configureDefaultBluetoothPasswordAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Resets the password for bluetooth access to the default value (HiLink)

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 975 of file LD2410Async.cpp.

    +
    975 {
    + +
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    +
    978 if (asyncIsBusy()) return false;
    +
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    +
    980}
    +
    +
    +
    + +

    ◆ configureDistanceGateSensitivityAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceGateSensitivityAsync (byte gate,
    byte movingThreshold,
    byte stationaryThreshold,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures sensitivity thresholds for a single gate.

    +

    Updates both moving and stationary thresholds for the given gate index. If the gate index is greater than 8, all gates are updated instead.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + + +
    gateIndex of the gate (0–8). Values >8 apply to all gates.
    movingThresholdSensitivity for moving targets (0–100).
    stationaryThresholdSensitivity for stationary targets (0–100).
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 867 of file LD2410Async.cpp.

    +
    870{
    + +
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    +
    873
    +
    874 if (asyncIsBusy()) return false;
    +
    875
    + +
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    +
    878
    +
    879 return sendConfigCommandAsync(cmd, callback, userData);
    +
    880}
    +
    bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
    +
    constexpr byte distanceGateSensitivityConfigCommandData[0x16]
    Definition LD2410Defs.h:77
    +
    +
    +
    + +

    ◆ configureDistanceGateSensitivityAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceGateSensitivityAsync (const byte movingThresholds[9],
    const byte stationaryThresholds[9],
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures sensitivity thresholds for all gates at once.

    +

    A sequence of commands will be sent, one for each gate. Threshold values are automatically clamped to 0–100.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + +
    movingThresholdsArray of 9 sensitivity values for moving targets (0–100).
    stationaryThresholdsArray of 9 sensitivity values for stationary targets (0–100).
    callbackCallback fired when all updates are acknowledged or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the sequence was started, false otherwise.
    + +

    Definition at line 845 of file LD2410Async.cpp.

    +
    848{
    + +
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    +
    851
    +
    852 if (asyncIsBusy()) return false;
    +
    853
    +
    854 if (!resetCommandSequence()) return false;
    +
    855
    +
    856 for (byte gate = 0; gate < 9; gate++) {
    + +
    858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    +
    859 if (!addCommandToSequence(cmd)) return false;
    +
    860 }
    +
    861
    +
    862 return executeCommandSequenceAsync(callback, userData);
    +
    863}
    +
    +
    +
    + +

    ◆ configureDistanceResolution75cmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configureDistanceResolution75cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution explicitly to 75 cm per gate.

    +

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 982 of file LD2410Async.cpp.

    +
    982 {
    + +
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    +
    985 if (asyncIsBusy()) return false;
    +
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    +
    987};
    +
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    +
    +
    +
    + +

    ◆ configureDistanceResolutionAsync()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution of the radar.

    +

    The distance resolution defines the size of each distance gate and the maximum detection range:

      +
    • RESOLUTION_75CM → longer range, coarser detail.
    • +
    • RESOLUTION_20CM → shorter range, finer detail.
    • +
    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + + +
    distanceResolutionValue from the DistanceResolution enum. Must not be NOT_SET.
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false if invalid parameters or the library is busy.
    + +

    Definition at line 989 of file LD2410Async.cpp.

    +
    991{
    + +
    993 DEBUG_PRINTLN("Set Distance Resolution");
    +
    994 if (asyncIsBusy()) return false;
    +
    995
    +
    996 byte cmd[6];
    +
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    +
    998
    +
    999 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1000}
    +
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    +
    +
    +
    + +

    ◆ configureMaxGateAndNoOneTimeoutAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate,
    byte maxStationaryGate,
    unsigned short noOneTimeout,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the maximum detection gates and "no-one" timeout on the sensor.

    +

    This command updates:

      +
    • Maximum motion detection distance gate (2–8).
    • +
    • Maximum stationary detection distance gate (2–8).
    • +
    • Timeout duration (0–65535 seconds) until "no presence" is declared.
    • +
    +
    Note
    Requires config mode to be enabled. The method will internally enable/disable config mode if necessary.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + + +
    maxMovingGateFurthest gate used for motion detection (2–8).
    maxStationaryGateFurthest gate used for stationary detection (2–8).
    noOneTimeoutTimeout in seconds until "no one" is reported (0–65535).
    callbackCallback fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise (busy state or invalid values).
    + +

    Definition at line 808 of file LD2410Async.cpp.

    +
    811{
    + +
    813 DEBUG_PRINTLN("Set Max Gate");
    +
    814 if (asyncIsBusy()) return false;
    +
    815
    +
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    +
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    +
    818 return sendConfigCommandAsync(cmd, callback, userData);
    +
    819 }
    +
    820 return false;
    +
    821}
    +
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    +
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    +
    +
    +
    + +

    ◆ configuresDistanceResolution20cmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configuresDistanceResolution20cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution explicitly to 20 cm per gate.

    +

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1002 of file LD2410Async.cpp.

    +
    1002 {
    + +
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    +
    1005 if (asyncIsBusy()) return false;
    +
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    +
    1007};
    +
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    +
    +
    +
    + +

    ◆ disableBluetoothAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::disableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Disables bluetooth.

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 939 of file LD2410Async.cpp.

    +
    939 {
    + +
    941 DEBUG_PRINTLN("Disable Bluetooth");
    +
    942 if (asyncIsBusy()) return false;
    +
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    944}
    +
    constexpr byte bluetoothSettingsOnCommandData[6]
    Definition LD2410Defs.h:47
    +
    +
    +
    + +

    ◆ enableBluetoothAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables bluetooth.

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 931 of file LD2410Async.cpp.

    +
    931 {
    + +
    933 DEBUG_PRINTLN("Enable Bluetooth");
    +
    934 if (asyncIsBusy()) return false;
    +
    935
    +
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    937}
    +
    +
    +
    + +

    ◆ rebootAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::rebootAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Reboots the sensor.

    +

    After reboot, the sensor stops responding for a few seconds. Config and engineering mode are reset.

    +
    Note
    The reboot of the sensor takes place after the ACK has been sent.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1433 of file LD2410Async.cpp.

    +
    1433 {
    +
    1434
    +
    1435
    + +
    1437 DEBUG_PRINTLN("Reboot");
    +
    1438
    +
    1439 if (asyncIsBusy()) return false;
    +
    1440
    +
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    +
    1442}
    +
    +
    +
    + +

    ◆ requestAutoConfigStatusAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAutoConfigStatusAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current status of the auto-config routine.

    +

    The status is written into the member variable autoConfigStatus:

      +
    • NOT_IN_PROGRESS → no auto-config running.
    • +
    • IN_PROGRESS → auto-config is currently running.
    • +
    • COMPLETED → auto-config finished (success or failure).
    • +
    +
    Note
    Requires config mode. This method will manage mode switching automatically.
    +
    +If another async command is already pending, this call fails.
    +

    +Example: Check auto-config status

    +
    radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    switch (sender->autoConfigStatus) {
    +
    case AutoConfigStatus::NOT_IN_PROGRESS:
    +
    Serial.println("Auto-config not running.");
    +
    break;
    +
    case AutoConfigStatus::IN_PROGRESS:
    +
    Serial.println("Auto-config in progress...");
    +
    break;
    +
    case AutoConfigStatus::COMPLETED:
    +
    Serial.println("Auto-config completed.");
    +
    break;
    +
    default:
    +
    Serial.println("Unknown auto-config status.");
    +
    }
    +
    } else {
    +
    Serial.println("Failed to request auto-config status.");
    +
    }
    +
    });
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +

    +Do:

    +
      +
    • Use this after beginAutoConfigAsync() to track progress.
    • +
    • Use autoConfigStatus for decision-making in your logic.
    • +
    +

    +Don’t:

    +
      +
    • Assume COMPLETED means success — thresholds should still be verified.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the sensor replies or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1051 of file LD2410Async.cpp.

    +
    1051 {
    + +
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    +
    1054
    +
    1055 if (asyncIsBusy()) return false;
    +
    1056
    +
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    +
    1058}
    +
    constexpr byte requestAutoConfigStatusCommandData[4]
    Definition LD2410Defs.h:74
    +
    +
    +
    + +

    ◆ requestAuxControlSettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAuxControlSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current auxiliary control settings.

    +

    Fills configData.lightControl, configData.lightThreshold, and configData.outputControl.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1032 of file LD2410Async.cpp.

    +
    1032 {
    + +
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    +
    1035
    +
    1036 if (asyncIsBusy()) return false;
    +
    1037
    +
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    +
    1039}
    +
    constexpr byte requestAuxControlSettingsCommandData[4]
    Definition LD2410Defs.h:65
    +
    +
    +
    + +

    ◆ requestBluetoothMacAddressAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestBluetoothMacAddressAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the bluetooth mac address.

    +
    Note
    The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 947 of file LD2410Async.cpp.

    +
    947 {
    + +
    949 DEBUG_PRINTLN("Request Mac Address");
    +
    950 if (asyncIsBusy()) return false;
    +
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    +
    952}
    +
    constexpr byte requestMacAddressCommandData[6]
    Definition LD2410Defs.h:25
    +
    +
    +
    + +

    ◆ requestDistanceResolutioncmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestDistanceResolutioncmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current distance resolution setting from the sensor.

    +

    The result is written into configData.distanceResolution.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1009 of file LD2410Async.cpp.

    +
    1009 {
    + +
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    +
    1012 if (asyncIsBusy()) return false;
    +
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    +
    1014}
    +
    constexpr byte requestDistanceResolutionCommandData[4]
    Definition LD2410Defs.h:31
    +
    +
    +
    + +

    ◆ requestFirmwareAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestFirmwareAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the firmware version of the sensor.

    +

    Populates the firmware string when the ACK response arrives.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackCallback fired when firmware info is received.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 884 of file LD2410Async.cpp.

    +
    884 {
    + +
    886 DEBUG_PRINTLN("Request Firmware");
    +
    887
    +
    888 if (asyncIsBusy()) return false;
    +
    889
    +
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    +
    891}
    +
    constexpr byte requestFirmwareCommandData[4]
    Definition LD2410Defs.h:28
    +
    +
    +
    + +

    ◆ requestGateParametersAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestGateParametersAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current gate parameters from the sensor.

    +

    Retrieves sensitivities, max gates, and timeout settings, which will be written into configData.

    +
    Note
    Requires config mode. The method will manage mode switching if needed.
    +
    +If an async command is already pending, the request is rejected.
    +
    Parameters
    + + + +
    callbackCallback fired when data is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 824 of file LD2410Async.cpp.

    +
    824 {
    + +
    826 DEBUG_PRINTLN("Request Gate Parameters");
    +
    827 if (asyncIsBusy()) return false;
    +
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    +
    829}
    +
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    +
    +
    +
    + +

    ◆ restoreFactorySettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::restoreFactorySettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Restores factory settings of the sensor.

    +

    Restored settings only become active after a reboot.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 921 of file LD2410Async.cpp.

    +
    921 {
    + +
    923 DEBUG_PRINTLN("Restore Factory Settings");
    +
    924
    +
    925 if (asyncIsBusy()) return false;
    +
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    +
    927}
    +
    constexpr byte restoreFactorSettingsCommandData[4]
    Definition LD2410Defs.h:41
    +
    +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__NativeCommands.js b/docu/group__LD2410Async__NativeCommands.js new file mode 100644 index 0000000..37b5738 --- /dev/null +++ b/docu/group__LD2410Async__NativeCommands.js @@ -0,0 +1,26 @@ +var group__LD2410Async__NativeCommands = +[ + [ "LD2410Async::beginAutoConfigAsync", "group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc", null ], + [ "LD2410Async::configureAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd", null ], + [ "LD2410Async::configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], + [ "LD2410Async::configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a", null ], + [ "LD2410Async::configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22", null ], + [ "LD2410Async::configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266", null ], + [ "LD2410Async::configureDefaultBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], + [ "LD2410Async::configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213", null ], + [ "LD2410Async::configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38", null ], + [ "LD2410Async::configureDistanceResolution75cmAsync", "group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82", null ], + [ "LD2410Async::configureDistanceResolutionAsync", "group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250", null ], + [ "LD2410Async::configureMaxGateAndNoOneTimeoutAsync", "group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a", null ], + [ "LD2410Async::configuresDistanceResolution20cmAsync", "group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c", null ], + [ "LD2410Async::disableBluetoothAsync", "group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862", null ], + [ "LD2410Async::enableBluetoothAsync", "group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973", null ], + [ "LD2410Async::rebootAsync", "group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235", null ], + [ "LD2410Async::requestAutoConfigStatusAsync", "group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6", null ], + [ "LD2410Async::requestAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb", null ], + [ "LD2410Async::requestBluetoothMacAddressAsync", "group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be", null ], + [ "LD2410Async::requestDistanceResolutioncmAsync", "group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046", null ], + [ "LD2410Async::requestFirmwareAsync", "group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21", null ], + [ "LD2410Async::requestGateParametersAsync", "group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6", null ], + [ "LD2410Async::restoreFactorySettingsAsync", "group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__PresenceDetection.html b/docu/group__LD2410Async__PresenceDetection.html new file mode 100644 index 0000000..9315efc --- /dev/null +++ b/docu/group__LD2410Async__PresenceDetection.html @@ -0,0 +1,317 @@ + + + + + + + +LD2410Async: Presence Detection + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Presence Detection
    +
    +
    + + + + + +

    +Classes

    struct  LD2410Types::DetectionData
     Holds the most recent detection data reported by the radar. More...
     
    + + + + +

    +Typedefs

    typedef void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
    + + + + + + + + + + +

    +Functions

    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    bool LD2410Async::enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool LD2410Async::isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    + + + + +

    +Variables

    LD2410Types::DetectionData LD2410Async::detectionData
     Latest detection results from the radar.
     
    +

    Detailed Description

    +

    Presence detection related methods, definitions and data

    +

    Typedef Documentation

    + +

    ◆ DetectionDataCallback

    + +
    +
    + + + + +
    void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    +
    + +

    Callback type for receiving detection data events.

    +

    This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

    +
    Parameters
    + + + + +
    senderPointer to the LD2410Async instance that triggered the callback.
    presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
    userDataUser-defined value passed when registering the callback.
    +
    +
    + +

    Definition at line 147 of file LD2410Async.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ enableEngineeringModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableEngineeringModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables engineering mode.

    +

    In this mode, the sensor sends detailed per-gate signal values in addition to basic detection results.

    +
    Note
    Engineering mode is temporary and lost after power cycle.
    +
    +Requires config mode. Will be enabled automatically if not active.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 831 of file LD2410Async.cpp.

    +
    831 {
    + +
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    +
    834 if (asyncIsBusy()) return false;
    +
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    +
    836}
    +
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    +
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    constexpr byte engineeringModeEnableCommandData[4]
    Definition LD2410Defs.h:59
    +
    +
    +
    + +

    ◆ isEngineeringModeEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isEngineeringModeEnabled () const
    +
    +inline
    +
    + +

    Detects if engineering mode is enabled.

    +
    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    + +

    Definition at line 776 of file LD2410Async.h.

    +
    776 {
    + +
    778 };
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    +
    +
    + +

    ◆ registerDetectionDataReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for new detection data.

    +

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 201 of file LD2410Async.cpp.

    +
    201 {
    +
    202 detectionDataCallback = callback;
    +
    203 detectionDataCallbackUserData = userData;
    +
    204}
    +
    +
    +
    +

    Variable Documentation

    + +

    ◆ detectionData

    + +
    +
    + + + + +
    LD2410Types::DetectionData LD2410Async::detectionData
    +
    + +

    Latest detection results from the radar.

    +

    Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

    + +

    Definition at line 169 of file LD2410Async.h.

    + +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__PresenceDetection.js b/docu/group__LD2410Async__PresenceDetection.js new file mode 100644 index 0000000..4ae9069 --- /dev/null +++ b/docu/group__LD2410Async__PresenceDetection.js @@ -0,0 +1,28 @@ +var group__LD2410Async__PresenceDetection = +[ + [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", [ + [ "print", "structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca", null ], + [ "detectedDistance", "structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507", null ], + [ "engineeringMode", "structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7", null ], + [ "lightLevel", "structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c", null ], + [ "movingPresenceDetected", "structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81", null ], + [ "movingTargetDistance", "structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6", null ], + [ "movingTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96", null ], + [ "movingTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696", null ], + [ "movingTargetSignal", "structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a", null ], + [ "outPinStatus", "structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2", null ], + [ "presenceDetected", "structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023", null ], + [ "stationaryPresenceDetected", "structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad", null ], + [ "stationaryTargetDistance", "structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317", null ], + [ "stationaryTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1", null ], + [ "stationaryTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b", null ], + [ "stationaryTargetSignal", "structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73", null ], + [ "targetState", "structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7", null ], + [ "timestamp", "structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d", null ] + ] ], + [ "LD2410Async::DetectionDataCallback", "group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81", null ], + [ "LD2410Async::enableEngineeringModeAsync", "group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], + [ "LD2410Async::isEngineeringModeEnabled", "group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19", null ], + [ "LD2410Async::registerDetectionDataReceivedCallback", "group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282", null ], + [ "LD2410Async::detectionData", "group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__PublicData.html b/docu/group__LD2410Async__PublicData.html new file mode 100644 index 0000000..14dd3d2 --- /dev/null +++ b/docu/group__LD2410Async__PublicData.html @@ -0,0 +1,416 @@ + + + + + + + +LD2410Async: Public Data Members + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Public Data Members
    +
    +
    + + + + + + + + + + + + + + +

    +Functions

    LD2410Types::DetectionData LD2410Async::getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    const LD2410Types::DetectionDataLD2410Async::getDetectionDataRef () const
     Access the current detection data without making a copy.
     
    LD2410Types::ConfigData LD2410Async::getConfigData () const
     Returns a clone of the current configuration data of the radar.
     
    const LD2410Types::ConfigDataLD2410Async::getConfigDataRef () const
     Access the current config data without making a copy.
     
    + + + + + + + + + + +

    +Variables

    bool LD2410Async::configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool LD2410Async::engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     
    +

    Detailed Description

    +

    Public data members of the LD2410Async lib.

    Note
    It is not recommended to read and even less write to these data members. Use the data access methods instead.
    +

    Function Documentation

    + +

    ◆ getConfigData()

    + +
    +
    + + + + + + + +
    LD2410Types::ConfigData LD2410Async::getConfigData () const
    +
    + +

    Returns a clone of the current configuration data of the radar.

    +

    The returned struct contains the most recently requested or received configuration values, such as sensitivities, resolution, timeouts, and auxiliary settings.

    +

    Equivalent to directly accessing the public member configData, but provided for encapsulation and future-proofing.

    +
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Clone, modify, and write back

    +
    // Clone current config
    +
    ConfigData cfg = radar.getConfigData();
    +
    +
    // Modify locally
    +
    cfg.noOneTimeout = 60; // change timeout
    +
    cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    +
    +
    // Send modified config back to sensor
    +
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("Config updated successfully!");
    +
    }
    +
    });
    + +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +

    +Do:

    +
      +
    • Use when you want a clone of the current config to adjust and send back.
    • +
    • Safely modify the struct without risking internal state corruption.
    • +
    +

    +Don’t:

    +
      +
    • Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    • +
    +
    Returns
    A copy of the current ConfigData.
    + +

    Definition at line 1451 of file LD2410Async.cpp.

    +
    1451 {
    +
    1452 return configData;
    +
    1453}
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    +
    +
    + +

    ◆ getConfigDataRef()

    + +
    +
    + + + + + +
    + + + + + + + +
    const LD2410Types::ConfigData & LD2410Async::getConfigDataRef () const
    +
    +inline
    +
    + +

    Access the current config data without making a copy.

    +

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    +
    Note
    Since this returns a reference to the internal data, the values may change when new configuration is received. Do not store the reference for long-term use.
    +
    +This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Efficient read access without cloning

    +
    const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    +
    Serial.print("Resolution: ");
    +
    Serial.println(static_cast<int>(cfg.distanceResolution));
    +

    +Do:

    +
      +
    • Use when you only want to inspect configuration quickly.
    • +
    • Use for efficient read-only access.
    • +
    +

    +Don’t:

    +
      +
    • Try to modify the returned struct (it’s const).
    • +
    • Keep the reference and assume it will remain valid forever.
    • +
    +
    Returns
    Const reference to the current ConfigData.
    + +

    Definition at line 619 of file LD2410Async.h.

    +
    619{ return configData; }
    +
    +
    +
    + +

    ◆ getDetectionData()

    + +
    +
    + + + + + + + +
    LD2410Types::DetectionData LD2410Async::getDetectionData () const
    +
    + +

    Returns a clone of the latest detection data from the radar.

    +

    The returned struct contains the most recently received frame, including target state, distances, signal strengths, and (if enabled) engineering mode per-gate data.

    +

    Equivalent to directly accessing the public member detectionData, but provided for encapsulation and future-proofing.

    +
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Access values from a clone

    +
    DetectionData data = radar.getDetectionData(); // makes a copy
    +
    if (data.targetState == TargetState::MOVING_TARGET) {
    +
    Serial.print("Moving target at distance: ");
    +
    Serial.println(data.movingTargetDistance);
    +
    }
    +

    +Do:

    +
      +
    • Use when you want a snapshot of the latest detection data.
    • +
    • Modify the returned struct freely without affecting the internal state.
    • +
    +

    +Don’t:

    +
      +
    • Expect this to fetch new data from the sensor (it only returns what was already received).
    • +
    +
    Returns
    A copy of the current DetectionData.
    + +

    Definition at line 1447 of file LD2410Async.cpp.

    +
    1447 {
    +
    1448 return detectionData;
    +
    1449}
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    +
    +
    + +

    ◆ getDetectionDataRef()

    + +
    +
    + + + + + +
    + + + + + + + +
    const LD2410Types::DetectionData & LD2410Async::getDetectionDataRef () const
    +
    +inline
    +
    + +

    Access the current detection data without making a copy.

    +

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    +
    Note
    Since this returns a reference to the internal data, the values may change as new frames arrive. Do not store the reference for long-term use.
    +
    +This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Efficient read access without cloning

    +
    const DetectionData& data = radar.getDetectionDataRef(); // no copy
    +
    Serial.print("Stationary signal: ");
    +
    Serial.println(data.stationaryTargetSignal);
    +

    +Do:

    +
      +
    • Use when you only need to read values quickly and efficiently.
    • +
    • Use when printing or inspecting live data without keeping it.
    • +
    +

    +Don’t:

    +
      +
    • Try to modify the returned struct (it’s const).
    • +
    • Store the reference long-term (it may be updated at any time).
    • +
    +
    Returns
    Const reference to the current DetectionData.
    + +

    Definition at line 536 of file LD2410Async.h.

    +
    536{ return detectionData; }
    +
    +
    +
    +

    Variable Documentation

    + +

    ◆ autoConfigStatus

    + +
    +
    + + + + +
    LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
    +
    + +

    Current status of the auto-configuration routine.

    +

    Updated by requestAutoConfigStatusAsync().

    + +

    Definition at line 272 of file LD2410Async.h.

    + +
    +
    + +

    ◆ configModeEnabled

    + +
    +
    + + + + +
    bool LD2410Async::configModeEnabled = false
    +
    + +

    True if the sensor is currently in config mode.

    +

    Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

    + +

    Definition at line 217 of file LD2410Async.h.

    + +
    +
    + +

    ◆ engineeringModeEnabled

    + +
    +
    + + + + +
    bool LD2410Async::engineeringModeEnabled = false
    +
    + +

    True if the sensor is currently in engineering mode.

    +

    In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

    +

    Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

    + +

    Definition at line 230 of file LD2410Async.h.

    + +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__PublicData.js b/docu/group__LD2410Async__PublicData.js new file mode 100644 index 0000000..41ad25b --- /dev/null +++ b/docu/group__LD2410Async__PublicData.js @@ -0,0 +1,10 @@ +var group__LD2410Async__PublicData = +[ + [ "LD2410Async::getConfigData", "group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5", null ], + [ "LD2410Async::getConfigDataRef", "group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13", null ], + [ "LD2410Async::getDetectionData", "group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50", null ], + [ "LD2410Async::getDetectionDataRef", "group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090", null ], + [ "LD2410Async::autoConfigStatus", "group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "LD2410Async::configModeEnabled", "group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "LD2410Async::engineeringModeEnabled", "group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__StaticData.html b/docu/group__LD2410Async__StaticData.html new file mode 100644 index 0000000..87938ee --- /dev/null +++ b/docu/group__LD2410Async__StaticData.html @@ -0,0 +1,231 @@ + + + + + + + +LD2410Async: Static Sensor Data + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Static Sensor Data
    +
    +
    + + + + + + + + + + + + + + + + + +

    +Variables

    unsigned long LD2410Async::protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long LD2410Async::bufferSize = 0
     Buffer size reported by the radar protocol.
     
    String LD2410Async::firmware = ""
     Firmware version string of the radar.
     
    byte LD2410Async::mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String LD2410Async::macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    +

    Detailed Description

    +

    Methods, definitions and data to access static data (firmware version, bluetooth mac and so on) of the sensor.

    +

    Variable Documentation

    + +

    ◆ bufferSize

    + +
    +
    + + + + +
    unsigned long LD2410Async::bufferSize = 0
    +
    + +

    Buffer size reported by the radar protocol.

    +

    Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

    + +

    Definition at line 206 of file LD2410Async.h.

    + +
    +
    + +

    ◆ firmware

    + +
    +
    + + + + +
    String LD2410Async::firmware = ""
    +
    + +

    Firmware version string of the radar.

    +

    Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

    + +

    Definition at line 241 of file LD2410Async.h.

    + +
    +
    + +

    ◆ mac

    + +
    +
    + + + + +
    byte LD2410Async::mac[6]
    +
    + +

    MAC address of the radar’s Bluetooth module (if available).

    +

    Populated by requestBluetoothMacAddressAsync().

    + +

    Definition at line 251 of file LD2410Async.h.

    + +
    +
    + +

    ◆ macString

    + +
    +
    + + + + +
    String LD2410Async::macString = ""
    +
    + +

    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

    +

    Populated by requestBluetoothMacAddressAsync().

    + +

    Definition at line 261 of file LD2410Async.h.

    + +
    +
    + +

    ◆ protocolVersion

    + +
    +
    + + + + +
    unsigned long LD2410Async::protocolVersion = 0
    +
    + +

    Protocol version reported by the radar.

    +

    This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

    + +

    Definition at line 195 of file LD2410Async.h.

    + +
    +
    +
    +
    + + + + diff --git a/docu/group__LD2410Async__StaticData.js b/docu/group__LD2410Async__StaticData.js new file mode 100644 index 0000000..c5d37e7 --- /dev/null +++ b/docu/group__LD2410Async__StaticData.js @@ -0,0 +1,8 @@ +var group__LD2410Async__StaticData = +[ + [ "LD2410Async::bufferSize", "group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "LD2410Async::firmware", "group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "LD2410Async::mac", "group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e", null ], + [ "LD2410Async::macString", "group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "LD2410Async::protocolVersion", "group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b", null ] +]; \ No newline at end of file diff --git a/docu/group__LD2410Async__Types.html b/docu/group__LD2410Async__Types.html index eceb42d..0fb9092 100644 --- a/docu/group__LD2410Async__Types.html +++ b/docu/group__LD2410Async__Types.html @@ -5,7 +5,7 @@ -LD2410Async: Types And Callbacks +LD2410Async: Types, Enums & Structs @@ -98,23 +98,20 @@
    -
    Types And Callbacks
    +
    Types, Enums & Structs
    - - - - - - - - - - + + + + + + +

    -Typedefs

    typedef void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     

    +Classes

    struct  LD2410Types::DetectionData
     Holds the most recent detection data reported by the radar. More...
     
    struct  LD2410Types::ConfigData
     Stores the sensor’s configuration parameters. More...
     
    @@ -125,91 +122,359 @@ } + + + + + + + + + + + + + + + + + +

    Enumerations

     Result of an asynchronous command execution. More...
     
    enum class  LD2410Types::TargetState {
    +  LD2410Types::TargetState::NO_TARGET = 0 +, LD2410Types::TargetState::MOVING_TARGET = 1 +, LD2410Types::TargetState::STATIONARY_TARGET = 2 +, LD2410Types::TargetState::MOVING_AND_STATIONARY_TARGET = 3 +,
    +  LD2410Types::TargetState::AUTOCONFIG_IN_PROGRESS = 4 +, LD2410Types::TargetState::AUTOCONFIG_SUCCESS = 5 +, LD2410Types::TargetState::AUTOCONFIG_FAILED = 6 +
    + }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LD2410Types::LightControl { LD2410Types::LightControl::NOT_SET = -1 +, LD2410Types::LightControl::NO_LIGHT_CONTROL = 0 +, LD2410Types::LightControl::LIGHT_BELOW_THRESHOLD = 1 +, LD2410Types::LightControl::LIGHT_ABOVE_THRESHOLD = 2 + }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  LD2410Types::OutputControl { LD2410Types::OutputControl::NOT_SET = -1 +, LD2410Types::OutputControl::DEFAULT_LOW_DETECTED_HIGH = 0 +, LD2410Types::OutputControl::DEFAULT_HIGH_DETECTED_LOW = 1 + }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  LD2410Types::AutoConfigStatus { LD2410Types::AutoConfigStatus::NOT_SET = -1 +, LD2410Types::AutoConfigStatus::NOT_IN_PROGRESS +, LD2410Types::AutoConfigStatus::IN_PROGRESS +, LD2410Types::AutoConfigStatus::COMPLETED + }
     State of the automatic threshold configuration routine. More...
     
    enum class  LD2410Types::Baudrate {
    +  LD2410Types::Baudrate::BAUDRATE_9600 = 1 +, LD2410Types::Baudrate::BAUDRATE_19200 = 2 +, LD2410Types::Baudrate::BAUDRATE_38400 = 3 +, LD2410Types::Baudrate::BAUDRATE_57600 = 4 +,
    +  LD2410Types::Baudrate::BAUDRATE_115200 = 5 +, LD2410Types::Baudrate::BAUDRATE_230500 = 6 +, LD2410Types::Baudrate::BAUDRATE_256000 = 7 +, LD2410Types::Baudrate::BAUDRATE_460800 = 8 +
    + }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  LD2410Types::DistanceResolution { LD2410Types::DistanceResolution::NOT_SET = -1 +, LD2410Types::DistanceResolution::RESOLUTION_75CM = 0 +, LD2410Types::DistanceResolution::RESOLUTION_20CM = 1 + }
     Distance resolution per gate for detection. More...
     

    Detailed Description

    -

    Public types , enums and callback definitions

    -

    Typedef Documentation

    - -

    ◆ AsyncCommandCallback

    +

    Type, enum and struct definitions that are used by the LD2410Async lib.

    +

    Enumeration Type Documentation

    + +

    ◆ AsyncCommandResult

    + + + + + +
    - +
    void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)enum class LD2410Async::AsyncCommandResult : byte
    +
    +strong
    -

    Callback signature for asynchronous command completion.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    userDataUser-specified value passed when registering the callback.
    -
    -
    +

    Result of an asynchronous command execution.

    +

    Every async command reports back its outcome via the callback.

    + + + + + +
    Enumerator
    SUCCESS 

    Command completed successfully and ACK was received.

    +
    FAILED 

    Command failed (sensor responded with negative ACK).

    +
    TIMEOUT 

    No ACK received within the expected time window.

    +
    CANCELED 

    Command was canceled by the user before completion.

    +
    -

    Definition at line 117 of file LD2410Async.h.

    +

    Definition at line 98 of file LD2410Async.h.

    +
    98 : byte {
    +
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    101 TIMEOUT, ///< No ACK received within the expected time window.
    +
    102 CANCELED ///< Command was canceled by the user before completion.
    +
    103 };
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    +
    +
    +
    + +

    ◆ AutoConfigStatus

    +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::AutoConfigStatus
    +
    +strong
    +
    + +

    State of the automatic threshold configuration routine.

    +

    Auto-config adjusts the sensitivity thresholds for optimal detection in the current environment. This process may take several seconds.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Status not yet retrieved.

    +
    NOT_IN_PROGRESS 

    Auto-configuration not running.

    +
    IN_PROGRESS 

    Auto-configuration is currently running.

    +
    COMPLETED 

    Auto-configuration finished (success or failure).

    +
    + +

    Definition at line 168 of file LD2410Types.h.

    +
    168 {
    +
    169 NOT_SET = -1, ///< Status not yet retrieved.
    +
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    173 };
    +
    @ COMPLETED
    Auto-configuration finished (success or failure).
    +
    @ IN_PROGRESS
    Auto-configuration is currently running.
    +
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    - -

    ◆ DetectionDataCallback

    + +

    ◆ Baudrate

    + + + + + +
    - +
    void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)enum class LD2410Types::Baudrate
    +
    +strong
    -

    Callback type for receiving detection data events.

    -

    This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

    -
    Parameters
    - - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
    userDataUser-defined value passed when registering the callback.
    -
    -
    +

    Supported baud rates for the sensor’s UART interface.

    +

    These values correspond to the configuration commands accepted by the LD2410. After changing the baud rate, a sensor reboot is required, and the ESP32’s UART must be reconfigured to match.

    + + + + + + + + + +
    Enumerator
    BAUDRATE_9600 

    9600 baud.

    +
    BAUDRATE_19200 

    19200 baud.

    +
    BAUDRATE_38400 

    38400 baud.

    +
    BAUDRATE_57600 

    57600 baud.

    +
    BAUDRATE_115200 

    115200 baud.

    +
    BAUDRATE_230500 

    230400 baud.

    +
    BAUDRATE_256000 

    256000 baud (factory default).

    +
    BAUDRATE_460800 

    460800 baud (high-speed).

    +
    + +

    Definition at line 205 of file LD2410Types.h.

    +
    205 {
    +
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    214 };
    +
    @ BAUDRATE_57600
    57600 baud.
    +
    @ BAUDRATE_38400
    38400 baud.
    +
    @ BAUDRATE_230500
    230400 baud.
    +
    @ BAUDRATE_115200
    115200 baud.
    +
    @ BAUDRATE_256000
    256000 baud (factory default).
    +
    @ BAUDRATE_19200
    19200 baud.
    +
    @ BAUDRATE_9600
    9600 baud.
    +
    @ BAUDRATE_460800
    460800 baud (high-speed).
    +
    +
    +
    + +

    ◆ DistanceResolution

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::DistanceResolution
    +
    +strong
    +
    -

    Definition at line 139 of file LD2410Async.h.

    +

    Distance resolution per gate for detection.

    +

    The resolution defines how fine-grained the distance measurement is:

      +
    • RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    • +
    • RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    • +
    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    RESOLUTION_75CM 

    Each gate ~0.75 m, max range ~6 m.

    +
    RESOLUTION_20CM 

    Each gate ~0.20 m, max range ~1.8 m.

    +
    +

    Definition at line 227 of file LD2410Types.h.

    +
    227 {
    +
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    +
    231 };
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    - -

    ◆ GenericCallback

    + +

    ◆ LightControl

    + + + + + +
    - +
    void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)enum class LD2410Types::LightControl
    +
    +strong
    -

    Generic callback signature used for simple notifications.

    -
    Parameters
    - - - -
    senderPointer to the LD2410Async instance that triggered the callback.
    userDataUser-specified value passed when registering the callback.
    -
    -
    +

    Light-dependent control status of the auxiliary output.

    +

    The radar sensor can control an external output based on ambient light level in combination with presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    NO_LIGHT_CONTROL 

    Output is not influenced by light levels.

    +
    LIGHT_BELOW_THRESHOLD 

    Condition: light < threshold.

    +
    LIGHT_ABOVE_THRESHOLD 

    Condition: light ≥ threshold.

    +
    -

    Definition at line 125 of file LD2410Async.h.

    +

    Definition at line 97 of file LD2410Types.h.

    +
    97 {
    +
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    102 };
    +
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    +
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    +
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    +
    +
    +
    + +

    ◆ OutputControl

    +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::OutputControl
    +
    +strong
    +
    + +

    Logic level behavior of the auxiliary output pin.

    +

    Determines whether the output pin is active-high or active-low in relation to presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    DEFAULT_LOW_DETECTED_HIGH 

    Default low, goes HIGH when detection occurs.

    +
    DEFAULT_HIGH_DETECTED_LOW 

    Default high, goes LOW when detection occurs.

    +
    + +

    Definition at line 134 of file LD2410Types.h.

    +
    134 {
    +
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    138 };
    +
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    +
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    +
    -

    Enumeration Type Documentation

    - -

    ◆ AsyncCommandResult

    + +

    ◆ TargetState

    @@ -218,7 +483,7 @@

    - +
    enum class LD2410Async::AsyncCommandResult : byteenum class LD2410Types::TargetState
    @@ -228,30 +493,42 @@

    -

    Result of an asynchronous command execution.

    -

    Every async command reports back its outcome via the callback.

    +

    Represents the current target detection state reported by the radar.

    +

    Values can be combined internally by the sensor depending on its signal evaluation logic. The AUTO-CONFIG states are special values that are only reported while the sensor is running its self-calibration routine.

    - - - - + + +
    Enumerator
    SUCCESS 

    Command completed successfully and ACK was received.

    +
    Enumerator
    NO_TARGET 

    No moving or stationary target detected.

    FAILED 

    Command failed (sensor responded with negative ACK).

    +
    MOVING_TARGET 

    A moving target has been detected.

    TIMEOUT 

    No ACK received within the expected time window.

    +
    STATIONARY_TARGET 

    A stationary target has been detected.

    CANCELED 

    Command was canceled by the user before completion.

    +
    MOVING_AND_STATIONARY_TARGET 

    Both moving and stationary targets detected.

    +
    AUTOCONFIG_IN_PROGRESS 

    Auto-configuration routine is running.

    +
    AUTOCONFIG_SUCCESS 

    Auto-configuration completed successfully.

    +
    AUTOCONFIG_FAILED 

    Auto-configuration failed.

    -

    Definition at line 100 of file LD2410Async.h.

    -
    100 : byte {
    -
    101 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    102 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    103 TIMEOUT, ///< No ACK received within the expected time window.
    -
    104 CANCELED ///< Command was canceled by the user before completion.
    -
    105 };
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    +

    Definition at line 21 of file LD2410Types.h.

    +
    21 {
    +
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    29 };
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ NO_TARGET
    No moving or stationary target detected.
    +
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    +
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.

    diff --git a/docu/group__LD2410Async__Types.js b/docu/group__LD2410Async__Types.js index fff48a7..5385649 100644 --- a/docu/group__LD2410Async__Types.js +++ b/docu/group__LD2410Async__Types.js @@ -1,12 +1,85 @@ var group__LD2410Async__Types = [ - [ "LD2410Async::AsyncCommandCallback", "group__LD2410Async__Types.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], - [ "LD2410Async::DetectionDataCallback", "group__LD2410Async__Types.html#ga19278199112e9358e96a192056e58e81", null ], - [ "LD2410Async::GenericCallback", "group__LD2410Async__Types.html#ga7a4e264e51ed33f8f32d65510289c383", null ], + [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", [ + [ "print", "structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca", null ], + [ "detectedDistance", "structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507", null ], + [ "engineeringMode", "structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7", null ], + [ "lightLevel", "structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c", null ], + [ "movingPresenceDetected", "structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81", null ], + [ "movingTargetDistance", "structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6", null ], + [ "movingTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96", null ], + [ "movingTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696", null ], + [ "movingTargetSignal", "structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a", null ], + [ "outPinStatus", "structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2", null ], + [ "presenceDetected", "structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023", null ], + [ "stationaryPresenceDetected", "structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad", null ], + [ "stationaryTargetDistance", "structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317", null ], + [ "stationaryTargetGateSignalCount", "structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1", null ], + [ "stationaryTargetGateSignals", "structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b", null ], + [ "stationaryTargetSignal", "structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73", null ], + [ "targetState", "structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7", null ], + [ "timestamp", "structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d", null ] + ] ], + [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", [ + [ "equals", "structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028", null ], + [ "isValid", "structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885", null ], + [ "print", "structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624", null ], + [ "distanceGateMotionSensitivity", "structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c", null ], + [ "distanceGateStationarySensitivity", "structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8", null ], + [ "distanceResolution", "structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06", null ], + [ "lightControl", "structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7", null ], + [ "lightThreshold", "structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88", null ], + [ "maxMotionDistanceGate", "structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382", null ], + [ "maxStationaryDistanceGate", "structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6", null ], + [ "noOneTimeout", "structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf", null ], + [ "numberOfGates", "structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589", null ], + [ "outputControl", "structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87", null ] + ] ], [ "LD2410Async::AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ [ "LD2410Async::AsyncCommandResult::SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], [ "LD2410Async::AsyncCommandResult::FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], [ "LD2410Async::AsyncCommandResult::TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], [ "LD2410Async::AsyncCommandResult::CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + ] ], + [ "LD2410Types::AutoConfigStatus", "group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995", [ + [ "LD2410Types::AutoConfigStatus::NOT_SET", "group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "LD2410Types::AutoConfigStatus::NOT_IN_PROGRESS", "group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], + [ "LD2410Types::AutoConfigStatus::IN_PROGRESS", "group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], + [ "LD2410Types::AutoConfigStatus::COMPLETED", "group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] + ] ], + [ "LD2410Types::Baudrate", "group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf", [ + [ "LD2410Types::Baudrate::BAUDRATE_9600", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], + [ "LD2410Types::Baudrate::BAUDRATE_19200", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], + [ "LD2410Types::Baudrate::BAUDRATE_38400", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], + [ "LD2410Types::Baudrate::BAUDRATE_57600", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], + [ "LD2410Types::Baudrate::BAUDRATE_115200", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], + [ "LD2410Types::Baudrate::BAUDRATE_230500", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], + [ "LD2410Types::Baudrate::BAUDRATE_256000", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], + [ "LD2410Types::Baudrate::BAUDRATE_460800", "group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] + ] ], + [ "LD2410Types::DistanceResolution", "group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79", [ + [ "LD2410Types::DistanceResolution::NOT_SET", "group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "LD2410Types::DistanceResolution::RESOLUTION_75CM", "group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], + [ "LD2410Types::DistanceResolution::RESOLUTION_20CM", "group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] + ] ], + [ "LD2410Types::LightControl", "group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844", [ + [ "LD2410Types::LightControl::NOT_SET", "group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "LD2410Types::LightControl::NO_LIGHT_CONTROL", "group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], + [ "LD2410Types::LightControl::LIGHT_BELOW_THRESHOLD", "group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], + [ "LD2410Types::LightControl::LIGHT_ABOVE_THRESHOLD", "group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] + ] ], + [ "LD2410Types::OutputControl", "group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff", [ + [ "LD2410Types::OutputControl::NOT_SET", "group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], + [ "LD2410Types::OutputControl::DEFAULT_LOW_DETECTED_HIGH", "group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], + [ "LD2410Types::OutputControl::DEFAULT_HIGH_DETECTED_LOW", "group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] + ] ], + [ "LD2410Types::TargetState", "group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9", [ + [ "LD2410Types::TargetState::NO_TARGET", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], + [ "LD2410Types::TargetState::MOVING_TARGET", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], + [ "LD2410Types::TargetState::STATIONARY_TARGET", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], + [ "LD2410Types::TargetState::MOVING_AND_STATIONARY_TARGET", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], + [ "LD2410Types::TargetState::AUTOCONFIG_IN_PROGRESS", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], + [ "LD2410Types::TargetState::AUTOCONFIG_SUCCESS", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], + [ "LD2410Types::TargetState::AUTOCONFIG_FAILED", "group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] ] ] ]; \ No newline at end of file diff --git a/docu/groups_8dox.html b/docu/groups_8dox.html new file mode 100644 index 0000000..0e4f090 --- /dev/null +++ b/docu/groups_8dox.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: groups.dox File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    groups.dox File Reference
    +
    +
    +
    +
    + + + + diff --git a/docu/index.html b/docu/index.html index 6fd92f8..f1680a4 100644 --- a/docu/index.html +++ b/docu/index.html @@ -153,14 +153,14 @@

    // Register callback for detection updates
    radar.registerDetectionDataReceivedCallback([](LD2410Async* sender, bool presenceDetetced, byte userData) {
    -
    sender->getDetectionDataRef().print(); // direct access, no copy
    +
    sender->getDetectionDataRef().print(); // direct access, no copy
    });
    }
    void loop() {
    // Other application logic
    }
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    +
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    void print() const
    Debug helper: print detection data contents to Serial.

    diff --git a/docu/menudata.js b/docu/menudata.js index 3616a12..6032c01 100644 --- a/docu/menudata.js +++ b/docu/menudata.js @@ -24,6 +24,7 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, +{text:"Topics",url:"topics.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ diff --git a/docu/namespaceLD2410CommandBuilder.html b/docu/namespaceLD2410CommandBuilder.html index 74858f9..8404ee4 100644 --- a/docu/namespaceLD2410CommandBuilder.html +++ b/docu/namespaceLD2410CommandBuilder.html @@ -109,9 +109,9 @@   bool buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)   -bool buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution) +bool buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)   -bool buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) +bool buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)   bool buildBaudRateCommand (byte *out, byte baudRateSetting)   @@ -136,7 +136,7 @@

    - LD2410Types::LightControl lightControl, + LD2410Types::LightControl lightControl, @@ -146,7 +146,7 @@

    - LD2410Types::OutputControl outputControl ) + LD2410Types::OutputControl outputControl ) @@ -161,17 +161,17 @@

    65 memcpy(out, LD2410Defs::setAuxControlSettingCommandData,
    67
    -
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    -
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    +
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    +
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    70
    71 out[4] = byte(lightControl);
    72 out[5] = lightThreshold;
    73 out[6] = byte(outputControl);
    74 return true;
    75 }
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @@ -278,7 +278,7 @@

    - LD2410Types::DistanceResolution resolution ) + LD2410Types::DistanceResolution resolution ) @@ -290,11 +290,11 @@

    Definition at line 49 of file LD2410CommandBuilder.h.

    61 return true;
    62 }
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    diff --git a/docu/namespaceLD2410Types.html b/docu/namespaceLD2410Types.html index 231ef52..4f3e90f 100644 --- a/docu/namespaceLD2410Types.html +++ b/docu/namespaceLD2410Types.html @@ -115,370 +115,63 @@ - - - - + + - - - + + - - - + + - - - + + - - - + + - - + +

    Enumerations

    enum class  TargetState {
    -  NO_TARGET = 0 -, MOVING_TARGET = 1 -, STATIONARY_TARGET = 2 -, MOVING_AND_STATIONARY_TARGET = 3 +
    enum class  TargetState {
    +  TargetState::NO_TARGET = 0 +, TargetState::MOVING_TARGET = 1 +, TargetState::STATIONARY_TARGET = 2 +, TargetState::MOVING_AND_STATIONARY_TARGET = 3 ,
    -  AUTOCONFIG_IN_PROGRESS = 4 -, AUTOCONFIG_SUCCESS = 5 -, AUTOCONFIG_FAILED = 6 +  TargetState::AUTOCONFIG_IN_PROGRESS = 4 +, TargetState::AUTOCONFIG_SUCCESS = 5 +, TargetState::AUTOCONFIG_FAILED = 6
    }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LightControl { NOT_SET = -1 -, NO_LIGHT_CONTROL = 0 -, LIGHT_BELOW_THRESHOLD = 1 -, LIGHT_ABOVE_THRESHOLD = 2 +
     Represents the current target detection state reported by the radar. More...
     
    enum class  LightControl { LightControl::NOT_SET = -1 +, LightControl::NO_LIGHT_CONTROL = 0 +, LightControl::LIGHT_BELOW_THRESHOLD = 1 +, LightControl::LIGHT_ABOVE_THRESHOLD = 2 }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  OutputControl { NOT_SET = -1 -, DEFAULT_LOW_DETECTED_HIGH = 0 -, DEFAULT_HIGH_DETECTED_LOW = 1 +
     Light-dependent control status of the auxiliary output. More...
     
    enum class  OutputControl { OutputControl::NOT_SET = -1 +, OutputControl::DEFAULT_LOW_DETECTED_HIGH = 0 +, OutputControl::DEFAULT_HIGH_DETECTED_LOW = 1 }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  AutoConfigStatus { NOT_SET = -1 -, NOT_IN_PROGRESS -, IN_PROGRESS -, COMPLETED +
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  AutoConfigStatus { AutoConfigStatus::NOT_SET = -1 +, AutoConfigStatus::NOT_IN_PROGRESS +, AutoConfigStatus::IN_PROGRESS +, AutoConfigStatus::COMPLETED }
     State of the automatic threshold configuration routine. More...
     
    enum class  Baudrate {
    -  BAUDRATE_9600 = 1 -, BAUDRATE_19200 = 2 -, BAUDRATE_38400 = 3 -, BAUDRATE_57600 = 4 +
     State of the automatic threshold configuration routine. More...
     
    enum class  Baudrate {
    +  Baudrate::BAUDRATE_9600 = 1 +, Baudrate::BAUDRATE_19200 = 2 +, Baudrate::BAUDRATE_38400 = 3 +, Baudrate::BAUDRATE_57600 = 4 ,
    -  BAUDRATE_115200 = 5 -, BAUDRATE_230500 = 6 -, BAUDRATE_256000 = 7 -, BAUDRATE_460800 = 8 +  Baudrate::BAUDRATE_115200 = 5 +, Baudrate::BAUDRATE_230500 = 6 +, Baudrate::BAUDRATE_256000 = 7 +, Baudrate::BAUDRATE_460800 = 8
    }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  DistanceResolution { NOT_SET = -1 -, RESOLUTION_75CM = 0 -, RESOLUTION_20CM = 1 +
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  DistanceResolution { DistanceResolution::NOT_SET = -1 +, DistanceResolution::RESOLUTION_75CM = 0 +, DistanceResolution::RESOLUTION_20CM = 1 }
     Distance resolution per gate for detection. More...
     
     Distance resolution per gate for detection. More...
     

    Detailed Description

    @ brief All enums, structs, and type helpers for LD2410Async

    -

    Enumeration Type Documentation

    - -

    ◆ AutoConfigStatus

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::AutoConfigStatus
    -
    -strong
    -
    - -

    State of the automatic threshold configuration routine.

    -

    Auto-config adjusts the sensitivity thresholds for optimal detection in the current environment. This process may take several seconds.

    -

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    - - - - - -
    Enumerator
    NOT_SET 

    Status not yet retrieved.

    -
    NOT_IN_PROGRESS 

    Auto-configuration not running.

    -
    IN_PROGRESS 

    Auto-configuration is currently running.

    -
    COMPLETED 

    Auto-configuration finished (success or failure).

    -
    - -

    Definition at line 168 of file LD2410Types.h.

    -
    168 {
    -
    169 NOT_SET = -1, ///< Status not yet retrieved.
    -
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    -
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    -
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    -
    173 };
    -
    @ COMPLETED
    Auto-configuration finished (success or failure).
    -
    @ IN_PROGRESS
    Auto-configuration is currently running.
    -
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    -
    -
    - -

    ◆ Baudrate

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::Baudrate
    -
    -strong
    -
    - -

    Supported baud rates for the sensor’s UART interface.

    -

    These values correspond to the configuration commands accepted by the LD2410. After changing the baud rate, a sensor reboot is required, and the ESP32’s UART must be reconfigured to match.

    - - - - - - - - - -
    Enumerator
    BAUDRATE_9600 

    9600 baud.

    -
    BAUDRATE_19200 

    19200 baud.

    -
    BAUDRATE_38400 

    38400 baud.

    -
    BAUDRATE_57600 

    57600 baud.

    -
    BAUDRATE_115200 

    115200 baud.

    -
    BAUDRATE_230500 

    230400 baud.

    -
    BAUDRATE_256000 

    256000 baud (factory default).

    -
    BAUDRATE_460800 

    460800 baud (high-speed).

    -
    - -

    Definition at line 205 of file LD2410Types.h.

    -
    205 {
    -
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    -
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    -
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    -
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    -
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    -
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    -
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    -
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    -
    214 };
    -
    @ BAUDRATE_57600
    57600 baud.
    -
    @ BAUDRATE_38400
    38400 baud.
    -
    @ BAUDRATE_230500
    230400 baud.
    -
    @ BAUDRATE_115200
    115200 baud.
    -
    @ BAUDRATE_256000
    256000 baud (factory default).
    -
    @ BAUDRATE_19200
    19200 baud.
    -
    @ BAUDRATE_9600
    9600 baud.
    -
    @ BAUDRATE_460800
    460800 baud (high-speed).
    -
    -
    -
    - -

    ◆ DistanceResolution

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::DistanceResolution
    -
    -strong
    -
    - -

    Distance resolution per gate for detection.

    -

    The resolution defines how fine-grained the distance measurement is:

      -
    • RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    • -
    • RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    • -
    -

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    - - - - -
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    -
    RESOLUTION_75CM 

    Each gate ~0.75 m, max range ~6 m.

    -
    RESOLUTION_20CM 

    Each gate ~0.20 m, max range ~1.8 m.

    -
    - -

    Definition at line 227 of file LD2410Types.h.

    -
    227 {
    -
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    -
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    -
    231 };
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    -
    -
    - -

    ◆ LightControl

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::LightControl
    -
    -strong
    -
    - -

    Light-dependent control status of the auxiliary output.

    -

    The radar sensor can control an external output based on ambient light level in combination with presence detection.

    -

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    - - - - - -
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    -
    NO_LIGHT_CONTROL 

    Output is not influenced by light levels.

    -
    LIGHT_BELOW_THRESHOLD 

    Condition: light < threshold.

    -
    LIGHT_ABOVE_THRESHOLD 

    Condition: light ≥ threshold.

    -
    - -

    Definition at line 97 of file LD2410Types.h.

    -
    97 {
    -
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    -
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    -
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    -
    102 };
    -
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    -
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    -
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    -
    -
    -
    - -

    ◆ OutputControl

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::OutputControl
    -
    -strong
    -
    - -

    Logic level behavior of the auxiliary output pin.

    -

    Determines whether the output pin is active-high or active-low in relation to presence detection.

    -

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    - - - - -
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    -
    DEFAULT_LOW_DETECTED_HIGH 

    Default low, goes HIGH when detection occurs.

    -
    DEFAULT_HIGH_DETECTED_LOW 

    Default high, goes LOW when detection occurs.

    -
    - -

    Definition at line 134 of file LD2410Types.h.

    -
    134 {
    -
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    -
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    -
    138 };
    -
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    -
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    -
    -
    -
    - -

    ◆ TargetState

    - -
    -
    - - - - - -
    - - - - -
    enum class LD2410Types::TargetState
    -
    -strong
    -
    - -

    Represents the current target detection state reported by the radar.

    -

    Values can be combined internally by the sensor depending on its signal evaluation logic. The AUTO-CONFIG states are special values that are only reported while the sensor is running its self-calibration routine.

    - - - - - - - - -
    Enumerator
    NO_TARGET 

    No moving or stationary target detected.

    -
    MOVING_TARGET 

    A moving target has been detected.

    -
    STATIONARY_TARGET 

    A stationary target has been detected.

    -
    MOVING_AND_STATIONARY_TARGET 

    Both moving and stationary targets detected.

    -
    AUTOCONFIG_IN_PROGRESS 

    Auto-configuration routine is running.

    -
    AUTOCONFIG_SUCCESS 

    Auto-configuration completed successfully.

    -
    AUTOCONFIG_FAILED 

    Auto-configuration failed.

    -
    - -

    Definition at line 21 of file LD2410Types.h.

    -
    21 {
    -
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    -
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    -
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    -
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    -
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    -
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    -
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    -
    29 };
    -
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    -
    @ NO_TARGET
    No moving or stationary target detected.
    -
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    -
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    -
    @ STATIONARY_TARGET
    A stationary target has been detected.
    -
    @ MOVING_TARGET
    A moving target has been detected.
    -
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    -
    -
    -
    - + diff --git a/docu/namespacemembers_enum.html b/docu/namespacemembers_enum.html index 2ba94db..2c578c0 100644 --- a/docu/namespacemembers_enum.html +++ b/docu/namespacemembers_enum.html @@ -98,12 +98,12 @@
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    diff --git a/docu/navtreedata.js b/docu/navtreedata.js index 92e3375..60b89d0 100644 --- a/docu/navtreedata.js +++ b/docu/navtreedata.js @@ -33,6 +33,7 @@ var NAVTREE = ] ], [ "Usage", "index.html#autotoc_md4", null ] ] ], + [ "Topics", "topics.html", "topics" ], [ "Namespaces", "namespaces.html", [ [ "Namespace List", "namespaces.html", "namespaces_dup" ], [ "Namespace Members", "namespacemembers.html", [ @@ -67,7 +68,7 @@ var NAVTREE = var NAVTREEINDEX = [ "LD2410Async_8cpp.html", -"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34" +"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docu/navtreeindex0.js b/docu/navtreeindex0.js index 973557b..a22161e 100644 --- a/docu/navtreeindex0.js +++ b/docu/navtreeindex0.js @@ -1,209 +1,222 @@ var NAVTREEINDEX0 = { -"LD2410Async_8cpp.html":[3,0,4], -"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[3,0,4,1], -"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[3,0,4,0], -"LD2410Async_8cpp_source.html":[3,0,4], -"LD2410Async_8h.html":[3,0,5], -"LD2410Async_8h_source.html":[3,0,5], -"LD2410CommandBuilder_8h.html":[3,0,6], -"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[3,0,6,5], -"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[3,0,6,3], -"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[3,0,6,0], -"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[3,0,6,4], -"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[3,0,6,2], -"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[3,0,6,1], -"LD2410CommandBuilder_8h_source.html":[3,0,6], -"LD2410Debug_8h.html":[3,0,7], -"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[3,0,7,4], -"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[3,0,7,7], -"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[3,0,7,2], -"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[3,0,7,1], -"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[3,0,7,6], -"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[3,0,7,0], -"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[3,0,7,3], -"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[3,0,7,5], -"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[3,0,7,8], -"LD2410Debug_8h_source.html":[3,0,7], -"LD2410Defs_8h.html":[3,0,8], -"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[3,0,8,24], -"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[3,0,8,37], -"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[3,0,8,5], -"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[3,0,8,28], -"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[3,0,8,45], -"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[3,0,8,8], -"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[3,0,8,11], -"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[3,0,8,32], -"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[3,0,8,38], -"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[3,0,8,9], -"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[3,0,8,2], -"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[3,0,8,35], -"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[3,0,8,26], -"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[3,0,8,10], -"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[3,0,8,42], -"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[3,0,8,43], -"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[3,0,8,20], -"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[3,0,8,39], -"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[3,0,8,46], -"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[3,0,8,16], -"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[3,0,8,41], -"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[3,0,8,23], -"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[3,0,8,12], -"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[3,0,8,22], -"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[3,0,8,25], -"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[3,0,8,40], -"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[3,0,8,36], -"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[3,0,8,4], -"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[3,0,8,33], -"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[3,0,8,3], -"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[3,0,8,31], -"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[3,0,8,17], -"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[3,0,8,44], -"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[3,0,8,21], -"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[3,0,8,29], -"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[3,0,8,1], -"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[3,0,8,18], -"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[3,0,8,19], -"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[3,0,8,0], -"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[3,0,8,6], -"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[3,0,8,15], -"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[3,0,8,7], -"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[3,0,8,47], -"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[3,0,8,30], -"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[3,0,8,14], -"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[3,0,8,13], -"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[3,0,8,27], -"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[3,0,8,34], -"LD2410Defs_8h_source.html":[3,0,8], -"LD2410Types_8h.html":[3,0,9], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[3,0,9,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,2,0], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[3,0,9,2,3], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[3,0,9,2,2], -"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[3,0,9,2,1], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[3,0,9,6], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[3,0,9,6,0], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[3,0,9,6,2], -"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[3,0,9,6,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[3,0,9,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[3,0,9,3,3], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[3,0,9,3,2], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[3,0,9,3,5], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[3,0,9,3,4], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[3,0,9,3,6], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[3,0,9,3,1], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[3,0,9,3,0], -"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[3,0,9,3,7], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[3,0,9,4], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,4,0], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[3,0,9,4,2], -"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[3,0,9,4,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[3,0,9,7], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[3,0,9,7,3], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[3,0,9,7,0], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[3,0,9,7,4], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[3,0,9,7,6], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[3,0,9,7,2], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[3,0,9,7,1], -"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[3,0,9,7,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[3,0,9,5], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[3,0,9,5,0], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[3,0,9,5,2], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[3,0,9,5,3], -"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[3,0,9,5,1], -"LD2410Types_8h_source.html":[3,0,9], -"annotated.html":[2,0], -"basicPresenceDetection_8ino.html":[3,0,0,0], -"basicPresenceDetection_8ino_source.html":[3,0,0,0], -"changeConfig_8ino.html":[3,0,1,0], -"changeConfig_8ino_source.html":[3,0,1,0], -"changeDistanceResolution_8ino.html":[3,0,2,0], -"changeDistanceResolution_8ino_source.html":[3,0,2,0], -"classLD2410Async.html":[2,0,1], -"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[2,0,1,21], -"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[2,0,1,5], -"classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4":[2,0,1,55], -"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[2,0,1,20], -"classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024":[2,0,1,7], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab":[2,0,1,3], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[2,0,1,3,2], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[2,0,1,3,1], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[2,0,1,3,0], -"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[2,0,1,3,3], -"classLD2410Async.html#a19278199112e9358e96a192056e58e81":[2,0,1,1], -"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[2,0,1,17], -"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[2,0,1,37], -"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[2,0,1,49], -"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[2,0,1,24], -"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[2,0,1,48], -"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[2,0,1,11], -"classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3":[2,0,1,29], -"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[2,0,1,18], -"classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76":[2,0,1,54], -"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[2,0,1,9], -"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[2,0,1,32], -"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[2,0,1,34], -"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[2,0,1,53], -"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[2,0,1,50], -"classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02":[2,0,1,58], -"classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2":[2,0,1,25], -"classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf":[2,0,1,62], -"classLD2410Async.html#a714e62534394a52243f8f50fd58726f9":[2,0,1,41], -"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[2,0,1,6], -"classLD2410Async.html#a74138af198ac827349a25e122277803f":[2,0,1,36], -"classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7":[2,0,1,59], -"classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383":[2,0,1,2], -"classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e":[2,0,1,63], -"classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1":[2,0,1,64], -"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[2,0,1,45], -"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[2,0,1,10], -"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[2,0,1,31], -"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[2,0,1,16], -"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[2,0,1,23], -"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[2,0,1,26], -"classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8":[2,0,1,60], -"classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694":[2,0,1,56], -"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[2,0,1,13], -"classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7":[2,0,1,61], -"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[2,0,1,52], -"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[2,0,1,44], -"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[2,0,1,15], -"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[2,0,1,14], -"classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900":[2,0,1,4], -"classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1":[2,0,1,57], -"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[2,0,1,46], -"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[2,0,1,27], -"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[2,0,1,38], -"classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285":[2,0,1,42], -"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[2,0,1,28], -"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[2,0,1,51], -"classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b":[2,0,1,65], -"classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603":[2,0,1,0], -"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[2,0,1,12], -"classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6":[2,0,1,39], -"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[2,0,1,22], -"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[2,0,1,35], -"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[2,0,1,19], -"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[2,0,1,40], -"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[2,0,1,8], -"classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282":[2,0,1,43], -"classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54":[2,0,1,30], -"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[2,0,1,33], -"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[2,0,1,47], -"classes.html":[2,1], -"dir_0877bab65d936efc50d6280cdd9a4b61.html":[3,0,1], -"dir_094f9dbbdfe7cfb87799ec39fb2dbfcf.html":[3,0,0], -"dir_214001d413268a160f69364489f85961.html":[3,0,3], -"dir_cbdfb87722f5bb03bbdd3fbaa888c5cd.html":[3,0,2], -"files.html":[3,0], -"functions.html":[2,2,0], -"functions_enum.html":[2,2,4], -"functions_func.html":[2,2,1], -"functions_type.html":[2,2,3], -"functions_vars.html":[2,2,2], -"globals.html":[3,1,0], -"globals_defs.html":[3,1,2], -"globals_func.html":[3,1,1], +"LD2410Async_8cpp.html":[4,0,5], +"LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d":[4,0,5,1], +"LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e":[4,0,5,0], +"LD2410Async_8cpp_source.html":[4,0,5], +"LD2410Async_8h.html":[4,0,6], +"LD2410Async_8h_source.html":[4,0,6], +"LD2410CommandBuilder_8h.html":[4,0,7], +"LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[4,0,7,5], +"LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[4,0,7,3], +"LD2410CommandBuilder_8h.html#a8b54a13a534e713b1fc2b29818bbe255":[4,0,7,0], +"LD2410CommandBuilder_8h.html#a9879fbf4d013640f1a9bffdbc21122f6":[4,0,7,4], +"LD2410CommandBuilder_8h.html#abf6ee0e1bb505fd30efd8b776557cf1f":[4,0,7,2], +"LD2410CommandBuilder_8h.html#af8eb163ccaa819b1504b79459ed48729":[4,0,7,1], +"LD2410CommandBuilder_8h_source.html":[4,0,7], +"LD2410Debug_8h.html":[4,0,8], +"LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a":[4,0,8,4], +"LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40":[4,0,8,7], +"LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab":[4,0,8,2], +"LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332":[4,0,8,1], +"LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48":[4,0,8,6], +"LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23":[4,0,8,0], +"LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe":[4,0,8,3], +"LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34":[4,0,8,5], +"LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163":[4,0,8,8], +"LD2410Debug_8h_source.html":[4,0,8], +"LD2410Defs_8h.html":[4,0,9], +"LD2410Defs_8h.html#a0c5878f3ba1164c23d0654fb0b7ea699":[4,0,9,24], +"LD2410Defs_8h.html#a17f67486a419c2e53c2a114c70e3475e":[4,0,9,37], +"LD2410Defs_8h.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[4,0,9,5], +"LD2410Defs_8h.html#a1b320d184f1c89ad7f417e4a02340273":[4,0,9,28], +"LD2410Defs_8h.html#a224df157cdb42295da68de5e1d69a7e9":[4,0,9,45], +"LD2410Defs_8h.html#a24c181140918fe672b14eafdf004cec3":[4,0,9,8], +"LD2410Defs_8h.html#a2843d4509bd2054a39a74b2bca02a46d":[4,0,9,11], +"LD2410Defs_8h.html#a288ade057ae4a3b8b969f7a5f3dceb62":[4,0,9,32], +"LD2410Defs_8h.html#a2b867a8f8e4028ff10410f8f71f78d18":[4,0,9,38], +"LD2410Defs_8h.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[4,0,9,9], +"LD2410Defs_8h.html#a339b0ed2010ad37503a32f05fb79f105":[4,0,9,2], +"LD2410Defs_8h.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[4,0,9,35], +"LD2410Defs_8h.html#a37bbc4c12fbe98883f42b07723efd7dd":[4,0,9,26], +"LD2410Defs_8h.html#a38aba7176fd8cb28fb74ae61e8b237f4":[4,0,9,10], +"LD2410Defs_8h.html#a3b188cd2f935fad68b0500477b3f99d8":[4,0,9,42], +"LD2410Defs_8h.html#a41dce04a3403987c72459f430e494151":[4,0,9,43], +"LD2410Defs_8h.html#a4ad071572bfd4cd28163b87cd3774e97":[4,0,9,20], +"LD2410Defs_8h.html#a4c65b0c00cda2003af1eb958d83aab3b":[4,0,9,39], +"LD2410Defs_8h.html#a54f46c31b33373a8f1d0d41b1418b2ce":[4,0,9,46], +"LD2410Defs_8h.html#a5bd9f1f14255e2b786c58849f617f478":[4,0,9,16], +"LD2410Defs_8h.html#a5f6064d89a9145a79a9fd86908073ec9":[4,0,9,41], +"LD2410Defs_8h.html#a63669f8d129d9806f915b9a02a3b7cde":[4,0,9,23], +"LD2410Defs_8h.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[4,0,9,12], +"LD2410Defs_8h.html#a7d2609105c98e4fa48138fe94de0dd2a":[4,0,9,22], +"LD2410Defs_8h.html#a7e1fc3bc2470fd78f5a01558c1cff303":[4,0,9,25], +"LD2410Defs_8h.html#a7fc888217a5c3212c4f1875d2b46e790":[4,0,9,40], +"LD2410Defs_8h.html#a84d36b455dbae471e689a52fc92aeb75":[4,0,9,36], +"LD2410Defs_8h.html#a8791ca49d8e8f59a1624168988a9adb8":[4,0,9,4], +"LD2410Defs_8h.html#a8c586edf6788f08c149e463550270b5b":[4,0,9,33], +"LD2410Defs_8h.html#a94d0e80954d9fd9303361ed7c6b859c7":[4,0,9,3], +"LD2410Defs_8h.html#a9558e2afe2a1a0c9c65efcd302bf32df":[4,0,9,31], +"LD2410Defs_8h.html#a975ffcb4167ef7e6438dbf1d8de49b34":[4,0,9,17], +"LD2410Defs_8h.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[4,0,9,44], +"LD2410Defs_8h.html#aa1b5e5bcf1889588b28416af63dab7c5":[4,0,9,21], +"LD2410Defs_8h.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[4,0,9,29], +"LD2410Defs_8h.html#aaeb20d14777a0c2cce3d28e11a9cb200":[4,0,9,1], +"LD2410Defs_8h.html#ab5971df32a3e09229234634c403d711f":[4,0,9,18], +"LD2410Defs_8h.html#ab608eaab7657a8a9b017963743382816":[4,0,9,19], +"LD2410Defs_8h.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[4,0,9,0], +"LD2410Defs_8h.html#abe7cd26a356520b78f95a19f93c07584":[4,0,9,6], +"LD2410Defs_8h.html#acd39b7ff206092ec4912dc723ac6ad34":[4,0,9,15], +"LD2410Defs_8h.html#ad01a5350b3a1446500b3718fdde2bc55":[4,0,9,7], +"LD2410Defs_8h.html#ae14e5ef44857bd31bc38e0381e80427f":[4,0,9,47], +"LD2410Defs_8h.html#aed0aaf9126c55d8786ddf8335723c2f6":[4,0,9,30], +"LD2410Defs_8h.html#af478c0573d7fd15a2e1b5a5c4534241d":[4,0,9,14], +"LD2410Defs_8h.html#af71a5ec1c13f5f070d63b61300505fd9":[4,0,9,13], +"LD2410Defs_8h.html#af9b20b14a71f3dbf7e5b8519236d51fd":[4,0,9,27], +"LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[4,0,9,34], +"LD2410Defs_8h_source.html":[4,0,9], +"LD2410Types_8h.html":[4,0,10], +"LD2410Types_8h_source.html":[4,0,10], +"annotated.html":[3,0], +"basicPresenceDetection_8ino.html":[4,0,0,0], +"basicPresenceDetection_8ino_source.html":[4,0,0,0], +"changeConfig_8ino.html":[4,0,1,0], +"changeConfig_8ino_source.html":[4,0,1,0], +"changeDistanceResolution_8ino.html":[4,0,2,0], +"changeDistanceResolution_8ino_source.html":[4,0,2,0], +"classLD2410Async.html":[3,0,1], +"classes.html":[3,1], +"dir_107e309f9f293897177ec4de6cf5a764.html":[4,0,3], +"dir_30f1c3aaa201f9bae8f75919357e181e.html":[4,0,0], +"dir_50142b4b88c8e10a7393418c3979093f.html":[4,0,4], +"dir_55a0bb9b3d2fa4df0d3e71daeff4f6fe.html":[4,0,1], +"dir_595d66bff896d8b55fe1899c99f27ac3.html":[4,0,2], +"files.html":[4,0], +"functions.html":[3,2,0], +"functions_enum.html":[3,2,4], +"functions_func.html":[3,2,1], +"functions_type.html":[3,2,3], +"functions_vars.html":[3,2,2], +"globals.html":[4,1,0], +"globals_defs.html":[4,1,2], +"globals_func.html":[4,1,1], +"group__LD2410Async__AsyncCommands.html":[1,0], +"group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1":[1,0,0], +"group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3":[1,0,2], +"group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325":[1,0,4], +"group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153":[1,0,1], +"group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a":[1,0,3], +"group__LD2410Async__Bluetooth.html":[1,1], +"group__LD2410Async__Callbacks.html":[1,2], +"group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383":[1,2,1], +"group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603":[1,2,0], +"group__LD2410Async__Configuration.html":[1,9], +"group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48":[1,9,3], +"group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02":[1,9,6], +"group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9":[1,9,4], +"group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c":[1,9,1], +"group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9":[1,9,2], +"group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285":[1,9,5], +"group__LD2410Async__HighLevelCommands.html":[1,4], +"group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede":[1,4,0], +"group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6":[1,4,2], +"group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38":[1,4,1], +"group__LD2410Async__InactivityHandling.html":[1,5], +"group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4":[1,5,5], +"group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3":[1,5,1], +"group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76":[1,5,4], +"group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2":[1,5,0], +"group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f":[1,5,2], +"group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6":[1,5,3], +"group__LD2410Async__MainMethods.html":[1,3], +"group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024":[1,3,0], +"group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900":[1,3,2], +"group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54":[1,3,1], +"group__LD2410Async__NativeCommands.html":[1,6], +"group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c":[1,6,12], +"group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a":[1,6,11], +"group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38":[1,6,8], +"group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046":[1,6,19], +"group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be":[1,6,18], +"group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c":[1,6,2], +"group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82":[1,6,9], +"group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21":[1,6,20], +"group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd":[1,6,1], +"group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213":[1,6,7], +"group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973":[1,6,14], +"group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22":[1,6,4], +"group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659":[1,6,22], +"group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50":[1,6,6], +"group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266":[1,6,5], +"group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6":[1,6,16], +"group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6":[1,6,21], +"group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a":[1,6,3], +"group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862":[1,6,13], +"group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250":[1,6,10], +"group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235":[1,6,15], +"group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc":[1,6,0], +"group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb":[1,6,17], +"group__LD2410Async__PresenceDetection.html":[1,7], +"group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81":[1,7,1], +"group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8":[1,7,5], +"group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19":[1,7,3], +"group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d":[1,7,2], +"group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282":[1,7,4], +"group__LD2410Async__PublicData.html":[1,8], +"group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5":[1,8,0], +"group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50":[1,8,2], +"group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7":[1,8,5], +"group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694":[1,8,4], +"group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7":[1,8,6], +"group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090":[1,8,3], +"group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13":[1,8,1], +"group__LD2410Async__StaticData.html":[1,10], +"group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf":[1,10,1], +"group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e":[1,10,2], +"group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1":[1,10,3], +"group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1":[1,10,0], +"group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b":[1,10,4], +"group__LD2410Async__Types.html":[1,11], +"group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995":[1,11,3], +"group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab":[1,11,2], +"group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff":[1,11,7], +"group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf":[1,11,4], +"group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79":[1,11,5], +"group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9":[1,11,8], +"group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844":[1,11,6], +"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[1,11,3,0], +"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[1,11,3,3], +"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[1,11,3,2], +"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[1,11,3,1], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[1,11,2,2], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[1,11,2,1], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[1,11,2,0], +"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[1,11,2,3], +"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[1,11,7,0], +"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[1,11,7,2], +"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[1,11,7,1], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[1,11,4,3], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[1,11,4,2], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[1,11,4,5], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[1,11,4,4], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[1,11,4,6], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[1,11,4,1], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[1,11,4,0], +"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[1,11,4,7], +"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[1,11,5,0], +"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[1,11,5,2], +"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[1,11,5,1], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[1,11,8,3], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[1,11,8,0], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[1,11,8,4], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[1,11,8,6], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[1,11,8,2], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[1,11,8,1], +"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[1,11,8,5], +"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[1,11,6,0], +"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[1,11,6,2], +"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[1,11,6,3], +"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[1,11,6,1], "index.html":[], "index.html#autotoc_md0":[0,0], "index.html#autotoc_md1":[0,1], @@ -211,43 +224,30 @@ var NAVTREEINDEX0 = "index.html#autotoc_md3":[0,1,1], "index.html#autotoc_md4":[0,2], "index.html#intro_sec":[0], -"namespaceLD2410CommandBuilder.html":[1,0,0], -"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[1,0,0,5], -"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[1,0,0,3], -"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[1,0,0,0], -"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[1,0,0,4], -"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[1,0,0,2], -"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[1,0,0,1], -"namespaceLD2410Defs.html":[1,0,1], -"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[1,0,1,24], -"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[1,0,1,37], -"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[1,0,1,5], -"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[1,0,1,28], -"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[1,0,1,45], -"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[1,0,1,8], -"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[1,0,1,11], -"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[1,0,1,32], -"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[1,0,1,38], -"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[1,0,1,9], -"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[1,0,1,2], -"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[1,0,1,35], -"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[1,0,1,26], -"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[1,0,1,10], -"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[1,0,1,42], -"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[1,0,1,43], -"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[1,0,1,20], -"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[1,0,1,39], -"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[1,0,1,46], -"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[1,0,1,16], -"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[1,0,1,41], -"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[1,0,1,23], -"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[1,0,1,12], -"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[1,0,1,22], -"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[1,0,1,25], -"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[1,0,1,40], -"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[1,0,1,36], -"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[1,0,1,4], -"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[1,0,1,33], -"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[1,0,1,3], -"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[1,0,1,31] +"namespaceLD2410CommandBuilder.html":[2,0,0], +"namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e":[2,0,0,5], +"namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[2,0,0,3], +"namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255":[2,0,0,0], +"namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6":[2,0,0,4], +"namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f":[2,0,0,2], +"namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729":[2,0,0,1], +"namespaceLD2410Defs.html":[2,0,1], +"namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699":[2,0,1,24], +"namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e":[2,0,1,37], +"namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89":[2,0,1,5], +"namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273":[2,0,1,28], +"namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9":[2,0,1,45], +"namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3":[2,0,1,8], +"namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d":[2,0,1,11], +"namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62":[2,0,1,32], +"namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18":[2,0,1,38], +"namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8":[2,0,1,9], +"namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105":[2,0,1,2], +"namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b":[2,0,1,35], +"namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd":[2,0,1,26], +"namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4":[2,0,1,10], +"namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[2,0,1,42], +"namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[2,0,1,43], +"namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[2,0,1,20], +"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,1,39] }; diff --git a/docu/navtreeindex1.js b/docu/navtreeindex1.js index b38834a..31daee4 100644 --- a/docu/navtreeindex1.js +++ b/docu/navtreeindex1.js @@ -1,130 +1,109 @@ var NAVTREEINDEX1 = { -"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[1,0,1,17], -"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[1,0,1,44], -"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[1,0,1,21], -"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[1,0,1,29], -"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[1,0,1,1], -"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[1,0,1,18], -"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[1,0,1,19], -"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[1,0,1,0], -"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[1,0,1,6], -"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[1,0,1,15], -"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[1,0,1,7], -"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[1,0,1,47], -"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[1,0,1,30], -"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[1,0,1,14], -"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[1,0,1,13], -"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[1,0,1,27], -"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[1,0,1,34], -"namespaceLD2410Types.html":[1,0,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[1,0,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,2,0], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[1,0,2,2,3], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[1,0,2,2,2], -"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[1,0,2,2,1], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[1,0,2,6], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[1,0,2,6,0], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[1,0,2,6,2], -"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[1,0,2,6,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[1,0,2,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[1,0,2,3,3], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[1,0,2,3,2], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[1,0,2,3,5], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[1,0,2,3,4], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[1,0,2,3,6], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[1,0,2,3,1], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[1,0,2,3,0], -"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[1,0,2,3,7], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[1,0,2,4], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,4,0], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[1,0,2,4,2], -"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[1,0,2,4,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[1,0,2,7], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[1,0,2,7,3], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[1,0,2,7,0], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[1,0,2,7,4], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[1,0,2,7,6], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[1,0,2,7,2], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[1,0,2,7,1], -"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[1,0,2,7,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[1,0,2,5], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[1,0,2,5,0], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[1,0,2,5,2], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[1,0,2,5,3], -"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[1,0,2,5,1], -"namespacemembers.html":[1,1,0], -"namespacemembers_enum.html":[1,1,3], -"namespacemembers_func.html":[1,1,1], -"namespacemembers_vars.html":[1,1,2], -"namespaces.html":[1,0], +"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,1,46], +"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,1,16], +"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,1,41], +"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,1,23], +"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,1,12], +"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,1,22], +"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,1,25], +"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,1,40], +"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,1,36], +"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,1,4], +"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[2,0,1,33], +"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[2,0,1,3], +"namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[2,0,1,31], +"namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[2,0,1,17], +"namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb":[2,0,1,44], +"namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5":[2,0,1,21], +"namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2":[2,0,1,29], +"namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200":[2,0,1,1], +"namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f":[2,0,1,18], +"namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816":[2,0,1,19], +"namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398":[2,0,1,0], +"namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584":[2,0,1,6], +"namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34":[2,0,1,15], +"namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55":[2,0,1,7], +"namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f":[2,0,1,47], +"namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6":[2,0,1,30], +"namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d":[2,0,1,14], +"namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9":[2,0,1,13], +"namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[2,0,1,27], +"namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[2,0,1,34], +"namespaceLD2410Types.html":[2,0,2], +"namespacemembers.html":[2,1,0], +"namespacemembers_enum.html":[2,1,3], +"namespacemembers_func.html":[2,1,1], +"namespacemembers_vars.html":[2,1,2], +"namespaces.html":[2,0], "pages.html":[], -"receiveData_8ino.html":[3,0,3,0], -"receiveData_8ino_source.html":[3,0,3,0], -"structLD2410Types_1_1ConfigData.html":[1,0,2,0], -"structLD2410Types_1_1ConfigData.html":[2,0,0,0], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,0,2,0,4], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[2,0,0,0,4], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,0,2,0,2], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[2,0,0,0,2], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,0,2,0,3], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[2,0,0,0,3], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,0,2,0,8], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[2,0,0,0,8], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,0,2,0,12], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[2,0,0,0,12], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,0,2,0,0], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[2,0,0,0,0], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,0,2,0,7], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[2,0,0,0,7], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,0,2,0,1], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[2,0,0,0,1], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,0,2,0,6], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[2,0,0,0,6], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,0,2,0,9], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[2,0,0,0,9], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,0,2,0,11], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[2,0,0,0,11], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,0,2,0,5], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[2,0,0,0,5], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,0,2,0,10], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[2,0,0,0,10], -"structLD2410Types_1_1DetectionData.html":[1,0,2,1], -"structLD2410Types_1_1DetectionData.html":[2,0,0,1], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,0,2,1,0], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[2,0,0,1,0], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,0,2,1,14], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[2,0,0,1,14], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,0,2,1,2], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[2,0,0,1,2], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,0,2,1,11], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[2,0,0,1,11], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,0,2,1,15], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[2,0,0,1,15], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,0,2,1,3], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[2,0,0,1,3], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,0,2,1,1], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[2,0,0,1,1], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,0,2,1,6], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[2,0,0,1,6], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,0,2,1,16], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[2,0,0,1,16], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,0,2,1,7], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[2,0,0,1,7], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,0,2,1,13], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[2,0,0,1,13], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,0,2,1,10], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[2,0,0,1,10], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,0,2,1,8], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[2,0,0,1,8], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,0,2,1,9], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[2,0,0,1,9], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,0,2,1,17], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[2,0,0,1,17], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,0,2,1,4], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[2,0,0,1,4], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,0,2,1,5], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[2,0,0,1,5], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,0,2,1,12], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[2,0,0,1,12] +"receiveData_8ino.html":[4,0,4,0], +"receiveData_8ino_source.html":[4,0,4,0], +"structLD2410Types_1_1ConfigData.html":[1,9,0], +"structLD2410Types_1_1ConfigData.html":[1,11,1], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,9,0,4], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,11,1,4], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,9,0,2], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,11,1,2], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,9,0,3], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,11,1,3], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,9,0,8], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,11,1,8], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,9,0,12], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,11,1,12], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,9,0,0], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,11,1,0], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,9,0,7], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,11,1,7], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,9,0,1], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,11,1,1], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,9,0,6], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,11,1,6], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,9,0,9], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,11,1,9], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,9,0,11], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,11,1,11], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,9,0,5], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,11,1,5], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,9,0,10], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,11,1,10], +"structLD2410Types_1_1DetectionData.html":[1,7,0], +"structLD2410Types_1_1DetectionData.html":[1,11,0], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,7,0,0], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,11,0,0], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,7,0,14], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,11,0,14], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,7,0,2], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,11,0,2], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,7,0,11], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,11,0,11], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,7,0,15], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,11,0,15], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,7,0,3], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,11,0,3], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,7,0,1], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,11,0,1], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,7,0,6], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,11,0,6], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,7,0,16], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,11,0,16], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,7,0,7], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,11,0,7], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,7,0,13], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,11,0,13], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,7,0,10], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,11,0,10], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,7,0,8], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,11,0,8], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,7,0,9], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,11,0,9], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,7,0,17], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,11,0,17], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,7,0,4], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,11,0,4], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,7,0,5], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,11,0,5], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,7,0,12], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,11,0,12], +"topics.html":[1] }; diff --git a/docu/receiveData_8ino.html b/docu/receiveData_8ino.html index 310f289..4ee2822 100644 --- a/docu/receiveData_8ino.html +++ b/docu/receiveData_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/receiveData_8ino_source.html b/docu/receiveData_8ino_source.html index 177ab1c..31493ba 100644 --- a/docu/receiveData_8ino_source.html +++ b/docu/receiveData_8ino_source.html @@ -208,7 +208,7 @@ diff --git a/docu/search/all_0.js b/docu/search/all_0.js index 1198aad..8ff0c0c 100644 --- a/docu/search/all_0.js +++ b/docu/search/all_0.js @@ -1,23 +1,24 @@ var searchData= [ - ['a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['a_20clone_0',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], ['access_20detection_20data_20without_20cloning_1',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['access_20without_20cloning_3',['access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], + ['access_20without_20cloning_3',['access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], ['accessing_20data_4',['Accessing data',['../index.html#autotoc_md1',1,'']]], - ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['and_20mac_6',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['and_20write_20back_7',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['asynccancel_9',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asynccommandcallback_10',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], - ['asynccommandresult_11',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['asyncisbusy_12',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], - ['auto_20config_13',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], - ['auto_20config_20status_14',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['autoconfig_5ffailed_15',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_16',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_17',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], - ['autoconfigstatus_18',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], - ['autoconfigstatus_19',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], + ['and_20mac_6',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], + ['and_20write_20back_7',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['apply_20config_8',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], + ['async_20commands_9',['Async Commands',['../group__LD2410Async__AsyncCommands.html',1,'']]], + ['asynccancel_10',['asyncCancel',['../group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asynccommandcallback_11',['AsyncCommandCallback',['../group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], + ['asynccommandresult_12',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asyncisbusy_13',['asyncIsBusy',['../group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], + ['auto_20config_14',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]], + ['auto_20config_20status_15',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['autoconfig_5ffailed_16',['AUTOCONFIG_FAILED',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_17',['AUTOCONFIG_IN_PROGRESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_18',['AUTOCONFIG_SUCCESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], + ['autoconfigstatus_19',['AutoConfigStatus',['../group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], + ['autoconfigstatus_20',['autoConfigStatus',['../group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/all_1.js b/docu/search/all_1.js index 82723f7..ced9d82 100644 --- a/docu/search/all_1.js +++ b/docu/search/all_1.js @@ -1,30 +1,31 @@ var searchData= [ - ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], ['basicpresencedetection_2eino_1',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], - ['baudrate_2',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], - ['baudrate_5f115200_3',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_4',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_5',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_6',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_7',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_8',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_9',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_10',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], - ['begin_11',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_12',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['baudrate_2',['Baudrate',['../group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], + ['baudrate_5f115200_3',['BAUDRATE_115200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_4',['BAUDRATE_19200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_5',['BAUDRATE_230500',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_6',['BAUDRATE_256000',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_7',['BAUDRATE_38400',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_8',['BAUDRATE_460800',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_9',['BAUDRATE_57600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_10',['BAUDRATE_9600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], + ['begin_11',['begin',['../group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_12',['beginAutoConfigAsync',['../group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['beginautoconfigcommand_13',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], ['beginautoconfigcommanddata_14',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], - ['bluetoothsettingscommand_15',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], - ['bluetoothsettingsoffcommanddata_16',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], - ['bluetoothsettingsoncommanddata_17',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['bufferendswith_18',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], - ['buffersize_19',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], - ['buildauxcontrolcommand_20',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], - ['buildbaudratecommand_21',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], - ['buildbluetoothpasswordcommand_22',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], - ['builddistanceresolutioncommand_23',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], - ['buildgatesensitivitycommand_24',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], - ['buildmaxgatecommand_25',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], - ['byte2hex_26',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] + ['bluetooth_15',['Bluetooth',['../group__LD2410Async__Bluetooth.html',1,'']]], + ['bluetoothsettingscommand_16',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], + ['bluetoothsettingsoffcommanddata_17',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], + ['bluetoothsettingsoncommanddata_18',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], + ['bufferendswith_19',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], + ['buffersize_20',['bufferSize',['../group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], + ['buildauxcontrolcommand_21',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], + ['buildbaudratecommand_22',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], + ['buildbluetoothpasswordcommand_23',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], + ['builddistanceresolutioncommand_24',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], + ['buildgatesensitivitycommand_25',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], + ['buildmaxgatecommand_26',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], + ['byte2hex_27',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] ]; diff --git a/docu/search/all_10.js b/docu/search/all_10.js index 431533e..e39f996 100644 --- a/docu/search/all_10.js +++ b/docu/search/all_10.js @@ -2,8 +2,9 @@ var searchData= [ ['tailconfig_0',['tailConfig',['../namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce',1,'LD2410Defs']]], ['taildata_1',['tailData',['../namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f',1,'LD2410Defs']]], - ['targetstate_2',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], + ['targetstate_2',['TargetState',['../group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], ['targetstate_3',['targetState',['../structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7',1,'LD2410Types::DetectionData']]], - ['timeout_4',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], - ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]] + ['timeout_4',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], + ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]], + ['types_20enums_20structs_6',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]] ]; diff --git a/docu/search/all_12.js b/docu/search/all_12.js index 4926498..dd20d39 100644 --- a/docu/search/all_12.js +++ b/docu/search/all_12.js @@ -1,4 +1,4 @@ var searchData= [ - ['values_20from_20a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] + ['values_20from_20a_20clone_0',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_13.js b/docu/search/all_13.js index e78f009..1c7e902 100644 --- a/docu/search/all_13.js +++ b/docu/search/all_13.js @@ -1,5 +1,5 @@ var searchData= [ - ['without_20cloning_0',['without cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['write_20back_1',['write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] + ['without_20cloning_0',['without cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['write_20back_1',['write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] ]; diff --git a/docu/search/all_2.js b/docu/search/all_2.js index 0acf7bd..1ce6e0c 100644 --- a/docu/search/all_2.js +++ b/docu/search/all_2.js @@ -1,34 +1,38 @@ var searchData= [ - ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], - ['changeconfig_2eino_1',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], - ['changedistanceresolution_2eino_2',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], - ['check_20auto_20config_20status_3',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['clone_20config_20data_20modify_20and_20write_20back_5',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['clone_20modify_20and_20apply_20config_6',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['clone_20modify_20and_20write_20back_7',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], - ['cloning_8',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['completed_9',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], - ['config_10',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], - ['config_20data_11',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['config_20data_20modify_20and_20write_20back_12',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['config_20status_13',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['configdata_14',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], - ['configdata_15',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], - ['configdisablecommand_16',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], - ['configdisablecommanddata_17',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], - ['configenablecommand_18',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], - ['configenablecommanddata_19',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_20',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], - ['configureallconfigsettingsasync_21',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_22',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_23',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_24',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_25',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_26',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_27',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_28',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_29',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_30',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] + ['callbacks_0',['Callbacks',['../group__LD2410Async__Callbacks.html',1,'']]], + ['canceled_1',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['changeconfig_2eino_2',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], + ['changedistanceresolution_2eino_3',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], + ['check_20auto_20config_20status_4',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['clone_5',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], + ['clone_20config_20data_20modify_20and_20write_20back_6',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['clone_20modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], + ['clone_20modify_20and_20write_20back_8',['Example: Clone, modify, and write back',['../group__LD2410Async__PublicData.html#autotoc_md11',1,'']]], + ['cloning_9',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['commands_10',['Commands',['../group__LD2410Async__AsyncCommands.html',1,'Async Commands'],['../group__LD2410Async__HighLevelCommands.html',1,'High Level Commands'],['../group__LD2410Async__NativeCommands.html',1,'Native Commands']]], + ['completed_11',['COMPLETED',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], + ['config_12',['config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'Example: Run auto-config']]], + ['config_20data_13',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], + ['config_20data_20modify_20and_20write_20back_14',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['config_20status_15',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['configdata_16',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], + ['configdata_17',['configData',['../group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdisablecommand_18',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], + ['configdisablecommanddata_19',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], + ['configenablecommand_20',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], + ['configenablecommanddata_21',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], + ['configmodeenabled_22',['configModeEnabled',['../group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], + ['configuration_23',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], + ['configureallconfigsettingsasync_24',['configureAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_25',['configureAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_26',['configureBaudRateAsync',['../group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_27',['configureBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_28',['configureDefaultBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_29',['configureDistanceGateSensitivityAsync',['../group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_30',['configureDistanceResolution75cmAsync',['../group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_31',['configureDistanceResolutionAsync',['../group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_32',['configureMaxGateAndNoOneTimeoutAsync',['../group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_33',['configuresDistanceResolution20cmAsync',['../group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c',1,'LD2410Async']]], + ['constructor_20main_20methods_34',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]] ]; diff --git a/docu/search/all_3.js b/docu/search/all_3.js index 9b05031..0fe9688 100644 --- a/docu/search/all_3.js +++ b/docu/search/all_3.js @@ -1,32 +1,35 @@ var searchData= [ - ['data_0',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], - ['data_20modify_20and_20write_20back_1',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['data_20without_20cloning_2',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['debug_5fprint_3',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], - ['debug_5fprint_5fdata_4',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], - ['debug_5fprint_5fmillis_5',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_6',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], - ['debug_5fprintbuf_5fdata_7',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], - ['debug_5fprintln_8',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], - ['debug_5fprintln_5fdata_9',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], - ['default_5fhigh_5fdetected_5flow_10',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_11',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], - ['detecteddistance_12',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['detectiondata_14',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], - ['detectiondata_15',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], - ['detectiondatacallback_16',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]], - ['disablebluetoothasync_17',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_18',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_19',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_20',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], - ['distancegatemotionsensitivity_21',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], - ['distancegatesensitivityconfigcommand_22',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], - ['distancegatesensitivityconfigcommanddata_23',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], - ['distancegatestationarysensitivity_24',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], - ['distanceresolution_25',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], - ['distanceresolution_26',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], - ['do_3a_27',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], - ['don’t_3a_28',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] + ['data_0',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['data_1',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'Example: Refresh config data']]], + ['data_20members_2',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], + ['data_20modify_20and_20write_20back_3',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['data_20without_20cloning_4',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['debug_5fprint_5',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], + ['debug_5fprint_5fdata_6',['DEBUG_PRINT_DATA',['../LD2410Debug_8h.html#a6bd3c589ad04777dc6a3ce076b0c7332',1,'LD2410Debug.h']]], + ['debug_5fprint_5fmillis_7',['DEBUG_PRINT_MILLIS',['../LD2410Debug_8h.html#a4df8f8246fbfcb8168bf55d5eda1edab',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_8',['DEBUG_PRINTBUF',['../LD2410Debug_8h.html#ad92ecfd0469b6cf67f2e80eb236b1cfe',1,'LD2410Debug.h']]], + ['debug_5fprintbuf_5fdata_9',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], + ['debug_5fprintln_10',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], + ['debug_5fprintln_5fdata_11',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], + ['default_5fhigh_5fdetected_5flow_12',['DEFAULT_HIGH_DETECTED_LOW',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_13',['DEFAULT_LOW_DETECTED_HIGH',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], + ['detecteddistance_14',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], + ['detection_15',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]], + ['detection_20data_20without_20cloning_16',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['detectiondata_17',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], + ['detectiondata_18',['detectionData',['../group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondatacallback_19',['DetectionDataCallback',['../group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]], + ['disablebluetoothasync_20',['disableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_21',['disableConfigModeAsync',['../group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_22',['disableEngineeringModeAsync',['../group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_23',['disableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], + ['distancegatemotionsensitivity_24',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], + ['distancegatesensitivityconfigcommand_25',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], + ['distancegatesensitivityconfigcommanddata_26',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], + ['distancegatestationarysensitivity_27',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], + ['distanceresolution_28',['DistanceResolution',['../group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], + ['distanceresolution_29',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], + ['do_3a_30',['Do:',['../group__LD2410Async__PublicData.html#autotoc_md6',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md9',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md12',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md15',1,'Do:'],['../group__LD2410Async__NativeCommands.html#autotoc_md18',1,'Do:'],['../group__LD2410Async__NativeCommands.html#autotoc_md21',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md24',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md27',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md30',1,'Do:']]], + ['don’t_3a_31',['Don’t:',['../group__LD2410Async__PublicData.html#autotoc_md7',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md10',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md13',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md16',1,'Don’t:'],['../group__LD2410Async__NativeCommands.html#autotoc_md19',1,'Don’t:'],['../group__LD2410Async__NativeCommands.html#autotoc_md22',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md25',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md28',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md31',1,'Don’t:']]] ]; diff --git a/docu/search/all_4.js b/docu/search/all_4.js index 45bfa7f..c4a1a79 100644 --- a/docu/search/all_4.js +++ b/docu/search/all_4.js @@ -1,26 +1,27 @@ var searchData= [ - ['efficient_20read_20access_20without_20cloning_0',['Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['enablebluetoothasync_1',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], - ['enableconfigmodeasync_2',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], - ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_4',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_5',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['efficient_20read_20access_20without_20cloning_0',['Efficient read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['enablebluetoothasync_1',['enableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_2',['enableConfigModeAsync',['../group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_4',['enableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_5',['end',['../group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['engineeringmode_6',['engineeringMode',['../structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7',1,'LD2410Types::DetectionData']]], ['engineeringmodedisablecomand_7',['engineeringModeDisableComand',['../namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d',1,'LD2410Defs']]], ['engineeringmodedisablecommanddata_8',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_9',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_10',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_11',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], - ['equals_12',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], - ['example_3a_20access_20detection_20data_20without_20cloning_13',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['example_3a_20access_20values_20from_20a_20clone_14',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], - ['example_3a_20check_20auto_20config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_16',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['example_3a_20clone_20modify_20and_20apply_20config_17',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['example_3a_20clone_20modify_20and_20write_20back_18',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], - ['example_3a_20efficient_20read_20access_20without_20cloning_19',['Example: Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['example_3a_20refresh_20config_20data_20',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['example_3a_20retrieve_20firmware_20and_20mac_21',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['example_3a_20run_20auto_20config_22',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] + ['engineeringmodeenabled_11',['engineeringModeEnabled',['../group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], + ['enums_20structs_12',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]], + ['equals_13',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], + ['example_3a_20access_20detection_20data_20without_20cloning_14',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], + ['example_3a_20access_20values_20from_20a_20clone_15',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], + ['example_3a_20check_20auto_20config_20status_16',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_17',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], + ['example_3a_20clone_20modify_20and_20apply_20config_18',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], + ['example_3a_20clone_20modify_20and_20write_20back_19',['Example: Clone, modify, and write back',['../group__LD2410Async__PublicData.html#autotoc_md11',1,'']]], + ['example_3a_20efficient_20read_20access_20without_20cloning_20',['Example: Efficient read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['example_3a_20refresh_20config_20data_21',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], + ['example_3a_20retrieve_20firmware_20and_20mac_22',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], + ['example_3a_20run_20auto_20config_23',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_5.js b/docu/search/all_5.js index 92d010d..632c2a4 100644 --- a/docu/search/all_5.js +++ b/docu/search/all_5.js @@ -1,8 +1,8 @@ var searchData= [ - ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], + ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], ['features_1',['Features',['../index.html#autotoc_md0',1,'']]], - ['firmware_2',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], - ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['from_20a_20clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] + ['firmware_2',['firmware',['../group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], + ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], + ['from_20a_20clone_4',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_6.js b/docu/search/all_6.js index 39faca2..47e5f4c 100644 --- a/docu/search/all_6.js +++ b/docu/search/all_6.js @@ -1,11 +1,12 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], - ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], + ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], ['getbluetoothpermissionscommand_2',['getBluetoothPermissionsCommand',['../namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34',1,'LD2410Defs']]], - ['getconfigdata_3',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], - ['getconfigdataref_4',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], - ['getdetectiondata_5',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], - ['getdetectiondataref_6',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getconfigdata_3',['getConfigData',['../group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_4',['getConfigDataRef',['../group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_5',['getDetectionData',['../group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_6',['getDetectionDataRef',['../group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]], + ['groups_2edox_8',['groups.dox',['../groups_8dox.html',1,'']]] ]; diff --git a/docu/search/all_7.js b/docu/search/all_7.js index 33f656d..fd5c621 100644 --- a/docu/search/all_7.js +++ b/docu/search/all_7.js @@ -1,5 +1,7 @@ var searchData= [ - ['headconfig_0',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], - ['headdata_1',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]] + ['handling_0',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]], + ['headconfig_1',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], + ['headdata_2',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]], + ['high_20level_20commands_3',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]] ]; diff --git a/docu/search/all_8.js b/docu/search/all_8.js index 63adc8d..bc3ae47 100644 --- a/docu/search/all_8.js +++ b/docu/search/all_8.js @@ -1,9 +1,10 @@ var searchData= [ - ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], - ['introduction_1',['Introduction',['../index.html#intro_sec',1,'']]], - ['isconfigmodeenabled_2',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_3',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_4',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], - ['isvalid_5',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] + ['in_5fprogress_0',['IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], + ['inactivity_20handling_1',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]], + ['introduction_2',['Introduction',['../index.html#intro_sec',1,'']]], + ['isconfigmodeenabled_3',['isConfigModeEnabled',['../group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_4',['isEngineeringModeEnabled',['../group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_5',['isInactivityHandlingEnabled',['../group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isvalid_6',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_9.js b/docu/search/all_9.js index f46798a..365364e 100644 --- a/docu/search/all_9.js +++ b/docu/search/all_9.js @@ -1,7 +1,7 @@ var searchData= [ ['ld2410_5fbuffer_5fsize_0',['LD2410_Buffer_Size',['../namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f',1,'LD2410Defs']]], - ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], + ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], ['ld2410async_2ecpp_2',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], ['ld2410async_2eh_3',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], ['ld2410async_5fdebug_5fdata_5flevel_4',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], @@ -13,10 +13,11 @@ var searchData= ['ld2410defs_2eh_10',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], ['ld2410types_11',['LD2410Types',['../namespaceLD2410Types.html',1,'']]], ['ld2410types_2eh_12',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]], - ['light_5fabove_5fthreshold_13',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], - ['light_5fbelow_5fthreshold_14',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]], - ['lightcontrol_15',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]], - ['lightcontrol_16',['lightControl',['../structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7',1,'LD2410Types::ConfigData']]], - ['lightlevel_17',['lightLevel',['../structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c',1,'LD2410Types::DetectionData']]], - ['lightthreshold_18',['lightThreshold',['../structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88',1,'LD2410Types::ConfigData']]] + ['level_20commands_13',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]], + ['light_5fabove_5fthreshold_14',['LIGHT_ABOVE_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_15',['LIGHT_BELOW_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]], + ['lightcontrol_16',['LightControl',['../group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844',1,'LD2410Types']]], + ['lightcontrol_17',['lightControl',['../structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7',1,'LD2410Types::ConfigData']]], + ['lightlevel_18',['lightLevel',['../structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c',1,'LD2410Types::DetectionData']]], + ['lightthreshold_19',['lightThreshold',['../structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_a.js b/docu/search/all_a.js index c2e5691..573a13f 100644 --- a/docu/search/all_a.js +++ b/docu/search/all_a.js @@ -1,19 +1,22 @@ var searchData= [ - ['mac_0',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['mac_1',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_2',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], - ['maxgatecommand_3',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], - ['maxgatecommanddata_4',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], - ['maxmotiondistancegate_5',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], - ['maxstationarydistancegate_6',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], - ['modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], - ['modify_20and_20write_20back_8',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['moving_5fand_5fstationary_5ftarget_9',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_10',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], - ['movingpresencedetected_11',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], - ['movingtargetdistance_12',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignalcount_13',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignals_14',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], - ['movingtargetsignal_15',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] + ['mac_0',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], + ['mac_1',['mac',['../group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_2',['macString',['../group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['main_20methods_3',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]], + ['maxgatecommand_4',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], + ['maxgatecommanddata_5',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], + ['maxmotiondistancegate_6',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], + ['maxstationarydistancegate_7',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], + ['members_8',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], + ['methods_9',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]], + ['modify_20and_20apply_20config_10',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], + ['modify_20and_20write_20back_11',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['moving_5fand_5fstationary_5ftarget_12',['MOVING_AND_STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_13',['MOVING_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], + ['movingpresencedetected_14',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], + ['movingtargetdistance_15',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignalcount_16',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignals_17',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], + ['movingtargetsignal_18',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] ]; diff --git a/docu/search/all_b.js b/docu/search/all_b.js index 208c783..926f622 100644 --- a/docu/search/all_b.js +++ b/docu/search/all_b.js @@ -1,9 +1,10 @@ var searchData= [ - ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], - ['no_5ftarget_1',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], - ['noonetimeout_2',['noOneTimeout',['../structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf',1,'LD2410Types::ConfigData']]], - ['not_5fin_5fprogress_3',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], - ['not_5fset_4',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]], - ['numberofgates_5',['numberOfGates',['../structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589',1,'LD2410Types::ConfigData']]] + ['native_20commands_0',['Native Commands',['../group__LD2410Async__NativeCommands.html',1,'']]], + ['no_5flight_5fcontrol_1',['NO_LIGHT_CONTROL',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_2',['NO_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['noonetimeout_3',['noOneTimeout',['../structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf',1,'LD2410Types::ConfigData']]], + ['not_5fin_5fprogress_4',['NOT_IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_5',['NOT_SET',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]], + ['numberofgates_6',['numberOfGates',['../structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_c.js b/docu/search/all_c.js index cc9ea58..e77accc 100644 --- a/docu/search/all_c.js +++ b/docu/search/all_c.js @@ -1,6 +1,6 @@ var searchData= [ ['outpinstatus_0',['outPinStatus',['../structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2',1,'LD2410Types::DetectionData']]], - ['outputcontrol_1',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]], + ['outputcontrol_1',['OutputControl',['../group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff',1,'LD2410Types']]], ['outputcontrol_2',['outputControl',['../structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_d.js b/docu/search/all_d.js index 658dc94..ad5ac6c 100644 --- a/docu/search/all_d.js +++ b/docu/search/all_d.js @@ -1,6 +1,8 @@ var searchData= [ - ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], - ['print_1',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], - ['protocolversion_2',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['presence_20detection_0',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]], + ['presencedetected_1',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], + ['print_2',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], + ['protocolversion_3',['protocolVersion',['../group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]], + ['public_20data_20members_4',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]] ]; diff --git a/docu/search/all_e.js b/docu/search/all_e.js index b62e4e0..bd3cee8 100644 --- a/docu/search/all_e.js +++ b/docu/search/all_e.js @@ -1,39 +1,39 @@ var searchData= [ - ['read_20access_20without_20cloning_0',['read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['rebootasync_1',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['read_20access_20without_20cloning_0',['read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['rebootasync_1',['rebootAsync',['../group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], ['rebootcommand_2',['rebootCommand',['../namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5',1,'LD2410Defs']]], ['rebootcommanddata_3',['rebootCommandData',['../namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a',1,'LD2410Defs']]], ['receivedata_2eino_4',['receiveData.ino',['../receiveData_8ino.html',1,'']]], - ['refresh_20config_20data_5',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], - ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['refresh_20config_20data_5',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], + ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], ['requestautoconfigstatuscommand_12',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], ['requestautoconfigstatuscommanddata_13',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], - ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], ['requestauxcontrolsettingscommand_15',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], ['requestauxcontrolsettingscommanddata_16',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], - ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], ['requestdistanceresolutioncommand_19',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], ['requestdistanceresolutioncommanddata_20',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], - ['requestfirmwareasync_21',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestfirmwareasync_21',['requestFirmwareAsync',['../group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], ['requestfirmwarecommand_22',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], ['requestfirmwarecommanddata_23',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], - ['requestgateparametersasync_24',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['requestgateparametersasync_24',['requestGateParametersAsync',['../group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], ['requestmacaddresscommand_25',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], ['requestmacaddresscommanddata_26',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], ['requestparamscommand_27',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], ['requestparamscommanddata_28',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], - ['resolution_5f20cm_29',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_30',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], + ['resolution_5f20cm_29',['RESOLUTION_20CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_30',['RESOLUTION_75CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], ['restorefactorsettingscommanddata_31',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], - ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], + ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], ['restorefactorysettingsasynccommand_33',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], - ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], - ['run_20auto_20config_35',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] + ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], + ['run_20auto_20config_35',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_f.js b/docu/search/all_f.js index 339930d..6b30176 100644 --- a/docu/search/all_f.js +++ b/docu/search/all_f.js @@ -1,23 +1,27 @@ var searchData= [ - ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], - ['setauxcontrolsettingcommanddata_1',['setAuxControlSettingCommandData',['../namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e',1,'LD2410Defs']]], - ['setauxcontrolsettingscommand_2',['setAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18',1,'LD2410Defs']]], - ['setbaudratecommand_3',['setBaudRateCommand',['../namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b',1,'LD2410Defs']]], - ['setbaudratecommanddata_4',['setBaudRateCommandData',['../namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790',1,'LD2410Defs']]], - ['setbluetoothpasswordcommand_5',['setBluetoothPasswordCommand',['../namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9',1,'LD2410Defs']]], - ['setbluetoothpasswordcommanddata_6',['setBluetoothPasswordCommandData',['../namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8',1,'LD2410Defs']]], - ['setdistanceresolution20cmcommanddata_7',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], - ['setdistanceresolution75cmcommanddata_8',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], - ['setdistanceresolutioncommand_9',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], - ['setinactivityhandling_10',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_11',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], - ['stationary_5ftarget_12',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], - ['stationarypresencedetected_13',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], - ['stationarytargetdistance_14',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], - ['stationarytargetgatesignalcount_15',['stationaryTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1',1,'LD2410Types::DetectionData']]], - ['stationarytargetgatesignals_16',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], - ['stationarytargetsignal_17',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], - ['status_18',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], - ['success_19',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['sensor_20configuration_0',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], + ['sensor_20data_1',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['setasynccommandtimeoutms_2',['setAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['setauxcontrolsettingcommanddata_3',['setAuxControlSettingCommandData',['../namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e',1,'LD2410Defs']]], + ['setauxcontrolsettingscommand_4',['setAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18',1,'LD2410Defs']]], + ['setbaudratecommand_5',['setBaudRateCommand',['../namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b',1,'LD2410Defs']]], + ['setbaudratecommanddata_6',['setBaudRateCommandData',['../namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790',1,'LD2410Defs']]], + ['setbluetoothpasswordcommand_7',['setBluetoothPasswordCommand',['../namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9',1,'LD2410Defs']]], + ['setbluetoothpasswordcommanddata_8',['setBluetoothPasswordCommandData',['../namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8',1,'LD2410Defs']]], + ['setdistanceresolution20cmcommanddata_9',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], + ['setdistanceresolution75cmcommanddata_10',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], + ['setdistanceresolutioncommand_11',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], + ['setinactivityhandling_12',['setInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_13',['setInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], + ['static_20sensor_20data_14',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['stationary_5ftarget_15',['STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['stationarypresencedetected_16',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], + ['stationarytargetdistance_17',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], + ['stationarytargetgatesignalcount_18',['stationaryTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1',1,'LD2410Types::DetectionData']]], + ['stationarytargetgatesignals_19',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], + ['stationarytargetsignal_20',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], + ['status_21',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['structs_22',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]], + ['success_23',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enums_0.js b/docu/search/enums_0.js index ec7d65e..907010d 100644 --- a/docu/search/enums_0.js +++ b/docu/search/enums_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccommandresult_0',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['autoconfigstatus_1',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] + ['asynccommandresult_0',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['autoconfigstatus_1',['AutoConfigStatus',['../group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_1.js b/docu/search/enums_1.js index b42f7bf..3c2fd13 100644 --- a/docu/search/enums_1.js +++ b/docu/search/enums_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['baudrate_0',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]] + ['baudrate_0',['Baudrate',['../group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_2.js b/docu/search/enums_2.js index 00380a9..280edbe 100644 --- a/docu/search/enums_2.js +++ b/docu/search/enums_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['distanceresolution_0',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]] + ['distanceresolution_0',['DistanceResolution',['../group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_3.js b/docu/search/enums_3.js index 7166abd..a5cc358 100644 --- a/docu/search/enums_3.js +++ b/docu/search/enums_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['lightcontrol_0',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]] + ['lightcontrol_0',['LightControl',['../group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_4.js b/docu/search/enums_4.js index a0866bb..5eb2032 100644 --- a/docu/search/enums_4.js +++ b/docu/search/enums_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['outputcontrol_0',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]] + ['outputcontrol_0',['OutputControl',['../group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_5.js b/docu/search/enums_5.js index 3addeeb..19cd88d 100644 --- a/docu/search/enums_5.js +++ b/docu/search/enums_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['targetstate_0',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]] + ['targetstate_0',['TargetState',['../group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_0.js b/docu/search/enumvalues_0.js index bbbe97c..8144acd 100644 --- a/docu/search/enumvalues_0.js +++ b/docu/search/enumvalues_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['autoconfig_5ffailed_0',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_1',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_2',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]] + ['autoconfig_5ffailed_0',['AUTOCONFIG_FAILED',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_1',['AUTOCONFIG_IN_PROGRESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_2',['AUTOCONFIG_SUCCESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_1.js b/docu/search/enumvalues_1.js index ddcfa73..973dad6 100644 --- a/docu/search/enumvalues_1.js +++ b/docu/search/enumvalues_1.js @@ -1,11 +1,11 @@ var searchData= [ - ['baudrate_5f115200_0',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_1',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_2',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_3',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_4',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_5',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_6',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_7',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]] + ['baudrate_5f115200_0',['BAUDRATE_115200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_1',['BAUDRATE_19200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_2',['BAUDRATE_230500',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_3',['BAUDRATE_256000',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_4',['BAUDRATE_38400',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_5',['BAUDRATE_460800',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_6',['BAUDRATE_57600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_7',['BAUDRATE_9600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_2.js b/docu/search/enumvalues_2.js index 0733392..bc6ee19 100644 --- a/docu/search/enumvalues_2.js +++ b/docu/search/enumvalues_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], - ['completed_1',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] + ['canceled_0',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['completed_1',['COMPLETED',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_3.js b/docu/search/enumvalues_3.js index 8b70985..6886fbe 100644 --- a/docu/search/enumvalues_3.js +++ b/docu/search/enumvalues_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['default_5fhigh_5fdetected_5flow_0',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_1',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]] + ['default_5fhigh_5fdetected_5flow_0',['DEFAULT_HIGH_DETECTED_LOW',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_1',['DEFAULT_LOW_DETECTED_HIGH',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_4.js b/docu/search/enumvalues_4.js index b56eb90..03124b3 100644 --- a/docu/search/enumvalues_4.js +++ b/docu/search/enumvalues_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] + ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_5.js b/docu/search/enumvalues_5.js index 44c5705..25fa323 100644 --- a/docu/search/enumvalues_5.js +++ b/docu/search/enumvalues_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]] + ['in_5fprogress_0',['IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_6.js b/docu/search/enumvalues_6.js index 1a51ac3..9dabe70 100644 --- a/docu/search/enumvalues_6.js +++ b/docu/search/enumvalues_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['light_5fabove_5fthreshold_0',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], - ['light_5fbelow_5fthreshold_1',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]] + ['light_5fabove_5fthreshold_0',['LIGHT_ABOVE_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_1',['LIGHT_BELOW_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_7.js b/docu/search/enumvalues_7.js index e31e54e..8aaaa20 100644 --- a/docu/search/enumvalues_7.js +++ b/docu/search/enumvalues_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['moving_5fand_5fstationary_5ftarget_0',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_1',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]] + ['moving_5fand_5fstationary_5ftarget_0',['MOVING_AND_STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_1',['MOVING_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_8.js b/docu/search/enumvalues_8.js index ca364ab..a5245f0 100644 --- a/docu/search/enumvalues_8.js +++ b/docu/search/enumvalues_8.js @@ -1,7 +1,7 @@ var searchData= [ - ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], - ['no_5ftarget_1',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], - ['not_5fin_5fprogress_2',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], - ['not_5fset_3',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]] + ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_1',['NO_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['not_5fin_5fprogress_2',['NOT_IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_3',['NOT_SET',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]] ]; diff --git a/docu/search/enumvalues_9.js b/docu/search/enumvalues_9.js index 3180f2c..d49613a 100644 --- a/docu/search/enumvalues_9.js +++ b/docu/search/enumvalues_9.js @@ -1,5 +1,5 @@ var searchData= [ - ['resolution_5f20cm_0',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_1',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]] + ['resolution_5f20cm_0',['RESOLUTION_20CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_1',['RESOLUTION_75CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_a.js b/docu/search/enumvalues_a.js index 5cb9cc1..b3f4916 100644 --- a/docu/search/enumvalues_a.js +++ b/docu/search/enumvalues_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['stationary_5ftarget_0',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], - ['success_1',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['stationary_5ftarget_0',['STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['success_1',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_b.js b/docu/search/enumvalues_b.js index c466cc0..40b3921 100644 --- a/docu/search/enumvalues_b.js +++ b/docu/search/enumvalues_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['timeout_0',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] + ['timeout_0',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] ]; diff --git a/docu/search/files_2.js b/docu/search/files_2.js index a2d31b9..245a17f 100644 --- a/docu/search/files_2.js +++ b/docu/search/files_2.js @@ -1,9 +1,4 @@ var searchData= [ - ['ld2410async_2ecpp_0',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], - ['ld2410async_2eh_1',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], - ['ld2410commandbuilder_2eh_2',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], - ['ld2410debug_2eh_3',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], - ['ld2410defs_2eh_4',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], - ['ld2410types_2eh_5',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]] + ['groups_2edox_0',['groups.dox',['../groups_8dox.html',1,'']]] ]; diff --git a/docu/search/files_3.js b/docu/search/files_3.js index 2f336a6..a2d31b9 100644 --- a/docu/search/files_3.js +++ b/docu/search/files_3.js @@ -1,4 +1,9 @@ var searchData= [ - ['receivedata_2eino_0',['receiveData.ino',['../receiveData_8ino.html',1,'']]] + ['ld2410async_2ecpp_0',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], + ['ld2410async_2eh_1',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], + ['ld2410commandbuilder_2eh_2',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], + ['ld2410debug_2eh_3',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], + ['ld2410defs_2eh_4',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], + ['ld2410types_2eh_5',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]] ]; diff --git a/docu/search/files_4.js b/docu/search/files_4.js new file mode 100644 index 0000000..2f336a6 --- /dev/null +++ b/docu/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['receivedata_2eino_0',['receiveData.ino',['../receiveData_8ino.html',1,'']]] +]; diff --git a/docu/search/functions_0.js b/docu/search/functions_0.js index 0d75dd8..ede188b 100644 --- a/docu/search/functions_0.js +++ b/docu/search/functions_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccancel_0',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asyncisbusy_1',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]] + ['asynccancel_0',['asyncCancel',['../group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asyncisbusy_1',['asyncIsBusy',['../group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_1.js b/docu/search/functions_1.js index 0818f99..f5c4808 100644 --- a/docu/search/functions_1.js +++ b/docu/search/functions_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['begin_0',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_1',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['begin_0',['begin',['../group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_1',['beginAutoConfigAsync',['../group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['bufferendswith_2',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], ['buildauxcontrolcommand_3',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], ['buildbaudratecommand_4',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], diff --git a/docu/search/functions_2.js b/docu/search/functions_2.js index cf88833..b1a9b56 100644 --- a/docu/search/functions_2.js +++ b/docu/search/functions_2.js @@ -1,13 +1,13 @@ var searchData= [ - ['configureallconfigsettingsasync_0',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_1',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_2',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_3',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_4',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_5',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_6',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_7',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_8',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_9',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] + ['configureallconfigsettingsasync_0',['configureAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_1',['configureAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_2',['configureBaudRateAsync',['../group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_3',['configureBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_4',['configureDefaultBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_5',['configureDistanceGateSensitivityAsync',['../group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_6',['configureDistanceResolution75cmAsync',['../group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_7',['configureDistanceResolutionAsync',['../group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_8',['configureMaxGateAndNoOneTimeoutAsync',['../group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_9',['configuresDistanceResolution20cmAsync',['../group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_3.js b/docu/search/functions_3.js index 072953d..3465875 100644 --- a/docu/search/functions_3.js +++ b/docu/search/functions_3.js @@ -1,7 +1,7 @@ var searchData= [ - ['disablebluetoothasync_0',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_1',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_3',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] + ['disablebluetoothasync_0',['disableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_1',['disableConfigModeAsync',['../group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_3',['disableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_4.js b/docu/search/functions_4.js index 4151ded..00e8794 100644 --- a/docu/search/functions_4.js +++ b/docu/search/functions_4.js @@ -1,9 +1,9 @@ var searchData= [ - ['enablebluetoothasync_0',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], - ['enableconfigmodeasync_1',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], - ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_3',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_4',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enablebluetoothasync_0',['enableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_1',['enableConfigModeAsync',['../group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_3',['enableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_4',['end',['../group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['equals_5',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_5.js b/docu/search/functions_5.js index 7a0cce8..1feaf6f 100644 --- a/docu/search/functions_5.js +++ b/docu/search/functions_5.js @@ -1,9 +1,9 @@ var searchData= [ - ['getasynccommandtimeoutms_0',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], - ['getconfigdata_1',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], - ['getconfigdataref_2',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], - ['getdetectiondata_3',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], - ['getdetectiondataref_4',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getasynccommandtimeoutms_0',['getAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['getconfigdata_1',['getConfigData',['../group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_2',['getConfigDataRef',['../group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_3',['getDetectionData',['../group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_4',['getDetectionDataRef',['../group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_6.js b/docu/search/functions_6.js index 8c8e0e6..d7470b0 100644 --- a/docu/search/functions_6.js +++ b/docu/search/functions_6.js @@ -1,7 +1,7 @@ var searchData= [ - ['isconfigmodeenabled_0',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isconfigmodeenabled_0',['isConfigModeEnabled',['../group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], ['isvalid_3',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_7.js b/docu/search/functions_7.js index 92323e6..277a0ca 100644 --- a/docu/search/functions_7.js +++ b/docu/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['ld2410async_0',['LD2410Async',['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] + ['ld2410async_0',['LD2410Async',['../group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_9.js b/docu/search/functions_9.js index 237074f..9dc65ce 100644 --- a/docu/search/functions_9.js +++ b/docu/search/functions_9.js @@ -1,16 +1,16 @@ var searchData= [ - ['rebootasync_0',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], - ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], - ['requestauxcontrolsettingsasync_7',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], - ['requestbluetoothmacaddressasync_8',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_9',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], - ['requestfirmwareasync_10',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], - ['requestgateparametersasync_11',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], - ['restorefactorysettingsasync_12',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]] + ['rebootasync_0',['rebootAsync',['../group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestauxcontrolsettingsasync_7',['requestAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestbluetoothmacaddressasync_8',['requestBluetoothMacAddressAsync',['../group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_9',['requestDistanceResolutioncmAsync',['../group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestfirmwareasync_10',['requestFirmwareAsync',['../group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestgateparametersasync_11',['requestGateParametersAsync',['../group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['restorefactorysettingsasync_12',['restoreFactorySettingsAsync',['../group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_a.js b/docu/search/functions_a.js index 4246c3c..d7342b2 100644 --- a/docu/search/functions_a.js +++ b/docu/search/functions_a.js @@ -1,6 +1,6 @@ var searchData= [ - ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], - ['setinactivityhandling_1',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] + ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['setinactivityhandling_1',['setInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] ]; diff --git a/docu/search/groups_0.js b/docu/search/groups_0.js index a9ae1be..3a01731 100644 --- a/docu/search/groups_0.js +++ b/docu/search/groups_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['and_20callbacks_0',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] + ['async_20commands_0',['Async Commands',['../group__LD2410Async__AsyncCommands.html',1,'']]] ]; diff --git a/docu/search/groups_1.js b/docu/search/groups_1.js index f6a8c33..0cc61e9 100644 --- a/docu/search/groups_1.js +++ b/docu/search/groups_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['basic_20methods_0',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] + ['bluetooth_0',['Bluetooth',['../group__LD2410Async__Bluetooth.html',1,'']]] ]; diff --git a/docu/search/groups_2.js b/docu/search/groups_2.js index 780cf88..dc76a89 100644 --- a/docu/search/groups_2.js +++ b/docu/search/groups_2.js @@ -1,6 +1,7 @@ var searchData= [ - ['callback_20registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]], - ['callbacks_1',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]], - ['constructor_20basic_20methods_2',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] + ['callbacks_0',['Callbacks',['../group__LD2410Async__Callbacks.html',1,'']]], + ['commands_1',['Commands',['../group__LD2410Async__AsyncCommands.html',1,'Async Commands'],['../group__LD2410Async__HighLevelCommands.html',1,'High Level Commands'],['../group__LD2410Async__NativeCommands.html',1,'Native Commands']]], + ['configuration_2',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], + ['constructor_20main_20methods_3',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]] ]; diff --git a/docu/search/groups_3.js b/docu/search/groups_3.js index c09df6b..ba9e9b1 100644 --- a/docu/search/groups_3.js +++ b/docu/search/groups_3.js @@ -1,4 +1,6 @@ var searchData= [ - ['data_20members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] + ['data_0',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['data_20members_1',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], + ['detection_2',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]] ]; diff --git a/docu/search/groups_4.js b/docu/search/groups_4.js index 494deef..f0a6b05 100644 --- a/docu/search/groups_4.js +++ b/docu/search/groups_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]] + ['enums_20structs_0',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]] ]; diff --git a/docu/search/groups_5.js b/docu/search/groups_5.js index b928161..59f90f5 100644 --- a/docu/search/groups_5.js +++ b/docu/search/groups_5.js @@ -1,4 +1,5 @@ var searchData= [ - ['inactivity_20handling_0',['Inactivity Handling',['../group__LD2410Async__Inactivity.html',1,'']]] + ['handling_0',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]], + ['high_20level_20commands_1',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]] ]; diff --git a/docu/search/groups_6.js b/docu/search/groups_6.js index 59429aa..c1e1965 100644 --- a/docu/search/groups_6.js +++ b/docu/search/groups_6.js @@ -1,5 +1,4 @@ var searchData= [ - ['members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]], - ['methods_1',['Constructor & Basic Methods',['../group__LD2410Async__Lifecycle.html',1,'']]] + ['inactivity_20handling_0',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]] ]; diff --git a/docu/search/groups_7.js b/docu/search/groups_7.js index b530a99..6acb78f 100644 --- a/docu/search/groups_7.js +++ b/docu/search/groups_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['public_20data_20members_0',['Public Data Members',['../group__LD2410Async__Data.html',1,'']]] + ['level_20commands_0',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]] ]; diff --git a/docu/search/groups_8.js b/docu/search/groups_8.js index 137cea5..e0903c4 100644 --- a/docu/search/groups_8.js +++ b/docu/search/groups_8.js @@ -1,4 +1,6 @@ var searchData= [ - ['registration_0',['Callback Registration',['../group__LD2410Async__Callbacks.html',1,'']]] + ['main_20methods_0',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]], + ['members_1',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], + ['methods_2',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]] ]; diff --git a/docu/search/groups_9.js b/docu/search/groups_9.js index 30f9ed4..83df24b 100644 --- a/docu/search/groups_9.js +++ b/docu/search/groups_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['types_20and_20callbacks_0',['Types And Callbacks',['../group__LD2410Async__Types.html',1,'']]] + ['native_20commands_0',['Native Commands',['../group__LD2410Async__NativeCommands.html',1,'']]] ]; diff --git a/docu/search/groups_a.js b/docu/search/groups_a.js new file mode 100644 index 0000000..39775cd --- /dev/null +++ b/docu/search/groups_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['presence_20detection_0',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]], + ['public_20data_20members_1',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]] +]; diff --git a/docu/search/groups_b.js b/docu/search/groups_b.js new file mode 100644 index 0000000..3d59210 --- /dev/null +++ b/docu/search/groups_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['sensor_20configuration_0',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], + ['sensor_20data_1',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['static_20sensor_20data_2',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], + ['structs_3',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]] +]; diff --git a/docu/search/groups_c.js b/docu/search/groups_c.js new file mode 100644 index 0000000..b4e3bef --- /dev/null +++ b/docu/search/groups_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['types_20enums_20structs_0',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]] +]; diff --git a/docu/search/searchdata.js b/docu/search/searchdata.js index f9cff2e..106fbfe 100644 --- a/docu/search/searchdata.js +++ b/docu/search/searchdata.js @@ -3,14 +3,15 @@ var indexSectionsWithContent = 0: "abcdefghilmnoprstuvw", 1: "cdl", 2: "l", - 3: "bclr", + 3: "bcglr", 4: "abcdegilprs", 5: "abcdefghlmnoprst", 6: "adg", 7: "abdlot", 8: "abcdfilmnrst", 9: "dl", - 10: "l" + 10: "abcdehilmnpst", + 11: "l" }; var indexSectionNames = @@ -25,7 +26,8 @@ var indexSectionNames = 7: "enums", 8: "enumvalues", 9: "defines", - 10: "pages" + 10: "groups", + 11: "pages" }; var indexSectionLabels = @@ -40,6 +42,7 @@ var indexSectionLabels = 7: "Enumerations", 8: "Enumerator", 9: "Macros", - 10: "Pages" + 10: "Modules", + 11: "Pages" }; diff --git a/docu/search/typedefs_0.js b/docu/search/typedefs_0.js index f554ef9..60a0112 100644 --- a/docu/search/typedefs_0.js +++ b/docu/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['asynccommandcallback_0',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] + ['asynccommandcallback_0',['AsyncCommandCallback',['../group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_1.js b/docu/search/typedefs_1.js index 111b7e0..200abe5 100644 --- a/docu/search/typedefs_1.js +++ b/docu/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['detectiondatacallback_0',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]] + ['detectiondatacallback_0',['DetectionDataCallback',['../group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_2.js b/docu/search/typedefs_2.js index d967de0..21d8fc9 100644 --- a/docu/search/typedefs_2.js +++ b/docu/search/typedefs_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] + ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_0.js b/docu/search/variables_0.js index 1e3a26c..29b35f0 100644 --- a/docu/search/variables_0.js +++ b/docu/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['autoconfigstatus_0',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['autoconfigstatus_0',['autoConfigStatus',['../group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_1.js b/docu/search/variables_1.js index c7266ad..a21e48a 100644 --- a/docu/search/variables_1.js +++ b/docu/search/variables_1.js @@ -5,5 +5,5 @@ var searchData= ['bluetoothsettingscommand_2',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], ['bluetoothsettingsoffcommanddata_3',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], ['bluetoothsettingsoncommanddata_4',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['buffersize_5',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] + ['buffersize_5',['bufferSize',['../group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_2.js b/docu/search/variables_2.js index 090f1af..edbd71e 100644 --- a/docu/search/variables_2.js +++ b/docu/search/variables_2.js @@ -1,9 +1,9 @@ var searchData= [ - ['configdata_0',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdata_0',['configData',['../group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], ['configdisablecommand_1',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], ['configdisablecommanddata_2',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], ['configenablecommand_3',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], ['configenablecommanddata_4',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_5',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] + ['configmodeenabled_5',['configModeEnabled',['../group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_3.js b/docu/search/variables_3.js index 48d60d4..50ef794 100644 --- a/docu/search/variables_3.js +++ b/docu/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ ['detecteddistance_0',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detectiondata_1',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondata_1',['detectionData',['../group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], ['distancegatemotionsensitivity_2',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], ['distancegatesensitivityconfigcommand_3',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], ['distancegatesensitivityconfigcommanddata_4',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], diff --git a/docu/search/variables_4.js b/docu/search/variables_4.js index 0aba132..5a2a376 100644 --- a/docu/search/variables_4.js +++ b/docu/search/variables_4.js @@ -5,5 +5,5 @@ var searchData= ['engineeringmodedisablecommanddata_2',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_3',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_4',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_5',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] + ['engineeringmodeenabled_5',['engineeringModeEnabled',['../group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_5.js b/docu/search/variables_5.js index d2f07d1..2d05f12 100644 --- a/docu/search/variables_5.js +++ b/docu/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['firmware_0',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] + ['firmware_0',['firmware',['../group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_9.js b/docu/search/variables_9.js index 11bf95a..5792ba7 100644 --- a/docu/search/variables_9.js +++ b/docu/search/variables_9.js @@ -1,7 +1,7 @@ var searchData= [ - ['mac_0',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_1',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_0',['mac',['../group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_1',['macString',['../group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_2',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_3',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_4',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], diff --git a/docu/search/variables_c.js b/docu/search/variables_c.js index f458503..8525267 100644 --- a/docu/search/variables_c.js +++ b/docu/search/variables_c.js @@ -1,5 +1,5 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], - ['protocolversion_1',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['protocolversion_1',['protocolVersion',['../group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] ]; diff --git a/docu/structLD2410Types_1_1ConfigData.html b/docu/structLD2410Types_1_1ConfigData.html index b7c609f..8f0d668 100644 --- a/docu/structLD2410Types_1_1ConfigData.html +++ b/docu/structLD2410Types_1_1ConfigData.html @@ -101,7 +101,7 @@ Public Member Functions | Public Attributes | List of all members -
    LD2410Types::ConfigData Struct Reference
    +
    LD2410Types::ConfigData Struct Reference
    @@ -142,16 +142,16 @@ unsigned short noOneTimeout = 0  Timeout (seconds) until "no presence" is declared.
      -DistanceResolution distanceResolution = DistanceResolution::NOT_SET +DistanceResolution distanceResolution = DistanceResolution::NOT_SET  Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
      byte lightThreshold = 0  Threshold for auxiliary light control (0–255).
      -LightControl lightControl = LightControl::NOT_SET +LightControl lightControl = LightControl::NOT_SET  Light-dependent auxiliary control mode.
      -OutputControl outputControl = OutputControl::NOT_SET +OutputControl outputControl = OutputControl::NOT_SET  Logic configuration of the OUT pin.
      @@ -254,9 +254,9 @@

    Definition at line 406 of file LD2410Types.h.

    406 {
    407 // Validate enum settings
    - -
    409 if (lightControl == LightControl::NOT_SET) return false;
    -
    410 if (outputControl == OutputControl::NOT_SET) return false;
    + +
    409 if (lightControl == LightControl::NOT_SET) return false;
    +
    410 if (outputControl == OutputControl::NOT_SET) return false;
    411
    412 // Validate max distance gates
    @@ -270,9 +270,9 @@

    421

    422 return true;
    423 }
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...

    @@ -394,7 +394,7 @@

    - +
    DistanceResolution LD2410Types::ConfigData::distanceResolution = DistanceResolution::NOT_SETDistanceResolution LD2410Types::ConfigData::distanceResolution = DistanceResolution::NOT_SET
    -
    LD2410Types::DetectionData Struct Reference
    +
    LD2410Types::DetectionData Struct Reference
    diff --git a/docu/topics.html b/docu/topics.html index 9c03c3f..d5f6cd9 100644 --- a/docu/topics.html +++ b/docu/topics.html @@ -102,11 +102,18 @@ diff --git a/docu/topics.js b/docu/topics.js index b9971a6..479ebbb 100644 --- a/docu/topics.js +++ b/docu/topics.js @@ -1,8 +1,15 @@ var topics = [ - [ "Callback Registration", "group__LD2410Async__Callbacks.html", "group__LD2410Async__Callbacks" ], - [ "Constructor & Basic Methods", "group__LD2410Async__Lifecycle.html", "group__LD2410Async__Lifecycle" ], - [ "Inactivity Handling", "group__LD2410Async__Inactivity.html", "group__LD2410Async__Inactivity" ], - [ "Public Data Members", "group__LD2410Async__Data.html", "group__LD2410Async__Data" ], - [ "Types And Callbacks", "group__LD2410Async__Types.html", "group__LD2410Async__Types" ] + [ "Async Commands", "group__LD2410Async__AsyncCommands.html", "group__LD2410Async__AsyncCommands" ], + [ "Bluetooth", "group__LD2410Async__Bluetooth.html", null ], + [ "Callbacks", "group__LD2410Async__Callbacks.html", "group__LD2410Async__Callbacks" ], + [ "Constructor & Main methods", "group__LD2410Async__MainMethods.html", "group__LD2410Async__MainMethods" ], + [ "High Level Commands", "group__LD2410Async__HighLevelCommands.html", "group__LD2410Async__HighLevelCommands" ], + [ "Inactivity Handling", "group__LD2410Async__InactivityHandling.html", "group__LD2410Async__InactivityHandling" ], + [ "Native Commands", "group__LD2410Async__NativeCommands.html", "group__LD2410Async__NativeCommands" ], + [ "Presence Detection", "group__LD2410Async__PresenceDetection.html", "group__LD2410Async__PresenceDetection" ], + [ "Public Data Members", "group__LD2410Async__PublicData.html", "group__LD2410Async__PublicData" ], + [ "Sensor Configuration", "group__LD2410Async__Configuration.html", "group__LD2410Async__Configuration" ], + [ "Static Sensor Data", "group__LD2410Async__StaticData.html", "group__LD2410Async__StaticData" ], + [ "Types, Enums & Structs", "group__LD2410Async__Types.html", "group__LD2410Async__Types" ] ]; \ No newline at end of file From 0f4e7672682eec3faee329515a1977ba35140fe9 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 21:29:51 +0200 Subject: [PATCH 025/114] Multigroup testing --- src/LD2410Async.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/LD2410Async.h b/src/LD2410Async.h index ff46c97..cbf0e82 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -1019,10 +1019,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_StaticData - * @ingroup LD2410Async_NativeCommands + * @ingroup LD2410Async_AsyncCommands LD2410Async_Bluetooth LD2410Async_StaticData LD2410Async_NativeCommands */ bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0); From 137d1edbbe0d892defea1e40a736a3322fada124 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 19:30:03 +0000 Subject: [PATCH 026/114] Update documentation --- docu/LD2410Async_8h_source.html | 1357 +++++++++++++++---------------- 1 file changed, 677 insertions(+), 680 deletions(-) diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index 114a09c..b550d65 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -1128,721 +1128,718 @@
    1019 *
    1020 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    1021 *
    -
    1022 * @ingroup LD2410Async_AsyncCommands
    -
    1023 * @ingroup LD2410Async_Bluetooth
    -
    1024 * @ingroup LD2410Async_StaticData
    -
    1025 * @ingroup LD2410Async_NativeCommands
    -
    1026 */
    -
    1027 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1028
    -
    1029 /**
    -
    1030 * @brief Sets the password for bluetooth access to the sensor.
    -
    1031 *
    -
    1032 * @param password New bluetooth password. Max 6. chars.
    -
    1033 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1034 * @param userData Optional value that will be passed to the callback function.
    -
    1035 *
    -
    1036 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1037 *
    -
    1038 * @ingroup LD2410Async_AsyncCommands
    -
    1039 * @ingroup LD2410Async_Configuration
    -
    1040 * @ingroup LD2410Async_Bluetooth
    -
    1041 * @ingroup LD2410Async_NativeCommands
    -
    1042 */
    -
    1043 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    -
    1044
    -
    1045 /**
    -
    1046 * @brief Sets the password for bluetooth access to the sensor.
    -
    1047 *
    -
    1048 * @param password New bluetooth password. Max 6. chars.
    -
    1049 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1050 * @param userData Optional value that will be passed to the callback function.
    -
    1051 *
    -
    1052 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1053 *
    -
    1054 * @ingroup LD2410Async_AsyncCommands
    -
    1055 * @ingroup LD2410Async_Configuration
    -
    1056 * @ingroup LD2410Async_Bluetooth
    -
    1057 * @ingroup LD2410Async_NativeCommands
    -
    1058 */
    -
    1059 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    -
    1060
    -
    1061 /**
    -
    1062 * @brief Resets the password for bluetooth access to the default value (HiLink)
    -
    1063 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1064 * @param userData Optional value that will be passed to the callback function.
    -
    1065 *
    -
    1066 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1067 *
    -
    1068 * @ingroup LD2410Async_AsyncCommands
    -
    1069 * @ingroup LD2410Async_Configuration
    -
    1070 * @ingroup LD2410Async_Bluetooth
    -
    1071 * @ingroup LD2410Async_NativeCommands
    -
    1072 */
    -
    1073 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1074
    -
    1075 /**
    -
    1076 * @brief Configures the distance resolution of the radar.
    -
    1077 *
    -
    1078 * The distance resolution defines the size of each distance gate
    -
    1079 * and the maximum detection range:
    -
    1080 * - RESOLUTION_75CM → longer range, coarser detail.
    -
    1081 * - RESOLUTION_20CM → shorter range, finer detail.
    -
    1082 *
    -
    1083 * @note Requires config mode. Will be managed automatically.
    -
    1084 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1085 * @note Fails if another async command is pending.
    -
    1086 *
    -
    1087 * @param distanceResolution Value from the DistanceResolution enum.
    -
    1088 * Must not be NOT_SET.
    -
    1089 * @param callback Function pointer with signature:
    -
    1090 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1091 * Fired when the ACK is received or on failure/timeout.
    -
    1092 * @param userData Optional value passed to the callback.
    +
    1022 * @ingroup LD2410Async_AsyncCommands LD2410Async_Bluetooth LD2410Async_StaticData LD2410Async_NativeCommands
    +
    1023 */
    +
    1024 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1025
    +
    1026 /**
    +
    1027 * @brief Sets the password for bluetooth access to the sensor.
    +
    1028 *
    +
    1029 * @param password New bluetooth password. Max 6. chars.
    +
    1030 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    1031 * @param userData Optional value that will be passed to the callback function.
    +
    1032 *
    +
    1033 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    1034 *
    +
    1035 * @ingroup LD2410Async_AsyncCommands
    +
    1036 * @ingroup LD2410Async_Configuration
    +
    1037 * @ingroup LD2410Async_Bluetooth
    +
    1038 * @ingroup LD2410Async_NativeCommands
    +
    1039 */
    +
    1040 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    +
    1041
    +
    1042 /**
    +
    1043 * @brief Sets the password for bluetooth access to the sensor.
    +
    1044 *
    +
    1045 * @param password New bluetooth password. Max 6. chars.
    +
    1046 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    1047 * @param userData Optional value that will be passed to the callback function.
    +
    1048 *
    +
    1049 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    1050 *
    +
    1051 * @ingroup LD2410Async_AsyncCommands
    +
    1052 * @ingroup LD2410Async_Configuration
    +
    1053 * @ingroup LD2410Async_Bluetooth
    +
    1054 * @ingroup LD2410Async_NativeCommands
    +
    1055 */
    +
    1056 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    +
    1057
    +
    1058 /**
    +
    1059 * @brief Resets the password for bluetooth access to the default value (HiLink)
    +
    1060 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    1061 * @param userData Optional value that will be passed to the callback function.
    +
    1062 *
    +
    1063 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    1064 *
    +
    1065 * @ingroup LD2410Async_AsyncCommands
    +
    1066 * @ingroup LD2410Async_Configuration
    +
    1067 * @ingroup LD2410Async_Bluetooth
    +
    1068 * @ingroup LD2410Async_NativeCommands
    +
    1069 */
    +
    1070 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1071
    +
    1072 /**
    +
    1073 * @brief Configures the distance resolution of the radar.
    +
    1074 *
    +
    1075 * The distance resolution defines the size of each distance gate
    +
    1076 * and the maximum detection range:
    +
    1077 * - RESOLUTION_75CM → longer range, coarser detail.
    +
    1078 * - RESOLUTION_20CM → shorter range, finer detail.
    +
    1079 *
    +
    1080 * @note Requires config mode. Will be managed automatically.
    +
    1081 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    1082 * @note Fails if another async command is pending.
    +
    1083 *
    +
    1084 * @param distanceResolution Value from the DistanceResolution enum.
    +
    1085 * Must not be NOT_SET.
    +
    1086 * @param callback Function pointer with signature:
    +
    1087 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1088 * Fired when the ACK is received or on failure/timeout.
    +
    1089 * @param userData Optional value passed to the callback.
    +
    1090 *
    +
    1091 * @returns true if the command was sent, false if invalid parameters
    +
    1092 * or the library is busy.
    1093 *
    -
    1094 * @returns true if the command was sent, false if invalid parameters
    -
    1095 * or the library is busy.
    -
    1096 *
    -
    1097 * @ingroup LD2410Async_AsyncCommands
    -
    1098 * @ingroup LD2410Async_Configuration
    -
    1099 * @ingroup LD2410Async_NativeCommands
    -
    1100 */
    -
    1101 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    -
    1102
    -
    1103 /**
    -
    1104 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    -
    1105 *
    -
    1106 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    -
    1107 *
    -
    1108 * @note Requires config mode. Will be managed automatically.
    -
    1109 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1110 * @note Fails if another async command is pending.
    -
    1111 *
    -
    1112 * @param callback Function pointer with signature:
    -
    1113 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1114 * @param userData Optional value passed to the callback.
    -
    1115 *
    -
    1116 * @returns true if the command was sent, false otherwise.
    -
    1117 *
    -
    1118 * @ingroup LD2410Async_AsyncCommands
    -
    1119 * @ingroup LD2410Async_Configuration
    -
    1120 * @ingroup LD2410Async_NativeCommands
    -
    1121 */
    -
    1122 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1123
    -
    1124 /**
    -
    1125 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    -
    1126 *
    -
    1127 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    -
    1128 *
    -
    1129 * @note Requires config mode. Will be managed automatically.
    -
    1130 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1131 * @note Fails if another async command is pending.
    -
    1132 *
    -
    1133 * @param callback Function pointer with signature:
    -
    1134 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1135 * @param userData Optional value passed to the callback.
    -
    1136 *
    -
    1137 * @returns true if the command was sent, false otherwise.
    -
    1138 *
    -
    1139 * @ingroup LD2410Async_AsyncCommands
    -
    1140 * @ingroup LD2410Async_Configuration
    -
    1141 * @ingroup LD2410Async_NativeCommands
    -
    1142 */
    -
    1143 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1144
    -
    1145 /**
    -
    1146 * @brief Requests the current distance resolution setting from the sensor.
    -
    1147 *
    -
    1148 * The result is written into configData.distanceResolution.
    -
    1149 *
    -
    1150 * @note Requires config mode. Will be managed automatically.
    -
    1151 *
    -
    1152 * @param callback Function pointer with signature:
    -
    1153 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1154 * @param userData Optional value passed to the callback.
    -
    1155 *
    -
    1156 * @returns true if the command was sent, false otherwise.
    -
    1157 *
    -
    1158 * @ingroup LD2410Async_AsyncCommands
    -
    1159 * @ingroup LD2410Async_Configuration
    -
    1160 * @ingroup LD2410Async_NativeCommands
    -
    1161 */
    -
    1162 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1163
    -
    1164 /**
    -
    1165 * @brief Configures the auxiliary control parameters (light and output pin).
    -
    1166 *
    -
    1167 * This configures how the OUT pin behaves depending on light levels
    -
    1168 * and presence detection. Typical use cases include controlling
    -
    1169 * an external lamp or relay.
    -
    1170 *
    -
    1171 * @note Requires config mode. Will be managed automatically.
    -
    1172 * @note Both enums must be set to valid values (not NOT_SET).
    -
    1173 * @note Fails if another async command is pending.
    -
    1174 *
    -
    1175 * @param lightControl Light control behavior (see LightControl enum).
    -
    1176 * @param lightThreshold Threshold (0–255) used for light-based switching.
    -
    1177 * @param outputControl Output pin logic configuration (see OutputControl enum).
    -
    1178 * @param callback Function pointer with signature:
    -
    1179 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1180 * Fired when ACK is received or on failure/timeout.
    -
    1181 * @param userData Optional value passed to the callback.
    -
    1182 *
    -
    1183 * @returns true if the command was sent, false otherwise.
    -
    1184 *
    -
    1185 * @ingroup LD2410Async_AsyncCommands
    -
    1186 * @ingroup LD2410Async_Configuration
    -
    1187 * @ingroup LD2410Async_NativeCommands
    -
    1188 */
    -
    1189 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    -
    1190
    -
    1191 /**
    -
    1192 * @brief Requests the current auxiliary control settings.
    +
    1094 * @ingroup LD2410Async_AsyncCommands
    +
    1095 * @ingroup LD2410Async_Configuration
    +
    1096 * @ingroup LD2410Async_NativeCommands
    +
    1097 */
    +
    1098 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    +
    1099
    +
    1100 /**
    +
    1101 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    +
    1102 *
    +
    1103 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    +
    1104 *
    +
    1105 * @note Requires config mode. Will be managed automatically.
    +
    1106 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    1107 * @note Fails if another async command is pending.
    +
    1108 *
    +
    1109 * @param callback Function pointer with signature:
    +
    1110 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1111 * @param userData Optional value passed to the callback.
    +
    1112 *
    +
    1113 * @returns true if the command was sent, false otherwise.
    +
    1114 *
    +
    1115 * @ingroup LD2410Async_AsyncCommands
    +
    1116 * @ingroup LD2410Async_Configuration
    +
    1117 * @ingroup LD2410Async_NativeCommands
    +
    1118 */
    +
    1119 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1120
    +
    1121 /**
    +
    1122 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    +
    1123 *
    +
    1124 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    +
    1125 *
    +
    1126 * @note Requires config mode. Will be managed automatically.
    +
    1127 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    1128 * @note Fails if another async command is pending.
    +
    1129 *
    +
    1130 * @param callback Function pointer with signature:
    +
    1131 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1132 * @param userData Optional value passed to the callback.
    +
    1133 *
    +
    1134 * @returns true if the command was sent, false otherwise.
    +
    1135 *
    +
    1136 * @ingroup LD2410Async_AsyncCommands
    +
    1137 * @ingroup LD2410Async_Configuration
    +
    1138 * @ingroup LD2410Async_NativeCommands
    +
    1139 */
    +
    1140 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1141
    +
    1142 /**
    +
    1143 * @brief Requests the current distance resolution setting from the sensor.
    +
    1144 *
    +
    1145 * The result is written into configData.distanceResolution.
    +
    1146 *
    +
    1147 * @note Requires config mode. Will be managed automatically.
    +
    1148 *
    +
    1149 * @param callback Function pointer with signature:
    +
    1150 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1151 * @param userData Optional value passed to the callback.
    +
    1152 *
    +
    1153 * @returns true if the command was sent, false otherwise.
    +
    1154 *
    +
    1155 * @ingroup LD2410Async_AsyncCommands
    +
    1156 * @ingroup LD2410Async_Configuration
    +
    1157 * @ingroup LD2410Async_NativeCommands
    +
    1158 */
    +
    1159 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1160
    +
    1161 /**
    +
    1162 * @brief Configures the auxiliary control parameters (light and output pin).
    +
    1163 *
    +
    1164 * This configures how the OUT pin behaves depending on light levels
    +
    1165 * and presence detection. Typical use cases include controlling
    +
    1166 * an external lamp or relay.
    +
    1167 *
    +
    1168 * @note Requires config mode. Will be managed automatically.
    +
    1169 * @note Both enums must be set to valid values (not NOT_SET).
    +
    1170 * @note Fails if another async command is pending.
    +
    1171 *
    +
    1172 * @param lightControl Light control behavior (see LightControl enum).
    +
    1173 * @param lightThreshold Threshold (0–255) used for light-based switching.
    +
    1174 * @param outputControl Output pin logic configuration (see OutputControl enum).
    +
    1175 * @param callback Function pointer with signature:
    +
    1176 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1177 * Fired when ACK is received or on failure/timeout.
    +
    1178 * @param userData Optional value passed to the callback.
    +
    1179 *
    +
    1180 * @returns true if the command was sent, false otherwise.
    +
    1181 *
    +
    1182 * @ingroup LD2410Async_AsyncCommands
    +
    1183 * @ingroup LD2410Async_Configuration
    +
    1184 * @ingroup LD2410Async_NativeCommands
    +
    1185 */
    +
    1186 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    +
    1187
    +
    1188 /**
    +
    1189 * @brief Requests the current auxiliary control settings.
    +
    1190 *
    +
    1191 * Fills configData.lightControl, configData.lightThreshold,
    +
    1192 * and configData.outputControl.
    1193 *
    -
    1194 * Fills configData.lightControl, configData.lightThreshold,
    -
    1195 * and configData.outputControl.
    -
    1196 *
    -
    1197 * @note Requires config mode. Will be managed automatically.
    -
    1198 *
    -
    1199 * @param callback Function pointer with signature:
    -
    1200 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1201 * Fired when ACK is received or on failure/timeout.
    -
    1202 * @param userData Optional value passed to the callback.
    -
    1203 *
    -
    1204 * @returns true if the command was sent, false otherwise.
    -
    1205 *
    -
    1206 * @ingroup LD2410Async_AsyncCommands
    -
    1207 * @ingroup LD2410Async_Configuration
    -
    1208 * @ingroup LD2410Async_NativeCommands
    -
    1209 */
    -
    1210 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1211
    -
    1212
    -
    1213 /**
    -
    1214 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    -
    1215 *
    -
    1216 * Auto-config lets the radar adjust its internal thresholds and
    -
    1217 * sensitivities for the current environment. This can take several
    -
    1218 * seconds to complete and results in updated sensitivity values.
    -
    1219 *
    -
    1220 * The progress and result can be checked with requestAutoConfigStatusAsync().
    -
    1221 *
    -
    1222 * @note Requires config mode. This method will manage entering and
    -
    1223 * exiting config mode automatically.
    -
    1224 * @note Auto-config temporarily suspends normal detection reporting.
    -
    1225 *
    -
    1226 * ## Example: Run auto-config
    -
    1227 * @code
    -
    1228 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    -
    1229 * AsyncCommandResult result,
    -
    1230 * byte) {
    -
    1231 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1232 * Serial.println("Auto-config started.");
    -
    1233 * } else {
    -
    1234 * Serial.println("Failed to start auto-config.");
    -
    1235 * }
    -
    1236 * });
    -
    1237 * @endcode
    -
    1238 *
    -
    1239 * ## Do:
    -
    1240 * - Use in new environments to optimize detection performance.
    -
    1241 * - Query status afterwards with requestAutoConfigStatusAsync().
    +
    1194 * @note Requires config mode. Will be managed automatically.
    +
    1195 *
    +
    1196 * @param callback Function pointer with signature:
    +
    1197 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1198 * Fired when ACK is received or on failure/timeout.
    +
    1199 * @param userData Optional value passed to the callback.
    +
    1200 *
    +
    1201 * @returns true if the command was sent, false otherwise.
    +
    1202 *
    +
    1203 * @ingroup LD2410Async_AsyncCommands
    +
    1204 * @ingroup LD2410Async_Configuration
    +
    1205 * @ingroup LD2410Async_NativeCommands
    +
    1206 */
    +
    1207 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1208
    +
    1209
    +
    1210 /**
    +
    1211 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    +
    1212 *
    +
    1213 * Auto-config lets the radar adjust its internal thresholds and
    +
    1214 * sensitivities for the current environment. This can take several
    +
    1215 * seconds to complete and results in updated sensitivity values.
    +
    1216 *
    +
    1217 * The progress and result can be checked with requestAutoConfigStatusAsync().
    +
    1218 *
    +
    1219 * @note Requires config mode. This method will manage entering and
    +
    1220 * exiting config mode automatically.
    +
    1221 * @note Auto-config temporarily suspends normal detection reporting.
    +
    1222 *
    +
    1223 * ## Example: Run auto-config
    +
    1224 * @code
    +
    1225 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    +
    1226 * AsyncCommandResult result,
    +
    1227 * byte) {
    +
    1228 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1229 * Serial.println("Auto-config started.");
    +
    1230 * } else {
    +
    1231 * Serial.println("Failed to start auto-config.");
    +
    1232 * }
    +
    1233 * });
    +
    1234 * @endcode
    +
    1235 *
    +
    1236 * ## Do:
    +
    1237 * - Use in new environments to optimize detection performance.
    +
    1238 * - Query status afterwards with requestAutoConfigStatusAsync().
    +
    1239 *
    +
    1240 * ## Don’t:
    +
    1241 * - Expect instant results — the sensor needs time to complete the process.
    1242 *
    -
    1243 * ## Don’t:
    -
    1244 * - Expect instant results — the sensor needs time to complete the process.
    -
    1245 *
    -
    1246 * @param callback Callback with signature:
    -
    1247 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1248 * Fired when the command is acknowledged or on failure/timeout.
    -
    1249 * @param userData Optional value passed to the callback.
    -
    1250 *
    -
    1251 * @returns true if the command was sent, false otherwise.
    -
    1252 *
    -
    1253 * @ingroup LD2410Async_AsyncCommands
    -
    1254 * @ingroup LD2410Async_Configuration
    -
    1255 * @ingroup LD2410Async_NativeCommands
    -
    1256 */
    -
    1257 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1258
    -
    1259
    -
    1260 /**
    -
    1261 * @brief Requests the current status of the auto-config routine.
    -
    1262 *
    -
    1263 * The status is written into the member variable autoConfigStatus:
    -
    1264 * - NOT_IN_PROGRESS → no auto-config running.
    -
    1265 * - IN_PROGRESS → auto-config is currently running.
    -
    1266 * - COMPLETED → auto-config finished (success or failure).
    +
    1243 * @param callback Callback with signature:
    +
    1244 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1245 * Fired when the command is acknowledged or on failure/timeout.
    +
    1246 * @param userData Optional value passed to the callback.
    +
    1247 *
    +
    1248 * @returns true if the command was sent, false otherwise.
    +
    1249 *
    +
    1250 * @ingroup LD2410Async_AsyncCommands
    +
    1251 * @ingroup LD2410Async_Configuration
    +
    1252 * @ingroup LD2410Async_NativeCommands
    +
    1253 */
    +
    1254 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1255
    +
    1256
    +
    1257 /**
    +
    1258 * @brief Requests the current status of the auto-config routine.
    +
    1259 *
    +
    1260 * The status is written into the member variable autoConfigStatus:
    +
    1261 * - NOT_IN_PROGRESS → no auto-config running.
    +
    1262 * - IN_PROGRESS → auto-config is currently running.
    +
    1263 * - COMPLETED → auto-config finished (success or failure).
    +
    1264 *
    +
    1265 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1266 * @note If another async command is already pending, this call fails.
    1267 *
    -
    1268 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1269 * @note If another async command is already pending, this call fails.
    -
    1270 *
    -
    1271 * ## Example: Check auto-config status
    -
    1272 * @code
    -
    1273 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    -
    1274 * AsyncCommandResult result,
    -
    1275 * byte) {
    -
    1276 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1277 * switch (sender->autoConfigStatus) {
    -
    1278 * case AutoConfigStatus::NOT_IN_PROGRESS:
    -
    1279 * Serial.println("Auto-config not running.");
    +
    1268 * ## Example: Check auto-config status
    +
    1269 * @code
    +
    1270 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    +
    1271 * AsyncCommandResult result,
    +
    1272 * byte) {
    +
    1273 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1274 * switch (sender->autoConfigStatus) {
    +
    1275 * case AutoConfigStatus::NOT_IN_PROGRESS:
    +
    1276 * Serial.println("Auto-config not running.");
    +
    1277 * break;
    +
    1278 * case AutoConfigStatus::IN_PROGRESS:
    +
    1279 * Serial.println("Auto-config in progress...");
    1280 * break;
    -
    1281 * case AutoConfigStatus::IN_PROGRESS:
    -
    1282 * Serial.println("Auto-config in progress...");
    +
    1281 * case AutoConfigStatus::COMPLETED:
    +
    1282 * Serial.println("Auto-config completed.");
    1283 * break;
    -
    1284 * case AutoConfigStatus::COMPLETED:
    -
    1285 * Serial.println("Auto-config completed.");
    -
    1286 * break;
    -
    1287 * default:
    -
    1288 * Serial.println("Unknown auto-config status.");
    -
    1289 * }
    -
    1290 * } else {
    -
    1291 * Serial.println("Failed to request auto-config status.");
    -
    1292 * }
    -
    1293 * });
    -
    1294 * @endcode
    -
    1295 *
    -
    1296 * ## Do:
    -
    1297 * - Use this after beginAutoConfigAsync() to track progress.
    -
    1298 * - Use autoConfigStatus for decision-making in your logic.
    +
    1284 * default:
    +
    1285 * Serial.println("Unknown auto-config status.");
    +
    1286 * }
    +
    1287 * } else {
    +
    1288 * Serial.println("Failed to request auto-config status.");
    +
    1289 * }
    +
    1290 * });
    +
    1291 * @endcode
    +
    1292 *
    +
    1293 * ## Do:
    +
    1294 * - Use this after beginAutoConfigAsync() to track progress.
    +
    1295 * - Use autoConfigStatus for decision-making in your logic.
    +
    1296 *
    +
    1297 * ## Don’t:
    +
    1298 * - Assume COMPLETED means success — thresholds should still be verified.
    1299 *
    -
    1300 * ## Don’t:
    -
    1301 * - Assume COMPLETED means success — thresholds should still be verified.
    -
    1302 *
    -
    1303 * @param callback Callback with signature:
    -
    1304 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1305 * Fired when the sensor replies or on failure/timeout.
    -
    1306 * @param userData Optional value passed to the callback.
    -
    1307 *
    -
    1308 * @returns true if the command was sent, false otherwise.
    -
    1309 *
    -
    1310 * @ingroup LD2410Async_AsyncCommands
    -
    1311 * @ingroup LD2410Async_Configuration
    -
    1312 * @ingroup LD2410Async_NativeCommands
    -
    1313 */
    -
    1314 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1315
    -
    1316
    -
    1317
    -
    1318 /*---------------------------------------------------------------------------------
    -
    1319 - High level commands
    -
    1320 ---------------------------------------------------------------------------------*/
    -
    1321 // High level commands typically encapsulate several native commands.
    -
    1322 // They provide a more consistent access to the sensors configuration,
    -
    1323 // e.g. for reading all config data 3 native commands are necessary,
    -
    1324 // to update the same data up to 12 native commands may be required.
    -
    1325 //The highlevel commands encapsulate both situation into a single command
    -
    1326
    -
    1327 /**
    -
    1328 * @brief Requests all configuration settings from the sensor.
    -
    1329 *
    -
    1330 * This triggers a sequence of queries that retrieves and updates:
    -
    1331 * - Gate parameters (sensitivities, max gates, timeout).
    -
    1332 * - Distance resolution setting.
    -
    1333 * - Auxiliary light/output control settings.
    +
    1300 * @param callback Callback with signature:
    +
    1301 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1302 * Fired when the sensor replies or on failure/timeout.
    +
    1303 * @param userData Optional value passed to the callback.
    +
    1304 *
    +
    1305 * @returns true if the command was sent, false otherwise.
    +
    1306 *
    +
    1307 * @ingroup LD2410Async_AsyncCommands
    +
    1308 * @ingroup LD2410Async_Configuration
    +
    1309 * @ingroup LD2410Async_NativeCommands
    +
    1310 */
    +
    1311 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1312
    +
    1313
    +
    1314
    +
    1315 /*---------------------------------------------------------------------------------
    +
    1316 - High level commands
    +
    1317 ---------------------------------------------------------------------------------*/
    +
    1318 // High level commands typically encapsulate several native commands.
    +
    1319 // They provide a more consistent access to the sensors configuration,
    +
    1320 // e.g. for reading all config data 3 native commands are necessary,
    +
    1321 // to update the same data up to 12 native commands may be required.
    +
    1322 //The highlevel commands encapsulate both situation into a single command
    +
    1323
    +
    1324 /**
    +
    1325 * @brief Requests all configuration settings from the sensor.
    +
    1326 *
    +
    1327 * This triggers a sequence of queries that retrieves and updates:
    +
    1328 * - Gate parameters (sensitivities, max gates, timeout).
    +
    1329 * - Distance resolution setting.
    +
    1330 * - Auxiliary light/output control settings.
    +
    1331 *
    +
    1332 * The results are stored in configData, and the
    +
    1333 * registerConfigUpdateReceivedCallback() is invoked after completion.
    1334 *
    -
    1335 * The results are stored in configData, and the
    -
    1336 * registerConfigUpdateReceivedCallback() is invoked after completion.
    -
    1337 *
    -
    1338 * @note This is a high-level method that involves multiple commands.
    -
    1339 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1340 * @note If another async command is already pending, the request fails.
    -
    1341 *
    -
    1342 * ## Example: Refresh config data
    -
    1343 * @code
    -
    1344 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    -
    1345 * AsyncCommandResult result,
    -
    1346 * byte) {
    -
    1347 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1348 * Serial.println("All config data refreshed:");
    -
    1349 * sender->getConfigDataRef().print();
    -
    1350 * }
    -
    1351 * });
    -
    1352 * @endcode
    -
    1353 *
    -
    1354 * ## Do:
    -
    1355 * - Use this after connecting to ensure configData is fully populated.
    -
    1356 * - Call before modifying config if you’re unsure of current values.
    +
    1335 * @note This is a high-level method that involves multiple commands.
    +
    1336 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1337 * @note If another async command is already pending, the request fails.
    +
    1338 *
    +
    1339 * ## Example: Refresh config data
    +
    1340 * @code
    +
    1341 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    +
    1342 * AsyncCommandResult result,
    +
    1343 * byte) {
    +
    1344 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1345 * Serial.println("All config data refreshed:");
    +
    1346 * sender->getConfigDataRef().print();
    +
    1347 * }
    +
    1348 * });
    +
    1349 * @endcode
    +
    1350 *
    +
    1351 * ## Do:
    +
    1352 * - Use this after connecting to ensure configData is fully populated.
    +
    1353 * - Call before modifying config if you’re unsure of current values.
    +
    1354 *
    +
    1355 * ## Don’t:
    +
    1356 * - Expect it to succeed if another async command is still running.
    1357 *
    -
    1358 * ## Don’t:
    -
    1359 * - Expect it to succeed if another async command is still running.
    -
    1360 *
    -
    1361 * @param callback Callback with signature:
    -
    1362 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1363 * Fired when all config data has been received or on failure.
    -
    1364 * @param userData Optional value passed to the callback.
    -
    1365 *
    -
    1366 * @returns true if the command was sent, false otherwise.
    -
    1367 *
    -
    1368 * @ingroup LD2410Async_AsyncCommands
    -
    1369 * @ingroup LD2410Async_Configuration
    -
    1370 * @ingroup LD2410Async_HighLevelCommands
    -
    1371 */
    -
    1372 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1373
    -
    1374
    -
    1375 /**
    -
    1376 * @brief Requests all static information from the sensor.
    -
    1377 *
    -
    1378 * This includes:
    -
    1379 * - Firmware version string.
    -
    1380 * - Bluetooth MAC address (numeric and string form).
    +
    1358 * @param callback Callback with signature:
    +
    1359 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1360 * Fired when all config data has been received or on failure.
    +
    1361 * @param userData Optional value passed to the callback.
    +
    1362 *
    +
    1363 * @returns true if the command was sent, false otherwise.
    +
    1364 *
    +
    1365 * @ingroup LD2410Async_AsyncCommands
    +
    1366 * @ingroup LD2410Async_Configuration
    +
    1367 * @ingroup LD2410Async_HighLevelCommands
    +
    1368 */
    +
    1369 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1370
    +
    1371
    +
    1372 /**
    +
    1373 * @brief Requests all static information from the sensor.
    +
    1374 *
    +
    1375 * This includes:
    +
    1376 * - Firmware version string.
    +
    1377 * - Bluetooth MAC address (numeric and string form).
    +
    1378 *
    +
    1379 * The values are written into the public members `firmware`, `mac`,
    +
    1380 * and `macString`.
    1381 *
    -
    1382 * The values are written into the public members `firmware`, `mac`,
    -
    1383 * and `macString`.
    -
    1384 *
    -
    1385 * @note This is a high-level method that involves multiple commands.
    -
    1386 * @note Requires config mode. Managed automatically by this method.
    -
    1387 * @note If another async command is already pending, the request fails.
    -
    1388 *
    -
    1389 * ## Example: Retrieve firmware and MAC
    -
    1390 * @code
    -
    1391 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    -
    1392 * AsyncCommandResult result,
    -
    1393 * byte) {
    -
    1394 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1395 * Serial.print("Firmware: ");
    -
    1396 * Serial.println(sender->firmware);
    -
    1397 *
    -
    1398 * Serial.print("MAC: ");
    -
    1399 * Serial.println(sender->macString);
    -
    1400 * }
    -
    1401 * });
    -
    1402 * @endcode
    -
    1403 *
    -
    1404 * ## Do:
    -
    1405 * - Use after initialization to log firmware version and MAC.
    -
    1406 * - Useful for debugging or inventory identification.
    +
    1382 * @note This is a high-level method that involves multiple commands.
    +
    1383 * @note Requires config mode. Managed automatically by this method.
    +
    1384 * @note If another async command is already pending, the request fails.
    +
    1385 *
    +
    1386 * ## Example: Retrieve firmware and MAC
    +
    1387 * @code
    +
    1388 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    +
    1389 * AsyncCommandResult result,
    +
    1390 * byte) {
    +
    1391 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1392 * Serial.print("Firmware: ");
    +
    1393 * Serial.println(sender->firmware);
    +
    1394 *
    +
    1395 * Serial.print("MAC: ");
    +
    1396 * Serial.println(sender->macString);
    +
    1397 * }
    +
    1398 * });
    +
    1399 * @endcode
    +
    1400 *
    +
    1401 * ## Do:
    +
    1402 * - Use after initialization to log firmware version and MAC.
    +
    1403 * - Useful for debugging or inventory identification.
    +
    1404 *
    +
    1405 * ## Don’t:
    +
    1406 * - Expect frequently changing data — this is static information.
    1407 *
    -
    1408 * ## Don’t:
    -
    1409 * - Expect frequently changing data — this is static information.
    -
    1410 *
    -
    1411 * @param callback Callback with signature:
    -
    1412 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1413 * Fired when static data is received or on failure.
    -
    1414 * @param userData Optional value passed to the callback.
    -
    1415 *
    -
    1416 * @returns true if the command was sent, false otherwise.
    -
    1417 *
    -
    1418 * @ingroup LD2410Async_AsyncCommands
    -
    1419 * @ingroup LD2410Async_StaticData
    -
    1420 * @ingroup LD2410Async_HighLevelCommands
    -
    1421 */
    -
    1422 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1423
    -
    1424
    -
    1425
    -
    1426 /**
    -
    1427 * @brief Applies a full ConfigData struct to the LD2410.
    -
    1428 *
    -
    1429 * If writeAllConfigData is true, the method will first fetch the current config,
    -
    1430 * compare it with the provide Config data and then create a command sequence that
    -
    1431 * will only update the changes config values.
    -
    1432 * If writeAllConfigData is false, the method will write all values in the provided
    -
    1433 * ConfigData to the sensor, regardless of whether they differ from the current config.
    -
    1434 *
    -
    1435 * @note This is a high-level method that involves multiple commands (up to 18).
    -
    1436 * @note Requires config mode. This method will manage entering and
    -
    1437 * exiting config mode automatically (if config mode is not already active).
    -
    1438 * @note If another async command is already pending, the command fails.
    -
    1439 * @note Any members of ConfigData that are left at invalid values
    -
    1440 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    -
    1441 *
    -
    1442 * ## Example: Clone, modify, and apply config
    -
    1443 * @code
    -
    1444 * ConfigData cfg = radar.getConfigData(); // clone current config
    -
    1445 * cfg.noOneTimeout = 120; // change timeout
    -
    1446 * cfg.distanceGateMotionSensitivity[2] = 75;
    -
    1447 *
    -
    1448 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    1449 * AsyncCommandResult result,
    -
    1450 * byte) {
    -
    1451 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1452 * Serial.println("All config applied successfully!");
    -
    1453 * }
    -
    1454 * });
    -
    1455 * @endcode
    -
    1456 *
    -
    1457 * ## Do:
    -
    1458 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    -
    1459 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    -
    1460 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    -
    1461 *
    -
    1462 * ## Don’t:
    -
    1463 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    -
    1464 * This generates unnecessary wear on the sensors memory.
    -
    1465 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    -
    1466
    -
    1467 *
    -
    1468 * @param configToWrite The configuration data to be applied.
    -
    1469 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    -
    1470 * @param callback Function with signature:
    -
    1471 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    -
    1472 * executed when the sequence finishes (success/fail/timeout/cancel).
    -
    1473 * @param userData Optional value passed to the callback.
    -
    1474 *
    -
    1475 * @returns true if the command sequence has been started, false otherwise.
    -
    1476 *
    -
    1477 * @ingroup LD2410Async_AsyncCommands
    -
    1478 * @ingroup LD2410Async_StaticData
    -
    1479 * @ingroup LD2410Async_HighLevelCommands
    -
    1480 */
    -
    1481 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    -
    1482
    -
    1483
    -
    1484
    -
    1485 private:
    -
    1486 // ============================================================================
    -
    1487 // Low-level serial interface
    -
    1488 // ============================================================================
    -
    1489
    -
    1490 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    -
    1491 Stream* sensor;
    -
    1492
    -
    1493
    -
    1494 // ============================================================================
    -
    1495 // Frame parsing state machine
    -
    1496 // ============================================================================
    -
    1497
    -
    1498 /// States used when parsing incoming frames from the sensor
    -
    1499 enum ReadFrameState {
    -
    1500 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    -
    1501 ACK_HEADER, ///< Parsing header of an ACK frame
    -
    1502 DATA_HEADER, ///< Parsing header of a DATA frame
    -
    1503 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    -
    1504 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    -
    1505 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    -
    1506 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    -
    1507 };
    -
    1508
    -
    1509 /// Result type when trying to read a frame
    -
    1510 enum FrameReadResponse {
    -
    1511 FAIL = 0, ///< Frame was invalid or incomplete
    -
    1512 ACK, ///< A valid ACK frame was received
    -
    1513 DATA ///< A valid DATA frame was received
    -
    1514 };
    -
    1515
    -
    1516 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    -
    1517 int payloadSize = 0; ///< Expected payload size of current frame
    -
    1518 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    +
    1408 * @param callback Callback with signature:
    +
    1409 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1410 * Fired when static data is received or on failure.
    +
    1411 * @param userData Optional value passed to the callback.
    +
    1412 *
    +
    1413 * @returns true if the command was sent, false otherwise.
    +
    1414 *
    +
    1415 * @ingroup LD2410Async_AsyncCommands
    +
    1416 * @ingroup LD2410Async_StaticData
    +
    1417 * @ingroup LD2410Async_HighLevelCommands
    +
    1418 */
    +
    1419 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1420
    +
    1421
    +
    1422
    +
    1423 /**
    +
    1424 * @brief Applies a full ConfigData struct to the LD2410.
    +
    1425 *
    +
    1426 * If writeAllConfigData is true, the method will first fetch the current config,
    +
    1427 * compare it with the provide Config data and then create a command sequence that
    +
    1428 * will only update the changes config values.
    +
    1429 * If writeAllConfigData is false, the method will write all values in the provided
    +
    1430 * ConfigData to the sensor, regardless of whether they differ from the current config.
    +
    1431 *
    +
    1432 * @note This is a high-level method that involves multiple commands (up to 18).
    +
    1433 * @note Requires config mode. This method will manage entering and
    +
    1434 * exiting config mode automatically (if config mode is not already active).
    +
    1435 * @note If another async command is already pending, the command fails.
    +
    1436 * @note Any members of ConfigData that are left at invalid values
    +
    1437 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    +
    1438 *
    +
    1439 * ## Example: Clone, modify, and apply config
    +
    1440 * @code
    +
    1441 * ConfigData cfg = radar.getConfigData(); // clone current config
    +
    1442 * cfg.noOneTimeout = 120; // change timeout
    +
    1443 * cfg.distanceGateMotionSensitivity[2] = 75;
    +
    1444 *
    +
    1445 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    1446 * AsyncCommandResult result,
    +
    1447 * byte) {
    +
    1448 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1449 * Serial.println("All config applied successfully!");
    +
    1450 * }
    +
    1451 * });
    +
    1452 * @endcode
    +
    1453 *
    +
    1454 * ## Do:
    +
    1455 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    +
    1456 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    +
    1457 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    +
    1458 *
    +
    1459 * ## Don’t:
    +
    1460 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    +
    1461 * This generates unnecessary wear on the sensors memory.
    +
    1462 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    +
    1463
    +
    1464 *
    +
    1465 * @param configToWrite The configuration data to be applied.
    +
    1466 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    +
    1467 * @param callback Function with signature:
    +
    1468 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    +
    1469 * executed when the sequence finishes (success/fail/timeout/cancel).
    +
    1470 * @param userData Optional value passed to the callback.
    +
    1471 *
    +
    1472 * @returns true if the command sequence has been started, false otherwise.
    +
    1473 *
    +
    1474 * @ingroup LD2410Async_AsyncCommands
    +
    1475 * @ingroup LD2410Async_StaticData
    +
    1476 * @ingroup LD2410Async_HighLevelCommands
    +
    1477 */
    +
    1478 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    +
    1479
    +
    1480
    +
    1481
    +
    1482 private:
    +
    1483 // ============================================================================
    +
    1484 // Low-level serial interface
    +
    1485 // ============================================================================
    +
    1486
    +
    1487 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    +
    1488 Stream* sensor;
    +
    1489
    +
    1490
    +
    1491 // ============================================================================
    +
    1492 // Frame parsing state machine
    +
    1493 // ============================================================================
    +
    1494
    +
    1495 /// States used when parsing incoming frames from the sensor
    +
    1496 enum ReadFrameState {
    +
    1497 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    +
    1498 ACK_HEADER, ///< Parsing header of an ACK frame
    +
    1499 DATA_HEADER, ///< Parsing header of a DATA frame
    +
    1500 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    +
    1501 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    +
    1502 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    +
    1503 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    +
    1504 };
    +
    1505
    +
    1506 /// Result type when trying to read a frame
    +
    1507 enum FrameReadResponse {
    +
    1508 FAIL = 0, ///< Frame was invalid or incomplete
    +
    1509 ACK, ///< A valid ACK frame was received
    +
    1510 DATA ///< A valid DATA frame was received
    +
    1511 };
    +
    1512
    +
    1513 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    +
    1514 int payloadSize = 0; ///< Expected payload size of current frame
    +
    1515 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    +
    1516
    +
    1517 /// Extract payload size from the current byte and update state machine
    +
    1518 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    1519
    -
    1520 /// Extract payload size from the current byte and update state machine
    -
    1521 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    +
    1520 /// Read payload bytes until full ACK/DATA frame is assembled
    +
    1521 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    1522
    -
    1523 /// Read payload bytes until full ACK/DATA frame is assembled
    -
    1524 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    -
    1525
    -
    1526 /// State machine entry: read incoming frame and return read response
    -
    1527 FrameReadResponse readFrame();
    -
    1528
    -
    1529
    -
    1530 // ============================================================================
    -
    1531 // Receive buffer
    -
    1532 // ============================================================================
    +
    1523 /// State machine entry: read incoming frame and return read response
    +
    1524 FrameReadResponse readFrame();
    +
    1525
    +
    1526
    +
    1527 // ============================================================================
    +
    1528 // Receive buffer
    +
    1529 // ============================================================================
    +
    1530
    +
    1531 /// Raw buffer for storing incoming bytes
    +
    1532 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    1533
    -
    1534 /// Raw buffer for storing incoming bytes
    -
    1535 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    -
    1536
    -
    1537 /// Current index into receiveBuffer
    -
    1538 byte receiveBufferIndex = 0;
    -
    1539
    -
    1540
    -
    1541 // ============================================================================
    -
    1542 // Asynchronous command sequence handling
    -
    1543 // ============================================================================
    +
    1534 /// Current index into receiveBuffer
    +
    1535 byte receiveBufferIndex = 0;
    +
    1536
    +
    1537
    +
    1538 // ============================================================================
    +
    1539 // Asynchronous command sequence handling
    +
    1540 // ============================================================================
    +
    1541
    +
    1542 /// Maximum number of commands in one async sequence
    +
    1543 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    1544
    -
    1545 /// Maximum number of commands in one async sequence
    -
    1546 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    +
    1545 /// Buffer holding queued commands for sequence execution
    +
    1546 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    1547
    -
    1548 /// Buffer holding queued commands for sequence execution
    -
    1549 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    +
    1548 /// Number of commands currently queued in the sequence buffer
    +
    1549 byte commandSequenceBufferCount = 0;
    1550
    -
    1551 /// Number of commands currently queued in the sequence buffer
    -
    1552 byte commandSequenceBufferCount = 0;
    +
    1551 /// Timestamp when the current async sequence started
    +
    1552 unsigned long executeCommandSequenceStartMs = 0;
    1553
    -
    1554 /// Timestamp when the current async sequence started
    -
    1555 unsigned long executeCommandSequenceStartMs = 0;
    +
    1554 /// Callback for current async sequence
    +
    1555 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    1556
    -
    1557 /// Callback for current async sequence
    -
    1558 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    +
    1557 /// User-provided data passed to async sequence callback
    +
    1558 byte executeCommandSequenceUserData = 0;
    1559
    -
    1560 /// User-provided data passed to async sequence callback
    -
    1561 byte executeCommandSequenceUserData = 0;
    +
    1560 /// True if an async sequence is currently pending.
    +
    1561 bool executeCommandSequenceActive = false;
    1562
    -
    1563 /// True if an async sequence is currently pending.
    -
    1564 bool executeCommandSequenceActive = false;
    -
    1565
    -
    1566 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    -
    1567 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    -
    1568 Ticker executeCommandSequenceOnceTicker;
    +
    1563 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    +
    1564 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    +
    1565 Ticker executeCommandSequenceOnceTicker;
    +
    1566
    +
    1567 /// Index of currently active command in the sequence buffer
    +
    1568 int executeCommandSequenceIndex = 0;
    1569
    -
    1570 /// Index of currently active command in the sequence buffer
    -
    1571 int executeCommandSequenceIndex = 0;
    +
    1570 /// Stores config mode state before sequence started (to restore later)
    +
    1571 bool executeCommandSequenceInitialConfigModeState = false;
    1572
    -
    1573 /// Stores config mode state before sequence started (to restore later)
    -
    1574 bool executeCommandSequenceInitialConfigModeState = false;
    +
    1573 /// Finalize an async sequence and invoke its callback
    +
    1574 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    1575
    -
    1576 /// Finalize an async sequence and invoke its callback
    -
    1577 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1576 /// Final step of an async sequence: restore config mode if needed and call callback
    +
    1577 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    1578
    -
    1579 /// Final step of an async sequence: restore config mode if needed and call callback
    -
    1580 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1581
    -
    1582 /// Internal callbacks for sequence steps
    -
    1583 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1584 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1579 /// Internal callbacks for sequence steps
    +
    1580 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1581 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1582
    +
    1583 /// Start executing an async sequence
    +
    1584 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    1585
    -
    1586 /// Start executing an async sequence
    -
    1587 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1586 /// Add one command to the sequence buffer
    +
    1587 bool addCommandToSequence(const byte* command);
    1588
    -
    1589 /// Add one command to the sequence buffer
    -
    1590 bool addCommandToSequence(const byte* command);
    -
    1591
    -
    1592 /// Reset sequence buffer to empty
    -
    1593 bool resetCommandSequence();
    -
    1594
    -
    1595
    -
    1596 // ============================================================================
    -
    1597 // Inactivity handling
    -
    1598 // ============================================================================
    -
    1599
    -
    1600 /// Update last-activity timestamp ("I am alive" signal)
    -
    1601 void heartbeat();
    -
    1602
    -
    1603 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    -
    1604 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    -
    1605 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    -
    1606 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    +
    1589 /// Reset sequence buffer to empty
    +
    1590 bool resetCommandSequence();
    +
    1591
    +
    1592
    +
    1593 // ============================================================================
    +
    1594 // Inactivity handling
    +
    1595 // ============================================================================
    +
    1596
    +
    1597 /// Update last-activity timestamp ("I am alive" signal)
    +
    1598 void heartbeat();
    +
    1599
    +
    1600 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    +
    1601 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    +
    1602 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    +
    1603 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    +
    1604
    +
    1605 /// Main inactivity handler: exit config mode or reboot if stuck
    +
    1606 void handleInactivity();
    1607
    -
    1608 /// Main inactivity handler: exit config mode or reboot if stuck
    -
    1609 void handleInactivity();
    +
    1608 /// Callback for reboot triggered by inactivity handler
    +
    1609 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1610
    -
    1611 /// Callback for reboot triggered by inactivity handler
    -
    1612 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1613
    -
    1614 /// Callback for disabling config mode during inactivity recovery
    -
    1615 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1616
    -
    1617
    -
    1618 // ============================================================================
    -
    1619 // Reboot handling
    -
    1620 // ============================================================================
    +
    1611 /// Callback for disabling config mode during inactivity recovery
    +
    1612 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1613
    +
    1614
    +
    1615 // ============================================================================
    +
    1616 // Reboot handling
    +
    1617 // ============================================================================
    +
    1618
    +
    1619 /// Step 1: Enter config mode before reboot
    +
    1620 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1621
    -
    1622 /// Step 1: Enter config mode before reboot
    -
    1623 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1624
    -
    1625 /// Step 2: Issue reboot command
    -
    1626 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1627
    -
    1628
    -
    1629 // ============================================================================
    -
    1630 // ACK/DATA processing
    -
    1631 // ============================================================================
    +
    1622 /// Step 2: Issue reboot command
    +
    1623 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1624
    +
    1625
    +
    1626 // ============================================================================
    +
    1627 // ACK/DATA processing
    +
    1628 // ============================================================================
    +
    1629
    +
    1630 /// Process a received ACK frame
    +
    1631 bool processAck();
    1632
    -
    1633 /// Process a received ACK frame
    -
    1634 bool processAck();
    -
    1635
    -
    1636 /// Process a received DATA frame
    -
    1637 bool processData();
    -
    1638
    -
    1639
    -
    1640 // ============================================================================
    -
    1641 // Callbacks
    -
    1642 // ============================================================================
    -
    1643
    -
    1644 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    -
    1645 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    -
    1646 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    -
    1647
    -
    1648 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    -
    1649 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    -
    1650 void executeConfigChangedCallback(); ///< Execute config-changed callback
    +
    1633 /// Process a received DATA frame
    +
    1634 bool processData();
    +
    1635
    +
    1636
    +
    1637 // ============================================================================
    +
    1638 // Callbacks
    +
    1639 // ============================================================================
    +
    1640
    +
    1641 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    +
    1642 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    +
    1643 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    +
    1644
    +
    1645 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    +
    1646 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    +
    1647 void executeConfigChangedCallback(); ///< Execute config-changed callback
    +
    1648
    +
    1649 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    +
    1650 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    1651
    -
    1652 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    -
    1653 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    -
    1654
    -
    1655
    -
    1656 // ============================================================================
    -
    1657 // Command sending
    -
    1658 // ============================================================================
    -
    1659
    -
    1660 /// Send raw command bytes to the sensor
    -
    1661 void sendCommand(const byte* command);
    -
    1662
    -
    1663
    -
    1664 // ============================================================================
    -
    1665 // FreeRTOS task management
    -
    1666 // ============================================================================
    -
    1667
    -
    1668 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    -
    1669 bool taskStop = false; ///< Stop flag for task loop
    -
    1670 void taskLoop(); ///< Background task loop for reading data
    -
    1671
    -
    1672
    -
    1673 // ============================================================================
    -
    1674 // Async command handling
    -
    1675 // ============================================================================
    +
    1652
    +
    1653 // ============================================================================
    +
    1654 // Command sending
    +
    1655 // ============================================================================
    +
    1656
    +
    1657 /// Send raw command bytes to the sensor
    +
    1658 void sendCommand(const byte* command);
    +
    1659
    +
    1660
    +
    1661 // ============================================================================
    +
    1662 // FreeRTOS task management
    +
    1663 // ============================================================================
    +
    1664
    +
    1665 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    +
    1666 bool taskStop = false; ///< Stop flag for task loop
    +
    1667 void taskLoop(); ///< Background task loop for reading data
    +
    1668
    +
    1669
    +
    1670 // ============================================================================
    +
    1671 // Async command handling
    +
    1672 // ============================================================================
    +
    1673
    +
    1674 ///< Timeout for async commands in ms (default 6000).
    +
    1675 unsigned long asyncCommandTimeoutMs = 6000;
    1676
    -
    1677 ///< Timeout for async commands in ms (default 6000).
    -
    1678 unsigned long asyncCommandTimeoutMs = 6000;
    +
    1677 /// Send a generic async command
    +
    1678 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1679
    -
    1680 /// Send a generic async command
    -
    1681 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    -
    1682
    -
    1683 /// Invoke async command callback with result
    -
    1684 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    -
    1685
    -
    1686
    +
    1680 /// Invoke async command callback with result
    +
    1681 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1682
    +
    1683
    +
    1684
    +
    1685 /// Handle async command timeout
    +
    1686 void handleAsyncCommandCallbackTimeout();
    1687
    -
    1688 /// Handle async command timeout
    -
    1689 void handleAsyncCommandCallbackTimeout();
    -
    1690
    -
    1691 /// Send async command that modifies configuration
    -
    1692 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    -
    1693
    -
    1694 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    -
    1695 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    -
    1696 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    -
    1697 byte asyncCommandCommandCode = 0; ///< Last command code issued
    -
    1698 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    -
    1699
    -
    1700
    -
    1701 // ============================================================================
    -
    1702 // Data processing
    -
    1703 // ============================================================================
    -
    1704
    -
    1705 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    -
    1706 void processReceivedData();
    -
    1707
    -
    1708 // ============================================================================
    -
    1709 // Config mode
    -
    1710 // ============================================================================
    -
    1711 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1712 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1713
    -
    1714 // ============================================================================
    -
    1715 // Config writing
    -
    1716 // ============================================================================
    -
    1717 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    -
    1718 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    -
    1719 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    -
    1720 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    -
    1721 bool configureAllConfigSettingsAsyncConfigActive = false;
    -
    1722 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    -
    1723 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    -
    1724
    -
    1725 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1726 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1727 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1728 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1729 bool configureAllConfigSettingsAsyncWriteConfig();
    -
    1730 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1731 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1732 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1733
    -
    1734 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    -
    1735
    -
    1736};
    +
    1688 /// Send async command that modifies configuration
    +
    1689 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1690
    +
    1691 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    +
    1692 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    +
    1693 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    +
    1694 byte asyncCommandCommandCode = 0; ///< Last command code issued
    +
    1695 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    +
    1696
    +
    1697
    +
    1698 // ============================================================================
    +
    1699 // Data processing
    +
    1700 // ============================================================================
    +
    1701
    +
    1702 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    +
    1703 void processReceivedData();
    +
    1704
    +
    1705 // ============================================================================
    +
    1706 // Config mode
    +
    1707 // ============================================================================
    +
    1708 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1709 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1710
    +
    1711 // ============================================================================
    +
    1712 // Config writing
    +
    1713 // ============================================================================
    +
    1714 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    +
    1715 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    +
    1716 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1717 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    +
    1718 bool configureAllConfigSettingsAsyncConfigActive = false;
    +
    1719 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    +
    1720 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1721
    +
    1722 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1723 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1724 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1725 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1726 bool configureAllConfigSettingsAsyncWriteConfig();
    +
    1727 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1728 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1729 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1730
    +
    1731 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    +
    1732
    +
    1733};
    From 5e4c85306684a87628f72a8dd897496d5f39f223 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 21:40:11 +0200 Subject: [PATCH 027/114] Added topic index instead of groups --- LD2410Async.vcxitems | 2 +- LD2410Async.vcxitems.filters | 2 +- dox/groups.dox | 96 -------------- dox/topicIndex.dox | 247 +++++++++++++++++++++++++++++++++++ 4 files changed, 249 insertions(+), 98 deletions(-) delete mode 100644 dox/groups.dox create mode 100644 dox/topicIndex.dox diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 8fede8a..5b76810 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -25,7 +25,7 @@ - + diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 78221f6..444b1a0 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -35,7 +35,7 @@ - + diff --git a/dox/groups.dox b/dox/groups.dox deleted file mode 100644 index 786903a..0000000 --- a/dox/groups.dox +++ /dev/null @@ -1,96 +0,0 @@ -/** - * @defgroup LD2410Async_Types Types, Enums & Structs - * Type, enum and struct definitions that are used by the LD2410Async lib. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_Callbacks Callbacks - * Callback related definitions and methods. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_PresenceDetection Presence Detection - * Presence detection related methods, definitions and data - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_PublicData Public Data Members - * Public data members of the LD2410Async lib. - * @note It is not recommended to read and even less write to these data members. Use the data access methods instead. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_Configuration Sensor Configuration - * Methods, definitions and data for LD2410 configuration. - * @note Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_HighLevelCommands High Level Commands - * High level commands to request data from the sensor and to write config settings to the sensor. - * @note Whenever possible, use these methods instead of the native methods - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_StaticData Static Sensor Data - * Methods, definitions and data to access static data (firmware version, bluetooth mac and so on) of the sensor. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_Bluetooth Bluetooth - * Bluetooth related methods and data. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_NativeCommands Native Commands - * Native commands of the LD2410. Each of these commands sends a single command (plus the necessary config mode enable/disable commands) to the LD2410. - * @note Instead of using thse methods, better use the high level functions instead. The offer a more consisten way to request and write data from/to the LD2410. - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_MainMethods Constructor & Main methods - * - * Constructor and main methods (begin(), end() of the LD2410Async class. - * - * @{ - */ -/** @} */ - - -/** - * @defgroup LD2410Async_InactivityHandling Inactivity Handling - * - * Methods for inactivity handling. Inactivity handling allows to automatically recover from situations where the sensor remains silent for a long time. - * Typically this happen only if the sensor is stuck resp. left in config mode unwillingly. - * - * @{ - */ -/** @} */ - -/** - * @defgroup LD2410Async_AsyncCommands Async Commands - * - * Commands with async behaviour. These commands return immediately and the result of the command is provided later via a callback. - * The return value of these methods indicates whther the command could be sent to the sensor or if there was a problem. When commands cant be executed, the causes are either another pending async command (only one async command allowed at a time) or due to invalid parameters. * - * @{ - */ -/** @} */ - diff --git a/dox/topicIndex.dox b/dox/topicIndex.dox new file mode 100644 index 0000000..1902d4f --- /dev/null +++ b/dox/topicIndex.dox @@ -0,0 +1,247 @@ +/** + * @page LD2410Async_TopicIndex LD2410Async: Index by topic + * + * Overview of all important methods, types and data, sorted by topic. + */ + +/** + * @section group_types Types, Enums & Structs + * @ingroup LD2410Async_Types + * + * Type, enum and struct definitions that are used by the LD2410Async lib. + * + * - @ref LD2410Async::AsyncCommandResult + *
    Result of an asynchronous command execution. + * - @ref LD2410Async::AsyncCommandCallback + *
    Callback signature for asynchronous command completion. + * - @ref LD2410Async::GenericCallback + *
    Generic callback signature used for simple notifications. + * - @ref LD2410Async::DetectionDataCallback + *
    Callback type for receiving detection data events. + */ + +/** + * @section group_callbacks Callbacks + * @ingroup LD2410Async_Callbacks + * + * Callback related definitions and methods. + * + * - @ref LD2410Async::registerDetectionDataReceivedCallback + *
    Registers a callback for new detection data. + * - @ref LD2410Async::registerConfigChangedCallback + *
    Registers a callback for configuration changes. + * - @ref LD2410Async::registerConfigUpdateReceivedCallback + *
    Registers a callback for configuration data updates. + * - @ref LD2410Async::DetectionDataCallback + *
    Callback type for receiving detection data events. + * - @ref LD2410Async::AsyncCommandCallback + *
    Callback signature for asynchronous command completion. + * - @ref LD2410Async::GenericCallback + *
    Generic callback signature used for simple notifications. + */ + +/** + * @section group_presence Presence Detection + * @ingroup LD2410Async_PresenceDetection + * + * Presence detection related methods, definitions and data. + * + * - @ref LD2410Async::detectionData + *
    Latest detection results from the radar. + * - @ref LD2410Async::getDetectionData + *
    Returns a clone of the latest detection data from the radar. + * - @ref LD2410Async::getDetectionDataRef + *
    Access the current detection data without making a copy. + * - @ref LD2410Async::registerDetectionDataReceivedCallback + *
    Registers a callback for new detection data. + * - @ref LD2410Async::enableEngineeringModeAsync + *
    Enables engineering mode (detailed per-gate signal values). + * - @ref LD2410Async::disableEngineeringModeAsync + *
    Disables engineering mode. + * - @ref LD2410Async::isEngineeringModeEnabled + *
    Detects if engineering mode is enabled. + */ + +/** + * @section group_publicdata Public Data Members + * @ingroup LD2410Async_PublicData + * + * Public data members of the LD2410Async lib. + * @note It is not recommended to read and even less write to these data members. Use the data access methods instead. + * + * - @ref LD2410Async::detectionData + *
    Latest detection results from the radar. + * - @ref LD2410Async::configData + *
    Current configuration parameters of the radar. + * - @ref LD2410Async::protocolVersion + *
    Protocol version reported by the radar. + * - @ref LD2410Async::bufferSize + *
    Buffer size reported by the radar protocol. + * - @ref LD2410Async::configModeEnabled + *
    True if the sensor is currently in config mode. + * - @ref LD2410Async::engineeringModeEnabled + *
    True if the sensor is currently in engineering mode. + * - @ref LD2410Async::firmware + *
    Firmware version string of the radar. + * - @ref LD2410Async::mac + *
    MAC address of the radars Bluetooth module. + * - @ref LD2410Async::macString + *
    MAC address as a human-readable string. + * - @ref LD2410Async::autoConfigStatus + *
    Current status of the auto-configuration routine. + */ + +/** + * @section group_config Sensor Configuration + * @ingroup LD2410Async_Configuration + * + * Methods, definitions and data for LD2410 configuration. + * @note Instead of using these methods, better use the high level functions instead. They offer a more consistent way to request and write data from/to the LD2410. + * + * - @ref LD2410Async::configData + *
    Current configuration parameters of the radar. + * - @ref LD2410Async::getConfigData + *
    Returns a clone of the current configuration data of the radar. + * - @ref LD2410Async::getConfigDataRef + *
    Access the current config data without making a copy. + * - @ref LD2410Async::registerConfigChangedCallback + *
    Registers a callback for configuration changes. + * - @ref LD2410Async::registerConfigUpdateReceivedCallback + *
    Registers a callback for configuration data updates. + * - @ref LD2410Async::enableConfigModeAsync + *
    Enables config mode on the radar. + * - @ref LD2410Async::disableConfigModeAsync + *
    Disables config mode on the radar. + * - @ref LD2410Async::isConfigModeEnabled + *
    Detects if config mode is enabled. + * - @ref LD2410Async::requestGateParametersAsync + *
    Requests the current gate parameters from the sensor. + * - @ref LD2410Async::configureMaxGateAndNoOneTimeoutAsync + *
    Configures the maximum detection gates and "no-one" timeout. + * - @ref LD2410Async::configureDistanceGateSensitivityAsync + *
    Configures sensitivity thresholds for all gates at once. + * - @ref LD2410Async::configureBaudRateAsync + *
    Configures the UART baud rate of the sensor. + * - @ref LD2410Async::restoreFactorySettingsAsync + *
    Restores factory settings of the sensor. + * - @ref LD2410Async::configureAuxControlSettingsAsync + *
    Configures the auxiliary control parameters (light and output pin). + * - @ref LD2410Async::requestAuxControlSettingsAsync + *
    Requests the current auxiliary control settings. + * - @ref LD2410Async::beginAutoConfigAsync + *
    Starts the automatic configuration (auto-config) routine. + * - @ref LD2410Async::requestAutoConfigStatusAsync + *
    Requests the current status of the auto-config routine. + * - @ref LD2410Async::configureAllConfigSettingsAsync + *
    Applies a full ConfigData struct to the LD2410. + */ + +/** + * @section group_highlevel High Level Commands + * @ingroup LD2410Async_HighLevelCommands + * + * High level commands to request data from the sensor and to write config settings to the sensor. + * @note Whenever possible, use these methods instead of the native methods. + * + * - @ref LD2410Async::requestAllConfigSettingsAsync + *
    Requests all configuration settings from the sensor. + * - @ref LD2410Async::requestAllStaticDataAsync + *
    Requests all static information from the sensor. + * - @ref LD2410Async::configureAllConfigSettingsAsync + *
    Applies a full ConfigData struct to the LD2410. + */ + +/** + * @section group_staticdata Static Sensor Data + * @ingroup LD2410Async_StaticData + * + * Methods, definitions and data to access static data (firmware version, bluetooth mac and so on) of the sensor. + * + * - @ref LD2410Async::protocolVersion + *
    Protocol version reported by the radar. + * - @ref LD2410Async::bufferSize + *
    Buffer size reported by the radar protocol. + * - @ref LD2410Async::firmware + *
    Firmware version string of the radar. + * - @ref LD2410Async::mac + *
    MAC address of the radars Bluetooth module. + * - @ref LD2410Async::macString + *
    MAC address as a human-readable string. + * - @ref LD2410Async::requestFirmwareAsync + *
    Requests the firmware version of the sensor. + * - @ref LD2410Async::requestBluetoothMacAddressAsync + *
    Requests the bluetooth mac address. + * - @ref LD2410Async::requestAllStaticDataAsync + *
    Requests all static information from the sensor. + */ + +/** + * @section group_bluetooth Bluetooth + * @ingroup LD2410Async_Bluetooth + * + * Bluetooth related methods and data. + * + * - @ref LD2410Async::enableBluetoothAsync + *
    Enables bluetooth. + * - @ref LD2410Async::disableBluetoothAsync + *
    Disables bluetooth. + * - @ref LD2410Async::requestBluetoothMacAddressAsync + *
    Requests the bluetooth mac address. + * - @ref LD2410Async::configureBluetoothPasswordAsync + *
    Sets the password for bluetooth access to the sensor. + * - @ref LD2410Async::configureDefaultBluetoothPasswordAsync + *
    Resets the password for bluetooth access to the default value. + */ + +/** + * @section group_native Native Commands + * @ingroup LD2410Async_NativeCommands + * + * Native commands of the LD2410. Each of these commands sends a single command (plus the necessary config mode enable/disable commands) to the LD2410. + * @note Instead of using these methods, better use the high level functions instead. They offer a more consistent way to request and write data from/to the LD2410. + * + * - @ref LD2410Async::enableEngineeringModeAsync + *
    Enables engineering mode (detailed per-gate signal values). + * - @ref LD2410Async::disableEngineeringModeAsync + *
    Disables engineering mode. + * - @ref LD2410Async::requestGateParametersAsync + *
    Requests the current gate parameters from the sensor. + * - @ref LD2410Async::configureMaxGateAndNoOneTimeoutAsync + *
    Configures the maximum detection gates and "no-one" timeout. + * - @ref LD2410Async::configureDistanceGateSensitivityAsync + *
    Configures sensitivity thresholds for all gates at once. + * - @ref LD2410Async::requestFirmwareAsync + *
    Requests the firmware version of the sensor. + * - @ref LD2410Async::configureBaudRateAsync + *
    Configures the UART baud rate of the sensor. + * - @ref LD2410Async::restoreFactorySettingsAsync + *
    Restores factory settings of the sensor. + * - @ref LD2410Async::rebootAsync + *
    Reboots the sensor. + * - @ref LD2410Async::enableBluetoothAsync + *
    Enables bluetooth. + * - @ref LD2410Async::disableBluetoothAsync + *
    Disables bluetooth. + * - @ref LD2410Async::requestBluetoothMacAddressAsync + *
    Requests the bluetooth mac address. + * - @ref LD2410Async::configureBluetoothPasswordAsync + *
    Sets the password for bluetooth access to the sensor. + * - @ref LD2410Async::configureDefaultBluetoothPasswordAsync + *
    Resets the password for bluetooth access to the default value. + * - @ref LD2410Async::configureDistanceResolutionAsync + *
    Configures the distance resolution of the radar. + * - @ref LD2410Async::configureDistanceResolution75cmAsync + *
    Configures the distance resolution explicitly to 75 cm per gate. + * - @ref LD2410Async::configuresDistanceResolution20cmAsync + *
    Configures the distance resolution explicitly to 20 cm per gate. + * - @ref LD2410Async::requestDistanceResolutioncmAsync + *
    Requests the current distance resolution setting from the sensor. + * - @ref LD2410Async::configureAuxControlSettingsAsync + *
    Configures the auxiliary control parameters (light and output pin). + * - @ref LD2410Async::requestAuxControlSettingsAsync + *
    Requests the current auxiliary control settings. + * - @ref LD2410Async::beginAutoConfigAsync + *
    Starts the automatic configuration (auto-config) routine. + * - @ref LD2410Async::requestAutoConfigStatusAsync + *
    Requests the current status of the auto-config routine. + */ \ No newline at end of file From 79839f5b6125414b4c2b074a2433dca669118f7d Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Sep 2025 19:40:30 +0000 Subject: [PATCH 028/114] Update documentation --- docu/LD2410Async_8cpp_source.html | 516 +-- docu/LD2410Async_8h_source.html | 344 +- docu/LD2410Async_TopicIndex.html | 114 + docu/LD2410CommandBuilder_8h.html | 4 +- docu/LD2410CommandBuilder_8h_source.html | 26 +- docu/LD2410Types_8h.html | 86 +- docu/LD2410Types_8h.js | 72 +- docu/LD2410Types_8h_source.html | 224 +- docu/classLD2410Async-members.html | 132 +- docu/classLD2410Async.html | 3231 ++++++++++++++++-- docu/classLD2410Async.js | 140 +- docu/doxygen_crawl.html | 311 +- docu/functions.html | 126 +- docu/functions_enum.html | 2 +- docu/functions_func.html | 98 +- docu/functions_type.html | 6 +- docu/functions_vars.html | 20 +- docu/index.html | 4 +- docu/menudata.js | 2 +- docu/namespaceLD2410CommandBuilder.html | 26 +- docu/namespaceLD2410Types.html | 395 ++- docu/namespaceLD2410Types.js | 70 +- docu/namespacemembers.html | 12 +- docu/namespacemembers_enum.html | 12 +- docu/navtreedata.js | 4 +- docu/navtreeindex0.js | 236 +- docu/navtreeindex1.js | 179 +- docu/pages.html | 117 + docu/search/all_0.js | 37 +- docu/search/all_1.js | 31 +- docu/search/all_10.js | 8 +- docu/search/all_12.js | 2 +- docu/search/all_13.js | 4 +- docu/search/all_2.js | 51 +- docu/search/all_3.js | 30 +- docu/search/all_4.js | 32 +- docu/search/all_5.js | 8 +- docu/search/all_6.js | 15 +- docu/search/all_7.js | 7 +- docu/search/all_8.js | 10 +- docu/search/all_9.js | 35 +- docu/search/all_a.js | 36 +- docu/search/all_b.js | 10 +- docu/search/all_c.js | 2 +- docu/search/all_d.js | 6 +- docu/search/all_e.js | 38 +- docu/search/all_f.js | 20 +- docu/search/enums_0.js | 4 +- docu/search/enums_1.js | 2 +- docu/search/enums_2.js | 2 +- docu/search/enums_3.js | 2 +- docu/search/enums_4.js | 2 +- docu/search/enums_5.js | 2 +- docu/search/enumvalues_0.js | 6 +- docu/search/enumvalues_1.js | 16 +- docu/search/enumvalues_2.js | 4 +- docu/search/enumvalues_3.js | 4 +- docu/search/enumvalues_4.js | 2 +- docu/search/enumvalues_5.js | 2 +- docu/search/enumvalues_6.js | 4 +- docu/search/enumvalues_7.js | 4 +- docu/search/enumvalues_8.js | 8 +- docu/search/enumvalues_9.js | 4 +- docu/search/enumvalues_a.js | 4 +- docu/search/enumvalues_b.js | 2 +- docu/search/files_2.js | 7 +- docu/search/files_3.js | 7 +- docu/search/files_4.js | 2 +- docu/search/functions_0.js | 4 +- docu/search/functions_1.js | 4 +- docu/search/functions_2.js | 20 +- docu/search/functions_3.js | 8 +- docu/search/functions_4.js | 10 +- docu/search/functions_5.js | 12 +- docu/search/functions_6.js | 6 +- docu/search/functions_7.js | 2 +- docu/search/functions_9.js | 26 +- docu/search/functions_a.js | 6 +- docu/search/pages_0.js | 2 +- docu/search/pages_1.js | 4 + docu/search/pages_2.js | 5 + docu/search/pages_3.js | 4 + docu/search/searchdata.js | 11 +- docu/search/typedefs_0.js | 2 +- docu/search/typedefs_1.js | 2 +- docu/search/typedefs_2.js | 2 +- docu/search/variables_0.js | 2 +- docu/search/variables_1.js | 2 +- docu/search/variables_2.js | 4 +- docu/search/variables_3.js | 2 +- docu/search/variables_4.js | 2 +- docu/search/variables_5.js | 2 +- docu/search/variables_9.js | 4 +- docu/search/variables_c.js | 2 +- docu/structLD2410Types_1_1ConfigData.html | 26 +- docu/structLD2410Types_1_1DetectionData.html | 6 +- docu/topicIndex_8dox.html | 113 + 97 files changed, 5382 insertions(+), 1894 deletions(-) create mode 100644 docu/LD2410Async_TopicIndex.html create mode 100644 docu/pages.html create mode 100644 docu/search/pages_1.js create mode 100644 docu/search/pages_2.js create mode 100644 docu/search/pages_3.js create mode 100644 docu/topicIndex_8dox.html diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html index 25d5024..28df4ca 100644 --- a/docu/LD2410Async_8cpp_source.html +++ b/docu/LD2410Async_8cpp_source.html @@ -305,14 +305,14 @@
    199* Generic Callbacks
    200******************************************************************************************/
    -
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    +
    201void LD2410Async::registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData) {
    202 detectionDataCallback = callback;
    203 detectionDataCallbackUserData = userData;
    204}
    205
    -
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    +
    206void LD2410Async::registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData) {
    207
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    209 configUpdateReceivedReceivedCallback = callback;
    @@ -320,7 +320,7 @@
    211
    -
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    +
    212void LD2410Async::registerConfigChangedCallback(GenericCallback callback, byte userData) {
    213 configChangedCallbackUserData = userData;
    214 configChangedCallback = callback;
    215}
    @@ -359,7 +359,7 @@
    248 DEBUG_PRINT("FAIL for command: ");
    249 DEBUG_PRINTLN(byte2hex(command));
    -
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    +
    250 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::FAILED);
    251 return false;
    252 };
    253
    @@ -367,14 +367,14 @@
    255 switch (command)
    256 {
    257 case LD2410Defs::configEnableCommand: // entered config mode
    -
    258 configModeEnabled = true;
    -
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    -
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    258 configModeEnabled = true;
    +
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    +
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    262 DEBUG_PRINTLN("ACK for config mode enable received");
    263 break;
    264 case LD2410Defs::configDisableCommand: // exited config mode
    -
    265 configModeEnabled = false;
    +
    265 configModeEnabled = false;
    267 DEBUG_PRINTLN("ACK for config mode disable received");
    268 break;
    @@ -383,12 +383,12 @@
    271 executeConfigChangedCallback();
    272 break;
    - +
    276 DEBUG_PRINTLN("ACK for engineeringModeEnableComand received");
    277 break;
    - +
    281 DEBUG_PRINTLN("ACK for engineeringModeDisableComand received");
    282 break;
    @@ -402,8 +402,8 @@
    290 executeConfigChangedCallback();
    291 break;
    - -
    294 configModeEnabled = false;
    + +
    294 configModeEnabled = false;
    296 DEBUG_PRINTLN("ACK for rebootCommand received");
    297 break;
    @@ -426,7 +426,7 @@
    314 executeConfigChangedCallback();
    315 break;
    -
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    +
    317 configData.distanceResolution = LD2410Types::toDistanceResolution(receiveBuffer[4]);
    319 DEBUG_PRINTLN("ACK for requestDistanceResolutionCommand received");
    320 executeConfigUpdateReceivedCallback();
    @@ -438,19 +438,19 @@
    326 break;
    328 for (int i = 0; i < 6; i++) {
    -
    329 mac[i] = receiveBuffer[i + 4];
    +
    329 mac[i] = receiveBuffer[i + 4];
    330 };
    - -
    332 + ":" + byte2hex(mac[1])
    -
    333 + ":" + byte2hex(mac[2])
    -
    334 + ":" + byte2hex(mac[3])
    -
    335 + ":" + byte2hex(mac[4])
    -
    336 + ":" + byte2hex(mac[5]);
    + +
    332 + ":" + byte2hex(mac[1])
    +
    333 + ":" + byte2hex(mac[2])
    +
    334 + ":" + byte2hex(mac[3])
    +
    335 + ":" + byte2hex(mac[4])
    +
    336 + ":" + byte2hex(mac[5]);
    338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
    339 break;
    -
    341 firmware = byte2hex(receiveBuffer[7], false)
    +
    341 firmware = byte2hex(receiveBuffer[7], false)
    342 + "." + byte2hex(receiveBuffer[6])
    343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
    @@ -458,9 +458,9 @@
    346 break;
    347
    -
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    -
    350 configData.lightThreshold = receiveBuffer[5];
    -
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    +
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    +
    350 configData.lightThreshold = receiveBuffer[5];
    +
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
    354 executeConfigUpdateReceivedCallback();
    @@ -470,19 +470,19 @@
    358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
    359 break;
    -
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    +
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
    364 break;
    365 case LD2410Defs::requestParamsCommand: // Query parameters
    -
    366 configData.numberOfGates = receiveBuffer[5];
    -
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    -
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    -
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    -
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    -
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    -
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    -
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    +
    366 configData.numberOfGates = receiveBuffer[5];
    +
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    +
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    +
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    +
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    +
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    +
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    +
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
    376 executeConfigUpdateReceivedCallback();
    @@ -500,7 +500,7 @@
    388 };
    389
    390 if (command != 0) {
    -
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    +
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    392 }
    393
    394
    @@ -516,75 +516,75 @@
    404
    405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
    406 {
    -
    407 configModeEnabled = false;
    +
    407 configModeEnabled = false;
    408
    -
    409 detectionData.timestamp = millis();
    +
    409 detectionData.timestamp = millis();
    410 //Basic data
    -
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    -
    412 switch (detectionData.targetState) {
    - - - - +
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    +
    412 switch (detectionData.targetState) {
    + + + +
    417 break;
    418
    - - - - + + + +
    423 break;
    424
    - - - - + + + +
    429 break;
    430 default:
    - - - + + +
    434 break;
    435 }
    -
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    -
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    -
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    -
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    -
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    -
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    +
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    +
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    +
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    +
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    +
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    442
    - +
    444
    - +
    446 { // Engineering mode data
    -
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    - +
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    +
    449
    450
    451 int index = 13;
    -
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    -
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    -
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    -
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    +
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    +
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    +
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    +
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    456
    - - + +
    459 if (index < payloadSize) {
    -
    460 detectionData.lightLevel = receiveBuffer[index++];
    +
    460 detectionData.lightLevel = receiveBuffer[index++];
    461 if (index < payloadSize) {
    -
    462 detectionData.outPinStatus = receiveBuffer[index++];
    +
    462 detectionData.outPinStatus = receiveBuffer[index++];
    463 }
    464 }
    465 }
    466 else
    467 { // Clear engineering mode data
    - - - - + + + +
    472 }
    473
    474 if (detectionDataCallback != nullptr) {
    -
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    +
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    476 };
    477 DEBUG_PRINTLN_DATA("DATA received");
    478 return true;
    @@ -616,7 +616,7 @@
    504/**********************************************************************************
    505* Send async command methods
    506***********************************************************************************/
    -
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    +
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
    509
    @@ -625,7 +625,7 @@
    513
    514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
    515 vTaskSuspendAll();
    -
    516 AsyncCommandCallback cb = asyncCommandCallback;
    +
    516 AsyncCommandCallback cb = asyncCommandCallback;
    517 byte userData = asyncCommandCallbackUserData;
    518 asyncCommandCallback = nullptr;
    519 asyncCommandCallbackUserData = 0;
    @@ -644,8 +644,8 @@
    532
    533
    - -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    + +
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    536}
    537
    @@ -657,7 +657,7 @@
    543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
    544 DEBUG_PRINT(asyncCommandStartMs);
    545 DEBUG_PRINTLN(". Execute callback with timeout result.");
    -
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    +
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    547 }
    548 }
    549}
    @@ -706,7 +706,7 @@
    592***********************************************************************************/
    593
    - +
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    596}
    @@ -733,7 +733,7 @@
    617/**********************************************************************************
    618* Async command sequence methods
    619***********************************************************************************/
    -
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    621 if (executeCommandSequenceActive) {
    622
    @@ -741,7 +741,7 @@
    625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
    626
    627 vTaskSuspendAll();
    -
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    +
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    629 byte userData = executeCommandSequenceUserData;
    630 executeCommandSequenceCallback = nullptr;
    631 executeCommandSequenceUserData = 0;
    @@ -756,11 +756,11 @@
    640
    641
    642// Callback after disabling config mode at the end of sequence
    -
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    644
    -
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    +
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    646
    - +
    649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
    650 DEBUG_PRINTLN(result);
    @@ -769,9 +769,9 @@
    653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
    654}
    655
    -
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    +
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    657 if (!executeCommandSequenceInitialConfigModeState) {
    -
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    +
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    659 }
    660 else {
    661 executeCommandSequenceAsyncExecuteCallback(result);
    @@ -780,8 +780,8 @@
    664
    665
    666// Called when a single command in the sequence completes
    -
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    669 // Abort sequence if a command fails
    671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
    @@ -804,7 +804,7 @@
    688 else {
    689 // Sequence finished successfully
    690
    -
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    692 }
    693}
    694
    @@ -821,19 +821,19 @@
    705 executeCommandSequenceActive = true;
    706 executeCommandSequenceCallback = callback;
    707 executeCommandSequenceUserData = userData;
    -
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    +
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    709 executeCommandSequenceStartMs = millis();
    710
    711 if (commandSequenceBufferCount == 0) {
    712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
    713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
    -
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    715 });
    716 return true;
    717
    718 }
    719
    -
    720 if (!configModeEnabled) {
    +
    720 if (!configModeEnabled) {
    721 // Need to enable config mode first
    722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
    723 executeCommandSequenceIndex = -1;
    @@ -900,8 +900,8 @@
    784}
    785
    -
    786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    787 if (asyncIsBusy()) return false;
    +
    786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    787 if (asyncIsBusy()) return false;
    788 return enableConfigModeInternalAsync(callback, userData);
    789}
    @@ -913,8 +913,8 @@
    795}
    796
    -
    797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    798 if (asyncIsBusy()) return false;
    +
    797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    798 if (asyncIsBusy()) return false;
    799 return disableConfigModeInternalAsync(callback, userData);
    800}
    @@ -926,13 +926,13 @@
    806// The code takes care of that. Enables/disable config mode if necessary,
    807// but also keeps config mode active if it was already active before the command
    -
    808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    +
    808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    809 unsigned short noOneTimeout,
    810 AsyncCommandCallback callback, byte userData)
    811{
    813 DEBUG_PRINTLN("Set Max Gate");
    -
    814 if (asyncIsBusy()) return false;
    +
    814 if (asyncIsBusy()) return false;
    815
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    @@ -944,41 +944,41 @@
    822
    823
    -
    824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    +
    824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    826 DEBUG_PRINTLN("Request Gate Parameters");
    -
    827 if (asyncIsBusy()) return false;
    +
    827 if (asyncIsBusy()) return false;
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    829}
    830
    -
    831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    -
    834 if (asyncIsBusy()) return false;
    +
    834 if (asyncIsBusy()) return false;
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    836}
    837
    -
    838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    -
    841 if (asyncIsBusy()) return false;
    +
    841 if (asyncIsBusy()) return false;
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    843}
    844
    -
    845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    +
    845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    846 const byte stationaryThresholds[9],
    847 AsyncCommandCallback callback, byte userData)
    848{
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    851
    -
    852 if (asyncIsBusy()) return false;
    +
    852 if (asyncIsBusy()) return false;
    853
    854 if (!resetCommandSequence()) return false;
    855
    @@ -995,14 +995,14 @@
    865
    866
    -
    867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    +
    867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    868 byte stationaryThreshold,
    869 AsyncCommandCallback callback, byte userData)
    870{
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    873
    -
    874 if (asyncIsBusy()) return false;
    +
    874 if (asyncIsBusy()) return false;
    875
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    @@ -1014,11 +1014,11 @@
    882
    883
    -
    884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    +
    884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    886 DEBUG_PRINTLN("Request Firmware");
    887
    -
    888 if (asyncIsBusy()) return false;
    +
    888 if (asyncIsBusy()) return false;
    889
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    891}
    @@ -1026,13 +1026,13 @@
    892
    893
    -
    894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    +
    894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    895 AsyncCommandCallback callback, byte userData)
    896{
    898 DEBUG_PRINTLN("Set Baud Rate");
    899
    -
    900 if (asyncIsBusy()) return false;
    +
    900 if (asyncIsBusy()) return false;
    901
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    903 return false;
    @@ -1047,21 +1047,21 @@
    911
    912
    -
    913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    +
    913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    914
    -
    915 if (asyncIsBusy()) return false;
    +
    915 if (asyncIsBusy()) return false;
    916
    -
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    918}
    919
    920
    -
    921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    923 DEBUG_PRINTLN("Restore Factory Settings");
    924
    -
    925 if (asyncIsBusy()) return false;
    +
    925 if (asyncIsBusy()) return false;
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    927}
    @@ -1069,41 +1069,41 @@
    929
    930
    -
    931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    +
    931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    933 DEBUG_PRINTLN("Enable Bluetooth");
    -
    934 if (asyncIsBusy()) return false;
    +
    934 if (asyncIsBusy()) return false;
    935
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    937}
    938
    -
    939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    +
    939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    941 DEBUG_PRINTLN("Disable Bluetooth");
    -
    942 if (asyncIsBusy()) return false;
    +
    942 if (asyncIsBusy()) return false;
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    944}
    945
    946
    -
    947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    +
    947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    949 DEBUG_PRINTLN("Request Mac Address");
    -
    950 if (asyncIsBusy()) return false;
    +
    950 if (asyncIsBusy()) return false;
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    952}
    953
    - +
    955 AsyncCommandCallback callback, byte userData)
    956{
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    -
    959 if (asyncIsBusy()) return false;
    +
    959 if (asyncIsBusy()) return false;
    960
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    @@ -1115,38 +1115,38 @@
    967
    968
    -
    969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    +
    969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    970
    -
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    972}
    973
    974
    -
    975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    +
    975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    -
    978 if (asyncIsBusy()) return false;
    +
    978 if (asyncIsBusy()) return false;
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    980}
    981
    -
    982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    +
    982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    -
    985 if (asyncIsBusy()) return false;
    +
    985 if (asyncIsBusy()) return false;
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    987};
    988
    - +
    990 AsyncCommandCallback callback, byte userData)
    991{
    993 DEBUG_PRINTLN("Set Distance Resolution");
    -
    994 if (asyncIsBusy()) return false;
    +
    994 if (asyncIsBusy()) return false;
    995
    996 byte cmd[6];
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    @@ -1156,31 +1156,31 @@
    1001
    -
    1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    +
    1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    -
    1005 if (asyncIsBusy()) return false;
    +
    1005 if (asyncIsBusy()) return false;
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    1007};
    1008
    -
    1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    +
    1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    -
    1012 if (asyncIsBusy()) return false;
    +
    1012 if (asyncIsBusy()) return false;
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    1014}
    1015
    - -
    1017 LD2410Types::OutputControl outputControl,
    + +
    1017 LD2410Types::OutputControl outputControl,
    1018 AsyncCommandCallback callback, byte userData)
    1019{
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    -
    1022 if (asyncIsBusy()) return false;
    +
    1022 if (asyncIsBusy()) return false;
    1023
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    @@ -1192,11 +1192,11 @@
    1030
    1031
    -
    1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    1035
    -
    1036 if (asyncIsBusy()) return false;
    +
    1036 if (asyncIsBusy()) return false;
    1037
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    1039}
    @@ -1204,22 +1204,22 @@
    1040
    1041
    -
    1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    +
    1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    1044 DEBUG_PRINTLN("Begin auto config");
    1045
    -
    1046 if (asyncIsBusy()) return false;
    +
    1046 if (asyncIsBusy()) return false;
    1047
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    1049};
    1050
    -
    1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    +
    1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    1054
    -
    1055 if (asyncIsBusy()) return false;
    +
    1055 if (asyncIsBusy()) return false;
    1056
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    1058}
    @@ -1233,11 +1233,11 @@
    1065
    1066
    -
    1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    +
    1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    1069 DEBUG_PRINTLN("Request all static data");
    1070
    -
    1071 if (asyncIsBusy()) return false;
    +
    1071 if (asyncIsBusy()) return false;
    1072
    1073
    1074 if (!resetCommandSequence()) return false;
    @@ -1250,11 +1250,11 @@
    1081
    -
    1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    +
    1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    1084 DEBUG_PRINTLN("Request all config data");
    1085
    -
    1086 if (asyncIsBusy()) return false;
    +
    1086 if (asyncIsBusy()) return false;
    1087
    1088 if (!resetCommandSequence()) return false;
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    @@ -1272,8 +1272,8 @@
    1100// It uses a first command sequences to get the current sensor config, then checks what
    1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
    1102
    -
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    -
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    +
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
    1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
    1107 configureAllConfigSettingsAsyncConfigActive = false;
    @@ -1288,8 +1288,8 @@
    1116
    1117}
    1118
    -
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
    1123 DEBUG_PRINTLN(result);
    @@ -1301,15 +1301,15 @@
    1129 }
    1130}
    1131
    -
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    +
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    1133
    1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
    1136
    -
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    +
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
    -
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    +
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    1141 }
    1142 }
    1143 else {
    @@ -1318,8 +1318,8 @@
    1146}
    1147
    1148
    -
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1150 if (AsyncCommandResult::SUCCESS != result) {
    +
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1150 if (AsyncCommandResult::SUCCESS != result) {
    1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
    1153 };
    @@ -1330,7 +1330,7 @@
    1158
    1159bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() {
    1160 //Get a clone of the current config, so it does not get changed while we are working
    - +
    1162
    1163 if (!resetCommandSequence()) {
    @@ -1454,8 +1454,8 @@
    1282
    1283};
    1284
    -
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
    1289 DEBUG_PRINTLN(result);
    @@ -1469,7 +1469,7 @@
    1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
    1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
    -
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1301 }
    1302}
    1303
    @@ -1492,8 +1492,8 @@
    1320 return false;
    1321}
    1322
    -
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1324 if (result != AsyncCommandResult::SUCCESS) {
    +
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1324 if (result != AsyncCommandResult::SUCCESS) {
    1325
    1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
    @@ -1518,20 +1518,20 @@
    1346 if (!ret) {
    1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
    -
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    1350 }
    1351
    1352
    1353}
    1354
    -
    1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    +
    1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    1356{
    1357
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    1360
    -
    1361 if (asyncIsBusy()) return false;
    +
    1361 if (asyncIsBusy()) return false;
    1362
    1363
    1364 if (!configToWrite.isValid()) {
    @@ -1545,7 +1545,7 @@
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    -
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    +
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    1376
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    @@ -1570,10 +1570,10 @@
    1396//The reboot command is special, since it needs to be sent in config mode,
    1397//but doesnt have to disable config mode, since the sensor goes into normal
    1398//detection mode after the reboot anyway.
    -
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    1401 sender->configModeEnabled = false;
    -
    1402 sender->engineeringModeEnabled = false;
    +
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    1401 sender->configModeEnabled = false;
    +
    1402 sender->engineeringModeEnabled = false;
    1403
    1405 DEBUG_PRINTLN("Reboot initiated");
    @@ -1587,8 +1587,8 @@
    1413
    1414}
    1415
    -
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - +
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1418 //Got ack of enable config mode command
    1420 DEBUG_PRINTLN("Config mode enabled before reboot");
    @@ -1605,13 +1605,13 @@
    1431
    1432
    -
    1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    +
    1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    1434
    1435
    1437 DEBUG_PRINTLN("Reboot");
    1438
    -
    1439 if (asyncIsBusy()) return false;
    +
    1439 if (asyncIsBusy()) return false;
    1440
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    1442}
    @@ -1621,26 +1621,26 @@
    1445* Data access
    1446***********************************************************************************/
    1450
    1454
    1455/**********************************************************************************
    1456* Inactivity handling
    1457***********************************************************************************/
    -
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1459 sender->configModeEnabled = false;
    -
    1460 sender->engineeringModeEnabled = false;
    +
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1459 sender->configModeEnabled = false;
    +
    1460 sender->engineeringModeEnabled = false;
    1461
    1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1463 if (result == AsyncCommandResult::SUCCESS) {
    +
    1463 if (result == AsyncCommandResult::SUCCESS) {
    1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
    1466 }
    @@ -1654,11 +1654,11 @@
    1474
    1475}
    1476
    -
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    1478
    1479
    1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1481 if (result == AsyncCommandResult::SUCCESS) {
    +
    1481 if (result == AsyncCommandResult::SUCCESS) {
    1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
    1484 }
    @@ -1681,10 +1681,10 @@
    1501 if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) {
    1502 if (!handleInactivityExitConfigModeDone) {
    1503 handleInactivityExitConfigModeDone = true;
    -
    1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    +
    1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    1505 }
    1506 else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) {
    -
    1507 rebootAsync(handleInactivityRebootCallback, 0);
    +
    1507 rebootAsync(handleInactivityRebootCallback, 0);
    1508 lastActivityMs = currentTime;
    1509 }
    1510 }
    @@ -1699,7 +1699,7 @@
    1519}
    1520
    - +
    1522 inactivityHandlingEnabled = enable;
    1523}
    @@ -1757,7 +1757,7 @@
    1575***********************************************************************************/
    1576
    - +
    1578 if (taskHandle == NULL) {
    1580 DEBUG_PRINTLN("Starting data processing task");
    @@ -1794,7 +1794,7 @@
    1611
    - +
    1613 if (taskHandle != NULL) {
    1615 DEBUG_PRINTLN("Stopping data processing task");
    @@ -1830,7 +1830,7 @@
    1644* Constructor
    1645***********************************************************************************/
    - +
    1647{
    1648 sensor = &serial;
    1649}
    @@ -1848,68 +1848,61 @@ -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    bool end()
    Stops the background task started by begin().
    -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    String firmware
    Firmware version string of the radar.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    -
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    -
    @ STATIONARY_TARGET
    A stationary target has been detected.
    -
    @ MOVING_TARGET
    A moving target has been detected.
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    String firmware
    Firmware version string of the radar.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    bool end()
    Stops the background task started by begin().
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    @@ -1963,6 +1956,13 @@
    constexpr byte engineeringModeEnableComand
    Definition LD2410Defs.h:58
    constexpr byte requestDistanceResolutionCommand
    Definition LD2410Defs.h:30
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    Stores the sensor’s configuration parameters.
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index b550d65..88d6b01 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -199,11 +199,11 @@
    96 * @ingroup LD2410Async_Types
    97 */
    -
    98 enum class AsyncCommandResult : byte {
    -
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    101 TIMEOUT, ///< No ACK received within the expected time window.
    -
    102 CANCELED ///< Command was canceled by the user before completion.
    +
    98 enum class AsyncCommandResult : byte {
    +
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    101 TIMEOUT, ///< No ACK received within the expected time window.
    +
    102 CANCELED ///< Command was canceled by the user before completion.
    103 };
    104
    @@ -220,7 +220,7 @@
    115 * @ingroup LD2410Async_Configuration
    116 * @ingroup LD2410Async_Callbacks
    117 */
    -
    118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    +
    118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    119
    120 /**
    121 * @brief Generic callback signature used for simple notifications.
    @@ -232,7 +232,7 @@
    127 * @ingroup LD2410Async_Configuration
    128 * @ingroup LD2410Async_Callbacks
    129 */
    -
    130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    +
    130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    131
    132 /**
    133 * @brief Callback type for receiving detection data events.
    @@ -249,7 +249,7 @@
    144 * @ingroup LD2410Async_Callbacks
    145 * @ingroup LD2410Async_PresenceDetection
    146 */
    -
    147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    +
    147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    148
    149
    150
    @@ -271,7 +271,7 @@
    166 * @ingroup LD2410Async_PresenceDetection
    167 *
    168 */
    - +
    170
    171 /**
    172 * @brief Current configuration parameters of the radar.
    @@ -286,7 +286,7 @@
    181 * @ingroup LD2410Async_PublicData
    182 * @ingroup LD2410Async_Configuration
    183 */
    - +
    185
    186 /**
    187 * @brief Protocol version reported by the radar.
    @@ -297,7 +297,7 @@
    192 * @ingroup LD2410Async_PublicData
    193 * @ingroup LD2410Async_StaticData
    194 */
    -
    195 unsigned long protocolVersion = 0;
    +
    195 unsigned long protocolVersion = 0;
    196
    197 /**
    198 * @brief Buffer size reported by the radar protocol.
    @@ -308,7 +308,7 @@
    203 * @ingroup LD2410Async_PublicData
    204 * @ingroup LD2410Async_StaticData
    205 */
    -
    206 unsigned long bufferSize = 0;
    +
    206 unsigned long bufferSize = 0;
    207
    208 /**
    209 * @brief True if the sensor is currently in config mode.
    @@ -319,7 +319,7 @@
    214 *
    215 * @ingroup LD2410Async_PublicData
    216 */
    -
    217 bool configModeEnabled = false;
    +
    217 bool configModeEnabled = false;
    218
    219
    220 /**
    @@ -332,7 +332,7 @@
    227 *
    228 * @ingroup LD2410Async_PublicData
    229 */
    - +
    231
    232 /**
    233 * @brief Firmware version string of the radar.
    @@ -343,7 +343,7 @@
    238 * @ingroup LD2410Async_PublicData
    239 * @ingroup LD2410Async_StaticData
    240 */
    -
    241 String firmware = "";
    +
    241 String firmware = "";
    242
    243 /**
    244 * @brief MAC address of the radar’s Bluetooth module (if available).
    @@ -353,7 +353,7 @@
    248 * @ingroup LD2410Async_PublicData
    249 * @ingroup LD2410Async_StaticData
    250 */
    -
    251 byte mac[6];
    +
    251 byte mac[6];
    252
    253 /**
    254 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    @@ -363,7 +363,7 @@
    258 * @ingroup LD2410Async_PublicData
    259 * @ingroup LD2410Async_StaticData
    260 */
    -
    261 String macString = "";
    +
    261 String macString = "";
    262
    263
    264 /**
    @@ -374,7 +374,7 @@
    269 * @ingroup LD2410Async_Configuration
    270 * @ingroup LD2410Async_PublicData
    271 */
    - +
    273
    274
    275
    @@ -400,7 +400,7 @@
    295 *
    296 * @ingroup LD2410Async_MainMethods
    297 */
    -
    298 LD2410Async(Stream& serial);
    +
    298 LD2410Async(Stream& serial);
    299
    300 /**********************************************************************************
    301 * begin, end
    @@ -416,7 +416,7 @@
    311 *
    312 * @ingroup LD2410Async_MainMethods
    313 */
    -
    314 bool begin();
    +
    314 bool begin();
    315
    316 /**
    317 * @brief Stops the background task started by begin().
    @@ -428,7 +428,7 @@
    323 *
    324 * @ingroup LD2410Async_MainMethods
    325 */
    -
    326 bool end();
    +
    326 bool end();
    327
    328
    329
    @@ -456,7 +456,7 @@
    351 *
    352 * @ingroup LD2410Async_InactivityHandling
    353 */
    -
    354 void setInactivityHandling(bool enable);
    +
    354 void setInactivityHandling(bool enable);
    355
    356 /**
    357 * @brief Convenience method: enables inactivity handling.
    @@ -465,7 +465,7 @@
    360 *
    361 * @ingroup LD2410Async_InactivityHandling
    362 */
    - +
    364
    365 /**
    366 * @brief Convenience method: disables inactivity handling.
    @@ -474,7 +474,7 @@
    369 *
    370 * @ingroup LD2410Async_InactivityHandling
    371 */
    - +
    373
    374 /**
    375 * @brief Returns whether inactivity handling is currently enabled.
    @@ -483,7 +483,7 @@
    378 *
    379 * @ingroup LD2410Async_InactivityHandling
    380 */
    -
    381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    +
    381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    382
    383 /**
    384 * @brief Sets the timeout period for inactivity handling.
    @@ -498,7 +498,7 @@
    393 *
    394 * @ingroup LD2410Async_InactivityHandling
    395 */
    -
    396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    +
    396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    397
    398 /**
    399 * @brief Returns the current inactivity timeout period.
    @@ -507,7 +507,7 @@
    402 *
    403 * @ingroup LD2410Async_InactivityHandling
    404 */
    -
    405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    +
    405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    406
    407
    408
    @@ -529,7 +529,7 @@
    424 * @ingroup LD2410Async_Callbacks
    425 * @ingroup LD2410Async_PresenceDetection
    426 */
    -
    427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    +
    427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    428
    429 /**
    430 * @brief Registers a callback for configuration changes.
    @@ -544,7 +544,7 @@
    439 * @ingroup LD2410Async_Callbacks
    440 * @ingroup LD2410Async_Configuration
    441 */
    -
    442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    +
    442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    443
    444 /**
    445 * @brief Registers a callback for configuration data updates.
    @@ -559,7 +559,7 @@
    454 * @ingroup LD2410Async_Callbacks
    455 * @ingroup LD2410Async_Configuration
    456 */
    -
    457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    +
    457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    458
    459
    460
    @@ -602,7 +602,7 @@
    497 * @ingroup LD2410Async_PresenceDetection
    498 * @ingroup LD2410Async_PublicData
    499 */
    - +
    501
    502
    503 /**
    @@ -638,7 +638,7 @@
    533 * @ingroup LD2410Async_PresenceDetection
    534 * @ingroup LD2410Async_PublicData
    535 */
    - +
    537
    538
    539 /**
    @@ -685,7 +685,7 @@
    580 * @ingroup LD2410Async_Configuration
    581 * @ingroup LD2410Async_PublicData
    582 */
    - +
    584
    585
    586 /**
    @@ -721,7 +721,7 @@
    616 * @ingroup LD2410Async_Configuration
    617 * @ingroup LD2410Async_PublicData
    618 */
    - +
    620
    621
    622 /**********************************************************************************
    @@ -735,7 +735,7 @@
    630 *
    631 * @ingroup LD2410Async_AsyncCommands
    632 */
    -
    633 bool asyncIsBusy();
    +
    633 bool asyncIsBusy();
    634
    635 /**
    636 * @brief Cancels any pending asynchronous command or sequence.
    @@ -747,7 +747,7 @@
    642 *
    643 * @ingroup LD2410Async_AsyncCommands
    644 */
    -
    645 void asyncCancel();
    +
    645 void asyncCancel();
    646
    647 /**
    648 * @brief Sets the timeout for async command callbacks.
    @@ -759,7 +759,7 @@
    654 *
    655 * @ingroup LD2410Async_AsyncCommands
    656 */
    -
    657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    +
    657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    658
    659 /**
    660 * @brief Returns the current async command timeout.
    @@ -768,7 +768,7 @@
    663 *
    664 * @ingroup LD2410Async_AsyncCommands
    665 */
    -
    666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    +
    666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    667
    668
    669 /**********************************************************************************
    @@ -797,7 +797,7 @@
    692 * @ingroup LD2410Async_AsyncCommands
    693 * @ingroup LD2410Async_Configuration
    694 */
    -
    695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    696
    697 /**
    698 * @brief Disables config mode on the radar.
    @@ -817,7 +817,7 @@
    712 * @ingroup LD2410Async_AsyncCommands
    713 * @ingroup LD2410Async_Configuration
    714 */
    -
    715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    716
    717 /**
    718 * @brief Detects if config mode is enabled
    @@ -827,8 +827,8 @@
    722 * @ingroup LD2410Async_Configuration
    723 */
    -
    724 bool isConfigModeEnabled() const {
    -
    725 return configModeEnabled;
    +
    724 bool isConfigModeEnabled() const {
    +
    725 return configModeEnabled;
    726 };
    727
    @@ -854,7 +854,7 @@
    747 * @ingroup LD2410Async_AsyncCommands
    748 * @ingroup LD2410Async_PresenceDetection
    749 */
    -
    750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    751
    752 /**
    753 * @brief Disables engineering mode.
    @@ -871,7 +871,7 @@
    764 * @ingroup LD2410Async_PresenceDetection
    765 * @ingroup LD2410Async_AsyncCommands
    766 */
    -
    767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    768
    769 /**
    770 * @brief Detects if engineering mode is enabled
    @@ -881,8 +881,8 @@
    774 * @ingroup LD2410Async_PresenceDetection
    775 */
    - - + +
    778 };
    779
    @@ -907,7 +907,7 @@
    798 * @ingroup LD2410Async_Configuration
    799 * @ingroup LD2410Async_NativeCommands
    800 */
    -
    801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    802
    803
    804
    @@ -935,7 +935,7 @@
    826 * @ingroup LD2410Async_Configuration
    827 * @ingroup LD2410Async_NativeCommands
    828 */
    -
    829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    +
    829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    830
    831
    832 /**
    @@ -959,7 +959,7 @@
    850 * @ingroup LD2410Async_NativeCommands
    851 */
    852
    -
    853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    +
    853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    854
    855
    856 /**
    @@ -984,7 +984,7 @@
    875 * @ingroup LD2410Async_Configuration
    876 * @ingroup LD2410Async_NativeCommands
    877 */
    -
    878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    +
    878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    879
    880 /**
    881 * @brief Requests the firmware version of the sensor.
    @@ -1002,7 +1002,7 @@
    893 * @ingroup LD2410Async_StaticData
    894 * @ingroup LD2410Async_NativeCommands
    895 */
    -
    896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    897
    898 /**
    899 * @brief Configures the UART baud rate of the sensor.
    @@ -1026,7 +1026,7 @@
    917 * @ingroup LD2410Async_Configuration
    918 * @ingroup LD2410Async_NativeCommands
    919 */
    -
    920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    +
    920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    921
    922 /**
    923 * @brief Configures the baudrate of the serial port of the sensor.
    @@ -1048,7 +1048,7 @@
    939 * @ingroup LD2410Async_Configuration
    940 * @ingroup LD2410Async_NativeCommands
    941 */
    -
    942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    +
    942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    943
    944
    945 /**
    @@ -1068,7 +1068,7 @@
    959 * @ingroup LD2410Async_Configuration
    960 * @ingroup LD2410Async_NativeCommands
    961 */
    -
    962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    963
    964 /**
    965 * @brief Reboots the sensor.
    @@ -1086,7 +1086,7 @@
    977 * @ingroup LD2410Async_AsyncCommands
    978 * @ingroup LD2410Async_NativeCommands
    979 */
    -
    980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    981
    982 /**
    983 * @brief Enables bluetooth
    @@ -1101,7 +1101,7 @@
    992 * @ingroup LD2410Async_Bluetooth
    993 * @ingroup LD2410Async_NativeCommands
    994 */
    -
    995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    996
    997 /**
    998 * @brief Disables bluetooth
    @@ -1116,7 +1116,7 @@
    1007 * @ingroup LD2410Async_Bluetooth
    1008 * @ingroup LD2410Async_NativeCommands
    1009 */
    -
    1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    1011
    1012 /**
    1013 * @brief Requests the bluetooth mac address
    @@ -1130,7 +1130,7 @@
    1021 *
    1022 * @ingroup LD2410Async_AsyncCommands LD2410Async_Bluetooth LD2410Async_StaticData LD2410Async_NativeCommands
    1023 */
    -
    1024 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1024 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    1025
    1026 /**
    1027 * @brief Sets the password for bluetooth access to the sensor.
    @@ -1146,7 +1146,7 @@
    1037 * @ingroup LD2410Async_Bluetooth
    1038 * @ingroup LD2410Async_NativeCommands
    1039 */
    -
    1040 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    +
    1040 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    1041
    1042 /**
    1043 * @brief Sets the password for bluetooth access to the sensor.
    @@ -1162,7 +1162,7 @@
    1053 * @ingroup LD2410Async_Bluetooth
    1054 * @ingroup LD2410Async_NativeCommands
    1055 */
    -
    1056 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    +
    1056 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    1057
    1058 /**
    1059 * @brief Resets the password for bluetooth access to the default value (HiLink)
    @@ -1176,7 +1176,7 @@
    1067 * @ingroup LD2410Async_Bluetooth
    1068 * @ingroup LD2410Async_NativeCommands
    1069 */
    -
    1070 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1070 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    1071
    1072 /**
    1073 * @brief Configures the distance resolution of the radar.
    @@ -1204,7 +1204,7 @@
    1095 * @ingroup LD2410Async_Configuration
    1096 * @ingroup LD2410Async_NativeCommands
    1097 */
    -
    1098 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    +
    1098 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    1099
    1100 /**
    1101 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    @@ -1225,7 +1225,7 @@
    1116 * @ingroup LD2410Async_Configuration
    1117 * @ingroup LD2410Async_NativeCommands
    1118 */
    -
    1119 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1119 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    1120
    1121 /**
    1122 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    @@ -1246,7 +1246,7 @@
    1137 * @ingroup LD2410Async_Configuration
    1138 * @ingroup LD2410Async_NativeCommands
    1139 */
    -
    1140 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1140 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    1141
    1142 /**
    1143 * @brief Requests the current distance resolution setting from the sensor.
    @@ -1265,7 +1265,7 @@
    1156 * @ingroup LD2410Async_Configuration
    1157 * @ingroup LD2410Async_NativeCommands
    1158 */
    -
    1159 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1159 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    1160
    1161 /**
    1162 * @brief Configures the auxiliary control parameters (light and output pin).
    @@ -1292,7 +1292,7 @@
    1183 * @ingroup LD2410Async_Configuration
    1184 * @ingroup LD2410Async_NativeCommands
    1185 */
    -
    1186 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    +
    1186 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    1187
    1188 /**
    1189 * @brief Requests the current auxiliary control settings.
    @@ -1313,7 +1313,7 @@
    1204 * @ingroup LD2410Async_Configuration
    1205 * @ingroup LD2410Async_NativeCommands
    1206 */
    -
    1207 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1207 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    1208
    1209
    1210 /**
    @@ -1360,7 +1360,7 @@
    1251 * @ingroup LD2410Async_Configuration
    1252 * @ingroup LD2410Async_NativeCommands
    1253 */
    -
    1254 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1254 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    1255
    1256
    1257 /**
    @@ -1417,7 +1417,7 @@
    1308 * @ingroup LD2410Async_Configuration
    1309 * @ingroup LD2410Async_NativeCommands
    1310 */
    -
    1311 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1311 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    1312
    1313
    1314
    @@ -1475,7 +1475,7 @@
    1366 * @ingroup LD2410Async_Configuration
    1367 * @ingroup LD2410Async_HighLevelCommands
    1368 */
    -
    1369 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1369 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    1370
    1371
    1372 /**
    @@ -1525,7 +1525,7 @@
    1416 * @ingroup LD2410Async_StaticData
    1417 * @ingroup LD2410Async_HighLevelCommands
    1418 */
    -
    1419 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1419 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    1420
    1421
    1422
    @@ -1584,7 +1584,7 @@
    1475 * @ingroup LD2410Async_StaticData
    1476 * @ingroup LD2410Async_HighLevelCommands
    1477 */
    -
    1478 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    +
    1478 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    1479
    1480
    1481
    @@ -1661,7 +1661,7 @@
    1552 unsigned long executeCommandSequenceStartMs = 0;
    1553
    1554 /// Callback for current async sequence
    -
    1555 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    +
    1555 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    1556
    1557 /// User-provided data passed to async sequence callback
    1558 byte executeCommandSequenceUserData = 0;
    @@ -1680,17 +1680,17 @@
    1571 bool executeCommandSequenceInitialConfigModeState = false;
    1572
    1573 /// Finalize an async sequence and invoke its callback
    -
    1574 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1574 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    1575
    1576 /// Final step of an async sequence: restore config mode if needed and call callback
    -
    1577 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1577 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    1578
    1579 /// Internal callbacks for sequence steps
    -
    1580 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1581 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1580 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1581 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1582
    1583 /// Start executing an async sequence
    -
    1584 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1584 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    1585
    1586 /// Add one command to the sequence buffer
    1587 bool addCommandToSequence(const byte* command);
    @@ -1715,10 +1715,10 @@
    1606 void handleInactivity();
    1607
    1608 /// Callback for reboot triggered by inactivity handler
    -
    1609 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1609 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1610
    1611 /// Callback for disabling config mode during inactivity recovery
    -
    1612 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1612 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1613
    1614
    1615 // ============================================================================
    @@ -1726,10 +1726,10 @@
    1617 // ============================================================================
    1618
    1619 /// Step 1: Enter config mode before reboot
    -
    1620 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1620 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1621
    1622 /// Step 2: Issue reboot command
    -
    1623 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1623 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    1624
    1625
    1626 // ============================================================================
    @@ -1747,15 +1747,15 @@
    1638 // Callbacks
    1639 // ============================================================================
    1640
    -
    1641 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    +
    1641 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    1642 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    1643 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    1644
    -
    1645 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    +
    1645 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    1646 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    1647 void executeConfigChangedCallback(); ///< Execute config-changed callback
    1648
    -
    1649 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    +
    1649 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    1650 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    1651
    1652
    @@ -1784,10 +1784,10 @@
    1675 unsigned long asyncCommandTimeoutMs = 6000;
    1676
    1677 /// Send a generic async command
    -
    1678 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1678 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1679
    1680 /// Invoke async command callback with result
    -
    1681 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1681 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    1682
    1683
    1684
    @@ -1795,9 +1795,9 @@
    1686 void handleAsyncCommandCallbackTimeout();
    1687
    1688 /// Send async command that modifies configuration
    -
    1689 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1689 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1690
    -
    1691 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    +
    1691 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    1692 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    1693 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    1694 byte asyncCommandCommandCode = 0; ///< Last command code issued
    @@ -1814,28 +1814,28 @@
    1705 // ============================================================================
    1706 // Config mode
    1707 // ============================================================================
    -
    1708 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1709 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1708 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1709 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    1710
    1711 // ============================================================================
    1712 // Config writing
    1713 // ============================================================================
    1714 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    1715 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    -
    1716 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1716 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    1717 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    1718 bool configureAllConfigSettingsAsyncConfigActive = false;
    1719 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    -
    1720 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1720 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    1721
    -
    1722 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1723 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1724 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1725 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1722 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1723 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1724 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1725 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1726 bool configureAllConfigSettingsAsyncWriteConfig();
    -
    1727 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1727 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1728 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1729 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1729 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    1730
    1731 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    1732
    @@ -1845,80 +1845,80 @@ -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    -
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    -
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    -
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    -
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    bool end()
    Stops the background task started by begin().
    -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    -
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    String firmware
    Firmware version string of the radar.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ NOT_SET
    Status not yet retrieved.
    -
    @ TIMEOUT
    No ACK received within the expected time window.
    -
    @ FAILED
    Command failed (sensor responded with negative ACK).
    -
    @ SUCCESS
    Command completed successfully and ACK was received.
    -
    @ CANCELED
    Command was canceled by the user before completion.
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    +
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    +
    String firmware
    Firmware version string of the radar.
    +
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    +
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    +
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    unsigned long protocolVersion
    Protocol version reported by the radar.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    +
    bool end()
    Stops the background task started by begin().
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    constexpr size_t LD2410_Buffer_Size
    Definition LD2410Defs.h:11
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    @ NOT_SET
    Status not yet retrieved.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    Stores the sensor’s configuration parameters.
    Holds the most recent detection data reported by the radar.
    diff --git a/docu/LD2410Async_TopicIndex.html b/docu/LD2410Async_TopicIndex.html new file mode 100644 index 0000000..a8a47a3 --- /dev/null +++ b/docu/LD2410Async_TopicIndex.html @@ -0,0 +1,114 @@ + + + + + + + +LD2410Async: LD2410Async: Index by topic + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    LD2410Async: Index by topic
    +
    +
    +

    Overview of all important methods, types and data, sorted by topic.

    +
    +
    +
    + + + + diff --git a/docu/LD2410CommandBuilder_8h.html b/docu/LD2410CommandBuilder_8h.html index 74219aa..dbb801b 100644 --- a/docu/LD2410CommandBuilder_8h.html +++ b/docu/LD2410CommandBuilder_8h.html @@ -121,9 +121,9 @@   bool LD2410CommandBuilder::buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)   -bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution) +bool LD2410CommandBuilder::buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)   -bool LD2410CommandBuilder::buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) +bool LD2410CommandBuilder::buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)   bool LD2410CommandBuilder::buildBaudRateCommand (byte *out, byte baudRateSetting)   diff --git a/docu/LD2410CommandBuilder_8h_source.html b/docu/LD2410CommandBuilder_8h_source.html index 32ae3d1..d8469ac 100644 --- a/docu/LD2410CommandBuilder_8h_source.html +++ b/docu/LD2410CommandBuilder_8h_source.html @@ -154,12 +154,12 @@
    48
    63
    -
    64 inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) {
    +
    64 inline bool buildAuxControlCommand(byte* out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) {
    67
    -
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    -
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    +
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    +
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    70
    71 out[4] = byte(lightControl);
    72 out[5] = lightThreshold;
    @@ -218,13 +218,6 @@ -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    @@ -239,6 +232,13 @@
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    diff --git a/docu/LD2410Types_8h.html b/docu/LD2410Types_8h.html index afdc8a8..3ef0a90 100644 --- a/docu/LD2410Types_8h.html +++ b/docu/LD2410Types_8h.html @@ -124,59 +124,59 @@ - - - - + + - - - + + - - - + + - - - + + - - - + + - - + +

    Enumerations

    enum class  LD2410Types::TargetState {
    -  LD2410Types::TargetState::NO_TARGET = 0 -, LD2410Types::TargetState::MOVING_TARGET = 1 -, LD2410Types::TargetState::STATIONARY_TARGET = 2 -, LD2410Types::TargetState::MOVING_AND_STATIONARY_TARGET = 3 +
    enum class  LD2410Types::TargetState {
    +  LD2410Types::NO_TARGET = 0 +, LD2410Types::MOVING_TARGET = 1 +, LD2410Types::STATIONARY_TARGET = 2 +, LD2410Types::MOVING_AND_STATIONARY_TARGET = 3 ,
    -  LD2410Types::TargetState::AUTOCONFIG_IN_PROGRESS = 4 -, LD2410Types::TargetState::AUTOCONFIG_SUCCESS = 5 -, LD2410Types::TargetState::AUTOCONFIG_FAILED = 6 +  LD2410Types::AUTOCONFIG_IN_PROGRESS = 4 +, LD2410Types::AUTOCONFIG_SUCCESS = 5 +, LD2410Types::AUTOCONFIG_FAILED = 6
    }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LD2410Types::LightControl { LD2410Types::LightControl::NOT_SET = -1 -, LD2410Types::LightControl::NO_LIGHT_CONTROL = 0 -, LD2410Types::LightControl::LIGHT_BELOW_THRESHOLD = 1 -, LD2410Types::LightControl::LIGHT_ABOVE_THRESHOLD = 2 +
     Represents the current target detection state reported by the radar. More...
     
    enum class  LD2410Types::LightControl { LD2410Types::NOT_SET = -1 +, LD2410Types::NO_LIGHT_CONTROL = 0 +, LD2410Types::LIGHT_BELOW_THRESHOLD = 1 +, LD2410Types::LIGHT_ABOVE_THRESHOLD = 2 }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  LD2410Types::OutputControl { LD2410Types::OutputControl::NOT_SET = -1 -, LD2410Types::OutputControl::DEFAULT_LOW_DETECTED_HIGH = 0 -, LD2410Types::OutputControl::DEFAULT_HIGH_DETECTED_LOW = 1 +
     Light-dependent control status of the auxiliary output. More...
     
    enum class  LD2410Types::OutputControl { LD2410Types::NOT_SET = -1 +, LD2410Types::DEFAULT_LOW_DETECTED_HIGH = 0 +, LD2410Types::DEFAULT_HIGH_DETECTED_LOW = 1 }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  LD2410Types::AutoConfigStatus { LD2410Types::AutoConfigStatus::NOT_SET = -1 -, LD2410Types::AutoConfigStatus::NOT_IN_PROGRESS -, LD2410Types::AutoConfigStatus::IN_PROGRESS -, LD2410Types::AutoConfigStatus::COMPLETED +
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  LD2410Types::AutoConfigStatus { LD2410Types::NOT_SET = -1 +, LD2410Types::NOT_IN_PROGRESS +, LD2410Types::IN_PROGRESS +, LD2410Types::COMPLETED }
     State of the automatic threshold configuration routine. More...
     
    enum class  LD2410Types::Baudrate {
    -  LD2410Types::Baudrate::BAUDRATE_9600 = 1 -, LD2410Types::Baudrate::BAUDRATE_19200 = 2 -, LD2410Types::Baudrate::BAUDRATE_38400 = 3 -, LD2410Types::Baudrate::BAUDRATE_57600 = 4 +
     State of the automatic threshold configuration routine. More...
     
    enum class  LD2410Types::Baudrate {
    +  LD2410Types::BAUDRATE_9600 = 1 +, LD2410Types::BAUDRATE_19200 = 2 +, LD2410Types::BAUDRATE_38400 = 3 +, LD2410Types::BAUDRATE_57600 = 4 ,
    -  LD2410Types::Baudrate::BAUDRATE_115200 = 5 -, LD2410Types::Baudrate::BAUDRATE_230500 = 6 -, LD2410Types::Baudrate::BAUDRATE_256000 = 7 -, LD2410Types::Baudrate::BAUDRATE_460800 = 8 +  LD2410Types::BAUDRATE_115200 = 5 +, LD2410Types::BAUDRATE_230500 = 6 +, LD2410Types::BAUDRATE_256000 = 7 +, LD2410Types::BAUDRATE_460800 = 8
    }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  LD2410Types::DistanceResolution { LD2410Types::DistanceResolution::NOT_SET = -1 -, LD2410Types::DistanceResolution::RESOLUTION_75CM = 0 -, LD2410Types::DistanceResolution::RESOLUTION_20CM = 1 +
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  LD2410Types::DistanceResolution { LD2410Types::NOT_SET = -1 +, LD2410Types::RESOLUTION_75CM = 0 +, LD2410Types::RESOLUTION_20CM = 1 }
     Distance resolution per gate for detection. More...
     
     Distance resolution per gate for detection. More...
     
    diff --git a/docu/LD2410Types_8h.js b/docu/LD2410Types_8h.js index b7dfff9..fb70ba4 100644 --- a/docu/LD2410Types_8h.js +++ b/docu/LD2410Types_8h.js @@ -1,44 +1,46 @@ var LD2410Types_8h = [ - [ "AutoConfigStatus", "LD2410Types_8h.html#ga035762090f81b93ab2008c3a8d37e995", [ - [ "NOT_SET", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], - [ "IN_PROGRESS", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], - [ "COMPLETED", "LD2410Types_8h.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] + [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], + [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], + [ "AutoConfigStatus", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995", [ + [ "NOT_SET", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], + [ "IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9", null ], + [ "COMPLETED", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e", null ] ] ], - [ "Baudrate", "LD2410Types_8h.html#ga5e710aa1a69067aab369a0a463189fdf", [ - [ "BAUDRATE_9600", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], - [ "BAUDRATE_19200", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], - [ "BAUDRATE_38400", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], - [ "BAUDRATE_57600", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], - [ "BAUDRATE_115200", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], - [ "BAUDRATE_230500", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], - [ "BAUDRATE_256000", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], - [ "BAUDRATE_460800", "LD2410Types_8h.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] + [ "Baudrate", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf", [ + [ "BAUDRATE_9600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1", null ], + [ "BAUDRATE_19200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159", null ], + [ "BAUDRATE_38400", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e", null ], + [ "BAUDRATE_57600", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391", null ], + [ "BAUDRATE_115200", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05", null ], + [ "BAUDRATE_230500", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16", null ], + [ "BAUDRATE_256000", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c", null ], + [ "BAUDRATE_460800", "LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0", null ] ] ], - [ "DistanceResolution", "LD2410Types_8h.html#ga89e3189ddef9f36629c460fbeb398c79", [ - [ "NOT_SET", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "RESOLUTION_75CM", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], - [ "RESOLUTION_20CM", "LD2410Types_8h.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] + [ "DistanceResolution", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79", [ + [ "NOT_SET", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "RESOLUTION_75CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8", null ], + [ "RESOLUTION_20CM", "LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e", null ] ] ], - [ "LightControl", "LD2410Types_8h.html#gafbd22de9579db591b3f122c51c730844", [ - [ "NOT_SET", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], - [ "NO_LIGHT_CONTROL", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], - [ "LIGHT_BELOW_THRESHOLD", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], - [ "LIGHT_ABOVE_THRESHOLD", "LD2410Types_8h.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] + [ "LightControl", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844", [ + [ "NOT_SET", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162", null ], + [ "NO_LIGHT_CONTROL", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21", null ], + [ "LIGHT_BELOW_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c", null ], + [ "LIGHT_ABOVE_THRESHOLD", "LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e", null ] ] ], - [ "OutputControl", "LD2410Types_8h.html#ga420c188999635485028764fe98cb0bff", [ - [ "NOT_SET", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], - [ "DEFAULT_LOW_DETECTED_HIGH", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], - [ "DEFAULT_HIGH_DETECTED_LOW", "LD2410Types_8h.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] + [ "OutputControl", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bff", [ + [ "NOT_SET", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162", null ], + [ "DEFAULT_LOW_DETECTED_HIGH", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946", null ], + [ "DEFAULT_HIGH_DETECTED_LOW", "LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761", null ] ] ], - [ "TargetState", "LD2410Types_8h.html#gaf838f34651382f6262c0d19397ac0be9", [ - [ "NO_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], - [ "MOVING_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], - [ "STATIONARY_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], - [ "MOVING_AND_STATIONARY_TARGET", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], - [ "AUTOCONFIG_IN_PROGRESS", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], - [ "AUTOCONFIG_SUCCESS", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], - [ "AUTOCONFIG_FAILED", "LD2410Types_8h.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] + [ "TargetState", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9", [ + [ "NO_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84", null ], + [ "MOVING_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929", null ], + [ "STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4", null ], + [ "MOVING_AND_STATIONARY_TARGET", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5", null ], + [ "AUTOCONFIG_IN_PROGRESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8", null ], + [ "AUTOCONFIG_SUCCESS", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae", null ], + [ "AUTOCONFIG_FAILED", "LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9", null ] ] ] ]; \ No newline at end of file diff --git a/docu/LD2410Types_8h_source.html b/docu/LD2410Types_8h_source.html index 3863eab..5fb2a90 100644 --- a/docu/LD2410Types_8h_source.html +++ b/docu/LD2410Types_8h_source.html @@ -122,14 +122,14 @@
    19 */
    20
    -
    21 enum class TargetState {
    -
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    -
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    -
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    -
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    -
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    -
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    -
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    21 enum class TargetState {
    +
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    29 };
    30
    @@ -148,16 +148,16 @@
    43 *
    44 * @ingroup LD2410Async_Types
    45 */
    -
    46 static TargetState toTargetState(int value) {
    +
    46 static TargetState toTargetState(int value) {
    47 switch (value) {
    -
    48 case 0: return TargetState::NO_TARGET;
    -
    49 case 1: return TargetState::MOVING_TARGET;
    -
    50 case 2: return TargetState::STATIONARY_TARGET;
    - - - -
    54 case 6: return TargetState::AUTOCONFIG_FAILED;
    -
    55 default: return TargetState::NO_TARGET; // safe fallback
    +
    48 case 0: return TargetState::NO_TARGET;
    +
    49 case 1: return TargetState::MOVING_TARGET;
    +
    50 case 2: return TargetState::STATIONARY_TARGET;
    + + + +
    54 case 6: return TargetState::AUTOCONFIG_FAILED;
    +
    55 default: return TargetState::NO_TARGET; // safe fallback
    56 }
    57 }
    58
    @@ -171,15 +171,15 @@
    66 *
    67 * @ingroup LD2410Async_Types
    68 */
    -
    69 static String targetStateToString(TargetState state) {
    +
    69 static String targetStateToString(TargetState state) {
    70 switch (state) {
    -
    71 case TargetState::NO_TARGET: return "No target";
    -
    72 case TargetState::MOVING_TARGET: return "Moving target";
    -
    73 case TargetState::STATIONARY_TARGET: return "Stationary target";
    -
    74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    -
    75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    -
    76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    -
    77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    +
    71 case TargetState::NO_TARGET: return "No target";
    +
    72 case TargetState::MOVING_TARGET: return "Moving target";
    +
    73 case TargetState::STATIONARY_TARGET: return "Stationary target";
    +
    74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    +
    75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    +
    76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    +
    77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    78 default: return "Unknown";
    79 }
    80 }
    @@ -200,11 +200,11 @@
    95 * @ingroup LD2410Async_Types
    96 */
    -
    97 enum class LightControl {
    -
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    -
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    -
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    97 enum class LightControl {
    +
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    102 };
    103 /**
    @@ -218,12 +218,12 @@
    111 *
    112 * @ingroup LD2410Async_Types
    113 */
    -
    114 static LightControl toLightControl(int value) {
    +
    114 static LightControl toLightControl(int value) {
    115 switch (value) {
    -
    116 case 0: return LightControl::NO_LIGHT_CONTROL;
    - - -
    119 default: return LightControl::NOT_SET;
    +
    116 case 0: return LightControl::NO_LIGHT_CONTROL;
    + + +
    119 default: return LightControl::NOT_SET;
    120 }
    121 }
    122
    @@ -239,10 +239,10 @@
    132 * @ingroup LD2410Async_Types
    133 */
    -
    134 enum class OutputControl {
    -
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    -
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    134 enum class OutputControl {
    +
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    138 };
    139
    @@ -256,11 +256,11 @@
    147 *
    148 * @ingroup LD2410Async_Types
    149 */
    -
    150 static OutputControl toOutputControl(int value) {
    +
    150 static OutputControl toOutputControl(int value) {
    151 switch (value) {
    - - -
    154 default: return OutputControl::NOT_SET;
    + + +
    154 default: return OutputControl::NOT_SET;
    155 }
    156 }
    157
    @@ -275,11 +275,11 @@
    166 * @ingroup LD2410Async_Types
    167 */
    -
    168 enum class AutoConfigStatus {
    -
    169 NOT_SET = -1, ///< Status not yet retrieved.
    -
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    -
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    -
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    168 enum class AutoConfigStatus {
    +
    169 NOT_SET = -1, ///< Status not yet retrieved.
    +
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    173 };
    174
    @@ -294,12 +294,12 @@
    183 *
    184 * @ingroup LD2410Async_Types
    185 */
    -
    186 static AutoConfigStatus toAutoConfigStatus(int value) {
    +
    186 static AutoConfigStatus toAutoConfigStatus(int value) {
    187 switch (value) {
    - -
    189 case 1: return AutoConfigStatus::IN_PROGRESS;
    -
    190 case 2: return AutoConfigStatus::COMPLETED;
    -
    191 default: return AutoConfigStatus::NOT_SET;
    + +
    189 case 1: return AutoConfigStatus::IN_PROGRESS;
    +
    190 case 2: return AutoConfigStatus::COMPLETED;
    +
    191 default: return AutoConfigStatus::NOT_SET;
    192 }
    193 }
    194
    @@ -314,15 +314,15 @@
    203 * @ingroup LD2410Async_Types
    204 */
    -
    205 enum class Baudrate {
    -
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    -
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    -
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    -
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    -
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    -
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    -
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    -
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    205 enum class Baudrate {
    +
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    214 };
    215
    @@ -338,10 +338,10 @@
    225 * @ingroup LD2410Async_Types
    226 */
    - -
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    -
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    + +
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    231 };
    232 /**
    @@ -355,11 +355,11 @@
    240 *
    241 * @ingroup LD2410Async_Types
    242 */
    -
    243 static DistanceResolution toDistanceResolution(int value) {
    +
    243 static DistanceResolution toDistanceResolution(int value) {
    244 switch (value) {
    - - -
    247 default: return DistanceResolution::NOT_SET;
    + + +
    247 default: return DistanceResolution::NOT_SET;
    248 }
    249 }
    250
    @@ -386,7 +386,7 @@
    270 bool movingPresenceDetected = false; ///< True if a moving target is detected.
    271 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
    272
    -
    273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    +
    273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    274 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
    275 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
    276 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
    @@ -504,12 +504,12 @@
    384 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
    385
    386 // === Distance resolution ===
    -
    387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    +
    387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    388
    389 // === Auxiliary controls ===
    390 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
    -
    391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    -
    392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    +
    391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    +
    392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    393
    394
    395
    @@ -526,9 +526,9 @@
    406 bool isValid() const {
    407 // Validate enum settings
    - -
    409 if (lightControl == LightControl::NOT_SET) return false;
    -
    410 if (outputControl == OutputControl::NOT_SET) return false;
    + +
    409 if (lightControl == LightControl::NOT_SET) return false;
    +
    410 if (outputControl == OutputControl::NOT_SET) return false;
    411
    412 // Validate max distance gates
    @@ -623,42 +623,42 @@
    496
    497}
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:21
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    @ NOT_SET
    Status not yet retrieved.
    -
    @ COMPLETED
    Auto-configuration finished (success or failure).
    -
    @ IN_PROGRESS
    Auto-configuration is currently running.
    -
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    -
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    -
    @ BAUDRATE_57600
    57600 baud.
    -
    @ BAUDRATE_38400
    38400 baud.
    -
    @ BAUDRATE_230500
    230400 baud.
    -
    @ BAUDRATE_115200
    115200 baud.
    -
    @ BAUDRATE_256000
    256000 baud (factory default).
    -
    @ BAUDRATE_19200
    19200 baud.
    -
    @ BAUDRATE_9600
    9600 baud.
    -
    @ BAUDRATE_460800
    460800 baud (high-speed).
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    -
    @ NO_TARGET
    No moving or stationary target detected.
    -
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    -
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    -
    @ STATIONARY_TARGET
    A stationary target has been detected.
    -
    @ MOVING_TARGET
    A moving target has been detected.
    -
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    -
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    -
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    @ NOT_SET
    Status not yet retrieved.
    +
    @ COMPLETED
    Auto-configuration finished (success or failure).
    +
    @ IN_PROGRESS
    Auto-configuration is currently running.
    +
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    +
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    @ BAUDRATE_57600
    57600 baud.
    +
    @ BAUDRATE_38400
    38400 baud.
    +
    @ BAUDRATE_230500
    230400 baud.
    +
    @ BAUDRATE_115200
    115200 baud.
    +
    @ BAUDRATE_256000
    256000 baud (factory default).
    +
    @ BAUDRATE_19200
    19200 baud.
    +
    @ BAUDRATE_9600
    9600 baud.
    +
    @ BAUDRATE_460800
    460800 baud (high-speed).
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:21
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ NO_TARGET
    No moving or stationary target detected.
    +
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    +
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    +
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    +
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    Stores the sensor’s configuration parameters.
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    void print() const
    Debug helper: print configuration contents to Serial.
    diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html index 34c9db2..d72e74c 100644 --- a/docu/classLD2410Async-members.html +++ b/docu/classLD2410Async-members.html @@ -103,72 +103,72 @@

    This is the complete list of members for LD2410Async, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    asyncCancel()LD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    asyncIsBusy()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableInactivityHandling()LD2410Asyncinline
    enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    getAsyncCommandTimeoutMs() constLD2410Asyncinline
    getConfigData() constLD2410Async
    getConfigDataRef() constLD2410Asyncinline
    getDetectionData() constLD2410Async
    getDetectionDataRef() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    isConfigModeEnabled() constLD2410Asyncinline
    isEngineeringModeEnabled() constLD2410Asyncinline
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    asyncCancel()LD2410Async
    AsyncCommandCallback typedefLD2410Async
    AsyncCommandResult enum nameLD2410Async
    asyncIsBusy()LD2410Async
    autoConfigStatusLD2410Async
    begin()LD2410Async
    beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    bufferSizeLD2410Async
    configDataLD2410Async
    configModeEnabledLD2410Async
    configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async
    configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    detectionDataLD2410Async
    DetectionDataCallback typedefLD2410Async
    disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    disableInactivityHandling()LD2410Asyncinline
    enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    enableInactivityHandling()LD2410Asyncinline
    end()LD2410Async
    engineeringModeEnabledLD2410Async
    firmwareLD2410Async
    GenericCallback typedefLD2410Async
    getAsyncCommandTimeoutMs() constLD2410Asyncinline
    getConfigData() constLD2410Async
    getConfigDataRef() constLD2410Asyncinline
    getDetectionData() constLD2410Async
    getDetectionDataRef() constLD2410Asyncinline
    getInactivityTimeoutMs() constLD2410Asyncinline
    isConfigModeEnabled() constLD2410Asyncinline
    isEngineeringModeEnabled() constLD2410Asyncinline
    isInactivityHandlingEnabled() constLD2410Asyncinline
    LD2410Async(Stream &serial)LD2410Async
    macLD2410Async
    macStringLD2410Async
    protocolVersionLD2410Async
    rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async
    registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async
    requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async
    setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    setInactivityHandling(bool enable)LD2410Async
    setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline
    diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html index fe1763c..3184c4b 100644 --- a/docu/classLD2410Async.html +++ b/docu/classLD2410Async.html @@ -110,219 +110,3046 @@ - - - - - - - - - - - - + + + + + + + + + + +

    Public Types

    enum class  AsyncCommandResult : byte { AsyncCommandResult::SUCCESS -, AsyncCommandResult::FAILED -, AsyncCommandResult::TIMEOUT -, AsyncCommandResult::CANCELED +
    enum class  AsyncCommandResult : byte { SUCCESS +, FAILED +, TIMEOUT +, CANCELED }
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
     Result of an asynchronous command execution. More...
     
    typedef void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
     Callback signature for asynchronous command completion.
     
    typedef void(*) GenericCallback(LD2410Async *sender, byte userData)
     Generic callback signature used for simple notifications.
     
    typedef void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
     Callback type for receiving detection data events.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Member Functions

     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    LD2410Types::DetectionData getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    const LD2410Types::DetectionDatagetDetectionDataRef () const
     Access the current detection data without making a copy.
     
    LD2410Types::ConfigData getConfigData () const
     Returns a clone of the current configuration data of the radar.
     
    const LD2410Types::ConfigDatagetConfigDataRef () const
     Access the current config data without making a copy.
     
    bool asyncIsBusy ()
     Checks if an asynchronous command is currently pending.
     
    void asyncCancel ()
     Cancels any pending asynchronous command or sequence.
     
    void setAsyncCommandTimeoutMs (unsigned long timeoutMs)
     Sets the timeout for async command callbacks.
     
    unsigned long getAsyncCommandTimeoutMs () const
     Returns the current async command timeout.
     
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables engineering mode.
     
    bool isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
     LD2410Async (Stream &serial)
     Constructs a new LD2410Async instance bound to a given serial stream.
     
    bool begin ()
     Starts the background task that continuously reads data from the sensor.
     
    bool end ()
     Stops the background task started by begin().
     
    void setInactivityHandling (bool enable)
     Enables or disables automatic inactivity handling of the sensor.
     
    void enableInactivityHandling ()
     Convenience method: enables inactivity handling.
     
    void disableInactivityHandling ()
     Convenience method: disables inactivity handling.
     
    bool isInactivityHandlingEnabled () const
     Returns whether inactivity handling is currently enabled.
     
    void setInactivityTimeoutMs (unsigned long timeoutMs)
     Sets the timeout period for inactivity handling.
     
    unsigned long getInactivityTimeoutMs () const
     Returns the current inactivity timeout period.
     
    void registerDetectionDataReceivedCallback (DetectionDataCallback callback, byte userData=0)
     Registers a callback for new detection data.
     
    void registerConfigChangedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration changes.
     
    void registerConfigUpdateReceivedCallback (GenericCallback callback, byte userData=0)
     Registers a callback for configuration data updates.
     
    LD2410Types::DetectionData getDetectionData () const
     Returns a clone of the latest detection data from the radar.
     
    const LD2410Types::DetectionDatagetDetectionDataRef () const
     Access the current detection data without making a copy.
     
    LD2410Types::ConfigData getConfigData () const
     Returns a clone of the current configuration data of the radar.
     
    const LD2410Types::ConfigDatagetConfigDataRef () const
     Access the current config data without making a copy.
     
    bool asyncIsBusy ()
     Checks if an asynchronous command is currently pending.
     
    void asyncCancel ()
     Cancels any pending asynchronous command or sequence.
     
    void setAsyncCommandTimeoutMs (unsigned long timeoutMs)
     Sets the timeout for async command callbacks.
     
    unsigned long getAsyncCommandTimeoutMs () const
     Returns the current async command timeout.
     
    bool enableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables config mode on the radar.
     
    bool disableConfigModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables config mode on the radar.
     
    bool isConfigModeEnabled () const
     Detects if config mode is enabled.
     
    bool enableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Enables engineering mode.
     
    bool disableEngineeringModeAsync (AsyncCommandCallback callback, byte userData=0)
     Disables engineering mode.
     
    bool isEngineeringModeEnabled () const
     Detects if engineering mode is enabled.
     
    bool requestGateParametersAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current gate parameters from the sensor.
     
    bool configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
     Configures the maximum detection gates and "no-one" timeout on the sensor.
     
    bool configureDistanceGateSensitivityAsync (const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for all gates at once.
     
    bool configureDistanceGateSensitivityAsync (byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)
     Configures sensitivity thresholds for a single gate.
     
    bool requestFirmwareAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the firmware version of the sensor.
     
    bool configureBaudRateAsync (byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
     Configures the UART baud rate of the sensor.
     
    bool configureBaudRateAsync (LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)
     Configures the baudrate of the serial port of the sensor.
     
    bool restoreFactorySettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Restores factory settings of the sensor.
     
    bool rebootAsync (AsyncCommandCallback callback, byte userData=0)
     Reboots the sensor.
     
    bool enableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Enables bluetooth.
     
    bool disableBluetoothAsync (AsyncCommandCallback callback, byte userData=0)
     Disables bluetooth.
     
    bool requestBluetoothMacAddressAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the bluetooth mac address.
     
    bool configureBluetoothPasswordAsync (const char *password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureBluetoothPasswordAsync (const String &password, AsyncCommandCallback callback, byte userData=0)
     Sets the password for bluetooth access to the sensor.
     
    bool configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback, byte userData=0)
     Resets the password for bluetooth access to the default value (HiLink)
     
    bool configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution of the radar.
     
    bool configureDistanceResolution75cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 75 cm per gate.
     
    bool configuresDistanceResolution20cmAsync (AsyncCommandCallback callback, byte userData=0)
     Configures the distance resolution explicitly to 20 cm per gate.
     
    bool requestDistanceResolutioncmAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current distance resolution setting from the sensor.
     
    bool configureAuxControlSettingsAsync (LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
     Configures the auxiliary control parameters (light and output pin).
     
    bool requestAuxControlSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current auxiliary control settings.
     
    bool beginAutoConfigAsync (AsyncCommandCallback callback, byte userData=0)
     Starts the automatic configuration (auto-config) routine on the sensor.
     
    bool requestAutoConfigStatusAsync (AsyncCommandCallback callback, byte userData=0)
     Requests the current status of the auto-config routine.
     
    bool requestAllConfigSettingsAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all configuration settings from the sensor.
     
    bool requestAllStaticDataAsync (AsyncCommandCallback callback, byte userData=0)
     Requests all static information from the sensor.
     
    bool configureAllConfigSettingsAsync (const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
     Applies a full ConfigData struct to the LD2410.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     
    LD2410Types::DetectionData detectionData
     Latest detection results from the radar.
     
    LD2410Types::ConfigData configData
     Current configuration parameters of the radar.
     
    unsigned long protocolVersion = 0
     Protocol version reported by the radar.
     
    unsigned long bufferSize = 0
     Buffer size reported by the radar protocol.
     
    bool configModeEnabled = false
     True if the sensor is currently in config mode.
     
    bool engineeringModeEnabled = false
     True if the sensor is currently in engineering mode.
     
    String firmware = ""
     Firmware version string of the radar.
     
    byte mac [6]
     MAC address of the radar’s Bluetooth module (if available).
     
    String macString = ""
     MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
     
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
     Current status of the auto-configuration routine.
     

    Detailed Description

    Definition at line 88 of file LD2410Async.h.

    -

    The documentation for this class was generated from the following files:
      +

    Member Typedef Documentation

    + +

    ◆ AsyncCommandCallback

    + +
    +
    + + + + +
    void(*) LD2410Async::AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    +
    + +

    Callback signature for asynchronous command completion.

    +
    Parameters
    + + + + +
    senderPointer to the LD2410Async instance that triggered the callback.
    resultOutcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    userDataUser-specified value passed when registering the callback.
    +
    +
    + +

    Definition at line 118 of file LD2410Async.h.

    + +
    +
    + +

    ◆ DetectionDataCallback

    + +
    +
    + + + + +
    void(*) LD2410Async::DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    +
    + +

    Callback type for receiving detection data events.

    +

    This callback is invoked whenever new detection data is processed. It provides direct access to the LD2410Async instance, along with a quick flag for presence detection so that applications which only care about presence can avoid parsing the full DetectionData struct.

    +
    Parameters
    + + + + +
    senderPointer to the LD2410Async instance that triggered the callback.
    presenceDetectedTrue if the radar currently detects presence (moving or stationary), false otherwise.
    userDataUser-defined value passed when registering the callback.
    +
    +
    + +

    Definition at line 147 of file LD2410Async.h.

    + +
    +
    + +

    ◆ GenericCallback

    + +
    +
    + + + + +
    void(*) LD2410Async::GenericCallback(LD2410Async *sender, byte userData)
    +
    + +

    Generic callback signature used for simple notifications.

    +
    Parameters
    + + + +
    senderPointer to the LD2410Async instance that triggered the callback.
    userDataUser-specified value passed when registering the callback.
    +
    +
    + +

    Definition at line 130 of file LD2410Async.h.

    + +
    +
    +

    Member Enumeration Documentation

    + +

    ◆ AsyncCommandResult

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Async::AsyncCommandResult : byte
    +
    +strong
    +
    + +

    Result of an asynchronous command execution.

    +

    Every async command reports back its outcome via the callback.

    + + + + + +
    Enumerator
    SUCCESS 

    Command completed successfully and ACK was received.

    +
    FAILED 

    Command failed (sensor responded with negative ACK).

    +
    TIMEOUT 

    No ACK received within the expected time window.

    +
    CANCELED 

    Command was canceled by the user before completion.

    +
    + +

    Definition at line 98 of file LD2410Async.h.

    +
    98 : byte {
    +
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    101 TIMEOUT, ///< No ACK received within the expected time window.
    +
    102 CANCELED ///< Command was canceled by the user before completion.
    +
    103 };
    +
    @ TIMEOUT
    No ACK received within the expected time window.
    +
    @ FAILED
    Command failed (sensor responded with negative ACK).
    +
    @ SUCCESS
    Command completed successfully and ACK was received.
    +
    @ CANCELED
    Command was canceled by the user before completion.
    +
    +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ LD2410Async()

    + +
    +
    + + + + + + + +
    LD2410Async::LD2410Async (Stream & serial)
    +
    + +

    Constructs a new LD2410Async instance bound to a given serial stream.

    +

    The sensor communicates over a UART interface. Pass the corresponding Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible implementation) that is connected to the LD2410 sensor.

    +

    Example:

    HardwareSerial radarSerial(2);
    +
    LD2410Async radar(radarSerial);
    + +
    Parameters
    + + +
    serialReference to a Stream object used to exchange data with the sensor.
    +
    +
    + +

    Definition at line 1646 of file LD2410Async.cpp.

    +
    1647{
    +
    1648 sensor = &serial;
    +
    1649}
    +
    +
    +
    +

    Member Function Documentation

    + +

    ◆ asyncCancel()

    + +
    +
    + + + + + + + +
    void LD2410Async::asyncCancel ()
    +
    + +

    Cancels any pending asynchronous command or sequence.

    +

    If canceled, the callback of the running command is invoked with result type CANCELED. After canceling, the sensor may remain in config mode — consider disabling config mode or rebooting to return to detection operation.

    + +

    Definition at line 534 of file LD2410Async.cpp.

    +
    534 {
    +
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    +
    536}
    +
    +
    +
    + +

    ◆ asyncIsBusy()

    + +
    +
    + + + + + + + +
    bool LD2410Async::asyncIsBusy ()
    +
    + +

    Checks if an asynchronous command is currently pending.

    +
    Returns
    true if there is an active command awaiting an ACK, false if the library is idle.
    + +

    Definition at line 594 of file LD2410Async.cpp.

    +
    594 {
    +
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    +
    596}
    +
    +
    +
    + +

    ◆ begin()

    + +
    +
    + + + + + + + +
    bool LD2410Async::begin ()
    +
    + +

    Starts the background task that continuously reads data from the sensor.

    +

    This method creates a FreeRTOS task which parses all incoming frames and dispatches registered callbacks. Without calling begin(), the sensor cannot deliver detection results asynchronously.

    +
    Returns
    true if the task was successfully started, false if already running.
    + +

    Definition at line 1577 of file LD2410Async.cpp.

    +
    1577 {
    +
    1578 if (taskHandle == NULL) {
    + +
    1580 DEBUG_PRINTLN("Starting data processing task");
    +
    1581 taskStop = false;
    +
    1582
    +
    1583 BaseType_t result = xTaskCreate(
    +
    1584 [](void* param) {
    +
    1585 if (param) {
    +
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    +
    1587 }
    +
    1588 vTaskDelete(NULL);
    +
    1589 },
    +
    1590 "LD2410Task",
    +
    1591 4096,
    +
    1592 this,
    +
    1593 1,
    +
    1594 &taskHandle
    +
    1595 );
    +
    1596
    +
    1597 if (result == pdPASS) {
    +
    1598 return true;
    +
    1599 }
    +
    1600 else {
    + +
    1602 DEBUG_PRINTLN("Task creation failed");
    +
    1603 taskHandle = NULL;
    +
    1604 return false;
    +
    1605 }
    +
    1606 }
    + +
    1608 DEBUG_PRINTLN("Data processing task already active");
    +
    1609 return false;
    +
    1610}
    +
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    +
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    +
    +
    +
    + +

    ◆ beginAutoConfigAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::beginAutoConfigAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Starts the automatic configuration (auto-config) routine on the sensor.

    +

    Auto-config lets the radar adjust its internal thresholds and sensitivities for the current environment. This can take several seconds to complete and results in updated sensitivity values.

    +

    The progress and result can be checked with requestAutoConfigStatusAsync().

    +
    Note
    Requires config mode. This method will manage entering and exiting config mode automatically.
    +
    +Auto-config temporarily suspends normal detection reporting.
    +

    +Example: Run auto-config

    +
    radar.beginAutoConfigAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("Auto-config started.");
    +
    } else {
    +
    Serial.println("Failed to start auto-config.");
    +
    }
    +
    });
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +

    +Do:

    + +

    +Don’t:

    +
      +
    • Expect instant results — the sensor needs time to complete the process.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the command is acknowledged or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1042 of file LD2410Async.cpp.

    +
    1042 {
    + +
    1044 DEBUG_PRINTLN("Begin auto config");
    +
    1045
    +
    1046 if (asyncIsBusy()) return false;
    +
    1047
    +
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    +
    1049};
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    constexpr byte beginAutoConfigCommandData[6]
    Definition LD2410Defs.h:71
    +
    +
    +
    + +

    ◆ configureAllConfigSettingsAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureAllConfigSettingsAsync (const LD2410Types::ConfigData & configToWrite,
    bool writeAllConfigData,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Applies a full ConfigData struct to the LD2410.

    +

    If writeAllConfigData is true, the method will first fetch the current config, compare it with the provide Config data and then create a command sequence that will only update the changes config values. If writeAllConfigData is false, the method will write all values in the provided ConfigData to the sensor, regardless of whether they differ from the current config.

    +
    Note
    This is a high-level method that involves multiple commands (up to 18).
    +
    +Requires config mode. This method will manage entering and exiting config mode automatically (if config mode is not already active).
    +
    +If another async command is already pending, the command fails.
    +
    +Any members of ConfigData that are left at invalid values (e.g. enums set to NOT_SET) will cause the sequence to fail.
    +

    +Example: Clone, modify, and apply config

    +
    ConfigData cfg = radar.getConfigData(); // clone current config
    +
    cfg.noOneTimeout = 120; // change timeout
    +
    cfg.distanceGateMotionSensitivity[2] = 75;
    +
    +
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("All config applied successfully!");
    +
    }
    +
    });
    +

    +Do:

    +
      +
    • Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    • +
    • If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode. Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    • +
    +

    +Don’t:

    +
      +
    • Dont write all config data (writeAllConfigData=true) if not really necessary. This generates unnecessary wear on the sensors memory.
    • +
    • Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    • +
    +
    Parameters
    + + + + + +
    configToWriteThe configuration data to be applied.
    writeAllConfigDataIf true, all fields in configToWrite are applied. If false, changed values are written.
    callbackFunction with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData), executed when the sequence finishes (success/fail/timeout/cancel).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command sequence has been started, false otherwise.
    + +

    Definition at line 1355 of file LD2410Async.cpp.

    +
    1356{
    +
    1357
    + +
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    +
    1360
    +
    1361 if (asyncIsBusy()) return false;
    +
    1362
    +
    1363
    +
    1364 if (!configToWrite.isValid()) {
    + +
    1366 DEBUG_PRINTLN("configToWrite is invalid.");
    +
    1367 return false;
    +
    1368 }
    +
    1369
    +
    1370 configureAllConfigSettingsAsyncConfigActive = true;
    +
    1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
    +
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    +
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    +
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    +
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    +
    1376
    +
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    +
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    +
    1379 }
    +
    1380 else {
    +
    1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
    +
    1382 //If we save all changes anyway, no need to request current config data first
    +
    1383 return configureAllConfigSettingsAsyncWriteConfig();
    +
    1384 }
    +
    1385 else {
    +
    1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1387 }
    +
    1388 }
    +
    1389
    +
    1390}
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool isValid() const
    Validates the configuration data for correctness.
    +
    +
    +
    + +

    ◆ configureAuxControlSettingsAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureAuxControlSettingsAsync (LD2410Types::LightControl light_control,
    byte light_threshold,
    LD2410Types::OutputControl output_control,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the auxiliary control parameters (light and output pin).

    +

    This configures how the OUT pin behaves depending on light levels and presence detection. Typical use cases include controlling an external lamp or relay.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Both enums must be set to valid values (not NOT_SET).
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + + + + +
    lightControlLight control behavior (see LightControl enum).
    lightThresholdThreshold (0–255) used for light-based switching.
    outputControlOutput pin logic configuration (see OutputControl enum).
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1016 of file LD2410Async.cpp.

    +
    1019{
    + +
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    +
    1022 if (asyncIsBusy()) return false;
    +
    1023
    + +
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    +
    1026
    +
    1027 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1028}
    +
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    +
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    +
    +
    +
    + +

    ◆ configureBaudRateAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBaudRateAsync (byte baudRateSetting,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the UART baud rate of the sensor.

    +

    The new baud rate becomes active only after reboot. The ESP32’s Serial interface must also be reconfigured to the new baud rate after reboot.

    +
    Note
    Valid values are 1–8. Values outside range are rejected resp. method will fail.
    +
    +Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + + +
    baudRateSettingNumeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 894 of file LD2410Async.cpp.

    +
    896{
    + +
    898 DEBUG_PRINTLN("Set Baud Rate");
    +
    899
    +
    900 if (asyncIsBusy()) return false;
    +
    901
    +
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    +
    903 return false;
    +
    904
    +
    905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    +
    906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    +
    907
    +
    908 return sendConfigCommandAsync(cmd, callback, userData);
    +
    909}
    +
    bool buildBaudRateCommand(byte *out, byte baudRateSetting)
    +
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    +
    +
    +
    + +

    ◆ configureBaudRateAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBaudRateAsync (LD2410Types::Baudrate baudRate,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the baudrate of the serial port of the sensor.

    +

    The new baudrate will only become active after a reboot of the sensor. If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.

    +
    Note
    If another async command is pending, this call fails.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + + +
    baudrateA valid baud rate from the Baudrate enum.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 913 of file LD2410Async.cpp.

    +
    913 {
    +
    914
    +
    915 if (asyncIsBusy()) return false;
    +
    916
    +
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    918}
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    +
    +
    + +

    ◆ configureBluetoothPasswordAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBluetoothPasswordAsync (const char * password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Sets the password for bluetooth access to the sensor.

    +
    Parameters
    + + + + +
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 954 of file LD2410Async.cpp.

    +
    956{
    + +
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    +
    959 if (asyncIsBusy()) return false;
    +
    960
    + +
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    +
    963
    +
    964 return sendConfigCommandAsync(cmd, callback, userData);
    +
    965}
    +
    bool buildBluetoothPasswordCommand(byte *out, const char *password)
    +
    constexpr byte setBluetoothPasswordCommandData[10]
    Definition LD2410Defs.h:53
    +
    +
    +
    + +

    ◆ configureBluetoothPasswordAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureBluetoothPasswordAsync (const String & password,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Sets the password for bluetooth access to the sensor.

    +
    Parameters
    + + + + +
    passwordNew bluetooth password. Max 6. chars.
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 969 of file LD2410Async.cpp.

    +
    969 {
    +
    970
    +
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    972}
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    +
    +
    + +

    ◆ configureDefaultBluetoothPasswordAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configureDefaultBluetoothPasswordAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Resets the password for bluetooth access to the default value (HiLink)

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 975 of file LD2410Async.cpp.

    +
    975 {
    + +
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    +
    978 if (asyncIsBusy()) return false;
    +
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    +
    980}
    +
    +
    +
    + +

    ◆ configureDistanceGateSensitivityAsync() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceGateSensitivityAsync (byte gate,
    byte movingThreshold,
    byte stationaryThreshold,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures sensitivity thresholds for a single gate.

    +

    Updates both moving and stationary thresholds for the given gate index. If the gate index is greater than 8, all gates are updated instead.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + + +
    gateIndex of the gate (0–8). Values >8 apply to all gates.
    movingThresholdSensitivity for moving targets (0–100).
    stationaryThresholdSensitivity for stationary targets (0–100).
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 867 of file LD2410Async.cpp.

    +
    870{
    + +
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    +
    873
    +
    874 if (asyncIsBusy()) return false;
    +
    875
    + +
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    +
    878
    +
    879 return sendConfigCommandAsync(cmd, callback, userData);
    +
    880}
    +
    bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
    +
    constexpr byte distanceGateSensitivityConfigCommandData[0x16]
    Definition LD2410Defs.h:77
    +
    +
    +
    + +

    ◆ configureDistanceGateSensitivityAsync() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceGateSensitivityAsync (const byte movingThresholds[9],
    const byte stationaryThresholds[9],
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures sensitivity thresholds for all gates at once.

    +

    A sequence of commands will be sent, one for each gate. Threshold values are automatically clamped to 0–100.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + +
    movingThresholdsArray of 9 sensitivity values for moving targets (0–100).
    stationaryThresholdsArray of 9 sensitivity values for stationary targets (0–100).
    callbackCallback fired when all updates are acknowledged or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the sequence was started, false otherwise.
    + +

    Definition at line 845 of file LD2410Async.cpp.

    +
    848{
    + +
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    +
    851
    +
    852 if (asyncIsBusy()) return false;
    +
    853
    +
    854 if (!resetCommandSequence()) return false;
    +
    855
    +
    856 for (byte gate = 0; gate < 9; gate++) {
    + +
    858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    +
    859 if (!addCommandToSequence(cmd)) return false;
    +
    860 }
    +
    861
    +
    862 return executeCommandSequenceAsync(callback, userData);
    +
    863}
    +
    +
    +
    + +

    ◆ configureDistanceResolution75cmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configureDistanceResolution75cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution explicitly to 75 cm per gate.

    +

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 982 of file LD2410Async.cpp.

    +
    982 {
    + +
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    +
    985 if (asyncIsBusy()) return false;
    +
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    +
    987};
    +
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    +
    +
    +
    + +

    ◆ configureDistanceResolutionAsync()

    + +
    +
    + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureDistanceResolutionAsync (LD2410Types::DistanceResolution distanceResolution,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution of the radar.

    +

    The distance resolution defines the size of each distance gate and the maximum detection range:

      +
    • RESOLUTION_75CM → longer range, coarser detail.
    • +
    • RESOLUTION_20CM → shorter range, finer detail.
    • +
    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + + +
    distanceResolutionValue from the DistanceResolution enum. Must not be NOT_SET.
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false if invalid parameters or the library is busy.
    + +

    Definition at line 989 of file LD2410Async.cpp.

    +
    991{
    + +
    993 DEBUG_PRINTLN("Set Distance Resolution");
    +
    994 if (asyncIsBusy()) return false;
    +
    995
    +
    996 byte cmd[6];
    +
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    +
    998
    +
    999 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1000}
    +
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    +
    +
    +
    + +

    ◆ configureMaxGateAndNoOneTimeoutAsync()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync (byte maxMovingGate,
    byte maxStationaryGate,
    unsigned short noOneTimeout,
    AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the maximum detection gates and "no-one" timeout on the sensor.

    +

    This command updates:

      +
    • Maximum motion detection distance gate (2–8).
    • +
    • Maximum stationary detection distance gate (2–8).
    • +
    • Timeout duration (0–65535 seconds) until "no presence" is declared.
    • +
    +
    Note
    Requires config mode to be enabled. The method will internally enable/disable config mode if necessary.
    +
    +If another async command is pending, this call fails.
    +
    Parameters
    + + + + + + +
    maxMovingGateFurthest gate used for motion detection (2–8).
    maxStationaryGateFurthest gate used for stationary detection (2–8).
    noOneTimeoutTimeout in seconds until "no one" is reported (0–65535).
    callbackCallback fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise (busy state or invalid values).
    + +

    Definition at line 808 of file LD2410Async.cpp.

    +
    811{
    + +
    813 DEBUG_PRINTLN("Set Max Gate");
    +
    814 if (asyncIsBusy()) return false;
    +
    815
    +
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    +
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    +
    818 return sendConfigCommandAsync(cmd, callback, userData);
    +
    819 }
    +
    820 return false;
    +
    821}
    +
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    +
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    +
    +
    +
    + +

    ◆ configuresDistanceResolution20cmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::configuresDistanceResolution20cmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Configures the distance resolution explicitly to 20 cm per gate.

    +

    Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    +Fails if another async command is pending.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1002 of file LD2410Async.cpp.

    +
    1002 {
    + +
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    +
    1005 if (asyncIsBusy()) return false;
    +
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    +
    1007};
    +
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    +
    +
    +
    + +

    ◆ disableBluetoothAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::disableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Disables bluetooth.

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 939 of file LD2410Async.cpp.

    +
    939 {
    + +
    941 DEBUG_PRINTLN("Disable Bluetooth");
    +
    942 if (asyncIsBusy()) return false;
    +
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    944}
    +
    constexpr byte bluetoothSettingsOnCommandData[6]
    Definition LD2410Defs.h:47
    +
    +
    +
    + +

    ◆ disableConfigModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::disableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Disables config mode on the radar.

    +

    This should be called after finishing configuration, to return the sensor to normal detection operation.

    +
    Note
    If an async command is already pending (asyncIsBusy() == true), this command will not be sent.
    +
    Parameters
    + + + +
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 797 of file LD2410Async.cpp.

    +
    797 {
    +
    798 if (asyncIsBusy()) return false;
    +
    799 return disableConfigModeInternalAsync(callback, userData);
    +
    800}
    +
    +
    +
    + +

    ◆ disableEngineeringModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::disableEngineeringModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Disables engineering mode.

    +

    Returns sensor reporting to basic detection results only.

    +
    Note
    Requires config mode. Will be enabled automatically if not active.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 838 of file LD2410Async.cpp.

    +
    838 {
    + +
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    +
    841 if (asyncIsBusy()) return false;
    +
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    +
    843}
    +
    constexpr byte engineeringModeDisableCommandData[4]
    Definition LD2410Defs.h:62
    +
    +
    +
    + +

    ◆ disableInactivityHandling()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::disableInactivityHandling ()
    +
    +inline
    +
    + +

    Convenience method: disables inactivity handling.

    +

    Equivalent to calling setInactivityHandling(false).

    + +

    Definition at line 372 of file LD2410Async.h.

    +
    372{ setInactivityHandling(false); };
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    +
    +
    + +

    ◆ enableBluetoothAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableBluetoothAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables bluetooth.

    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 931 of file LD2410Async.cpp.

    +
    931 {
    + +
    933 DEBUG_PRINTLN("Enable Bluetooth");
    +
    934 if (asyncIsBusy()) return false;
    +
    935
    +
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    937}
    +
    +
    +
    + +

    ◆ enableConfigModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableConfigModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables config mode on the radar.

    +

    Config mode must be enabled before issuing most configuration commands. This command itself is asynchronous — the callback fires once the sensor acknowledges the mode switch.

    +
    Note
    If asyncIsBusy() is true, this command will not be sent.
    +
    +Normal detection data is suspended while config mode is active.
    +
    Parameters
    + + + +
    callbackCallback with signature void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false if blocked.
    + +

    Definition at line 786 of file LD2410Async.cpp.

    +
    786 {
    +
    787 if (asyncIsBusy()) return false;
    +
    788 return enableConfigModeInternalAsync(callback, userData);
    +
    789}
    +
    +
    +
    + +

    ◆ enableEngineeringModeAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::enableEngineeringModeAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Enables engineering mode.

    +

    In this mode, the sensor sends detailed per-gate signal values in addition to basic detection results.

    +
    Note
    Engineering mode is temporary and lost after power cycle.
    +
    +Requires config mode. Will be enabled automatically if not active.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 831 of file LD2410Async.cpp.

    +
    831 {
    + +
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    +
    834 if (asyncIsBusy()) return false;
    +
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    +
    836}
    +
    constexpr byte engineeringModeEnableCommandData[4]
    Definition LD2410Defs.h:59
    +
    +
    +
    + +

    ◆ enableInactivityHandling()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::enableInactivityHandling ()
    +
    +inline
    +
    + +

    Convenience method: enables inactivity handling.

    +

    Equivalent to calling setInactivityHandling(true).

    + +

    Definition at line 363 of file LD2410Async.h.

    +
    363{ setInactivityHandling(true); };
    +
    +
    +
    + +

    ◆ end()

    + +
    +
    + + + + + + + +
    bool LD2410Async::end ()
    +
    + +

    Stops the background task started by begin().

    +

    After calling end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

    +
    Returns
    true if the task was stopped, false if it was not active.
    + +

    Definition at line 1612 of file LD2410Async.cpp.

    +
    1612 {
    +
    1613 if (taskHandle != NULL) {
    + +
    1615 DEBUG_PRINTLN("Stopping data processing task");
    +
    1616 taskStop = true;
    +
    1617
    +
    1618 // Wait up to 200ms for graceful exit
    +
    1619 for (int i = 0; i < 20; i++) {
    +
    1620 if (taskHandle == NULL) {
    + +
    1622 DEBUG_PRINTLN("Task exited gracefully");
    +
    1623 return true;
    +
    1624 }
    +
    1625 vTaskDelay(1 / portTICK_PERIOD_MS);
    +
    1626 }
    +
    1627
    +
    1628 // If still not NULL, force delete
    + +
    1630 DEBUG_PRINTLN("Forcing task stop");
    +
    1631 vTaskDelete(taskHandle);
    +
    1632 taskHandle = NULL;
    +
    1633 return true;
    +
    1634 }
    +
    1635
    +
    1636 DEBUG_PRINTLN("Data processing task is not active");
    +
    1637 return false;
    +
    1638}
    +
    +
    +
    + +

    ◆ getAsyncCommandTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned long LD2410Async::getAsyncCommandTimeoutMs () const
    +
    +inline
    +
    + +

    Returns the current async command timeout.

    +
    Returns
    Timeout in milliseconds.
    + +

    Definition at line 666 of file LD2410Async.h.

    +
    666{ return asyncCommandTimeoutMs; }
    +
    +
    +
    + +

    ◆ getConfigData()

    + +
    +
    + + + + + + + +
    LD2410Types::ConfigData LD2410Async::getConfigData () const
    +
    + +

    Returns a clone of the current configuration data of the radar.

    +

    The returned struct contains the most recently requested or received configuration values, such as sensitivities, resolution, timeouts, and auxiliary settings.

    +

    Equivalent to directly accessing the public member configData, but provided for encapsulation and future-proofing.

    +
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Clone, modify, and write back

    +
    // Clone current config
    +
    ConfigData cfg = radar.getConfigData();
    +
    +
    // Modify locally
    +
    cfg.noOneTimeout = 60; // change timeout
    +
    cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    +
    +
    // Send modified config back to sensor
    +
    radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("Config updated successfully!");
    +
    }
    +
    });
    +

    +Do:

    +
      +
    • Use when you want a clone of the current config to adjust and send back.
    • +
    • Safely modify the struct without risking internal state corruption.
    • +
    +

    +Don’t:

    +
      +
    • Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    • +
    +
    Returns
    A copy of the current ConfigData.
    + +

    Definition at line 1451 of file LD2410Async.cpp.

    +
    1451 {
    +
    1452 return configData;
    +
    1453}
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    +
    +
    + +

    ◆ getConfigDataRef()

    + +
    +
    + + + + + +
    + + + + + + + +
    const LD2410Types::ConfigData & LD2410Async::getConfigDataRef () const
    +
    +inline
    +
    + +

    Access the current config data without making a copy.

    +

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    +
    Note
    Since this returns a reference to the internal data, the values may change when new configuration is received. Do not store the reference for long-term use.
    +
    +This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Efficient read access without cloning

    +
    const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    +
    Serial.print("Resolution: ");
    +
    Serial.println(static_cast<int>(cfg.distanceResolution));
    +

    +Do:

    +
      +
    • Use when you only want to inspect configuration quickly.
    • +
    • Use for efficient read-only access.
    • +
    +

    +Don’t:

    +
      +
    • Try to modify the returned struct (it’s const).
    • +
    • Keep the reference and assume it will remain valid forever.
    • +
    +
    Returns
    Const reference to the current ConfigData.
    + +

    Definition at line 619 of file LD2410Async.h.

    +
    619{ return configData; }
    +
    +
    +
    + +

    ◆ getDetectionData()

    + +
    +
    + + + + + + + +
    LD2410Types::DetectionData LD2410Async::getDetectionData () const
    +
    + +

    Returns a clone of the latest detection data from the radar.

    +

    The returned struct contains the most recently received frame, including target state, distances, signal strengths, and (if enabled) engineering mode per-gate data.

    +

    Equivalent to directly accessing the public member detectionData, but provided for encapsulation and future-proofing.

    +
    Note
    This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Access values from a clone

    +
    DetectionData data = radar.getDetectionData(); // makes a copy
    +
    if (data.targetState == TargetState::MOVING_TARGET) {
    +
    Serial.print("Moving target at distance: ");
    +
    Serial.println(data.movingTargetDistance);
    +
    }
    +

    +Do:

    +
      +
    • Use when you want a snapshot of the latest detection data.
    • +
    • Modify the returned struct freely without affecting the internal state.
    • +
    +

    +Don’t:

    +
      +
    • Expect this to fetch new data from the sensor (it only returns what was already received).
    • +
    +
    Returns
    A copy of the current DetectionData.
    + +

    Definition at line 1447 of file LD2410Async.cpp.

    +
    1447 {
    +
    1448 return detectionData;
    +
    1449}
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    +
    +
    + +

    ◆ getDetectionDataRef()

    + +
    +
    + + + + + +
    + + + + + + + +
    const LD2410Types::DetectionData & LD2410Async::getDetectionDataRef () const
    +
    +inline
    +
    + +

    Access the current detection data without making a copy.

    +

    This returns a const reference to the internal struct. It is efficient, but the data must not be modified directly. Use this if you only want to read values.

    +
    Note
    Since this returns a reference to the internal data, the values may change as new frames arrive. Do not store the reference for long-term use.
    +
    +This function will not query the sensor for data. It just returns the data that has already been received from the sensor.
    +

    +Example: Efficient read access without cloning

    +
    const DetectionData& data = radar.getDetectionDataRef(); // no copy
    +
    Serial.print("Stationary signal: ");
    +
    Serial.println(data.stationaryTargetSignal);
    +

    +Do:

    +
      +
    • Use when you only need to read values quickly and efficiently.
    • +
    • Use when printing or inspecting live data without keeping it.
    • +
    +

    +Don’t:

    +
      +
    • Try to modify the returned struct (it’s const).
    • +
    • Store the reference long-term (it may be updated at any time).
    • +
    +
    Returns
    Const reference to the current DetectionData.
    + +

    Definition at line 536 of file LD2410Async.h.

    +
    536{ return detectionData; }
    +
    +
    +
    + +

    ◆ getInactivityTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned long LD2410Async::getInactivityTimeoutMs () const
    +
    +inline
    +
    + +

    Returns the current inactivity timeout period.

    +
    Returns
    Timeout in milliseconds.
    + +

    Definition at line 405 of file LD2410Async.h.

    +
    405{ return inactivityHandlingTimeoutMs; };
    +
    +
    +
    + +

    ◆ isConfigModeEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isConfigModeEnabled () const
    +
    +inline
    +
    + +

    Detects if config mode is enabled.

    +
    Returns
    true if config mode is anabled, false if config mode is disabled
    + +

    Definition at line 724 of file LD2410Async.h.

    +
    724 {
    +
    725 return configModeEnabled;
    +
    726 };
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    +
    +
    + +

    ◆ isEngineeringModeEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isEngineeringModeEnabled () const
    +
    +inline
    +
    + +

    Detects if engineering mode is enabled.

    +
    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    + +

    Definition at line 776 of file LD2410Async.h.

    +
    776 {
    + +
    778 };
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    +
    +
    + +

    ◆ isInactivityHandlingEnabled()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool LD2410Async::isInactivityHandlingEnabled () const
    +
    +inline
    +
    + +

    Returns whether inactivity handling is currently enabled.

    +
    Returns
    true if inactivity handling is enabled, false otherwise.
    + +

    Definition at line 381 of file LD2410Async.h.

    +
    381{ return inactivityHandlingEnabled; };
    +
    +
    +
    + +

    ◆ rebootAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::rebootAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Reboots the sensor.

    +

    After reboot, the sensor stops responding for a few seconds. Config and engineering mode are reset.

    +
    Note
    The reboot of the sensor takes place after the ACK has been sent.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1433 of file LD2410Async.cpp.

    +
    1433 {
    +
    1434
    +
    1435
    + +
    1437 DEBUG_PRINTLN("Reboot");
    +
    1438
    +
    1439 if (asyncIsBusy()) return false;
    +
    1440
    +
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    +
    1442}
    +
    +
    +
    + +

    ◆ registerConfigChangedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerConfigChangedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration changes.

    +

    The callback is invoked whenever the sensor’s configuration has been successfully updated (e.g. after setting sensitivity).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 212 of file LD2410Async.cpp.

    +
    212 {
    +
    213 configChangedCallbackUserData = userData;
    +
    214 configChangedCallback = callback;
    +
    215}
    +
    +
    +
    + +

    ◆ registerConfigUpdateReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerConfigUpdateReceivedCallback (GenericCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for configuration data updates.

    +

    The callback is invoked whenever new configuration information has been received from the sensor (e.g. after requestGateParametersAsync()).

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 206 of file LD2410Async.cpp.

    +
    206 {
    +
    207
    +
    208 configUpdateReceivedReceivedCallbackUserData = userData;
    +
    209 configUpdateReceivedReceivedCallback = callback;
    +
    210}
    +
    +
    +
    + +

    ◆ registerDetectionDataReceivedCallback()

    + +
    +
    + + + + + + + + + + + +
    void LD2410Async::registerDetectionDataReceivedCallback (DetectionDataCallback callback,
    byte userData = 0 )
    +
    + +

    Registers a callback for new detection data.

    +

    The callback is invoked whenever a valid data frame is received from the radar, after detectionData has been updated.

    +
    Parameters
    + + + +
    callbackFunction pointer with signature void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    userDataOptional value that will be passed to the callback.
    +
    +
    + +

    Definition at line 201 of file LD2410Async.cpp.

    +
    201 {
    +
    202 detectionDataCallback = callback;
    +
    203 detectionDataCallbackUserData = userData;
    +
    204}
    +
    +
    +
    + +

    ◆ requestAllConfigSettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAllConfigSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests all configuration settings from the sensor.

    +

    This triggers a sequence of queries that retrieves and updates:

      +
    • Gate parameters (sensitivities, max gates, timeout).
    • +
    • Distance resolution setting.
    • +
    • Auxiliary light/output control settings.
    • +
    +

    The results are stored in configData, and the registerConfigUpdateReceivedCallback() is invoked after completion.

    +
    Note
    This is a high-level method that involves multiple commands.
    +
    +Requires config mode. This method will manage mode switching automatically.
    +
    +If another async command is already pending, the request fails.
    +

    +Example: Refresh config data

    +
    radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.println("All config data refreshed:");
    +
    sender->getConfigDataRef().print();
    +
    }
    +
    });
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    void print() const
    Debug helper: print configuration contents to Serial.
    +

    +Do:

    +
      +
    • Use this after connecting to ensure configData is fully populated.
    • +
    • Call before modifying config if you’re unsure of current values.
    • +
    +

    +Don’t:

    +
      +
    • Expect it to succeed if another async command is still running.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when all config data has been received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1082 of file LD2410Async.cpp.

    +
    1082 {
    + +
    1084 DEBUG_PRINTLN("Request all config data");
    +
    1085
    +
    1086 if (asyncIsBusy()) return false;
    +
    1087
    +
    1088 if (!resetCommandSequence()) return false;
    +
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    +
    1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
    +
    1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
    +
    1092
    +
    1093 return executeCommandSequenceAsync(callback, userData);
    +
    1094
    +
    1095}
    +
    constexpr byte requestDistanceResolutionCommandData[4]
    Definition LD2410Defs.h:31
    +
    constexpr byte requestAuxControlSettingsCommandData[4]
    Definition LD2410Defs.h:65
    +
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    +
    +
    +
    + +

    ◆ requestAllStaticDataAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAllStaticDataAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests all static information from the sensor.

    +

    This includes:

      +
    • Firmware version string.
    • +
    • Bluetooth MAC address (numeric and string form).
    • +
    +

    The values are written into the public members firmware, mac, and macString.

    +
    Note
    This is a high-level method that involves multiple commands.
    +
    +Requires config mode. Managed automatically by this method.
    +
    +If another async command is already pending, the request fails.
    +

    +Example: Retrieve firmware and MAC

    +
    radar.requestAllStaticDataAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    Serial.print("Firmware: ");
    +
    Serial.println(sender->firmware);
    +
    +
    Serial.print("MAC: ");
    +
    Serial.println(sender->macString);
    +
    }
    +
    });
    +
    String firmware
    Firmware version string of the radar.
    +
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +

    +Do:

    +
      +
    • Use after initialization to log firmware version and MAC.
    • +
    • Useful for debugging or inventory identification.
    • +
    +

    +Don’t:

    +
      +
    • Expect frequently changing data — this is static information.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when static data is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1067 of file LD2410Async.cpp.

    +
    1067 {
    + +
    1069 DEBUG_PRINTLN("Request all static data");
    +
    1070
    +
    1071 if (asyncIsBusy()) return false;
    +
    1072
    +
    1073
    +
    1074 if (!resetCommandSequence()) return false;
    +
    1075
    +
    1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
    +
    1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
    +
    1078
    +
    1079 return executeCommandSequenceAsync(callback, userData);
    +
    1080}
    +
    constexpr byte requestMacAddressCommandData[6]
    Definition LD2410Defs.h:25
    +
    constexpr byte requestFirmwareCommandData[4]
    Definition LD2410Defs.h:28
    +
    +
    +
    + +

    ◆ requestAutoConfigStatusAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAutoConfigStatusAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current status of the auto-config routine.

    +

    The status is written into the member variable autoConfigStatus:

      +
    • NOT_IN_PROGRESS → no auto-config running.
    • +
    • IN_PROGRESS → auto-config is currently running.
    • +
    • COMPLETED → auto-config finished (success or failure).
    • +
    +
    Note
    Requires config mode. This method will manage mode switching automatically.
    +
    +If another async command is already pending, this call fails.
    +

    +Example: Check auto-config status

    +
    radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    + +
    byte) {
    +
    if (result == AsyncCommandResult::SUCCESS) {
    +
    switch (sender->autoConfigStatus) {
    +
    case AutoConfigStatus::NOT_IN_PROGRESS:
    +
    Serial.println("Auto-config not running.");
    +
    break;
    +
    case AutoConfigStatus::IN_PROGRESS:
    +
    Serial.println("Auto-config in progress...");
    +
    break;
    +
    case AutoConfigStatus::COMPLETED:
    +
    Serial.println("Auto-config completed.");
    +
    break;
    +
    default:
    +
    Serial.println("Unknown auto-config status.");
    +
    }
    +
    } else {
    +
    Serial.println("Failed to request auto-config status.");
    +
    }
    +
    });
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +

    +Do:

    +
      +
    • Use this after beginAutoConfigAsync() to track progress.
    • +
    • Use autoConfigStatus for decision-making in your logic.
    • +
    +

    +Don’t:

    +
      +
    • Assume COMPLETED means success — thresholds should still be verified.
    • +
    +
    Parameters
    + + + +
    callbackCallback with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when the sensor replies or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1051 of file LD2410Async.cpp.

    +
    1051 {
    + +
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    +
    1054
    +
    1055 if (asyncIsBusy()) return false;
    +
    1056
    +
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    +
    1058}
    +
    constexpr byte requestAutoConfigStatusCommandData[4]
    Definition LD2410Defs.h:74
    +
    +
    +
    + +

    ◆ requestAuxControlSettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestAuxControlSettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current auxiliary control settings.

    +

    Fills configData.lightControl, configData.lightThreshold, and configData.outputControl.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData). Fired when ACK is received or on failure/timeout.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1032 of file LD2410Async.cpp.

    +
    1032 {
    + +
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    +
    1035
    +
    1036 if (asyncIsBusy()) return false;
    +
    1037
    +
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    +
    1039}
    +
    +
    +
    + +

    ◆ requestBluetoothMacAddressAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestBluetoothMacAddressAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the bluetooth mac address.

    +
    Note
    The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    +
    Parameters
    + + + +
    callbackCallback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    userDataOptional value that will be passed to the callback function.
    +
    +
    +
    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    + +

    Definition at line 947 of file LD2410Async.cpp.

    +
    947 {
    + +
    949 DEBUG_PRINTLN("Request Mac Address");
    +
    950 if (asyncIsBusy()) return false;
    +
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    +
    952}
    +
    +
    +
    + +

    ◆ requestDistanceResolutioncmAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestDistanceResolutioncmAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current distance resolution setting from the sensor.

    +

    The result is written into configData.distanceResolution.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackFunction pointer with signature: void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 1009 of file LD2410Async.cpp.

    +
    1009 {
    + +
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    +
    1012 if (asyncIsBusy()) return false;
    +
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    +
    1014}
    +
    +
    +
    + +

    ◆ requestFirmwareAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestFirmwareAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the firmware version of the sensor.

    +

    Populates the firmware string when the ACK response arrives.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    Parameters
    + + + +
    callbackCallback fired when firmware info is received.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 884 of file LD2410Async.cpp.

    +
    884 {
    + +
    886 DEBUG_PRINTLN("Request Firmware");
    +
    887
    +
    888 if (asyncIsBusy()) return false;
    +
    889
    +
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    +
    891}
    +
    +
    +
    + +

    ◆ requestGateParametersAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::requestGateParametersAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Requests the current gate parameters from the sensor.

    +

    Retrieves sensitivities, max gates, and timeout settings, which will be written into configData.

    +
    Note
    Requires config mode. The method will manage mode switching if needed.
    +
    +If an async command is already pending, the request is rejected.
    +
    Parameters
    + + + +
    callbackCallback fired when data is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 824 of file LD2410Async.cpp.

    +
    824 {
    + +
    826 DEBUG_PRINTLN("Request Gate Parameters");
    +
    827 if (asyncIsBusy()) return false;
    +
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    +
    829}
    +
    +
    +
    + +

    ◆ restoreFactorySettingsAsync()

    + +
    +
    + + + + + + + + + + + +
    bool LD2410Async::restoreFactorySettingsAsync (AsyncCommandCallback callback,
    byte userData = 0 )
    +
    + +

    Restores factory settings of the sensor.

    +

    Restored settings only become active after a reboot.

    +
    Note
    Requires config mode. Will be managed automatically.
    +
    +After execution, call rebootAsync() to activate changes.
    +
    Parameters
    + + + +
    callbackCallback fired when ACK is received or on failure.
    userDataOptional value passed to the callback.
    +
    +
    +
    Returns
    true if the command was sent, false otherwise.
    + +

    Definition at line 921 of file LD2410Async.cpp.

    +
    921 {
    + +
    923 DEBUG_PRINTLN("Restore Factory Settings");
    +
    924
    +
    925 if (asyncIsBusy()) return false;
    +
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    +
    927}
    +
    constexpr byte restoreFactorSettingsCommandData[4]
    Definition LD2410Defs.h:41
    +
    +
    +
    + +

    ◆ setAsyncCommandTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::setAsyncCommandTimeoutMs (unsigned long timeoutMs)
    +
    +inline
    +
    + +

    Sets the timeout for async command callbacks.

    +

    #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.

    +
    Parameters
    + + +
    timeoutMsTimeout in milliseconds (default 6000 ms).
    +
    +
    + +

    Definition at line 657 of file LD2410Async.h.

    +
    657{ asyncCommandTimeoutMs = timeoutMs; }
    +
    +
    +
    + +

    ◆ setInactivityHandling()

    + +
    +
    + + + + + + + +
    void LD2410Async::setInactivityHandling (bool enable)
    +
    + +

    Enables or disables automatic inactivity handling of the sensor.

    +

    When inactivity handling is enabled, the library continuously monitors the time since the last activity (received data or command ACK). If no activity is detected for a longer period (defined by activityTimeoutMs), the library will attempt to recover the sensor automatically:

      +
    1. It first tries to exit config mode (even if configModeEnabled is false).
    2. +
    3. If no activity is restored within 5 seconds after leaving config mode, the library reboots the sensor.
    4. +
    +

    This helps recover the sensor from rare cases where it gets "stuck" in config mode or stops sending data.

    +
    Parameters
    + + +
    enablePass true to enable inactivity handling, false to disable it.
    +
    +
    + +

    Definition at line 1521 of file LD2410Async.cpp.

    +
    1521 {
    +
    1522 inactivityHandlingEnabled = enable;
    +
    1523}
    +
    +
    +
    + +

    ◆ setInactivityTimeoutMs()

    + +
    +
    + + + + + +
    + + + + + + + +
    void LD2410Async::setInactivityTimeoutMs (unsigned long timeoutMs)
    +
    +inline
    +
    + +

    Sets the timeout period for inactivity handling.

    +

    If no data or command ACK is received within this period, the library will attempt to recover the sensor as described in setInactivityHandling().

    +

    Default is 60000 ms (1 minute).

    +
    Parameters
    + + +
    timeoutMsTimeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    +
    +
    + +

    Definition at line 396 of file LD2410Async.h.

    +
    396{ inactivityHandlingTimeoutMs = timeoutMs; };
    +
    +
    +
    +

    Member Data Documentation

    + +

    ◆ autoConfigStatus

    + +
    +
    + + + + +
    LD2410Types::AutoConfigStatus LD2410Async::autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET
    +
    + +

    Current status of the auto-configuration routine.

    +

    Updated by requestAutoConfigStatusAsync().

    + +

    Definition at line 272 of file LD2410Async.h.

    + +
    +
    + +

    ◆ bufferSize

    + +
    +
    + + + + +
    unsigned long LD2410Async::bufferSize = 0
    +
    + +

    Buffer size reported by the radar protocol.

    +

    Set when entering config mode. Typically not required by users unless debugging low-level protocol behavior.

    + +

    Definition at line 206 of file LD2410Async.h.

    + +
    +
    + +

    ◆ configData

    + +
    +
    + + + + +
    LD2410Types::ConfigData LD2410Async::configData
    +
    + +

    Current configuration parameters of the radar.

    +

    Filled when configuration query commands are issued (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.

    +

    Structure will contain only uninitilaized data if config data is not queried explicitly.

    + +

    Definition at line 184 of file LD2410Async.h.

    + +
    +
    + +

    ◆ configModeEnabled

    + +
    +
    + + + + +
    bool LD2410Async::configModeEnabled = false
    +
    + +

    True if the sensor is currently in config mode.

    +

    Config mode must be enabled using enableConfigModeAsync() before sending configuration commands. After sending config commands, always disable the config mode using disableConfigModeAsync(), otherwiese the radar will not send any detection data.

    + +

    Definition at line 217 of file LD2410Async.h.

    + +
    +
    + +

    ◆ detectionData

    + +
    +
    + + + + +
    LD2410Types::DetectionData LD2410Async::detectionData
    +
    + +

    Latest detection results from the radar.

    +

    Updated automatically whenever new data frames are received. Use registerDetectionDataReceivedCallback() to be notified whenever this struct changes. Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.

    + +

    Definition at line 169 of file LD2410Async.h.

    + +
    +
    + +

    ◆ engineeringModeEnabled

    + +
    +
    + + + + +
    bool LD2410Async::engineeringModeEnabled = false
    +
    + +

    True if the sensor is currently in engineering mode.

    +

    In engineering mode, the radar sends detailed per-gate signal data in addition to basic detection data.

    +

    Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.

    + +

    Definition at line 230 of file LD2410Async.h.

    + +
    +
    + +

    ◆ firmware

    + +
    +
    + + + + +
    String LD2410Async::firmware = ""
    +
    + +

    Firmware version string of the radar.

    +

    Populated by requestFirmwareAsync(). Format is usually "major.minor.build".

    + +

    Definition at line 241 of file LD2410Async.h.

    + +
    +
    + +

    ◆ mac

    + +
    +
    + + + + +
    byte LD2410Async::mac[6]
    +
    + +

    MAC address of the radar’s Bluetooth module (if available).

    +

    Populated by requestBluetoothMacAddressAsync().

    + +

    Definition at line 251 of file LD2410Async.h.

    + +
    +
    + +

    ◆ macString

    + +
    +
    + + + + +
    String LD2410Async::macString = ""
    +
    + +

    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").

    +

    Populated by requestBluetoothMacAddressAsync().

    + +

    Definition at line 261 of file LD2410Async.h.

    + +
    +
    + +

    ◆ protocolVersion

    + +
    +
    + + + + +
    unsigned long LD2410Async::protocolVersion = 0
    +
    + +

    Protocol version reported by the radar.

    +

    This value is set when entering config mode. It can be useful for compatibility checks between firmware and library.

    + +

    Definition at line 195 of file LD2410Async.h.

    + +
    +
    +
    The documentation for this class was generated from the following files: diff --git a/docu/classLD2410Async.js b/docu/classLD2410Async.js index f047969..b071293 100644 --- a/docu/classLD2410Async.js +++ b/docu/classLD2410Async.js @@ -1,74 +1,74 @@ var classLD2410Async = [ - [ "AsyncCommandCallback", "group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603", null ], - [ "DetectionDataCallback", "group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81", null ], - [ "GenericCallback", "group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383", null ], - [ "AsyncCommandResult", "group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab", [ - [ "SUCCESS", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], - [ "FAILED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], - [ "TIMEOUT", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], - [ "CANCELED", "group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] + [ "AsyncCommandCallback", "classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603", null ], + [ "DetectionDataCallback", "classLD2410Async.html#a19278199112e9358e96a192056e58e81", null ], + [ "GenericCallback", "classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383", null ], + [ "AsyncCommandResult", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab", [ + [ "SUCCESS", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419", null ], + [ "TIMEOUT", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff", null ], + [ "CANCELED", "classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926", null ] ] ], - [ "LD2410Async", "group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900", null ], - [ "asyncCancel", "group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1", null ], - [ "asyncIsBusy", "group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153", null ], - [ "begin", "group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024", null ], - [ "beginAutoConfigAsync", "group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc", null ], - [ "configureAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede", null ], - [ "configureAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd", null ], - [ "configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], - [ "configureBaudRateAsync", "group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a", null ], - [ "configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22", null ], - [ "configureBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266", null ], - [ "configureDefaultBluetoothPasswordAsync", "group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], - [ "configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213", null ], - [ "configureDistanceGateSensitivityAsync", "group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38", null ], - [ "configureDistanceResolution75cmAsync", "group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82", null ], - [ "configureDistanceResolutionAsync", "group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250", null ], - [ "configureMaxGateAndNoOneTimeoutAsync", "group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a", null ], - [ "configuresDistanceResolution20cmAsync", "group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c", null ], - [ "disableBluetoothAsync", "group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862", null ], - [ "disableConfigModeAsync", "group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c", null ], - [ "disableEngineeringModeAsync", "group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3", null ], - [ "disableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2", null ], - [ "enableBluetoothAsync", "group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973", null ], - [ "enableConfigModeAsync", "group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9", null ], - [ "enableEngineeringModeAsync", "group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], - [ "enableInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3", null ], - [ "end", "group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54", null ], - [ "getAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a", null ], - [ "getConfigData", "group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5", null ], - [ "getConfigDataRef", "group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13", null ], - [ "getDetectionData", "group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50", null ], - [ "getDetectionDataRef", "group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090", null ], - [ "getInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f", null ], - [ "isConfigModeEnabled", "group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48", null ], - [ "isEngineeringModeEnabled", "group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19", null ], - [ "isInactivityHandlingEnabled", "group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6", null ], - [ "rebootAsync", "group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235", null ], - [ "registerConfigChangedCallback", "group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9", null ], - [ "registerConfigUpdateReceivedCallback", "group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285", null ], - [ "registerDetectionDataReceivedCallback", "group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282", null ], - [ "requestAllConfigSettingsAsync", "group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38", null ], - [ "requestAllStaticDataAsync", "group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6", null ], - [ "requestAutoConfigStatusAsync", "group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6", null ], - [ "requestAuxControlSettingsAsync", "group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb", null ], - [ "requestBluetoothMacAddressAsync", "group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be", null ], - [ "requestDistanceResolutioncmAsync", "group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046", null ], - [ "requestFirmwareAsync", "group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21", null ], - [ "requestGateParametersAsync", "group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6", null ], - [ "restoreFactorySettingsAsync", "group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659", null ], - [ "setAsyncCommandTimeoutMs", "group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325", null ], - [ "setInactivityHandling", "group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76", null ], - [ "setInactivityTimeoutMs", "group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4", null ], - [ "autoConfigStatus", "group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694", null ], - [ "bufferSize", "group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1", null ], - [ "configData", "group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02", null ], - [ "configModeEnabled", "group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7", null ], - [ "detectionData", "group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8", null ], - [ "engineeringModeEnabled", "group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7", null ], - [ "firmware", "group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf", null ], - [ "mac", "group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e", null ], - [ "macString", "group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1", null ], - [ "protocolVersion", "group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b", null ] + [ "LD2410Async", "classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900", null ], + [ "asyncCancel", "classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1", null ], + [ "asyncIsBusy", "classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153", null ], + [ "begin", "classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024", null ], + [ "beginAutoConfigAsync", "classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc", null ], + [ "configureAllConfigSettingsAsync", "classLD2410Async.html#a509170bfc50580131d0c72f5c91daede", null ], + [ "configureAuxControlSettingsAsync", "classLD2410Async.html#a90e3bc56482783249d966a670310bffd", null ], + [ "configureBaudRateAsync", "classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c", null ], + [ "configureBaudRateAsync", "classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a", null ], + [ "configureBluetoothPasswordAsync", "classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22", null ], + [ "configureBluetoothPasswordAsync", "classLD2410Async.html#abfe79850fa3e040a12de72ea99747266", null ], + [ "configureDefaultBluetoothPasswordAsync", "classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50", null ], + [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a9493caef9e22a89445741da019b99213", null ], + [ "configureDistanceGateSensitivityAsync", "classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38", null ], + [ "configureDistanceResolution75cmAsync", "classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82", null ], + [ "configureDistanceResolutionAsync", "classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250", null ], + [ "configureMaxGateAndNoOneTimeoutAsync", "classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a", null ], + [ "configuresDistanceResolution20cmAsync", "classLD2410Async.html#a01705b527bc80949417de15b6e95140c", null ], + [ "disableBluetoothAsync", "classLD2410Async.html#addcbab1709f2a80571563609f4a23862", null ], + [ "disableConfigModeAsync", "classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c", null ], + [ "disableEngineeringModeAsync", "classLD2410Async.html#a377464026350140b0277369a13e8c1d3", null ], + [ "disableInactivityHandling", "classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2", null ], + [ "enableBluetoothAsync", "classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973", null ], + [ "enableConfigModeAsync", "classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9", null ], + [ "enableEngineeringModeAsync", "classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d", null ], + [ "enableInactivityHandling", "classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3", null ], + [ "end", "classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54", null ], + [ "getAsyncCommandTimeoutMs", "classLD2410Async.html#a93962bd109f67775ea3420596207b23a", null ], + [ "getConfigData", "classLD2410Async.html#a54388c929cea610f92891def29db66a5", null ], + [ "getConfigDataRef", "classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13", null ], + [ "getDetectionData", "classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50", null ], + [ "getDetectionDataRef", "classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090", null ], + [ "getInactivityTimeoutMs", "classLD2410Async.html#a74138af198ac827349a25e122277803f", null ], + [ "isConfigModeEnabled", "classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48", null ], + [ "isEngineeringModeEnabled", "classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19", null ], + [ "isInactivityHandlingEnabled", "classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6", null ], + [ "rebootAsync", "classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235", null ], + [ "registerConfigChangedCallback", "classLD2410Async.html#a714e62534394a52243f8f50fd58726f9", null ], + [ "registerConfigUpdateReceivedCallback", "classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285", null ], + [ "registerDetectionDataReceivedCallback", "classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282", null ], + [ "requestAllConfigSettingsAsync", "classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38", null ], + [ "requestAllStaticDataAsync", "classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6", null ], + [ "requestAutoConfigStatusAsync", "classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6", null ], + [ "requestAuxControlSettingsAsync", "classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb", null ], + [ "requestBluetoothMacAddressAsync", "classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be", null ], + [ "requestDistanceResolutioncmAsync", "classLD2410Async.html#a3260f74672079a7200f210e4ffde1046", null ], + [ "requestFirmwareAsync", "classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21", null ], + [ "requestGateParametersAsync", "classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6", null ], + [ "restoreFactorySettingsAsync", "classLD2410Async.html#aadb841697a992c1bf203944211bd8659", null ], + [ "setAsyncCommandTimeoutMs", "classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325", null ], + [ "setInactivityHandling", "classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76", null ], + [ "setInactivityTimeoutMs", "classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4", null ], + [ "autoConfigStatus", "classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694", null ], + [ "bufferSize", "classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1", null ], + [ "configData", "classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02", null ], + [ "configModeEnabled", "classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7", null ], + [ "detectionData", "classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8", null ], + [ "engineeringModeEnabled", "classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7", null ], + [ "firmware", "classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf", null ], + [ "mac", "classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e", null ], + [ "macString", "classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1", null ], + [ "protocolVersion", "classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b", null ] ]; \ No newline at end of file diff --git a/docu/doxygen_crawl.html b/docu/doxygen_crawl.html index eb1c06e..6fa9a1f 100644 --- a/docu/doxygen_crawl.html +++ b/docu/doxygen_crawl.html @@ -18,7 +18,7 @@ - + @@ -29,18 +29,7 @@ - - - - - - - - - - - - + @@ -57,7 +46,7 @@ - + @@ -147,6 +136,7 @@ + @@ -214,46 +204,116 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -269,123 +329,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -450,6 +393,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -489,6 +467,5 @@ - diff --git a/docu/functions.html b/docu/functions.html index a9872a0..f1c5fa3 100644 --- a/docu/functions.html +++ b/docu/functions.html @@ -100,45 +100,45 @@
    Here is a list of all class members with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    diff --git a/docu/functions_func.html b/docu/functions_func.html index f5089ab..2b7980f 100644 --- a/docu/functions_func.html +++ b/docu/functions_func.html @@ -100,69 +100,69 @@
    Here is a list of all functions with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    - e -

    - g -

    - i -

    - l -

    @@ -172,26 +172,26 @@

    - p -

    diff --git a/docu/functions_type.html b/docu/functions_type.html index 9ae3514..59e5475 100644 --- a/docu/functions_type.html +++ b/docu/functions_type.html @@ -98,9 +98,9 @@
    Here is a list of all typedefs with links to the classes they belong to:
    diff --git a/docu/functions_vars.html b/docu/functions_vars.html index 7da165d..f748caf 100644 --- a/docu/functions_vars.html +++ b/docu/functions_vars.html @@ -100,24 +100,24 @@
    Here is a list of all variables with links to the classes they belong to:

    - a -

    - b -

    - c -

    - d -

    diff --git a/docu/menudata.js b/docu/menudata.js index 6032c01..290980d 100644 --- a/docu/menudata.js +++ b/docu/menudata.js @@ -24,7 +24,7 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, -{text:"Topics",url:"topics.html"}, +{text:"Related Pages",url:"pages.html"}, {text:"Namespaces",url:"namespaces.html",children:[ {text:"Namespace List",url:"namespaces.html"}, {text:"Namespace Members",url:"namespacemembers.html",children:[ diff --git a/docu/namespaceLD2410CommandBuilder.html b/docu/namespaceLD2410CommandBuilder.html index 8404ee4..74858f9 100644 --- a/docu/namespaceLD2410CommandBuilder.html +++ b/docu/namespaceLD2410CommandBuilder.html @@ -109,9 +109,9 @@   bool buildGateSensitivityCommand (byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)   -bool buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution) +bool buildDistanceResolutionCommand (byte *out, LD2410Types::DistanceResolution resolution)   -bool buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl) +bool buildAuxControlCommand (byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)   bool buildBaudRateCommand (byte *out, byte baudRateSetting)   @@ -136,7 +136,7 @@

    - LD2410Types::LightControl lightControl, + LD2410Types::LightControl lightControl, @@ -146,7 +146,7 @@

    - LD2410Types::OutputControl outputControl ) + LD2410Types::OutputControl outputControl ) @@ -161,17 +161,17 @@

    65 memcpy(out, LD2410Defs::setAuxControlSettingCommandData,
    67
    -
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    -
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    +
    68 if (lightControl == LD2410Types::LightControl::NOT_SET) return false;
    +
    69 if (outputControl == LD2410Types::OutputControl::NOT_SET) return false;
    70
    71 out[4] = byte(lightControl);
    72 out[5] = lightThreshold;
    73 out[6] = byte(outputControl);
    74 return true;
    75 }
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @@ -278,7 +278,7 @@

    - LD2410Types::DistanceResolution resolution ) + LD2410Types::DistanceResolution resolution ) @@ -290,11 +290,11 @@

    Definition at line 49 of file LD2410CommandBuilder.h.

    61 return true;
    62 }
    -
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    -
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    diff --git a/docu/namespaceLD2410Types.html b/docu/namespaceLD2410Types.html index 4f3e90f..231ef52 100644 --- a/docu/namespaceLD2410Types.html +++ b/docu/namespaceLD2410Types.html @@ -115,63 +115,370 @@ - - - - + + - - - + + - - - + + - - - + + - - - + + - - + +

    Enumerations

    enum class  TargetState {
    -  TargetState::NO_TARGET = 0 -, TargetState::MOVING_TARGET = 1 -, TargetState::STATIONARY_TARGET = 2 -, TargetState::MOVING_AND_STATIONARY_TARGET = 3 +
    enum class  TargetState {
    +  NO_TARGET = 0 +, MOVING_TARGET = 1 +, STATIONARY_TARGET = 2 +, MOVING_AND_STATIONARY_TARGET = 3 ,
    -  TargetState::AUTOCONFIG_IN_PROGRESS = 4 -, TargetState::AUTOCONFIG_SUCCESS = 5 -, TargetState::AUTOCONFIG_FAILED = 6 +  AUTOCONFIG_IN_PROGRESS = 4 +, AUTOCONFIG_SUCCESS = 5 +, AUTOCONFIG_FAILED = 6
    }
     Represents the current target detection state reported by the radar. More...
     
    enum class  LightControl { LightControl::NOT_SET = -1 -, LightControl::NO_LIGHT_CONTROL = 0 -, LightControl::LIGHT_BELOW_THRESHOLD = 1 -, LightControl::LIGHT_ABOVE_THRESHOLD = 2 +
     Represents the current target detection state reported by the radar. More...
     
    enum class  LightControl { NOT_SET = -1 +, NO_LIGHT_CONTROL = 0 +, LIGHT_BELOW_THRESHOLD = 1 +, LIGHT_ABOVE_THRESHOLD = 2 }
     Light-dependent control status of the auxiliary output. More...
     
    enum class  OutputControl { OutputControl::NOT_SET = -1 -, OutputControl::DEFAULT_LOW_DETECTED_HIGH = 0 -, OutputControl::DEFAULT_HIGH_DETECTED_LOW = 1 +
     Light-dependent control status of the auxiliary output. More...
     
    enum class  OutputControl { NOT_SET = -1 +, DEFAULT_LOW_DETECTED_HIGH = 0 +, DEFAULT_HIGH_DETECTED_LOW = 1 }
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  AutoConfigStatus { AutoConfigStatus::NOT_SET = -1 -, AutoConfigStatus::NOT_IN_PROGRESS -, AutoConfigStatus::IN_PROGRESS -, AutoConfigStatus::COMPLETED +
     Logic level behavior of the auxiliary output pin. More...
     
    enum class  AutoConfigStatus { NOT_SET = -1 +, NOT_IN_PROGRESS +, IN_PROGRESS +, COMPLETED }
     State of the automatic threshold configuration routine. More...
     
    enum class  Baudrate {
    -  Baudrate::BAUDRATE_9600 = 1 -, Baudrate::BAUDRATE_19200 = 2 -, Baudrate::BAUDRATE_38400 = 3 -, Baudrate::BAUDRATE_57600 = 4 +
     State of the automatic threshold configuration routine. More...
     
    enum class  Baudrate {
    +  BAUDRATE_9600 = 1 +, BAUDRATE_19200 = 2 +, BAUDRATE_38400 = 3 +, BAUDRATE_57600 = 4 ,
    -  Baudrate::BAUDRATE_115200 = 5 -, Baudrate::BAUDRATE_230500 = 6 -, Baudrate::BAUDRATE_256000 = 7 -, Baudrate::BAUDRATE_460800 = 8 +  BAUDRATE_115200 = 5 +, BAUDRATE_230500 = 6 +, BAUDRATE_256000 = 7 +, BAUDRATE_460800 = 8
    }
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  DistanceResolution { DistanceResolution::NOT_SET = -1 -, DistanceResolution::RESOLUTION_75CM = 0 -, DistanceResolution::RESOLUTION_20CM = 1 +
     Supported baud rates for the sensor’s UART interface. More...
     
    enum class  DistanceResolution { NOT_SET = -1 +, RESOLUTION_75CM = 0 +, RESOLUTION_20CM = 1 }
     Distance resolution per gate for detection. More...
     
     Distance resolution per gate for detection. More...
     

    Detailed Description

    @ brief All enums, structs, and type helpers for LD2410Async

    -
    +

    Enumeration Type Documentation

    + +

    ◆ AutoConfigStatus

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::AutoConfigStatus
    +
    +strong
    +
    + +

    State of the automatic threshold configuration routine.

    +

    Auto-config adjusts the sensitivity thresholds for optimal detection in the current environment. This process may take several seconds.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Status not yet retrieved.

    +
    NOT_IN_PROGRESS 

    Auto-configuration not running.

    +
    IN_PROGRESS 

    Auto-configuration is currently running.

    +
    COMPLETED 

    Auto-configuration finished (success or failure).

    +
    + +

    Definition at line 168 of file LD2410Types.h.

    +
    168 {
    +
    169 NOT_SET = -1, ///< Status not yet retrieved.
    +
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    173 };
    +
    @ COMPLETED
    Auto-configuration finished (success or failure).
    +
    @ IN_PROGRESS
    Auto-configuration is currently running.
    +
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    +
    +
    + +

    ◆ Baudrate

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::Baudrate
    +
    +strong
    +
    + +

    Supported baud rates for the sensor’s UART interface.

    +

    These values correspond to the configuration commands accepted by the LD2410. After changing the baud rate, a sensor reboot is required, and the ESP32’s UART must be reconfigured to match.

    + + + + + + + + + +
    Enumerator
    BAUDRATE_9600 

    9600 baud.

    +
    BAUDRATE_19200 

    19200 baud.

    +
    BAUDRATE_38400 

    38400 baud.

    +
    BAUDRATE_57600 

    57600 baud.

    +
    BAUDRATE_115200 

    115200 baud.

    +
    BAUDRATE_230500 

    230400 baud.

    +
    BAUDRATE_256000 

    256000 baud (factory default).

    +
    BAUDRATE_460800 

    460800 baud (high-speed).

    +
    + +

    Definition at line 205 of file LD2410Types.h.

    +
    205 {
    +
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    214 };
    +
    @ BAUDRATE_57600
    57600 baud.
    +
    @ BAUDRATE_38400
    38400 baud.
    +
    @ BAUDRATE_230500
    230400 baud.
    +
    @ BAUDRATE_115200
    115200 baud.
    +
    @ BAUDRATE_256000
    256000 baud (factory default).
    +
    @ BAUDRATE_19200
    19200 baud.
    +
    @ BAUDRATE_9600
    9600 baud.
    +
    @ BAUDRATE_460800
    460800 baud (high-speed).
    +
    +
    +
    + +

    ◆ DistanceResolution

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::DistanceResolution
    +
    +strong
    +
    + +

    Distance resolution per gate for detection.

    +

    The resolution defines how fine-grained the distance measurement is:

      +
    • RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    • +
    • RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    • +
    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    RESOLUTION_75CM 

    Each gate ~0.75 m, max range ~6 m.

    +
    RESOLUTION_20CM 

    Each gate ~0.20 m, max range ~1.8 m.

    +
    + +

    Definition at line 227 of file LD2410Types.h.

    +
    227 {
    +
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    +
    231 };
    +
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    +
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    +
    +
    +
    + +

    ◆ LightControl

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::LightControl
    +
    +strong
    +
    + +

    Light-dependent control status of the auxiliary output.

    +

    The radar sensor can control an external output based on ambient light level in combination with presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    NO_LIGHT_CONTROL 

    Output is not influenced by light levels.

    +
    LIGHT_BELOW_THRESHOLD 

    Condition: light < threshold.

    +
    LIGHT_ABOVE_THRESHOLD 

    Condition: light ≥ threshold.

    +
    + +

    Definition at line 97 of file LD2410Types.h.

    +
    97 {
    +
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    102 };
    +
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    +
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    +
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    +
    +
    +
    + +

    ◆ OutputControl

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::OutputControl
    +
    +strong
    +
    + +

    Logic level behavior of the auxiliary output pin.

    +

    Determines whether the output pin is active-high or active-low in relation to presence detection.

    +

    Use NOT_SET only as a placeholder; it is not a valid configuration value.

    + + + + +
    Enumerator
    NOT_SET 

    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).

    +
    DEFAULT_LOW_DETECTED_HIGH 

    Default low, goes HIGH when detection occurs.

    +
    DEFAULT_HIGH_DETECTED_LOW 

    Default high, goes LOW when detection occurs.

    +
    + +

    Definition at line 134 of file LD2410Types.h.

    +
    134 {
    +
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    138 };
    +
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    +
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    +
    +
    +
    + +

    ◆ TargetState

    + +
    +
    + + + + + +
    + + + + +
    enum class LD2410Types::TargetState
    +
    +strong
    +
    + +

    Represents the current target detection state reported by the radar.

    +

    Values can be combined internally by the sensor depending on its signal evaluation logic. The AUTO-CONFIG states are special values that are only reported while the sensor is running its self-calibration routine.

    + + + + + + + + +
    Enumerator
    NO_TARGET 

    No moving or stationary target detected.

    +
    MOVING_TARGET 

    A moving target has been detected.

    +
    STATIONARY_TARGET 

    A stationary target has been detected.

    +
    MOVING_AND_STATIONARY_TARGET 

    Both moving and stationary targets detected.

    +
    AUTOCONFIG_IN_PROGRESS 

    Auto-configuration routine is running.

    +
    AUTOCONFIG_SUCCESS 

    Auto-configuration completed successfully.

    +
    AUTOCONFIG_FAILED 

    Auto-configuration failed.

    +
    + +

    Definition at line 21 of file LD2410Types.h.

    +
    21 {
    +
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    29 };
    +
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    +
    @ NO_TARGET
    No moving or stationary target detected.
    +
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    +
    @ AUTOCONFIG_FAILED
    Auto-configuration failed.
    +
    @ STATIONARY_TARGET
    A stationary target has been detected.
    +
    @ MOVING_TARGET
    A moving target has been detected.
    +
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    +
    +
    +
    + diff --git a/docu/namespacemembers_enum.html b/docu/namespacemembers_enum.html index 2c578c0..2ba94db 100644 --- a/docu/namespacemembers_enum.html +++ b/docu/namespacemembers_enum.html @@ -98,12 +98,12 @@
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    diff --git a/docu/navtreedata.js b/docu/navtreedata.js index 60b89d0..2157dc1 100644 --- a/docu/navtreedata.js +++ b/docu/navtreedata.js @@ -33,7 +33,7 @@ var NAVTREE = ] ], [ "Usage", "index.html#autotoc_md4", null ] ] ], - [ "Topics", "topics.html", "topics" ], + [ "LD2410Async: Index by topic", "LD2410Async_TopicIndex.html", null ], [ "Namespaces", "namespaces.html", [ [ "Namespace List", "namespaces.html", "namespaces_dup" ], [ "Namespace Members", "namespacemembers.html", [ @@ -68,7 +68,7 @@ var NAVTREE = var NAVTREEINDEX = [ "LD2410Async_8cpp.html", -"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce" +"namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docu/navtreeindex0.js b/docu/navtreeindex0.js index a22161e..4d711f2 100644 --- a/docu/navtreeindex0.js +++ b/docu/navtreeindex0.js @@ -6,6 +6,7 @@ var NAVTREEINDEX0 = "LD2410Async_8cpp_source.html":[4,0,5], "LD2410Async_8h.html":[4,0,6], "LD2410Async_8h_source.html":[4,0,6], +"LD2410Async_TopicIndex.html":[1], "LD2410CommandBuilder_8h.html":[4,0,7], "LD2410CommandBuilder_8h.html#a1891c87b48a0ec24a7a6066fe48bd63e":[4,0,7,5], "LD2410CommandBuilder_8h.html#a2a87725992c2b7bd53fc2b24f5ac4a0f":[4,0,7,3], @@ -76,6 +77,41 @@ var NAVTREEINDEX0 = "LD2410Defs_8h.html#afe9215eabc5e65cf56fcf9c89bc61c01":[4,0,9,34], "LD2410Defs_8h_source.html":[4,0,9], "LD2410Types_8h.html":[4,0,10], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995":[4,0,10,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[4,0,10,2,0], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[4,0,10,2,3], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[4,0,10,2,2], +"LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[4,0,10,2,1], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bff":[4,0,10,6], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[4,0,10,6,0], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[4,0,10,6,2], +"LD2410Types_8h.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[4,0,10,6,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdf":[4,0,10,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[4,0,10,3,3], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[4,0,10,3,2], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[4,0,10,3,5], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[4,0,10,3,4], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[4,0,10,3,6], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[4,0,10,3,1], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[4,0,10,3,0], +"LD2410Types_8h.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[4,0,10,3,7], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79":[4,0,10,4], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[4,0,10,4,0], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[4,0,10,4,2], +"LD2410Types_8h.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[4,0,10,4,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9":[4,0,10,7], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[4,0,10,7,3], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[4,0,10,7,0], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[4,0,10,7,4], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[4,0,10,7,6], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[4,0,10,7,2], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[4,0,10,7,1], +"LD2410Types_8h.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[4,0,10,7,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844":[4,0,10,5], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[4,0,10,5,0], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[4,0,10,5,2], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[4,0,10,5,3], +"LD2410Types_8h.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[4,0,10,5,1], "LD2410Types_8h_source.html":[4,0,10], "annotated.html":[3,0], "basicPresenceDetection_8ino.html":[4,0,0,0], @@ -85,6 +121,76 @@ var NAVTREEINDEX0 = "changeDistanceResolution_8ino.html":[4,0,2,0], "changeDistanceResolution_8ino_source.html":[4,0,2,0], "classLD2410Async.html":[3,0,1], +"classLD2410Async.html#a01705b527bc80949417de15b6e95140c":[3,0,1,21], +"classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1":[3,0,1,5], +"classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4":[3,0,1,55], +"classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a":[3,0,1,20], +"classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024":[3,0,1,7], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab":[3,0,1,3], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[3,0,1,3,2], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[3,0,1,3,1], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[3,0,1,3,0], +"classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[3,0,1,3,3], +"classLD2410Async.html#a19278199112e9358e96a192056e58e81":[3,0,1,1], +"classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38":[3,0,1,17], +"classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48":[3,0,1,37], +"classLD2410Async.html#a3260f74672079a7200f210e4ffde1046":[3,0,1,49], +"classLD2410Async.html#a377464026350140b0277369a13e8c1d3":[3,0,1,24], +"classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be":[3,0,1,48], +"classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c":[3,0,1,11], +"classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3":[3,0,1,29], +"classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82":[3,0,1,18], +"classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76":[3,0,1,54], +"classLD2410Async.html#a509170bfc50580131d0c72f5c91daede":[3,0,1,9], +"classLD2410Async.html#a54388c929cea610f92891def29db66a5":[3,0,1,32], +"classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50":[3,0,1,34], +"classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325":[3,0,1,53], +"classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21":[3,0,1,50], +"classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02":[3,0,1,58], +"classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2":[3,0,1,25], +"classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf":[3,0,1,62], +"classLD2410Async.html#a714e62534394a52243f8f50fd58726f9":[3,0,1,41], +"classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153":[3,0,1,6], +"classLD2410Async.html#a74138af198ac827349a25e122277803f":[3,0,1,36], +"classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7":[3,0,1,59], +"classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383":[3,0,1,2], +"classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e":[3,0,1,63], +"classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1":[3,0,1,64], +"classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6":[3,0,1,45], +"classLD2410Async.html#a90e3bc56482783249d966a670310bffd":[3,0,1,10], +"classLD2410Async.html#a93962bd109f67775ea3420596207b23a":[3,0,1,31], +"classLD2410Async.html#a9493caef9e22a89445741da019b99213":[3,0,1,16], +"classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c":[3,0,1,23], +"classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973":[3,0,1,26], +"classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8":[3,0,1,60], +"classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694":[3,0,1,56], +"classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22":[3,0,1,13], +"classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7":[3,0,1,61], +"classLD2410Async.html#aadb841697a992c1bf203944211bd8659":[3,0,1,52], +"classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38":[3,0,1,44], +"classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50":[3,0,1,15], +"classLD2410Async.html#abfe79850fa3e040a12de72ea99747266":[3,0,1,14], +"classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900":[3,0,1,4], +"classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1":[3,0,1,57], +"classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6":[3,0,1,46], +"classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9":[3,0,1,27], +"classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19":[3,0,1,38], +"classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285":[3,0,1,42], +"classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d":[3,0,1,28], +"classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6":[3,0,1,51], +"classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b":[3,0,1,65], +"classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603":[3,0,1,0], +"classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a":[3,0,1,12], +"classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6":[3,0,1,39], +"classLD2410Async.html#addcbab1709f2a80571563609f4a23862":[3,0,1,22], +"classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090":[3,0,1,35], +"classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250":[3,0,1,19], +"classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235":[3,0,1,40], +"classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc":[3,0,1,8], +"classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282":[3,0,1,43], +"classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54":[3,0,1,30], +"classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13":[3,0,1,33], +"classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb":[3,0,1,47], "classes.html":[3,1], "dir_107e309f9f293897177ec4de6cf5a764.html":[4,0,3], "dir_30f1c3aaa201f9bae8f75919357e181e.html":[4,0,0], @@ -100,123 +206,6 @@ var NAVTREEINDEX0 = "globals.html":[4,1,0], "globals_defs.html":[4,1,2], "globals_func.html":[4,1,1], -"group__LD2410Async__AsyncCommands.html":[1,0], -"group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1":[1,0,0], -"group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3":[1,0,2], -"group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325":[1,0,4], -"group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153":[1,0,1], -"group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a":[1,0,3], -"group__LD2410Async__Bluetooth.html":[1,1], -"group__LD2410Async__Callbacks.html":[1,2], -"group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383":[1,2,1], -"group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603":[1,2,0], -"group__LD2410Async__Configuration.html":[1,9], -"group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48":[1,9,3], -"group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02":[1,9,6], -"group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9":[1,9,4], -"group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c":[1,9,1], -"group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9":[1,9,2], -"group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285":[1,9,5], -"group__LD2410Async__HighLevelCommands.html":[1,4], -"group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede":[1,4,0], -"group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6":[1,4,2], -"group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38":[1,4,1], -"group__LD2410Async__InactivityHandling.html":[1,5], -"group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4":[1,5,5], -"group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3":[1,5,1], -"group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76":[1,5,4], -"group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2":[1,5,0], -"group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f":[1,5,2], -"group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6":[1,5,3], -"group__LD2410Async__MainMethods.html":[1,3], -"group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024":[1,3,0], -"group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900":[1,3,2], -"group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54":[1,3,1], -"group__LD2410Async__NativeCommands.html":[1,6], -"group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c":[1,6,12], -"group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a":[1,6,11], -"group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38":[1,6,8], -"group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046":[1,6,19], -"group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be":[1,6,18], -"group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c":[1,6,2], -"group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82":[1,6,9], -"group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21":[1,6,20], -"group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd":[1,6,1], -"group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213":[1,6,7], -"group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973":[1,6,14], -"group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22":[1,6,4], -"group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659":[1,6,22], -"group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50":[1,6,6], -"group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266":[1,6,5], -"group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6":[1,6,16], -"group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6":[1,6,21], -"group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a":[1,6,3], -"group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862":[1,6,13], -"group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250":[1,6,10], -"group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235":[1,6,15], -"group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc":[1,6,0], -"group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb":[1,6,17], -"group__LD2410Async__PresenceDetection.html":[1,7], -"group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81":[1,7,1], -"group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8":[1,7,5], -"group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19":[1,7,3], -"group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d":[1,7,2], -"group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282":[1,7,4], -"group__LD2410Async__PublicData.html":[1,8], -"group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5":[1,8,0], -"group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50":[1,8,2], -"group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7":[1,8,5], -"group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694":[1,8,4], -"group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7":[1,8,6], -"group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090":[1,8,3], -"group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13":[1,8,1], -"group__LD2410Async__StaticData.html":[1,10], -"group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf":[1,10,1], -"group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e":[1,10,2], -"group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1":[1,10,3], -"group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1":[1,10,0], -"group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b":[1,10,4], -"group__LD2410Async__Types.html":[1,11], -"group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995":[1,11,3], -"group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab":[1,11,2], -"group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff":[1,11,7], -"group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf":[1,11,4], -"group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79":[1,11,5], -"group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9":[1,11,8], -"group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844":[1,11,6], -"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[1,11,3,0], -"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[1,11,3,3], -"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[1,11,3,2], -"group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[1,11,3,1], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff":[1,11,2,2], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419":[1,11,2,1], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c":[1,11,2,0], -"group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926":[1,11,2,3], -"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[1,11,7,0], -"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[1,11,7,2], -"group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[1,11,7,1], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[1,11,4,3], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[1,11,4,2], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[1,11,4,5], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[1,11,4,4], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[1,11,4,6], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[1,11,4,1], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[1,11,4,0], -"group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[1,11,4,7], -"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[1,11,5,0], -"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[1,11,5,2], -"group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[1,11,5,1], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[1,11,8,3], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[1,11,8,0], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[1,11,8,4], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[1,11,8,6], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[1,11,8,2], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[1,11,8,1], -"group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[1,11,8,5], -"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[1,11,6,0], -"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[1,11,6,2], -"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[1,11,6,3], -"group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[1,11,6,1], "index.html":[], "index.html#autotoc_md0":[0,0], "index.html#autotoc_md1":[0,1], @@ -249,5 +238,16 @@ var NAVTREEINDEX0 = "namespaceLD2410Defs.html#a3b188cd2f935fad68b0500477b3f99d8":[2,0,1,42], "namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151":[2,0,1,43], "namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97":[2,0,1,20], -"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,1,39] +"namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b":[2,0,1,39], +"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,1,46], +"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,1,16], +"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,1,41], +"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,1,23], +"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,1,12], +"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,1,22], +"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,1,25], +"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,1,40], +"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,1,36], +"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,1,4], +"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[2,0,1,33] }; diff --git a/docu/navtreeindex1.js b/docu/navtreeindex1.js index 31daee4..9a6286e 100644 --- a/docu/navtreeindex1.js +++ b/docu/navtreeindex1.js @@ -1,16 +1,5 @@ var NAVTREEINDEX1 = { -"namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce":[2,0,1,46], -"namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478":[2,0,1,16], -"namespaceLD2410Defs.html#a5f6064d89a9145a79a9fd86908073ec9":[2,0,1,41], -"namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde":[2,0,1,23], -"namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939":[2,0,1,12], -"namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a":[2,0,1,22], -"namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303":[2,0,1,25], -"namespaceLD2410Defs.html#a7fc888217a5c3212c4f1875d2b46e790":[2,0,1,40], -"namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75":[2,0,1,36], -"namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8":[2,0,1,4], -"namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b":[2,0,1,33], "namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7":[2,0,1,3], "namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df":[2,0,1,31], "namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34":[2,0,1,17], @@ -31,6 +20,41 @@ var NAVTREEINDEX1 = "namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd":[2,0,1,27], "namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01":[2,0,1,34], "namespaceLD2410Types.html":[2,0,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995":[2,0,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,2,0], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e":[2,0,2,2,3], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9":[2,0,2,2,2], +"namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665":[2,0,2,2,1], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff":[2,0,2,6], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162":[2,0,2,6,0], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761":[2,0,2,6,2], +"namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946":[2,0,2,6,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf":[2,0,2,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391":[2,0,2,3,3], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e":[2,0,2,3,2], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16":[2,0,2,3,5], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05":[2,0,2,3,4], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c":[2,0,2,3,6], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159":[2,0,2,3,1], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1":[2,0,2,3,0], +"namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0":[2,0,2,3,7], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79":[2,0,2,4], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,4,0], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e":[2,0,2,4,2], +"namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8":[2,0,2,4,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9":[2,0,2,7], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5":[2,0,2,7,3], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84":[2,0,2,7,0], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8":[2,0,2,7,4], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9":[2,0,2,7,6], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4":[2,0,2,7,2], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929":[2,0,2,7,1], +"namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae":[2,0,2,7,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844":[2,0,2,5], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162":[2,0,2,5,0], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c":[2,0,2,5,2], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e":[2,0,2,5,3], +"namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21":[2,0,2,5,1], "namespacemembers.html":[2,1,0], "namespacemembers_enum.html":[2,1,3], "namespacemembers_func.html":[2,1,1], @@ -39,71 +63,70 @@ var NAVTREEINDEX1 = "pages.html":[], "receiveData_8ino.html":[4,0,4,0], "receiveData_8ino_source.html":[4,0,4,0], -"structLD2410Types_1_1ConfigData.html":[1,9,0], -"structLD2410Types_1_1ConfigData.html":[1,11,1], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,9,0,4], -"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[1,11,1,4], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,9,0,2], -"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[1,11,1,2], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,9,0,3], -"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[1,11,1,3], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,9,0,8], -"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[1,11,1,8], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,9,0,12], -"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[1,11,1,12], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,9,0,0], -"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[1,11,1,0], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,9,0,7], -"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[1,11,1,7], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,9,0,1], -"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[1,11,1,1], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,9,0,6], -"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[1,11,1,6], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,9,0,9], -"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[1,11,1,9], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,9,0,11], -"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[1,11,1,11], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,9,0,5], -"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[1,11,1,5], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,9,0,10], -"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[1,11,1,10], -"structLD2410Types_1_1DetectionData.html":[1,7,0], -"structLD2410Types_1_1DetectionData.html":[1,11,0], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,7,0,0], -"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[1,11,0,0], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,7,0,14], -"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[1,11,0,14], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,7,0,2], -"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[1,11,0,2], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,7,0,11], -"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[1,11,0,11], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,7,0,15], -"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[1,11,0,15], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,7,0,3], -"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[1,11,0,3], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,7,0,1], -"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[1,11,0,1], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,7,0,6], -"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[1,11,0,6], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,7,0,16], -"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[1,11,0,16], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,7,0,7], -"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[1,11,0,7], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,7,0,13], -"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[1,11,0,13], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,7,0,10], -"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[1,11,0,10], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,7,0,8], -"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[1,11,0,8], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,7,0,9], -"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[1,11,0,9], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,7,0,17], -"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[1,11,0,17], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,7,0,4], -"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[1,11,0,4], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,7,0,5], -"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[1,11,0,5], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,7,0,12], -"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[1,11,0,12], -"topics.html":[1] +"structLD2410Types_1_1ConfigData.html":[2,0,2,0], +"structLD2410Types_1_1ConfigData.html":[3,0,0,0], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[2,0,2,0,4], +"structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8":[3,0,0,0,4], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[2,0,2,0,2], +"structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624":[3,0,0,0,2], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[2,0,2,0,3], +"structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c":[3,0,0,0,3], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[2,0,2,0,8], +"structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382":[3,0,0,0,8], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[2,0,2,0,12], +"structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87":[3,0,0,0,12], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[2,0,2,0,0], +"structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028":[3,0,0,0,0], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[2,0,2,0,7], +"structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88":[3,0,0,0,7], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[2,0,2,0,1], +"structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885":[3,0,0,0,1], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[2,0,2,0,6], +"structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7":[3,0,0,0,6], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[2,0,2,0,9], +"structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6":[3,0,0,0,9], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[2,0,2,0,11], +"structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589":[3,0,0,0,11], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[2,0,2,0,5], +"structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06":[3,0,0,0,5], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[2,0,2,0,10], +"structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf":[3,0,0,0,10], +"structLD2410Types_1_1DetectionData.html":[2,0,2,1], +"structLD2410Types_1_1DetectionData.html":[3,0,0,1], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[2,0,2,1,0], +"structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca":[3,0,0,1,0], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[2,0,2,1,14], +"structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b":[3,0,0,1,14], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[2,0,2,1,2], +"structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7":[3,0,0,1,2], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[2,0,2,1,11], +"structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad":[3,0,0,1,11], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[2,0,2,1,15], +"structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73":[3,0,0,1,15], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[2,0,2,1,3], +"structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c":[3,0,0,1,3], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[2,0,2,1,1], +"structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507":[3,0,0,1,1], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[2,0,2,1,6], +"structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96":[3,0,0,1,6], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[2,0,2,1,16], +"structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7":[3,0,0,1,16], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[2,0,2,1,7], +"structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696":[3,0,0,1,7], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[2,0,2,1,13], +"structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1":[3,0,0,1,13], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[2,0,2,1,10], +"structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023":[3,0,0,1,10], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[2,0,2,1,8], +"structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a":[3,0,0,1,8], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[2,0,2,1,9], +"structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2":[3,0,0,1,9], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[2,0,2,1,17], +"structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d":[3,0,0,1,17], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[2,0,2,1,4], +"structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81":[3,0,0,1,4], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[2,0,2,1,5], +"structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6":[3,0,0,1,5], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[2,0,2,1,12], +"structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317":[3,0,0,1,12] }; diff --git a/docu/pages.html b/docu/pages.html new file mode 100644 index 0000000..2a8fbcc --- /dev/null +++ b/docu/pages.html @@ -0,0 +1,117 @@ + + + + + + + +LD2410Async: Related Pages + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/docu/search/all_0.js b/docu/search/all_0.js index 8ff0c0c..1198aad 100644 --- a/docu/search/all_0.js +++ b/docu/search/all_0.js @@ -1,24 +1,23 @@ var searchData= [ - ['a_20clone_0',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], + ['a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], ['access_20detection_20data_20without_20cloning_1',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], - ['access_20without_20cloning_3',['access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['access_20values_20from_20a_20clone_2',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['access_20without_20cloning_3',['access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], ['accessing_20data_4',['Accessing data',['../index.html#autotoc_md1',1,'']]], - ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], - ['and_20mac_6',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], - ['and_20write_20back_7',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['apply_20config_8',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], - ['async_20commands_9',['Async Commands',['../group__LD2410Async__AsyncCommands.html',1,'']]], - ['asynccancel_10',['asyncCancel',['../group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asynccommandcallback_11',['AsyncCommandCallback',['../group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], - ['asynccommandresult_12',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['asyncisbusy_13',['asyncIsBusy',['../group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], - ['auto_20config_14',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]], - ['auto_20config_20status_15',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], - ['autoconfig_5ffailed_16',['AUTOCONFIG_FAILED',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_17',['AUTOCONFIG_IN_PROGRESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_18',['AUTOCONFIG_SUCCESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], - ['autoconfigstatus_19',['AutoConfigStatus',['../group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], - ['autoconfigstatus_20',['autoConfigStatus',['../group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['and_20apply_20config_5',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['and_20mac_6',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['and_20write_20back_7',['and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['asynccancel_9',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asynccommandcallback_10',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]], + ['asynccommandresult_11',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['asyncisbusy_12',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]], + ['auto_20config_13',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]], + ['auto_20config_20status_14',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['autoconfig_5ffailed_15',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_16',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_17',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]], + ['autoconfigstatus_18',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]], + ['autoconfigstatus_19',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/all_1.js b/docu/search/all_1.js index ced9d82..b2fa6c2 100644 --- a/docu/search/all_1.js +++ b/docu/search/all_1.js @@ -1,31 +1,32 @@ var searchData= [ - ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['back_0',['back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], ['basicpresencedetection_2eino_1',['basicPresenceDetection.ino',['../basicPresenceDetection_8ino.html',1,'']]], - ['baudrate_2',['Baudrate',['../group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], - ['baudrate_5f115200_3',['BAUDRATE_115200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_4',['BAUDRATE_19200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_5',['BAUDRATE_230500',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_6',['BAUDRATE_256000',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_7',['BAUDRATE_38400',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_8',['BAUDRATE_460800',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_9',['BAUDRATE_57600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_10',['BAUDRATE_9600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], - ['begin_11',['begin',['../group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_12',['beginAutoConfigAsync',['../group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['baudrate_2',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]], + ['baudrate_5f115200_3',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_4',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_5',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_6',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_7',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_8',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_9',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_10',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]], + ['begin_11',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_12',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['beginautoconfigcommand_13',['beginAutoConfigCommand',['../namespaceLD2410Defs.html#abbc9d3d8f8519f6e67d54d3d7f11b398',1,'LD2410Defs']]], ['beginautoconfigcommanddata_14',['beginAutoConfigCommandData',['../namespaceLD2410Defs.html#aaeb20d14777a0c2cce3d28e11a9cb200',1,'LD2410Defs']]], - ['bluetooth_15',['Bluetooth',['../group__LD2410Async__Bluetooth.html',1,'']]], + ['bluetooth_15',['Bluetooth',['..//github/workspace/dox/topicIndex.dox#group_bluetooth',1,'']]], ['bluetoothsettingscommand_16',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], ['bluetoothsettingsoffcommanddata_17',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], ['bluetoothsettingsoncommanddata_18',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], ['bufferendswith_19',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], - ['buffersize_20',['bufferSize',['../group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], + ['buffersize_20',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]], ['buildauxcontrolcommand_21',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], ['buildbaudratecommand_22',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], ['buildbluetoothpasswordcommand_23',['buildBluetoothPasswordCommand',['../namespaceLD2410CommandBuilder.html#abf6ee0e1bb505fd30efd8b776557cf1f',1,'LD2410CommandBuilder']]], ['builddistanceresolutioncommand_24',['buildDistanceResolutionCommand',['../namespaceLD2410CommandBuilder.html#a2a87725992c2b7bd53fc2b24f5ac4a0f',1,'LD2410CommandBuilder']]], ['buildgatesensitivitycommand_25',['buildGateSensitivityCommand',['../namespaceLD2410CommandBuilder.html#a9879fbf4d013640f1a9bffdbc21122f6',1,'LD2410CommandBuilder']]], ['buildmaxgatecommand_26',['buildMaxGateCommand',['../namespaceLD2410CommandBuilder.html#a1891c87b48a0ec24a7a6066fe48bd63e',1,'LD2410CommandBuilder']]], - ['byte2hex_27',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] + ['by_20topic_27',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]], + ['byte2hex_28',['byte2hex',['../LD2410Async_8cpp.html#a20fb4b833b19bd31c1b37ea4747c059d',1,'LD2410Async.cpp']]] ]; diff --git a/docu/search/all_10.js b/docu/search/all_10.js index e39f996..3594d79 100644 --- a/docu/search/all_10.js +++ b/docu/search/all_10.js @@ -2,9 +2,11 @@ var searchData= [ ['tailconfig_0',['tailConfig',['../namespaceLD2410Defs.html#a54f46c31b33373a8f1d0d41b1418b2ce',1,'LD2410Defs']]], ['taildata_1',['tailData',['../namespaceLD2410Defs.html#ae14e5ef44857bd31bc38e0381e80427f',1,'LD2410Defs']]], - ['targetstate_2',['TargetState',['../group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], + ['targetstate_2',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]], ['targetstate_3',['targetState',['../structLD2410Types_1_1DetectionData.html#a6e7b02bc521240618e108867a2f9a1f7',1,'LD2410Types::DetectionData']]], - ['timeout_4',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], + ['timeout_4',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]], ['timestamp_5',['timestamp',['../structLD2410Types_1_1DetectionData.html#adc003171384bf1b2bbc0dd69777e579d',1,'LD2410Types::DetectionData']]], - ['types_20enums_20structs_6',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]] + ['topic_6',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]], + ['topicindex_2edox_7',['topicIndex.dox',['../topicIndex_8dox.html',1,'']]], + ['types_20enums_20structs_8',['Types, Enums & Structs',['..//github/workspace/dox/topicIndex.dox#group_types',1,'']]] ]; diff --git a/docu/search/all_12.js b/docu/search/all_12.js index dd20d39..4926498 100644 --- a/docu/search/all_12.js +++ b/docu/search/all_12.js @@ -1,4 +1,4 @@ var searchData= [ - ['values_20from_20a_20clone_0',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]] + ['values_20from_20a_20clone_0',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_13.js b/docu/search/all_13.js index 1c7e902..e78f009 100644 --- a/docu/search/all_13.js +++ b/docu/search/all_13.js @@ -1,5 +1,5 @@ var searchData= [ - ['without_20cloning_0',['without cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['write_20back_1',['write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] + ['without_20cloning_0',['without cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['write_20back_1',['write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]] ]; diff --git a/docu/search/all_2.js b/docu/search/all_2.js index 1ce6e0c..c8a81f7 100644 --- a/docu/search/all_2.js +++ b/docu/search/all_2.js @@ -1,38 +1,37 @@ var searchData= [ - ['callbacks_0',['Callbacks',['../group__LD2410Async__Callbacks.html',1,'']]], - ['canceled_1',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['callbacks_0',['Callbacks',['..//github/workspace/dox/topicIndex.dox#group_callbacks',1,'']]], + ['canceled_1',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], ['changeconfig_2eino_2',['changeConfig.ino',['../changeConfig_8ino.html',1,'']]], ['changedistanceresolution_2eino_3',['changeDistanceResolution.ino',['../changeDistanceResolution_8ino.html',1,'']]], - ['check_20auto_20config_20status_4',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], - ['clone_5',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], + ['check_20auto_20config_20status_4',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['clone_5',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], ['clone_20config_20data_20modify_20and_20write_20back_6',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['clone_20modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], - ['clone_20modify_20and_20write_20back_8',['Example: Clone, modify, and write back',['../group__LD2410Async__PublicData.html#autotoc_md11',1,'']]], - ['cloning_9',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['commands_10',['Commands',['../group__LD2410Async__AsyncCommands.html',1,'Async Commands'],['../group__LD2410Async__HighLevelCommands.html',1,'High Level Commands'],['../group__LD2410Async__NativeCommands.html',1,'Native Commands']]], - ['completed_11',['COMPLETED',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], - ['config_12',['config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'Example: Run auto-config']]], - ['config_20data_13',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], + ['clone_20modify_20and_20apply_20config_7',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['clone_20modify_20and_20write_20back_8',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['cloning_9',['cloning',['../index.html#autotoc_md2',1,'Example: Access detection data without cloning'],['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['commands_10',['Commands',['..//github/workspace/dox/topicIndex.dox#group_highlevel',1,'High Level Commands'],['..//github/workspace/dox/topicIndex.dox#group_native',1,'Native Commands']]], + ['completed_11',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]], + ['config_12',['config',['../classLD2410Async.html#autotoc_md29',1,'Example: Clone, modify, and apply config'],['../classLD2410Async.html#autotoc_md17',1,'Example: Run auto-config']]], + ['config_20data_13',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], ['config_20data_20modify_20and_20write_20back_14',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['config_20status_15',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['config_20status_15',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], ['configdata_16',['ConfigData',['../structLD2410Types_1_1ConfigData.html',1,'LD2410Types']]], - ['configdata_17',['configData',['../group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdata_17',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], ['configdisablecommand_18',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], ['configdisablecommanddata_19',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], ['configenablecommand_20',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], ['configenablecommanddata_21',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_22',['configModeEnabled',['../group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], - ['configuration_23',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], - ['configureallconfigsettingsasync_24',['configureAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_25',['configureAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_26',['configureBaudRateAsync',['../group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_27',['configureBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_28',['configureDefaultBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_29',['configureDistanceGateSensitivityAsync',['../group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_30',['configureDistanceResolution75cmAsync',['../group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_31',['configureDistanceResolutionAsync',['../group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_32',['configureMaxGateAndNoOneTimeoutAsync',['../group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_33',['configuresDistanceResolution20cmAsync',['../group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c',1,'LD2410Async']]], - ['constructor_20main_20methods_34',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]] + ['configmodeenabled_22',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]], + ['configuration_23',['Sensor Configuration',['..//github/workspace/dox/topicIndex.dox#group_config',1,'']]], + ['configureallconfigsettingsasync_24',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_25',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_26',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_27',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_28',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_29',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_30',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_31',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_32',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_33',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] ]; diff --git a/docu/search/all_3.js b/docu/search/all_3.js index 0fe9688..a5510f3 100644 --- a/docu/search/all_3.js +++ b/docu/search/all_3.js @@ -1,8 +1,8 @@ var searchData= [ - ['data_0',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], - ['data_1',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'Example: Refresh config data']]], - ['data_20members_2',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], + ['data_0',['Static Sensor Data',['..//github/workspace/dox/topicIndex.dox#group_staticdata',1,'']]], + ['data_1',['data',['../index.html#autotoc_md1',1,'Accessing data'],['../classLD2410Async.html#autotoc_md23',1,'Example: Refresh config data']]], + ['data_20members_2',['Public Data Members',['..//github/workspace/dox/topicIndex.dox#group_publicdata',1,'']]], ['data_20modify_20and_20write_20back_3',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], ['data_20without_20cloning_4',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], ['debug_5fprint_5',['DEBUG_PRINT',['../LD2410Debug_8h.html#a88edd2aa4feabff4af21a997d5d8aa23',1,'LD2410Debug.h']]], @@ -12,24 +12,24 @@ var searchData= ['debug_5fprintbuf_5fdata_9',['DEBUG_PRINTBUF_DATA',['../LD2410Debug_8h.html#a202829d1eb408c524e28460c17cdcb2a',1,'LD2410Debug.h']]], ['debug_5fprintln_10',['DEBUG_PRINTLN',['../LD2410Debug_8h.html#ae414eccb9fbdc7c0cc6edfc588a3aa34',1,'LD2410Debug.h']]], ['debug_5fprintln_5fdata_11',['DEBUG_PRINTLN_DATA',['../LD2410Debug_8h.html#a78db0cc4a1c77f820a1ddf0173841d48',1,'LD2410Debug.h']]], - ['default_5fhigh_5fdetected_5flow_12',['DEFAULT_HIGH_DETECTED_LOW',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_13',['DEFAULT_LOW_DETECTED_HIGH',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], + ['default_5fhigh_5fdetected_5flow_12',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_13',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]], ['detecteddistance_14',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detection_15',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]], + ['detection_15',['Presence Detection',['..//github/workspace/dox/topicIndex.dox#group_presence',1,'']]], ['detection_20data_20without_20cloning_16',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], ['detectiondata_17',['DetectionData',['../structLD2410Types_1_1DetectionData.html',1,'LD2410Types']]], - ['detectiondata_18',['detectionData',['../group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], - ['detectiondatacallback_19',['DetectionDataCallback',['../group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]], - ['disablebluetoothasync_20',['disableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_21',['disableConfigModeAsync',['../group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_22',['disableEngineeringModeAsync',['../group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_23',['disableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], + ['detectiondata_18',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondatacallback_19',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]], + ['disablebluetoothasync_20',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_21',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_22',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_23',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]], ['distancegatemotionsensitivity_24',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], ['distancegatesensitivityconfigcommand_25',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], ['distancegatesensitivityconfigcommanddata_26',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], ['distancegatestationarysensitivity_27',['distanceGateStationarySensitivity',['../structLD2410Types_1_1ConfigData.html#a126164bd0a2f25ec1cb24ca87f2d6eb8',1,'LD2410Types::ConfigData']]], - ['distanceresolution_28',['DistanceResolution',['../group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], + ['distanceresolution_28',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]], ['distanceresolution_29',['distanceResolution',['../structLD2410Types_1_1ConfigData.html#ad4b3263e4da6bcc2ef64d1e727eb6f06',1,'LD2410Types::ConfigData']]], - ['do_3a_30',['Do:',['../group__LD2410Async__PublicData.html#autotoc_md6',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md9',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md12',1,'Do:'],['../group__LD2410Async__PublicData.html#autotoc_md15',1,'Do:'],['../group__LD2410Async__NativeCommands.html#autotoc_md18',1,'Do:'],['../group__LD2410Async__NativeCommands.html#autotoc_md21',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md24',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md27',1,'Do:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md30',1,'Do:']]], - ['don’t_3a_31',['Don’t:',['../group__LD2410Async__PublicData.html#autotoc_md7',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md10',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md13',1,'Don’t:'],['../group__LD2410Async__PublicData.html#autotoc_md16',1,'Don’t:'],['../group__LD2410Async__NativeCommands.html#autotoc_md19',1,'Don’t:'],['../group__LD2410Async__NativeCommands.html#autotoc_md22',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md25',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md28',1,'Don’t:'],['../group__LD2410Async__HighLevelCommands.html#autotoc_md31',1,'Don’t:']]] + ['do_3a_30',['Do:',['../classLD2410Async.html#autotoc_md6',1,'Do:'],['../classLD2410Async.html#autotoc_md9',1,'Do:'],['../classLD2410Async.html#autotoc_md12',1,'Do:'],['../classLD2410Async.html#autotoc_md15',1,'Do:'],['../classLD2410Async.html#autotoc_md18',1,'Do:'],['../classLD2410Async.html#autotoc_md21',1,'Do:'],['../classLD2410Async.html#autotoc_md24',1,'Do:'],['../classLD2410Async.html#autotoc_md27',1,'Do:'],['../classLD2410Async.html#autotoc_md30',1,'Do:']]], + ['don’t_3a_31',['Don’t:',['../classLD2410Async.html#autotoc_md7',1,'Don’t:'],['../classLD2410Async.html#autotoc_md10',1,'Don’t:'],['../classLD2410Async.html#autotoc_md13',1,'Don’t:'],['../classLD2410Async.html#autotoc_md16',1,'Don’t:'],['../classLD2410Async.html#autotoc_md19',1,'Don’t:'],['../classLD2410Async.html#autotoc_md22',1,'Don’t:'],['../classLD2410Async.html#autotoc_md25',1,'Don’t:'],['../classLD2410Async.html#autotoc_md28',1,'Don’t:'],['../classLD2410Async.html#autotoc_md31',1,'Don’t:']]] ]; diff --git a/docu/search/all_4.js b/docu/search/all_4.js index c4a1a79..5ce06ee 100644 --- a/docu/search/all_4.js +++ b/docu/search/all_4.js @@ -1,27 +1,27 @@ var searchData= [ - ['efficient_20read_20access_20without_20cloning_0',['Efficient read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['enablebluetoothasync_1',['enableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], - ['enableconfigmodeasync_2',['enableConfigModeAsync',['../group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], - ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_4',['enableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_5',['end',['../group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['efficient_20read_20access_20without_20cloning_0',['Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['enablebluetoothasync_1',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_2',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_3',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_4',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_5',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['engineeringmode_6',['engineeringMode',['../structLD2410Types_1_1DetectionData.html#a0ba0acc8f10c3b03bc19b35dd3e3e6d7',1,'LD2410Types::DetectionData']]], ['engineeringmodedisablecomand_7',['engineeringModeDisableComand',['../namespaceLD2410Defs.html#a2843d4509bd2054a39a74b2bca02a46d',1,'LD2410Defs']]], ['engineeringmodedisablecommanddata_8',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_9',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_10',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_11',['engineeringModeEnabled',['../group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], - ['enums_20structs_12',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]], + ['engineeringmodeenabled_11',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]], + ['enums_20structs_12',['Types, Enums & Structs',['..//github/workspace/dox/topicIndex.dox#group_types',1,'']]], ['equals_13',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]], ['example_3a_20access_20detection_20data_20without_20cloning_14',['Example: Access detection data without cloning',['../index.html#autotoc_md2',1,'']]], - ['example_3a_20access_20values_20from_20a_20clone_15',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]], - ['example_3a_20check_20auto_20config_20status_16',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], + ['example_3a_20access_20values_20from_20a_20clone_15',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]], + ['example_3a_20check_20auto_20config_20status_16',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], ['example_3a_20clone_20config_20data_20modify_20and_20write_20back_17',['Example: Clone config data, modify, and write back',['../index.html#autotoc_md3',1,'']]], - ['example_3a_20clone_20modify_20and_20apply_20config_18',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], - ['example_3a_20clone_20modify_20and_20write_20back_19',['Example: Clone, modify, and write back',['../group__LD2410Async__PublicData.html#autotoc_md11',1,'']]], - ['example_3a_20efficient_20read_20access_20without_20cloning_20',['Example: Efficient read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['example_3a_20refresh_20config_20data_21',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], - ['example_3a_20retrieve_20firmware_20and_20mac_22',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], - ['example_3a_20run_20auto_20config_23',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]] + ['example_3a_20clone_20modify_20and_20apply_20config_18',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['example_3a_20clone_20modify_20and_20write_20back_19',['Example: Clone, modify, and write back',['../classLD2410Async.html#autotoc_md11',1,'']]], + ['example_3a_20efficient_20read_20access_20without_20cloning_20',['Example: Efficient read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['example_3a_20refresh_20config_20data_21',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['example_3a_20retrieve_20firmware_20and_20mac_22',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['example_3a_20run_20auto_20config_23',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_5.js b/docu/search/all_5.js index 632c2a4..92d010d 100644 --- a/docu/search/all_5.js +++ b/docu/search/all_5.js @@ -1,8 +1,8 @@ var searchData= [ - ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]], ['features_1',['Features',['../index.html#autotoc_md0',1,'']]], - ['firmware_2',['firmware',['../group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], - ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], - ['from_20a_20clone_4',['Example: Access values from a clone',['../group__LD2410Async__PublicData.html#autotoc_md5',1,'']]] + ['firmware_2',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]], + ['firmware_20and_20mac_3',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['from_20a_20clone_4',['Example: Access values from a clone',['../classLD2410Async.html#autotoc_md5',1,'']]] ]; diff --git a/docu/search/all_6.js b/docu/search/all_6.js index 47e5f4c..39faca2 100644 --- a/docu/search/all_6.js +++ b/docu/search/all_6.js @@ -1,12 +1,11 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], - ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]], + ['getasynccommandtimeoutms_1',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], ['getbluetoothpermissionscommand_2',['getBluetoothPermissionsCommand',['../namespaceLD2410Defs.html#acd39b7ff206092ec4912dc723ac6ad34',1,'LD2410Defs']]], - ['getconfigdata_3',['getConfigData',['../group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5',1,'LD2410Async']]], - ['getconfigdataref_4',['getConfigDataRef',['../group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], - ['getdetectiondata_5',['getDetectionData',['../group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], - ['getdetectiondataref_6',['getDetectionDataRef',['../group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]], - ['groups_2edox_8',['groups.dox',['../groups_8dox.html',1,'']]] + ['getconfigdata_3',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_4',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_5',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_6',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_7',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/all_7.js b/docu/search/all_7.js index fd5c621..6dd85cc 100644 --- a/docu/search/all_7.js +++ b/docu/search/all_7.js @@ -1,7 +1,6 @@ var searchData= [ - ['handling_0',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]], - ['headconfig_1',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], - ['headdata_2',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]], - ['high_20level_20commands_3',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]] + ['headconfig_0',['headConfig',['../namespaceLD2410Defs.html#a5bd9f1f14255e2b786c58849f617f478',1,'LD2410Defs']]], + ['headdata_1',['headData',['../namespaceLD2410Defs.html#a975ffcb4167ef7e6438dbf1d8de49b34',1,'LD2410Defs']]], + ['high_20level_20commands_2',['High Level Commands',['..//github/workspace/dox/topicIndex.dox#group_highlevel',1,'']]] ]; diff --git a/docu/search/all_8.js b/docu/search/all_8.js index bc3ae47..614b93d 100644 --- a/docu/search/all_8.js +++ b/docu/search/all_8.js @@ -1,10 +1,10 @@ var searchData= [ - ['in_5fprogress_0',['IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], - ['inactivity_20handling_1',['Inactivity Handling',['../group__LD2410Async__InactivityHandling.html',1,'']]], + ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]], + ['index_20by_20topic_1',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]], ['introduction_2',['Introduction',['../index.html#intro_sec',1,'']]], - ['isconfigmodeenabled_3',['isConfigModeEnabled',['../group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_4',['isEngineeringModeEnabled',['../group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_5',['isInactivityHandlingEnabled',['../group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isconfigmodeenabled_3',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_4',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_5',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], ['isvalid_6',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_9.js b/docu/search/all_9.js index 365364e..0a6c297 100644 --- a/docu/search/all_9.js +++ b/docu/search/all_9.js @@ -1,23 +1,24 @@ var searchData= [ ['ld2410_5fbuffer_5fsize_0',['LD2410_Buffer_Size',['../namespaceLD2410Defs.html#ab5971df32a3e09229234634c403d711f',1,'LD2410Defs']]], - ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], + ['ld2410async_1',['LD2410Async',['../classLD2410Async.html',1,'LD2410Async'],['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async::LD2410Async()'],['../index.html',1,'LD2410Async']]], ['ld2410async_2ecpp_2',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], ['ld2410async_2eh_3',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], - ['ld2410async_5fdebug_5fdata_5flevel_4',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], - ['ld2410async_5fdebug_5flevel_5',['LD2410ASYNC_DEBUG_LEVEL',['../LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163',1,'LD2410Debug.h']]], - ['ld2410commandbuilder_6',['LD2410CommandBuilder',['../namespaceLD2410CommandBuilder.html',1,'']]], - ['ld2410commandbuilder_2eh_7',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], - ['ld2410debug_2eh_8',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], - ['ld2410defs_9',['LD2410Defs',['../namespaceLD2410Defs.html',1,'']]], - ['ld2410defs_2eh_10',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], - ['ld2410types_11',['LD2410Types',['../namespaceLD2410Types.html',1,'']]], - ['ld2410types_2eh_12',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]], - ['level_20commands_13',['High Level Commands',['../group__LD2410Async__HighLevelCommands.html',1,'']]], - ['light_5fabove_5fthreshold_14',['LIGHT_ABOVE_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], - ['light_5fbelow_5fthreshold_15',['LIGHT_BELOW_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]], - ['lightcontrol_16',['LightControl',['../group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844',1,'LD2410Types']]], - ['lightcontrol_17',['lightControl',['../structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7',1,'LD2410Types::ConfigData']]], - ['lightlevel_18',['lightLevel',['../structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c',1,'LD2410Types::DetectionData']]], - ['lightthreshold_19',['lightThreshold',['../structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88',1,'LD2410Types::ConfigData']]] + ['ld2410async_3a_20index_20by_20topic_4',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]], + ['ld2410async_5fdebug_5fdata_5flevel_5',['LD2410ASYNC_DEBUG_DATA_LEVEL',['../LD2410Debug_8h.html#a4c215a1265c9473347aad0ad82d53c40',1,'LD2410Debug.h']]], + ['ld2410async_5fdebug_5flevel_6',['LD2410ASYNC_DEBUG_LEVEL',['../LD2410Debug_8h.html#ae8c652c94c043cf64207bb6b6f983163',1,'LD2410Debug.h']]], + ['ld2410commandbuilder_7',['LD2410CommandBuilder',['../namespaceLD2410CommandBuilder.html',1,'']]], + ['ld2410commandbuilder_2eh_8',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], + ['ld2410debug_2eh_9',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], + ['ld2410defs_10',['LD2410Defs',['../namespaceLD2410Defs.html',1,'']]], + ['ld2410defs_2eh_11',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], + ['ld2410types_12',['LD2410Types',['../namespaceLD2410Types.html',1,'']]], + ['ld2410types_2eh_13',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]], + ['level_20commands_14',['High Level Commands',['..//github/workspace/dox/topicIndex.dox#group_highlevel',1,'']]], + ['light_5fabove_5fthreshold_15',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_16',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]], + ['lightcontrol_17',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]], + ['lightcontrol_18',['lightControl',['../structLD2410Types_1_1ConfigData.html#a90a9b0911fdf7ee1b05a90b70b76d2d7',1,'LD2410Types::ConfigData']]], + ['lightlevel_19',['lightLevel',['../structLD2410Types_1_1DetectionData.html#a34c54eeec586ff7aed6d1a774741b92c',1,'LD2410Types::DetectionData']]], + ['lightthreshold_20',['lightThreshold',['../structLD2410Types_1_1ConfigData.html#a409cf828c80e4c75b9200ef3f1c4de88',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_a.js b/docu/search/all_a.js index 573a13f..e325b59 100644 --- a/docu/search/all_a.js +++ b/docu/search/all_a.js @@ -1,22 +1,20 @@ var searchData= [ - ['mac_0',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], - ['mac_1',['mac',['../group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_2',['macString',['../group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], - ['main_20methods_3',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]], - ['maxgatecommand_4',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], - ['maxgatecommanddata_5',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], - ['maxmotiondistancegate_6',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], - ['maxstationarydistancegate_7',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], - ['members_8',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]], - ['methods_9',['Constructor & Main methods',['../group__LD2410Async__MainMethods.html',1,'']]], - ['modify_20and_20apply_20config_10',['Example: Clone, modify, and apply config',['../group__LD2410Async__HighLevelCommands.html#autotoc_md29',1,'']]], - ['modify_20and_20write_20back_11',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../group__LD2410Async__PublicData.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], - ['moving_5fand_5fstationary_5ftarget_12',['MOVING_AND_STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_13',['MOVING_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], - ['movingpresencedetected_14',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], - ['movingtargetdistance_15',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignalcount_16',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], - ['movingtargetgatesignals_17',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], - ['movingtargetsignal_18',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] + ['mac_0',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['mac_1',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_2',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['maxgatecommand_3',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], + ['maxgatecommanddata_4',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], + ['maxmotiondistancegate_5',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], + ['maxstationarydistancegate_6',['maxStationaryDistanceGate',['../structLD2410Types_1_1ConfigData.html#a95ae8ec4ba27e50135f0cc38fd4621a6',1,'LD2410Types::ConfigData']]], + ['members_7',['Public Data Members',['..//github/workspace/dox/topicIndex.dox#group_publicdata',1,'']]], + ['modify_20and_20apply_20config_8',['Example: Clone, modify, and apply config',['../classLD2410Async.html#autotoc_md29',1,'']]], + ['modify_20and_20write_20back_9',['modify and write back',['../index.html#autotoc_md3',1,'Example: Clone config data, modify, and write back'],['../classLD2410Async.html#autotoc_md11',1,'Example: Clone, modify, and write back']]], + ['moving_5fand_5fstationary_5ftarget_10',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_11',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]], + ['movingpresencedetected_12',['movingPresenceDetected',['../structLD2410Types_1_1DetectionData.html#ae7ad914bcdb01c5d8bb6c07b78b19d81',1,'LD2410Types::DetectionData']]], + ['movingtargetdistance_13',['movingTargetDistance',['../structLD2410Types_1_1DetectionData.html#af407da6370ae3d06e0d435fa61175af6',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignalcount_14',['movingTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a69de276715421c7e163357fa6fb3cf96',1,'LD2410Types::DetectionData']]], + ['movingtargetgatesignals_15',['movingTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a745753d912c11f3e73fe2e2b6be34696',1,'LD2410Types::DetectionData']]], + ['movingtargetsignal_16',['movingTargetSignal',['../structLD2410Types_1_1DetectionData.html#aae0463d0906b1abee50b21e648347b7a',1,'LD2410Types::DetectionData']]] ]; diff --git a/docu/search/all_b.js b/docu/search/all_b.js index 926f622..5f62d08 100644 --- a/docu/search/all_b.js +++ b/docu/search/all_b.js @@ -1,10 +1,10 @@ var searchData= [ - ['native_20commands_0',['Native Commands',['../group__LD2410Async__NativeCommands.html',1,'']]], - ['no_5flight_5fcontrol_1',['NO_LIGHT_CONTROL',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], - ['no_5ftarget_2',['NO_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['native_20commands_0',['Native Commands',['..//github/workspace/dox/topicIndex.dox#group_native',1,'']]], + ['no_5flight_5fcontrol_1',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_2',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], ['noonetimeout_3',['noOneTimeout',['../structLD2410Types_1_1ConfigData.html#aed0b489a9e500b199397a9db7103e3bf',1,'LD2410Types::ConfigData']]], - ['not_5fin_5fprogress_4',['NOT_IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], - ['not_5fset_5',['NOT_SET',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]], + ['not_5fin_5fprogress_4',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_5',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]], ['numberofgates_6',['numberOfGates',['../structLD2410Types_1_1ConfigData.html#acabeb381bc21ae97893101726ab1d589',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_c.js b/docu/search/all_c.js index e77accc..cc9ea58 100644 --- a/docu/search/all_c.js +++ b/docu/search/all_c.js @@ -1,6 +1,6 @@ var searchData= [ ['outpinstatus_0',['outPinStatus',['../structLD2410Types_1_1DetectionData.html#ac524295d914ba301c5777a9e6d781ce2',1,'LD2410Types::DetectionData']]], - ['outputcontrol_1',['OutputControl',['../group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff',1,'LD2410Types']]], + ['outputcontrol_1',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]], ['outputcontrol_2',['outputControl',['../structLD2410Types_1_1ConfigData.html#a39e4ebc6e1f47066af450b7660cabb87',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/all_d.js b/docu/search/all_d.js index ad5ac6c..e29018e 100644 --- a/docu/search/all_d.js +++ b/docu/search/all_d.js @@ -1,8 +1,8 @@ var searchData= [ - ['presence_20detection_0',['Presence Detection',['../group__LD2410Async__PresenceDetection.html',1,'']]], + ['presence_20detection_0',['Presence Detection',['..//github/workspace/dox/topicIndex.dox#group_presence',1,'']]], ['presencedetected_1',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], ['print_2',['print',['../structLD2410Types_1_1DetectionData.html#a05545713d5314398cf8c87ac50bbf4ca',1,'LD2410Types::DetectionData::print()'],['../structLD2410Types_1_1ConfigData.html#a14f6b9d23c5eac3fbf70b397398ae624',1,'LD2410Types::ConfigData::print()']]], - ['protocolversion_3',['protocolVersion',['../group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]], - ['public_20data_20members_4',['Public Data Members',['../group__LD2410Async__PublicData.html',1,'']]] + ['protocolversion_3',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]], + ['public_20data_20members_4',['Public Data Members',['..//github/workspace/dox/topicIndex.dox#group_publicdata',1,'']]] ]; diff --git a/docu/search/all_e.js b/docu/search/all_e.js index bd3cee8..b62e4e0 100644 --- a/docu/search/all_e.js +++ b/docu/search/all_e.js @@ -1,39 +1,39 @@ var searchData= [ - ['read_20access_20without_20cloning_0',['read access without cloning',['../group__LD2410Async__PublicData.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../group__LD2410Async__PublicData.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], - ['rebootasync_1',['rebootAsync',['../group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['read_20access_20without_20cloning_0',['read access without cloning',['../classLD2410Async.html#autotoc_md8',1,'Example: Efficient read access without cloning'],['../classLD2410Async.html#autotoc_md14',1,'Example: Efficient read access without cloning']]], + ['rebootasync_1',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], ['rebootcommand_2',['rebootCommand',['../namespaceLD2410Defs.html#aa1b5e5bcf1889588b28416af63dab7c5',1,'LD2410Defs']]], ['rebootcommanddata_3',['rebootCommandData',['../namespaceLD2410Defs.html#a7d2609105c98e4fa48138fe94de0dd2a',1,'LD2410Defs']]], ['receivedata_2eino_4',['receiveData.ino',['../receiveData_8ino.html',1,'']]], - ['refresh_20config_20data_5',['Example: Refresh config data',['../group__LD2410Async__HighLevelCommands.html#autotoc_md23',1,'']]], - ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['refresh_20config_20data_5',['Example: Refresh config data',['../classLD2410Async.html#autotoc_md23',1,'']]], + ['registerconfigchangedcallback_6',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_7',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_8',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_9',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_10',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_11',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], ['requestautoconfigstatuscommand_12',['requestAutoConfigStatusCommand',['../namespaceLD2410Defs.html#a63669f8d129d9806f915b9a02a3b7cde',1,'LD2410Defs']]], ['requestautoconfigstatuscommanddata_13',['requestAutoConfigStatusCommandData',['../namespaceLD2410Defs.html#a0c5878f3ba1164c23d0654fb0b7ea699',1,'LD2410Defs']]], - ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestauxcontrolsettingsasync_14',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], ['requestauxcontrolsettingscommand_15',['requestAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a7e1fc3bc2470fd78f5a01558c1cff303',1,'LD2410Defs']]], ['requestauxcontrolsettingscommanddata_16',['requestAuxControlSettingsCommandData',['../namespaceLD2410Defs.html#a37bbc4c12fbe98883f42b07723efd7dd',1,'LD2410Defs']]], - ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestbluetoothmacaddressasync_17',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_18',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], ['requestdistanceresolutioncommand_19',['requestDistanceResolutionCommand',['../namespaceLD2410Defs.html#af9b20b14a71f3dbf7e5b8519236d51fd',1,'LD2410Defs']]], ['requestdistanceresolutioncommanddata_20',['requestDistanceResolutionCommandData',['../namespaceLD2410Defs.html#a1b320d184f1c89ad7f417e4a02340273',1,'LD2410Defs']]], - ['requestfirmwareasync_21',['requestFirmwareAsync',['../group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestfirmwareasync_21',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], ['requestfirmwarecommand_22',['requestFirmwareCommand',['../namespaceLD2410Defs.html#aa4ab47b1ffaa3dcc9be127e506b30bf2',1,'LD2410Defs']]], ['requestfirmwarecommanddata_23',['requestFirmwareCommandData',['../namespaceLD2410Defs.html#aed0aaf9126c55d8786ddf8335723c2f6',1,'LD2410Defs']]], - ['requestgateparametersasync_24',['requestGateParametersAsync',['../group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['requestgateparametersasync_24',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], ['requestmacaddresscommand_25',['requestMacAddressCommand',['../namespaceLD2410Defs.html#a9558e2afe2a1a0c9c65efcd302bf32df',1,'LD2410Defs']]], ['requestmacaddresscommanddata_26',['requestMacAddressCommandData',['../namespaceLD2410Defs.html#a288ade057ae4a3b8b969f7a5f3dceb62',1,'LD2410Defs']]], ['requestparamscommand_27',['requestParamsCommand',['../namespaceLD2410Defs.html#a8c586edf6788f08c149e463550270b5b',1,'LD2410Defs']]], ['requestparamscommanddata_28',['requestParamsCommandData',['../namespaceLD2410Defs.html#afe9215eabc5e65cf56fcf9c89bc61c01',1,'LD2410Defs']]], - ['resolution_5f20cm_29',['RESOLUTION_20CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_30',['RESOLUTION_75CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], + ['resolution_5f20cm_29',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_30',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]], ['restorefactorsettingscommanddata_31',['restoreFactorSettingsCommandData',['../namespaceLD2410Defs.html#a34d4a3f25195725e3d3ffbb1ed23ae8b',1,'LD2410Defs']]], - ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], + ['restorefactorysettingsasync_32',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]], ['restorefactorysettingsasynccommand_33',['restoreFactorySettingsAsyncCommand',['../namespaceLD2410Defs.html#a84d36b455dbae471e689a52fc92aeb75',1,'LD2410Defs']]], - ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../group__LD2410Async__HighLevelCommands.html#autotoc_md26',1,'']]], - ['run_20auto_20config_35',['Example: Run auto-config',['../group__LD2410Async__NativeCommands.html#autotoc_md17',1,'']]] + ['retrieve_20firmware_20and_20mac_34',['Example: Retrieve firmware and MAC',['../classLD2410Async.html#autotoc_md26',1,'']]], + ['run_20auto_20config_35',['Example: Run auto-config',['../classLD2410Async.html#autotoc_md17',1,'']]] ]; diff --git a/docu/search/all_f.js b/docu/search/all_f.js index 6b30176..70cd1a2 100644 --- a/docu/search/all_f.js +++ b/docu/search/all_f.js @@ -1,8 +1,8 @@ var searchData= [ - ['sensor_20configuration_0',['Sensor Configuration',['../group__LD2410Async__Configuration.html',1,'']]], - ['sensor_20data_1',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], - ['setasynccommandtimeoutms_2',['setAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['sensor_20configuration_0',['Sensor Configuration',['..//github/workspace/dox/topicIndex.dox#group_config',1,'']]], + ['sensor_20data_1',['Static Sensor Data',['..//github/workspace/dox/topicIndex.dox#group_staticdata',1,'']]], + ['setasynccommandtimeoutms_2',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], ['setauxcontrolsettingcommanddata_3',['setAuxControlSettingCommandData',['../namespaceLD2410Defs.html#a17f67486a419c2e53c2a114c70e3475e',1,'LD2410Defs']]], ['setauxcontrolsettingscommand_4',['setAuxControlSettingsCommand',['../namespaceLD2410Defs.html#a2b867a8f8e4028ff10410f8f71f78d18',1,'LD2410Defs']]], ['setbaudratecommand_5',['setBaudRateCommand',['../namespaceLD2410Defs.html#a4c65b0c00cda2003af1eb958d83aab3b',1,'LD2410Defs']]], @@ -12,16 +12,16 @@ var searchData= ['setdistanceresolution20cmcommanddata_9',['setDistanceResolution20cmCommandData',['../namespaceLD2410Defs.html#a41dce04a3403987c72459f430e494151',1,'LD2410Defs']]], ['setdistanceresolution75cmcommanddata_10',['setDistanceResolution75cmCommandData',['../namespaceLD2410Defs.html#a9dd438a7c03fa3263c0536d1cfbc7dfb',1,'LD2410Defs']]], ['setdistanceresolutioncommand_11',['setDistanceResolutionCommand',['../namespaceLD2410Defs.html#a224df157cdb42295da68de5e1d69a7e9',1,'LD2410Defs']]], - ['setinactivityhandling_12',['setInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_13',['setInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], - ['static_20sensor_20data_14',['Static Sensor Data',['../group__LD2410Async__StaticData.html',1,'']]], - ['stationary_5ftarget_15',['STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['setinactivityhandling_12',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_13',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]], + ['static_20sensor_20data_14',['Static Sensor Data',['..//github/workspace/dox/topicIndex.dox#group_staticdata',1,'']]], + ['stationary_5ftarget_15',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], ['stationarypresencedetected_16',['stationaryPresenceDetected',['../structLD2410Types_1_1DetectionData.html#a16c4d7d9899bf62a253c82c2d57f1aad',1,'LD2410Types::DetectionData']]], ['stationarytargetdistance_17',['stationaryTargetDistance',['../structLD2410Types_1_1DetectionData.html#af4c2bdd33c176a09c79da11aebb44317',1,'LD2410Types::DetectionData']]], ['stationarytargetgatesignalcount_18',['stationaryTargetGateSignalCount',['../structLD2410Types_1_1DetectionData.html#a79fb6d1050658ab88b967e9d52052fa1',1,'LD2410Types::DetectionData']]], ['stationarytargetgatesignals_19',['stationaryTargetGateSignals',['../structLD2410Types_1_1DetectionData.html#a0a76b94acfc9d9aa655721c7945c990b',1,'LD2410Types::DetectionData']]], ['stationarytargetsignal_20',['stationaryTargetSignal',['../structLD2410Types_1_1DetectionData.html#a29b0cbb338b2b29c11727427dabf0a73',1,'LD2410Types::DetectionData']]], - ['status_21',['Example: Check auto-config status',['../group__LD2410Async__NativeCommands.html#autotoc_md20',1,'']]], - ['structs_22',['Types, Enums & Structs',['../group__LD2410Async__Types.html',1,'']]], - ['success_23',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['status_21',['Example: Check auto-config status',['../classLD2410Async.html#autotoc_md20',1,'']]], + ['structs_22',['Types, Enums & Structs',['..//github/workspace/dox/topicIndex.dox#group_types',1,'']]], + ['success_23',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enums_0.js b/docu/search/enums_0.js index 907010d..ec7d65e 100644 --- a/docu/search/enums_0.js +++ b/docu/search/enums_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccommandresult_0',['AsyncCommandResult',['../group__LD2410Async__Types.html#ga136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], - ['autoconfigstatus_1',['AutoConfigStatus',['../group__LD2410Async__Types.html#ga035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] + ['asynccommandresult_0',['AsyncCommandResult',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9ab',1,'LD2410Async']]], + ['autoconfigstatus_1',['AutoConfigStatus',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_1.js b/docu/search/enums_1.js index 3c2fd13..b42f7bf 100644 --- a/docu/search/enums_1.js +++ b/docu/search/enums_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['baudrate_0',['Baudrate',['../group__LD2410Async__Types.html#ga5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]] + ['baudrate_0',['Baudrate',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdf',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_2.js b/docu/search/enums_2.js index 280edbe..00380a9 100644 --- a/docu/search/enums_2.js +++ b/docu/search/enums_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['distanceresolution_0',['DistanceResolution',['../group__LD2410Async__Types.html#ga89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]] + ['distanceresolution_0',['DistanceResolution',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_3.js b/docu/search/enums_3.js index a5cc358..7166abd 100644 --- a/docu/search/enums_3.js +++ b/docu/search/enums_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['lightcontrol_0',['LightControl',['../group__LD2410Async__Types.html#gafbd22de9579db591b3f122c51c730844',1,'LD2410Types']]] + ['lightcontrol_0',['LightControl',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_4.js b/docu/search/enums_4.js index 5eb2032..a0866bb 100644 --- a/docu/search/enums_4.js +++ b/docu/search/enums_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['outputcontrol_0',['OutputControl',['../group__LD2410Async__Types.html#ga420c188999635485028764fe98cb0bff',1,'LD2410Types']]] + ['outputcontrol_0',['OutputControl',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bff',1,'LD2410Types']]] ]; diff --git a/docu/search/enums_5.js b/docu/search/enums_5.js index 19cd88d..3addeeb 100644 --- a/docu/search/enums_5.js +++ b/docu/search/enums_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['targetstate_0',['TargetState',['../group__LD2410Async__Types.html#gaf838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]] + ['targetstate_0',['TargetState',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_0.js b/docu/search/enumvalues_0.js index 8144acd..bbbe97c 100644 --- a/docu/search/enumvalues_0.js +++ b/docu/search/enumvalues_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['autoconfig_5ffailed_0',['AUTOCONFIG_FAILED',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], - ['autoconfig_5fin_5fprogress_1',['AUTOCONFIG_IN_PROGRESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], - ['autoconfig_5fsuccess_2',['AUTOCONFIG_SUCCESS',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]] + ['autoconfig_5ffailed_0',['AUTOCONFIG_FAILED',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a34457daa96d2fefedcab7abbaea5d4c9',1,'LD2410Types']]], + ['autoconfig_5fin_5fprogress_1',['AUTOCONFIG_IN_PROGRESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a32aba1429a9e8d50b894a98297baffe8',1,'LD2410Types']]], + ['autoconfig_5fsuccess_2',['AUTOCONFIG_SUCCESS',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ad60df368616de4c39543e44d31e438ae',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_1.js b/docu/search/enumvalues_1.js index 973dad6..ddcfa73 100644 --- a/docu/search/enumvalues_1.js +++ b/docu/search/enumvalues_1.js @@ -1,11 +1,11 @@ var searchData= [ - ['baudrate_5f115200_0',['BAUDRATE_115200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], - ['baudrate_5f19200_1',['BAUDRATE_19200',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], - ['baudrate_5f230500_2',['BAUDRATE_230500',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], - ['baudrate_5f256000_3',['BAUDRATE_256000',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], - ['baudrate_5f38400_4',['BAUDRATE_38400',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], - ['baudrate_5f460800_5',['BAUDRATE_460800',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], - ['baudrate_5f57600_6',['BAUDRATE_57600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], - ['baudrate_5f9600_7',['BAUDRATE_9600',['../group__LD2410Async__Types.html#gga5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]] + ['baudrate_5f115200_0',['BAUDRATE_115200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa78e2af9dfa03cb0b145cddd2ee481c05',1,'LD2410Types']]], + ['baudrate_5f19200_1',['BAUDRATE_19200',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb642209526f1aea2a33487afcb94159',1,'LD2410Types']]], + ['baudrate_5f230500_2',['BAUDRATE_230500',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5e97d4703f775948b24e907306d78f16',1,'LD2410Types']]], + ['baudrate_5f256000_3',['BAUDRATE_256000',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabb06cf6149d2fce5ce3afb72a532695c',1,'LD2410Types']]], + ['baudrate_5f38400_4',['BAUDRATE_38400',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5d3b5ade58788e42c3eaab47a4d42b2e',1,'LD2410Types']]], + ['baudrate_5f460800_5',['BAUDRATE_460800',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfad3d221638ca1f0320781dcb98d0c78d0',1,'LD2410Types']]], + ['baudrate_5f57600_6',['BAUDRATE_57600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfa5b3ed77938aa570e12dc447a6a2aa391',1,'LD2410Types']]], + ['baudrate_5f9600_7',['BAUDRATE_9600',['../namespaceLD2410Types.html#a5e710aa1a69067aab369a0a463189fdfabd5d6d1acbb9749aa6abce438ef0f3a1',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_2.js b/docu/search/enumvalues_2.js index bc6ee19..0733392 100644 --- a/docu/search/enumvalues_2.js +++ b/docu/search/enumvalues_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['canceled_0',['CANCELED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], - ['completed_1',['COMPLETED',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] + ['canceled_0',['CANCELED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad4539bffb6062bdcbd7e7cc1b1228926',1,'LD2410Async']]], + ['completed_1',['COMPLETED',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a8f7afecbc8fbc4cd0f50a57d1172482e',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_3.js b/docu/search/enumvalues_3.js index 6886fbe..8b70985 100644 --- a/docu/search/enumvalues_3.js +++ b/docu/search/enumvalues_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['default_5fhigh_5fdetected_5flow_0',['DEFAULT_HIGH_DETECTED_LOW',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], - ['default_5flow_5fdetected_5fhigh_1',['DEFAULT_LOW_DETECTED_HIGH',['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]] + ['default_5fhigh_5fdetected_5flow_0',['DEFAULT_HIGH_DETECTED_LOW',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa3ca36255fd777b6662239dd4d8aa2761',1,'LD2410Types']]], + ['default_5flow_5fdetected_5fhigh_1',['DEFAULT_LOW_DETECTED_HIGH',['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa7ca3794aa469cedd319ed4d526898946',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_4.js b/docu/search/enumvalues_4.js index 03124b3..b56eb90 100644 --- a/docu/search/enumvalues_4.js +++ b/docu/search/enumvalues_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['failed_0',['FAILED',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] + ['failed_0',['FAILED',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abab9e14d9b2886bcff408b85aefa780419',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_5.js b/docu/search/enumvalues_5.js index 25fa323..44c5705 100644 --- a/docu/search/enumvalues_5.js +++ b/docu/search/enumvalues_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['in_5fprogress_0',['IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]] + ['in_5fprogress_0',['IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995aca69f96c768067fbff6c911ca87bccc9',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_6.js b/docu/search/enumvalues_6.js index 9dabe70..1a51ac3 100644 --- a/docu/search/enumvalues_6.js +++ b/docu/search/enumvalues_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['light_5fabove_5fthreshold_0',['LIGHT_ABOVE_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], - ['light_5fbelow_5fthreshold_1',['LIGHT_BELOW_THRESHOLD',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]] + ['light_5fabove_5fthreshold_0',['LIGHT_ABOVE_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844aa04a7bc4c5ceb6927e051bfb3e1cfd2e',1,'LD2410Types']]], + ['light_5fbelow_5fthreshold_1',['LIGHT_BELOW_THRESHOLD',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a6a9d30a8d1d6df98b89d66c50e47cd6c',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_7.js b/docu/search/enumvalues_7.js index 8aaaa20..e31e54e 100644 --- a/docu/search/enumvalues_7.js +++ b/docu/search/enumvalues_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['moving_5fand_5fstationary_5ftarget_0',['MOVING_AND_STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], - ['moving_5ftarget_1',['MOVING_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]] + ['moving_5fand_5fstationary_5ftarget_0',['MOVING_AND_STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a02ddfbfc6b13ec42ae66161cff02aac5',1,'LD2410Types']]], + ['moving_5ftarget_1',['MOVING_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9ab7ef6f911883522e35247e1c13482929',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_8.js b/docu/search/enumvalues_8.js index a5245f0..ca364ab 100644 --- a/docu/search/enumvalues_8.js +++ b/docu/search/enumvalues_8.js @@ -1,7 +1,7 @@ var searchData= [ - ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], - ['no_5ftarget_1',['NO_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], - ['not_5fin_5fprogress_2',['NOT_IN_PROGRESS',['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], - ['not_5fset_3',['NOT_SET',['../group__LD2410Async__Types.html#ggafbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]] + ['no_5flight_5fcontrol_0',['NO_LIGHT_CONTROL',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844abca5ec936e7f8c6d691a40ccf9db9e21',1,'LD2410Types']]], + ['no_5ftarget_1',['NO_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a25c048a9893a60bddb82dde516ea8d84',1,'LD2410Types']]], + ['not_5fin_5fprogress_2',['NOT_IN_PROGRESS',['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665',1,'LD2410Types']]], + ['not_5fset_3',['NOT_SET',['../namespaceLD2410Types.html#afbd22de9579db591b3f122c51c730844a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a420c188999635485028764fe98cb0bffa1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET'],['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a1c250a21210b7b88a14db9a0cbe71162',1,'LD2410Types::NOT_SET']]] ]; diff --git a/docu/search/enumvalues_9.js b/docu/search/enumvalues_9.js index d49613a..3180f2c 100644 --- a/docu/search/enumvalues_9.js +++ b/docu/search/enumvalues_9.js @@ -1,5 +1,5 @@ var searchData= [ - ['resolution_5f20cm_0',['RESOLUTION_20CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], - ['resolution_5f75cm_1',['RESOLUTION_75CM',['../group__LD2410Async__Types.html#gga89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]] + ['resolution_5f20cm_0',['RESOLUTION_20CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a7d931e972250eb3e9b9557c87fc7c23e',1,'LD2410Types']]], + ['resolution_5f75cm_1',['RESOLUTION_75CM',['../namespaceLD2410Types.html#a89e3189ddef9f36629c460fbeb398c79a868c4df7b718ac01b3bf93354a43c8f8',1,'LD2410Types']]] ]; diff --git a/docu/search/enumvalues_a.js b/docu/search/enumvalues_a.js index b3f4916..5cb9cc1 100644 --- a/docu/search/enumvalues_a.js +++ b/docu/search/enumvalues_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['stationary_5ftarget_0',['STATIONARY_TARGET',['../group__LD2410Async__Types.html#ggaf838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], - ['success_1',['SUCCESS',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] + ['stationary_5ftarget_0',['STATIONARY_TARGET',['../namespaceLD2410Types.html#af838f34651382f6262c0d19397ac0be9a6aa821dbd79ebda38affe6beabf940c4',1,'LD2410Types']]], + ['success_1',['SUCCESS',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9abad0749aaba8b833466dfcbb0428e4f89c',1,'LD2410Async']]] ]; diff --git a/docu/search/enumvalues_b.js b/docu/search/enumvalues_b.js index 40b3921..c466cc0 100644 --- a/docu/search/enumvalues_b.js +++ b/docu/search/enumvalues_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['timeout_0',['TIMEOUT',['../group__LD2410Async__Types.html#gga136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] + ['timeout_0',['TIMEOUT',['../classLD2410Async.html#a136b50e19cfddad787637fb65421d9aba070a0fb40f6c308ab544b227660aadff',1,'LD2410Async']]] ]; diff --git a/docu/search/files_2.js b/docu/search/files_2.js index 245a17f..a2d31b9 100644 --- a/docu/search/files_2.js +++ b/docu/search/files_2.js @@ -1,4 +1,9 @@ var searchData= [ - ['groups_2edox_0',['groups.dox',['../groups_8dox.html',1,'']]] + ['ld2410async_2ecpp_0',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], + ['ld2410async_2eh_1',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], + ['ld2410commandbuilder_2eh_2',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], + ['ld2410debug_2eh_3',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], + ['ld2410defs_2eh_4',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], + ['ld2410types_2eh_5',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]] ]; diff --git a/docu/search/files_3.js b/docu/search/files_3.js index a2d31b9..2f336a6 100644 --- a/docu/search/files_3.js +++ b/docu/search/files_3.js @@ -1,9 +1,4 @@ var searchData= [ - ['ld2410async_2ecpp_0',['LD2410Async.cpp',['../LD2410Async_8cpp.html',1,'']]], - ['ld2410async_2eh_1',['LD2410Async.h',['../LD2410Async_8h.html',1,'']]], - ['ld2410commandbuilder_2eh_2',['LD2410CommandBuilder.h',['../LD2410CommandBuilder_8h.html',1,'']]], - ['ld2410debug_2eh_3',['LD2410Debug.h',['../LD2410Debug_8h.html',1,'']]], - ['ld2410defs_2eh_4',['LD2410Defs.h',['../LD2410Defs_8h.html',1,'']]], - ['ld2410types_2eh_5',['LD2410Types.h',['../LD2410Types_8h.html',1,'']]] + ['receivedata_2eino_0',['receiveData.ino',['../receiveData_8ino.html',1,'']]] ]; diff --git a/docu/search/files_4.js b/docu/search/files_4.js index 2f336a6..388951f 100644 --- a/docu/search/files_4.js +++ b/docu/search/files_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['receivedata_2eino_0',['receiveData.ino',['../receiveData_8ino.html',1,'']]] + ['topicindex_2edox_0',['topicIndex.dox',['../topicIndex_8dox.html',1,'']]] ]; diff --git a/docu/search/functions_0.js b/docu/search/functions_0.js index ede188b..0d75dd8 100644 --- a/docu/search/functions_0.js +++ b/docu/search/functions_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['asynccancel_0',['asyncCancel',['../group__LD2410Async__AsyncCommands.html#ga072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], - ['asyncisbusy_1',['asyncIsBusy',['../group__LD2410Async__AsyncCommands.html#ga72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]] + ['asynccancel_0',['asyncCancel',['../classLD2410Async.html#a072ae754e7f12512e8051f4c6246e1e1',1,'LD2410Async']]], + ['asyncisbusy_1',['asyncIsBusy',['../classLD2410Async.html#a72e853afaba8373fb90524c3c4e8a153',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_1.js b/docu/search/functions_1.js index f5c4808..0818f99 100644 --- a/docu/search/functions_1.js +++ b/docu/search/functions_1.js @@ -1,7 +1,7 @@ var searchData= [ - ['begin_0',['begin',['../group__LD2410Async__MainMethods.html#ga1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], - ['beginautoconfigasync_1',['beginAutoConfigAsync',['../group__LD2410Async__NativeCommands.html#gaed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], + ['begin_0',['begin',['../classLD2410Async.html#a1358f6f0b8d55a676b5b8147906c9024',1,'LD2410Async']]], + ['beginautoconfigasync_1',['beginAutoConfigAsync',['../classLD2410Async.html#aed89a0870ddacee96bc2f0fb9c1c96fc',1,'LD2410Async']]], ['bufferendswith_2',['bufferEndsWith',['../LD2410Async_8cpp.html#a3c7c41f9027f8d9ab4917e6a50ed045e',1,'LD2410Async.cpp']]], ['buildauxcontrolcommand_3',['buildAuxControlCommand',['../namespaceLD2410CommandBuilder.html#a8b54a13a534e713b1fc2b29818bbe255',1,'LD2410CommandBuilder']]], ['buildbaudratecommand_4',['buildBaudRateCommand',['../namespaceLD2410CommandBuilder.html#af8eb163ccaa819b1504b79459ed48729',1,'LD2410CommandBuilder']]], diff --git a/docu/search/functions_2.js b/docu/search/functions_2.js index b1a9b56..cf88833 100644 --- a/docu/search/functions_2.js +++ b/docu/search/functions_2.js @@ -1,13 +1,13 @@ var searchData= [ - ['configureallconfigsettingsasync_0',['configureAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#ga509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], - ['configureauxcontrolsettingsasync_1',['configureAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#ga90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], - ['configurebaudrateasync_2',['configureBaudRateAsync',['../group__LD2410Async__NativeCommands.html#ga39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gadcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], - ['configurebluetoothpasswordasync_3',['configureBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gaaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#gabfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredefaultbluetoothpasswordasync_4',['configureDefaultBluetoothPasswordAsync',['../group__LD2410Async__NativeCommands.html#gab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], - ['configuredistancegatesensitivityasync_5',['configureDistanceGateSensitivityAsync',['../group__LD2410Async__NativeCommands.html#ga1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../group__LD2410Async__NativeCommands.html#ga9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], - ['configuredistanceresolution75cmasync_6',['configureDistanceResolution75cmAsync',['../group__LD2410Async__NativeCommands.html#ga3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], - ['configuredistanceresolutionasync_7',['configureDistanceResolutionAsync',['../group__LD2410Async__NativeCommands.html#gae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], - ['configuremaxgateandnoonetimeoutasync_8',['configureMaxGateAndNoOneTimeoutAsync',['../group__LD2410Async__NativeCommands.html#ga0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], - ['configuresdistanceresolution20cmasync_9',['configuresDistanceResolution20cmAsync',['../group__LD2410Async__NativeCommands.html#ga01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] + ['configureallconfigsettingsasync_0',['configureAllConfigSettingsAsync',['../classLD2410Async.html#a509170bfc50580131d0c72f5c91daede',1,'LD2410Async']]], + ['configureauxcontrolsettingsasync_1',['configureAuxControlSettingsAsync',['../classLD2410Async.html#a90e3bc56482783249d966a670310bffd',1,'LD2410Async']]], + ['configurebaudrateasync_2',['configureBaudRateAsync',['../classLD2410Async.html#a39aa1e94b76c2a08d96ab80fe2c9ed9c',1,'LD2410Async::configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#adcd209213cc2e418aefd20573a868e0a',1,'LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)']]], + ['configurebluetoothpasswordasync_3',['configureBluetoothPasswordAsync',['../classLD2410Async.html#aaa0138cb624b66482e9a05b197c21f22',1,'LD2410Async::configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#abfe79850fa3e040a12de72ea99747266',1,'LD2410Async::configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredefaultbluetoothpasswordasync_4',['configureDefaultBluetoothPasswordAsync',['../classLD2410Async.html#ab9f9858ab6d6cf4c4ab91e4580a2ea50',1,'LD2410Async']]], + ['configuredistancegatesensitivityasync_5',['configureDistanceGateSensitivityAsync',['../classLD2410Async.html#a1cf70cb5f55626596530d050b0812b38',1,'LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)'],['../classLD2410Async.html#a9493caef9e22a89445741da019b99213',1,'LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)']]], + ['configuredistanceresolution75cmasync_6',['configureDistanceResolution75cmAsync',['../classLD2410Async.html#a3ebfc3c3547f3894ae264b82a32c1a82',1,'LD2410Async']]], + ['configuredistanceresolutionasync_7',['configureDistanceResolutionAsync',['../classLD2410Async.html#ae6e3792586e3bac35ca187d41a0b9250',1,'LD2410Async']]], + ['configuremaxgateandnoonetimeoutasync_8',['configureMaxGateAndNoOneTimeoutAsync',['../classLD2410Async.html#a0eb274f41635209e31f34f869fe1826a',1,'LD2410Async']]], + ['configuresdistanceresolution20cmasync_9',['configuresDistanceResolution20cmAsync',['../classLD2410Async.html#a01705b527bc80949417de15b6e95140c',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_3.js b/docu/search/functions_3.js index 3465875..072953d 100644 --- a/docu/search/functions_3.js +++ b/docu/search/functions_3.js @@ -1,7 +1,7 @@ var searchData= [ - ['disablebluetoothasync_0',['disableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#gaddcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], - ['disableconfigmodeasync_1',['disableConfigModeAsync',['../group__LD2410Async__Configuration.html#ga99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], - ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../group__LD2410Async__AsyncCommands.html#ga377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], - ['disableinactivityhandling_3',['disableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] + ['disablebluetoothasync_0',['disableBluetoothAsync',['../classLD2410Async.html#addcbab1709f2a80571563609f4a23862',1,'LD2410Async']]], + ['disableconfigmodeasync_1',['disableConfigModeAsync',['../classLD2410Async.html#a99910e37f7cf20d05be573fec341ef0c',1,'LD2410Async']]], + ['disableengineeringmodeasync_2',['disableEngineeringModeAsync',['../classLD2410Async.html#a377464026350140b0277369a13e8c1d3',1,'LD2410Async']]], + ['disableinactivityhandling_3',['disableInactivityHandling',['../classLD2410Async.html#a66ca514c34bec7957b46395dabb602f2',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_4.js b/docu/search/functions_4.js index 00e8794..4151ded 100644 --- a/docu/search/functions_4.js +++ b/docu/search/functions_4.js @@ -1,9 +1,9 @@ var searchData= [ - ['enablebluetoothasync_0',['enableBluetoothAsync',['../group__LD2410Async__NativeCommands.html#ga9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], - ['enableconfigmodeasync_1',['enableConfigModeAsync',['../group__LD2410Async__Configuration.html#gad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], - ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../group__LD2410Async__PresenceDetection.html#gad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], - ['enableinactivityhandling_3',['enableInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], - ['end_4',['end',['../group__LD2410Async__MainMethods.html#gaf52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], + ['enablebluetoothasync_0',['enableBluetoothAsync',['../classLD2410Async.html#a9ebecb17389f2dffb7c2d86c607be973',1,'LD2410Async']]], + ['enableconfigmodeasync_1',['enableConfigModeAsync',['../classLD2410Async.html#ad24f13c9381aa35460908b4c0edb5fa9',1,'LD2410Async']]], + ['enableengineeringmodeasync_2',['enableEngineeringModeAsync',['../classLD2410Async.html#ad7b1c7d38ac3948ebf159b20e1a3bb1d',1,'LD2410Async']]], + ['enableinactivityhandling_3',['enableInactivityHandling',['../classLD2410Async.html#a3e538b0e12f6aa3f28fc025e54aa2dc3',1,'LD2410Async']]], + ['end_4',['end',['../classLD2410Async.html#af52e0e8aaa30a81fa84024fdb975aa54',1,'LD2410Async']]], ['equals_5',['equals',['../structLD2410Types_1_1ConfigData.html#a3b184d70dc6af3ac292325b7ffbd5028',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_5.js b/docu/search/functions_5.js index 1feaf6f..7a0cce8 100644 --- a/docu/search/functions_5.js +++ b/docu/search/functions_5.js @@ -1,9 +1,9 @@ var searchData= [ - ['getasynccommandtimeoutms_0',['getAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], - ['getconfigdata_1',['getConfigData',['../group__LD2410Async__PublicData.html#ga54388c929cea610f92891def29db66a5',1,'LD2410Async']]], - ['getconfigdataref_2',['getConfigDataRef',['../group__LD2410Async__PublicData.html#gaf9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], - ['getdetectiondata_3',['getDetectionData',['../group__LD2410Async__PublicData.html#ga5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], - ['getdetectiondataref_4',['getDetectionDataRef',['../group__LD2410Async__PublicData.html#gade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], - ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga74138af198ac827349a25e122277803f',1,'LD2410Async']]] + ['getasynccommandtimeoutms_0',['getAsyncCommandTimeoutMs',['../classLD2410Async.html#a93962bd109f67775ea3420596207b23a',1,'LD2410Async']]], + ['getconfigdata_1',['getConfigData',['../classLD2410Async.html#a54388c929cea610f92891def29db66a5',1,'LD2410Async']]], + ['getconfigdataref_2',['getConfigDataRef',['../classLD2410Async.html#af9f1d59211106a3b582a1417063b3a13',1,'LD2410Async']]], + ['getdetectiondata_3',['getDetectionData',['../classLD2410Async.html#a5bf997474cd5eb58ac2a142a8d134a50',1,'LD2410Async']]], + ['getdetectiondataref_4',['getDetectionDataRef',['../classLD2410Async.html#ade2ef7c106c38e11fd450e75a6494090',1,'LD2410Async']]], + ['getinactivitytimeoutms_5',['getInactivityTimeoutMs',['../classLD2410Async.html#a74138af198ac827349a25e122277803f',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_6.js b/docu/search/functions_6.js index d7470b0..8c8e0e6 100644 --- a/docu/search/functions_6.js +++ b/docu/search/functions_6.js @@ -1,7 +1,7 @@ var searchData= [ - ['isconfigmodeenabled_0',['isConfigModeEnabled',['../group__LD2410Async__Configuration.html#ga250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], - ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../group__LD2410Async__PresenceDetection.html#gad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], - ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../group__LD2410Async__InactivityHandling.html#gadd4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], + ['isconfigmodeenabled_0',['isConfigModeEnabled',['../classLD2410Async.html#a250de0cee1571020fa8b8f97ba9baa48',1,'LD2410Async']]], + ['isengineeringmodeenabled_1',['isEngineeringModeEnabled',['../classLD2410Async.html#ad2909a5a2c7c92b72e49ce93ddc59d19',1,'LD2410Async']]], + ['isinactivityhandlingenabled_2',['isInactivityHandlingEnabled',['../classLD2410Async.html#add4c4dc22728796a020d8c5490781bb6',1,'LD2410Async']]], ['isvalid_3',['isValid',['../structLD2410Types_1_1ConfigData.html#a78c2665adcc382224455dfde7f05b885',1,'LD2410Types::ConfigData']]] ]; diff --git a/docu/search/functions_7.js b/docu/search/functions_7.js index 277a0ca..92323e6 100644 --- a/docu/search/functions_7.js +++ b/docu/search/functions_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['ld2410async_0',['LD2410Async',['../group__LD2410Async__MainMethods.html#gac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] + ['ld2410async_0',['LD2410Async',['../classLD2410Async.html#ac500fb301e250ede1a608c67fc1a8900',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_9.js b/docu/search/functions_9.js index 9dc65ce..237074f 100644 --- a/docu/search/functions_9.js +++ b/docu/search/functions_9.js @@ -1,16 +1,16 @@ var searchData= [ - ['rebootasync_0',['rebootAsync',['../group__LD2410Async__NativeCommands.html#gaeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], - ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../group__LD2410Async__Configuration.html#ga714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], - ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../group__LD2410Async__Configuration.html#gad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], - ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../group__LD2410Async__PresenceDetection.html#gaf4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], - ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../group__LD2410Async__HighLevelCommands.html#gab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], - ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../group__LD2410Async__HighLevelCommands.html#ga86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], - ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../group__LD2410Async__NativeCommands.html#gad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], - ['requestauxcontrolsettingsasync_7',['requestAuxControlSettingsAsync',['../group__LD2410Async__NativeCommands.html#gafaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], - ['requestbluetoothmacaddressasync_8',['requestBluetoothMacAddressAsync',['../group__LD2410Async__NativeCommands.html#ga3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], - ['requestdistanceresolutioncmasync_9',['requestDistanceResolutioncmAsync',['../group__LD2410Async__NativeCommands.html#ga3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], - ['requestfirmwareasync_10',['requestFirmwareAsync',['../group__LD2410Async__NativeCommands.html#ga5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], - ['requestgateparametersasync_11',['requestGateParametersAsync',['../group__LD2410Async__NativeCommands.html#gad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], - ['restorefactorysettingsasync_12',['restoreFactorySettingsAsync',['../group__LD2410Async__NativeCommands.html#gaadb841697a992c1bf203944211bd8659',1,'LD2410Async']]] + ['rebootasync_0',['rebootAsync',['../classLD2410Async.html#aeb856d32612fba953b07280cf5d9a235',1,'LD2410Async']]], + ['registerconfigchangedcallback_1',['registerConfigChangedCallback',['../classLD2410Async.html#a714e62534394a52243f8f50fd58726f9',1,'LD2410Async']]], + ['registerconfigupdatereceivedcallback_2',['registerConfigUpdateReceivedCallback',['../classLD2410Async.html#ad320d7e80fd719f0bbc41ebb96c0f285',1,'LD2410Async']]], + ['registerdetectiondatareceivedcallback_3',['registerDetectionDataReceivedCallback',['../classLD2410Async.html#af4a5bb569a656f369f739060b9a3f282',1,'LD2410Async']]], + ['requestallconfigsettingsasync_4',['requestAllConfigSettingsAsync',['../classLD2410Async.html#ab578ee25526c8bb808fe7200fae95a38',1,'LD2410Async']]], + ['requestallstaticdataasync_5',['requestAllStaticDataAsync',['../classLD2410Async.html#a86968c2e9be09d9acb6b62ad7496a2a6',1,'LD2410Async']]], + ['requestautoconfigstatusasync_6',['requestAutoConfigStatusAsync',['../classLD2410Async.html#ad219580b6e47f54a8aac0847e2054bf6',1,'LD2410Async']]], + ['requestauxcontrolsettingsasync_7',['requestAuxControlSettingsAsync',['../classLD2410Async.html#afaa6e2c1842ebd96c6e04fe542af66cb',1,'LD2410Async']]], + ['requestbluetoothmacaddressasync_8',['requestBluetoothMacAddressAsync',['../classLD2410Async.html#a3923c4b746d90fbd314eae7094bb90be',1,'LD2410Async']]], + ['requestdistanceresolutioncmasync_9',['requestDistanceResolutioncmAsync',['../classLD2410Async.html#a3260f74672079a7200f210e4ffde1046',1,'LD2410Async']]], + ['requestfirmwareasync_10',['requestFirmwareAsync',['../classLD2410Async.html#a5eeae3b4525a303e0e3bc208c4bcff21',1,'LD2410Async']]], + ['requestgateparametersasync_11',['requestGateParametersAsync',['../classLD2410Async.html#ad7bfb9c212c452898053f167555a0bb6',1,'LD2410Async']]], + ['restorefactorysettingsasync_12',['restoreFactorySettingsAsync',['../classLD2410Async.html#aadb841697a992c1bf203944211bd8659',1,'LD2410Async']]] ]; diff --git a/docu/search/functions_a.js b/docu/search/functions_a.js index d7342b2..4246c3c 100644 --- a/docu/search/functions_a.js +++ b/docu/search/functions_a.js @@ -1,6 +1,6 @@ var searchData= [ - ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../group__LD2410Async__AsyncCommands.html#ga5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], - ['setinactivityhandling_1',['setInactivityHandling',['../group__LD2410Async__InactivityHandling.html#ga4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], - ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../group__LD2410Async__InactivityHandling.html#ga0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] + ['setasynccommandtimeoutms_0',['setAsyncCommandTimeoutMs',['../classLD2410Async.html#a5e5d9d9537d918a27abb1c1f8e56d325',1,'LD2410Async']]], + ['setinactivityhandling_1',['setInactivityHandling',['../classLD2410Async.html#a4b30773f7a69dad507caaa636f08fa76',1,'LD2410Async']]], + ['setinactivitytimeoutms_2',['setInactivityTimeoutMs',['../classLD2410Async.html#a0abdd66e6b6bdbef7b1b262cdf286aa4',1,'LD2410Async']]] ]; diff --git a/docu/search/pages_0.js b/docu/search/pages_0.js index d0cc836..6dcfa13 100644 --- a/docu/search/pages_0.js +++ b/docu/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['ld2410async_0',['LD2410Async',['../index.html',1,'']]] + ['by_20topic_0',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]] ]; diff --git a/docu/search/pages_1.js b/docu/search/pages_1.js new file mode 100644 index 0000000..d62a05e --- /dev/null +++ b/docu/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['index_20by_20topic_0',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]] +]; diff --git a/docu/search/pages_2.js b/docu/search/pages_2.js new file mode 100644 index 0000000..ee9167b --- /dev/null +++ b/docu/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ld2410async_0',['LD2410Async',['../index.html',1,'']]], + ['ld2410async_3a_20index_20by_20topic_1',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]] +]; diff --git a/docu/search/pages_3.js b/docu/search/pages_3.js new file mode 100644 index 0000000..e5873fe --- /dev/null +++ b/docu/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['topic_0',['LD2410Async: Index by topic',['../LD2410Async_TopicIndex.html',1,'']]] +]; diff --git a/docu/search/searchdata.js b/docu/search/searchdata.js index 106fbfe..1bb1cf3 100644 --- a/docu/search/searchdata.js +++ b/docu/search/searchdata.js @@ -3,15 +3,14 @@ var indexSectionsWithContent = 0: "abcdefghilmnoprstuvw", 1: "cdl", 2: "l", - 3: "bcglr", + 3: "bclrt", 4: "abcdegilprs", 5: "abcdefghlmnoprst", 6: "adg", 7: "abdlot", 8: "abcdfilmnrst", 9: "dl", - 10: "abcdehilmnpst", - 11: "l" + 10: "bilt" }; var indexSectionNames = @@ -26,8 +25,7 @@ var indexSectionNames = 7: "enums", 8: "enumvalues", 9: "defines", - 10: "groups", - 11: "pages" + 10: "pages" }; var indexSectionLabels = @@ -42,7 +40,6 @@ var indexSectionLabels = 7: "Enumerations", 8: "Enumerator", 9: "Macros", - 10: "Modules", - 11: "Pages" + 10: "Pages" }; diff --git a/docu/search/typedefs_0.js b/docu/search/typedefs_0.js index 60a0112..f554ef9 100644 --- a/docu/search/typedefs_0.js +++ b/docu/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['asynccommandcallback_0',['AsyncCommandCallback',['../group__LD2410Async__Callbacks.html#gadc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] + ['asynccommandcallback_0',['AsyncCommandCallback',['../classLD2410Async.html#adc0bdb769283d0d49aaaebc9c10dc603',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_1.js b/docu/search/typedefs_1.js index 200abe5..111b7e0 100644 --- a/docu/search/typedefs_1.js +++ b/docu/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['detectiondatacallback_0',['DetectionDataCallback',['../group__LD2410Async__PresenceDetection.html#ga19278199112e9358e96a192056e58e81',1,'LD2410Async']]] + ['detectiondatacallback_0',['DetectionDataCallback',['../classLD2410Async.html#a19278199112e9358e96a192056e58e81',1,'LD2410Async']]] ]; diff --git a/docu/search/typedefs_2.js b/docu/search/typedefs_2.js index 21d8fc9..d967de0 100644 --- a/docu/search/typedefs_2.js +++ b/docu/search/typedefs_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['genericcallback_0',['GenericCallback',['../group__LD2410Async__Callbacks.html#ga7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] + ['genericcallback_0',['GenericCallback',['../classLD2410Async.html#a7a4e264e51ed33f8f32d65510289c383',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_0.js b/docu/search/variables_0.js index 29b35f0..1e3a26c 100644 --- a/docu/search/variables_0.js +++ b/docu/search/variables_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['autoconfigstatus_0',['autoConfigStatus',['../group__LD2410Async__PublicData.html#gaa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] + ['autoconfigstatus_0',['autoConfigStatus',['../classLD2410Async.html#aa6ee467bd1911a2bb8d06b48a3e5b694',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_1.js b/docu/search/variables_1.js index a21e48a..c7266ad 100644 --- a/docu/search/variables_1.js +++ b/docu/search/variables_1.js @@ -5,5 +5,5 @@ var searchData= ['bluetoothsettingscommand_2',['bluetoothSettingsCommand',['../namespaceLD2410Defs.html#a339b0ed2010ad37503a32f05fb79f105',1,'LD2410Defs']]], ['bluetoothsettingsoffcommanddata_3',['bluetoothSettingsOffCommandData',['../namespaceLD2410Defs.html#a94d0e80954d9fd9303361ed7c6b859c7',1,'LD2410Defs']]], ['bluetoothsettingsoncommanddata_4',['bluetoothSettingsOnCommandData',['../namespaceLD2410Defs.html#a8791ca49d8e8f59a1624168988a9adb8',1,'LD2410Defs']]], - ['buffersize_5',['bufferSize',['../group__LD2410Async__StaticData.html#gac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] + ['buffersize_5',['bufferSize',['../classLD2410Async.html#ac5ec829f7d9077e77a8155d0b7e253f1',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_2.js b/docu/search/variables_2.js index edbd71e..090f1af 100644 --- a/docu/search/variables_2.js +++ b/docu/search/variables_2.js @@ -1,9 +1,9 @@ var searchData= [ - ['configdata_0',['configData',['../group__LD2410Async__Configuration.html#ga6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], + ['configdata_0',['configData',['../classLD2410Async.html#a6495ed4d6773b25b21f09c207897cc02',1,'LD2410Async']]], ['configdisablecommand_1',['configDisableCommand',['../namespaceLD2410Defs.html#a19f0400caf0a9d8f5154e9bde1fc4e89',1,'LD2410Defs']]], ['configdisablecommanddata_2',['configDisableCommandData',['../namespaceLD2410Defs.html#abe7cd26a356520b78f95a19f93c07584',1,'LD2410Defs']]], ['configenablecommand_3',['configEnableCommand',['../namespaceLD2410Defs.html#ad01a5350b3a1446500b3718fdde2bc55',1,'LD2410Defs']]], ['configenablecommanddata_4',['configEnableCommandData',['../namespaceLD2410Defs.html#a24c181140918fe672b14eafdf004cec3',1,'LD2410Defs']]], - ['configmodeenabled_5',['configModeEnabled',['../group__LD2410Async__PublicData.html#ga77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] + ['configmodeenabled_5',['configModeEnabled',['../classLD2410Async.html#a77e2a7d4aa981b40334302c37fcc6da7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_3.js b/docu/search/variables_3.js index 50ef794..48d60d4 100644 --- a/docu/search/variables_3.js +++ b/docu/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ ['detecteddistance_0',['detectedDistance',['../structLD2410Types_1_1DetectionData.html#a559f723db6a5b2fe88ab99c39b1b6507',1,'LD2410Types::DetectionData']]], - ['detectiondata_1',['detectionData',['../group__LD2410Async__PresenceDetection.html#gaa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], + ['detectiondata_1',['detectionData',['../classLD2410Async.html#aa46b4b77c4280a97be324c98562073c8',1,'LD2410Async']]], ['distancegatemotionsensitivity_2',['distanceGateMotionSensitivity',['../structLD2410Types_1_1ConfigData.html#a16240bb5af9b2e367e78a5fc2c4e107c',1,'LD2410Types::ConfigData']]], ['distancegatesensitivityconfigcommand_3',['distanceGateSensitivityConfigCommand',['../namespaceLD2410Defs.html#a2bce8cbfc0a5b390431492c2b34bf9f8',1,'LD2410Defs']]], ['distancegatesensitivityconfigcommanddata_4',['distanceGateSensitivityConfigCommandData',['../namespaceLD2410Defs.html#a38aba7176fd8cb28fb74ae61e8b237f4',1,'LD2410Defs']]], diff --git a/docu/search/variables_4.js b/docu/search/variables_4.js index 5a2a376..0aba132 100644 --- a/docu/search/variables_4.js +++ b/docu/search/variables_4.js @@ -5,5 +5,5 @@ var searchData= ['engineeringmodedisablecommanddata_2',['engineeringModeDisableCommandData',['../namespaceLD2410Defs.html#a75813422aaa9f9c2e7e9aee1bcbb2939',1,'LD2410Defs']]], ['engineeringmodeenablecomand_3',['engineeringModeEnableComand',['../namespaceLD2410Defs.html#af71a5ec1c13f5f070d63b61300505fd9',1,'LD2410Defs']]], ['engineeringmodeenablecommanddata_4',['engineeringModeEnableCommandData',['../namespaceLD2410Defs.html#af478c0573d7fd15a2e1b5a5c4534241d',1,'LD2410Defs']]], - ['engineeringmodeenabled_5',['engineeringModeEnabled',['../group__LD2410Async__PublicData.html#gaac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] + ['engineeringmodeenabled_5',['engineeringModeEnabled',['../classLD2410Async.html#aac3eef4a0da57ccc1c32d28dd029ccc7',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_5.js b/docu/search/variables_5.js index 2d05f12..d2f07d1 100644 --- a/docu/search/variables_5.js +++ b/docu/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['firmware_0',['firmware',['../group__LD2410Async__StaticData.html#ga70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] + ['firmware_0',['firmware',['../classLD2410Async.html#a70f850c8a6262c948b0fe7705a8b9caf',1,'LD2410Async']]] ]; diff --git a/docu/search/variables_9.js b/docu/search/variables_9.js index 5792ba7..11bf95a 100644 --- a/docu/search/variables_9.js +++ b/docu/search/variables_9.js @@ -1,7 +1,7 @@ var searchData= [ - ['mac_0',['mac',['../group__LD2410Async__StaticData.html#ga80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], - ['macstring_1',['macString',['../group__LD2410Async__StaticData.html#ga86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], + ['mac_0',['mac',['../classLD2410Async.html#a80ed3831922280cb6c912b4928e4754e',1,'LD2410Async']]], + ['macstring_1',['macString',['../classLD2410Async.html#a86241ae8f71137b12661a5d72f3ac9b1',1,'LD2410Async']]], ['maxgatecommand_2',['maxGateCommand',['../namespaceLD2410Defs.html#ab608eaab7657a8a9b017963743382816',1,'LD2410Defs']]], ['maxgatecommanddata_3',['maxGateCommandData',['../namespaceLD2410Defs.html#a4ad071572bfd4cd28163b87cd3774e97',1,'LD2410Defs']]], ['maxmotiondistancegate_4',['maxMotionDistanceGate',['../structLD2410Types_1_1ConfigData.html#a18a9dc2b43a849c46892158fcfa9b382',1,'LD2410Types::ConfigData']]], diff --git a/docu/search/variables_c.js b/docu/search/variables_c.js index 8525267..f458503 100644 --- a/docu/search/variables_c.js +++ b/docu/search/variables_c.js @@ -1,5 +1,5 @@ var searchData= [ ['presencedetected_0',['presenceDetected',['../structLD2410Types_1_1DetectionData.html#aa617db540a884f75ee26c0a850c55023',1,'LD2410Types::DetectionData']]], - ['protocolversion_1',['protocolVersion',['../group__LD2410Async__StaticData.html#gad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] + ['protocolversion_1',['protocolVersion',['../classLD2410Async.html#ad807582b1b6fb2fb0a461c346794b40b',1,'LD2410Async']]] ]; diff --git a/docu/structLD2410Types_1_1ConfigData.html b/docu/structLD2410Types_1_1ConfigData.html index 8f0d668..b7c609f 100644 --- a/docu/structLD2410Types_1_1ConfigData.html +++ b/docu/structLD2410Types_1_1ConfigData.html @@ -101,7 +101,7 @@ Public Member Functions | Public Attributes | List of all members -
    LD2410Types::ConfigData Struct Reference
    +
    LD2410Types::ConfigData Struct Reference
    @@ -142,16 +142,16 @@ unsigned short noOneTimeout = 0  Timeout (seconds) until "no presence" is declared.
      -DistanceResolution distanceResolution = DistanceResolution::NOT_SET +DistanceResolution distanceResolution = DistanceResolution::NOT_SET  Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
      byte lightThreshold = 0  Threshold for auxiliary light control (0–255).
      -LightControl lightControl = LightControl::NOT_SET +LightControl lightControl = LightControl::NOT_SET  Light-dependent auxiliary control mode.
      -OutputControl outputControl = OutputControl::NOT_SET +OutputControl outputControl = OutputControl::NOT_SET  Logic configuration of the OUT pin.
      @@ -254,9 +254,9 @@

    Definition at line 406 of file LD2410Types.h.

    406 {
    407 // Validate enum settings
    - -
    409 if (lightControl == LightControl::NOT_SET) return false;
    -
    410 if (outputControl == OutputControl::NOT_SET) return false;
    + +
    409 if (lightControl == LightControl::NOT_SET) return false;
    +
    410 if (outputControl == OutputControl::NOT_SET) return false;
    411
    412 // Validate max distance gates
    @@ -270,9 +270,9 @@

    421

    422 return true;
    423 }
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    +
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...

    @@ -394,7 +394,7 @@

    - +
    DistanceResolution LD2410Types::ConfigData::distanceResolution = DistanceResolution::NOT_SETDistanceResolution LD2410Types::ConfigData::distanceResolution = DistanceResolution::NOT_SET
    -
    LD2410Types::DetectionData Struct Reference
    +
    LD2410Types::DetectionData Struct Reference
    diff --git a/docu/topicIndex_8dox.html b/docu/topicIndex_8dox.html new file mode 100644 index 0000000..06bc90b --- /dev/null +++ b/docu/topicIndex_8dox.html @@ -0,0 +1,113 @@ + + + + + + + +LD2410Async: topicIndex.dox File Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    LD2410Async +
    +
    Asynchronous Arduino ESP32 library for the LD2410 mmWave radar sensor
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    topicIndex.dox File Reference
    +
    +
    +
    +
    + +
    + + From 76c5dd06e811e768a4c0f1e8ac72579ae967f703 Mon Sep 17 00:00:00 2001 From: Lizard King Date: Mon, 29 Sep 2025 21:49:24 +0200 Subject: [PATCH 029/114] all ingroup directives dumped --- LD2410Async.vcxitems | 1 - LD2410Async.vcxitems.filters | 1 - dox/topicIndex.dox | 247 ----------------------------------- src/LD2410Async.h | 147 +-------------------- src/LD2410Types.h | 16 --- 5 files changed, 2 insertions(+), 410 deletions(-) delete mode 100644 dox/topicIndex.dox diff --git a/LD2410Async.vcxitems b/LD2410Async.vcxitems index 5b76810..cb36aec 100644 --- a/LD2410Async.vcxitems +++ b/LD2410Async.vcxitems @@ -25,7 +25,6 @@ - diff --git a/LD2410Async.vcxitems.filters b/LD2410Async.vcxitems.filters index 444b1a0..885d929 100644 --- a/LD2410Async.vcxitems.filters +++ b/LD2410Async.vcxitems.filters @@ -35,7 +35,6 @@ - diff --git a/dox/topicIndex.dox b/dox/topicIndex.dox deleted file mode 100644 index 1902d4f..0000000 --- a/dox/topicIndex.dox +++ /dev/null @@ -1,247 +0,0 @@ -/** - * @page LD2410Async_TopicIndex LD2410Async: Index by topic - * - * Overview of all important methods, types and data, sorted by topic. - */ - -/** - * @section group_types Types, Enums & Structs - * @ingroup LD2410Async_Types - * - * Type, enum and struct definitions that are used by the LD2410Async lib. - * - * - @ref LD2410Async::AsyncCommandResult - *
    Result of an asynchronous command execution. - * - @ref LD2410Async::AsyncCommandCallback - *
    Callback signature for asynchronous command completion. - * - @ref LD2410Async::GenericCallback - *
    Generic callback signature used for simple notifications. - * - @ref LD2410Async::DetectionDataCallback - *
    Callback type for receiving detection data events. - */ - -/** - * @section group_callbacks Callbacks - * @ingroup LD2410Async_Callbacks - * - * Callback related definitions and methods. - * - * - @ref LD2410Async::registerDetectionDataReceivedCallback - *
    Registers a callback for new detection data. - * - @ref LD2410Async::registerConfigChangedCallback - *
    Registers a callback for configuration changes. - * - @ref LD2410Async::registerConfigUpdateReceivedCallback - *
    Registers a callback for configuration data updates. - * - @ref LD2410Async::DetectionDataCallback - *
    Callback type for receiving detection data events. - * - @ref LD2410Async::AsyncCommandCallback - *
    Callback signature for asynchronous command completion. - * - @ref LD2410Async::GenericCallback - *
    Generic callback signature used for simple notifications. - */ - -/** - * @section group_presence Presence Detection - * @ingroup LD2410Async_PresenceDetection - * - * Presence detection related methods, definitions and data. - * - * - @ref LD2410Async::detectionData - *
    Latest detection results from the radar. - * - @ref LD2410Async::getDetectionData - *
    Returns a clone of the latest detection data from the radar. - * - @ref LD2410Async::getDetectionDataRef - *
    Access the current detection data without making a copy. - * - @ref LD2410Async::registerDetectionDataReceivedCallback - *
    Registers a callback for new detection data. - * - @ref LD2410Async::enableEngineeringModeAsync - *
    Enables engineering mode (detailed per-gate signal values). - * - @ref LD2410Async::disableEngineeringModeAsync - *
    Disables engineering mode. - * - @ref LD2410Async::isEngineeringModeEnabled - *
    Detects if engineering mode is enabled. - */ - -/** - * @section group_publicdata Public Data Members - * @ingroup LD2410Async_PublicData - * - * Public data members of the LD2410Async lib. - * @note It is not recommended to read and even less write to these data members. Use the data access methods instead. - * - * - @ref LD2410Async::detectionData - *
    Latest detection results from the radar. - * - @ref LD2410Async::configData - *
    Current configuration parameters of the radar. - * - @ref LD2410Async::protocolVersion - *
    Protocol version reported by the radar. - * - @ref LD2410Async::bufferSize - *
    Buffer size reported by the radar protocol. - * - @ref LD2410Async::configModeEnabled - *
    True if the sensor is currently in config mode. - * - @ref LD2410Async::engineeringModeEnabled - *
    True if the sensor is currently in engineering mode. - * - @ref LD2410Async::firmware - *
    Firmware version string of the radar. - * - @ref LD2410Async::mac - *
    MAC address of the radars Bluetooth module. - * - @ref LD2410Async::macString - *
    MAC address as a human-readable string. - * - @ref LD2410Async::autoConfigStatus - *
    Current status of the auto-configuration routine. - */ - -/** - * @section group_config Sensor Configuration - * @ingroup LD2410Async_Configuration - * - * Methods, definitions and data for LD2410 configuration. - * @note Instead of using these methods, better use the high level functions instead. They offer a more consistent way to request and write data from/to the LD2410. - * - * - @ref LD2410Async::configData - *
    Current configuration parameters of the radar. - * - @ref LD2410Async::getConfigData - *
    Returns a clone of the current configuration data of the radar. - * - @ref LD2410Async::getConfigDataRef - *
    Access the current config data without making a copy. - * - @ref LD2410Async::registerConfigChangedCallback - *
    Registers a callback for configuration changes. - * - @ref LD2410Async::registerConfigUpdateReceivedCallback - *
    Registers a callback for configuration data updates. - * - @ref LD2410Async::enableConfigModeAsync - *
    Enables config mode on the radar. - * - @ref LD2410Async::disableConfigModeAsync - *
    Disables config mode on the radar. - * - @ref LD2410Async::isConfigModeEnabled - *
    Detects if config mode is enabled. - * - @ref LD2410Async::requestGateParametersAsync - *
    Requests the current gate parameters from the sensor. - * - @ref LD2410Async::configureMaxGateAndNoOneTimeoutAsync - *
    Configures the maximum detection gates and "no-one" timeout. - * - @ref LD2410Async::configureDistanceGateSensitivityAsync - *
    Configures sensitivity thresholds for all gates at once. - * - @ref LD2410Async::configureBaudRateAsync - *
    Configures the UART baud rate of the sensor. - * - @ref LD2410Async::restoreFactorySettingsAsync - *
    Restores factory settings of the sensor. - * - @ref LD2410Async::configureAuxControlSettingsAsync - *
    Configures the auxiliary control parameters (light and output pin). - * - @ref LD2410Async::requestAuxControlSettingsAsync - *
    Requests the current auxiliary control settings. - * - @ref LD2410Async::beginAutoConfigAsync - *
    Starts the automatic configuration (auto-config) routine. - * - @ref LD2410Async::requestAutoConfigStatusAsync - *
    Requests the current status of the auto-config routine. - * - @ref LD2410Async::configureAllConfigSettingsAsync - *
    Applies a full ConfigData struct to the LD2410. - */ - -/** - * @section group_highlevel High Level Commands - * @ingroup LD2410Async_HighLevelCommands - * - * High level commands to request data from the sensor and to write config settings to the sensor. - * @note Whenever possible, use these methods instead of the native methods. - * - * - @ref LD2410Async::requestAllConfigSettingsAsync - *
    Requests all configuration settings from the sensor. - * - @ref LD2410Async::requestAllStaticDataAsync - *
    Requests all static information from the sensor. - * - @ref LD2410Async::configureAllConfigSettingsAsync - *
    Applies a full ConfigData struct to the LD2410. - */ - -/** - * @section group_staticdata Static Sensor Data - * @ingroup LD2410Async_StaticData - * - * Methods, definitions and data to access static data (firmware version, bluetooth mac and so on) of the sensor. - * - * - @ref LD2410Async::protocolVersion - *
    Protocol version reported by the radar. - * - @ref LD2410Async::bufferSize - *
    Buffer size reported by the radar protocol. - * - @ref LD2410Async::firmware - *
    Firmware version string of the radar. - * - @ref LD2410Async::mac - *
    MAC address of the radars Bluetooth module. - * - @ref LD2410Async::macString - *
    MAC address as a human-readable string. - * - @ref LD2410Async::requestFirmwareAsync - *
    Requests the firmware version of the sensor. - * - @ref LD2410Async::requestBluetoothMacAddressAsync - *
    Requests the bluetooth mac address. - * - @ref LD2410Async::requestAllStaticDataAsync - *
    Requests all static information from the sensor. - */ - -/** - * @section group_bluetooth Bluetooth - * @ingroup LD2410Async_Bluetooth - * - * Bluetooth related methods and data. - * - * - @ref LD2410Async::enableBluetoothAsync - *
    Enables bluetooth. - * - @ref LD2410Async::disableBluetoothAsync - *
    Disables bluetooth. - * - @ref LD2410Async::requestBluetoothMacAddressAsync - *
    Requests the bluetooth mac address. - * - @ref LD2410Async::configureBluetoothPasswordAsync - *
    Sets the password for bluetooth access to the sensor. - * - @ref LD2410Async::configureDefaultBluetoothPasswordAsync - *
    Resets the password for bluetooth access to the default value. - */ - -/** - * @section group_native Native Commands - * @ingroup LD2410Async_NativeCommands - * - * Native commands of the LD2410. Each of these commands sends a single command (plus the necessary config mode enable/disable commands) to the LD2410. - * @note Instead of using these methods, better use the high level functions instead. They offer a more consistent way to request and write data from/to the LD2410. - * - * - @ref LD2410Async::enableEngineeringModeAsync - *
    Enables engineering mode (detailed per-gate signal values). - * - @ref LD2410Async::disableEngineeringModeAsync - *
    Disables engineering mode. - * - @ref LD2410Async::requestGateParametersAsync - *
    Requests the current gate parameters from the sensor. - * - @ref LD2410Async::configureMaxGateAndNoOneTimeoutAsync - *
    Configures the maximum detection gates and "no-one" timeout. - * - @ref LD2410Async::configureDistanceGateSensitivityAsync - *
    Configures sensitivity thresholds for all gates at once. - * - @ref LD2410Async::requestFirmwareAsync - *
    Requests the firmware version of the sensor. - * - @ref LD2410Async::configureBaudRateAsync - *
    Configures the UART baud rate of the sensor. - * - @ref LD2410Async::restoreFactorySettingsAsync - *
    Restores factory settings of the sensor. - * - @ref LD2410Async::rebootAsync - *
    Reboots the sensor. - * - @ref LD2410Async::enableBluetoothAsync - *
    Enables bluetooth. - * - @ref LD2410Async::disableBluetoothAsync - *
    Disables bluetooth. - * - @ref LD2410Async::requestBluetoothMacAddressAsync - *
    Requests the bluetooth mac address. - * - @ref LD2410Async::configureBluetoothPasswordAsync - *
    Sets the password for bluetooth access to the sensor. - * - @ref LD2410Async::configureDefaultBluetoothPasswordAsync - *
    Resets the password for bluetooth access to the default value. - * - @ref LD2410Async::configureDistanceResolutionAsync - *
    Configures the distance resolution of the radar. - * - @ref LD2410Async::configureDistanceResolution75cmAsync - *
    Configures the distance resolution explicitly to 75 cm per gate. - * - @ref LD2410Async::configuresDistanceResolution20cmAsync - *
    Configures the distance resolution explicitly to 20 cm per gate. - * - @ref LD2410Async::requestDistanceResolutioncmAsync - *
    Requests the current distance resolution setting from the sensor. - * - @ref LD2410Async::configureAuxControlSettingsAsync - *
    Configures the auxiliary control parameters (light and output pin). - * - @ref LD2410Async::requestAuxControlSettingsAsync - *
    Requests the current auxiliary control settings. - * - @ref LD2410Async::beginAutoConfigAsync - *
    Starts the automatic configuration (auto-config) routine. - * - @ref LD2410Async::requestAutoConfigStatusAsync - *
    Requests the current status of the auto-config routine. - */ \ No newline at end of file diff --git a/src/LD2410Async.h b/src/LD2410Async.h index cbf0e82..e82adc9 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -93,7 +93,6 @@ class LD2410Async { * * Every async command reports back its outcome via the callback. * - * @ingroup LD2410Async_Types */ enum class AsyncCommandResult : byte { SUCCESS, ///< Command completed successfully and ACK was received. @@ -112,8 +111,6 @@ class LD2410Async { * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED). * @param userData User-specified value passed when registering the callback. * - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Callbacks */ typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData); @@ -124,8 +121,6 @@ class LD2410Async { * @param userData User-specified value passed when registering the callback. * * - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Callbacks */ typedef void (*GenericCallback)(LD2410Async* sender, byte userData); @@ -141,8 +136,6 @@ class LD2410Async { * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise. * @param userData User-defined value passed when registering the callback. * - * @ingroup LD2410Async_Callbacks - * @ingroup LD2410Async_PresenceDetection */ typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData); @@ -162,8 +155,6 @@ class LD2410Async { * whenever this struct changes. * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_PresenceDetection * */ LD2410Types::DetectionData detectionData; @@ -178,8 +169,6 @@ class LD2410Async { * * Structure will contain only uninitilaized data if config data is not queried explicitly. * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_Configuration */ LD2410Types::ConfigData configData; @@ -189,8 +178,6 @@ class LD2410Async { * This value is set when entering config mode. It can be useful * for compatibility checks between firmware and library. * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_StaticData */ unsigned long protocolVersion = 0; @@ -200,8 +187,6 @@ class LD2410Async { * Set when entering config mode. Typically not required by users * unless debugging low-level protocol behavior. * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_StaticData */ unsigned long bufferSize = 0; @@ -212,7 +197,6 @@ class LD2410Async { * After sending config commands, always disable the config mode using disableConfigModeAsync(), * otherwiese the radar will not send any detection data. * - * @ingroup LD2410Async_PublicData */ bool configModeEnabled = false; @@ -225,7 +209,6 @@ class LD2410Async { * * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode. * - * @ingroup LD2410Async_PublicData */ bool engineeringModeEnabled = false; @@ -235,8 +218,6 @@ class LD2410Async { * Populated by requestFirmwareAsync(). Format is usually * "major.minor.build". * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_StaticData */ String firmware = ""; @@ -245,8 +226,6 @@ class LD2410Async { * * Populated by requestBluetoothMacAddressAsync(). * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_StaticData */ byte mac[6]; @@ -255,8 +234,6 @@ class LD2410Async { * * Populated by requestBluetoothMacAddressAsync(). * - * @ingroup LD2410Async_PublicData - * @ingroup LD2410Async_StaticData */ String macString = ""; @@ -266,8 +243,6 @@ class LD2410Async { * * Updated by requestAutoConfigStatusAsync(). * - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_PublicData */ LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET; @@ -293,7 +268,6 @@ class LD2410Async { * * @param serial Reference to a Stream object used to exchange data with the sensor. * - * @ingroup LD2410Async_MainMethods */ LD2410Async(Stream& serial); @@ -309,7 +283,6 @@ class LD2410Async { * * @returns true if the task was successfully started, false if already running. * - * @ingroup LD2410Async_MainMethods */ bool begin(); @@ -321,7 +294,6 @@ class LD2410Async { * * @returns true if the task was stopped, false if it was not active. * - * @ingroup LD2410Async_MainMethods */ bool end(); @@ -349,7 +321,6 @@ class LD2410Async { * * @param enable Pass true to enable inactivity handling, false to disable it. * - * @ingroup LD2410Async_InactivityHandling */ void setInactivityHandling(bool enable); @@ -358,7 +329,6 @@ class LD2410Async { * * Equivalent to calling setInactivityHandling(true). * - * @ingroup LD2410Async_InactivityHandling */ void enableInactivityHandling() { setInactivityHandling(true); }; @@ -367,7 +337,6 @@ class LD2410Async { * * Equivalent to calling setInactivityHandling(false). * - * @ingroup LD2410Async_InactivityHandling */ void disableInactivityHandling() { setInactivityHandling(false); }; @@ -376,7 +345,6 @@ class LD2410Async { * * @returns true if inactivity handling is enabled, false otherwise. * - * @ingroup LD2410Async_InactivityHandling */ bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; }; @@ -391,7 +359,6 @@ class LD2410Async { * * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling. * - * @ingroup LD2410Async_InactivityHandling */ void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; }; @@ -400,7 +367,6 @@ class LD2410Async { * * @returns Timeout in milliseconds. * - * @ingroup LD2410Async_InactivityHandling */ unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; }; @@ -421,8 +387,6 @@ class LD2410Async { * void methodName(LD2410Async* sender, bool presenceDetected, byte userData). * @param userData Optional value that will be passed to the callback. * - * @ingroup LD2410Async_Callbacks - * @ingroup LD2410Async_PresenceDetection */ void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0); @@ -436,8 +400,6 @@ class LD2410Async { * void methodName(LD2410Async* sender, byte userData). * @param userData Optional value that will be passed to the callback. * - * @ingroup LD2410Async_Callbacks - * @ingroup LD2410Async_Configuration */ void registerConfigChangedCallback(GenericCallback callback, byte userData = 0); @@ -451,8 +413,6 @@ class LD2410Async { * void methodName(LD2410Async* sender, byte userData). * @param userData Optional value that will be passed to the callback. * - * @ingroup LD2410Async_Callbacks - * @ingroup LD2410Async_Configuration */ void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0); @@ -494,8 +454,6 @@ class LD2410Async { * * @returns A copy of the current DetectionData. * - * @ingroup LD2410Async_PresenceDetection - * @ingroup LD2410Async_PublicData */ LD2410Types::DetectionData getDetectionData() const; @@ -530,8 +488,6 @@ class LD2410Async { * * @returns Const reference to the current DetectionData. * - * @ingroup LD2410Async_PresenceDetection - * @ingroup LD2410Async_PublicData */ const LD2410Types::DetectionData& getDetectionDataRef() const { return detectionData; } @@ -577,8 +533,6 @@ class LD2410Async { * * @returns A copy of the current ConfigData. * - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_PublicData */ LD2410Types::ConfigData getConfigData() const; @@ -613,8 +567,6 @@ class LD2410Async { * * @returns Const reference to the current ConfigData. * - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_PublicData */ const LD2410Types::ConfigData& getConfigDataRef() const { return configData; } @@ -628,7 +580,6 @@ class LD2410Async { * @returns true if there is an active command awaiting an ACK, * false if the library is idle. * - * @ingroup LD2410Async_AsyncCommands */ bool asyncIsBusy(); @@ -640,7 +591,6 @@ class LD2410Async { * remain in config mode — consider disabling config mode or * rebooting to return to detection operation. * - * @ingroup LD2410Async_AsyncCommands */ void asyncCancel(); @@ -652,7 +602,6 @@ class LD2410Async { * * @param timeoutMs Timeout in milliseconds (default 6000 ms). * - * @ingroup LD2410Async_AsyncCommands */ void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; } @@ -661,7 +610,6 @@ class LD2410Async { * * @return Timeout in milliseconds. * - * @ingroup LD2410Async_AsyncCommands */ unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; } @@ -689,8 +637,6 @@ class LD2410Async { * * @returns true if the command was sent, false if blocked. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration */ bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0); @@ -709,8 +655,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration */ bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0); @@ -719,7 +663,6 @@ class LD2410Async { * * @returns true if config mode is anabled, false if config mode is disabled * - * @ingroup LD2410Async_Configuration */ bool isConfigModeEnabled() const { return configModeEnabled; @@ -743,9 +686,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_NativeCommands - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_PresenceDetection */ bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); @@ -761,8 +701,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_PresenceDetection - * @ingroup LD2410Async_AsyncCommands */ bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0); @@ -771,7 +709,6 @@ class LD2410Async { * * @returns true if engineering mode is anabled, false if engineering mode is disabled * - * @ingroup LD2410Async_PresenceDetection */ bool isEngineeringModeEnabled() const { return engineeringModeEnabled; @@ -794,9 +731,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0); @@ -822,9 +756,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise (busy state or invalid values). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0); @@ -845,9 +776,6 @@ class LD2410Async { * * @returns true if the sequence was started, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0); @@ -871,9 +799,6 @@ class LD2410Async { * @returns true if the command was sent, false otherwise. * * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0); @@ -889,9 +814,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_StaticData - * @ingroup LD2410Async_NativeCommands */ bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0); @@ -913,9 +835,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0); @@ -935,9 +854,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0); @@ -955,9 +871,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0); @@ -974,9 +887,7 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_NativeCommands - */ + */ bool rebootAsync(AsyncCommandCallback callback, byte userData = 0); /** @@ -987,11 +898,7 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_NativeCommands - */ + */ bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0); /** @@ -1002,10 +909,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_NativeCommands */ bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1019,7 +922,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands LD2410Async_Bluetooth LD2410Async_StaticData LD2410Async_NativeCommands */ bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1032,10 +934,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_NativeCommands */ bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0); @@ -1048,10 +946,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_NativeCommands */ bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0); @@ -1062,10 +956,6 @@ class LD2410Async { * * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending). * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_Bluetooth - * @ingroup LD2410Async_NativeCommands */ bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1091,9 +981,6 @@ class LD2410Async { * @returns true if the command was sent, false if invalid parameters * or the library is busy. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0); @@ -1112,9 +999,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1133,9 +1017,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1152,9 +1033,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1179,9 +1057,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0); @@ -1200,9 +1075,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1247,9 +1119,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1304,9 +1173,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_NativeCommands */ bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1362,9 +1228,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_Configuration - * @ingroup LD2410Async_HighLevelCommands */ bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1412,9 +1275,6 @@ class LD2410Async { * * @returns true if the command was sent, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_StaticData - * @ingroup LD2410Async_HighLevelCommands */ bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0); @@ -1471,9 +1331,6 @@ class LD2410Async { * * @returns true if the command sequence has been started, false otherwise. * - * @ingroup LD2410Async_AsyncCommands - * @ingroup LD2410Async_StaticData - * @ingroup LD2410Async_HighLevelCommands */ bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0); diff --git a/src/LD2410Types.h b/src/LD2410Types.h index 6a77de0..4562b13 100644 --- a/src/LD2410Types.h +++ b/src/LD2410Types.h @@ -15,7 +15,6 @@ namespace LD2410Types { * that are only reported while the sensor is running its * self-calibration routine. * - * @ingroup LD2410Async_Types */ enum class TargetState { @@ -41,7 +40,6 @@ namespace LD2410Types { * - 6 → AUTOCONFIG_FAILED * @returns The matching TargetState value, or NO_TARGET if invalid. * - * @ingroup LD2410Async_Types */ static TargetState toTargetState(int value) { switch (value) { @@ -64,7 +62,6 @@ namespace LD2410Types { * @param state TargetState enum value. * @returns Human-readable string such as "No target", "Moving target", etc. * - * @ingroup LD2410Async_Types */ static String targetStateToString(TargetState state) { switch (state) { @@ -92,7 +89,6 @@ namespace LD2410Types { * * Use NOT_SET only as a placeholder; it is not a valid configuration value. * - * @ingroup LD2410Async_Types */ enum class LightControl { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -109,7 +105,6 @@ namespace LD2410Types { * - 2 → LIGHT_ABOVE_THRESHOLD * @returns The matching LightControl value, or NOT_SET if invalid. * - * @ingroup LD2410Async_Types */ static LightControl toLightControl(int value) { switch (value) { @@ -129,7 +124,6 @@ namespace LD2410Types { * * Use NOT_SET only as a placeholder; it is not a valid configuration value. * - * @ingroup LD2410Async_Types */ enum class OutputControl { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -145,7 +139,6 @@ namespace LD2410Types { * - 1 → DEFAULT_HIGH_DETECTED_LOW * @returns The matching OutputControl value, or NOT_SET if invalid. * - * @ingroup LD2410Async_Types */ static OutputControl toOutputControl(int value) { switch (value) { @@ -163,7 +156,6 @@ namespace LD2410Types { * * Use NOT_SET only as a placeholder; it is not a valid configuration value. * - * @ingroup LD2410Async_Types */ enum class AutoConfigStatus { NOT_SET = -1, ///< Status not yet retrieved. @@ -181,7 +173,6 @@ namespace LD2410Types { * - 2 → COMPLETED * @returns The matching AutoConfigStatus value, or NOT_SET if invalid. * - * @ingroup LD2410Async_Types */ static AutoConfigStatus toAutoConfigStatus(int value) { switch (value) { @@ -200,7 +191,6 @@ namespace LD2410Types { * by the LD2410. After changing the baud rate, a sensor reboot * is required, and the ESP32’s UART must be reconfigured to match. * - * @ingroup LD2410Async_Types */ enum class Baudrate { BAUDRATE_9600 = 1, ///< 9600 baud. @@ -222,7 +212,6 @@ namespace LD2410Types { * * Use NOT_SET only as a placeholder; it is not a valid configuration value. * - * @ingroup LD2410Async_Types */ enum class DistanceResolution { NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command). @@ -238,7 +227,6 @@ namespace LD2410Types { * - 1 → RESOLUTION_20CM * @returns The matching DistanceResolution value, or NOT_SET if invalid. * - * @ingroup LD2410Async_Types */ static DistanceResolution toDistanceResolution(int value) { switch (value) { @@ -255,8 +243,6 @@ namespace LD2410Types { * Values reflect either the basic presence information or, if * engineering mode is enabled, per-gate signal details. * - * @ingroup LD2410Async_Types - * @ingroup LD2410Async_PresenceDetection */ struct DetectionData { @@ -365,8 +351,6 @@ namespace LD2410Types { * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync(). * - * @ingroup LD2410Async_Types - * @ingroup LD2410Async_Configuration */ struct ConfigData { // === Radar capabilities === From fd8bf2ca91cbde84d004032bdfd606f1ef94c2be Mon Sep 17 00:00:00 2001 From: Lizard King Date: Tue, 30 Sep 2025 07:52:10 +0200 Subject: [PATCH 030/114] StaticData struct implemented and code to fill it adjusted --- src/LD2410Async.cpp | 31 +++++++++++++++++------------- src/LD2410Async.h | 47 ++++++++------------------------------------- src/LD2410Types.h | 46 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 52 deletions(-) diff --git a/src/LD2410Async.cpp b/src/LD2410Async.cpp index 88792d4..5997b60 100644 --- a/src/LD2410Async.cpp +++ b/src/LD2410Async.cpp @@ -256,8 +256,8 @@ bool LD2410Async::processAck() { case LD2410Defs::configEnableCommand: // entered config mode configModeEnabled = true; - protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8); - bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8); + staticData.protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8); + staticData.bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for config mode enable received"); break; @@ -326,21 +326,26 @@ bool LD2410Async::processAck() break; case LD2410Defs::requestMacAddressCommand: for (int i = 0; i < 6; i++) { - mac[i] = receiveBuffer[i + 4]; - }; - macString = byte2hex(mac[0]) - + ":" + byte2hex(mac[1]) - + ":" + byte2hex(mac[2]) - + ":" + byte2hex(mac[3]) - + ":" + byte2hex(mac[4]) - + ":" + byte2hex(mac[5]); + staticData.bluetoothMac[i] = receiveBuffer[i + 4]; + } + + // Format MAC as "AA:BB:CC:DD:EE:FF" + snprintf(staticData.bluetoothMacText, sizeof(staticData.bluetoothMacText), + "%02X:%02X:%02X:%02X:%02X:%02X", + staticData.bluetoothMac[0], staticData.bluetoothMac[1], staticData.bluetoothMac[2], + staticData.bluetoothMac[3], staticData.bluetoothMac[4], staticData.bluetoothMac[5]); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received"); break; case LD2410Defs::requestFirmwareCommand: - firmware = byte2hex(receiveBuffer[7], false) - + "." + byte2hex(receiveBuffer[6]) - + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]); + snprintf(staticData.firmwareText, sizeof(staticData.firmwareText), + "%X.%02X.%02X%02X%02X%02X", + receiveBuffer[7], // major (no leading zero) + receiveBuffer[6], // minor (keep 2 digits) + receiveBuffer[11], + receiveBuffer[10], + receiveBuffer[9], + receiveBuffer[8]); DEBUG_PRINT_MILLIS; DEBUG_PRINTLN("ACK for requestFirmwareAsyncCommand received"); break; diff --git a/src/LD2410Async.h b/src/LD2410Async.h index e82adc9..bb64df6 100644 --- a/src/LD2410Async.h +++ b/src/LD2410Async.h @@ -150,7 +150,7 @@ class LD2410Async { /** * @brief Latest detection results from the radar. * - * Updated automatically whenever new data frames are received. + * @details Updated automatically whenever new data frames are received. * Use registerDetectionDataReceivedCallback() to be notified * whenever this struct changes. * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly. @@ -162,7 +162,7 @@ class LD2410Async { /** * @brief Current configuration parameters of the radar. * - * Filled when configuration query commands are issued + * @details Filled when configuration query commands are issued * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect). * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes. * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly. @@ -173,22 +173,14 @@ class LD2410Async { LD2410Types::ConfigData configData; /** - * @brief Protocol version reported by the radar. - * - * This value is set when entering config mode. It can be useful - * for compatibility checks between firmware and library. - * + * @brief Static data of the radar + * + * @details Filled when config mode is being enabled (protocol version and buffer size) + * annd when issuing query commands for the static data (@ref requestAllStaticDataAsync, @ref requestFirmwareAsync, @ref requestBluetoothMacAddressAsync) */ - unsigned long protocolVersion = 0; + LD2410Types::StaticData staticData; + - /** - * @brief Buffer size reported by the radar protocol. - * - * Set when entering config mode. Typically not required by users - * unless debugging low-level protocol behavior. - * - */ - unsigned long bufferSize = 0; /** * @brief True if the sensor is currently in config mode. @@ -212,30 +204,7 @@ class LD2410Async { */ bool engineeringModeEnabled = false; - /** - * @brief Firmware version string of the radar. - * - * Populated by requestFirmwareAsync(). Format is usually - * "major.minor.build". - * - */ - String firmware = ""; - /** - * @brief MAC address of the radar’s Bluetooth module (if available). - * - * Populated by requestBluetoothMacAddressAsync(). - * - */ - byte mac[6]; - - /** - * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF"). - * - * Populated by requestBluetoothMacAddressAsync(). - * - */ - String macString = ""; /** diff --git a/src/LD2410Types.h b/src/LD2410Types.h index 4562b13..6305a40 100644 --- a/src/LD2410Types.h +++ b/src/LD2410Types.h @@ -477,5 +477,51 @@ namespace LD2410Types { } }; + struct StaticData { + /** + * @brief Protocol version reported by the radar. + * + * This value is set when entering config mode. It can be useful + * for compatibility checks between firmware and library. + * + */ + uint16_t protocolVersion = 0; + + /** + * @brief Buffer size reported by the radar protocol. + * + * Set when entering config mode. Typically not required by users + * unless debugging low-level protocol behavior. + * + */ + uint16_t bufferSize = 0; + + + /** + * @brief Firmware version string of the radar. + * + * Populated by @ref requestFirmwareAsync(). Format is usually + * "major.minor.build". + * + */ + char firmwareText[16] = { 0 }; + + /** + * @brief MAC address of the radar’s Bluetooth module (if available). + * + * Populated by @ref requestBluetoothMacAddressAsync(). + * + */ + byte bluetoothMac[6]; + + /** + * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF"). + * + * Populated by @ref requestBluetoothMacAddressAsync(). + * + */ + char bluetoothMacText[18] = { 0 }; + + }; } \ No newline at end of file From cad7304e1ac148a5338e4f558e9bd8aa3a07a497 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 30 Sep 2025 05:52:20 +0000 Subject: [PATCH 031/114] Update documentation --- docu/LD2410Async_8cpp_source.html | 2744 +++++++-------- docu/LD2410Async_8h_source.html | 3105 ++++++++--------- docu/LD2410CommandBuilder_8h_source.html | 6 +- docu/LD2410Types_8h.html | 2 + docu/LD2410Types_8h.js | 1 + docu/LD2410Types_8h_source.html | 1078 +++--- docu/annotated.html | 3 +- docu/annotated_dup.js | 3 +- docu/basicPresenceDetection_8ino.html | 2 +- docu/basicPresenceDetection_8ino_source.html | 2 +- docu/changeConfig_8ino.html | 2 +- docu/changeConfig_8ino_source.html | 2 +- docu/changeDistanceResolution_8ino.html | 2 +- .../changeDistanceResolution_8ino_source.html | 2 +- docu/classLD2410Async-members.html | 92 +- docu/classLD2410Async.html | 988 +++--- docu/classLD2410Async.js | 6 +- docu/classes.html | 5 +- docu/doxygen_crawl.html | 36 +- docu/files.html | 23 +- docu/files_dup.js | 9 +- docu/functions.html | 11 +- docu/functions_vars.html | 11 +- docu/index.html | 4 +- docu/menudata.js | 1 - docu/namespaceLD2410Types.html | 96 +- docu/namespaceLD2410Types.js | 1 + docu/navtreedata.js | 3 +- docu/navtreeindex0.js | 486 +-- docu/navtreeindex1.js | 262 +- docu/receiveData_8ino.html | 2 +- docu/receiveData_8ino_source.html | 2 +- docu/search/all_1.js | 26 +- docu/search/all_10.js | 5 +- docu/search/all_2.js | 65 +- docu/search/all_3.js | 61 +- docu/search/all_4.js | 23 +- docu/search/all_5.js | 4 +- docu/search/all_7.js | 3 +- docu/search/all_8.js | 11 +- docu/search/all_9.js | 32 +- docu/search/all_a.js | 29 +- docu/search/all_b.js | 13 +- docu/search/all_d.js | 8 +- docu/search/all_f.js | 46 +- docu/search/classes_3.js | 4 + docu/search/pages_0.js | 2 +- docu/search/searchdata.js | 6 +- docu/search/variables_1.js | 10 +- docu/search/variables_5.js | 2 +- docu/search/variables_9.js | 20 +- docu/search/variables_c.js | 2 +- docu/search/variables_e.js | 11 +- docu/structLD2410Types_1_1ConfigData.html | 202 +- docu/structLD2410Types_1_1DetectionData.html | 188 +- ...ructLD2410Types_1_1StaticData-members.html | 120 + docu/structLD2410Types_1_1StaticData.html | 241 ++ docu/structLD2410Types_1_1StaticData.js | 8 + 58 files changed, 5134 insertions(+), 5000 deletions(-) create mode 100644 docu/search/classes_3.js create mode 100644 docu/structLD2410Types_1_1StaticData-members.html create mode 100644 docu/structLD2410Types_1_1StaticData.html create mode 100644 docu/structLD2410Types_1_1StaticData.js diff --git a/docu/LD2410Async_8cpp_source.html b/docu/LD2410Async_8cpp_source.html index 28df4ca..b3e3dc5 100644 --- a/docu/LD2410Async_8cpp_source.html +++ b/docu/LD2410Async_8cpp_source.html @@ -368,8 +368,8 @@
    256 {
    257 case LD2410Defs::configEnableCommand: // entered config mode
    258 configModeEnabled = true;
    -
    259 protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    -
    260 bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    259 staticData.protocolVersion = receiveBuffer[4] | (receiveBuffer[5] << 8);
    +
    260 staticData.bufferSize = receiveBuffer[6] | (receiveBuffer[7] << 8);
    262 DEBUG_PRINTLN("ACK for config mode enable received");
    263 break;
    @@ -438,1402 +438,1407 @@
    326 break;
    328 for (int i = 0; i < 6; i++) {
    -
    329 mac[i] = receiveBuffer[i + 4];
    -
    330 };
    - -
    332 + ":" + byte2hex(mac[1])
    -
    333 + ":" + byte2hex(mac[2])
    -
    334 + ":" + byte2hex(mac[3])
    -
    335 + ":" + byte2hex(mac[4])
    -
    336 + ":" + byte2hex(mac[5]);
    +
    329 staticData.bluetoothMac[i] = receiveBuffer[i + 4];
    +
    330 }
    +
    331
    +
    332 // Format MAC as "AA:BB:CC:DD:EE:FF"
    + +
    334 "%02X:%02X:%02X:%02X:%02X:%02X",
    + +
    338 DEBUG_PRINTLN("ACK for requestBluetoothMacAddressAsyncCommand received");
    339 break;
    -
    341 firmware = byte2hex(receiveBuffer[7], false)
    -
    342 + "." + byte2hex(receiveBuffer[6])
    -
    343 + "." + byte2hex(receiveBuffer[11]) + byte2hex(receiveBuffer[10]) + byte2hex(receiveBuffer[9]) + byte2hex(receiveBuffer[8]);
    - -
    345 DEBUG_PRINTLN("ACK for requestFirmwareAsyncCommand received");
    -
    346 break;
    -
    347
    - -
    349 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    -
    350 configData.lightThreshold = receiveBuffer[5];
    -
    351 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    - -
    353 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
    -
    354 executeConfigUpdateReceivedCallback();
    -
    355 break;
    - + +
    342 "%X.%02X.%02X%02X%02X%02X",
    +
    343 receiveBuffer[7], // major (no leading zero)
    +
    344 receiveBuffer[6], // minor (keep 2 digits)
    +
    345 receiveBuffer[11],
    +
    346 receiveBuffer[10],
    +
    347 receiveBuffer[9],
    +
    348 receiveBuffer[8]);
    + +
    350 DEBUG_PRINTLN("ACK for requestFirmwareAsyncCommand received");
    +
    351 break;
    +
    352
    + +
    354 configData.lightControl = LD2410Types::toLightControl(receiveBuffer[4]);
    +
    355 configData.lightThreshold = receiveBuffer[5];
    +
    356 configData.outputControl = LD2410Types::toOutputControl(receiveBuffer[6]);
    -
    358 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
    -
    359 break;
    - -
    361 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    +
    358 DEBUG_PRINTLN("ACK for requestAuxControlSettingsCommand received");
    +
    359 executeConfigUpdateReceivedCallback();
    +
    360 break;
    + -
    363 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
    +
    363 DEBUG_PRINTLN("ACK for beginAutoConfigCommand received");
    364 break;
    -
    365 case LD2410Defs::requestParamsCommand: // Query parameters
    -
    366 configData.numberOfGates = receiveBuffer[5];
    -
    367 configData.maxMotionDistanceGate = receiveBuffer[6];
    -
    368 configData.maxStationaryDistanceGate = receiveBuffer[7];
    -
    369 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    -
    370 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    -
    371 for (byte i = 0; i <= configData.numberOfGates; i++)
    -
    372 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    -
    373 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    - -
    375 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
    -
    376 executeConfigUpdateReceivedCallback();
    -
    377 break;
    - + +
    366 autoConfigStatus = LD2410Types::toAutoConfigStatus(receiveBuffer[4]);
    + +
    368 DEBUG_PRINTLN("ACK for requestAutoConfigStatusCommand received");
    +
    369 break;
    +
    370 case LD2410Defs::requestParamsCommand: // Query parameters
    +
    371 configData.numberOfGates = receiveBuffer[5];
    +
    372 configData.maxMotionDistanceGate = receiveBuffer[6];
    +
    373 configData.maxStationaryDistanceGate = receiveBuffer[7];
    +
    374 for (byte i = 0; i <= configData.numberOfGates; i++) //Need to check if we should really do this or whther it just using a fixed number would be better
    +
    375 configData.distanceGateMotionSensitivity[i] = receiveBuffer[8 + i];
    +
    376 for (byte i = 0; i <= configData.numberOfGates; i++)
    +
    377 configData.distanceGateStationarySensitivity[i] = receiveBuffer[17 + i];
    +
    378 configData.noOneTimeout = receiveBuffer[26] | (receiveBuffer[27] << 8);
    -
    380 DEBUG_PRINTLN("ACK for distanceGateSensitivityConfigCommand received");
    -
    381 executeConfigChangedCallback();
    +
    380 DEBUG_PRINTLN("ACK for requestGateParametersAsync received");
    +
    381 executeConfigUpdateReceivedCallback();
    382 break;
    -
    383 default:
    + -
    385 DEBUG_PRINT("ACK for unknown command received. Command code: ");
    -
    386 DEBUG_PRINTLN(byte2hex(command));
    +
    385 DEBUG_PRINTLN("ACK for distanceGateSensitivityConfigCommand received");
    +
    386 executeConfigChangedCallback();
    387 break;
    -
    388 };
    -
    389
    -
    390 if (command != 0) {
    -
    391 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    -
    392 }
    -
    393
    +
    388 default:
    + +
    390 DEBUG_PRINT("ACK for unknown command received. Command code: ");
    +
    391 DEBUG_PRINTLN(byte2hex(command));
    +
    392 break;
    +
    393 };
    394
    -
    395 return (true);
    -
    396}
    -
    397
    -
    398bool LD2410Async::processData()
    -
    399{
    -
    400 DEBUG_PRINTBUF_DATA(receiveBuffer, receiveBufferIndex)
    -
    401
    -
    402 heartbeat();
    -
    403
    -
    404
    -
    405 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
    -
    406 {
    -
    407 configModeEnabled = false;
    +
    395 if (command != 0) {
    +
    396 executeAsyncCommandCallback(command, LD2410Async::AsyncCommandResult::SUCCESS);
    +
    397 }
    +
    398
    +
    399
    +
    400 return (true);
    +
    401}
    +
    402
    +
    403bool LD2410Async::processData()
    +
    404{
    +
    405 DEBUG_PRINTBUF_DATA(receiveBuffer, receiveBufferIndex)
    +
    406
    +
    407 heartbeat();
    408
    -
    409 detectionData.timestamp = millis();
    -
    410 //Basic data
    -
    411 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    -
    412 switch (detectionData.targetState) {
    - - - - -
    417 break;
    -
    418
    - - - - -
    423 break;
    -
    424
    - - - - -
    429 break;
    -
    430 default:
    - - - +
    409
    +
    410 if (((receiveBuffer[0] == 1) || (receiveBuffer[0] == 2)) && (receiveBuffer[1] == 0xAA))
    +
    411 {
    +
    412 configModeEnabled = false;
    +
    413
    +
    414 detectionData.timestamp = millis();
    +
    415 //Basic data
    +
    416 detectionData.targetState = LD2410Types::toTargetState(receiveBuffer[2] & 7);
    +
    417 switch (detectionData.targetState) {
    + + + + +
    422 break;
    +
    423
    + + + + +
    428 break;
    +
    429
    + + + +
    434 break;
    -
    435 }
    -
    436 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    -
    437 detectionData.movingTargetSignal = receiveBuffer[5];
    -
    438 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    -
    439 detectionData.stationaryTargetSignal = receiveBuffer[8];
    -
    440 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    -
    441 detectionData.engineeringMode = receiveBuffer[0] == 1;
    -
    442
    - -
    444
    - -
    446 { // Engineering mode data
    -
    447 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    - +
    435 default:
    + + + +
    439 break;
    +
    440 }
    +
    441 detectionData.movingTargetDistance = receiveBuffer[3] | (receiveBuffer[4] << 8);
    +
    442 detectionData.movingTargetSignal = receiveBuffer[5];
    +
    443 detectionData.stationaryTargetDistance = receiveBuffer[6] | (receiveBuffer[7] << 8);
    +
    444 detectionData.stationaryTargetSignal = receiveBuffer[8];
    +
    445 detectionData.detectedDistance = receiveBuffer[9] | (receiveBuffer[10] << 8);
    +
    446 detectionData.engineeringMode = receiveBuffer[0] == 1;
    +
    447
    +
    449
    -
    450
    -
    451 int index = 13;
    -
    452 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    -
    453 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    -
    454 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    -
    455 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    -
    456
    - - -
    459 if (index < payloadSize) {
    -
    460 detectionData.lightLevel = receiveBuffer[index++];
    -
    461 if (index < payloadSize) {
    -
    462 detectionData.outPinStatus = receiveBuffer[index++];
    -
    463 }
    -
    464 }
    -
    465 }
    -
    466 else
    -
    467 { // Clear engineering mode data
    - - - - -
    472 }
    -
    473
    -
    474 if (detectionDataCallback != nullptr) {
    -
    475 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    -
    476 };
    -
    477 DEBUG_PRINTLN_DATA("DATA received");
    -
    478 return true;
    -
    479 }
    -
    480 DEBUG_PRINTLN_DATA("DATA invalid");
    -
    481 return false;
    -
    482}
    -
    483
    -
    484
    -
    485
    -
    486
    -
    487
    + +
    451 { // Engineering mode data
    +
    452 detectionData.movingTargetGateSignalCount = receiveBuffer[11];
    + +
    454
    +
    455
    +
    456 int index = 13;
    +
    457 for (byte i = 0; i <= detectionData.movingTargetGateSignalCount; i++)
    +
    458 detectionData.movingTargetGateSignals[i] = receiveBuffer[index++];
    +
    459 for (byte i = 0; i <= detectionData.stationaryTargetGateSignalCount; i++)
    +
    460 detectionData.stationaryTargetGateSignals[i] = receiveBuffer[index++];
    +
    461
    + + +
    464 if (index < payloadSize) {
    +
    465 detectionData.lightLevel = receiveBuffer[index++];
    +
    466 if (index < payloadSize) {
    +
    467 detectionData.outPinStatus = receiveBuffer[index++];
    +
    468 }
    +
    469 }
    +
    470 }
    +
    471 else
    +
    472 { // Clear engineering mode data
    + + + + +
    477 }
    +
    478
    +
    479 if (detectionDataCallback != nullptr) {
    +
    480 detectionDataCallback(this, detectionData.presenceDetected, detectionDataCallbackUserData);
    +
    481 };
    +
    482 DEBUG_PRINTLN_DATA("DATA received");
    +
    483 return true;
    +
    484 }
    +
    485 DEBUG_PRINTLN_DATA("DATA invalid");
    +
    486 return false;
    +
    487}
    488
    -
    489/******************************************************************************************
    -
    490* Send command
    -
    491******************************************************************************************/
    -
    492void LD2410Async::sendCommand(const byte* command) {
    -
    493 byte size = command[0] + 2;
    -
    494
    -
    495
    -
    496
    -
    497 sensor->write(LD2410Defs::headConfig, 4);
    -
    498 sensor->write(command, size);
    -
    499 sensor->write(LD2410Defs::tailConfig, 4);
    +
    489
    +
    490
    +
    491
    +
    492
    +
    493
    +
    494/******************************************************************************************
    +
    495* Send command
    +
    496******************************************************************************************/
    +
    497void LD2410Async::sendCommand(const byte* command) {
    +
    498 byte size = command[0] + 2;
    +
    499
    500
    -
    501 heartbeat();
    -
    502}
    -
    503
    -
    504/**********************************************************************************
    -
    505* Send async command methods
    -
    506***********************************************************************************/
    -
    507void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    -
    508 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
    -
    509
    - -
    511 DEBUG_PRINT("Async command duration ms: ");
    -
    512 DEBUG_PRINTLN(millis() - asyncCommandStartMs);
    -
    513
    -
    514 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
    -
    515 vTaskSuspendAll();
    -
    516 AsyncCommandCallback cb = asyncCommandCallback;
    -
    517 byte userData = asyncCommandCallbackUserData;
    -
    518 asyncCommandCallback = nullptr;
    -
    519 asyncCommandCallbackUserData = 0;
    -
    520 asyncCommandStartMs = 0;
    -
    521 asyncCommandCommandCode = 0;
    -
    522 asyncCommandActive = false;
    -
    523 xTaskResumeAll();
    -
    524
    -
    525 if (cb != nullptr) {
    -
    526 cb(this, result, userData);
    -
    527 }
    -
    528 }
    -
    529}
    -
    530
    -
    531
    -
    532
    -
    533
    -
    - -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    -
    536}
    -
    +
    501
    +
    502 sensor->write(LD2410Defs::headConfig, 4);
    +
    503 sensor->write(command, size);
    +
    504 sensor->write(LD2410Defs::tailConfig, 4);
    +
    505
    +
    506 heartbeat();
    +
    507}
    +
    508
    +
    509/**********************************************************************************
    +
    510* Send async command methods
    +
    511***********************************************************************************/
    +
    512void LD2410Async::executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result) {
    +
    513 if (asyncCommandActive && asyncCommandCommandCode == commandCode) {
    +
    514
    + +
    516 DEBUG_PRINT("Async command duration ms: ");
    +
    517 DEBUG_PRINTLN(millis() - asyncCommandStartMs);
    +
    518
    +
    519 //Just to be sure that no other task changes the callback data or registers a callback before the callback has been executed
    +
    520 vTaskSuspendAll();
    +
    521 AsyncCommandCallback cb = asyncCommandCallback;
    +
    522 byte userData = asyncCommandCallbackUserData;
    +
    523 asyncCommandCallback = nullptr;
    +
    524 asyncCommandCallbackUserData = 0;
    +
    525 asyncCommandStartMs = 0;
    +
    526 asyncCommandCommandCode = 0;
    +
    527 asyncCommandActive = false;
    +
    528 xTaskResumeAll();
    +
    529
    +
    530 if (cb != nullptr) {
    +
    531 cb(this, result, userData);
    +
    532 }
    +
    533 }
    +
    534}
    +
    535
    +
    536
    537
    -
    538void LD2410Async::handleAsyncCommandCallbackTimeout() {
    -
    539
    -
    540 if (asyncCommandActive && asyncCommandStartMs != 0) {
    -
    541 if (millis() - asyncCommandStartMs > asyncCommandTimeoutMs) {
    - -
    543 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
    -
    544 DEBUG_PRINT(asyncCommandStartMs);
    -
    545 DEBUG_PRINTLN(". Execute callback with timeout result.");
    -
    546 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    -
    547 }
    -
    548 }
    -
    549}
    -
    550
    -
    551
    -
    552
    -
    553
    -
    554
    -
    555bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData)
    -
    556{
    -
    557 vTaskSuspendAll();
    +
    538
    +
    + +
    540 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    +
    541}
    +
    +
    542
    +
    543void LD2410Async::handleAsyncCommandCallbackTimeout() {
    +
    544
    +
    545 if (asyncCommandActive && asyncCommandStartMs != 0) {
    +
    546 if (millis() - asyncCommandStartMs > asyncCommandTimeoutMs) {
    + +
    548 DEBUG_PRINT("Command timeout detected. Start time ms is: ");
    +
    549 DEBUG_PRINT(asyncCommandStartMs);
    +
    550 DEBUG_PRINTLN(". Execute callback with timeout result.");
    +
    551 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::TIMEOUT);
    +
    552 }
    +
    553 }
    +
    554}
    +
    555
    +
    556
    +
    557
    558
    -
    559 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
    -
    560 if (!asyncCommandActive) {
    -
    561
    -
    562
    -
    563 //Register data for callback
    -
    564 asyncCommandActive = true;
    -
    565 asyncCommandCallback = callback;
    -
    566 asyncCommandCallbackUserData = userData;
    -
    567 asyncCommandStartMs = millis();
    -
    568 asyncCommandCommandCode = command[2];
    -
    569 xTaskResumeAll();
    -
    570
    -
    571 sendCommand(command);
    - -
    573 DEBUG_PRINT("Async command ");
    -
    574 DEBUG_PRINT(byte2hex(command[2]));
    -
    575 DEBUG_PRINTLN(" sent");
    -
    576
    -
    577 return true;
    -
    578 }
    -
    579 else {
    -
    580 xTaskResumeAll();
    - -
    582 DEBUG_PRINT("Error! Async command is pending- Did not send async command ");
    -
    583 DEBUG_PRINTLN(byte2hex(command[2]));
    -
    584
    -
    585 return false;
    -
    586 }
    -
    587
    -
    588
    -
    589}
    -
    590/**********************************************************************************
    -
    591* Async command busy
    -
    592***********************************************************************************/
    +
    559
    +
    560bool LD2410Async::sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData)
    +
    561{
    +
    562 vTaskSuspendAll();
    +
    563
    +
    564 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
    +
    565 if (!asyncCommandActive) {
    +
    566
    +
    567
    +
    568 //Register data for callback
    +
    569 asyncCommandActive = true;
    +
    570 asyncCommandCallback = callback;
    +
    571 asyncCommandCallbackUserData = userData;
    +
    572 asyncCommandStartMs = millis();
    +
    573 asyncCommandCommandCode = command[2];
    +
    574 xTaskResumeAll();
    +
    575
    +
    576 sendCommand(command);
    + +
    578 DEBUG_PRINT("Async command ");
    +
    579 DEBUG_PRINT(byte2hex(command[2]));
    +
    580 DEBUG_PRINTLN(" sent");
    +
    581
    +
    582 return true;
    +
    583 }
    +
    584 else {
    +
    585 xTaskResumeAll();
    + +
    587 DEBUG_PRINT("Error! Async command is pending- Did not send async command ");
    +
    588 DEBUG_PRINTLN(byte2hex(command[2]));
    +
    589
    +
    590 return false;
    +
    591 }
    +
    592
    593
    -
    - -
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    -
    596}
    +
    594}
    +
    595/**********************************************************************************
    +
    596* Async command busy
    +
    597***********************************************************************************/
    +
    598
    +
    + +
    600 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    +
    601}
    -
    597
    -
    598/**********************************************************************************
    -
    599* Send async config command methods
    -
    600***********************************************************************************/
    -
    601
    602
    -
    603bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData) {
    -
    604 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
    -
    605 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    603/**********************************************************************************
    +
    604* Send async config command methods
    +
    605***********************************************************************************/
    606
    -
    607 // Reset sequence buffer
    -
    608 if (!resetCommandSequence()) return false;;
    -
    609
    -
    610 // Add the single command
    -
    611 if (!addCommandToSequence(command)) return false;
    -
    612
    -
    613 // Execute as a sequence (with just one command)
    -
    614 return executeCommandSequenceAsync(callback, userData);
    -
    615}
    -
    616
    -
    617/**********************************************************************************
    -
    618* Async command sequence methods
    -
    619***********************************************************************************/
    -
    620void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    -
    621 if (executeCommandSequenceActive) {
    -
    622
    - -
    624 DEBUG_PRINT("Command sequence duration ms: ");
    -
    625 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
    -
    626
    -
    627 vTaskSuspendAll();
    -
    628 AsyncCommandCallback cb = executeCommandSequenceCallback;
    -
    629 byte userData = executeCommandSequenceUserData;
    -
    630 executeCommandSequenceCallback = nullptr;
    -
    631 executeCommandSequenceUserData = 0;
    -
    632 executeCommandSequenceActive = false;
    -
    633 xTaskResumeAll();
    -
    634
    -
    635 if (cb != nullptr) {
    -
    636 cb(this, result, userData);
    -
    637 }
    -
    638 }
    -
    639}
    -
    640
    -
    641
    -
    642// Callback after disabling config mode at the end of sequence
    -
    643void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    644
    -
    645 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    +
    607
    +
    608bool LD2410Async::sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData) {
    +
    609 //Dont check with asyncIsBusy() since this would also check if a sequence or setConfigDataASync is active
    +
    610 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    611
    +
    612 // Reset sequence buffer
    +
    613 if (!resetCommandSequence()) return false;;
    +
    614
    +
    615 // Add the single command
    +
    616 if (!addCommandToSequence(command)) return false;
    +
    617
    +
    618 // Execute as a sequence (with just one command)
    +
    619 return executeCommandSequenceAsync(callback, userData);
    +
    620}
    +
    621
    +
    622/**********************************************************************************
    +
    623* Async command sequence methods
    +
    624***********************************************************************************/
    +
    625void LD2410Async::executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    626 if (executeCommandSequenceActive) {
    +
    627
    + +
    629 DEBUG_PRINT("Command sequence duration ms: ");
    +
    630 DEBUG_PRINTLN(millis() - executeCommandSequenceStartMs);
    +
    631
    +
    632 vTaskSuspendAll();
    +
    633 AsyncCommandCallback cb = executeCommandSequenceCallback;
    +
    634 byte userData = executeCommandSequenceUserData;
    +
    635 executeCommandSequenceCallback = nullptr;
    +
    636 executeCommandSequenceUserData = 0;
    +
    637 executeCommandSequenceActive = false;
    +
    638 xTaskResumeAll();
    +
    639
    +
    640 if (cb != nullptr) {
    +
    641 cb(this, result, userData);
    +
    642 }
    +
    643 }
    +
    644}
    +
    645
    646
    - - -
    649 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
    -
    650 DEBUG_PRINTLN(result);
    -
    651 sequenceResult = result; // report disable failure if it happened
    -
    652 }
    -
    653 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
    -
    654}
    -
    655
    -
    656void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    -
    657 if (!executeCommandSequenceInitialConfigModeState) {
    -
    658 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    -
    659 }
    -
    660 else {
    -
    661 executeCommandSequenceAsyncExecuteCallback(result);
    -
    662 }
    -
    663}
    -
    664
    -
    665
    -
    666// Called when a single command in the sequence completes
    -
    667void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    669 // Abort sequence if a command fails
    - -
    671 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
    -
    672 sender->executeCommandSequenceAsyncFinalize(result);
    -
    673
    -
    674 return;
    -
    675 };
    -
    676
    -
    677 // Move to next command
    -
    678 sender->executeCommandSequenceIndex++;
    -
    679
    -
    680 if (sender->executeCommandSequenceIndex < sender->commandSequenceBufferCount) {
    -
    681 // Send next command
    -
    682 sender->sendCommandAsync(
    -
    683 sender->commandSequenceBuffer[sender->executeCommandSequenceIndex],
    -
    684 executeCommandSequenceAsyncCommandCallback,
    -
    685 0
    -
    686 );
    -
    687 }
    -
    688 else {
    -
    689 // Sequence finished successfully
    -
    690
    -
    691 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    647// Callback after disabling config mode at the end of sequence
    +
    648void LD2410Async::executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    649
    +
    650 LD2410Async::AsyncCommandResult sequenceResult = static_cast<LD2410Async::AsyncCommandResult>(userData);
    +
    651
    + + +
    654 DEBUG_PRINTLN("Warning: Disabling config mode after command sequence failed. Result: ");
    +
    655 DEBUG_PRINTLN(result);
    +
    656 sequenceResult = result; // report disable failure if it happened
    +
    657 }
    +
    658 sender->executeCommandSequenceAsyncExecuteCallback(sequenceResult);
    +
    659}
    +
    660
    +
    661void LD2410Async::executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult result) {
    +
    662 if (!executeCommandSequenceInitialConfigModeState) {
    +
    663 disableConfigModeAsync(executeCommandSequenceAsyncDisableConfigModeCallback, static_cast<byte>(result));
    +
    664 }
    +
    665 else {
    +
    666 executeCommandSequenceAsyncExecuteCallback(result);
    +
    667 }
    +
    668}
    +
    669
    +
    670
    +
    671// Called when a single command in the sequence completes
    +
    672void LD2410Async::executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    674 // Abort sequence if a command fails
    + +
    676 DEBUG_PRINT("Error: Command sequence aborted due to command failure. Result: ");
    +
    677 sender->executeCommandSequenceAsyncFinalize(result);
    +
    678
    +
    679 return;
    +
    680 };
    +
    681
    +
    682 // Move to next command
    +
    683 sender->executeCommandSequenceIndex++;
    +
    684
    +
    685 if (sender->executeCommandSequenceIndex < sender->commandSequenceBufferCount) {
    +
    686 // Send next command
    +
    687 sender->sendCommandAsync(
    +
    688 sender->commandSequenceBuffer[sender->executeCommandSequenceIndex],
    +
    689 executeCommandSequenceAsyncCommandCallback,
    +
    690 0
    +
    691 );
    692 }
    -
    693}
    -
    694
    +
    693 else {
    +
    694 // Sequence finished successfully
    695
    -
    696
    -
    697bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData) {
    -
    698 if (asyncCommandActive || executeCommandSequenceActive) return false;
    -
    699 if (commandSequenceBufferCount == 0) return true; // nothing to send
    +
    696 sender->executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    697 }
    +
    698}
    +
    699
    700
    - -
    702 DEBUG_PRINT("Starting command sequence execution. Number of commands: ");
    -
    703 DEBUG_PRINTLN(commandSequenceBufferCount);
    -
    704
    -
    705 executeCommandSequenceActive = true;
    -
    706 executeCommandSequenceCallback = callback;
    -
    707 executeCommandSequenceUserData = userData;
    -
    708 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    -
    709 executeCommandSequenceStartMs = millis();
    -
    710
    -
    711 if (commandSequenceBufferCount == 0) {
    -
    712 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
    -
    713 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
    -
    714 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    -
    715 });
    -
    716 return true;
    -
    717
    -
    718 }
    -
    719
    -
    720 if (!configModeEnabled) {
    -
    721 // Need to enable config mode first
    -
    722 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
    -
    723 executeCommandSequenceIndex = -1;
    -
    724 return sendCommandAsync(LD2410Defs::configEnableCommandData, executeCommandSequenceAsyncCommandCallback, 0);
    -
    725 }
    -
    726 else {
    -
    727 // Already in config mode, start directly.
    -
    728 // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires.
    -
    729 executeCommandSequenceIndex = 0;
    -
    730 return sendCommandAsync(commandSequenceBuffer[executeCommandSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0);
    -
    731 }
    -
    732
    -
    733}
    -
    734
    -
    735bool LD2410Async::addCommandToSequence(const byte* command) {
    -
    736 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    701
    +
    702bool LD2410Async::executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData) {
    +
    703 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    704 if (commandSequenceBufferCount == 0) return true; // nothing to send
    +
    705
    + +
    707 DEBUG_PRINT("Starting command sequence execution. Number of commands: ");
    +
    708 DEBUG_PRINTLN(commandSequenceBufferCount);
    +
    709
    +
    710 executeCommandSequenceActive = true;
    +
    711 executeCommandSequenceCallback = callback;
    +
    712 executeCommandSequenceUserData = userData;
    +
    713 executeCommandSequenceInitialConfigModeState = configModeEnabled;
    +
    714 executeCommandSequenceStartMs = millis();
    +
    715
    +
    716 if (commandSequenceBufferCount == 0) {
    +
    717 //Wait 1 ms to ensure that the callback is not executed before the caller of this method has finished its work
    +
    718 executeCommandSequenceOnceTicker.once_ms(1, [this]() {
    +
    719 this->executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult::SUCCESS);
    +
    720 });
    +
    721 return true;
    +
    722
    +
    723 }
    +
    724
    +
    725 if (!configModeEnabled) {
    +
    726 // Need to enable config mode first
    +
    727 // So set the sequence index to -1 to ensure the first command in the sequence (at index 0) is executed when the callback fires.
    +
    728 executeCommandSequenceIndex = -1;
    +
    729 return sendCommandAsync(LD2410Defs::configEnableCommandData, executeCommandSequenceAsyncCommandCallback, 0);
    +
    730 }
    +
    731 else {
    +
    732 // Already in config mode, start directly.
    +
    733 // We start the first command in the sequence directly and set the sequence index 0, so the second command (if any) is executed when the callback fires.
    +
    734 executeCommandSequenceIndex = 0;
    +
    735 return sendCommandAsync(commandSequenceBuffer[executeCommandSequenceIndex], executeCommandSequenceAsyncCommandCallback, 0);
    +
    736 }
    737
    -
    738 if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE_LENGTH) {
    - -
    740 DEBUG_PRINTLN("Error: Command sequence buffer full.");
    -
    741 return false;
    -
    742 };
    -
    743 // First byte of the command is the payload length
    -
    744 uint8_t len = command[0];
    -
    745 uint8_t totalLen = len + 2; // payload + 2 length bytes
    -
    746
    -
    747 if (totalLen > LD2410Defs::LD2410_Buffer_Size) {
    - -
    749 DEBUG_PRINTLN("Error: Command too long for command sequence buffer.");
    -
    750 return false; // safety
    -
    751 }
    -
    752 memcpy(commandSequenceBuffer[commandSequenceBufferCount],
    -
    753 command,
    -
    754 totalLen);
    -
    755
    -
    756 commandSequenceBufferCount++;
    - -
    758 DEBUG_PRINT("Command added to sequence. Count: ");
    -
    759 DEBUG_PRINTLN(commandSequenceBufferCount);
    +
    738}
    +
    739
    +
    740bool LD2410Async::addCommandToSequence(const byte* command) {
    +
    741 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    742
    +
    743 if (commandSequenceBufferCount >= MAX_COMMAND_SEQUENCE_LENGTH) {
    + +
    745 DEBUG_PRINTLN("Error: Command sequence buffer full.");
    +
    746 return false;
    +
    747 };
    +
    748 // First byte of the command is the payload length
    +
    749 uint8_t len = command[0];
    +
    750 uint8_t totalLen = len + 2; // payload + 2 length bytes
    +
    751
    +
    752 if (totalLen > LD2410Defs::LD2410_Buffer_Size) {
    + +
    754 DEBUG_PRINTLN("Error: Command too long for command sequence buffer.");
    +
    755 return false; // safety
    +
    756 }
    +
    757 memcpy(commandSequenceBuffer[commandSequenceBufferCount],
    +
    758 command,
    +
    759 totalLen);
    760
    -
    761 return true;
    -
    762}
    -
    763
    -
    764
    -
    765bool LD2410Async::resetCommandSequence() {
    -
    766 if (asyncCommandActive || executeCommandSequenceActive) return false;
    -
    767
    -
    768 commandSequenceBufferCount = 0;
    - -
    770 DEBUG_PRINTLN("Command sequence reset done.");
    -
    771
    -
    772 return true;
    -
    773}
    -
    774
    -
    775/**********************************************************************************
    -
    776* Config mode commands
    -
    777***********************************************************************************/
    -
    778//Config mode command have a internal version which does not check for busy and can therefore be used within other command implementations
    +
    761 commandSequenceBufferCount++;
    + +
    763 DEBUG_PRINT("Command added to sequence. Count: ");
    +
    764 DEBUG_PRINTLN(commandSequenceBufferCount);
    +
    765
    +
    766 return true;
    +
    767}
    +
    768
    +
    769
    +
    770bool LD2410Async::resetCommandSequence() {
    +
    771 if (asyncCommandActive || executeCommandSequenceActive) return false;
    +
    772
    +
    773 commandSequenceBufferCount = 0;
    + +
    775 DEBUG_PRINTLN("Command sequence reset done.");
    +
    776
    +
    777 return true;
    +
    778}
    779
    -
    780bool LD2410Async::enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
    - -
    782 DEBUG_PRINTLN("Enable Config Mode");
    -
    783 return sendCommandAsync(LD2410Defs::configEnableCommandData, callback, userData);
    -
    784}
    -
    785
    -
    -
    786bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    787 if (asyncIsBusy()) return false;
    -
    788 return enableConfigModeInternalAsync(callback, userData);
    +
    780/**********************************************************************************
    +
    781* Config mode commands
    +
    782***********************************************************************************/
    +
    783//Config mode command have a internal version which does not check for busy and can therefore be used within other command implementations
    +
    784
    +
    785bool LD2410Async::enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
    + +
    787 DEBUG_PRINTLN("Enable Config Mode");
    +
    788 return sendCommandAsync(LD2410Defs::configEnableCommandData, callback, userData);
    789}
    -
    790
    -
    791bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
    - -
    793 DEBUG_PRINTLN("Disable Config Mode");
    -
    794 return sendCommandAsync(LD2410Defs::configDisableCommandData, callback, userData);
    -
    795}
    -
    796
    -
    -
    797bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    -
    798 if (asyncIsBusy()) return false;
    -
    799 return disableConfigModeInternalAsync(callback, userData);
    -
    800}
    +
    +
    791bool LD2410Async::enableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    792 if (asyncIsBusy()) return false;
    +
    793 return enableConfigModeInternalAsync(callback, userData);
    +
    794}
    +
    795
    +
    796bool LD2410Async::disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData) {
    + +
    798 DEBUG_PRINTLN("Disable Config Mode");
    +
    799 return sendCommandAsync(LD2410Defs::configDisableCommandData, callback, userData);
    +
    800}
    801
    -
    802/**********************************************************************************
    -
    803* Native LD2410 commands to control, configure and query the sensor
    -
    804***********************************************************************************/
    -
    805// All these commands need to be executed in config mode.
    -
    806// The code takes care of that. Enables/disable config mode if necessary,
    -
    807// but also keeps config mode active if it was already active before the command
    -
    -
    808bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    -
    809 unsigned short noOneTimeout,
    -
    810 AsyncCommandCallback callback, byte userData)
    -
    811{
    - -
    813 DEBUG_PRINTLN("Set Max Gate");
    -
    814 if (asyncIsBusy()) return false;
    -
    815
    -
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    -
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    -
    818 return sendConfigCommandAsync(cmd, callback, userData);
    -
    819 }
    -
    820 return false;
    -
    821}
    +
    +
    802bool LD2410Async::disableConfigModeAsync(AsyncCommandCallback callback, byte userData) {
    +
    803 if (asyncIsBusy()) return false;
    +
    804 return disableConfigModeInternalAsync(callback, userData);
    +
    805}
    -
    822
    -
    823
    -
    -
    824bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    - -
    826 DEBUG_PRINTLN("Request Gate Parameters");
    -
    827 if (asyncIsBusy()) return false;
    -
    828 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    -
    829}
    +
    806
    +
    807/**********************************************************************************
    +
    808* Native LD2410 commands to control, configure and query the sensor
    +
    809***********************************************************************************/
    +
    810// All these commands need to be executed in config mode.
    +
    811// The code takes care of that. Enables/disable config mode if necessary,
    +
    812// but also keeps config mode active if it was already active before the command
    +
    +
    813bool LD2410Async::configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate,
    +
    814 unsigned short noOneTimeout,
    +
    815 AsyncCommandCallback callback, byte userData)
    +
    816{
    + +
    818 DEBUG_PRINTLN("Set Max Gate");
    +
    819 if (asyncIsBusy()) return false;
    +
    820
    +
    821 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    +
    822 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    +
    823 return sendConfigCommandAsync(cmd, callback, userData);
    +
    824 }
    +
    825 return false;
    +
    826}
    -
    830
    -
    -
    831bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    - -
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    -
    834 if (asyncIsBusy()) return false;
    -
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    -
    836}
    +
    827
    +
    828
    +
    +
    829bool LD2410Async::requestGateParametersAsync(AsyncCommandCallback callback, byte userData) {
    + +
    831 DEBUG_PRINTLN("Request Gate Parameters");
    +
    832 if (asyncIsBusy()) return false;
    +
    833 return sendConfigCommandAsync(LD2410Defs::requestParamsCommandData, callback, userData);
    +
    834}
    -
    837
    -
    -
    838bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    - -
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    -
    841 if (asyncIsBusy()) return false;
    -
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    -
    843}
    +
    835
    +
    +
    836bool LD2410Async::enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    + +
    838 DEBUG_PRINTLN("Enable EngineeringMode");
    +
    839 if (asyncIsBusy()) return false;
    +
    840 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    +
    841}
    -
    844
    -
    -
    845bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    -
    846 const byte stationaryThresholds[9],
    -
    847 AsyncCommandCallback callback, byte userData)
    -
    848{
    - -
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    -
    851
    -
    852 if (asyncIsBusy()) return false;
    -
    853
    -
    854 if (!resetCommandSequence()) return false;
    -
    855
    -
    856 for (byte gate = 0; gate < 9; gate++) {
    - -
    858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    -
    859 if (!addCommandToSequence(cmd)) return false;
    -
    860 }
    -
    861
    -
    862 return executeCommandSequenceAsync(callback, userData);
    -
    863}
    +
    842
    +
    +
    843bool LD2410Async::disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData) {
    + +
    845 DEBUG_PRINTLN("Disable EngineeringMode");
    +
    846 if (asyncIsBusy()) return false;
    +
    847 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    +
    848}
    -
    864
    -
    865
    +
    849
    +
    +
    850bool LD2410Async::configureDistanceGateSensitivityAsync(const byte movingThresholds[9],
    +
    851 const byte stationaryThresholds[9],
    +
    852 AsyncCommandCallback callback, byte userData)
    +
    853{
    + +
    855 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    +
    856
    +
    857 if (asyncIsBusy()) return false;
    +
    858
    +
    859 if (!resetCommandSequence()) return false;
    +
    860
    +
    861 for (byte gate = 0; gate < 9; gate++) {
    + +
    863 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    +
    864 if (!addCommandToSequence(cmd)) return false;
    +
    865 }
    866
    -
    -
    867bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    -
    868 byte stationaryThreshold,
    -
    869 AsyncCommandCallback callback, byte userData)
    -
    870{
    - -
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    -
    873
    -
    874 if (asyncIsBusy()) return false;
    -
    875
    - -
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    -
    878
    -
    879 return sendConfigCommandAsync(cmd, callback, userData);
    -
    880}
    +
    867 return executeCommandSequenceAsync(callback, userData);
    +
    868}
    -
    881
    -
    882
    +
    869
    +
    870
    +
    871
    +
    +
    872bool LD2410Async::configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold,
    +
    873 byte stationaryThreshold,
    +
    874 AsyncCommandCallback callback, byte userData)
    +
    875{
    + +
    877 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    +
    878
    +
    879 if (asyncIsBusy()) return false;
    +
    880
    + +
    882 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    883
    -
    -
    884bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    - -
    886 DEBUG_PRINTLN("Request Firmware");
    -
    887
    -
    888 if (asyncIsBusy()) return false;
    -
    889
    -
    890 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    -
    891}
    +
    884 return sendConfigCommandAsync(cmd, callback, userData);
    +
    885}
    +
    886
    +
    887
    +
    888
    +
    +
    889bool LD2410Async::requestFirmwareAsync(AsyncCommandCallback callback, byte userData) {
    + +
    891 DEBUG_PRINTLN("Request Firmware");
    892
    -
    893
    -
    -
    894bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    -
    895 AsyncCommandCallback callback, byte userData)
    -
    896{
    - -
    898 DEBUG_PRINTLN("Set Baud Rate");
    -
    899
    -
    900 if (asyncIsBusy()) return false;
    -
    901
    -
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    -
    903 return false;
    -
    904
    -
    905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    -
    906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    -
    907
    -
    908 return sendConfigCommandAsync(cmd, callback, userData);
    -
    909}
    +
    893 if (asyncIsBusy()) return false;
    +
    894
    +
    895 return sendConfigCommandAsync(LD2410Defs::requestFirmwareCommandData, callback, userData);
    +
    896}
    -
    910
    -
    911
    +
    897
    +
    898
    +
    +
    899bool LD2410Async::configureBaudRateAsync(byte baudRateSetting,
    +
    900 AsyncCommandCallback callback, byte userData)
    +
    901{
    + +
    903 DEBUG_PRINTLN("Set Baud Rate");
    +
    904
    +
    905 if (asyncIsBusy()) return false;
    +
    906
    +
    907 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    +
    908 return false;
    +
    909
    +
    910 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    +
    911 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    912
    -
    -
    913bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    -
    914
    -
    915 if (asyncIsBusy()) return false;
    -
    916
    -
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    -
    918}
    +
    913 return sendConfigCommandAsync(cmd, callback, userData);
    +
    914}
    +
    915
    +
    916
    +
    917
    +
    +
    918bool LD2410Async::configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData) {
    919
    -
    920
    -
    -
    921bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    - -
    923 DEBUG_PRINTLN("Restore Factory Settings");
    -
    924
    -
    925 if (asyncIsBusy()) return false;
    -
    926 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    -
    927}
    +
    920 if (asyncIsBusy()) return false;
    +
    921
    +
    922 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    923}
    -
    928
    +
    924
    +
    925
    +
    +
    926bool LD2410Async::restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData) {
    + +
    928 DEBUG_PRINTLN("Restore Factory Settings");
    929
    -
    930
    -
    -
    931bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    - -
    933 DEBUG_PRINTLN("Enable Bluetooth");
    -
    934 if (asyncIsBusy()) return false;
    -
    935
    -
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    937}
    +
    930 if (asyncIsBusy()) return false;
    +
    931 return sendConfigCommandAsync(LD2410Defs::restoreFactorSettingsCommandData, callback, userData);
    +
    932}
    -
    938
    -
    -
    939bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    - -
    941 DEBUG_PRINTLN("Disable Bluetooth");
    -
    942 if (asyncIsBusy()) return false;
    -
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    944}
    +
    933
    +
    934
    +
    935
    +
    +
    936bool LD2410Async::enableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    + +
    938 DEBUG_PRINTLN("Enable Bluetooth");
    +
    939 if (asyncIsBusy()) return false;
    +
    940
    +
    941 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    942}
    -
    945
    -
    946
    -
    -
    947bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    - -
    949 DEBUG_PRINTLN("Request Mac Address");
    -
    950 if (asyncIsBusy()) return false;
    -
    951 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    -
    952}
    +
    943
    +
    +
    944bool LD2410Async::disableBluetoothAsync(AsyncCommandCallback callback, byte userData) {
    + +
    946 DEBUG_PRINTLN("Disable Bluetooth");
    +
    947 if (asyncIsBusy()) return false;
    +
    948 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    949}
    -
    953
    -
    - -
    955 AsyncCommandCallback callback, byte userData)
    -
    956{
    - -
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    -
    959 if (asyncIsBusy()) return false;
    -
    960
    - -
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    -
    963
    -
    964 return sendConfigCommandAsync(cmd, callback, userData);
    -
    965}
    +
    950
    +
    951
    +
    +
    952bool LD2410Async::requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData) {
    + +
    954 DEBUG_PRINTLN("Request Mac Address");
    +
    955 if (asyncIsBusy()) return false;
    +
    956 return sendConfigCommandAsync(LD2410Defs::requestMacAddressCommandData, callback, userData);
    +
    957}
    -
    966
    -
    967
    +
    958
    +
    + +
    960 AsyncCommandCallback callback, byte userData)
    +
    961{
    + +
    963 DEBUG_PRINTLN("Set Bluetooth Password");
    +
    964 if (asyncIsBusy()) return false;
    +
    965
    + +
    967 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    968
    -
    -
    969bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    -
    970
    -
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    -
    972}
    +
    969 return sendConfigCommandAsync(cmd, callback, userData);
    +
    970}
    +
    971
    +
    972
    973
    -
    974
    -
    -
    975bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    - -
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    -
    978 if (asyncIsBusy()) return false;
    -
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    -
    980}
    +
    +
    974bool LD2410Async::configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData) {
    +
    975
    +
    976 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    977}
    -
    981
    -
    -
    982bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    - -
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    -
    985 if (asyncIsBusy()) return false;
    -
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    -
    987};
    +
    978
    +
    979
    +
    +
    980bool LD2410Async::configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData) {
    + +
    982 DEBUG_PRINTLN("Reset Bluetooth Password");
    +
    983 if (asyncIsBusy()) return false;
    +
    984 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    +
    985}
    -
    988
    -
    - -
    990 AsyncCommandCallback callback, byte userData)
    -
    991{
    - -
    993 DEBUG_PRINTLN("Set Distance Resolution");
    -
    994 if (asyncIsBusy()) return false;
    -
    995
    -
    996 byte cmd[6];
    -
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    -
    998
    -
    999 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1000}
    +
    986
    +
    +
    987bool LD2410Async::configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData) {
    + +
    989 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    +
    990 if (asyncIsBusy()) return false;
    +
    991 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    +
    992};
    -
    1001
    -
    -
    1002bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    -
    1005 if (asyncIsBusy()) return false;
    -
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    -
    1007};
    +
    993
    +
    + +
    995 AsyncCommandCallback callback, byte userData)
    +
    996{
    + +
    998 DEBUG_PRINTLN("Set Distance Resolution");
    +
    999 if (asyncIsBusy()) return false;
    +
    1000
    +
    1001 byte cmd[6];
    +
    1002 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    +
    1003
    +
    1004 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1005}
    -
    1008
    -
    -
    1009bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1011 DEBUG_PRINTLN("Request Distance Resolution cm");
    -
    1012 if (asyncIsBusy()) return false;
    -
    1013 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    -
    1014}
    +
    1006
    +
    +
    1007bool LD2410Async::configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1009 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    +
    1010 if (asyncIsBusy()) return false;
    +
    1011 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    +
    1012};
    -
    1015
    -
    - -
    1017 LD2410Types::OutputControl outputControl,
    -
    1018 AsyncCommandCallback callback, byte userData)
    -
    1019{
    - -
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    -
    1022 if (asyncIsBusy()) return false;
    -
    1023
    - -
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    -
    1026
    -
    1027 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1028}
    +
    1013
    +
    +
    1014bool LD2410Async::requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1016 DEBUG_PRINTLN("Request Distance Resolution cm");
    +
    1017 if (asyncIsBusy()) return false;
    +
    1018 return sendConfigCommandAsync(LD2410Defs::requestDistanceResolutionCommandData, callback, userData);
    +
    1019}
    -
    1029
    -
    1030
    +
    1020
    +
    + +
    1022 LD2410Types::OutputControl outputControl,
    +
    1023 AsyncCommandCallback callback, byte userData)
    +
    1024{
    + +
    1026 DEBUG_PRINTLN("Set Aux Control Settings");
    +
    1027 if (asyncIsBusy()) return false;
    +
    1028
    + +
    1030 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    1031
    -
    -
    1032bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1034 DEBUG_PRINTLN("Request Aux Control Settings");
    -
    1035
    -
    1036 if (asyncIsBusy()) return false;
    -
    1037
    -
    1038 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    -
    1039}
    +
    1032 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1033}
    +
    1034
    +
    1035
    +
    1036
    +
    +
    1037bool LD2410Async::requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1039 DEBUG_PRINTLN("Request Aux Control Settings");
    1040
    -
    1041
    -
    -
    1042bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1044 DEBUG_PRINTLN("Begin auto config");
    -
    1045
    -
    1046 if (asyncIsBusy()) return false;
    -
    1047
    -
    1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    -
    1049};
    +
    1041 if (asyncIsBusy()) return false;
    +
    1042
    +
    1043 return sendConfigCommandAsync(LD2410Defs::requestAuxControlSettingsCommandData, callback, userData);
    +
    1044}
    +
    1045
    +
    1046
    +
    +
    1047bool LD2410Async::beginAutoConfigAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1049 DEBUG_PRINTLN("Begin auto config");
    1050
    -
    -
    1051bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1053 DEBUG_PRINTLN("Reqtest auto config status");
    -
    1054
    -
    1055 if (asyncIsBusy()) return false;
    -
    1056
    -
    1057 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    -
    1058}
    +
    1051 if (asyncIsBusy()) return false;
    +
    1052
    +
    1053 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
    +
    1054};
    +
    +
    1055
    +
    +
    1056bool LD2410Async::requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1058 DEBUG_PRINTLN("Reqtest auto config status");
    +
    1059
    +
    1060 if (asyncIsBusy()) return false;
    +
    1061
    +
    1062 return sendConfigCommandAsync(LD2410Defs::requestAutoConfigStatusCommandData, callback, userData);
    +
    1063}
    -
    1059/**********************************************************************************
    -
    1060* High level commands that combine several native commands
    -
    1061***********************************************************************************/
    -
    1062// It is recommend to always use these commands if feasible,
    -
    1063// since they streamline the inconsistencies in the native requesr and config commands
    -
    1064// and reduce the total number of commands that have to be called.
    -
    1065
    -
    1066
    -
    -
    1067bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1069 DEBUG_PRINTLN("Request all static data");
    +
    1064/**********************************************************************************
    +
    1065* High level commands that combine several native commands
    +
    1066***********************************************************************************/
    +
    1067// It is recommend to always use these commands if feasible,
    +
    1068// since they streamline the inconsistencies in the native requesr and config commands
    +
    1069// and reduce the total number of commands that have to be called.
    1070
    -
    1071 if (asyncIsBusy()) return false;
    -
    1072
    -
    1073
    -
    1074 if (!resetCommandSequence()) return false;
    +
    1071
    +
    +
    1072bool LD2410Async::requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1074 DEBUG_PRINTLN("Request all static data");
    1075
    -
    1076 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
    -
    1077 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
    +
    1076 if (asyncIsBusy()) return false;
    +
    1077
    1078
    -
    1079 return executeCommandSequenceAsync(callback, userData);
    -
    1080}
    +
    1079 if (!resetCommandSequence()) return false;
    +
    1080
    +
    1081 if (!addCommandToSequence(LD2410Defs::requestFirmwareCommandData)) return false;
    +
    1082 if (!addCommandToSequence(LD2410Defs::requestMacAddressCommandData)) return false;
    +
    1083
    +
    1084 return executeCommandSequenceAsync(callback, userData);
    +
    1085}
    -
    1081
    -
    -
    1082bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    - -
    1084 DEBUG_PRINTLN("Request all config data");
    -
    1085
    -
    1086 if (asyncIsBusy()) return false;
    -
    1087
    -
    1088 if (!resetCommandSequence()) return false;
    -
    1089 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    -
    1090 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
    -
    1091 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
    +
    1086
    +
    +
    1087bool LD2410Async::requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData) {
    + +
    1089 DEBUG_PRINTLN("Request all config data");
    +
    1090
    +
    1091 if (asyncIsBusy()) return false;
    1092
    -
    1093 return executeCommandSequenceAsync(callback, userData);
    -
    1094
    -
    1095}
    +
    1093 if (!resetCommandSequence()) return false;
    +
    1094 if (!addCommandToSequence(LD2410Defs::requestDistanceResolutionCommandData)) return false;
    +
    1095 if (!addCommandToSequence(LD2410Defs::requestParamsCommandData)) return false;
    +
    1096 if (!addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData)) return false;
    +
    1097
    +
    1098 return executeCommandSequenceAsync(callback, userData);
    +
    1099
    +
    1100}
    -
    1096// ----------------------------------------------------------------------------------
    -
    1097// - Set config data async methods
    -
    1098// ----------------------------------------------------------------------------------
    -
    1099// The command to set all config values on the sensor is the most complex command internally.
    -
    1100// It uses a first command sequences to get the current sensor config, then checks what
    -
    1101// actually needs to be changed and then creates a second command sequence to do the needed changes.
    -
    1102
    -
    1103void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    -
    1104 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    -
    1105 configureAllConfigSettingsAsyncConfigCallback = nullptr;
    -
    1106 byte userData = configureAllConfigSettingsAsyncConfigUserData;
    -
    1107 configureAllConfigSettingsAsyncConfigActive = false;
    -
    1108
    - -
    1110 DEBUG_PRINT("SetConfigDataAsync complete. Result: ");
    -
    1111 DEBUG_PRINTLN(result);
    -
    1112
    -
    1113 if (cb) {
    -
    1114 cb(this, result, userData);
    -
    1115 }
    -
    1116
    -
    1117}
    -
    1118
    -
    1119void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - - -
    1122 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
    -
    1123 DEBUG_PRINTLN(result);
    -
    1124 sender->configureAllConfigSettingsAsyncExecuteCallback(result);
    -
    1125 }
    -
    1126 else {
    -
    1127 // Config mode disabled successfully
    -
    1128 sender->configureAllConfigSettingsAsyncExecuteCallback(sender->configureAllConfigSettingsAsyncResultToReport);
    -
    1129 }
    -
    1130}
    -
    1131
    -
    1132void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    -
    1133
    -
    1134 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    -
    1135 configureAllConfigSettingsAsyncResultToReport = resultToReport;
    +
    1101// ----------------------------------------------------------------------------------
    +
    1102// - Set config data async methods
    +
    1103// ----------------------------------------------------------------------------------
    +
    1104// The command to set all config values on the sensor is the most complex command internally.
    +
    1105// It uses a first command sequences to get the current sensor config, then checks what
    +
    1106// actually needs to be changed and then creates a second command sequence to do the needed changes.
    +
    1107
    +
    1108void LD2410Async::configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result) {
    +
    1109 AsyncCommandCallback cb = configureAllConfigSettingsAsyncConfigCallback;
    +
    1110 configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1111 byte userData = configureAllConfigSettingsAsyncConfigUserData;
    +
    1112 configureAllConfigSettingsAsyncConfigActive = false;
    +
    1113
    + +
    1115 DEBUG_PRINT("SetConfigDataAsync complete. Result: ");
    +
    1116 DEBUG_PRINTLN(result);
    +
    1117
    +
    1118 if (cb) {
    +
    1119 cb(this, result, userData);
    +
    1120 }
    +
    1121
    +
    1122}
    +
    1123
    +
    1124void LD2410Async::configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + + +
    1127 DEBUG_PRINTLN("Warning: Disabling config mode after configureAllConfigSettingsAsync failed. Result: ");
    +
    1128 DEBUG_PRINTLN(result);
    +
    1129 sender->configureAllConfigSettingsAsyncExecuteCallback(result);
    +
    1130 }
    +
    1131 else {
    +
    1132 // Config mode disabled successfully
    +
    1133 sender->configureAllConfigSettingsAsyncExecuteCallback(sender->configureAllConfigSettingsAsyncResultToReport);
    +
    1134 }
    +
    1135}
    1136
    -
    1137 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    - -
    1139 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
    -
    1140 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    -
    1141 }
    -
    1142 }
    -
    1143 else {
    -
    1144 configureAllConfigSettingsAsyncExecuteCallback(resultToReport);
    -
    1145 }
    -
    1146}
    -
    1147
    -
    1148
    -
    1149void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1150 if (AsyncCommandResult::SUCCESS != result) {
    - -
    1152 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
    -
    1153 };
    -
    1154 //Pass result to finalize method, which will also disable config mode if needed
    -
    1155 sender->configureAllConfigSettingsAsyncFinalize(result);
    -
    1156}
    -
    1157
    -
    1158
    -
    1159bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() {
    -
    1160 //Get a clone of the current config, so it does not get changed while we are working
    - +
    1137void LD2410Async::configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport) {
    +
    1138
    +
    1139 if (configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    +
    1140 configureAllConfigSettingsAsyncResultToReport = resultToReport;
    +
    1141
    +
    1142 if (!disableConfigModeAsync(configureAllConfigSettingsAsyncConfigModeDisabledCallback, 0)) {
    + +
    1144 DEBUG_PRINTLN("Error: Disabling config mode after configureAllConfigSettingsAsync failed.");
    +
    1145 configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult::FAILED);
    +
    1146 }
    +
    1147 }
    +
    1148 else {
    +
    1149 configureAllConfigSettingsAsyncExecuteCallback(resultToReport);
    +
    1150 }
    +
    1151}
    +
    1152
    +
    1153
    +
    1154void LD2410Async::configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1155 if (AsyncCommandResult::SUCCESS != result) {
    + +
    1157 DEBUG_PRINTLN("Error: Writing config data to sensor failed.");
    +
    1158 };
    +
    1159 //Pass result to finalize method, which will also disable config mode if needed
    +
    1160 sender->configureAllConfigSettingsAsyncFinalize(result);
    +
    1161}
    1162
    -
    1163 if (!resetCommandSequence()) {
    - -
    1165 DEBUG_PRINTLN("Error: Could not reset command sequence.");
    -
    1166 return false;
    -
    1167 };
    -
    1168 // 1. Max gate + no one timeout
    -
    1169 if (configureAllConfigSettingsAsyncWriteFullConfig
    -
    1170 || currentConfig.maxMotionDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate
    -
    1171 || currentConfig.maxStationaryDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate
    -
    1172 || currentConfig.noOneTimeout != configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout) {
    -
    1173 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    - -
    1175 configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate,
    -
    1176 configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate,
    -
    1177 configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout)) {
    - -
    1179 DEBUG_PRINTLN("Error: Building max gate command failed.");
    -
    1180 return false;
    -
    1181 };
    -
    1182 if (!addCommandToSequence(cmd)) {
    +
    1163
    +
    1164bool LD2410Async::configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence() {
    +
    1165 //Get a clone of the current config, so it does not get changed while we are working
    + +
    1167
    +
    1168 if (!resetCommandSequence()) {
    + +
    1170 DEBUG_PRINTLN("Error: Could not reset command sequence.");
    +
    1171 return false;
    +
    1172 };
    +
    1173 // 1. Max gate + no one timeout
    +
    1174 if (configureAllConfigSettingsAsyncWriteFullConfig
    +
    1175 || currentConfig.maxMotionDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate
    +
    1176 || currentConfig.maxStationaryDistanceGate != configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate
    +
    1177 || currentConfig.noOneTimeout != configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout) {
    +
    1178 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    + +
    1180 configureAllConfigSettingsAsyncConfigDataToWrite.maxMotionDistanceGate,
    +
    1181 configureAllConfigSettingsAsyncConfigDataToWrite.maxStationaryDistanceGate,
    +
    1182 configureAllConfigSettingsAsyncConfigDataToWrite.noOneTimeout)) {
    -
    1184 DEBUG_PRINTLN("Error: Adding max gate command to sequence failed.");
    +
    1184 DEBUG_PRINTLN("Error: Building max gate command failed.");
    1185 return false;
    1186 };
    - -
    1188 DEBUG_PRINTLN("Max gate command added to sequence.");
    -
    1189 }
    -
    1190 // 2. Gate sensitivities (sequence of commands)
    -
    1191 for (byte gate = 0; gate < 9; gate++) {
    -
    1192 if (configureAllConfigSettingsAsyncWriteFullConfig
    -
    1193 || currentConfig.distanceGateMotionSensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate]
    -
    1194 || currentConfig.distanceGateStationarySensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) {
    - - -
    1197 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate],
    -
    1198 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) {
    - -
    1200 DEBUG_PRINT("Error: Error building gate sensitivity command for gate ");
    -
    1201 DEBUG_PRINTLN(gate);
    -
    1202
    -
    1203 return false;
    -
    1204 };
    -
    1205 if (!addCommandToSequence(cmd)) {
    - -
    1207 DEBUG_PRINT("Error: Adding gate sensitivity command for gate ");
    -
    1208 DEBUG_PRINT(gate);
    -
    1209 DEBUG_PRINTLN(" to sequence failed.");
    -
    1210
    -
    1211 return false;
    -
    1212 }
    - -
    1214 DEBUG_PRINT("Gate sensitivity command for gate ");
    -
    1215 DEBUG_PRINT(gate);
    -
    1216 DEBUG_PRINTLN(" added to sequence.");
    -
    1217 }
    -
    1218 }
    -
    1219
    -
    1220 //3. Distance resolution
    -
    1221 if (configureAllConfigSettingsAsyncWriteFullConfig
    -
    1222 || currentConfig.distanceResolution != configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution) {
    -
    1223 byte cmd[6]; // resolution commands are 6 bytes long
    -
    1224 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution)) {
    - -
    1226 DEBUG_PRINTLN("Error: Building distance resolution command failed.");
    -
    1227 return false;
    -
    1228 };
    -
    1229 if (!addCommandToSequence(cmd)) {
    +
    1187 if (!addCommandToSequence(cmd)) {
    + +
    1189 DEBUG_PRINTLN("Error: Adding max gate command to sequence failed.");
    +
    1190 return false;
    +
    1191 };
    + +
    1193 DEBUG_PRINTLN("Max gate command added to sequence.");
    +
    1194 }
    +
    1195 // 2. Gate sensitivities (sequence of commands)
    +
    1196 for (byte gate = 0; gate < 9; gate++) {
    +
    1197 if (configureAllConfigSettingsAsyncWriteFullConfig
    +
    1198 || currentConfig.distanceGateMotionSensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate]
    +
    1199 || currentConfig.distanceGateStationarySensitivity[gate] != configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate]) {
    + + +
    1202 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateMotionSensitivity[gate],
    +
    1203 configureAllConfigSettingsAsyncConfigDataToWrite.distanceGateStationarySensitivity[gate])) {
    + +
    1205 DEBUG_PRINT("Error: Error building gate sensitivity command for gate ");
    +
    1206 DEBUG_PRINTLN(gate);
    +
    1207
    +
    1208 return false;
    +
    1209 };
    +
    1210 if (!addCommandToSequence(cmd)) {
    + +
    1212 DEBUG_PRINT("Error: Adding gate sensitivity command for gate ");
    +
    1213 DEBUG_PRINT(gate);
    +
    1214 DEBUG_PRINTLN(" to sequence failed.");
    +
    1215
    +
    1216 return false;
    +
    1217 }
    + +
    1219 DEBUG_PRINT("Gate sensitivity command for gate ");
    +
    1220 DEBUG_PRINT(gate);
    +
    1221 DEBUG_PRINTLN(" added to sequence.");
    +
    1222 }
    +
    1223 }
    +
    1224
    +
    1225 //3. Distance resolution
    +
    1226 if (configureAllConfigSettingsAsyncWriteFullConfig
    +
    1227 || currentConfig.distanceResolution != configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution) {
    +
    1228 byte cmd[6]; // resolution commands are 6 bytes long
    +
    1229 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, configureAllConfigSettingsAsyncConfigDataToWrite.distanceResolution)) {
    -
    1231 DEBUG_PRINTLN("Error: Adding distance resolution command to sequence failed.");
    +
    1231 DEBUG_PRINTLN("Error: Building distance resolution command failed.");
    1232 return false;
    1233 };
    - -
    1235 DEBUG_PRINTLN("Distance resolution command added to sequence.");
    -
    1236 };
    -
    1237
    -
    1238 //4. Aux control settings
    -
    1239 if (configureAllConfigSettingsAsyncWriteFullConfig
    -
    1240 || currentConfig.lightControl != configureAllConfigSettingsAsyncConfigDataToWrite.lightControl
    -
    1241 || currentConfig.lightThreshold != configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold
    -
    1242 || currentConfig.outputControl != configureAllConfigSettingsAsyncConfigDataToWrite.outputControl) {
    - - -
    1245 configureAllConfigSettingsAsyncConfigDataToWrite.lightControl,
    -
    1246 configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold,
    -
    1247 configureAllConfigSettingsAsyncConfigDataToWrite.outputControl)) {
    - -
    1249 DEBUG_PRINTLN("Error: Building aux control command failed.");
    -
    1250 return false;
    -
    1251 };
    -
    1252 if (!addCommandToSequence(cmd)) {
    +
    1234 if (!addCommandToSequence(cmd)) {
    + +
    1236 DEBUG_PRINTLN("Error: Adding distance resolution command to sequence failed.");
    +
    1237 return false;
    +
    1238 };
    + +
    1240 DEBUG_PRINTLN("Distance resolution command added to sequence.");
    +
    1241 };
    +
    1242
    +
    1243 //4. Aux control settings
    +
    1244 if (configureAllConfigSettingsAsyncWriteFullConfig
    +
    1245 || currentConfig.lightControl != configureAllConfigSettingsAsyncConfigDataToWrite.lightControl
    +
    1246 || currentConfig.lightThreshold != configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold
    +
    1247 || currentConfig.outputControl != configureAllConfigSettingsAsyncConfigDataToWrite.outputControl) {
    + + +
    1250 configureAllConfigSettingsAsyncConfigDataToWrite.lightControl,
    +
    1251 configureAllConfigSettingsAsyncConfigDataToWrite.lightThreshold,
    +
    1252 configureAllConfigSettingsAsyncConfigDataToWrite.outputControl)) {
    -
    1254 DEBUG_PRINTLN("Error: Adding aux control command to sequence failed.");
    +
    1254 DEBUG_PRINTLN("Error: Building aux control command failed.");
    1255 return false;
    1256 };
    - -
    1258 DEBUG_PRINTLN("Aux control command added to sequence.");
    -
    1259 };
    -
    1260 return true;
    -
    1261};
    -
    1262
    -
    1263bool LD2410Async::configureAllConfigSettingsAsyncWriteConfig() {
    -
    1264
    -
    1265 if (!configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence()) {
    -
    1266 //Could not build command sequence
    -
    1267 return false;
    -
    1268 }
    +
    1257 if (!addCommandToSequence(cmd)) {
    + +
    1259 DEBUG_PRINTLN("Error: Adding aux control command to sequence failed.");
    +
    1260 return false;
    +
    1261 };
    + +
    1263 DEBUG_PRINTLN("Aux control command added to sequence.");
    +
    1264 };
    +
    1265 return true;
    +
    1266};
    +
    1267
    +
    1268bool LD2410Async::configureAllConfigSettingsAsyncWriteConfig() {
    1269
    -
    1270 if (commandSequenceBufferCount == 0) {
    - -
    1272 DEBUG_PRINTLN("No config changes detected, not need to write anything");
    +
    1270 if (!configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence()) {
    +
    1271 //Could not build command sequence
    +
    1272 return false;
    1273 }
    1274
    -
    1275 if (!executeCommandSequenceAsync(configureAllConfigSettingsAsyncWriteConfigCallback, 0)) {
    - -
    1277 DEBUG_PRINTLN("Error: Starting command sequence to write config data failed.");
    -
    1278
    -
    1279 return false;
    -
    1280 }
    -
    1281 return true;
    -
    1282
    -
    1283};
    -
    1284
    -
    1285void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - - -
    1288 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
    -
    1289 DEBUG_PRINTLN(result);
    -
    1290 sender->configureAllConfigSettingsAsyncFinalize(result);
    -
    1291 return;
    -
    1292 }
    -
    1293 //Got current config data, now write the changed values
    - -
    1295 DEBUG_PRINTLN("Current config data received.");
    -
    1296
    -
    1297 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
    - -
    1299 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
    -
    1300 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    -
    1301 }
    -
    1302}
    -
    1303
    -
    1304bool LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigData() {
    -
    1305 if (resetCommandSequence()
    - -
    1307 && addCommandToSequence(LD2410Defs::requestParamsCommandData)
    -
    1308 && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData))
    -
    1309 {
    -
    1310 if (executeCommandSequenceAsync(configureAllConfigSettingsAsyncRequestAllConfigDataCallback, 0)) {
    - -
    1312 DEBUG_PRINTLN("Requesting current config data");
    -
    1313 return true;
    -
    1314 }
    -
    1315 else {
    +
    1275 if (commandSequenceBufferCount == 0) {
    + +
    1277 DEBUG_PRINTLN("No config changes detected, not need to write anything");
    +
    1278 }
    +
    1279
    +
    1280 if (!executeCommandSequenceAsync(configureAllConfigSettingsAsyncWriteConfigCallback, 0)) {
    + +
    1282 DEBUG_PRINTLN("Error: Starting command sequence to write config data failed.");
    +
    1283
    +
    1284 return false;
    +
    1285 }
    +
    1286 return true;
    +
    1287
    +
    1288};
    +
    1289
    +
    1290void LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + + +
    1293 DEBUG_PRINTLN("Error: Requesting current config data failed. Result: ");
    +
    1294 DEBUG_PRINTLN(result);
    +
    1295 sender->configureAllConfigSettingsAsyncFinalize(result);
    +
    1296 return;
    +
    1297 }
    +
    1298 //Got current config data, now write the changed values
    + +
    1300 DEBUG_PRINTLN("Current config data received.");
    +
    1301
    +
    1302 if (!sender->configureAllConfigSettingsAsyncWriteConfig()) {
    + +
    1304 DEBUG_PRINTLN("Error: Starting saving config data changes failed.");
    +
    1305 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1306 }
    +
    1307}
    +
    1308
    +
    1309bool LD2410Async::configureAllConfigSettingsAsyncRequestAllConfigData() {
    +
    1310 if (resetCommandSequence()
    + +
    1312 && addCommandToSequence(LD2410Defs::requestParamsCommandData)
    +
    1313 && addCommandToSequence(LD2410Defs::requestAuxControlSettingsCommandData))
    +
    1314 {
    +
    1315 if (executeCommandSequenceAsync(configureAllConfigSettingsAsyncRequestAllConfigDataCallback, 0)) {
    -
    1317 DEBUG_PRINTLN("Error: Stating command sequence to request current config data failed.");
    -
    1318 }
    -
    1319 }
    -
    1320 return false;
    -
    1321}
    -
    1322
    -
    1323void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1324 if (result != AsyncCommandResult::SUCCESS) {
    -
    1325
    - -
    1327 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
    -
    1328 DEBUG_PRINTLN(result);
    -
    1329 sender->configureAllConfigSettingsAsyncFinalize(result);
    -
    1330 return;
    -
    1331 };
    -
    1332
    -
    1333 //Got ack of enable config mode command
    - -
    1335 DEBUG_PRINTLN("Config mode enabled.");
    -
    1336
    -
    1337 bool ret = false;
    -
    1338 if (sender->configureAllConfigSettingsAsyncWriteFullConfig) {
    -
    1339 //If we save all changes anyway, no need to request current config data first
    -
    1340 ret = sender->configureAllConfigSettingsAsyncWriteConfig();
    +
    1317 DEBUG_PRINTLN("Requesting current config data");
    +
    1318 return true;
    +
    1319 }
    +
    1320 else {
    + +
    1322 DEBUG_PRINTLN("Error: Stating command sequence to request current config data failed.");
    +
    1323 }
    +
    1324 }
    +
    1325 return false;
    +
    1326}
    +
    1327
    +
    1328void LD2410Async::configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1329 if (result != AsyncCommandResult::SUCCESS) {
    +
    1330
    + +
    1332 DEBUG_PRINTLN("Error: Enabling config mode failed. Result: ");
    +
    1333 DEBUG_PRINTLN(result);
    +
    1334 sender->configureAllConfigSettingsAsyncFinalize(result);
    +
    1335 return;
    +
    1336 };
    +
    1337
    +
    1338 //Got ack of enable config mode command
    + +
    1340 DEBUG_PRINTLN("Config mode enabled.");
    1341
    -
    1342 }
    -
    1343 else {
    -
    1344 ret = sender->configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1345 }
    -
    1346 if (!ret) {
    - -
    1348 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
    -
    1349 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1342 bool ret = false;
    +
    1343 if (sender->configureAllConfigSettingsAsyncWriteFullConfig) {
    +
    1344 //If we save all changes anyway, no need to request current config data first
    +
    1345 ret = sender->configureAllConfigSettingsAsyncWriteConfig();
    +
    1346
    +
    1347 }
    +
    1348 else {
    +
    1349 ret = sender->configureAllConfigSettingsAsyncRequestAllConfigData();
    1350 }
    -
    1351
    -
    1352
    -
    1353}
    -
    1354
    -
    -
    1355bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    -
    1356{
    +
    1351 if (!ret) {
    + +
    1353 DEBUG_PRINTLN("Error: Starting config data write or request of current config data failed.");
    +
    1354 sender->configureAllConfigSettingsAsyncFinalize(AsyncCommandResult::FAILED);
    +
    1355 }
    +
    1356
    1357
    - -
    1359 DEBUG_PRINTLN("Writing config data to the LD2410");
    -
    1360
    -
    1361 if (asyncIsBusy()) return false;
    +
    1358}
    +
    1359
    +
    +
    1360bool LD2410Async::configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData)
    +
    1361{
    1362
    -
    1363
    -
    1364 if (!configToWrite.isValid()) {
    - -
    1366 DEBUG_PRINTLN("configToWrite is invalid.");
    -
    1367 return false;
    -
    1368 }
    -
    1369
    -
    1370 configureAllConfigSettingsAsyncConfigActive = true;
    -
    1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
    -
    1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    -
    1373 configureAllConfigSettingsAsyncConfigCallback = callback;
    -
    1374 configureAllConfigSettingsAsyncConfigUserData = userData;
    -
    1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    -
    1376
    -
    1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    -
    1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    -
    1379 }
    -
    1380 else {
    -
    1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
    -
    1382 //If we save all changes anyway, no need to request current config data first
    -
    1383 return configureAllConfigSettingsAsyncWriteConfig();
    -
    1384 }
    -
    1385 else {
    -
    1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1387 }
    -
    1388 }
    -
    1389
    -
    1390}
    + +
    1364 DEBUG_PRINTLN("Writing config data to the LD2410");
    +
    1365
    +
    1366 if (asyncIsBusy()) return false;
    +
    1367
    +
    1368
    +
    1369 if (!configToWrite.isValid()) {
    + +
    1371 DEBUG_PRINTLN("configToWrite is invalid.");
    +
    1372 return false;
    +
    1373 }
    +
    1374
    +
    1375 configureAllConfigSettingsAsyncConfigActive = true;
    +
    1376 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
    +
    1377 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
    +
    1378 configureAllConfigSettingsAsyncConfigCallback = callback;
    +
    1379 configureAllConfigSettingsAsyncConfigUserData = userData;
    +
    1380 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
    +
    1381
    +
    1382 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
    +
    1383 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
    +
    1384 }
    +
    1385 else {
    +
    1386 if (configureAllConfigSettingsAsyncWriteFullConfig) {
    +
    1387 //If we save all changes anyway, no need to request current config data first
    +
    1388 return configureAllConfigSettingsAsyncWriteConfig();
    +
    1389 }
    +
    1390 else {
    +
    1391 return configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1392 }
    +
    1393 }
    +
    1394
    +
    1395}
    -
    1391
    -
    1392
    -
    1393/*--------------------------------------------------------------------
    -
    1394- Reboot command
    -
    1395---------------------------------------------------------------------*/
    -
    1396//The reboot command is special, since it needs to be sent in config mode,
    -
    1397//but doesnt have to disable config mode, since the sensor goes into normal
    -
    1398//detection mode after the reboot anyway.
    -
    1399void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    1401 sender->configModeEnabled = false;
    -
    1402 sender->engineeringModeEnabled = false;
    -
    1403
    - -
    1405 DEBUG_PRINTLN("Reboot initiated");
    -
    1406 }
    -
    1407 else {
    - -
    1409 DEBUG_PRINT("Error! Could not initiate reboot. Result: ");
    -
    1410 DEBUG_PRINTLN((int)result);
    +
    1396
    +
    1397
    +
    1398/*--------------------------------------------------------------------
    +
    1399- Reboot command
    +
    1400---------------------------------------------------------------------*/
    +
    1401//The reboot command is special, since it needs to be sent in config mode,
    +
    1402//but doesnt have to disable config mode, since the sensor goes into normal
    +
    1403//detection mode after the reboot anyway.
    +
    1404void LD2410Async::rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    1406 sender->configModeEnabled = false;
    +
    1407 sender->engineeringModeEnabled = false;
    +
    1408
    + +
    1410 DEBUG_PRINTLN("Reboot initiated");
    1411 }
    -
    1412 sender->executeCommandSequenceAsyncExecuteCallback(result);
    -
    1413
    -
    1414}
    -
    1415
    -
    1416void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    - -
    1418 //Got ack of enable config mode command
    - -
    1420 DEBUG_PRINTLN("Config mode enabled before reboot");
    -
    1421 sender->sendCommandAsync(LD2410Defs::rebootCommandData, rebootRebootCallback, 0);
    -
    1422 }
    -
    1423 else {
    -
    1424 //Config mode command timeout or canceled
    -
    1425 //Just execute the callback
    - -
    1427 DEBUG_PRINTLN("Error! Could not enabled config mode before reboot");
    -
    1428 sender->executeCommandSequenceAsyncExecuteCallback(result);
    -
    1429 }
    -
    1430}
    -
    1431
    -
    1432
    -
    -
    1433bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    -
    1434
    -
    1435
    - -
    1437 DEBUG_PRINTLN("Reboot");
    -
    1438
    -
    1439 if (asyncIsBusy()) return false;
    +
    1412 else {
    + +
    1414 DEBUG_PRINT("Error! Could not initiate reboot. Result: ");
    +
    1415 DEBUG_PRINTLN((int)result);
    +
    1416 }
    +
    1417 sender->executeCommandSequenceAsyncExecuteCallback(result);
    +
    1418
    +
    1419}
    +
    1420
    +
    1421void LD2410Async::rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    + +
    1423 //Got ack of enable config mode command
    + +
    1425 DEBUG_PRINTLN("Config mode enabled before reboot");
    +
    1426 sender->sendCommandAsync(LD2410Defs::rebootCommandData, rebootRebootCallback, 0);
    +
    1427 }
    +
    1428 else {
    +
    1429 //Config mode command timeout or canceled
    +
    1430 //Just execute the callback
    + +
    1432 DEBUG_PRINTLN("Error! Could not enabled config mode before reboot");
    +
    1433 sender->executeCommandSequenceAsyncExecuteCallback(result);
    +
    1434 }
    +
    1435}
    +
    1436
    +
    1437
    +
    +
    1438bool LD2410Async::rebootAsync(AsyncCommandCallback callback, byte userData) {
    +
    1439
    1440
    -
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    -
    1442}
    -
    + +
    1442 DEBUG_PRINTLN("Reboot");
    1443
    -
    1444/**********************************************************************************
    -
    1445* Data access
    -
    1446***********************************************************************************/
    -
    - -
    1448 return detectionData;
    -
    1449}
    +
    1444 if (asyncIsBusy()) return false;
    +
    1445
    +
    1446 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    +
    1447}
    -
    1450
    -
    - -
    1452 return configData;
    -
    1453}
    +
    1448
    +
    1449/**********************************************************************************
    +
    1450* Data access
    +
    1451***********************************************************************************/
    + -
    1454
    -
    1455/**********************************************************************************
    -
    1456* Inactivity handling
    -
    1457***********************************************************************************/
    -
    1458void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1459 sender->configModeEnabled = false;
    -
    1460 sender->engineeringModeEnabled = false;
    -
    1461
    -
    1462#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1463 if (result == AsyncCommandResult::SUCCESS) {
    - -
    1465 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
    -
    1466 }
    -
    1467 else {
    - -
    1469 DEBUG_PRINT("Error!! Could not initiate LD2410 reboot. Result: ");
    -
    1470 DEBUG_PRINTLN((int)result);
    +
    1455
    + +
    1459
    +
    1460/**********************************************************************************
    +
    1461* Inactivity handling
    +
    1462***********************************************************************************/
    +
    1463void LD2410Async::handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1464 sender->configModeEnabled = false;
    +
    1465 sender->engineeringModeEnabled = false;
    +
    1466
    +
    1467#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    +
    1468 if (result == AsyncCommandResult::SUCCESS) {
    + +
    1470 DEBUG_PRINTLN("LD2410 reboot due to inactivity initiated");
    1471 }
    -
    1472
    -
    1473#endif
    -
    1474
    -
    1475}
    -
    1476
    -
    1477void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    -
    1478
    +
    1472 else {
    + +
    1474 DEBUG_PRINT("Error!! Could not initiate LD2410 reboot. Result: ");
    +
    1475 DEBUG_PRINTLN((int)result);
    +
    1476 }
    +
    1477
    +
    1478#endif
    1479
    -
    1480#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    -
    1481 if (result == AsyncCommandResult::SUCCESS) {
    - -
    1483 DEBUG_PRINTLN("Config mode disabled due to inactivity");
    -
    1484 }
    -
    1485 else {
    - -
    1487 DEBUG_PRINT("Error!! Disabling config mode after inactivity failed. Result: ");
    -
    1488 DEBUG_PRINTLN((int)result);
    +
    1480}
    +
    1481
    +
    1482void LD2410Async::handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData) {
    +
    1483
    +
    1484
    +
    1485#if (LD2410ASYNC_DEBUG_LEVEL > 0)
    +
    1486 if (result == AsyncCommandResult::SUCCESS) {
    + +
    1488 DEBUG_PRINTLN("Config mode disabled due to inactivity");
    1489 }
    -
    1490
    -
    1491#endif
    -
    1492
    -
    1493}
    -
    1494
    +
    1490 else {
    + +
    1492 DEBUG_PRINT("Error!! Disabling config mode after inactivity failed. Result: ");
    +
    1493 DEBUG_PRINTLN((int)result);
    +
    1494 }
    1495
    -
    1496void LD2410Async::handleInactivity() {
    +
    1496#endif
    1497
    -
    1498 if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs > 0) {
    -
    1499 unsigned long currentTime = millis();
    -
    1500 unsigned long inactiveDurationMs = currentTime - lastActivityMs;
    -
    1501 if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) {
    -
    1502 if (!handleInactivityExitConfigModeDone) {
    -
    1503 handleInactivityExitConfigModeDone = true;
    -
    1504 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    -
    1505 }
    -
    1506 else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) {
    -
    1507 rebootAsync(handleInactivityRebootCallback, 0);
    -
    1508 lastActivityMs = currentTime;
    -
    1509 }
    -
    1510 }
    -
    1511 else {
    -
    1512 handleInactivityExitConfigModeDone = false;
    -
    1513 }
    -
    1514 }
    -
    1515}
    -
    1516
    -
    1517void LD2410Async::heartbeat() {
    -
    1518 lastActivityMs = millis();
    -
    1519}
    -
    1520
    -
    - -
    1522 inactivityHandlingEnabled = enable;
    -
    1523}
    +
    1498}
    +
    1499
    +
    1500
    +
    1501void LD2410Async::handleInactivity() {
    +
    1502
    +
    1503 if (inactivityHandlingEnabled && inactivityHandlingTimeoutMs > 0) {
    +
    1504 unsigned long currentTime = millis();
    +
    1505 unsigned long inactiveDurationMs = currentTime - lastActivityMs;
    +
    1506 if (lastActivityMs != 0 && inactiveDurationMs > inactivityHandlingTimeoutMs) {
    +
    1507 if (!handleInactivityExitConfigModeDone) {
    +
    1508 handleInactivityExitConfigModeDone = true;
    +
    1509 disableConfigModeAsync(handleInactivityDisableConfigmodeCallback, 0);
    +
    1510 }
    +
    1511 else if (inactiveDurationMs > inactivityHandlingTimeoutMs + 5000) {
    +
    1512 rebootAsync(handleInactivityRebootCallback, 0);
    +
    1513 lastActivityMs = currentTime;
    +
    1514 }
    +
    1515 }
    +
    1516 else {
    +
    1517 handleInactivityExitConfigModeDone = false;
    +
    1518 }
    +
    1519 }
    +
    1520}
    +
    1521
    +
    1522void LD2410Async::heartbeat() {
    +
    1523 lastActivityMs = millis();
    +
    1524}
    +
    1525
    +
    + +
    1527 inactivityHandlingEnabled = enable;
    +
    1528}
    -
    1524
    -
    1525/**********************************************************************************
    -
    1526* Process received data
    -
    1527***********************************************************************************/
    -
    1528void LD2410Async::processReceivedData()
    -
    1529{
    -
    1530 FrameReadResponse type = readFrame();
    -
    1531
    -
    1532 switch (type) {
    -
    1533 case ACK:
    -
    1534 processAck();
    -
    1535 break;
    -
    1536 case DATA:
    -
    1537 processData();
    -
    1538 break;
    -
    1539 default:
    +
    1529
    +
    1530/**********************************************************************************
    +
    1531* Process received data
    +
    1532***********************************************************************************/
    +
    1533void LD2410Async::processReceivedData()
    +
    1534{
    +
    1535 FrameReadResponse type = readFrame();
    +
    1536
    +
    1537 switch (type) {
    +
    1538 case ACK:
    +
    1539 processAck();
    1540 break;
    -
    1541 }
    -
    1542
    -
    1543
    -
    1544}
    -
    1545
    -
    1546/**********************************************************************************
    -
    1547* Task methods
    -
    1548***********************************************************************************/
    -
    1549
    -
    1550void LD2410Async::taskLoop() {
    - -
    1552 DEBUG_PRINTLN("Task loop starts");
    -
    1553
    -
    1554 while (!taskStop) {
    -
    1555 processReceivedData();
    -
    1556 handleAsyncCommandCallbackTimeout();
    -
    1557 handleInactivity();
    -
    1558 vTaskDelay(10 / portTICK_PERIOD_MS);
    -
    1559
    -
    1560 }
    -
    1561
    - -
    1563 DEBUG_PRINT(taskStop);
    -
    1564 DEBUG_PRINTLN("Task loop exits");
    -
    1565
    -
    1566 // Signal that the task is done
    -
    1567 taskHandle = NULL;
    -
    1568 vTaskDelete(NULL); // self-delete
    -
    1569}
    +
    1541 case DATA:
    +
    1542 processData();
    +
    1543 break;
    +
    1544 default:
    +
    1545 break;
    +
    1546 }
    +
    1547
    +
    1548
    +
    1549}
    +
    1550
    +
    1551/**********************************************************************************
    +
    1552* Task methods
    +
    1553***********************************************************************************/
    +
    1554
    +
    1555void LD2410Async::taskLoop() {
    + +
    1557 DEBUG_PRINTLN("Task loop starts");
    +
    1558
    +
    1559 while (!taskStop) {
    +
    1560 processReceivedData();
    +
    1561 handleAsyncCommandCallbackTimeout();
    +
    1562 handleInactivity();
    +
    1563 vTaskDelay(10 / portTICK_PERIOD_MS);
    +
    1564
    +
    1565 }
    +
    1566
    + +
    1568 DEBUG_PRINT(taskStop);
    +
    1569 DEBUG_PRINTLN("Task loop exits");
    1570
    -
    1571
    -
    1572
    -
    1573/**********************************************************************************
    -
    1574* Begin, end
    -
    1575***********************************************************************************/
    +
    1571 // Signal that the task is done
    +
    1572 taskHandle = NULL;
    +
    1573 vTaskDelete(NULL); // self-delete
    +
    1574}
    +
    1575
    1576
    -
    - -
    1578 if (taskHandle == NULL) {
    - -
    1580 DEBUG_PRINTLN("Starting data processing task");
    -
    1581 taskStop = false;
    -
    1582
    -
    1583 BaseType_t result = xTaskCreate(
    -
    1584 [](void* param) {
    -
    1585 if (param) {
    -
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    -
    1587 }
    -
    1588 vTaskDelete(NULL);
    -
    1589 },
    -
    1590 "LD2410Task",
    -
    1591 4096,
    -
    1592 this,
    -
    1593 1,
    -
    1594 &taskHandle
    -
    1595 );
    -
    1596
    -
    1597 if (result == pdPASS) {
    -
    1598 return true;
    -
    1599 }
    -
    1600 else {
    - -
    1602 DEBUG_PRINTLN("Task creation failed");
    -
    1603 taskHandle = NULL;
    -
    1604 return false;
    -
    1605 }
    -
    1606 }
    - -
    1608 DEBUG_PRINTLN("Data processing task already active");
    -
    1609 return false;
    -
    1610}
    -
    -
    1611
    -
    - -
    1613 if (taskHandle != NULL) {
    - -
    1615 DEBUG_PRINTLN("Stopping data processing task");
    -
    1616 taskStop = true;
    -
    1617
    -
    1618 // Wait up to 200ms for graceful exit
    -
    1619 for (int i = 0; i < 20; i++) {
    -
    1620 if (taskHandle == NULL) {
    - -
    1622 DEBUG_PRINTLN("Task exited gracefully");
    -
    1623 return true;
    -
    1624 }
    -
    1625 vTaskDelay(1 / portTICK_PERIOD_MS);
    -
    1626 }
    -
    1627
    -
    1628 // If still not NULL, force delete
    - -
    1630 DEBUG_PRINTLN("Forcing task stop");
    -
    1631 vTaskDelete(taskHandle);
    -
    1632 taskHandle = NULL;
    -
    1633 return true;
    -
    1634 }
    -
    1635
    -
    1636 DEBUG_PRINTLN("Data processing task is not active");
    -
    1637 return false;
    -
    1638}
    +
    1577
    +
    1578/**********************************************************************************
    +
    1579* Begin, end
    +
    1580***********************************************************************************/
    +
    1581
    +
    + +
    1583 if (taskHandle == NULL) {
    + +
    1585 DEBUG_PRINTLN("Starting data processing task");
    +
    1586 taskStop = false;
    +
    1587
    +
    1588 BaseType_t result = xTaskCreate(
    +
    1589 [](void* param) {
    +
    1590 if (param) {
    +
    1591 static_cast<LD2410Async*>(param)->taskLoop();
    +
    1592 }
    +
    1593 vTaskDelete(NULL);
    +
    1594 },
    +
    1595 "LD2410Task",
    +
    1596 4096,
    +
    1597 this,
    +
    1598 1,
    +
    1599 &taskHandle
    +
    1600 );
    +
    1601
    +
    1602 if (result == pdPASS) {
    +
    1603 return true;
    +
    1604 }
    +
    1605 else {
    + +
    1607 DEBUG_PRINTLN("Task creation failed");
    +
    1608 taskHandle = NULL;
    +
    1609 return false;
    +
    1610 }
    +
    1611 }
    + +
    1613 DEBUG_PRINTLN("Data processing task already active");
    +
    1614 return false;
    +
    1615}
    -
    1639
    +
    1616
    +
    + +
    1618 if (taskHandle != NULL) {
    + +
    1620 DEBUG_PRINTLN("Stopping data processing task");
    +
    1621 taskStop = true;
    +
    1622
    +
    1623 // Wait up to 200ms for graceful exit
    +
    1624 for (int i = 0; i < 20; i++) {
    +
    1625 if (taskHandle == NULL) {
    + +
    1627 DEBUG_PRINTLN("Task exited gracefully");
    +
    1628 return true;
    +
    1629 }
    +
    1630 vTaskDelay(1 / portTICK_PERIOD_MS);
    +
    1631 }
    +
    1632
    +
    1633 // If still not NULL, force delete
    + +
    1635 DEBUG_PRINTLN("Forcing task stop");
    +
    1636 vTaskDelete(taskHandle);
    +
    1637 taskHandle = NULL;
    +
    1638 return true;
    +
    1639 }
    1640
    -
    1641
    -
    1642
    -
    1643/**********************************************************************************
    -
    1644* Constructor
    -
    1645***********************************************************************************/
    -
    - -
    1647{
    -
    1648 sensor = &serial;
    -
    1649}
    +
    1641 DEBUG_PRINTLN("Data processing task is not active");
    +
    1642 return false;
    +
    1643}
    +
    +
    1644
    +
    1645
    +
    1646
    +
    1647
    +
    1648/**********************************************************************************
    +
    1649* Constructor
    +
    1650***********************************************************************************/
    +
    + +
    1652{
    +
    1653 sensor = &serial;
    +
    1654}
    String byte2hex(byte b, bool addZero=true)
    bool bufferEndsWith(const byte *buffer, int iMax, const byte *pattern)
    Checks whther the last 4 bytes of a buffer match the value supplied in pattern.
    @@ -1848,61 +1853,57 @@ -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    LD2410Types::StaticData staticData
    Static data of the radar.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:97
    @ TIMEOUT
    No ACK received within the expected time window.
    @ FAILED
    Command failed (sensor responded with negative ACK).
    @ SUCCESS
    Command completed successfully and ACK was received.
    @ CANCELED
    Command was canceled by the user before completion.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    String firmware
    Firmware version string of the radar.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    bool end()
    Stops the background task started by begin().
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    @@ -1956,43 +1957,48 @@
    constexpr byte engineeringModeEnableComand
    Definition LD2410Defs.h:58
    constexpr byte requestDistanceResolutionCommand
    Definition LD2410Defs.h:30
    constexpr byte requestParamsCommandData[4]
    Definition LD2410Defs.h:56
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    @ STATIONARY_TARGET
    A stationary target has been detected.
    @ MOVING_TARGET
    A moving target has been detected.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    Stores the sensor’s configuration parameters.
    -
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    -
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    -
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    -
    OutputControl outputControl
    Logic configuration of the OUT pin.
    -
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    -
    bool isValid() const
    Validates the configuration data for correctness.
    -
    LightControl lightControl
    Light-dependent auxiliary control mode.
    -
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    -
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    -
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    -
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    -
    Holds the most recent detection data reported by the radar.
    -
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    -
    bool engineeringMode
    True if engineering mode data was received.
    -
    bool stationaryPresenceDetected
    True if a stationary target is detected.
    -
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    -
    byte lightLevel
    Reported ambient light level (0–255).
    -
    unsigned int detectedDistance
    General detection distance (cm).
    -
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    -
    TargetState targetState
    Current detection state.
    -
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    -
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    -
    bool presenceDetected
    True if any target is detected.
    -
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    -
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    -
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    -
    bool movingPresenceDetected
    True if a moving target is detected.
    -
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    -
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:93
    +
    Stores the sensor’s configuration parameters.
    +
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    +
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    +
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    +
    OutputControl outputControl
    Logic configuration of the OUT pin.
    +
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    +
    bool isValid() const
    Validates the configuration data for correctness.
    +
    LightControl lightControl
    Light-dependent auxiliary control mode.
    +
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    +
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    +
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    +
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    +
    Holds the most recent detection data reported by the radar.
    +
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    +
    bool engineeringMode
    True if engineering mode data was received.
    +
    bool stationaryPresenceDetected
    True if a stationary target is detected.
    +
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    +
    byte lightLevel
    Reported ambient light level (0–255).
    +
    unsigned int detectedDistance
    General detection distance (cm).
    +
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    +
    TargetState targetState
    Current detection state.
    +
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    +
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    +
    bool presenceDetected
    True if any target is detected.
    +
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    +
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    +
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    +
    bool movingPresenceDetected
    True if a moving target is detected.
    +
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    +
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    +
    char bluetoothMacText[18]
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    uint16_t protocolVersion
    Protocol version reported by the radar.
    +
    byte bluetoothMac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    char firmwareText[16]
    Firmware version string of the radar.
    +
    uint16_t bufferSize
    Buffer size reported by the radar protocol.
    diff --git a/docu/LD2410Async_8h_source.html b/docu/LD2410Async_8h_source.html index 88d6b01..0a6e7ca 100644 --- a/docu/LD2410Async_8h_source.html +++ b/docu/LD2410Async_8h_source.html @@ -196,1731 +196,1554 @@
    93 *
    94 * Every async command reports back its outcome via the callback.
    95 *
    -
    96 * @ingroup LD2410Async_Types
    -
    97 */
    -
    -
    98 enum class AsyncCommandResult : byte {
    -
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    101 TIMEOUT, ///< No ACK received within the expected time window.
    -
    102 CANCELED ///< Command was canceled by the user before completion.
    -
    103 };
    +
    96 */
    +
    +
    97 enum class AsyncCommandResult : byte {
    +
    98 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    99 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    100 TIMEOUT, ///< No ACK received within the expected time window.
    +
    101 CANCELED ///< Command was canceled by the user before completion.
    +
    102 };
    +
    103
    104
    105
    -
    106
    -
    107
    -
    108 /**
    -
    109 * @brief Callback signature for asynchronous command completion.
    -
    110 *
    -
    111 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    112 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    -
    113 * @param userData User-specified value passed when registering the callback.
    -
    114 *
    -
    115 * @ingroup LD2410Async_Configuration
    -
    116 * @ingroup LD2410Async_Callbacks
    -
    117 */
    -
    118 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    -
    119
    -
    120 /**
    -
    121 * @brief Generic callback signature used for simple notifications.
    +
    106
    +
    107 /**
    +
    108 * @brief Callback signature for asynchronous command completion.
    +
    109 *
    +
    110 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    111 * @param result Outcome of the async operation (SUCCESS, FAILED, TIMEOUT, CANCELED).
    +
    112 * @param userData User-specified value passed when registering the callback.
    +
    113 *
    +
    114 */
    +
    115 typedef void (*AsyncCommandCallback)(LD2410Async* sender, AsyncCommandResult result, byte userData);
    +
    116
    +
    117 /**
    +
    118 * @brief Generic callback signature used for simple notifications.
    +
    119 *
    +
    120 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    121 * @param userData User-specified value passed when registering the callback.
    122 *
    -
    123 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    124 * @param userData User-specified value passed when registering the callback.
    -
    125 *
    -
    126 *
    -
    127 * @ingroup LD2410Async_Configuration
    -
    128 * @ingroup LD2410Async_Callbacks
    -
    129 */
    -
    130 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    -
    131
    -
    132 /**
    -
    133 * @brief Callback type for receiving detection data events.
    +
    123 *
    +
    124 */
    +
    125 typedef void (*GenericCallback)(LD2410Async* sender, byte userData);
    +
    126
    +
    127 /**
    +
    128 * @brief Callback type for receiving detection data events.
    +
    129 *
    +
    130 * This callback is invoked whenever new detection data is processed.
    +
    131 * It provides direct access to the LD2410Async instance, along with
    +
    132 * a quick flag for presence detection so that applications which only
    +
    133 * care about presence can avoid parsing the full DetectionData struct.
    134 *
    -
    135 * This callback is invoked whenever new detection data is processed.
    -
    136 * It provides direct access to the LD2410Async instance, along with
    -
    137 * a quick flag for presence detection so that applications which only
    -
    138 * care about presence can avoid parsing the full DetectionData struct.
    -
    139 *
    -
    140 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    -
    141 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
    -
    142 * @param userData User-defined value passed when registering the callback.
    -
    143 *
    -
    144 * @ingroup LD2410Async_Callbacks
    -
    145 * @ingroup LD2410Async_PresenceDetection
    -
    146 */
    -
    147 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    +
    135 * @param sender Pointer to the LD2410Async instance that triggered the callback.
    +
    136 * @param presenceDetected True if the radar currently detects presence (moving or stationary), false otherwise.
    +
    137 * @param userData User-defined value passed when registering the callback.
    +
    138 *
    +
    139 */
    +
    140 typedef void(*DetectionDataCallback)(LD2410Async* sender, bool presenceDetected, byte userData);
    +
    141
    +
    142
    +
    143
    +
    144
    +
    145
    +
    146public:
    +
    147
    148
    -
    149
    -
    150
    -
    151
    -
    152
    -
    153public:
    -
    154
    -
    155
    -
    156
    -
    157 /**
    -
    158 * @brief Latest detection results from the radar.
    -
    159 *
    -
    160 * Updated automatically whenever new data frames are received.
    -
    161 * Use registerDetectionDataReceivedCallback() to be notified
    -
    162 * whenever this struct changes.
    -
    163 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
    +
    149
    +
    150 /**
    +
    151 * @brief Latest detection results from the radar.
    +
    152 *
    +
    153 * @details Updated automatically whenever new data frames are received.
    +
    154 * Use registerDetectionDataReceivedCallback() to be notified
    +
    155 * whenever this struct changes.
    +
    156 * Use getDetectionData() or getDetectionDataRef() to access the current values, rather than accessing the struct directly.
    +
    157 *
    +
    158 *
    +
    159 */
    + +
    161
    +
    162 /**
    +
    163 * @brief Current configuration parameters of the radar.
    164 *
    -
    165 * @ingroup LD2410Async_PublicData
    -
    166 * @ingroup LD2410Async_PresenceDetection
    -
    167 *
    -
    168 */
    - -
    170
    -
    171 /**
    -
    172 * @brief Current configuration parameters of the radar.
    -
    173 *
    -
    174 * Filled when configuration query commands are issued
    -
    175 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
    -
    176 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
    -
    177 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
    -
    178 *
    -
    179 * Structure will contain only uninitilaized data if config data is not queried explicitly.
    -
    180 *
    -
    181 * @ingroup LD2410Async_PublicData
    -
    182 * @ingroup LD2410Async_Configuration
    -
    183 */
    - -
    185
    -
    186 /**
    -
    187 * @brief Protocol version reported by the radar.
    -
    188 *
    -
    189 * This value is set when entering config mode. It can be useful
    -
    190 * for compatibility checks between firmware and library.
    +
    165 * @details Filled when configuration query commands are issued
    +
    166 * (e.g. requestAllConfigSettingsAsync() or requestGateParametersAsync() ect).
    +
    167 * Use registerConfigUpdateReceivedCallback() to be notified when data in this struct changes.
    +
    168 * Use getConfigData() or getConfigDataRef() to access the current values, rather than accessing the struct directly.
    +
    169 *
    +
    170 * Structure will contain only uninitilaized data if config data is not queried explicitly.
    +
    171 *
    +
    172 */
    + +
    174
    +
    175 /**
    +
    176 * @brief Static data of the radar
    +
    177 *
    +
    178 * @details Filled when config mode is being enabled (protocol version and buffer size)
    +
    179 * annd when issuing query commands for the static data (@ref requestAllStaticDataAsync, @ref requestFirmwareAsync, @ref requestBluetoothMacAddressAsync)
    +
    180 */
    + +
    182
    +
    183
    +
    184
    +
    185 /**
    +
    186 * @brief True if the sensor is currently in config mode.
    +
    187 *
    +
    188 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
    +
    189 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
    +
    190 * otherwiese the radar will not send any detection data.
    191 *
    -
    192 * @ingroup LD2410Async_PublicData
    -
    193 * @ingroup LD2410Async_StaticData
    -
    194 */
    -
    195 unsigned long protocolVersion = 0;
    -
    196
    -
    197 /**
    -
    198 * @brief Buffer size reported by the radar protocol.
    -
    199 *
    -
    200 * Set when entering config mode. Typically not required by users
    -
    201 * unless debugging low-level protocol behavior.
    -
    202 *
    -
    203 * @ingroup LD2410Async_PublicData
    -
    204 * @ingroup LD2410Async_StaticData
    -
    205 */
    -
    206 unsigned long bufferSize = 0;
    -
    207
    -
    208 /**
    -
    209 * @brief True if the sensor is currently in config mode.
    -
    210 *
    -
    211 * Config mode must be enabled using enableConfigModeAsync() before sending configuration commands.
    -
    212 * After sending config commands, always disable the config mode using disableConfigModeAsync(),
    -
    213 * otherwiese the radar will not send any detection data.
    +
    192 */
    +
    193 bool configModeEnabled = false;
    +
    194
    +
    195
    +
    196 /**
    +
    197 * @brief True if the sensor is currently in engineering mode.
    +
    198 *
    +
    199 * In engineering mode, the radar sends detailed per-gate
    +
    200 * signal data in addition to basic detection data.
    +
    201 *
    +
    202 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
    +
    203 *
    +
    204 */
    + +
    206
    +
    207
    +
    208
    +
    209
    +
    210 /**
    +
    211 * @brief Current status of the auto-configuration routine.
    +
    212 *
    +
    213 * Updated by requestAutoConfigStatusAsync().
    214 *
    -
    215 * @ingroup LD2410Async_PublicData
    -
    216 */
    -
    217 bool configModeEnabled = false;
    +
    215 */
    + +
    217
    218
    -
    219
    -
    220 /**
    -
    221 * @brief True if the sensor is currently in engineering mode.
    -
    222 *
    -
    223 * In engineering mode, the radar sends detailed per-gate
    -
    224 * signal data in addition to basic detection data.
    -
    225 *
    -
    226 * Use enableEngineeringModeAsync() and disableEngineeringModeAsync() to control the engineering mode.
    +
    219
    +
    220
    +
    221 /**********************************************************************************
    +
    222 * Constrcutor
    +
    223 ***********************************************************************************/
    +
    224
    +
    225 /**
    +
    226 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
    227 *
    -
    228 * @ingroup LD2410Async_PublicData
    -
    229 */
    - -
    231
    -
    232 /**
    -
    233 * @brief Firmware version string of the radar.
    -
    234 *
    -
    235 * Populated by requestFirmwareAsync(). Format is usually
    -
    236 * "major.minor.build".
    +
    228 * The sensor communicates over a UART interface. Pass the corresponding
    +
    229 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
    +
    230 * implementation) that is connected to the LD2410 sensor.
    +
    231 *
    +
    232 * Example:
    +
    233 * @code
    +
    234 * HardwareSerial radarSerial(2);
    +
    235 * LD2410Async radar(radarSerial);
    +
    236 * @endcode
    237 *
    -
    238 * @ingroup LD2410Async_PublicData
    -
    239 * @ingroup LD2410Async_StaticData
    +
    238 * @param serial Reference to a Stream object used to exchange data with the sensor.
    +
    239 *
    240 */
    -
    241 String firmware = "";
    -
    242
    -
    243 /**
    -
    244 * @brief MAC address of the radar’s Bluetooth module (if available).
    -
    245 *
    -
    246 * Populated by requestBluetoothMacAddressAsync().
    -
    247 *
    -
    248 * @ingroup LD2410Async_PublicData
    -
    249 * @ingroup LD2410Async_StaticData
    -
    250 */
    -
    251 byte mac[6];
    -
    252
    -
    253 /**
    -
    254 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    255 *
    -
    256 * Populated by requestBluetoothMacAddressAsync().
    -
    257 *
    -
    258 * @ingroup LD2410Async_PublicData
    -
    259 * @ingroup LD2410Async_StaticData
    -
    260 */
    -
    261 String macString = "";
    -
    262
    -
    263
    -
    264 /**
    -
    265 * @brief Current status of the auto-configuration routine.
    -
    266 *
    -
    267 * Updated by requestAutoConfigStatusAsync().
    -
    268 *
    -
    269 * @ingroup LD2410Async_Configuration
    -
    270 * @ingroup LD2410Async_PublicData
    -
    271 */
    - -
    273
    +
    241 LD2410Async(Stream& serial);
    +
    242
    +
    243 /**********************************************************************************
    +
    244 * begin, end
    +
    245 ***********************************************************************************/
    +
    246 /**
    +
    247 * @brief Starts the background task that continuously reads data from the sensor.
    +
    248 *
    +
    249 * This method creates a FreeRTOS task which parses all incoming frames
    +
    250 * and dispatches registered callbacks. Without calling begin(), the
    +
    251 * sensor cannot deliver detection results asynchronously.
    +
    252 *
    +
    253 * @returns true if the task was successfully started, false if already running.
    +
    254 *
    +
    255 */
    +
    256 bool begin();
    +
    257
    +
    258 /**
    +
    259 * @brief Stops the background task started by begin().
    +
    260 *
    +
    261 * After calling end(), no more data will be processed until begin() is called again.
    +
    262 * This is useful to temporarily suspend radar processing without rebooting.
    +
    263 *
    +
    264 * @returns true if the task was stopped, false if it was not active.
    +
    265 *
    +
    266 */
    +
    267 bool end();
    +
    268
    +
    269
    +
    270
    +
    271 /**********************************************************************************
    +
    272 * Inactivity handling
    +
    273 ***********************************************************************************/
    274
    275
    -
    276
    -
    277 /**********************************************************************************
    -
    278 * Constrcutor
    -
    279 ***********************************************************************************/
    -
    280
    -
    281 /**
    -
    282 * @brief Constructs a new LD2410Async instance bound to a given serial stream.
    -
    283 *
    -
    284 * The sensor communicates over a UART interface. Pass the corresponding
    -
    285 * Stream object (e.g. HardwareSerial, SoftwareSerial, or another compatible
    -
    286 * implementation) that is connected to the LD2410 sensor.
    +
    276
    +
    277 /**
    +
    278 * @brief Enables or disables automatic inactivity handling of the sensor.
    +
    279 *
    +
    280 * When inactivity handling is enabled, the library continuously monitors the time
    +
    281 * since the last activity (received data or command ACK). If no activity is detected
    +
    282 * for a longer period (defined by activityTimeoutMs), the library will attempt to
    +
    283 * recover the sensor automatically:
    +
    284 * 1. It first tries to exit config mode (even if configModeEnabled is false).
    +
    285 * 2. If no activity is restored within 5 seconds after leaving config mode,
    +
    286 * the library reboots the sensor.
    287 *
    -
    288 * Example:
    -
    289 * @code
    -
    290 * HardwareSerial radarSerial(2);
    -
    291 * LD2410Async radar(radarSerial);
    -
    292 * @endcode
    -
    293 *
    -
    294 * @param serial Reference to a Stream object used to exchange data with the sensor.
    -
    295 *
    -
    296 * @ingroup LD2410Async_MainMethods
    -
    297 */
    -
    298 LD2410Async(Stream& serial);
    -
    299
    -
    300 /**********************************************************************************
    -
    301 * begin, end
    -
    302 ***********************************************************************************/
    -
    303 /**
    -
    304 * @brief Starts the background task that continuously reads data from the sensor.
    -
    305 *
    -
    306 * This method creates a FreeRTOS task which parses all incoming frames
    -
    307 * and dispatches registered callbacks. Without calling begin(), the
    -
    308 * sensor cannot deliver detection results asynchronously.
    -
    309 *
    -
    310 * @returns true if the task was successfully started, false if already running.
    -
    311 *
    -
    312 * @ingroup LD2410Async_MainMethods
    -
    313 */
    -
    314 bool begin();
    -
    315
    -
    316 /**
    -
    317 * @brief Stops the background task started by begin().
    -
    318 *
    -
    319 * After calling end(), no more data will be processed until begin() is called again.
    -
    320 * This is useful to temporarily suspend radar processing without rebooting.
    -
    321 *
    -
    322 * @returns true if the task was stopped, false if it was not active.
    -
    323 *
    -
    324 * @ingroup LD2410Async_MainMethods
    -
    325 */
    -
    326 bool end();
    -
    327
    -
    328
    -
    329
    -
    330 /**********************************************************************************
    -
    331 * Inactivity handling
    -
    332 ***********************************************************************************/
    -
    333
    -
    334
    -
    335
    -
    336 /**
    -
    337 * @brief Enables or disables automatic inactivity handling of the sensor.
    -
    338 *
    -
    339 * When inactivity handling is enabled, the library continuously monitors the time
    -
    340 * since the last activity (received data or command ACK). If no activity is detected
    -
    341 * for a longer period (defined by activityTimeoutMs), the library will attempt to
    -
    342 * recover the sensor automatically:
    -
    343 * 1. It first tries to exit config mode (even if configModeEnabled is false).
    -
    344 * 2. If no activity is restored within 5 seconds after leaving config mode,
    -
    345 * the library reboots the sensor.
    -
    346 *
    -
    347 * This helps recover the sensor from rare cases where it gets "stuck"
    -
    348 * in config mode or stops sending data.
    -
    349 *
    -
    350 * @param enable Pass true to enable inactivity handling, false to disable it.
    -
    351 *
    -
    352 * @ingroup LD2410Async_InactivityHandling
    -
    353 */
    -
    354 void setInactivityHandling(bool enable);
    -
    355
    -
    356 /**
    -
    357 * @brief Convenience method: enables inactivity handling.
    -
    358 *
    -
    359 * Equivalent to calling setInactivityHandling(true).
    -
    360 *
    -
    361 * @ingroup LD2410Async_InactivityHandling
    -
    362 */
    - -
    364
    -
    365 /**
    -
    366 * @brief Convenience method: disables inactivity handling.
    +
    288 * This helps recover the sensor from rare cases where it gets "stuck"
    +
    289 * in config mode or stops sending data.
    +
    290 *
    +
    291 * @param enable Pass true to enable inactivity handling, false to disable it.
    +
    292 *
    +
    293 */
    +
    294 void setInactivityHandling(bool enable);
    +
    295
    +
    296 /**
    +
    297 * @brief Convenience method: enables inactivity handling.
    +
    298 *
    +
    299 * Equivalent to calling setInactivityHandling(true).
    +
    300 *
    +
    301 */
    + +
    303
    +
    304 /**
    +
    305 * @brief Convenience method: disables inactivity handling.
    +
    306 *
    +
    307 * Equivalent to calling setInactivityHandling(false).
    +
    308 *
    +
    309 */
    + +
    311
    +
    312 /**
    +
    313 * @brief Returns whether inactivity handling is currently enabled.
    +
    314 *
    +
    315 * @returns true if inactivity handling is enabled, false otherwise.
    +
    316 *
    +
    317 */
    +
    318 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    +
    319
    +
    320 /**
    +
    321 * @brief Sets the timeout period for inactivity handling.
    +
    322 *
    +
    323 * If no data or command ACK is received within this period,
    +
    324 * the library will attempt to recover the sensor as described
    +
    325 * in setInactivityHandling().
    +
    326 *
    +
    327 * Default is 60000 ms (1 minute).
    +
    328 *
    +
    329 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    +
    330 *
    +
    331 */
    +
    332 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    +
    333
    +
    334 /**
    +
    335 * @brief Returns the current inactivity timeout period.
    +
    336 *
    +
    337 * @returns Timeout in milliseconds.
    +
    338 *
    +
    339 */
    +
    340 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    +
    341
    +
    342
    +
    343
    +
    344 /**********************************************************************************
    +
    345 * Callback registration methods
    +
    346 ***********************************************************************************/
    +
    347
    +
    348
    +
    349 /**
    +
    350 * @brief Registers a callback for new detection data.
    +
    351 *
    +
    352 * The callback is invoked whenever a valid data frame is received
    +
    353 * from the radar, after detectionData has been updated.
    +
    354 *
    +
    355 * @param callback Function pointer with signature
    +
    356 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    +
    357 * @param userData Optional value that will be passed to the callback.
    +
    358 *
    +
    359 */
    +
    360 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    +
    361
    +
    362 /**
    +
    363 * @brief Registers a callback for configuration changes.
    +
    364 *
    +
    365 * The callback is invoked whenever the sensor’s configuration
    +
    366 * has been successfully updated (e.g. after setting sensitivity).
    367 *
    -
    368 * Equivalent to calling setInactivityHandling(false).
    -
    369 *
    -
    370 * @ingroup LD2410Async_InactivityHandling
    -
    371 */
    - -
    373
    -
    374 /**
    -
    375 * @brief Returns whether inactivity handling is currently enabled.
    -
    376 *
    -
    377 * @returns true if inactivity handling is enabled, false otherwise.
    -
    378 *
    -
    379 * @ingroup LD2410Async_InactivityHandling
    -
    380 */
    -
    381 bool isInactivityHandlingEnabled() const { return inactivityHandlingEnabled; };
    -
    382
    -
    383 /**
    -
    384 * @brief Sets the timeout period for inactivity handling.
    -
    385 *
    -
    386 * If no data or command ACK is received within this period,
    -
    387 * the library will attempt to recover the sensor as described
    -
    388 * in setInactivityHandling().
    -
    389 *
    -
    390 * Default is 60000 ms (1 minute).
    -
    391 *
    -
    392 * @param timeoutMs Timeout in milliseconds (minimum 10000 ms recommended). 0 will diable inactivity checking and handling.
    -
    393 *
    -
    394 * @ingroup LD2410Async_InactivityHandling
    -
    395 */
    -
    396 void setInactivityTimeoutMs(unsigned long timeoutMs) { inactivityHandlingTimeoutMs = timeoutMs; };
    -
    397
    -
    398 /**
    -
    399 * @brief Returns the current inactivity timeout period.
    -
    400 *
    -
    401 * @returns Timeout in milliseconds.
    -
    402 *
    -
    403 * @ingroup LD2410Async_InactivityHandling
    -
    404 */
    -
    405 unsigned long getInactivityTimeoutMs() const { return inactivityHandlingTimeoutMs; };
    -
    406
    -
    407
    -
    408
    -
    409 /**********************************************************************************
    -
    410 * Callback registration methods
    -
    411 ***********************************************************************************/
    -
    412
    -
    413
    -
    414 /**
    -
    415 * @brief Registers a callback for new detection data.
    +
    368 * @param callback Function pointer with signature
    +
    369 * void methodName(LD2410Async* sender, byte userData).
    +
    370 * @param userData Optional value that will be passed to the callback.
    +
    371 *
    +
    372 */
    +
    373 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    +
    374
    +
    375 /**
    +
    376 * @brief Registers a callback for configuration data updates.
    +
    377 *
    +
    378 * The callback is invoked whenever new configuration information
    +
    379 * has been received from the sensor (e.g. after requestGateParametersAsync()).
    +
    380 *
    +
    381 * @param callback Function pointer with signature
    +
    382 * void methodName(LD2410Async* sender, byte userData).
    +
    383 * @param userData Optional value that will be passed to the callback.
    +
    384 *
    +
    385 */
    +
    386 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    +
    387
    +
    388
    +
    389
    +
    390 /**********************************************************************************
    +
    391 * Detection and config data access commands
    +
    392 ***********************************************************************************/
    +
    393 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
    +
    394
    +
    395 /**
    +
    396 * @brief Returns a clone of the latest detection data from the radar.
    +
    397 *
    +
    398 * The returned struct contains the most recently received frame,
    +
    399 * including target state, distances, signal strengths, and
    +
    400 * (if enabled) engineering mode per-gate data.
    +
    401 *
    +
    402 * Equivalent to directly accessing the public member detectionData,
    +
    403 * but provided for encapsulation and future-proofing.
    +
    404 *
    +
    405 * @note This function will not query the sensor for data. It just returns
    +
    406 * the data that has already been received from the sensor.
    +
    407 *
    +
    408 * ## Example: Access values from a clone
    +
    409 * @code
    +
    410 * DetectionData data = radar.getDetectionData(); // makes a copy
    +
    411 * if (data.targetState == TargetState::MOVING_TARGET) {
    +
    412 * Serial.print("Moving target at distance: ");
    +
    413 * Serial.println(data.movingTargetDistance);
    +
    414 * }
    +
    415 * @endcode
    416 *
    -
    417 * The callback is invoked whenever a valid data frame is received
    -
    418 * from the radar, after detectionData has been updated.
    -
    419 *
    -
    420 * @param callback Function pointer with signature
    -
    421 * void methodName(LD2410Async* sender, bool presenceDetected, byte userData).
    -
    422 * @param userData Optional value that will be passed to the callback.
    -
    423 *
    -
    424 * @ingroup LD2410Async_Callbacks
    -
    425 * @ingroup LD2410Async_PresenceDetection
    +
    417 * ## Do:
    +
    418 * - Use when you want a snapshot of the latest detection data.
    +
    419 * - Modify the returned struct freely without affecting the internal state.
    +
    420 *
    +
    421 * ## Don’t:
    +
    422 * - Expect this to fetch new data from the sensor (it only returns what was already received).
    +
    423 *
    +
    424 * @returns A copy of the current DetectionData.
    +
    425 *
    426 */
    -
    427 void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData = 0);
    -
    428
    -
    429 /**
    -
    430 * @brief Registers a callback for configuration changes.
    -
    431 *
    -
    432 * The callback is invoked whenever the sensor’s configuration
    -
    433 * has been successfully updated (e.g. after setting sensitivity).
    -
    434 *
    -
    435 * @param callback Function pointer with signature
    -
    436 * void methodName(LD2410Async* sender, byte userData).
    -
    437 * @param userData Optional value that will be passed to the callback.
    -
    438 *
    -
    439 * @ingroup LD2410Async_Callbacks
    -
    440 * @ingroup LD2410Async_Configuration
    -
    441 */
    -
    442 void registerConfigChangedCallback(GenericCallback callback, byte userData = 0);
    -
    443
    -
    444 /**
    -
    445 * @brief Registers a callback for configuration data updates.
    -
    446 *
    -
    447 * The callback is invoked whenever new configuration information
    -
    448 * has been received from the sensor (e.g. after requestGateParametersAsync()).
    + +
    428
    +
    429
    +
    430 /**
    +
    431 * @brief Access the current detection data without making a copy.
    +
    432 *
    +
    433 * This returns a const reference to the internal struct. It is efficient,
    +
    434 * but the data must not be modified directly. Use this if you only want
    +
    435 * to read values.
    +
    436 *
    +
    437 * @note Since this returns a reference to the internal data, the values
    +
    438 * may change as new frames arrive. Do not store the reference for
    +
    439 * long-term use.
    +
    440 * @note This function will not query the sensor for data. It just returns
    +
    441 * the data that has already been received from the sensor.
    +
    442 *
    +
    443 * ## Example: Efficient read access without cloning
    +
    444 * @code
    +
    445 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    +
    446 * Serial.print("Stationary signal: ");
    +
    447 * Serial.println(data.stationaryTargetSignal);
    +
    448 * @endcode
    449 *
    -
    450 * @param callback Function pointer with signature
    -
    451 * void methodName(LD2410Async* sender, byte userData).
    -
    452 * @param userData Optional value that will be passed to the callback.
    -
    453 *
    -
    454 * @ingroup LD2410Async_Callbacks
    -
    455 * @ingroup LD2410Async_Configuration
    -
    456 */
    -
    457 void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData = 0);
    -
    458
    -
    459
    -
    460
    -
    461 /**********************************************************************************
    -
    462 * Detection and config data access commands
    -
    463 ***********************************************************************************/
    -
    464 // It is recommended to use the data access commands instead of accessing the detectionData and the configData structs in the class directly.
    -
    465
    -
    466 /**
    -
    467 * @brief Returns a clone of the latest detection data from the radar.
    -
    468 *
    -
    469 * The returned struct contains the most recently received frame,
    -
    470 * including target state, distances, signal strengths, and
    -
    471 * (if enabled) engineering mode per-gate data.
    -
    472 *
    -
    473 * Equivalent to directly accessing the public member detectionData,
    -
    474 * but provided for encapsulation and future-proofing.
    -
    475 *
    -
    476 * @note This function will not query the sensor for data. It just returns
    -
    477 * the data that has already been received from the sensor.
    -
    478 *
    -
    479 * ## Example: Access values from a clone
    -
    480 * @code
    -
    481 * DetectionData data = radar.getDetectionData(); // makes a copy
    -
    482 * if (data.targetState == TargetState::MOVING_TARGET) {
    -
    483 * Serial.print("Moving target at distance: ");
    -
    484 * Serial.println(data.movingTargetDistance);
    -
    485 * }
    -
    486 * @endcode
    -
    487 *
    -
    488 * ## Do:
    -
    489 * - Use when you want a snapshot of the latest detection data.
    -
    490 * - Modify the returned struct freely without affecting the internal state.
    -
    491 *
    -
    492 * ## Don’t:
    -
    493 * - Expect this to fetch new data from the sensor (it only returns what was already received).
    -
    494 *
    -
    495 * @returns A copy of the current DetectionData.
    -
    496 *
    -
    497 * @ingroup LD2410Async_PresenceDetection
    -
    498 * @ingroup LD2410Async_PublicData
    -
    499 */
    - -
    501
    -
    502
    -
    503 /**
    -
    504 * @brief Access the current detection data without making a copy.
    -
    505 *
    -
    506 * This returns a const reference to the internal struct. It is efficient,
    -
    507 * but the data must not be modified directly. Use this if you only want
    -
    508 * to read values.
    -
    509 *
    -
    510 * @note Since this returns a reference to the internal data, the values
    -
    511 * may change as new frames arrive. Do not store the reference for
    -
    512 * long-term use.
    -
    513 * @note This function will not query the sensor for data. It just returns
    -
    514 * the data that has already been received from the sensor.
    +
    450 * ## Do:
    +
    451 * - Use when you only need to read values quickly and efficiently.
    +
    452 * - Use when printing or inspecting live data without keeping it.
    +
    453 *
    +
    454 * ## Don’t:
    +
    455 * - Try to modify the returned struct (it’s const).
    +
    456 * - Store the reference long-term (it may be updated at any time).
    +
    457 *
    +
    458 * @returns Const reference to the current DetectionData.
    +
    459 *
    +
    460 */
    + +
    462
    +
    463
    +
    464 /**
    +
    465 * @brief Returns a clone of the current configuration data of the radar.
    +
    466 *
    +
    467 * The returned struct contains the most recently requested
    +
    468 * or received configuration values, such as sensitivities,
    +
    469 * resolution, timeouts, and auxiliary settings.
    +
    470 *
    +
    471 * Equivalent to directly accessing the public member configData,
    +
    472 * but provided for encapsulation and future-proofing.
    +
    473 *
    +
    474 * @note This function will not query the sensor for data. It just returns
    +
    475 * the data that has already been received from the sensor.
    +
    476 *
    +
    477 * ## Example: Clone, modify, and write back
    +
    478 * @code
    +
    479 * // Clone current config
    +
    480 * ConfigData cfg = radar.getConfigData();
    +
    481 *
    +
    482 * // Modify locally
    +
    483 * cfg.noOneTimeout = 60; // change timeout
    +
    484 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    +
    485 *
    +
    486 * // Send modified config back to sensor
    +
    487 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    488 * AsyncCommandResult result,
    +
    489 * byte) {
    +
    490 * if (result == AsyncCommandResult::SUCCESS) {
    +
    491 * Serial.println("Config updated successfully!");
    +
    492 * }
    +
    493 * });
    +
    494 * @endcode
    +
    495 *
    +
    496 * ## Do:
    +
    497 * - Use when you want a clone of the current config to adjust and send back.
    +
    498 * - Safely modify the struct without risking internal state corruption.
    +
    499 *
    +
    500 * ## Don’t:
    +
    501 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    +
    502 *
    +
    503 * @returns A copy of the current ConfigData.
    +
    504 *
    +
    505 */
    + +
    507
    +
    508
    +
    509 /**
    +
    510 * @brief Access the current config data without making a copy.
    +
    511 *
    +
    512 * This returns a const reference to the internal struct. It is efficient,
    +
    513 * but the data must not be modified directly. Use this if you only want
    +
    514 * to read values.
    515 *
    -
    516 * ## Example: Efficient read access without cloning
    -
    517 * @code
    -
    518 * const DetectionData& data = radar.getDetectionDataRef(); // no copy
    -
    519 * Serial.print("Stationary signal: ");
    -
    520 * Serial.println(data.stationaryTargetSignal);
    -
    521 * @endcode
    -
    522 *
    -
    523 * ## Do:
    -
    524 * - Use when you only need to read values quickly and efficiently.
    -
    525 * - Use when printing or inspecting live data without keeping it.
    -
    526 *
    -
    527 * ## Don’t:
    -
    528 * - Try to modify the returned struct (it’s const).
    -
    529 * - Store the reference long-term (it may be updated at any time).
    -
    530 *
    -
    531 * @returns Const reference to the current DetectionData.
    -
    532 *
    -
    533 * @ingroup LD2410Async_PresenceDetection
    -
    534 * @ingroup LD2410Async_PublicData
    -
    535 */
    - -
    537
    -
    538
    -
    539 /**
    -
    540 * @brief Returns a clone of the current configuration data of the radar.
    -
    541 *
    -
    542 * The returned struct contains the most recently requested
    -
    543 * or received configuration values, such as sensitivities,
    -
    544 * resolution, timeouts, and auxiliary settings.
    -
    545 *
    -
    546 * Equivalent to directly accessing the public member configData,
    -
    547 * but provided for encapsulation and future-proofing.
    +
    516 * @note Since this returns a reference to the internal data, the values
    +
    517 * may change when new configuration is received. Do not store the
    +
    518 * reference for long-term use.
    +
    519 * @note This function will not query the sensor for data. It just returns
    +
    520 * the data that has already been received from the sensor.
    +
    521 *
    +
    522 * ## Example: Efficient read access without cloning
    +
    523 * @code
    +
    524 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    +
    525 * Serial.print("Resolution: ");
    +
    526 * Serial.println(static_cast<int>(cfg.distanceResolution));
    +
    527 * @endcode
    +
    528 *
    +
    529 * ## Do:
    +
    530 * - Use when you only want to inspect configuration quickly.
    +
    531 * - Use for efficient read-only access.
    +
    532 *
    +
    533 * ## Don’t:
    +
    534 * - Try to modify the returned struct (it’s const).
    +
    535 * - Keep the reference and assume it will remain valid forever.
    +
    536 *
    +
    537 * @returns Const reference to the current ConfigData.
    +
    538 *
    +
    539 */
    + +
    541
    +
    542
    +
    543 /**********************************************************************************
    +
    544 * Special async commands
    +
    545 ***********************************************************************************/
    +
    546 /**
    +
    547 * @brief Checks if an asynchronous command is currently pending.
    548 *
    -
    549 * @note This function will not query the sensor for data. It just returns
    -
    550 * the data that has already been received from the sensor.
    -
    551 *
    -
    552 * ## Example: Clone, modify, and write back
    -
    553 * @code
    -
    554 * // Clone current config
    -
    555 * ConfigData cfg = radar.getConfigData();
    -
    556 *
    -
    557 * // Modify locally
    -
    558 * cfg.noOneTimeout = 60; // change timeout
    -
    559 * cfg.distanceGateMotionSensitivity[3] = 80; // adjust sensitivity
    -
    560 *
    -
    561 * // Send modified config back to sensor
    -
    562 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    563 * AsyncCommandResult result,
    -
    564 * byte) {
    -
    565 * if (result == AsyncCommandResult::SUCCESS) {
    -
    566 * Serial.println("Config updated successfully!");
    -
    567 * }
    -
    568 * });
    -
    569 * @endcode
    +
    549 * @returns true if there is an active command awaiting an ACK,
    +
    550 * false if the library is idle.
    +
    551 *
    +
    552 */
    +
    553 bool asyncIsBusy();
    +
    554
    +
    555 /**
    +
    556 * @brief Cancels any pending asynchronous command or sequence.
    +
    557 *
    +
    558 * If canceled, the callback of the running command is invoked
    +
    559 * with result type CANCELED. After canceling, the sensor may
    +
    560 * remain in config mode — consider disabling config mode or
    +
    561 * rebooting to return to detection operation.
    +
    562 *
    +
    563 */
    +
    564 void asyncCancel();
    +
    565
    +
    566 /**
    +
    567 * @brief Sets the timeout for async command callbacks.
    +
    568 *
    +
    569 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
    570 *
    -
    571 * ## Do:
    -
    572 * - Use when you want a clone of the current config to adjust and send back.
    -
    573 * - Safely modify the struct without risking internal state corruption.
    -
    574 *
    -
    575 * ## Don’t:
    -
    576 * - Assume this always reflects the live sensor config (it’s only as fresh as the last received config data).
    -
    577 *
    -
    578 * @returns A copy of the current ConfigData.
    -
    579 *
    -
    580 * @ingroup LD2410Async_Configuration
    -
    581 * @ingroup LD2410Async_PublicData
    +
    571 *
    +
    572 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
    +
    573 *
    +
    574 */
    +
    575 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    +
    576
    +
    577 /**
    +
    578 * @brief Returns the current async command timeout.
    +
    579 *
    +
    580 * @return Timeout in milliseconds.
    +
    581 *
    582 */
    - +
    583 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    584
    -
    585
    -
    586 /**
    -
    587 * @brief Access the current config data without making a copy.
    -
    588 *
    -
    589 * This returns a const reference to the internal struct. It is efficient,
    -
    590 * but the data must not be modified directly. Use this if you only want
    -
    591 * to read values.
    -
    592 *
    -
    593 * @note Since this returns a reference to the internal data, the values
    -
    594 * may change when new configuration is received. Do not store the
    -
    595 * reference for long-term use.
    -
    596 * @note This function will not query the sensor for data. It just returns
    -
    597 * the data that has already been received from the sensor.
    -
    598 *
    -
    599 * ## Example: Efficient read access without cloning
    -
    600 * @code
    -
    601 * const ConfigData& cfg = radar.getConfigDataRef(); // no copy
    -
    602 * Serial.print("Resolution: ");
    -
    603 * Serial.println(static_cast<int>(cfg.distanceResolution));
    -
    604 * @endcode
    -
    605 *
    -
    606 * ## Do:
    -
    607 * - Use when you only want to inspect configuration quickly.
    -
    608 * - Use for efficient read-only access.
    -
    609 *
    -
    610 * ## Don’t:
    -
    611 * - Try to modify the returned struct (it’s const).
    -
    612 * - Keep the reference and assume it will remain valid forever.
    -
    613 *
    -
    614 * @returns Const reference to the current ConfigData.
    -
    615 *
    -
    616 * @ingroup LD2410Async_Configuration
    -
    617 * @ingroup LD2410Async_PublicData
    -
    618 */
    - -
    620
    -
    621
    -
    622 /**********************************************************************************
    -
    623 * Special async commands
    -
    624 ***********************************************************************************/
    -
    625 /**
    -
    626 * @brief Checks if an asynchronous command is currently pending.
    -
    627 *
    -
    628 * @returns true if there is an active command awaiting an ACK,
    -
    629 * false if the library is idle.
    -
    630 *
    -
    631 * @ingroup LD2410Async_AsyncCommands
    -
    632 */
    -
    633 bool asyncIsBusy();
    -
    634
    -
    635 /**
    -
    636 * @brief Cancels any pending asynchronous command or sequence.
    -
    637 *
    -
    638 * If canceled, the callback of the running command is invoked
    -
    639 * with result type CANCELED. After canceling, the sensor may
    -
    640 * remain in config mode — consider disabling config mode or
    -
    641 * rebooting to return to detection operation.
    -
    642 *
    -
    643 * @ingroup LD2410Async_AsyncCommands
    -
    644 */
    -
    645 void asyncCancel();
    -
    646
    -
    647 /**
    -
    648 * @brief Sets the timeout for async command callbacks.
    +
    585
    +
    586 /**********************************************************************************
    +
    587 * Commands
    +
    588 ***********************************************************************************/
    +
    589
    +
    590 /*---------------------------------------------------------------------------------
    +
    591 - Config mode commands
    +
    592 ---------------------------------------------------------------------------------*/
    +
    593 /**
    +
    594 * @brief Enables config mode on the radar.
    +
    595 *
    +
    596 * Config mode must be enabled before issuing most configuration commands.
    +
    597 * This command itself is asynchronous — the callback fires once the
    +
    598 * sensor acknowledges the mode switch.
    +
    599 *
    +
    600 * @note If asyncIsBusy() is true, this command will not be sent.
    +
    601 * @note Normal detection data is suspended while config mode is active.
    +
    602 *
    +
    603 * @param callback Callback with signature
    +
    604 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    605 * @param userData Optional value that will be passed to the callback.
    +
    606 *
    +
    607 * @returns true if the command was sent, false if blocked.
    +
    608 *
    +
    609 */
    +
    610 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    611
    +
    612 /**
    +
    613 * @brief Disables config mode on the radar.
    +
    614 *
    +
    615 * This should be called after finishing configuration, to return
    +
    616 * the sensor to normal detection operation.
    +
    617 *
    +
    618 * @note If an async command is already pending (asyncIsBusy() == true),
    +
    619 * this command will not be sent.
    +
    620 *
    +
    621 * @param callback Callback with signature
    +
    622 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    623 * @param userData Optional value passed to the callback.
    +
    624 *
    +
    625 * @returns true if the command was sent, false otherwise.
    +
    626 *
    +
    627 */
    +
    628 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    629
    +
    630 /**
    +
    631 * @brief Detects if config mode is enabled
    +
    632 *
    +
    633 * @returns true if config mode is anabled, false if config mode is disabled
    +
    634 *
    +
    635 */
    +
    +
    636 bool isConfigModeEnabled() const {
    +
    637 return configModeEnabled;
    +
    638 };
    +
    +
    639
    +
    640
    +
    641 /*---------------------------------------------------------------------------------
    +
    642 - Engineering mode commands
    +
    643 ---------------------------------------------------------------------------------*/
    +
    644 /**
    +
    645 * @brief Enables engineering mode.
    +
    646 *
    +
    647 * In this mode, the sensor sends detailed per-gate signal values
    +
    648 * in addition to basic detection results.
    649 *
    -
    650 * #note Make sure the timeout is long enough to allow for the execution of long running commands. In partuclar enabling config mode can take up to 6 secs.
    -
    651 *
    +
    650 * @note Engineering mode is temporary and lost after power cycle.
    +
    651 * @note Requires config mode. Will be enabled automatically if not active.
    652 *
    -
    653 * @param timeoutMs Timeout in milliseconds (default 6000 ms).
    -
    654 *
    -
    655 * @ingroup LD2410Async_AsyncCommands
    -
    656 */
    -
    657 void setAsyncCommandTimeoutMs(unsigned long timeoutMs) { asyncCommandTimeoutMs = timeoutMs; }
    -
    658
    -
    659 /**
    -
    660 * @brief Returns the current async command timeout.
    -
    661 *
    -
    662 * @return Timeout in milliseconds.
    -
    663 *
    -
    664 * @ingroup LD2410Async_AsyncCommands
    -
    665 */
    -
    666 unsigned long getAsyncCommandTimeoutMs() const { return asyncCommandTimeoutMs; }
    -
    667
    -
    668
    -
    669 /**********************************************************************************
    -
    670 * Commands
    -
    671 ***********************************************************************************/
    -
    672
    -
    673 /*---------------------------------------------------------------------------------
    -
    674 - Config mode commands
    -
    675 ---------------------------------------------------------------------------------*/
    +
    653 * @param callback Callback fired when ACK is received or on failure.
    +
    654 * @param userData Optional value passed to the callback.
    +
    655 *
    +
    656 * @returns true if the command was sent, false otherwise.
    +
    657 *
    +
    658 */
    +
    659 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    660
    +
    661 /**
    +
    662 * @brief Disables engineering mode.
    +
    663 *
    +
    664 * Returns sensor reporting to basic detection results only.
    +
    665 *
    +
    666 * @note Requires config mode. Will be enabled automatically if not active.
    +
    667 *
    +
    668 * @param callback Callback fired when ACK is received or on failure.
    +
    669 * @param userData Optional value passed to the callback.
    +
    670 *
    +
    671 * @returns true if the command was sent, false otherwise.
    +
    672 *
    +
    673 */
    +
    674 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    675
    676 /**
    -
    677 * @brief Enables config mode on the radar.
    +
    677 * @brief Detects if engineering mode is enabled
    678 *
    -
    679 * Config mode must be enabled before issuing most configuration commands.
    -
    680 * This command itself is asynchronous — the callback fires once the
    -
    681 * sensor acknowledges the mode switch.
    -
    682 *
    -
    683 * @note If asyncIsBusy() is true, this command will not be sent.
    -
    684 * @note Normal detection data is suspended while config mode is active.
    -
    685 *
    -
    686 * @param callback Callback with signature
    -
    687 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    688 * @param userData Optional value that will be passed to the callback.
    -
    689 *
    -
    690 * @returns true if the command was sent, false if blocked.
    -
    691 *
    -
    692 * @ingroup LD2410Async_AsyncCommands
    -
    693 * @ingroup LD2410Async_Configuration
    -
    694 */
    -
    695 bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    696
    -
    697 /**
    -
    698 * @brief Disables config mode on the radar.
    -
    699 *
    -
    700 * This should be called after finishing configuration, to return
    -
    701 * the sensor to normal detection operation.
    +
    679 * @returns true if engineering mode is anabled, false if engineering mode is disabled
    +
    680 *
    +
    681 */
    +
    + + +
    684 };
    +
    +
    685
    +
    686 /*---------------------------------------------------------------------------------
    +
    687 - Native sensor commands
    +
    688 ---------------------------------------------------------------------------------*/
    +
    689 /**
    +
    690 * @brief Requests the current gate parameters from the sensor.
    +
    691 *
    +
    692 * Retrieves sensitivities, max gates, and timeout settings,
    +
    693 * which will be written into configData.
    +
    694 *
    +
    695 * @note Requires config mode. The method will manage mode switching if needed.
    +
    696 * @note If an async command is already pending, the request is rejected.
    +
    697 *
    +
    698 * @param callback Callback fired when data is received or on failure.
    +
    699 * @param userData Optional value passed to the callback.
    +
    700 *
    +
    701 * @returns true if the command was sent, false otherwise.
    702 *
    -
    703 * @note If an async command is already pending (asyncIsBusy() == true),
    -
    704 * this command will not be sent.
    -
    705 *
    -
    706 * @param callback Callback with signature
    -
    707 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    708 * @param userData Optional value passed to the callback.
    -
    709 *
    -
    710 * @returns true if the command was sent, false otherwise.
    -
    711 *
    -
    712 * @ingroup LD2410Async_AsyncCommands
    -
    713 * @ingroup LD2410Async_Configuration
    -
    714 */
    -
    715 bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    716
    -
    717 /**
    -
    718 * @brief Detects if config mode is enabled
    +
    703 */
    +
    704 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    705
    +
    706
    +
    707
    +
    708 /**
    +
    709 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    710 *
    +
    711 * This command updates:
    +
    712 * - Maximum motion detection distance gate (2–8).
    +
    713 * - Maximum stationary detection distance gate (2–8).
    +
    714 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
    +
    715 *
    +
    716 * @note Requires config mode to be enabled. The method will internally
    +
    717 * enable/disable config mode if necessary.
    +
    718 * @note If another async command is pending, this call fails.
    719 *
    -
    720 * @returns true if config mode is anabled, false if config mode is disabled
    -
    721 *
    -
    722 * @ingroup LD2410Async_Configuration
    -
    723 */
    -
    -
    724 bool isConfigModeEnabled() const {
    -
    725 return configModeEnabled;
    -
    726 };
    -
    -
    727
    -
    728
    -
    729 /*---------------------------------------------------------------------------------
    -
    730 - Engineering mode commands
    -
    731 ---------------------------------------------------------------------------------*/
    +
    720 * @param maxMovingGate Furthest gate used for motion detection (2–8).
    +
    721 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
    +
    722 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
    +
    723 * @param callback Callback fired when ACK is received or on failure/timeout.
    +
    724 * @param userData Optional value passed to the callback.
    +
    725 *
    +
    726 * @returns true if the command was sent, false otherwise (busy state or invalid values).
    +
    727 *
    +
    728 */
    +
    729 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    +
    730
    +
    731
    732 /**
    -
    733 * @brief Enables engineering mode.
    +
    733 * @brief Configures sensitivity thresholds for all gates at once.
    734 *
    -
    735 * In this mode, the sensor sends detailed per-gate signal values
    -
    736 * in addition to basic detection results.
    +
    735 * A sequence of commands will be sent, one for each gate.
    +
    736 * Threshold values are automatically clamped to 0–100.
    737 *
    -
    738 * @note Engineering mode is temporary and lost after power cycle.
    -
    739 * @note Requires config mode. Will be enabled automatically if not active.
    +
    738 * @note Requires config mode. Will be managed automatically.
    +
    739 * @note If another async command is pending, this call fails.
    740 *
    -
    741 * @param callback Callback fired when ACK is received or on failure.
    -
    742 * @param userData Optional value passed to the callback.
    -
    743 *
    -
    744 * @returns true if the command was sent, false otherwise.
    +
    741 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
    +
    742 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
    +
    743 * @param callback Callback fired when all updates are acknowledged or on failure.
    +
    744 * @param userData Optional value passed to the callback.
    745 *
    -
    746 * @ingroup LD2410Async_NativeCommands
    -
    747 * @ingroup LD2410Async_AsyncCommands
    -
    748 * @ingroup LD2410Async_PresenceDetection
    -
    749 */
    -
    750 bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    751
    -
    752 /**
    -
    753 * @brief Disables engineering mode.
    -
    754 *
    -
    755 * Returns sensor reporting to basic detection results only.
    -
    756 *
    -
    757 * @note Requires config mode. Will be enabled automatically if not active.
    +
    746 * @returns true if the sequence was started, false otherwise.
    +
    747 *
    +
    748 */
    +
    749
    +
    750 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    +
    751
    +
    752
    +
    753 /**
    +
    754 * @brief Configures sensitivity thresholds for a single gate.
    +
    755 *
    +
    756 * Updates both moving and stationary thresholds for the given gate index.
    +
    757 * If the gate index is greater than 8, all gates are updated instead.
    758 *
    -
    759 * @param callback Callback fired when ACK is received or on failure.
    -
    760 * @param userData Optional value passed to the callback.
    +
    759 * @note Requires config mode. Will be managed automatically.
    +
    760 * @note If another async command is pending, this call fails.
    761 *
    -
    762 * @returns true if the command was sent, false otherwise.
    -
    763 *
    -
    764 * @ingroup LD2410Async_PresenceDetection
    -
    765 * @ingroup LD2410Async_AsyncCommands
    -
    766 */
    -
    767 bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    768
    -
    769 /**
    -
    770 * @brief Detects if engineering mode is enabled
    -
    771 *
    -
    772 * @returns true if engineering mode is anabled, false if engineering mode is disabled
    -
    773 *
    -
    774 * @ingroup LD2410Async_PresenceDetection
    -
    775 */
    -
    - - -
    778 };
    -
    -
    779
    -
    780 /*---------------------------------------------------------------------------------
    -
    781 - Native sensor commands
    -
    782 ---------------------------------------------------------------------------------*/
    -
    783 /**
    -
    784 * @brief Requests the current gate parameters from the sensor.
    +
    762 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
    +
    763 * @param movingThreshold Sensitivity for moving targets (0–100).
    +
    764 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
    +
    765 * @param callback Callback fired when ACK is received or on failure.
    +
    766 * @param userData Optional value passed to the callback.
    +
    767 *
    +
    768 * @returns true if the command was sent, false otherwise.
    +
    769 *
    +
    770 *
    +
    771 */
    +
    772 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    +
    773
    +
    774 /**
    +
    775 * @brief Requests the firmware version of the sensor.
    +
    776 *
    +
    777 * Populates the firmware string when the ACK response arrives.
    +
    778 *
    +
    779 * @note Requires config mode. Will be managed automatically.
    +
    780 *
    +
    781 * @param callback Callback fired when firmware info is received.
    +
    782 * @param userData Optional value passed to the callback.
    +
    783 *
    +
    784 * @returns true if the command was sent, false otherwise.
    785 *
    -
    786 * Retrieves sensitivities, max gates, and timeout settings,
    -
    787 * which will be written into configData.
    -
    788 *
    -
    789 * @note Requires config mode. The method will manage mode switching if needed.
    -
    790 * @note If an async command is already pending, the request is rejected.
    +
    786 */
    +
    787 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    788
    +
    789 /**
    +
    790 * @brief Configures the UART baud rate of the sensor.
    791 *
    -
    792 * @param callback Callback fired when data is received or on failure.
    -
    793 * @param userData Optional value passed to the callback.
    -
    794 *
    -
    795 * @returns true if the command was sent, false otherwise.
    -
    796 *
    -
    797 * @ingroup LD2410Async_AsyncCommands
    -
    798 * @ingroup LD2410Async_Configuration
    -
    799 * @ingroup LD2410Async_NativeCommands
    -
    800 */
    -
    801 bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    802
    -
    803
    -
    804
    -
    805 /**
    -
    806 * @brief Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    807 *
    -
    808 * This command updates:
    -
    809 * - Maximum motion detection distance gate (2–8).
    -
    810 * - Maximum stationary detection distance gate (2–8).
    -
    811 * - Timeout duration (0–65535 seconds) until "no presence" is declared.
    +
    792 * The new baud rate becomes active only after reboot.
    +
    793 * The ESP32’s Serial interface must also be reconfigured
    +
    794 * to the new baud rate after reboot.
    +
    795 *
    +
    796 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
    +
    797 * @note Requires config mode. Will be managed automatically.
    +
    798 * @note If another async command is pending, this call fails.
    +
    799 * @note After execution, call rebootAsync() to activate changes.
    +
    800 *
    +
    801 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    +
    802 * @param callback Callback fired when ACK is received or on failure.
    +
    803 * @param userData Optional value passed to the callback.
    +
    804 *
    +
    805 * @returns true if the command was sent, false otherwise.
    +
    806 *
    +
    807 */
    +
    808 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    +
    809
    +
    810 /**
    +
    811 * @brief Configures the baudrate of the serial port of the sensor.
    812 *
    -
    813 * @note Requires config mode to be enabled. The method will internally
    -
    814 * enable/disable config mode if necessary.
    -
    815 * @note If another async command is pending, this call fails.
    -
    816 *
    -
    817 * @param maxMovingGate Furthest gate used for motion detection (2–8).
    -
    818 * @param maxStationaryGate Furthest gate used for stationary detection (2–8).
    -
    819 * @param noOneTimeout Timeout in seconds until "no one" is reported (0–65535).
    -
    820 * @param callback Callback fired when ACK is received or on failure/timeout.
    -
    821 * @param userData Optional value passed to the callback.
    -
    822 *
    -
    823 * @returns true if the command was sent, false otherwise (busy state or invalid values).
    -
    824 *
    -
    825 * @ingroup LD2410Async_AsyncCommands
    -
    826 * @ingroup LD2410Async_Configuration
    -
    827 * @ingroup LD2410Async_NativeCommands
    -
    828 */
    -
    829 bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData = 0);
    -
    830
    -
    831
    -
    832 /**
    -
    833 * @brief Configures sensitivity thresholds for all gates at once.
    +
    813 * The new baudrate will only become active after a reboot of the sensor.
    +
    814 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
    +
    815 *
    +
    816 * @note If another async command is pending, this call fails.
    +
    817 * @note After execution, call rebootAsync() to activate changes.
    +
    818 *
    +
    819 * @param baudrate A valid baud rate from the Baudrate enum.
    +
    820 *
    +
    821 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    822 * @param userData Optional value that will be passed to the callback function.
    +
    823 *
    +
    824 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    825 *
    +
    826 */
    +
    827 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    +
    828
    +
    829
    +
    830 /**
    +
    831 * @brief Restores factory settings of the sensor.
    +
    832 *
    +
    833 * Restored settings only become active after a reboot.
    834 *
    -
    835 * A sequence of commands will be sent, one for each gate.
    -
    836 * Threshold values are automatically clamped to 0–100.
    +
    835 * @note Requires config mode. Will be managed automatically.
    +
    836 * @note After execution, call rebootAsync() to activate changes.
    837 *
    -
    838 * @note Requires config mode. Will be managed automatically.
    -
    839 * @note If another async command is pending, this call fails.
    +
    838 * @param callback Callback fired when ACK is received or on failure.
    +
    839 * @param userData Optional value passed to the callback.
    840 *
    -
    841 * @param movingThresholds Array of 9 sensitivity values for moving targets (0–100).
    -
    842 * @param stationaryThresholds Array of 9 sensitivity values for stationary targets (0–100).
    -
    843 * @param callback Callback fired when all updates are acknowledged or on failure.
    -
    844 * @param userData Optional value passed to the callback.
    -
    845 *
    -
    846 * @returns true if the sequence was started, false otherwise.
    -
    847 *
    -
    848 * @ingroup LD2410Async_AsyncCommands
    -
    849 * @ingroup LD2410Async_Configuration
    -
    850 * @ingroup LD2410Async_NativeCommands
    -
    851 */
    -
    852
    -
    853 bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData = 0);
    -
    854
    -
    855
    -
    856 /**
    -
    857 * @brief Configures sensitivity thresholds for a single gate.
    +
    841 * @returns true if the command was sent, false otherwise.
    +
    842 *
    +
    843 */
    +
    844 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    845
    +
    846 /**
    +
    847 * @brief Reboots the sensor.
    +
    848 *
    +
    849 * After reboot, the sensor stops responding for a few seconds.
    +
    850 * Config and engineering mode are reset.
    +
    851 *
    +
    852 * @note The reboot of the sensor takes place after the ACK has been sent.
    +
    853 *
    +
    854 * @param callback Callback fired when ACK is received or on failure.
    +
    855 * @param userData Optional value passed to the callback.
    +
    856 *
    +
    857 * @returns true if the command was sent, false otherwise.
    858 *
    -
    859 * Updates both moving and stationary thresholds for the given gate index.
    -
    860 * If the gate index is greater than 8, all gates are updated instead.
    -
    861 *
    -
    862 * @note Requires config mode. Will be managed automatically.
    -
    863 * @note If another async command is pending, this call fails.
    +
    859 */
    +
    860 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    861
    +
    862 /**
    +
    863 * @brief Enables bluetooth
    864 *
    -
    865 * @param gate Index of the gate (0–8). Values >8 apply to all gates.
    -
    866 * @param movingThreshold Sensitivity for moving targets (0–100).
    -
    867 * @param stationaryThreshold Sensitivity for stationary targets (0–100).
    -
    868 * @param callback Callback fired when ACK is received or on failure.
    -
    869 * @param userData Optional value passed to the callback.
    -
    870 *
    -
    871 * @returns true if the command was sent, false otherwise.
    -
    872 *
    -
    873 *
    -
    874 * @ingroup LD2410Async_AsyncCommands
    -
    875 * @ingroup LD2410Async_Configuration
    -
    876 * @ingroup LD2410Async_NativeCommands
    -
    877 */
    -
    878 bool configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData = 0);
    -
    879
    -
    880 /**
    -
    881 * @brief Requests the firmware version of the sensor.
    -
    882 *
    -
    883 * Populates the firmware string when the ACK response arrives.
    -
    884 *
    -
    885 * @note Requires config mode. Will be managed automatically.
    +
    865 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    866 * @param userData Optional value that will be passed to the callback function.
    +
    867 *
    +
    868 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    869 *
    +
    870 */
    +
    871 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    872
    +
    873 /**
    +
    874 * @brief Disables bluetooth
    +
    875 *
    +
    876 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    877 * @param userData Optional value that will be passed to the callback function.
    +
    878 *
    +
    879 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    880 *
    +
    881 */
    +
    882 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    883
    +
    884 /**
    +
    885 * @brief Requests the bluetooth mac address
    886 *
    -
    887 * @param callback Callback fired when firmware info is received.
    -
    888 * @param userData Optional value passed to the callback.
    -
    889 *
    -
    890 * @returns true if the command was sent, false otherwise.
    +
    887 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    +
    888 *
    +
    889 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    890 * @param userData Optional value that will be passed to the callback function.
    891 *
    -
    892 * @ingroup LD2410Async_AsyncCommands
    -
    893 * @ingroup LD2410Async_StaticData
    -
    894 * @ingroup LD2410Async_NativeCommands
    -
    895 */
    -
    896 bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    897
    -
    898 /**
    -
    899 * @brief Configures the UART baud rate of the sensor.
    -
    900 *
    -
    901 * The new baud rate becomes active only after reboot.
    -
    902 * The ESP32’s Serial interface must also be reconfigured
    -
    903 * to the new baud rate after reboot.
    -
    904 *
    -
    905 * @note Valid values are 1–8. Values outside range are rejected resp. method will fail.
    -
    906 * @note Requires config mode. Will be managed automatically.
    -
    907 * @note If another async command is pending, this call fails.
    -
    908 * @note After execution, call rebootAsync() to activate changes.
    -
    909 *
    -
    910 * @param baudRateSetting Numeric setting: 1=9600, 2=19200, 3=38400, 4=57600, 5=115200, 6=230400, 7=25600 (factory default), 8=460800.
    -
    911 * @param callback Callback fired when ACK is received or on failure.
    -
    912 * @param userData Optional value passed to the callback.
    -
    913 *
    -
    914 * @returns true if the command was sent, false otherwise.
    +
    892 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    893 *
    +
    894 */
    +
    895 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    896
    +
    897 /**
    +
    898 * @brief Sets the password for bluetooth access to the sensor.
    +
    899 *
    +
    900 * @param password New bluetooth password. Max 6. chars.
    +
    901 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    902 * @param userData Optional value that will be passed to the callback function.
    +
    903 *
    +
    904 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    905 *
    +
    906 */
    +
    907 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    +
    908
    +
    909 /**
    +
    910 * @brief Sets the password for bluetooth access to the sensor.
    +
    911 *
    +
    912 * @param password New bluetooth password. Max 6. chars.
    +
    913 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    914 * @param userData Optional value that will be passed to the callback function.
    915 *
    -
    916 * @ingroup LD2410Async_AsyncCommands
    -
    917 * @ingroup LD2410Async_Configuration
    -
    918 * @ingroup LD2410Async_NativeCommands
    -
    919 */
    -
    920 bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData = 0);
    -
    921
    -
    922 /**
    -
    923 * @brief Configures the baudrate of the serial port of the sensor.
    -
    924 *
    -
    925 * The new baudrate will only become active after a reboot of the sensor.
    -
    926 * If changing the baud rate, remember that you also need to addjust the baud rate of the ESP32 serial that is associated with then sensor.
    +
    916 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    917 *
    +
    918 */
    +
    919 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    +
    920
    +
    921 /**
    +
    922 * @brief Resets the password for bluetooth access to the default value (HiLink)
    +
    923 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    +
    924 * @param userData Optional value that will be passed to the callback function.
    +
    925 *
    +
    926 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    927 *
    -
    928 * @note If another async command is pending, this call fails.
    -
    929 * @note After execution, call rebootAsync() to activate changes.
    -
    930 *
    -
    931 * @param baudrate A valid baud rate from the Baudrate enum.
    -
    932 *
    -
    933 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    934 * @param userData Optional value that will be passed to the callback function.
    -
    935 *
    -
    936 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    937 *
    -
    938 * @ingroup LD2410Async_AsyncCommands
    -
    939 * @ingroup LD2410Async_Configuration
    -
    940 * @ingroup LD2410Async_NativeCommands
    -
    941 */
    -
    942 bool configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData = 0);
    -
    943
    -
    944
    -
    945 /**
    -
    946 * @brief Restores factory settings of the sensor.
    -
    947 *
    -
    948 * Restored settings only become active after a reboot.
    +
    928 */
    +
    929 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    930
    +
    931 /**
    +
    932 * @brief Configures the distance resolution of the radar.
    +
    933 *
    +
    934 * The distance resolution defines the size of each distance gate
    +
    935 * and the maximum detection range:
    +
    936 * - RESOLUTION_75CM → longer range, coarser detail.
    +
    937 * - RESOLUTION_20CM → shorter range, finer detail.
    +
    938 *
    +
    939 * @note Requires config mode. Will be managed automatically.
    +
    940 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    941 * @note Fails if another async command is pending.
    +
    942 *
    +
    943 * @param distanceResolution Value from the DistanceResolution enum.
    +
    944 * Must not be NOT_SET.
    +
    945 * @param callback Function pointer with signature:
    +
    946 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    947 * Fired when the ACK is received or on failure/timeout.
    +
    948 * @param userData Optional value passed to the callback.
    949 *
    -
    950 * @note Requires config mode. Will be managed automatically.
    -
    951 * @note After execution, call rebootAsync() to activate changes.
    +
    950 * @returns true if the command was sent, false if invalid parameters
    +
    951 * or the library is busy.
    952 *
    -
    953 * @param callback Callback fired when ACK is received or on failure.
    -
    954 * @param userData Optional value passed to the callback.
    -
    955 *
    -
    956 * @returns true if the command was sent, false otherwise.
    -
    957 *
    -
    958 * @ingroup LD2410Async_AsyncCommands
    -
    959 * @ingroup LD2410Async_Configuration
    -
    960 * @ingroup LD2410Async_NativeCommands
    -
    961 */
    -
    962 bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    963
    -
    964 /**
    -
    965 * @brief Reboots the sensor.
    -
    966 *
    -
    967 * After reboot, the sensor stops responding for a few seconds.
    -
    968 * Config and engineering mode are reset.
    -
    969 *
    -
    970 * @note The reboot of the sensor takes place after the ACK has been sent.
    -
    971 *
    -
    972 * @param callback Callback fired when ACK is received or on failure.
    -
    973 * @param userData Optional value passed to the callback.
    -
    974 *
    -
    975 * @returns true if the command was sent, false otherwise.
    +
    953 */
    +
    954 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    +
    955
    +
    956 /**
    +
    957 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    +
    958 *
    +
    959 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    +
    960 *
    +
    961 * @note Requires config mode. Will be managed automatically.
    +
    962 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    963 * @note Fails if another async command is pending.
    +
    964 *
    +
    965 * @param callback Function pointer with signature:
    +
    966 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    967 * @param userData Optional value passed to the callback.
    +
    968 *
    +
    969 * @returns true if the command was sent, false otherwise.
    +
    970 *
    +
    971 */
    +
    972 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    973
    +
    974 /**
    +
    975 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    976 *
    -
    977 * @ingroup LD2410Async_AsyncCommands
    -
    978 * @ingroup LD2410Async_NativeCommands
    -
    979 */
    -
    980 bool rebootAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    981
    -
    982 /**
    -
    983 * @brief Enables bluetooth
    -
    984 *
    -
    985 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    986 * @param userData Optional value that will be passed to the callback function.
    -
    987 *
    -
    988 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    989 *
    -
    990 * @ingroup LD2410Async_AsyncCommands
    -
    991 * @ingroup LD2410Async_Configuration
    -
    992 * @ingroup LD2410Async_Bluetooth
    -
    993 * @ingroup LD2410Async_NativeCommands
    -
    994 */
    -
    995 bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    996
    -
    997 /**
    -
    998 * @brief Disables bluetooth
    -
    999 *
    -
    1000 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1001 * @param userData Optional value that will be passed to the callback function.
    +
    977 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    +
    978 *
    +
    979 * @note Requires config mode. Will be managed automatically.
    +
    980 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    +
    981 * @note Fails if another async command is pending.
    +
    982 *
    +
    983 * @param callback Function pointer with signature:
    +
    984 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    985 * @param userData Optional value passed to the callback.
    +
    986 *
    +
    987 * @returns true if the command was sent, false otherwise.
    +
    988 *
    +
    989 */
    +
    990 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    991
    +
    992 /**
    +
    993 * @brief Requests the current distance resolution setting from the sensor.
    +
    994 *
    +
    995 * The result is written into configData.distanceResolution.
    +
    996 *
    +
    997 * @note Requires config mode. Will be managed automatically.
    +
    998 *
    +
    999 * @param callback Function pointer with signature:
    +
    1000 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1001 * @param userData Optional value passed to the callback.
    1002 *
    -
    1003 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    1003 * @returns true if the command was sent, false otherwise.
    1004 *
    -
    1005 * @ingroup LD2410Async_AsyncCommands
    -
    1006 * @ingroup LD2410Async_Configuration
    -
    1007 * @ingroup LD2410Async_Bluetooth
    -
    1008 * @ingroup LD2410Async_NativeCommands
    -
    1009 */
    -
    1010 bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1011
    -
    1012 /**
    -
    1013 * @brief Requests the bluetooth mac address
    +
    1005 */
    +
    1006 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1007
    +
    1008 /**
    +
    1009 * @brief Configures the auxiliary control parameters (light and output pin).
    +
    1010 *
    +
    1011 * This configures how the OUT pin behaves depending on light levels
    +
    1012 * and presence detection. Typical use cases include controlling
    +
    1013 * an external lamp or relay.
    1014 *
    -
    1015 * @note The callback fires when the mac address has been received from the sensor (is sent with the ACK).
    -
    1016 *
    -
    1017 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1018 * @param userData Optional value that will be passed to the callback function.
    -
    1019 *
    -
    1020 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1021 *
    -
    1022 * @ingroup LD2410Async_AsyncCommands LD2410Async_Bluetooth LD2410Async_StaticData LD2410Async_NativeCommands
    -
    1023 */
    -
    1024 bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1025
    -
    1026 /**
    -
    1027 * @brief Sets the password for bluetooth access to the sensor.
    +
    1015 * @note Requires config mode. Will be managed automatically.
    +
    1016 * @note Both enums must be set to valid values (not NOT_SET).
    +
    1017 * @note Fails if another async command is pending.
    +
    1018 *
    +
    1019 * @param lightControl Light control behavior (see LightControl enum).
    +
    1020 * @param lightThreshold Threshold (0–255) used for light-based switching.
    +
    1021 * @param outputControl Output pin logic configuration (see OutputControl enum).
    +
    1022 * @param callback Function pointer with signature:
    +
    1023 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1024 * Fired when ACK is received or on failure/timeout.
    +
    1025 * @param userData Optional value passed to the callback.
    +
    1026 *
    +
    1027 * @returns true if the command was sent, false otherwise.
    1028 *
    -
    1029 * @param password New bluetooth password. Max 6. chars.
    -
    1030 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1031 * @param userData Optional value that will be passed to the callback function.
    -
    1032 *
    -
    1033 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    +
    1029 */
    +
    1030 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    +
    1031
    +
    1032 /**
    +
    1033 * @brief Requests the current auxiliary control settings.
    1034 *
    -
    1035 * @ingroup LD2410Async_AsyncCommands
    -
    1036 * @ingroup LD2410Async_Configuration
    -
    1037 * @ingroup LD2410Async_Bluetooth
    -
    1038 * @ingroup LD2410Async_NativeCommands
    -
    1039 */
    -
    1040 bool configureBluetoothPasswordAsync(const char* password, AsyncCommandCallback callback, byte userData = 0);
    -
    1041
    -
    1042 /**
    -
    1043 * @brief Sets the password for bluetooth access to the sensor.
    +
    1035 * Fills configData.lightControl, configData.lightThreshold,
    +
    1036 * and configData.outputControl.
    +
    1037 *
    +
    1038 * @note Requires config mode. Will be managed automatically.
    +
    1039 *
    +
    1040 * @param callback Function pointer with signature:
    +
    1041 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1042 * Fired when ACK is received or on failure/timeout.
    +
    1043 * @param userData Optional value passed to the callback.
    1044 *
    -
    1045 * @param password New bluetooth password. Max 6. chars.
    -
    1046 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1047 * @param userData Optional value that will be passed to the callback function.
    -
    1048 *
    -
    1049 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1050 *
    -
    1051 * @ingroup LD2410Async_AsyncCommands
    -
    1052 * @ingroup LD2410Async_Configuration
    -
    1053 * @ingroup LD2410Async_Bluetooth
    -
    1054 * @ingroup LD2410Async_NativeCommands
    -
    1055 */
    -
    1056 bool configureBluetoothPasswordAsync(const String& password, AsyncCommandCallback callback, byte userData = 0);
    -
    1057
    -
    1058 /**
    -
    1059 * @brief Resets the password for bluetooth access to the default value (HiLink)
    -
    1060 * @param callback Callback method with void methodName(LD2410Async* sender, AsyncCommandResult result, byte userData) signature. Will be called after the Ack for the command has been received (success=true) or after the command timeout (success=false) or after the command has been canceld (sucess=false).
    -
    1061 * @param userData Optional value that will be passed to the callback function.
    -
    1062 *
    -
    1063 * @returns true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -
    1064 *
    -
    1065 * @ingroup LD2410Async_AsyncCommands
    -
    1066 * @ingroup LD2410Async_Configuration
    -
    1067 * @ingroup LD2410Async_Bluetooth
    -
    1068 * @ingroup LD2410Async_NativeCommands
    -
    1069 */
    -
    1070 bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1071
    -
    1072 /**
    -
    1073 * @brief Configures the distance resolution of the radar.
    -
    1074 *
    -
    1075 * The distance resolution defines the size of each distance gate
    -
    1076 * and the maximum detection range:
    -
    1077 * - RESOLUTION_75CM → longer range, coarser detail.
    -
    1078 * - RESOLUTION_20CM → shorter range, finer detail.
    -
    1079 *
    -
    1080 * @note Requires config mode. Will be managed automatically.
    -
    1081 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1082 * @note Fails if another async command is pending.
    +
    1045 * @returns true if the command was sent, false otherwise.
    +
    1046 *
    +
    1047 */
    +
    1048 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1049
    +
    1050
    +
    1051 /**
    +
    1052 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    +
    1053 *
    +
    1054 * Auto-config lets the radar adjust its internal thresholds and
    +
    1055 * sensitivities for the current environment. This can take several
    +
    1056 * seconds to complete and results in updated sensitivity values.
    +
    1057 *
    +
    1058 * The progress and result can be checked with requestAutoConfigStatusAsync().
    +
    1059 *
    +
    1060 * @note Requires config mode. This method will manage entering and
    +
    1061 * exiting config mode automatically.
    +
    1062 * @note Auto-config temporarily suspends normal detection reporting.
    +
    1063 *
    +
    1064 * ## Example: Run auto-config
    +
    1065 * @code
    +
    1066 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    +
    1067 * AsyncCommandResult result,
    +
    1068 * byte) {
    +
    1069 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1070 * Serial.println("Auto-config started.");
    +
    1071 * } else {
    +
    1072 * Serial.println("Failed to start auto-config.");
    +
    1073 * }
    +
    1074 * });
    +
    1075 * @endcode
    +
    1076 *
    +
    1077 * ## Do:
    +
    1078 * - Use in new environments to optimize detection performance.
    +
    1079 * - Query status afterwards with requestAutoConfigStatusAsync().
    +
    1080 *
    +
    1081 * ## Don’t:
    +
    1082 * - Expect instant results — the sensor needs time to complete the process.
    1083 *
    -
    1084 * @param distanceResolution Value from the DistanceResolution enum.
    -
    1085 * Must not be NOT_SET.
    -
    1086 * @param callback Function pointer with signature:
    -
    1087 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1088 * Fired when the ACK is received or on failure/timeout.
    -
    1089 * @param userData Optional value passed to the callback.
    +
    1084 * @param callback Callback with signature:
    +
    1085 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1086 * Fired when the command is acknowledged or on failure/timeout.
    +
    1087 * @param userData Optional value passed to the callback.
    +
    1088 *
    +
    1089 * @returns true if the command was sent, false otherwise.
    1090 *
    -
    1091 * @returns true if the command was sent, false if invalid parameters
    -
    1092 * or the library is busy.
    -
    1093 *
    -
    1094 * @ingroup LD2410Async_AsyncCommands
    -
    1095 * @ingroup LD2410Async_Configuration
    -
    1096 * @ingroup LD2410Async_NativeCommands
    -
    1097 */
    -
    1098 bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData = 0);
    -
    1099
    -
    1100 /**
    -
    1101 * @brief Configures the distance resolution explicitly to 75 cm per gate.
    +
    1091 */
    +
    1092 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1093
    +
    1094
    +
    1095 /**
    +
    1096 * @brief Requests the current status of the auto-config routine.
    +
    1097 *
    +
    1098 * The status is written into the member variable autoConfigStatus:
    +
    1099 * - NOT_IN_PROGRESS → no auto-config running.
    +
    1100 * - IN_PROGRESS → auto-config is currently running.
    +
    1101 * - COMPLETED → auto-config finished (success or failure).
    1102 *
    -
    1103 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_75CM).
    -
    1104 *
    -
    1105 * @note Requires config mode. Will be managed automatically.
    -
    1106 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1107 * @note Fails if another async command is pending.
    -
    1108 *
    -
    1109 * @param callback Function pointer with signature:
    -
    1110 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1111 * @param userData Optional value passed to the callback.
    -
    1112 *
    -
    1113 * @returns true if the command was sent, false otherwise.
    -
    1114 *
    -
    1115 * @ingroup LD2410Async_AsyncCommands
    -
    1116 * @ingroup LD2410Async_Configuration
    -
    1117 * @ingroup LD2410Async_NativeCommands
    -
    1118 */
    -
    1119 bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1120
    -
    1121 /**
    -
    1122 * @brief Configures the distance resolution explicitly to 20 cm per gate.
    -
    1123 *
    -
    1124 * Equivalent to configureDistanceResolutionAsync(DistanceResolution::RESOLUTION_20CM).
    -
    1125 *
    -
    1126 * @note Requires config mode. Will be managed automatically.
    -
    1127 * @note Requires a reboot to activate value changes. Call rebootAsync() after setting.
    -
    1128 * @note Fails if another async command is pending.
    -
    1129 *
    -
    1130 * @param callback Function pointer with signature:
    -
    1131 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1132 * @param userData Optional value passed to the callback.
    -
    1133 *
    -
    1134 * @returns true if the command was sent, false otherwise.
    -
    1135 *
    -
    1136 * @ingroup LD2410Async_AsyncCommands
    -
    1137 * @ingroup LD2410Async_Configuration
    -
    1138 * @ingroup LD2410Async_NativeCommands
    -
    1139 */
    -
    1140 bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1141
    -
    1142 /**
    -
    1143 * @brief Requests the current distance resolution setting from the sensor.
    +
    1103 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1104 * @note If another async command is already pending, this call fails.
    +
    1105 *
    +
    1106 * ## Example: Check auto-config status
    +
    1107 * @code
    +
    1108 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    +
    1109 * AsyncCommandResult result,
    +
    1110 * byte) {
    +
    1111 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1112 * switch (sender->autoConfigStatus) {
    +
    1113 * case AutoConfigStatus::NOT_IN_PROGRESS:
    +
    1114 * Serial.println("Auto-config not running.");
    +
    1115 * break;
    +
    1116 * case AutoConfigStatus::IN_PROGRESS:
    +
    1117 * Serial.println("Auto-config in progress...");
    +
    1118 * break;
    +
    1119 * case AutoConfigStatus::COMPLETED:
    +
    1120 * Serial.println("Auto-config completed.");
    +
    1121 * break;
    +
    1122 * default:
    +
    1123 * Serial.println("Unknown auto-config status.");
    +
    1124 * }
    +
    1125 * } else {
    +
    1126 * Serial.println("Failed to request auto-config status.");
    +
    1127 * }
    +
    1128 * });
    +
    1129 * @endcode
    +
    1130 *
    +
    1131 * ## Do:
    +
    1132 * - Use this after beginAutoConfigAsync() to track progress.
    +
    1133 * - Use autoConfigStatus for decision-making in your logic.
    +
    1134 *
    +
    1135 * ## Don’t:
    +
    1136 * - Assume COMPLETED means success — thresholds should still be verified.
    +
    1137 *
    +
    1138 * @param callback Callback with signature:
    +
    1139 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1140 * Fired when the sensor replies or on failure/timeout.
    +
    1141 * @param userData Optional value passed to the callback.
    +
    1142 *
    +
    1143 * @returns true if the command was sent, false otherwise.
    1144 *
    -
    1145 * The result is written into configData.distanceResolution.
    -
    1146 *
    -
    1147 * @note Requires config mode. Will be managed automatically.
    -
    1148 *
    -
    1149 * @param callback Function pointer with signature:
    -
    1150 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1151 * @param userData Optional value passed to the callback.
    -
    1152 *
    -
    1153 * @returns true if the command was sent, false otherwise.
    -
    1154 *
    -
    1155 * @ingroup LD2410Async_AsyncCommands
    -
    1156 * @ingroup LD2410Async_Configuration
    -
    1157 * @ingroup LD2410Async_NativeCommands
    -
    1158 */
    -
    1159 bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1160
    -
    1161 /**
    -
    1162 * @brief Configures the auxiliary control parameters (light and output pin).
    -
    1163 *
    -
    1164 * This configures how the OUT pin behaves depending on light levels
    -
    1165 * and presence detection. Typical use cases include controlling
    -
    1166 * an external lamp or relay.
    -
    1167 *
    -
    1168 * @note Requires config mode. Will be managed automatically.
    -
    1169 * @note Both enums must be set to valid values (not NOT_SET).
    -
    1170 * @note Fails if another async command is pending.
    -
    1171 *
    -
    1172 * @param lightControl Light control behavior (see LightControl enum).
    -
    1173 * @param lightThreshold Threshold (0–255) used for light-based switching.
    -
    1174 * @param outputControl Output pin logic configuration (see OutputControl enum).
    -
    1175 * @param callback Function pointer with signature:
    -
    1176 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1177 * Fired when ACK is received or on failure/timeout.
    -
    1178 * @param userData Optional value passed to the callback.
    -
    1179 *
    -
    1180 * @returns true if the command was sent, false otherwise.
    -
    1181 *
    -
    1182 * @ingroup LD2410Async_AsyncCommands
    -
    1183 * @ingroup LD2410Async_Configuration
    -
    1184 * @ingroup LD2410Async_NativeCommands
    -
    1185 */
    -
    1186 bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData = 0);
    -
    1187
    -
    1188 /**
    -
    1189 * @brief Requests the current auxiliary control settings.
    -
    1190 *
    -
    1191 * Fills configData.lightControl, configData.lightThreshold,
    -
    1192 * and configData.outputControl.
    -
    1193 *
    -
    1194 * @note Requires config mode. Will be managed automatically.
    -
    1195 *
    -
    1196 * @param callback Function pointer with signature:
    -
    1197 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1198 * Fired when ACK is received or on failure/timeout.
    -
    1199 * @param userData Optional value passed to the callback.
    -
    1200 *
    -
    1201 * @returns true if the command was sent, false otherwise.
    -
    1202 *
    -
    1203 * @ingroup LD2410Async_AsyncCommands
    -
    1204 * @ingroup LD2410Async_Configuration
    -
    1205 * @ingroup LD2410Async_NativeCommands
    -
    1206 */
    -
    1207 bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1208
    -
    1209
    -
    1210 /**
    -
    1211 * @brief Starts the automatic configuration (auto-config) routine on the sensor.
    -
    1212 *
    -
    1213 * Auto-config lets the radar adjust its internal thresholds and
    -
    1214 * sensitivities for the current environment. This can take several
    -
    1215 * seconds to complete and results in updated sensitivity values.
    -
    1216 *
    -
    1217 * The progress and result can be checked with requestAutoConfigStatusAsync().
    -
    1218 *
    -
    1219 * @note Requires config mode. This method will manage entering and
    -
    1220 * exiting config mode automatically.
    -
    1221 * @note Auto-config temporarily suspends normal detection reporting.
    -
    1222 *
    -
    1223 * ## Example: Run auto-config
    -
    1224 * @code
    -
    1225 * radar.beginAutoConfigAsync([](LD2410Async* sender,
    -
    1226 * AsyncCommandResult result,
    -
    1227 * byte) {
    -
    1228 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1229 * Serial.println("Auto-config started.");
    -
    1230 * } else {
    -
    1231 * Serial.println("Failed to start auto-config.");
    -
    1232 * }
    -
    1233 * });
    -
    1234 * @endcode
    -
    1235 *
    -
    1236 * ## Do:
    -
    1237 * - Use in new environments to optimize detection performance.
    -
    1238 * - Query status afterwards with requestAutoConfigStatusAsync().
    +
    1145 */
    +
    1146 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1147
    +
    1148
    +
    1149
    +
    1150 /*---------------------------------------------------------------------------------
    +
    1151 - High level commands
    +
    1152 ---------------------------------------------------------------------------------*/
    +
    1153 // High level commands typically encapsulate several native commands.
    +
    1154 // They provide a more consistent access to the sensors configuration,
    +
    1155 // e.g. for reading all config data 3 native commands are necessary,
    +
    1156 // to update the same data up to 12 native commands may be required.
    +
    1157 //The highlevel commands encapsulate both situation into a single command
    +
    1158
    +
    1159 /**
    +
    1160 * @brief Requests all configuration settings from the sensor.
    +
    1161 *
    +
    1162 * This triggers a sequence of queries that retrieves and updates:
    +
    1163 * - Gate parameters (sensitivities, max gates, timeout).
    +
    1164 * - Distance resolution setting.
    +
    1165 * - Auxiliary light/output control settings.
    +
    1166 *
    +
    1167 * The results are stored in configData, and the
    +
    1168 * registerConfigUpdateReceivedCallback() is invoked after completion.
    +
    1169 *
    +
    1170 * @note This is a high-level method that involves multiple commands.
    +
    1171 * @note Requires config mode. This method will manage mode switching automatically.
    +
    1172 * @note If another async command is already pending, the request fails.
    +
    1173 *
    +
    1174 * ## Example: Refresh config data
    +
    1175 * @code
    +
    1176 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    +
    1177 * AsyncCommandResult result,
    +
    1178 * byte) {
    +
    1179 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1180 * Serial.println("All config data refreshed:");
    +
    1181 * sender->getConfigDataRef().print();
    +
    1182 * }
    +
    1183 * });
    +
    1184 * @endcode
    +
    1185 *
    +
    1186 * ## Do:
    +
    1187 * - Use this after connecting to ensure configData is fully populated.
    +
    1188 * - Call before modifying config if you’re unsure of current values.
    +
    1189 *
    +
    1190 * ## Don’t:
    +
    1191 * - Expect it to succeed if another async command is still running.
    +
    1192 *
    +
    1193 * @param callback Callback with signature:
    +
    1194 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1195 * Fired when all config data has been received or on failure.
    +
    1196 * @param userData Optional value passed to the callback.
    +
    1197 *
    +
    1198 * @returns true if the command was sent, false otherwise.
    +
    1199 *
    +
    1200 */
    +
    1201 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1202
    +
    1203
    +
    1204 /**
    +
    1205 * @brief Requests all static information from the sensor.
    +
    1206 *
    +
    1207 * This includes:
    +
    1208 * - Firmware version string.
    +
    1209 * - Bluetooth MAC address (numeric and string form).
    +
    1210 *
    +
    1211 * The values are written into the public members `firmware`, `mac`,
    +
    1212 * and `macString`.
    +
    1213 *
    +
    1214 * @note This is a high-level method that involves multiple commands.
    +
    1215 * @note Requires config mode. Managed automatically by this method.
    +
    1216 * @note If another async command is already pending, the request fails.
    +
    1217 *
    +
    1218 * ## Example: Retrieve firmware and MAC
    +
    1219 * @code
    +
    1220 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    +
    1221 * AsyncCommandResult result,
    +
    1222 * byte) {
    +
    1223 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1224 * Serial.print("Firmware: ");
    +
    1225 * Serial.println(sender->firmware);
    +
    1226 *
    +
    1227 * Serial.print("MAC: ");
    +
    1228 * Serial.println(sender->macString);
    +
    1229 * }
    +
    1230 * });
    +
    1231 * @endcode
    +
    1232 *
    +
    1233 * ## Do:
    +
    1234 * - Use after initialization to log firmware version and MAC.
    +
    1235 * - Useful for debugging or inventory identification.
    +
    1236 *
    +
    1237 * ## Don’t:
    +
    1238 * - Expect frequently changing data — this is static information.
    1239 *
    -
    1240 * ## Don’t:
    -
    1241 * - Expect instant results — the sensor needs time to complete the process.
    -
    1242 *
    -
    1243 * @param callback Callback with signature:
    -
    1244 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1245 * Fired when the command is acknowledged or on failure/timeout.
    -
    1246 * @param userData Optional value passed to the callback.
    -
    1247 *
    -
    1248 * @returns true if the command was sent, false otherwise.
    -
    1249 *
    -
    1250 * @ingroup LD2410Async_AsyncCommands
    -
    1251 * @ingroup LD2410Async_Configuration
    -
    1252 * @ingroup LD2410Async_NativeCommands
    -
    1253 */
    -
    1254 bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1255
    -
    1256
    -
    1257 /**
    -
    1258 * @brief Requests the current status of the auto-config routine.
    -
    1259 *
    -
    1260 * The status is written into the member variable autoConfigStatus:
    -
    1261 * - NOT_IN_PROGRESS → no auto-config running.
    -
    1262 * - IN_PROGRESS → auto-config is currently running.
    -
    1263 * - COMPLETED → auto-config finished (success or failure).
    -
    1264 *
    -
    1265 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1266 * @note If another async command is already pending, this call fails.
    +
    1240 * @param callback Callback with signature:
    +
    1241 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    +
    1242 * Fired when static data is received or on failure.
    +
    1243 * @param userData Optional value passed to the callback.
    +
    1244 *
    +
    1245 * @returns true if the command was sent, false otherwise.
    +
    1246 *
    +
    1247 */
    +
    1248 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1249
    +
    1250
    +
    1251
    +
    1252 /**
    +
    1253 * @brief Applies a full ConfigData struct to the LD2410.
    +
    1254 *
    +
    1255 * If writeAllConfigData is true, the method will first fetch the current config,
    +
    1256 * compare it with the provide Config data and then create a command sequence that
    +
    1257 * will only update the changes config values.
    +
    1258 * If writeAllConfigData is false, the method will write all values in the provided
    +
    1259 * ConfigData to the sensor, regardless of whether they differ from the current config.
    +
    1260 *
    +
    1261 * @note This is a high-level method that involves multiple commands (up to 18).
    +
    1262 * @note Requires config mode. This method will manage entering and
    +
    1263 * exiting config mode automatically (if config mode is not already active).
    +
    1264 * @note If another async command is already pending, the command fails.
    +
    1265 * @note Any members of ConfigData that are left at invalid values
    +
    1266 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    1267 *
    -
    1268 * ## Example: Check auto-config status
    +
    1268 * ## Example: Clone, modify, and apply config
    1269 * @code
    -
    1270 * radar.requestAutoConfigStatusAsync([](LD2410Async* sender,
    -
    1271 * AsyncCommandResult result,
    -
    1272 * byte) {
    -
    1273 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1274 * switch (sender->autoConfigStatus) {
    -
    1275 * case AutoConfigStatus::NOT_IN_PROGRESS:
    -
    1276 * Serial.println("Auto-config not running.");
    -
    1277 * break;
    -
    1278 * case AutoConfigStatus::IN_PROGRESS:
    -
    1279 * Serial.println("Auto-config in progress...");
    -
    1280 * break;
    -
    1281 * case AutoConfigStatus::COMPLETED:
    -
    1282 * Serial.println("Auto-config completed.");
    -
    1283 * break;
    -
    1284 * default:
    -
    1285 * Serial.println("Unknown auto-config status.");
    -
    1286 * }
    -
    1287 * } else {
    -
    1288 * Serial.println("Failed to request auto-config status.");
    -
    1289 * }
    -
    1290 * });
    -
    1291 * @endcode
    -
    1292 *
    -
    1293 * ## Do:
    -
    1294 * - Use this after beginAutoConfigAsync() to track progress.
    -
    1295 * - Use autoConfigStatus for decision-making in your logic.
    -
    1296 *
    -
    1297 * ## Don’t:
    -
    1298 * - Assume COMPLETED means success — thresholds should still be verified.
    -
    1299 *
    -
    1300 * @param callback Callback with signature:
    -
    1301 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1302 * Fired when the sensor replies or on failure/timeout.
    -
    1303 * @param userData Optional value passed to the callback.
    -
    1304 *
    -
    1305 * @returns true if the command was sent, false otherwise.
    -
    1306 *
    -
    1307 * @ingroup LD2410Async_AsyncCommands
    -
    1308 * @ingroup LD2410Async_Configuration
    -
    1309 * @ingroup LD2410Async_NativeCommands
    -
    1310 */
    -
    1311 bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1312
    -
    1313
    -
    1314
    -
    1315 /*---------------------------------------------------------------------------------
    -
    1316 - High level commands
    -
    1317 ---------------------------------------------------------------------------------*/
    -
    1318 // High level commands typically encapsulate several native commands.
    -
    1319 // They provide a more consistent access to the sensors configuration,
    -
    1320 // e.g. for reading all config data 3 native commands are necessary,
    -
    1321 // to update the same data up to 12 native commands may be required.
    -
    1322 //The highlevel commands encapsulate both situation into a single command
    -
    1323
    -
    1324 /**
    -
    1325 * @brief Requests all configuration settings from the sensor.
    -
    1326 *
    -
    1327 * This triggers a sequence of queries that retrieves and updates:
    -
    1328 * - Gate parameters (sensitivities, max gates, timeout).
    -
    1329 * - Distance resolution setting.
    -
    1330 * - Auxiliary light/output control settings.
    -
    1331 *
    -
    1332 * The results are stored in configData, and the
    -
    1333 * registerConfigUpdateReceivedCallback() is invoked after completion.
    -
    1334 *
    -
    1335 * @note This is a high-level method that involves multiple commands.
    -
    1336 * @note Requires config mode. This method will manage mode switching automatically.
    -
    1337 * @note If another async command is already pending, the request fails.
    -
    1338 *
    -
    1339 * ## Example: Refresh config data
    -
    1340 * @code
    -
    1341 * radar.requestAllConfigSettingsAsync([](LD2410Async* sender,
    -
    1342 * AsyncCommandResult result,
    -
    1343 * byte) {
    -
    1344 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1345 * Serial.println("All config data refreshed:");
    -
    1346 * sender->getConfigDataRef().print();
    -
    1347 * }
    -
    1348 * });
    -
    1349 * @endcode
    -
    1350 *
    -
    1351 * ## Do:
    -
    1352 * - Use this after connecting to ensure configData is fully populated.
    -
    1353 * - Call before modifying config if you’re unsure of current values.
    -
    1354 *
    -
    1355 * ## Don’t:
    -
    1356 * - Expect it to succeed if another async command is still running.
    -
    1357 *
    -
    1358 * @param callback Callback with signature:
    -
    1359 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1360 * Fired when all config data has been received or on failure.
    -
    1361 * @param userData Optional value passed to the callback.
    -
    1362 *
    -
    1363 * @returns true if the command was sent, false otherwise.
    -
    1364 *
    -
    1365 * @ingroup LD2410Async_AsyncCommands
    -
    1366 * @ingroup LD2410Async_Configuration
    -
    1367 * @ingroup LD2410Async_HighLevelCommands
    -
    1368 */
    -
    1369 bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1370
    -
    1371
    -
    1372 /**
    -
    1373 * @brief Requests all static information from the sensor.
    -
    1374 *
    -
    1375 * This includes:
    -
    1376 * - Firmware version string.
    -
    1377 * - Bluetooth MAC address (numeric and string form).
    -
    1378 *
    -
    1379 * The values are written into the public members `firmware`, `mac`,
    -
    1380 * and `macString`.
    -
    1381 *
    -
    1382 * @note This is a high-level method that involves multiple commands.
    -
    1383 * @note Requires config mode. Managed automatically by this method.
    -
    1384 * @note If another async command is already pending, the request fails.
    -
    1385 *
    -
    1386 * ## Example: Retrieve firmware and MAC
    -
    1387 * @code
    -
    1388 * radar.requestAllStaticDataAsync([](LD2410Async* sender,
    -
    1389 * AsyncCommandResult result,
    -
    1390 * byte) {
    -
    1391 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1392 * Serial.print("Firmware: ");
    -
    1393 * Serial.println(sender->firmware);
    -
    1394 *
    -
    1395 * Serial.print("MAC: ");
    -
    1396 * Serial.println(sender->macString);
    -
    1397 * }
    -
    1398 * });
    -
    1399 * @endcode
    -
    1400 *
    -
    1401 * ## Do:
    -
    1402 * - Use after initialization to log firmware version and MAC.
    -
    1403 * - Useful for debugging or inventory identification.
    -
    1404 *
    -
    1405 * ## Don’t:
    -
    1406 * - Expect frequently changing data — this is static information.
    -
    1407 *
    -
    1408 * @param callback Callback with signature:
    -
    1409 * void(LD2410Async* sender, AsyncCommandResult result, byte userData).
    -
    1410 * Fired when static data is received or on failure.
    -
    1411 * @param userData Optional value passed to the callback.
    -
    1412 *
    -
    1413 * @returns true if the command was sent, false otherwise.
    -
    1414 *
    -
    1415 * @ingroup LD2410Async_AsyncCommands
    -
    1416 * @ingroup LD2410Async_StaticData
    -
    1417 * @ingroup LD2410Async_HighLevelCommands
    -
    1418 */
    -
    1419 bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1420
    -
    1421
    +
    1270 * ConfigData cfg = radar.getConfigData(); // clone current config
    +
    1271 * cfg.noOneTimeout = 120; // change timeout
    +
    1272 * cfg.distanceGateMotionSensitivity[2] = 75;
    +
    1273 *
    +
    1274 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    +
    1275 * AsyncCommandResult result,
    +
    1276 * byte) {
    +
    1277 * if (result == AsyncCommandResult::SUCCESS) {
    +
    1278 * Serial.println("All config applied successfully!");
    +
    1279 * }
    +
    1280 * });
    +
    1281 * @endcode
    +
    1282 *
    +
    1283 * ## Do:
    +
    1284 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    +
    1285 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    +
    1286 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    +
    1287 *
    +
    1288 * ## Don’t:
    +
    1289 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    +
    1290 * This generates unnecessary wear on the sensors memory.
    +
    1291 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    +
    1292
    +
    1293 *
    +
    1294 * @param configToWrite The configuration data to be applied.
    +
    1295 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    +
    1296 * @param callback Function with signature:
    +
    1297 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    +
    1298 * executed when the sequence finishes (success/fail/timeout/cancel).
    +
    1299 * @param userData Optional value passed to the callback.
    +
    1300 *
    +
    1301 * @returns true if the command sequence has been started, false otherwise.
    +
    1302 *
    +
    1303 */
    +
    1304 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    +
    1305
    +
    1306
    +
    1307
    +
    1308 private:
    +
    1309 // ============================================================================
    +
    1310 // Low-level serial interface
    +
    1311 // ============================================================================
    +
    1312
    +
    1313 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    +
    1314 Stream* sensor;
    +
    1315
    +
    1316
    +
    1317 // ============================================================================
    +
    1318 // Frame parsing state machine
    +
    1319 // ============================================================================
    +
    1320
    +
    1321 /// States used when parsing incoming frames from the sensor
    +
    1322 enum ReadFrameState {
    +
    1323 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    +
    1324 ACK_HEADER, ///< Parsing header of an ACK frame
    +
    1325 DATA_HEADER, ///< Parsing header of a DATA frame
    +
    1326 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    +
    1327 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    +
    1328 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    +
    1329 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    +
    1330 };
    +
    1331
    +
    1332 /// Result type when trying to read a frame
    +
    1333 enum FrameReadResponse {
    +
    1334 FAIL = 0, ///< Frame was invalid or incomplete
    +
    1335 ACK, ///< A valid ACK frame was received
    +
    1336 DATA ///< A valid DATA frame was received
    +
    1337 };
    +
    1338
    +
    1339 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    +
    1340 int payloadSize = 0; ///< Expected payload size of current frame
    +
    1341 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    +
    1342
    +
    1343 /// Extract payload size from the current byte and update state machine
    +
    1344 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    +
    1345
    +
    1346 /// Read payload bytes until full ACK/DATA frame is assembled
    +
    1347 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    +
    1348
    +
    1349 /// State machine entry: read incoming frame and return read response
    +
    1350 FrameReadResponse readFrame();
    +
    1351
    +
    1352
    +
    1353 // ============================================================================
    +
    1354 // Receive buffer
    +
    1355 // ============================================================================
    +
    1356
    +
    1357 /// Raw buffer for storing incoming bytes
    +
    1358 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    +
    1359
    +
    1360 /// Current index into receiveBuffer
    +
    1361 byte receiveBufferIndex = 0;
    +
    1362
    +
    1363
    +
    1364 // ============================================================================
    +
    1365 // Asynchronous command sequence handling
    +
    1366 // ============================================================================
    +
    1367
    +
    1368 /// Maximum number of commands in one async sequence
    +
    1369 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    +
    1370
    +
    1371 /// Buffer holding queued commands for sequence execution
    +
    1372 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    +
    1373
    +
    1374 /// Number of commands currently queued in the sequence buffer
    +
    1375 byte commandSequenceBufferCount = 0;
    +
    1376
    +
    1377 /// Timestamp when the current async sequence started
    +
    1378 unsigned long executeCommandSequenceStartMs = 0;
    +
    1379
    +
    1380 /// Callback for current async sequence
    +
    1381 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    +
    1382
    +
    1383 /// User-provided data passed to async sequence callback
    +
    1384 byte executeCommandSequenceUserData = 0;
    +
    1385
    +
    1386 /// True if an async sequence is currently pending.
    +
    1387 bool executeCommandSequenceActive = false;
    +
    1388
    +
    1389 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    +
    1390 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    +
    1391 Ticker executeCommandSequenceOnceTicker;
    +
    1392
    +
    1393 /// Index of currently active command in the sequence buffer
    +
    1394 int executeCommandSequenceIndex = 0;
    +
    1395
    +
    1396 /// Stores config mode state before sequence started (to restore later)
    +
    1397 bool executeCommandSequenceInitialConfigModeState = false;
    +
    1398
    +
    1399 /// Finalize an async sequence and invoke its callback
    +
    1400 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1401
    +
    1402 /// Final step of an async sequence: restore config mode if needed and call callback
    +
    1403 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1404
    +
    1405 /// Internal callbacks for sequence steps
    +
    1406 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1407 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1408
    +
    1409 /// Start executing an async sequence
    +
    1410 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    +
    1411
    +
    1412 /// Add one command to the sequence buffer
    +
    1413 bool addCommandToSequence(const byte* command);
    +
    1414
    +
    1415 /// Reset sequence buffer to empty
    +
    1416 bool resetCommandSequence();
    +
    1417
    +
    1418
    +
    1419 // ============================================================================
    +
    1420 // Inactivity handling
    +
    1421 // ============================================================================
    1422
    -
    1423 /**
    -
    1424 * @brief Applies a full ConfigData struct to the LD2410.
    -
    1425 *
    -
    1426 * If writeAllConfigData is true, the method will first fetch the current config,
    -
    1427 * compare it with the provide Config data and then create a command sequence that
    -
    1428 * will only update the changes config values.
    -
    1429 * If writeAllConfigData is false, the method will write all values in the provided
    -
    1430 * ConfigData to the sensor, regardless of whether they differ from the current config.
    -
    1431 *
    -
    1432 * @note This is a high-level method that involves multiple commands (up to 18).
    -
    1433 * @note Requires config mode. This method will manage entering and
    -
    1434 * exiting config mode automatically (if config mode is not already active).
    -
    1435 * @note If another async command is already pending, the command fails.
    -
    1436 * @note Any members of ConfigData that are left at invalid values
    -
    1437 * (e.g. enums set to NOT_SET) will cause the sequence to fail.
    -
    1438 *
    -
    1439 * ## Example: Clone, modify, and apply config
    -
    1440 * @code
    -
    1441 * ConfigData cfg = radar.getConfigData(); // clone current config
    -
    1442 * cfg.noOneTimeout = 120; // change timeout
    -
    1443 * cfg.distanceGateMotionSensitivity[2] = 75;
    -
    1444 *
    -
    1445 * radar.configureAllConfigSettingsAsync(cfg, [](LD2410Async* sender,
    -
    1446 * AsyncCommandResult result,
    -
    1447 * byte) {
    -
    1448 * if (result == AsyncCommandResult::SUCCESS) {
    -
    1449 * Serial.println("All config applied successfully!");
    -
    1450 * }
    -
    1451 * });
    -
    1452 * @endcode
    -
    1453 *
    -
    1454 * ## Do:
    -
    1455 * - Always start from a clone of getConfigData() to avoid settings unwanted values for settings that dont need to change.
    -
    1456 * - If the methods callback does not report SUCCESS, any portion of the config might have been written to the sensor or the sensor might has remained in config mode.
    -
    1457 * Make sure to take appropriate measures to return the sensor to normal operaion mode if required (reboot usually does the trick) and check the config values, if they are what you need.
    -
    1458 *
    -
    1459 * ## Don’t:
    -
    1460 * - Dont write all config data (writeAllConfigData=true) if not really necessary.
    -
    1461 * This generates unnecessary wear on the sensors memory.
    -
    1462 * - Pass uninitialized or partially filled ConfigData (may fail or result in unwanted settings)
    -
    1463
    -
    1464 *
    -
    1465 * @param configToWrite The configuration data to be applied.
    -
    1466 * @param writeAllConfigData If true, all fields in configToWrite are applied. If false, changed values are written.
    -
    1467 * @param callback Function with signature:
    -
    1468 * void(LD2410Async* sender, AsyncCommandResult result, byte userData),
    -
    1469 * executed when the sequence finishes (success/fail/timeout/cancel).
    -
    1470 * @param userData Optional value passed to the callback.
    -
    1471 *
    -
    1472 * @returns true if the command sequence has been started, false otherwise.
    -
    1473 *
    -
    1474 * @ingroup LD2410Async_AsyncCommands
    -
    1475 * @ingroup LD2410Async_StaticData
    -
    1476 * @ingroup LD2410Async_HighLevelCommands
    -
    1477 */
    -
    1478 bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData& configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData = 0);
    -
    1479
    -
    1480
    -
    1481
    -
    1482 private:
    -
    1483 // ============================================================================
    -
    1484 // Low-level serial interface
    -
    1485 // ============================================================================
    -
    1486
    -
    1487 /// Pointer to the Serial/Stream object connected to the LD2410 sensor
    -
    1488 Stream* sensor;
    -
    1489
    +
    1423 /// Update last-activity timestamp ("I am alive" signal)
    +
    1424 void heartbeat();
    +
    1425
    +
    1426 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    +
    1427 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    +
    1428 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    +
    1429 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    +
    1430
    +
    1431 /// Main inactivity handler: exit config mode or reboot if stuck
    +
    1432 void handleInactivity();
    +
    1433
    +
    1434 /// Callback for reboot triggered by inactivity handler
    +
    1435 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1436
    +
    1437 /// Callback for disabling config mode during inactivity recovery
    +
    1438 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1439
    +
    1440
    +
    1441 // ============================================================================
    +
    1442 // Reboot handling
    +
    1443 // ============================================================================
    +
    1444
    +
    1445 /// Step 1: Enter config mode before reboot
    +
    1446 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1447
    +
    1448 /// Step 2: Issue reboot command
    +
    1449 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    +
    1450
    +
    1451
    +
    1452 // ============================================================================
    +
    1453 // ACK/DATA processing
    +
    1454 // ============================================================================
    +
    1455
    +
    1456 /// Process a received ACK frame
    +
    1457 bool processAck();
    +
    1458
    +
    1459 /// Process a received DATA frame
    +
    1460 bool processData();
    +
    1461
    +
    1462
    +
    1463 // ============================================================================
    +
    1464 // Callbacks
    +
    1465 // ============================================================================
    +
    1466
    +
    1467 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    +
    1468 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    +
    1469 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    +
    1470
    +
    1471 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    +
    1472 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    +
    1473 void executeConfigChangedCallback(); ///< Execute config-changed callback
    +
    1474
    +
    1475 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    +
    1476 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    +
    1477
    +
    1478
    +
    1479 // ============================================================================
    +
    1480 // Command sending
    +
    1481 // ============================================================================
    +
    1482
    +
    1483 /// Send raw command bytes to the sensor
    +
    1484 void sendCommand(const byte* command);
    +
    1485
    +
    1486
    +
    1487 // ============================================================================
    +
    1488 // FreeRTOS task management
    +
    1489 // ============================================================================
    1490
    -
    1491 // ============================================================================
    -
    1492 // Frame parsing state machine
    -
    1493 // ============================================================================
    -
    1494
    -
    1495 /// States used when parsing incoming frames from the sensor
    -
    1496 enum ReadFrameState {
    -
    1497 WAITING_FOR_HEADER, ///< Waiting for frame header sequence
    -
    1498 ACK_HEADER, ///< Parsing header of an ACK frame
    -
    1499 DATA_HEADER, ///< Parsing header of a DATA frame
    -
    1500 READ_ACK_SIZE, ///< Reading payload size field of an ACK frame
    -
    1501 READ_DATA_SIZE, ///< Reading payload size field of a DATA frame
    -
    1502 READ_ACK_PAYLOAD, ///< Reading payload content of an ACK frame
    -
    1503 READ_DATA_PAYLOAD ///< Reading payload content of a DATA frame
    -
    1504 };
    +
    1491 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    +
    1492 bool taskStop = false; ///< Stop flag for task loop
    +
    1493 void taskLoop(); ///< Background task loop for reading data
    +
    1494
    +
    1495
    +
    1496 // ============================================================================
    +
    1497 // Async command handling
    +
    1498 // ============================================================================
    +
    1499
    +
    1500 ///< Timeout for async commands in ms (default 6000).
    +
    1501 unsigned long asyncCommandTimeoutMs = 6000;
    +
    1502
    +
    1503 /// Send a generic async command
    +
    1504 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    1505
    -
    1506 /// Result type when trying to read a frame
    -
    1507 enum FrameReadResponse {
    -
    1508 FAIL = 0, ///< Frame was invalid or incomplete
    -
    1509 ACK, ///< A valid ACK frame was received
    -
    1510 DATA ///< A valid DATA frame was received
    -
    1511 };
    -
    1512
    -
    1513 int readFrameHeaderIndex = 0; ///< Current index while matching the frame header
    -
    1514 int payloadSize = 0; ///< Expected payload size of current frame
    -
    1515 ReadFrameState readFrameState = ReadFrameState::WAITING_FOR_HEADER; ///< Current frame parsing state
    -
    1516
    -
    1517 /// Extract payload size from the current byte and update state machine
    -
    1518 bool readFramePayloadSize(byte b, ReadFrameState nextReadFrameState);
    -
    1519
    -
    1520 /// Read payload bytes until full ACK/DATA frame is assembled
    -
    1521 FrameReadResponse readFramePayload(byte b, const byte* tailPattern, LD2410Async::FrameReadResponse succesResponseType);
    -
    1522
    -
    1523 /// State machine entry: read incoming frame and return read response
    -
    1524 FrameReadResponse readFrame();
    -
    1525
    -
    1526
    -
    1527 // ============================================================================
    -
    1528 // Receive buffer
    -
    1529 // ============================================================================
    -
    1530
    -
    1531 /// Raw buffer for storing incoming bytes
    -
    1532 byte receiveBuffer[LD2410Defs::LD2410_Buffer_Size];
    -
    1533
    -
    1534 /// Current index into receiveBuffer
    -
    1535 byte receiveBufferIndex = 0;
    +
    1506 /// Invoke async command callback with result
    +
    1507 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    +
    1508
    +
    1509
    +
    1510
    +
    1511 /// Handle async command timeout
    +
    1512 void handleAsyncCommandCallbackTimeout();
    +
    1513
    +
    1514 /// Send async command that modifies configuration
    +
    1515 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    +
    1516
    +
    1517 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    +
    1518 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    +
    1519 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    +
    1520 byte asyncCommandCommandCode = 0; ///< Last command code issued
    +
    1521 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    +
    1522
    +
    1523
    +
    1524 // ============================================================================
    +
    1525 // Data processing
    +
    1526 // ============================================================================
    +
    1527
    +
    1528 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    +
    1529 void processReceivedData();
    +
    1530
    +
    1531 // ============================================================================
    +
    1532 // Config mode
    +
    1533 // ============================================================================
    +
    1534 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    +
    1535 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    1536
    -
    1537
    -
    1538 // ============================================================================
    -
    1539 // Asynchronous command sequence handling
    -
    1540 // ============================================================================
    -
    1541
    -
    1542 /// Maximum number of commands in one async sequence
    -
    1543 static constexpr size_t MAX_COMMAND_SEQUENCE_LENGTH = 15;
    -
    1544
    -
    1545 /// Buffer holding queued commands for sequence execution
    -
    1546 byte commandSequenceBuffer[MAX_COMMAND_SEQUENCE_LENGTH][LD2410Defs::LD2410_Buffer_Size];
    -
    1547
    -
    1548 /// Number of commands currently queued in the sequence buffer
    -
    1549 byte commandSequenceBufferCount = 0;
    -
    1550
    -
    1551 /// Timestamp when the current async sequence started
    -
    1552 unsigned long executeCommandSequenceStartMs = 0;
    -
    1553
    -
    1554 /// Callback for current async sequence
    -
    1555 AsyncCommandCallback executeCommandSequenceCallback = nullptr;
    -
    1556
    -
    1557 /// User-provided data passed to async sequence callback
    -
    1558 byte executeCommandSequenceUserData = 0;
    -
    1559
    -
    1560 /// True if an async sequence is currently pending.
    -
    1561 bool executeCommandSequenceActive = false;
    -
    1562
    -
    1563 /// Ticker used for small delay before firing the commandsequence callback when the command sequence is empty.
    -
    1564 /// This ensures that the callback is always called asynchronously and never directly from the calling context.
    -
    1565 Ticker executeCommandSequenceOnceTicker;
    -
    1566
    -
    1567 /// Index of currently active command in the sequence buffer
    -
    1568 int executeCommandSequenceIndex = 0;
    -
    1569
    -
    1570 /// Stores config mode state before sequence started (to restore later)
    -
    1571 bool executeCommandSequenceInitialConfigModeState = false;
    -
    1572
    -
    1573 /// Finalize an async sequence and invoke its callback
    -
    1574 void executeCommandSequenceAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1575
    -
    1576 /// Final step of an async sequence: restore config mode if needed and call callback
    -
    1577 void executeCommandSequenceAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1578
    -
    1579 /// Internal callbacks for sequence steps
    -
    1580 static void executeCommandSequenceAsyncDisableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1581 static void executeCommandSequenceAsyncCommandCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1582
    -
    1583 /// Start executing an async sequence
    -
    1584 bool executeCommandSequenceAsync(AsyncCommandCallback callback, byte userData = 0);
    -
    1585
    -
    1586 /// Add one command to the sequence buffer
    -
    1587 bool addCommandToSequence(const byte* command);
    -
    1588
    -
    1589 /// Reset sequence buffer to empty
    -
    1590 bool resetCommandSequence();
    -
    1591
    -
    1592
    -
    1593 // ============================================================================
    -
    1594 // Inactivity handling
    -
    1595 // ============================================================================
    -
    1596
    -
    1597 /// Update last-activity timestamp ("I am alive" signal)
    -
    1598 void heartbeat();
    -
    1599
    -
    1600 bool inactivityHandlingEnabled = true; ///< Whether automatic inactivity handling is active
    -
    1601 unsigned long inactivityHandlingTimeoutMs = 60000; ///< Timeout until recovery action is triggered (ms)
    -
    1602 unsigned long lastActivityMs = 0; ///< Timestamp of last received activity
    -
    1603 bool handleInactivityExitConfigModeDone = false; ///< Flag to avoid repeating config-mode exit
    -
    1604
    -
    1605 /// Main inactivity handler: exit config mode or reboot if stuck
    -
    1606 void handleInactivity();
    -
    1607
    -
    1608 /// Callback for reboot triggered by inactivity handler
    -
    1609 static void handleInactivityRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1610
    -
    1611 /// Callback for disabling config mode during inactivity recovery
    -
    1612 static void handleInactivityDisableConfigmodeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1613
    -
    1614
    -
    1615 // ============================================================================
    -
    1616 // Reboot handling
    -
    1617 // ============================================================================
    -
    1618
    -
    1619 /// Step 1: Enter config mode before reboot
    -
    1620 static void rebootEnableConfigModeCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1621
    -
    1622 /// Step 2: Issue reboot command
    -
    1623 static void rebootRebootCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData = 0);
    -
    1624
    -
    1625
    -
    1626 // ============================================================================
    -
    1627 // ACK/DATA processing
    -
    1628 // ============================================================================
    -
    1629
    -
    1630 /// Process a received ACK frame
    -
    1631 bool processAck();
    -
    1632
    -
    1633 /// Process a received DATA frame
    -
    1634 bool processData();
    -
    1635
    -
    1636
    -
    1637 // ============================================================================
    -
    1638 // Callbacks
    -
    1639 // ============================================================================
    -
    1640
    -
    1641 GenericCallback configUpdateReceivedReceivedCallback = nullptr; ///< Callback for new config data received
    -
    1642 byte configUpdateReceivedReceivedCallbackUserData = 0; ///< UserData for config-update callback
    -
    1643 void executeConfigUpdateReceivedCallback(); ///< Execute config-update callback
    -
    1644
    -
    1645 GenericCallback configChangedCallback = nullptr; ///< Callback for successful config change
    -
    1646 byte configChangedCallbackUserData = 0; ///< UserData for config-changed callback
    -
    1647 void executeConfigChangedCallback(); ///< Execute config-changed callback
    -
    1648
    -
    1649 DetectionDataCallback detectionDataCallback = nullptr; ///< Callback for new detection data
    -
    1650 byte detectionDataCallbackUserData = 0; ///< UserData for detection-data callback
    -
    1651
    -
    1652
    -
    1653 // ============================================================================
    -
    1654 // Command sending
    -
    1655 // ============================================================================
    -
    1656
    -
    1657 /// Send raw command bytes to the sensor
    -
    1658 void sendCommand(const byte* command);
    -
    1659
    -
    1660
    -
    1661 // ============================================================================
    -
    1662 // FreeRTOS task management
    -
    1663 // ============================================================================
    -
    1664
    -
    1665 TaskHandle_t taskHandle = NULL; ///< Handle to FreeRTOS background task
    -
    1666 bool taskStop = false; ///< Stop flag for task loop
    -
    1667 void taskLoop(); ///< Background task loop for reading data
    -
    1668
    -
    1669
    -
    1670 // ============================================================================
    -
    1671 // Async command handling
    -
    1672 // ============================================================================
    -
    1673
    -
    1674 ///< Timeout for async commands in ms (default 6000).
    -
    1675 unsigned long asyncCommandTimeoutMs = 6000;
    -
    1676
    -
    1677 /// Send a generic async command
    -
    1678 bool sendCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    -
    1679
    -
    1680 /// Invoke async command callback with result
    -
    1681 void executeAsyncCommandCallback(byte commandCode, LD2410Async::AsyncCommandResult result);
    -
    1682
    -
    1683
    -
    1684
    -
    1685 /// Handle async command timeout
    -
    1686 void handleAsyncCommandCallbackTimeout();
    -
    1687
    -
    1688 /// Send async command that modifies configuration
    -
    1689 bool sendConfigCommandAsync(const byte* command, AsyncCommandCallback callback, byte userData = 0);
    -
    1690
    -
    1691 AsyncCommandCallback asyncCommandCallback = nullptr; ///< Current async command callback
    -
    1692 byte asyncCommandCallbackUserData = 0; ///< UserData for current async command
    -
    1693 unsigned long asyncCommandStartMs = 0; ///< Timestamp when async command started
    -
    1694 byte asyncCommandCommandCode = 0; ///< Last command code issued
    -
    1695 bool asyncCommandActive = false; ///< True if an async command is currently pending.
    -
    1696
    -
    1697
    -
    1698 // ============================================================================
    -
    1699 // Data processing
    -
    1700 // ============================================================================
    -
    1701
    -
    1702 /// Main dispatcher: process incoming bytes into frames, update state, trigger callbacks
    -
    1703 void processReceivedData();
    -
    1704
    -
    1705 // ============================================================================
    -
    1706 // Config mode
    -
    1707 // ============================================================================
    -
    1708 bool enableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1709 bool disableConfigModeInternalAsync(AsyncCommandCallback callback, byte userData);
    -
    1710
    -
    1711 // ============================================================================
    -
    1712 // Config writing
    -
    1713 // ============================================================================
    -
    1714 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    -
    1715 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    -
    1716 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    -
    1717 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    -
    1718 bool configureAllConfigSettingsAsyncConfigActive = false;
    -
    1719 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    -
    1720 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    -
    1721
    -
    1722 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    -
    1723 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1724 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    -
    1725 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1726 bool configureAllConfigSettingsAsyncWriteConfig();
    -
    1727 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1728 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    -
    1729 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    -
    1730
    -
    1731 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    -
    1732
    -
    1733};
    +
    1537 // ============================================================================
    +
    1538 // Config writing
    +
    1539 // ============================================================================
    +
    1540 LD2410Types::ConfigData configureAllConfigSettingsAsyncConfigDataToWrite;
    +
    1541 bool configureAllConfigSettingsAsyncWriteFullConfig = false;
    +
    1542 AsyncCommandCallback configureAllConfigSettingsAsyncConfigCallback = nullptr;
    +
    1543 byte configureAllConfigSettingsAsyncConfigUserData = 0;
    +
    1544 bool configureAllConfigSettingsAsyncConfigActive = false;
    +
    1545 bool configureAllConfigSettingsAsyncConfigInitialConfigMode = false;
    +
    1546 AsyncCommandResult configureAllConfigSettingsAsyncResultToReport = LD2410Async::AsyncCommandResult::SUCCESS;
    +
    1547
    +
    1548 void configureAllConfigSettingsAsyncExecuteCallback(LD2410Async::AsyncCommandResult result);
    +
    1549 static void configureAllConfigSettingsAsyncConfigModeDisabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1550 void configureAllConfigSettingsAsyncFinalize(LD2410Async::AsyncCommandResult resultToReport);
    +
    1551 static void configureAllConfigSettingsAsyncWriteConfigCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1552 bool configureAllConfigSettingsAsyncWriteConfig();
    +
    1553 static void configureAllConfigSettingsAsyncRequestAllConfigDataCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1554 bool configureAllConfigSettingsAsyncRequestAllConfigData();
    +
    1555 static void configureAllConfigSettingsAsyncConfigModeEnabledCallback(LD2410Async* sender, LD2410Async::AsyncCommandResult result, byte userData);
    +
    1556
    +
    1557 bool configureAllConfigSettingsAsyncBuildSaveChangesCommandSequence();
    +
    1558
    +
    1559};
    -
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    -
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    -
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    -
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    -
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    bool configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 20 cm per gate.
    +
    void asyncCancel()
    Cancels any pending asynchronous command or sequence.
    +
    void setInactivityTimeoutMs(unsigned long timeoutMs)
    Sets the timeout period for inactivity handling.
    +
    bool configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)
    Configures the maximum detection gates and "no-one" timeout on the sensor.
    +
    LD2410Types::StaticData staticData
    Static data of the radar.
    +
    bool begin()
    Starts the background task that continuously reads data from the sensor.
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:97
    @ TIMEOUT
    No ACK received within the expected time window.
    @ FAILED
    Command failed (sensor responded with negative ACK).
    @ SUCCESS
    Command completed successfully and ACK was received.
    @ CANCELED
    Command was canceled by the user before completion.
    -
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    -
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    -
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    -
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    -
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    -
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    -
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    -
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    -
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    -
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    -
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    -
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    -
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    -
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    -
    String firmware
    Firmware version string of the radar.
    +
    void(*) DetectionDataCallback(LD2410Async *sender, bool presenceDetected, byte userData)
    Callback type for receiving detection data events.
    +
    bool configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)
    Configures sensitivity thresholds for all gates at once.
    +
    bool isConfigModeEnabled() const
    Detects if config mode is enabled.
    +
    bool requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current distance resolution setting from the sensor.
    +
    bool disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables engineering mode.
    +
    bool requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the bluetooth mac address.
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +
    void enableInactivityHandling()
    Convenience method: enables inactivity handling.
    +
    bool configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution explicitly to 75 cm per gate.
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +
    bool configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)
    Applies a full ConfigData struct to the LD2410.
    +
    LD2410Types::ConfigData getConfigData() const
    Returns a clone of the current configuration data of the radar.
    +
    LD2410Types::DetectionData getDetectionData() const
    Returns a clone of the latest detection data from the radar.
    +
    void setAsyncCommandTimeoutMs(unsigned long timeoutMs)
    Sets the timeout for async command callbacks.
    +
    bool requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the firmware version of the sensor.
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +
    void disableInactivityHandling()
    Convenience method: disables inactivity handling.
    void registerConfigChangedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration changes.
    -
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    -
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    -
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    -
    byte mac[6]
    MAC address of the radar’s Bluetooth module (if available).
    -
    String macString
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    -
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    -
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    -
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    -
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    -
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    -
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    -
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    -
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    -
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    -
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    -
    unsigned long bufferSize
    Buffer size reported by the radar protocol.
    -
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    -
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    -
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    +
    bool asyncIsBusy()
    Checks if an asynchronous command is currently pending.
    +
    unsigned long getInactivityTimeoutMs() const
    Returns the current inactivity timeout period.
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +
    void(*) GenericCallback(LD2410Async *sender, byte userData)
    Generic callback signature used for simple notifications.
    +
    bool requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all static information from the sensor.
    +
    bool configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)
    Configures the auxiliary control parameters (light and output pin).
    +
    unsigned long getAsyncCommandTimeoutMs() const
    Returns the current async command timeout.
    +
    bool disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Disables config mode on the radar.
    +
    bool enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Enables bluetooth.
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +
    LD2410Types::AutoConfigStatus autoConfigStatus
    Current status of the auto-configuration routine.
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +
    bool restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Restores factory settings of the sensor.
    +
    bool requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests all configuration settings from the sensor.
    +
    bool configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)
    Resets the password for bluetooth access to the default value (HiLink)
    +
    LD2410Async(Stream &serial)
    Constructs a new LD2410Async instance bound to a given serial stream.
    +
    bool requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current status of the auto-config routine.
    +
    bool enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables config mode on the radar.
    +
    bool isEngineeringModeEnabled() const
    Detects if engineering mode is enabled.
    void registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)
    Registers a callback for configuration data updates.
    -
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    -
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    -
    unsigned long protocolVersion
    Protocol version reported by the radar.
    -
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    -
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    -
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    -
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    -
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    -
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    -
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    +
    bool enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)
    Enables engineering mode.
    +
    bool requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current gate parameters from the sensor.
    +
    void(*) AsyncCommandCallback(LD2410Async *sender, AsyncCommandResult result, byte userData)
    Callback signature for asynchronous command completion.
    +
    bool isInactivityHandlingEnabled() const
    Returns whether inactivity handling is currently enabled.
    +
    bool disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)
    Disables bluetooth.
    +
    const LD2410Types::DetectionData & getDetectionDataRef() const
    Access the current detection data without making a copy.
    +
    bool configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)
    Configures the distance resolution of the radar.
    +
    bool rebootAsync(AsyncCommandCallback callback, byte userData=0)
    Reboots the sensor.
    +
    bool beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)
    Starts the automatic configuration (auto-config) routine on the sensor.
    void registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)
    Registers a callback for new detection data.
    -
    bool end()
    Stops the background task started by begin().
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    +
    bool end()
    Stops the background task started by begin().
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    bool requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)
    Requests the current auxiliary control settings.
    constexpr size_t LD2410_Buffer_Size
    Definition LD2410Defs.h:11
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    @ NOT_SET
    Status not yet retrieved.
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    -
    DistanceResolution
    Distance resolution per gate for detection.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    -
    Stores the sensor’s configuration parameters.
    -
    Holds the most recent detection data reported by the radar.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:93
    +
    Stores the sensor’s configuration parameters.
    +
    Holds the most recent detection data reported by the radar.
    +
    diff --git a/docu/LD2410CommandBuilder_8h_source.html b/docu/LD2410CommandBuilder_8h_source.html index d8469ac..94b668f 100644 --- a/docu/LD2410CommandBuilder_8h_source.html +++ b/docu/LD2410CommandBuilder_8h_source.html @@ -232,12 +232,12 @@
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    -
    DistanceResolution
    Distance resolution per gate for detection.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:93
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    diff --git a/docu/LD2410Types_8h.html b/docu/LD2410Types_8h.html index 3ef0a90..9a77d76 100644 --- a/docu/LD2410Types_8h.html +++ b/docu/LD2410Types_8h.html @@ -116,6 +116,8 @@ struct  LD2410Types::ConfigData  Stores the sensor’s configuration parameters. More...
      +struct  LD2410Types::StaticData +  diff --git a/docu/LD2410Types_8h.js b/docu/LD2410Types_8h.js index fb70ba4..920ff72 100644 --- a/docu/LD2410Types_8h.js +++ b/docu/LD2410Types_8h.js @@ -2,6 +2,7 @@ var LD2410Types_8h = [ [ "LD2410Types::DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], [ "LD2410Types::ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], + [ "LD2410Types::StaticData", "structLD2410Types_1_1StaticData.html", "structLD2410Types_1_1StaticData" ], [ "AutoConfigStatus", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995", [ [ "NOT_SET", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995a1c250a21210b7b88a14db9a0cbe71162", null ], [ "NOT_IN_PROGRESS", "LD2410Types_8h.html#a035762090f81b93ab2008c3a8d37e995ae5c386bd6bfc609aa2b2274edf873665", null ], diff --git a/docu/LD2410Types_8h_source.html b/docu/LD2410Types_8h_source.html index 5fb2a90..1cf1f9c 100644 --- a/docu/LD2410Types_8h_source.html +++ b/docu/LD2410Types_8h_source.html @@ -118,522 +118,554 @@
    15 * that are only reported while the sensor is running its
    16 * self-calibration routine.
    17 *
    -
    18 * @ingroup LD2410Async_Types
    -
    19 */
    -
    20
    -
    -
    21 enum class TargetState {
    -
    22 NO_TARGET = 0, ///< No moving or stationary target detected.
    -
    23 MOVING_TARGET = 1, ///< A moving target has been detected.
    -
    24 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    -
    25 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    -
    26 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    -
    27 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    -
    28 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    -
    29 };
    +
    18 */
    +
    19
    +
    +
    20 enum class TargetState {
    +
    21 NO_TARGET = 0, ///< No moving or stationary target detected.
    +
    22 MOVING_TARGET = 1, ///< A moving target has been detected.
    +
    23 STATIONARY_TARGET = 2, ///< A stationary target has been detected.
    +
    24 MOVING_AND_STATIONARY_TARGET = 3, ///< Both moving and stationary targets detected.
    +
    25 AUTOCONFIG_IN_PROGRESS = 4, ///< Auto-configuration routine is running.
    +
    26 AUTOCONFIG_SUCCESS = 5, ///< Auto-configuration completed successfully.
    +
    27 AUTOCONFIG_FAILED = 6 ///< Auto-configuration failed.
    +
    28 };
    -
    30
    -
    31 /**
    -
    32 * @brief Safely converts a numeric value to a TargetState enum.
    -
    33 *
    -
    34 * @param value Raw numeric value (0–6 expected).
    -
    35 * - 0 → NO_TARGET
    -
    36 * - 1 → MOVING_TARGET
    -
    37 * - 2 → STATIONARY_TARGET
    -
    38 * - 3 → MOVING_AND_STATIONARY_TARGET
    -
    39 * - 4 → AUTOCONFIG_IN_PROGRESS
    -
    40 * - 5 → AUTOCONFIG_SUCCESS
    -
    41 * - 6 → AUTOCONFIG_FAILED
    -
    42 * @returns The matching TargetState value, or NO_TARGET if invalid.
    -
    43 *
    -
    44 * @ingroup LD2410Async_Types
    -
    45 */
    -
    46 static TargetState toTargetState(int value) {
    -
    47 switch (value) {
    -
    48 case 0: return TargetState::NO_TARGET;
    -
    49 case 1: return TargetState::MOVING_TARGET;
    -
    50 case 2: return TargetState::STATIONARY_TARGET;
    - - - -
    54 case 6: return TargetState::AUTOCONFIG_FAILED;
    -
    55 default: return TargetState::NO_TARGET; // safe fallback
    -
    56 }
    -
    57 }
    -
    58
    -
    59 /**
    -
    60 * @brief Converts a TargetState enum value to a human-readable String.
    +
    29
    +
    30 /**
    +
    31 * @brief Safely converts a numeric value to a TargetState enum.
    +
    32 *
    +
    33 * @param value Raw numeric value (0–6 expected).
    +
    34 * - 0 → NO_TARGET
    +
    35 * - 1 → MOVING_TARGET
    +
    36 * - 2 → STATIONARY_TARGET
    +
    37 * - 3 → MOVING_AND_STATIONARY_TARGET
    +
    38 * - 4 → AUTOCONFIG_IN_PROGRESS
    +
    39 * - 5 → AUTOCONFIG_SUCCESS
    +
    40 * - 6 → AUTOCONFIG_FAILED
    +
    41 * @returns The matching TargetState value, or NO_TARGET if invalid.
    +
    42 *
    +
    43 */
    +
    44 static TargetState toTargetState(int value) {
    +
    45 switch (value) {
    +
    46 case 0: return TargetState::NO_TARGET;
    +
    47 case 1: return TargetState::MOVING_TARGET;
    +
    48 case 2: return TargetState::STATIONARY_TARGET;
    + + + +
    52 case 6: return TargetState::AUTOCONFIG_FAILED;
    +
    53 default: return TargetState::NO_TARGET; // safe fallback
    +
    54 }
    +
    55 }
    +
    56
    +
    57 /**
    +
    58 * @brief Converts a TargetState enum value to a human-readable String.
    +
    59 *
    +
    60 * Useful for printing detection results in logs or Serial Monitor.
    61 *
    -
    62 * Useful for printing detection results in logs or Serial Monitor.
    -
    63 *
    -
    64 * @param state TargetState enum value.
    -
    65 * @returns Human-readable string such as "No target", "Moving target", etc.
    -
    66 *
    -
    67 * @ingroup LD2410Async_Types
    -
    68 */
    -
    69 static String targetStateToString(TargetState state) {
    -
    70 switch (state) {
    -
    71 case TargetState::NO_TARGET: return "No target";
    -
    72 case TargetState::MOVING_TARGET: return "Moving target";
    -
    73 case TargetState::STATIONARY_TARGET: return "Stationary target";
    -
    74 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    -
    75 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    -
    76 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    -
    77 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    -
    78 default: return "Unknown";
    -
    79 }
    -
    80 }
    +
    62 * @param state TargetState enum value.
    +
    63 * @returns Human-readable string such as "No target", "Moving target", etc.
    +
    64 *
    +
    65 */
    +
    66 static String targetStateToString(TargetState state) {
    +
    67 switch (state) {
    +
    68 case TargetState::NO_TARGET: return "No target";
    +
    69 case TargetState::MOVING_TARGET: return "Moving target";
    +
    70 case TargetState::STATIONARY_TARGET: return "Stationary target";
    +
    71 case TargetState::MOVING_AND_STATIONARY_TARGET: return "Moving and stationary target";
    +
    72 case TargetState::AUTOCONFIG_IN_PROGRESS: return "Auto-config in progress";
    +
    73 case TargetState::AUTOCONFIG_SUCCESS: return "Auto-config success";
    +
    74 case TargetState::AUTOCONFIG_FAILED: return "Auto-config failed";
    +
    75 default: return "Unknown";
    +
    76 }
    +
    77 }
    +
    78
    +
    79
    +
    80
    81
    82
    -
    83
    -
    84
    -
    85
    -
    86
    -
    87 /**
    -
    88 * @brief Light-dependent control status of the auxiliary output.
    +
    83
    +
    84 /**
    +
    85 * @brief Light-dependent control status of the auxiliary output.
    +
    86 *
    +
    87 * The radar sensor can control an external output based on ambient
    +
    88 * light level in combination with presence detection.
    89 *
    -
    90 * The radar sensor can control an external output based on ambient
    -
    91 * light level in combination with presence detection.
    -
    92 *
    -
    93 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    -
    94 *
    -
    95 * @ingroup LD2410Async_Types
    -
    96 */
    -
    -
    97 enum class LightControl {
    -
    98 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    99 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    -
    100 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    -
    101 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    -
    102 };
    +
    90 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    +
    91 *
    +
    92 */
    +
    +
    93 enum class LightControl {
    +
    94 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    95 NO_LIGHT_CONTROL = 0, ///< Output is not influenced by light levels.
    +
    96 LIGHT_BELOW_THRESHOLD = 1, ///< Condition: light < threshold.
    +
    97 LIGHT_ABOVE_THRESHOLD = 2 ///< Condition: light ≥ threshold.
    +
    98 };
    -
    103 /**
    -
    104 * @brief Safely converts a numeric value to a LightControl enum.
    -
    105 *
    -
    106 * @param value Raw numeric value (0–2 expected).
    -
    107 * - 0 → NO_LIGHT_CONTROL
    -
    108 * - 1 → LIGHT_BELOW_THRESHOLD
    -
    109 * - 2 → LIGHT_ABOVE_THRESHOLD
    -
    110 * @returns The matching LightControl value, or NOT_SET if invalid.
    -
    111 *
    -
    112 * @ingroup LD2410Async_Types
    -
    113 */
    -
    114 static LightControl toLightControl(int value) {
    -
    115 switch (value) {
    -
    116 case 0: return LightControl::NO_LIGHT_CONTROL;
    - - -
    119 default: return LightControl::NOT_SET;
    -
    120 }
    -
    121 }
    -
    122
    -
    123
    -
    124 /**
    -
    125 * @brief Logic level behavior of the auxiliary output pin.
    +
    99 /**
    +
    100 * @brief Safely converts a numeric value to a LightControl enum.
    +
    101 *
    +
    102 * @param value Raw numeric value (0–2 expected).
    +
    103 * - 0 → NO_LIGHT_CONTROL
    +
    104 * - 1 → LIGHT_BELOW_THRESHOLD
    +
    105 * - 2 → LIGHT_ABOVE_THRESHOLD
    +
    106 * @returns The matching LightControl value, or NOT_SET if invalid.
    +
    107 *
    +
    108 */
    +
    109 static LightControl toLightControl(int value) {
    +
    110 switch (value) {
    +
    111 case 0: return LightControl::NO_LIGHT_CONTROL;
    + + +
    114 default: return LightControl::NOT_SET;
    +
    115 }
    +
    116 }
    +
    117
    +
    118
    +
    119 /**
    +
    120 * @brief Logic level behavior of the auxiliary output pin.
    +
    121 *
    +
    122 * Determines whether the output pin is active-high or active-low
    +
    123 * in relation to presence detection.
    +
    124 *
    +
    125 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    126 *
    -
    127 * Determines whether the output pin is active-high or active-low
    -
    128 * in relation to presence detection.
    -
    129 *
    -
    130 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    -
    131 *
    -
    132 * @ingroup LD2410Async_Types
    -
    133 */
    -
    -
    134 enum class OutputControl {
    -
    135 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    136 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    -
    137 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    -
    138 };
    +
    127 */
    +
    +
    128 enum class OutputControl {
    +
    129 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    130 DEFAULT_LOW_DETECTED_HIGH = 0, ///< Default low, goes HIGH when detection occurs.
    +
    131 DEFAULT_HIGH_DETECTED_LOW = 1 ///< Default high, goes LOW when detection occurs.
    +
    132 };
    -
    139
    -
    140 /**
    -
    141 * @brief Safely converts a numeric value to an OutputControl enum.
    -
    142 *
    -
    143 * @param value Raw numeric value (0–1 expected).
    -
    144 * - 0 → DEFAULT_LOW_DETECTED_HIGH
    -
    145 * - 1 → DEFAULT_HIGH_DETECTED_LOW
    -
    146 * @returns The matching OutputControl value, or NOT_SET if invalid.
    -
    147 *
    -
    148 * @ingroup LD2410Async_Types
    -
    149 */
    -
    150 static OutputControl toOutputControl(int value) {
    -
    151 switch (value) {
    - - -
    154 default: return OutputControl::NOT_SET;
    -
    155 }
    -
    156 }
    -
    157
    -
    158 /**
    -
    159 * @brief State of the automatic threshold configuration routine.
    -
    160 *
    -
    161 * Auto-config adjusts the sensitivity thresholds for optimal detection
    -
    162 * in the current environment. This process may take several seconds.
    -
    163 *
    -
    164 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    -
    165 *
    -
    166 * @ingroup LD2410Async_Types
    -
    167 */
    -
    -
    168 enum class AutoConfigStatus {
    -
    169 NOT_SET = -1, ///< Status not yet retrieved.
    -
    170 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    -
    171 IN_PROGRESS, ///< Auto-configuration is currently running.
    -
    172 COMPLETED ///< Auto-configuration finished (success or failure).
    -
    173 };
    +
    133
    +
    134 /**
    +
    135 * @brief Safely converts a numeric value to an OutputControl enum.
    +
    136 *
    +
    137 * @param value Raw numeric value (0–1 expected).
    +
    138 * - 0 → DEFAULT_LOW_DETECTED_HIGH
    +
    139 * - 1 → DEFAULT_HIGH_DETECTED_LOW
    +
    140 * @returns The matching OutputControl value, or NOT_SET if invalid.
    +
    141 *
    +
    142 */
    +
    143 static OutputControl toOutputControl(int value) {
    +
    144 switch (value) {
    + + +
    147 default: return OutputControl::NOT_SET;
    +
    148 }
    +
    149 }
    +
    150
    +
    151 /**
    +
    152 * @brief State of the automatic threshold configuration routine.
    +
    153 *
    +
    154 * Auto-config adjusts the sensitivity thresholds for optimal detection
    +
    155 * in the current environment. This process may take several seconds.
    +
    156 *
    +
    157 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    +
    158 *
    +
    159 */
    +
    +
    160 enum class AutoConfigStatus {
    +
    161 NOT_SET = -1, ///< Status not yet retrieved.
    +
    162 NOT_IN_PROGRESS, ///< Auto-configuration not running.
    +
    163 IN_PROGRESS, ///< Auto-configuration is currently running.
    +
    164 COMPLETED ///< Auto-configuration finished (success or failure).
    +
    165 };
    -
    174
    -
    175 /**
    -
    176 * @brief Safely converts a numeric value to an AutoConfigStatus enum.
    -
    177 *
    -
    178 * @param value Raw numeric value (0–2 expected).
    -
    179 * - 0 → NOT_IN_PROGRESS
    -
    180 * - 1 → IN_PROGRESS
    -
    181 * - 2 → COMPLETED
    -
    182 * @returns The matching AutoConfigStatus value, or NOT_SET if invalid.
    -
    183 *
    -
    184 * @ingroup LD2410Async_Types
    -
    185 */
    -
    186 static AutoConfigStatus toAutoConfigStatus(int value) {
    -
    187 switch (value) {
    - -
    189 case 1: return AutoConfigStatus::IN_PROGRESS;
    -
    190 case 2: return AutoConfigStatus::COMPLETED;
    -
    191 default: return AutoConfigStatus::NOT_SET;
    -
    192 }
    -
    193 }
    -
    194
    -
    195
    -
    196 /**
    -
    197 * @brief Supported baud rates for the sensor’s UART interface.
    -
    198 *
    -
    199 * These values correspond to the configuration commands accepted
    -
    200 * by the LD2410. After changing the baud rate, a sensor reboot
    -
    201 * is required, and the ESP32’s UART must be reconfigured to match.
    -
    202 *
    -
    203 * @ingroup LD2410Async_Types
    -
    204 */
    -
    -
    205 enum class Baudrate {
    -
    206 BAUDRATE_9600 = 1, ///< 9600 baud.
    -
    207 BAUDRATE_19200 = 2, ///< 19200 baud.
    -
    208 BAUDRATE_38400 = 3, ///< 38400 baud.
    -
    209 BAUDRATE_57600 = 4, ///< 57600 baud.
    -
    210 BAUDRATE_115200 = 5, ///< 115200 baud.
    -
    211 BAUDRATE_230500 = 6, ///< 230400 baud.
    -
    212 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    -
    213 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    -
    214 };
    +
    166
    +
    167 /**
    +
    168 * @brief Safely converts a numeric value to an AutoConfigStatus enum.
    +
    169 *
    +
    170 * @param value Raw numeric value (0–2 expected).
    +
    171 * - 0 → NOT_IN_PROGRESS
    +
    172 * - 1 → IN_PROGRESS
    +
    173 * - 2 → COMPLETED
    +
    174 * @returns The matching AutoConfigStatus value, or NOT_SET if invalid.
    +
    175 *
    +
    176 */
    +
    177 static AutoConfigStatus toAutoConfigStatus(int value) {
    +
    178 switch (value) {
    + +
    180 case 1: return AutoConfigStatus::IN_PROGRESS;
    +
    181 case 2: return AutoConfigStatus::COMPLETED;
    +
    182 default: return AutoConfigStatus::NOT_SET;
    +
    183 }
    +
    184 }
    +
    185
    +
    186
    +
    187 /**
    +
    188 * @brief Supported baud rates for the sensor’s UART interface.
    +
    189 *
    +
    190 * These values correspond to the configuration commands accepted
    +
    191 * by the LD2410. After changing the baud rate, a sensor reboot
    +
    192 * is required, and the ESP32’s UART must be reconfigured to match.
    +
    193 *
    +
    194 */
    +
    +
    195 enum class Baudrate {
    +
    196 BAUDRATE_9600 = 1, ///< 9600 baud.
    +
    197 BAUDRATE_19200 = 2, ///< 19200 baud.
    +
    198 BAUDRATE_38400 = 3, ///< 38400 baud.
    +
    199 BAUDRATE_57600 = 4, ///< 57600 baud.
    +
    200 BAUDRATE_115200 = 5, ///< 115200 baud.
    +
    201 BAUDRATE_230500 = 6, ///< 230400 baud.
    +
    202 BAUDRATE_256000 = 7, ///< 256000 baud (factory default).
    +
    203 BAUDRATE_460800 = 8 ///< 460800 baud (high-speed).
    +
    204 };
    -
    215
    -
    216 /**
    -
    217 * @brief Distance resolution per gate for detection.
    -
    218 *
    -
    219 * The resolution defines how fine-grained the distance measurement is:
    -
    220 * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    -
    221 * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    -
    222 *
    -
    223 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    -
    224 *
    -
    225 * @ingroup LD2410Async_Types
    -
    226 */
    -
    - -
    228 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    -
    229 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    -
    230 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    -
    231 };
    +
    205
    +
    206 /**
    +
    207 * @brief Distance resolution per gate for detection.
    +
    208 *
    +
    209 * The resolution defines how fine-grained the distance measurement is:
    +
    210 * - RESOLUTION_75CM: Coarser, maximum range up to ~6 m, each gate ≈ 0.75 m wide.
    +
    211 * - RESOLUTION_20CM: Finer, maximum range up to ~1.8 m, each gate ≈ 0.20 m wide.
    +
    212 *
    +
    213 * Use NOT_SET only as a placeholder; it is not a valid configuration value.
    +
    214 *
    +
    215 */
    +
    + +
    217 NOT_SET = -1, ///< Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config command).
    +
    218 RESOLUTION_75CM = 0, ///< Each gate ~0.75 m, max range ~6 m.
    +
    219 RESOLUTION_20CM = 1 ///< Each gate ~0.20 m, max range ~1.8 m.
    +
    220 };
    -
    232 /**
    -
    233 * @brief Safely converts a numeric value to a DistanceResolution enum.
    -
    234 *
    -
    235 * @param value Raw numeric value (typically from a sensor response).
    -
    236 * Expected values:
    -
    237 * - 0 → RESOLUTION_75CM
    -
    238 * - 1 → RESOLUTION_20CM
    -
    239 * @returns The matching DistanceResolution value, or NOT_SET if invalid.
    -
    240 *
    -
    241 * @ingroup LD2410Async_Types
    -
    242 */
    -
    243 static DistanceResolution toDistanceResolution(int value) {
    -
    244 switch (value) {
    - - -
    247 default: return DistanceResolution::NOT_SET;
    -
    248 }
    -
    249 }
    -
    250
    -
    251 /**
    -
    252 * @brief Holds the most recent detection data reported by the radar.
    -
    253 *
    -
    254 * This structure is continuously updated as new frames arrive.
    -
    255 * Values reflect either the basic presence information or, if
    -
    256 * engineering mode is enabled, per-gate signal details.
    -
    257 *
    -
    258 * @ingroup LD2410Async_Types
    -
    259 * @ingroup LD2410Async_PresenceDetection
    -
    260 */
    -
    - -
    262 {
    -
    263 unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received.
    -
    264
    -
    265 // === Basic detection results ===
    -
    266
    -
    267 bool engineeringMode = false; ///< True if engineering mode data was received.
    -
    268
    -
    269 bool presenceDetected = false; ///< True if any target is detected.
    -
    270 bool movingPresenceDetected = false; ///< True if a moving target is detected.
    -
    271 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
    +
    221 /**
    +
    222 * @brief Safely converts a numeric value to a DistanceResolution enum.
    +
    223 *
    +
    224 * @param value Raw numeric value (typically from a sensor response).
    +
    225 * Expected values:
    +
    226 * - 0 → RESOLUTION_75CM
    +
    227 * - 1 → RESOLUTION_20CM
    +
    228 * @returns The matching DistanceResolution value, or NOT_SET if invalid.
    +
    229 *
    +
    230 */
    +
    231 static DistanceResolution toDistanceResolution(int value) {
    +
    232 switch (value) {
    + + +
    235 default: return DistanceResolution::NOT_SET;
    +
    236 }
    +
    237 }
    +
    238
    +
    239 /**
    +
    240 * @brief Holds the most recent detection data reported by the radar.
    +
    241 *
    +
    242 * This structure is continuously updated as new frames arrive.
    +
    243 * Values reflect either the basic presence information or, if
    +
    244 * engineering mode is enabled, per-gate signal details.
    +
    245 *
    +
    246 */
    +
    + +
    248 {
    +
    249 unsigned long timestamp = 0; ///< Timestamp (ms since boot) when this data was received.
    +
    250
    +
    251 // === Basic detection results ===
    +
    252
    +
    253 bool engineeringMode = false; ///< True if engineering mode data was received.
    +
    254
    +
    255 bool presenceDetected = false; ///< True if any target is detected.
    +
    256 bool movingPresenceDetected = false; ///< True if a moving target is detected.
    +
    257 bool stationaryPresenceDetected = false; ///< True if a stationary target is detected.
    +
    258
    +
    259 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    +
    260 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
    +
    261 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
    +
    262 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
    +
    263 byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target.
    +
    264 unsigned int detectedDistance = 0; ///< General detection distance (cm).
    +
    265
    +
    266 // === Engineering mode data ===
    +
    267 byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals.
    +
    268 byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets.
    +
    269
    +
    270 byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals.
    +
    271 byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets.
    272
    -
    273 TargetState targetState = TargetState::NO_TARGET; ///< Current detection state.
    -
    274 unsigned int movingTargetDistance = 0; ///< Distance (cm) to the nearest moving target.
    -
    275 byte movingTargetSignal = 0; ///< Signal strength (0–100) of the moving target.
    -
    276 unsigned int stationaryTargetDistance = 0; ///< Distance (cm) to the nearest stationary target.
    -
    277 byte stationaryTargetSignal = 0; ///< Signal strength (0–100) of the stationary target.
    -
    278 unsigned int detectedDistance = 0; ///< General detection distance (cm).
    -
    279
    -
    280 // === Engineering mode data ===
    -
    281 byte movingTargetGateSignalCount = 0; ///< Number of gates with moving target signals.
    -
    282 byte movingTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for moving targets.
    -
    283
    -
    284 byte stationaryTargetGateSignalCount = 0; ///< Number of gates with stationary target signals.
    -
    285 byte stationaryTargetGateSignals[9] = { 0 }; ///< Per-gate signal strengths for stationary targets.
    -
    286
    -
    287 byte lightLevel = 0; ///< Reported ambient light level (0–255).
    -
    288 bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low).
    -
    289
    -
    290
    -
    291 /**
    -
    292 * @brief Debug helper: print detection data contents to Serial.
    -
    293 */
    -
    -
    294 void print() const {
    -
    295 Serial.println("=== DetectionData ===");
    -
    296
    -
    297 Serial.print(" Timestamp: ");
    -
    298 Serial.println(timestamp);
    -
    299
    -
    300 Serial.print(" Engineering Mode: ");
    -
    301 Serial.println(engineeringMode ? "Yes" : "No");
    -
    302
    -
    303 Serial.print(" Target State: ");
    -
    304 Serial.println(static_cast<int>(targetState));
    -
    305
    -
    306 Serial.print(" Moving Target Distance (cm): ");
    -
    307 Serial.println(movingTargetDistance);
    -
    308
    -
    309 Serial.print(" Moving Target Signal: ");
    -
    310 Serial.println(movingTargetSignal);
    -
    311
    -
    312 Serial.print(" Stationary Target Distance (cm): ");
    -
    313 Serial.println(stationaryTargetDistance);
    -
    314
    -
    315 Serial.print(" Stationary Target Signal: ");
    -
    316 Serial.println(stationaryTargetSignal);
    -
    317
    -
    318 Serial.print(" Detected Distance (cm): ");
    -
    319 Serial.println(detectedDistance);
    -
    320
    -
    321 Serial.print(" Light Level: ");
    -
    322 Serial.println(lightLevel);
    -
    323
    -
    324 Serial.print(" OUT Pin Status: ");
    -
    325 Serial.println(outPinStatus ? "High" : "Low");
    +
    273 byte lightLevel = 0; ///< Reported ambient light level (0–255).
    +
    274 bool outPinStatus = 0; ///< Current status of the OUT pin (true = high, false = low).
    +
    275
    +
    276
    +
    277 /**
    +
    278 * @brief Debug helper: print detection data contents to Serial.
    +
    279 */
    +
    +
    280 void print() const {
    +
    281 Serial.println("=== DetectionData ===");
    +
    282
    +
    283 Serial.print(" Timestamp: ");
    +
    284 Serial.println(timestamp);
    +
    285
    +
    286 Serial.print(" Engineering Mode: ");
    +
    287 Serial.println(engineeringMode ? "Yes" : "No");
    +
    288
    +
    289 Serial.print(" Target State: ");
    +
    290 Serial.println(static_cast<int>(targetState));
    +
    291
    +
    292 Serial.print(" Moving Target Distance (cm): ");
    +
    293 Serial.println(movingTargetDistance);
    +
    294
    +
    295 Serial.print(" Moving Target Signal: ");
    +
    296 Serial.println(movingTargetSignal);
    +
    297
    +
    298 Serial.print(" Stationary Target Distance (cm): ");
    +
    299 Serial.println(stationaryTargetDistance);
    +
    300
    +
    301 Serial.print(" Stationary Target Signal: ");
    +
    302 Serial.println(stationaryTargetSignal);
    +
    303
    +
    304 Serial.print(" Detected Distance (cm): ");
    +
    305 Serial.println(detectedDistance);
    +
    306
    +
    307 Serial.print(" Light Level: ");
    +
    308 Serial.println(lightLevel);
    +
    309
    +
    310 Serial.print(" OUT Pin Status: ");
    +
    311 Serial.println(outPinStatus ? "High" : "Low");
    +
    312
    +
    313 // --- Engineering mode fields ---
    +
    314 if (engineeringMode) {
    +
    315 Serial.println(" --- Engineering Mode Data ---");
    +
    316
    +
    317 Serial.print(" Moving Target Gate Signal Count: ");
    +
    318 Serial.println(movingTargetGateSignalCount);
    +
    319
    +
    320 Serial.print(" Moving Target Gate Signals: ");
    +
    321 for (int i = 0; i < movingTargetGateSignalCount; i++) {
    +
    322 Serial.print(movingTargetGateSignals[i]);
    +
    323 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
    +
    324 }
    +
    325 Serial.println();
    326
    -
    327 // --- Engineering mode fields ---
    -
    328 if (engineeringMode) {
    -
    329 Serial.println(" --- Engineering Mode Data ---");
    -
    330
    -
    331 Serial.print(" Moving Target Gate Signal Count: ");
    -
    332 Serial.println(movingTargetGateSignalCount);
    -
    333
    -
    334 Serial.print(" Moving Target Gate Signals: ");
    -
    335 for (int i = 0; i < movingTargetGateSignalCount; i++) {
    -
    336 Serial.print(movingTargetGateSignals[i]);
    -
    337 if (i < movingTargetGateSignalCount - 1) Serial.print(",");
    -
    338 }
    -
    339 Serial.println();
    -
    340
    -
    341 Serial.print(" Stationary Target Gate Signal Count: ");
    -
    342 Serial.println(stationaryTargetGateSignalCount);
    -
    343
    -
    344 Serial.print(" Stationary Target Gate Signals: ");
    -
    345 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
    -
    346 Serial.print(stationaryTargetGateSignals[i]);
    -
    347 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
    -
    348 }
    -
    349 Serial.println();
    -
    350 }
    -
    351
    -
    352 Serial.println("======================");
    -
    353 }
    +
    327 Serial.print(" Stationary Target Gate Signal Count: ");
    +
    328 Serial.println(stationaryTargetGateSignalCount);
    +
    329
    +
    330 Serial.print(" Stationary Target Gate Signals: ");
    +
    331 for (int i = 0; i < stationaryTargetGateSignalCount; i++) {
    +
    332 Serial.print(stationaryTargetGateSignals[i]);
    +
    333 if (i < stationaryTargetGateSignalCount - 1) Serial.print(",");
    +
    334 }
    +
    335 Serial.println();
    +
    336 }
    +
    337
    +
    338 Serial.println("======================");
    +
    339 }
    -
    354
    -
    355 };
    +
    340
    +
    341 };
    -
    356
    -
    357 /**
    -
    358 * @brief Stores the sensor’s configuration parameters.
    -
    359 *
    -
    360 * This structure represents both static capabilities
    -
    361 * (e.g. number of gates) and configurable settings
    -
    362 * (e.g. sensitivities, timeouts, resolution).
    -
    363 *
    -
    364 * The values are typically filled by request commands
    -
    365 * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or
    -
    366 * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().
    -
    367 *
    -
    368 * @ingroup LD2410Async_Types
    -
    369 * @ingroup LD2410Async_Configuration
    -
    370 */
    -
    -
    371 struct ConfigData {
    -
    372 // === Radar capabilities ===
    -
    373 byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
    -
    374
    -
    375 // === Max distance gate settings ===
    -
    376 byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection.
    -
    377 byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection.
    +
    342
    +
    343 /**
    +
    344 * @brief Stores the sensor’s configuration parameters.
    +
    345 *
    +
    346 * This structure represents both static capabilities
    +
    347 * (e.g. number of gates) and configurable settings
    +
    348 * (e.g. sensitivities, timeouts, resolution).
    +
    349 *
    +
    350 * The values are typically filled by request commands
    +
    351 * such as requestAllConfigSettingsAsync() or requestGateParametersAsync() or
    +
    352 * requestAuxControlSettingsAsync() or requestDistanceResolutioncmAsync().
    +
    353 *
    +
    354 */
    +
    +
    355 struct ConfigData {
    +
    356 // === Radar capabilities ===
    +
    357 byte numberOfGates = 0; ///< Number of distance gates (2–8). This member is readonly resp. changing its value will not influence the radar setting when configureAllConfigSettingsAsync() is called. It is not 100% clear what this value stands for, but it seems to indicate the number of gates on the sensor.
    +
    358
    +
    359 // === Max distance gate settings ===
    +
    360 byte maxMotionDistanceGate = 0; ///< Furthest gate used for motion detection.
    +
    361 byte maxStationaryDistanceGate = 0; ///< Furthest gate used for stationary detection.
    +
    362
    +
    363 // === Per-gate sensitivity settings ===
    +
    364 byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100).
    +
    365 byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100).
    +
    366
    +
    367 // === Timeout parameters ===
    +
    368 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
    +
    369
    +
    370 // === Distance resolution ===
    +
    371 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    +
    372
    +
    373 // === Auxiliary controls ===
    +
    374 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
    +
    375 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    +
    376 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    +
    377
    378
    -
    379 // === Per-gate sensitivity settings ===
    -
    380 byte distanceGateMotionSensitivity[9] = { 0 }; ///< Motion sensitivity values per gate (0–100).
    -
    381 byte distanceGateStationarySensitivity[9] = { 0 }; ///< Stationary sensitivity values per gate (0–100).
    -
    382
    -
    383 // === Timeout parameters ===
    -
    384 unsigned short noOneTimeout = 0; ///< Timeout (seconds) until "no presence" is declared.
    -
    385
    -
    386 // === Distance resolution ===
    -
    387 DistanceResolution distanceResolution = DistanceResolution::NOT_SET; ///< Current distance resolution. A reboot is required to activate changed setting after calling configureAllConfigSettingsAsync() is called.
    -
    388
    -
    389 // === Auxiliary controls ===
    -
    390 byte lightThreshold = 0; ///< Threshold for auxiliary light control (0–255).
    -
    391 LightControl lightControl = LightControl::NOT_SET; ///< Light-dependent auxiliary control mode.
    -
    392 OutputControl outputControl = OutputControl::NOT_SET; ///< Logic configuration of the OUT pin.
    -
    393
    -
    394
    +
    379
    +
    380
    +
    381 /**
    +
    382 * @brief Validates the configuration data for correctness.
    +
    383 *
    +
    384 * Ensures that enum values are set and values are within valid ranges.
    +
    385 * This method is called internally before applying a config
    +
    386 * via configureAllConfigSettingsAsync().
    +
    387 *
    +
    388 * @returns True if the configuration is valid, false otherwise.
    +
    389 */
    +
    +
    390 bool isValid() const {
    +
    391 // Validate enum settings
    + +
    393 if (lightControl == LightControl::NOT_SET) return false;
    +
    394 if (outputControl == OutputControl::NOT_SET) return false;
    395
    -
    396
    -
    397 /**
    -
    398 * @brief Validates the configuration data for correctness.
    -
    399 *
    -
    400 * Ensures that enum values are set and values are within valid ranges.
    -
    401 * This method is called internally before applying a config
    -
    402 * via configureAllConfigSettingsAsync().
    -
    403 *
    -
    404 * @returns True if the configuration is valid, false otherwise.
    -
    405 */
    -
    -
    406 bool isValid() const {
    -
    407 // Validate enum settings
    - -
    409 if (lightControl == LightControl::NOT_SET) return false;
    -
    410 if (outputControl == OutputControl::NOT_SET) return false;
    -
    411
    -
    412 // Validate max distance gates
    - - -
    415
    -
    416 // Validate sensitivities
    -
    417 for (int i = 0; i < 9; i++) {
    -
    418 if (distanceGateMotionSensitivity[i] > 100) return false;
    -
    419 if (distanceGateStationarySensitivity[i] > 100) return false;
    -
    420 }
    -
    421
    -
    422 return true;
    -
    423 }
    +
    396 // Validate max distance gates
    + + +
    399
    +
    400 // Validate sensitivities
    +
    401 for (int i = 0; i < 9; i++) {
    +
    402 if (distanceGateMotionSensitivity[i] > 100) return false;
    +
    403 if (distanceGateStationarySensitivity[i] > 100) return false;
    +
    404 }
    +
    405
    +
    406 return true;
    +
    407 }
    -
    424
    -
    425 /**
    -
    426 * @brief Compares this ConfigData with another for equality.
    -
    427 *
    -
    428 * @param other The other ConfigData instance to compare against.
    -
    429 * @returns True if all fields are equal, false otherwise.
    -
    430 */
    -
    -
    431 bool equals(const ConfigData& other) const {
    -
    432 if (numberOfGates != other.numberOfGates) return false;
    -
    433 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
    -
    434 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
    -
    435 if (noOneTimeout != other.noOneTimeout) return false;
    -
    436 if (distanceResolution != other.distanceResolution) return false;
    -
    437 if (lightThreshold != other.lightThreshold) return false;
    -
    438 if (lightControl != other.lightControl) return false;
    -
    439 if (outputControl != other.outputControl) return false;
    -
    440
    -
    441 for (int i = 0; i < 9; i++) {
    -
    442 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
    - -
    444 }
    -
    445 return true;
    -
    446 }
    +
    408
    +
    409 /**
    +
    410 * @brief Compares this ConfigData with another for equality.
    +
    411 *
    +
    412 * @param other The other ConfigData instance to compare against.
    +
    413 * @returns True if all fields are equal, false otherwise.
    +
    414 */
    +
    +
    415 bool equals(const ConfigData& other) const {
    +
    416 if (numberOfGates != other.numberOfGates) return false;
    +
    417 if (maxMotionDistanceGate != other.maxMotionDistanceGate) return false;
    +
    418 if (maxStationaryDistanceGate != other.maxStationaryDistanceGate) return false;
    +
    419 if (noOneTimeout != other.noOneTimeout) return false;
    +
    420 if (distanceResolution != other.distanceResolution) return false;
    +
    421 if (lightThreshold != other.lightThreshold) return false;
    +
    422 if (lightControl != other.lightControl) return false;
    +
    423 if (outputControl != other.outputControl) return false;
    +
    424
    +
    425 for (int i = 0; i < 9; i++) {
    +
    426 if (distanceGateMotionSensitivity[i] != other.distanceGateMotionSensitivity[i]) return false;
    + +
    428 }
    +
    429 return true;
    +
    430 }
    -
    447
    -
    448 /**
    -
    449 * @brief Debug helper: print configuration contents to Serial.
    -
    450 */
    -
    -
    451 void print() const {
    -
    452 Serial.println("=== ConfigData ===");
    +
    431
    +
    432 /**
    +
    433 * @brief Debug helper: print configuration contents to Serial.
    +
    434 */
    +
    +
    435 void print() const {
    +
    436 Serial.println("=== ConfigData ===");
    +
    437
    +
    438 Serial.print(" Number of Gates: ");
    +
    439 Serial.println(numberOfGates);
    +
    440
    +
    441 Serial.print(" Max Motion Distance Gate: ");
    +
    442 Serial.println(maxMotionDistanceGate);
    +
    443
    +
    444 Serial.print(" Max Stationary Distance Gate: ");
    +
    445 Serial.println(maxStationaryDistanceGate);
    +
    446
    +
    447 Serial.print(" Motion Sensitivity: ");
    +
    448 for (int i = 0; i < 9; i++) {
    +
    449 Serial.print(distanceGateMotionSensitivity[i]);
    +
    450 if (i < 8) Serial.print(",");
    +
    451 }
    +
    452 Serial.println();
    453
    -
    454 Serial.print(" Number of Gates: ");
    -
    455 Serial.println(numberOfGates);
    -
    456
    -
    457 Serial.print(" Max Motion Distance Gate: ");
    -
    458 Serial.println(maxMotionDistanceGate);
    -
    459
    -
    460 Serial.print(" Max Stationary Distance Gate: ");
    -
    461 Serial.println(maxStationaryDistanceGate);
    -
    462
    -
    463 Serial.print(" Motion Sensitivity: ");
    -
    464 for (int i = 0; i < 9; i++) {
    -
    465 Serial.print(distanceGateMotionSensitivity[i]);
    -
    466 if (i < 8) Serial.print(",");
    -
    467 }
    -
    468 Serial.println();
    +
    454 Serial.print(" Stationary Sensitivity: ");
    +
    455 for (int i = 0; i < 9; i++) {
    +
    456 Serial.print(distanceGateStationarySensitivity[i]);
    +
    457 if (i < 8) Serial.print(",");
    +
    458 }
    +
    459 Serial.println();
    +
    460
    +
    461 Serial.print(" No One Timeout: ");
    +
    462 Serial.println(noOneTimeout);
    +
    463
    +
    464 Serial.print(" Distance Resolution: ");
    +
    465 Serial.println(static_cast<int>(distanceResolution));
    +
    466
    +
    467 Serial.print(" Light Threshold: ");
    +
    468 Serial.println(lightThreshold);
    469
    -
    470 Serial.print(" Stationary Sensitivity: ");
    -
    471 for (int i = 0; i < 9; i++) {
    -
    472 Serial.print(distanceGateStationarySensitivity[i]);
    -
    473 if (i < 8) Serial.print(",");
    -
    474 }
    -
    475 Serial.println();
    -
    476
    -
    477 Serial.print(" No One Timeout: ");
    -
    478 Serial.println(noOneTimeout);
    -
    479
    -
    480 Serial.print(" Distance Resolution: ");
    -
    481 Serial.println(static_cast<int>(distanceResolution));
    -
    482
    -
    483 Serial.print(" Light Threshold: ");
    -
    484 Serial.println(lightThreshold);
    -
    485
    -
    486 Serial.print(" Light Control: ");
    -
    487 Serial.println(static_cast<int>(lightControl));
    -
    488
    -
    489 Serial.print(" Output Control: ");
    -
    490 Serial.println(static_cast<int>(outputControl));
    -
    491
    -
    492 Serial.println("===================");
    -
    493 }
    +
    470 Serial.print(" Light Control: ");
    +
    471 Serial.println(static_cast<int>(lightControl));
    +
    472
    +
    473 Serial.print(" Output Control: ");
    +
    474 Serial.println(static_cast<int>(outputControl));
    +
    475
    +
    476 Serial.println("===================");
    +
    477 }
    +
    +
    478 };
    -
    494 };
    +
    479
    +
    +
    480 struct StaticData {
    +
    481 /**
    +
    482 * @brief Protocol version reported by the radar.
    +
    483 *
    +
    484 * This value is set when entering config mode. It can be useful
    +
    485 * for compatibility checks between firmware and library.
    +
    486 *
    +
    487 */
    +
    488 uint16_t protocolVersion = 0;
    +
    489
    +
    490 /**
    +
    491 * @brief Buffer size reported by the radar protocol.
    +
    492 *
    +
    493 * Set when entering config mode. Typically not required by users
    +
    494 * unless debugging low-level protocol behavior.
    +
    495 *
    +
    496 */
    +
    497 uint16_t bufferSize = 0;
    +
    498
    +
    499
    +
    500 /**
    +
    501 * @brief Firmware version string of the radar.
    +
    502 *
    +
    503 * Populated by @ref requestFirmwareAsync(). Format is usually
    +
    504 * "major.minor.build".
    +
    505 *
    +
    506 */
    +
    507 char firmwareText[16] = { 0 };
    +
    508
    +
    509 /**
    +
    510 * @brief MAC address of the radar’s Bluetooth module (if available).
    +
    511 *
    +
    512 * Populated by @ref requestBluetoothMacAddressAsync().
    +
    513 *
    +
    514 */
    + +
    516
    +
    517 /**
    +
    518 * @brief MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    519 *
    +
    520 * Populated by @ref requestBluetoothMacAddressAsync().
    +
    521 *
    +
    522 */
    +
    523 char bluetoothMacText[18] = { 0 };
    +
    524
    +
    525 };
    -
    495
    -
    496
    -
    497}
    +
    526
    +
    527}
    -
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    +
    AutoConfigStatus
    State of the automatic threshold configuration routine.
    @ NOT_SET
    Status not yet retrieved.
    @ COMPLETED
    Auto-configuration finished (success or failure).
    @ IN_PROGRESS
    Auto-configuration is currently running.
    @ NOT_IN_PROGRESS
    Auto-configuration not running.
    -
    OutputControl
    Logic level behavior of the auxiliary output pin.
    +
    OutputControl
    Logic level behavior of the auxiliary output pin.
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @ DEFAULT_HIGH_DETECTED_LOW
    Default high, goes LOW when detection occurs.
    @ DEFAULT_LOW_DETECTED_HIGH
    Default low, goes HIGH when detection occurs.
    -
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    +
    Baudrate
    Supported baud rates for the sensor’s UART interface.
    @ BAUDRATE_57600
    57600 baud.
    @ BAUDRATE_38400
    38400 baud.
    @ BAUDRATE_230500
    230400 baud.
    @@ -642,11 +674,11 @@
    @ BAUDRATE_19200
    19200 baud.
    @ BAUDRATE_9600
    9600 baud.
    @ BAUDRATE_460800
    460800 baud (high-speed).
    -
    DistanceResolution
    Distance resolution per gate for detection.
    +
    DistanceResolution
    Distance resolution per gate for detection.
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @ RESOLUTION_20CM
    Each gate ~0.20 m, max range ~1.8 m.
    @ RESOLUTION_75CM
    Each gate ~0.75 m, max range ~6 m.
    -
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:21
    +
    TargetState
    Represents the current target detection state reported by the radar.
    Definition LD2410Types.h:20
    @ MOVING_AND_STATIONARY_TARGET
    Both moving and stationary targets detected.
    @ NO_TARGET
    No moving or stationary target detected.
    @ AUTOCONFIG_IN_PROGRESS
    Auto-configuration routine is running.
    @@ -654,44 +686,50 @@
    @ STATIONARY_TARGET
    A stationary target has been detected.
    @ MOVING_TARGET
    A moving target has been detected.
    @ AUTOCONFIG_SUCCESS
    Auto-configuration completed successfully.
    -
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:97
    +
    LightControl
    Light-dependent control status of the auxiliary output.
    Definition LD2410Types.h:93
    @ NOT_SET
    Placeholder resp. inital value. Do not use as a config value (will result in abortion of the config c...
    @ LIGHT_BELOW_THRESHOLD
    Condition: light < threshold.
    @ LIGHT_ABOVE_THRESHOLD
    Condition: light ≥ threshold.
    @ NO_LIGHT_CONTROL
    Output is not influenced by light levels.
    -
    Stores the sensor’s configuration parameters.
    -
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    -
    void print() const
    Debug helper: print configuration contents to Serial.
    -
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    -
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    -
    OutputControl outputControl
    Logic configuration of the OUT pin.
    -
    bool equals(const ConfigData &other) const
    Compares this ConfigData with another for equality.
    -
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    -
    bool isValid() const
    Validates the configuration data for correctness.
    -
    LightControl lightControl
    Light-dependent auxiliary control mode.
    -
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    -
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    -
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    -
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    -
    Holds the most recent detection data reported by the radar.
    -
    void print() const
    Debug helper: print detection data contents to Serial.
    -
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    -
    bool engineeringMode
    True if engineering mode data was received.
    -
    bool stationaryPresenceDetected
    True if a stationary target is detected.
    -
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    -
    byte lightLevel
    Reported ambient light level (0–255).
    -
    unsigned int detectedDistance
    General detection distance (cm).
    -
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    -
    TargetState targetState
    Current detection state.
    -
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    -
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    -
    bool presenceDetected
    True if any target is detected.
    -
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    -
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    -
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    -
    bool movingPresenceDetected
    True if a moving target is detected.
    -
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    -
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    +
    Stores the sensor’s configuration parameters.
    +
    byte distanceGateStationarySensitivity[9]
    Stationary sensitivity values per gate (0–100).
    +
    void print() const
    Debug helper: print configuration contents to Serial.
    +
    byte distanceGateMotionSensitivity[9]
    Motion sensitivity values per gate (0–100).
    +
    byte maxMotionDistanceGate
    Furthest gate used for motion detection.
    +
    OutputControl outputControl
    Logic configuration of the OUT pin.
    +
    bool equals(const ConfigData &other) const
    Compares this ConfigData with another for equality.
    +
    byte lightThreshold
    Threshold for auxiliary light control (0–255).
    +
    bool isValid() const
    Validates the configuration data for correctness.
    +
    LightControl lightControl
    Light-dependent auxiliary control mode.
    +
    byte maxStationaryDistanceGate
    Furthest gate used for stationary detection.
    +
    byte numberOfGates
    Number of distance gates (2–8). This member is readonly resp. changing its value will not influence t...
    +
    DistanceResolution distanceResolution
    Current distance resolution. A reboot is required to activate changed setting after calling configure...
    +
    unsigned short noOneTimeout
    Timeout (seconds) until "no presence" is declared.
    +
    Holds the most recent detection data reported by the radar.
    +
    void print() const
    Debug helper: print detection data contents to Serial.
    +
    byte stationaryTargetGateSignals[9]
    Per-gate signal strengths for stationary targets.
    +
    bool engineeringMode
    True if engineering mode data was received.
    +
    bool stationaryPresenceDetected
    True if a stationary target is detected.
    +
    byte stationaryTargetSignal
    Signal strength (0–100) of the stationary target.
    +
    byte lightLevel
    Reported ambient light level (0–255).
    +
    unsigned int detectedDistance
    General detection distance (cm).
    +
    byte movingTargetGateSignalCount
    Number of gates with moving target signals.
    +
    TargetState targetState
    Current detection state.
    +
    byte movingTargetGateSignals[9]
    Per-gate signal strengths for moving targets.
    +
    byte stationaryTargetGateSignalCount
    Number of gates with stationary target signals.
    +
    bool presenceDetected
    True if any target is detected.
    +
    byte movingTargetSignal
    Signal strength (0–100) of the moving target.
    +
    bool outPinStatus
    Current status of the OUT pin (true = high, false = low).
    +
    unsigned long timestamp
    Timestamp (ms since boot) when this data was received.
    +
    bool movingPresenceDetected
    True if a moving target is detected.
    +
    unsigned int movingTargetDistance
    Distance (cm) to the nearest moving target.
    +
    unsigned int stationaryTargetDistance
    Distance (cm) to the nearest stationary target.
    + +
    char bluetoothMacText[18]
    MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    +
    uint16_t protocolVersion
    Protocol version reported by the radar.
    +
    byte bluetoothMac[6]
    MAC address of the radar’s Bluetooth module (if available).
    +
    char firmwareText[16]
    Firmware version string of the radar.
    +
    uint16_t bufferSize
    Buffer size reported by the radar protocol.
    diff --git a/docu/annotated.html b/docu/annotated.html index 52e69d4..b020142 100644 --- a/docu/annotated.html +++ b/docu/annotated.html @@ -105,7 +105,8 @@
    - + +

    Namespaces

     NLD2410Types
     CConfigDataStores the sensor’s configuration parameters
     CDetectionDataHolds the most recent detection data reported by the radar
     CLD2410Async
     CStaticData
     CLD2410Async
    diff --git a/docu/annotated_dup.js b/docu/annotated_dup.js index 69bfa1a..4ae21f1 100644 --- a/docu/annotated_dup.js +++ b/docu/annotated_dup.js @@ -2,7 +2,8 @@ var annotated_dup = [ [ "LD2410Types", "namespaceLD2410Types.html", [ [ "ConfigData", "structLD2410Types_1_1ConfigData.html", "structLD2410Types_1_1ConfigData" ], - [ "DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ] + [ "DetectionData", "structLD2410Types_1_1DetectionData.html", "structLD2410Types_1_1DetectionData" ], + [ "StaticData", "structLD2410Types_1_1StaticData.html", "structLD2410Types_1_1StaticData" ] ] ], [ "LD2410Async", "classLD2410Async.html", "classLD2410Async" ] ]; \ No newline at end of file diff --git a/docu/basicPresenceDetection_8ino.html b/docu/basicPresenceDetection_8ino.html index 01ad693..e03e5e3 100644 --- a/docu/basicPresenceDetection_8ino.html +++ b/docu/basicPresenceDetection_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/basicPresenceDetection_8ino_source.html b/docu/basicPresenceDetection_8ino_source.html index 94cf9d2..aa2f37c 100644 --- a/docu/basicPresenceDetection_8ino_source.html +++ b/docu/basicPresenceDetection_8ino_source.html @@ -179,7 +179,7 @@ diff --git a/docu/changeConfig_8ino.html b/docu/changeConfig_8ino.html index 657cb70..03c549d 100644 --- a/docu/changeConfig_8ino.html +++ b/docu/changeConfig_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/changeConfig_8ino_source.html b/docu/changeConfig_8ino_source.html index 7a33f35..7d217be 100644 --- a/docu/changeConfig_8ino_source.html +++ b/docu/changeConfig_8ino_source.html @@ -217,7 +217,7 @@ diff --git a/docu/changeDistanceResolution_8ino.html b/docu/changeDistanceResolution_8ino.html index 1098544..750723f 100644 --- a/docu/changeDistanceResolution_8ino.html +++ b/docu/changeDistanceResolution_8ino.html @@ -107,7 +107,7 @@ diff --git a/docu/changeDistanceResolution_8ino_source.html b/docu/changeDistanceResolution_8ino_source.html index c81c399..0e68753 100644 --- a/docu/changeDistanceResolution_8ino_source.html +++ b/docu/changeDistanceResolution_8ino_source.html @@ -227,7 +227,7 @@ diff --git a/docu/classLD2410Async-members.html b/docu/classLD2410Async-members.html index d72e74c..f8e5053 100644 --- a/docu/classLD2410Async-members.html +++ b/docu/classLD2410Async-members.html @@ -110,35 +110,33 @@ autoConfigStatusLD2410Async begin()LD2410Async beginAutoConfigAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - bufferSizeLD2410Async - configDataLD2410Async - configModeEnabledLD2410Async - configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async - configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async - configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async - configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - detectionDataLD2410Async - DetectionDataCallback typedefLD2410Async - disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - disableInactivityHandling()LD2410Asyncinline - enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - enableInactivityHandling()LD2410Asyncinline - end()LD2410Async - engineeringModeEnabledLD2410Async - firmwareLD2410Async + configDataLD2410Async + configModeEnabledLD2410Async + configureAllConfigSettingsAsync(const LD2410Types::ConfigData &configToWrite, bool writeAllConfigData, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureAuxControlSettingsAsync(LD2410Types::LightControl light_control, byte light_threshold, LD2410Types::OutputControl output_control, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureBaudRateAsync(LD2410Types::Baudrate baudRate, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureBluetoothPasswordAsync(const String &password, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureDefaultBluetoothPasswordAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + configureDistanceGateSensitivityAsync(const byte movingThresholds[9], const byte stationaryThresholds[9], AsyncCommandCallback callback, byte userData=0)LD2410Async + configureDistanceGateSensitivityAsync(byte gate, byte movingThreshold, byte stationaryThreshold, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureDistanceResolution75cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + configureDistanceResolutionAsync(LD2410Types::DistanceResolution distanceResolution, AsyncCommandCallback callback, byte userData=0)LD2410Async + configureMaxGateAndNoOneTimeoutAsync(byte maxMovingGate, byte maxStationaryGate, unsigned short noOneTimeout, AsyncCommandCallback callback, byte userData=0)LD2410Async + configuresDistanceResolution20cmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + detectionDataLD2410Async + DetectionDataCallback typedefLD2410Async + disableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + disableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + disableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + disableInactivityHandling()LD2410Asyncinline + enableBluetoothAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + enableConfigModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + enableEngineeringModeAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + enableInactivityHandling()LD2410Asyncinline + end()LD2410Async + engineeringModeEnabledLD2410Async GenericCallback typedefLD2410Async getAsyncCommandTimeoutMs() constLD2410Asyncinline getConfigData() constLD2410Async @@ -150,25 +148,23 @@ isEngineeringModeEnabled() constLD2410Asyncinline isInactivityHandlingEnabled() constLD2410Asyncinline LD2410Async(Stream &serial)LD2410Async - macLD2410Async - macStringLD2410Async - protocolVersionLD2410Async - rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async - registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async - registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async - requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async - setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline - setInactivityHandling(bool enable)LD2410Async - setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline + rebootAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + registerConfigChangedCallback(GenericCallback callback, byte userData=0)LD2410Async + registerConfigUpdateReceivedCallback(GenericCallback callback, byte userData=0)LD2410Async + registerDetectionDataReceivedCallback(DetectionDataCallback callback, byte userData=0)LD2410Async + requestAllConfigSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestAllStaticDataAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestAutoConfigStatusAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestAuxControlSettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestBluetoothMacAddressAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestDistanceResolutioncmAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestFirmwareAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + requestGateParametersAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + restoreFactorySettingsAsync(AsyncCommandCallback callback, byte userData=0)LD2410Async + setAsyncCommandTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline + setInactivityHandling(bool enable)LD2410Async + setInactivityTimeoutMs(unsigned long timeoutMs)LD2410Asyncinline + staticDataLD2410Async
    diff --git a/docu/classLD2410Async.html b/docu/classLD2410Async.html index 3184c4b..ca915d0 100644 --- a/docu/classLD2410Async.html +++ b/docu/classLD2410Async.html @@ -294,27 +294,15 @@ LD2410Types::ConfigData configData  Current configuration parameters of the radar.
      -unsigned long protocolVersion = 0 - Protocol version reported by the radar.
    -  -unsigned long bufferSize = 0 - Buffer size reported by the radar protocol.
    -  +LD2410Types::StaticData staticData + Static data of the radar.
    +  bool configModeEnabled = false  True if the sensor is currently in config mode.
      bool engineeringModeEnabled = false  True if the sensor is currently in engineering mode.
      -String firmware = "" - Firmware version string of the radar.
    -  -byte mac [6] - MAC address of the radar’s Bluetooth module (if available).
    -  -String macString = "" - MAC address as a human-readable string (e.g. "AA:BB:CC:DD:EE:FF").
    LD2410Types::AutoConfigStatus autoConfigStatus = LD2410Types::AutoConfigStatus::NOT_SET  Current status of the auto-configuration routine.
      @@ -345,7 +333,7 @@

    Definition at line 118 of file LD2410Async.h.

    +

    Definition at line 115 of file LD2410Async.h.

    @@ -372,7 +360,7 @@

    Definition at line 147 of file LD2410Async.h.

    +

    Definition at line 140 of file LD2410Async.h.

    @@ -397,7 +385,7 @@

    Definition at line 130 of file LD2410Async.h.

    +

    Definition at line 125 of file LD2410Async.h.

    @@ -435,13 +423,13 @@

    Definition at line 98 of file LD2410Async.h.

    -
    98 : byte {
    -
    99 SUCCESS, ///< Command completed successfully and ACK was received.
    -
    100 FAILED, ///< Command failed (sensor responded with negative ACK).
    -
    101 TIMEOUT, ///< No ACK received within the expected time window.
    -
    102 CANCELED ///< Command was canceled by the user before completion.
    -
    103 };
    +

    Definition at line 97 of file LD2410Async.h.

    +
    97 : byte {
    +
    98 SUCCESS, ///< Command completed successfully and ACK was received.
    +
    99 FAILED, ///< Command failed (sensor responded with negative ACK).
    +
    100 TIMEOUT, ///< No ACK received within the expected time window.
    +
    101 CANCELED ///< Command was canceled by the user before completion.
    +
    102 };
    @ TIMEOUT
    No ACK received within the expected time window.
    @ FAILED
    Command failed (sensor responded with negative ACK).
    @ SUCCESS
    Command completed successfully and ACK was received.
    @@ -477,10 +465,10 @@

    Definition at line 1646 of file LD2410Async.cpp.

    -
    1647{
    -
    1648 sensor = &serial;
    -
    1649}
    +

    Definition at line 1651 of file LD2410Async.cpp.

    +
    1652{
    +
    1653 sensor = &serial;
    +
    1654}

    @@ -503,10 +491,10 @@

    Definition at line 534 of file LD2410Async.cpp.

    -
    534 {
    -
    535 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    -
    536}
    +

    Definition at line 539 of file LD2410Async.cpp.

    +
    539 {
    +
    540 executeAsyncCommandCallback(asyncCommandCommandCode, LD2410Async::AsyncCommandResult::CANCELED);
    +
    541}

    @@ -528,10 +516,10 @@

    Returns
    true if there is an active command awaiting an ACK, false if the library is idle.
    -

    Definition at line 594 of file LD2410Async.cpp.

    -
    594 {
    -
    595 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    -
    596}
    +

    Definition at line 599 of file LD2410Async.cpp.

    +
    599 {
    +
    600 return asyncCommandActive || executeCommandSequenceActive || configureAllConfigSettingsAsyncConfigActive;
    +
    601}

    @@ -554,41 +542,41 @@

    begin(), the sensor cannot deliver detection results asynchronously.

    Returns
    true if the task was successfully started, false if already running.
    -

    Definition at line 1577 of file LD2410Async.cpp.

    -
    1577 {
    -
    1578 if (taskHandle == NULL) {
    - -
    1580 DEBUG_PRINTLN("Starting data processing task");
    -
    1581 taskStop = false;
    -
    1582
    -
    1583 BaseType_t result = xTaskCreate(
    -
    1584 [](void* param) {
    -
    1585 if (param) {
    -
    1586 static_cast<LD2410Async*>(param)->taskLoop();
    -
    1587 }
    -
    1588 vTaskDelete(NULL);
    -
    1589 },
    -
    1590 "LD2410Task",
    -
    1591 4096,
    -
    1592 this,
    -
    1593 1,
    -
    1594 &taskHandle
    -
    1595 );
    -
    1596
    -
    1597 if (result == pdPASS) {
    -
    1598 return true;
    -
    1599 }
    -
    1600 else {
    - -
    1602 DEBUG_PRINTLN("Task creation failed");
    -
    1603 taskHandle = NULL;
    -
    1604 return false;
    -
    1605 }
    -
    1606 }
    - -
    1608 DEBUG_PRINTLN("Data processing task already active");
    -
    1609 return false;
    -
    1610}
    +

    Definition at line 1582 of file LD2410Async.cpp.

    +
    1582 {
    +
    1583 if (taskHandle == NULL) {
    + +
    1585 DEBUG_PRINTLN("Starting data processing task");
    +
    1586 taskStop = false;
    +
    1587
    +
    1588 BaseType_t result = xTaskCreate(
    +
    1589 [](void* param) {
    +
    1590 if (param) {
    +
    1591 static_cast<LD2410Async*>(param)->taskLoop();
    +
    1592 }
    +
    1593 vTaskDelete(NULL);
    +
    1594 },
    +
    1595 "LD2410Task",
    +
    1596 4096,
    +
    1597 this,
    +
    1598 1,
    +
    1599 &taskHandle
    +
    1600 );
    +
    1601
    +
    1602 if (result == pdPASS) {
    +
    1603 return true;
    +
    1604 }
    +
    1605 else {
    + +
    1607 DEBUG_PRINTLN("Task creation failed");
    +
    1608 taskHandle = NULL;
    +
    1609 return false;
    +
    1610 }
    +
    1611 }
    + +
    1613 DEBUG_PRINTLN("Data processing task already active");
    +
    1614 return false;
    +
    1615}
    #define DEBUG_PRINT_MILLIS
    Definition LD2410Debug.h:48
    #define DEBUG_PRINTLN(...)
    Definition LD2410Debug.h:50
    @@ -630,7 +618,7 @@

    Serial.println("Failed to start auto-config.");
    }
    });
    -
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:98
    +
    AsyncCommandResult
    Result of an asynchronous command execution.
    Definition LD2410Async.h:97

    Do:

      @@ -651,16 +639,16 @@

      Returns
      true if the command was sent, false otherwise.
      -

      Definition at line 1042 of file LD2410Async.cpp.

      -
      1042 {
      - -
      1044 DEBUG_PRINTLN("Begin auto config");
      -
      1045
      -
      1046 if (asyncIsBusy()) return false;
      -
      1047
      -
      1048 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
      -
      1049};
      -
      bool asyncIsBusy()
      Checks if an asynchronous command is currently pending.
      +

      Definition at line 1047 of file LD2410Async.cpp.

      +
      1047 {
      + +
      1049 DEBUG_PRINTLN("Begin auto config");
      +
      1050
      +
      1051 if (asyncIsBusy()) return false;
      +
      1052
      +
      1053 return sendConfigCommandAsync(LD2410Defs::beginAutoConfigCommandData, callback, userData);
      +
      1054};
      +
      bool asyncIsBusy()
      Checks if an asynchronous command is currently pending.
      constexpr byte beginAutoConfigCommandData[6]
      Definition LD2410Defs.h:71
      @@ -739,44 +727,44 @@

      Returns
      true if the command sequence has been started, false otherwise.
      -

      Definition at line 1355 of file LD2410Async.cpp.

      -
      1356{
      -
      1357
      - -
      1359 DEBUG_PRINTLN("Writing config data to the LD2410");
      -
      1360
      -
      1361 if (asyncIsBusy()) return false;
      +

      Definition at line 1360 of file LD2410Async.cpp.

      +
      1361{
      1362
      -
      1363
      -
      1364 if (!configToWrite.isValid()) {
      - -
      1366 DEBUG_PRINTLN("configToWrite is invalid.");
      -
      1367 return false;
      -
      1368 }
      -
      1369
      -
      1370 configureAllConfigSettingsAsyncConfigActive = true;
      -
      1371 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
      -
      1372 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
      -
      1373 configureAllConfigSettingsAsyncConfigCallback = callback;
      -
      1374 configureAllConfigSettingsAsyncConfigUserData = userData;
      -
      1375 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
      -
      1376
      -
      1377 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
      -
      1378 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
      -
      1379 }
      -
      1380 else {
      -
      1381 if (configureAllConfigSettingsAsyncWriteFullConfig) {
      -
      1382 //If we save all changes anyway, no need to request current config data first
      -
      1383 return configureAllConfigSettingsAsyncWriteConfig();
      -
      1384 }
      -
      1385 else {
      -
      1386 return configureAllConfigSettingsAsyncRequestAllConfigData();
      -
      1387 }
      -
      1388 }
      -
      1389
      -
      1390}
      -
      bool isConfigModeEnabled() const
      Detects if config mode is enabled.
      -
      bool isValid() const
      Validates the configuration data for correctness.
      + +
      1364 DEBUG_PRINTLN("Writing config data to the LD2410");
      +
      1365
      +
      1366 if (asyncIsBusy()) return false;
      +
      1367
      +
      1368
      +
      1369 if (!configToWrite.isValid()) {
      + +
      1371 DEBUG_PRINTLN("configToWrite is invalid.");
      +
      1372 return false;
      +
      1373 }
      +
      1374
      +
      1375 configureAllConfigSettingsAsyncConfigActive = true;
      +
      1376 configureAllConfigSettingsAsyncConfigDataToWrite = configToWrite;
      +
      1377 configureAllConfigSettingsAsyncWriteFullConfig = writeAllConfigData;
      +
      1378 configureAllConfigSettingsAsyncConfigCallback = callback;
      +
      1379 configureAllConfigSettingsAsyncConfigUserData = userData;
      +
      1380 configureAllConfigSettingsAsyncConfigInitialConfigMode = isConfigModeEnabled();
      +
      1381
      +
      1382 if (!configureAllConfigSettingsAsyncConfigInitialConfigMode) {
      +
      1383 return enableConfigModeInternalAsync(configureAllConfigSettingsAsyncConfigModeEnabledCallback, 0);
      +
      1384 }
      +
      1385 else {
      +
      1386 if (configureAllConfigSettingsAsyncWriteFullConfig) {
      +
      1387 //If we save all changes anyway, no need to request current config data first
      +
      1388 return configureAllConfigSettingsAsyncWriteConfig();
      +
      1389 }
      +
      1390 else {
      +
      1391 return configureAllConfigSettingsAsyncRequestAllConfigData();
      +
      1392 }
      +
      1393 }
      +
      1394
      +
      1395}
      +
      bool isConfigModeEnabled() const
      Detects if config mode is enabled.
      +
      bool isValid() const
      Validates the configuration data for correctness.

    @@ -833,17 +821,17 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 1016 of file LD2410Async.cpp.

    -
    1019{
    - -
    1021 DEBUG_PRINTLN("Set Aux Control Settings");
    -
    1022 if (asyncIsBusy()) return false;
    -
    1023
    - -
    1025 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    -
    1026
    -
    1027 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1028}
    +

    Definition at line 1021 of file LD2410Async.cpp.

    +
    1024{
    + +
    1026 DEBUG_PRINTLN("Set Aux Control Settings");
    +
    1027 if (asyncIsBusy()) return false;
    +
    1028
    + +
    1030 if (!LD2410CommandBuilder::buildAuxControlCommand(cmd, lightControl, lightThreshold, outputControl)) return false;
    +
    1031
    +
    1032 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1033}
    bool buildAuxControlCommand(byte *out, LD2410Types::LightControl lightControl, byte lightThreshold, LD2410Types::OutputControl outputControl)
    constexpr byte setAuxControlSettingCommandData[8]
    Definition LD2410Defs.h:68
    @@ -892,21 +880,21 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 894 of file LD2410Async.cpp.

    -
    896{
    - -
    898 DEBUG_PRINTLN("Set Baud Rate");
    -
    899
    -
    900 if (asyncIsBusy()) return false;
    -
    901
    -
    902 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    -
    903 return false;
    +

    Definition at line 899 of file LD2410Async.cpp.

    +
    901{
    + +
    903 DEBUG_PRINTLN("Set Baud Rate");
    904
    -
    905 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    -
    906 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    -
    907
    -
    908 return sendConfigCommandAsync(cmd, callback, userData);
    -
    909}
    +
    905 if (asyncIsBusy()) return false;
    +
    906
    +
    907 if ((baudRateSetting < 1) || (baudRateSetting > 8))
    +
    908 return false;
    +
    909
    +
    910 byte cmd[sizeof(LD2410Defs::setBaudRateCommandData)];
    +
    911 if (!LD2410CommandBuilder::buildBaudRateCommand(cmd, baudRateSetting)) return false;
    +
    912
    +
    913 return sendConfigCommandAsync(cmd, callback, userData);
    +
    914}
    bool buildBaudRateCommand(byte *out, byte baudRateSetting)
    constexpr byte setBaudRateCommandData[6]
    Definition LD2410Defs.h:38
    @@ -951,14 +939,14 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 913 of file LD2410Async.cpp.

    -
    913 {
    -
    914
    -
    915 if (asyncIsBusy()) return false;
    -
    916
    -
    917 return configureBaudRateAsync((byte)baudRate, callback, userData);
    -
    918}
    -
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.
    +

    Definition at line 918 of file LD2410Async.cpp.

    +
    918 {
    +
    919
    +
    920 if (asyncIsBusy()) return false;
    +
    921
    +
    922 return configureBaudRateAsync((byte)baudRate, callback, userData);
    +
    923}
    +
    bool configureBaudRateAsync(byte baudRateSetting, AsyncCommandCallback callback, byte userData=0)
    Configures the UART baud rate of the sensor.

    @@ -997,17 +985,17 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 954 of file LD2410Async.cpp.

    -
    956{
    - -
    958 DEBUG_PRINTLN("Set Bluetooth Password");
    -
    959 if (asyncIsBusy()) return false;
    -
    960
    - -
    962 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    -
    963
    -
    964 return sendConfigCommandAsync(cmd, callback, userData);
    -
    965}
    +

    Definition at line 959 of file LD2410Async.cpp.

    +
    961{
    + +
    963 DEBUG_PRINTLN("Set Bluetooth Password");
    +
    964 if (asyncIsBusy()) return false;
    +
    965
    + +
    967 if (!LD2410CommandBuilder::buildBluetoothPasswordCommand(cmd, password)) return false;
    +
    968
    +
    969 return sendConfigCommandAsync(cmd, callback, userData);
    +
    970}
    bool buildBluetoothPasswordCommand(byte *out, const char *password)
    constexpr byte setBluetoothPasswordCommandData[10]
    Definition LD2410Defs.h:53
    @@ -1048,12 +1036,12 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 969 of file LD2410Async.cpp.

    -
    969 {
    -
    970
    -
    971 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    -
    972}
    -
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.
    +

    Definition at line 974 of file LD2410Async.cpp.

    +
    974 {
    +
    975
    +
    976 return configureBluetoothPasswordAsync(password.c_str(), callback, userData);
    +
    977}
    +
    bool configureBluetoothPasswordAsync(const char *password, AsyncCommandCallback callback, byte userData=0)
    Sets the password for bluetooth access to the sensor.

    @@ -1086,13 +1074,13 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 975 of file LD2410Async.cpp.

    -
    975 {
    - -
    977 DEBUG_PRINTLN("Reset Bluetooth Password");
    -
    978 if (asyncIsBusy()) return false;
    -
    979 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    -
    980}
    +

    Definition at line 980 of file LD2410Async.cpp.

    +
    980 {
    + +
    982 DEBUG_PRINTLN("Reset Bluetooth Password");
    +
    983 if (asyncIsBusy()) return false;
    +
    984 return sendConfigCommandAsync(LD2410Defs::setBluetoothPasswordCommandData, callback, userData);
    +
    985}

    @@ -1147,18 +1135,18 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 867 of file LD2410Async.cpp.

    -
    870{
    - -
    872 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    -
    873
    -
    874 if (asyncIsBusy()) return false;
    -
    875
    - -
    877 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    +

    Definition at line 872 of file LD2410Async.cpp.

    +
    875{
    + +
    877 DEBUG_PRINTLN("Set Distance Gate Sensitivity");
    878
    -
    879 return sendConfigCommandAsync(cmd, callback, userData);
    -
    880}
    +
    879 if (asyncIsBusy()) return false;
    +
    880
    + +
    882 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThreshold, stationaryThreshold)) return false;
    +
    883
    +
    884 return sendConfigCommandAsync(cmd, callback, userData);
    +
    885}
    bool buildGateSensitivityCommand(byte *out, byte gate, byte movingThreshold, byte stationaryThreshold)
    constexpr byte distanceGateSensitivityConfigCommandData[0x16]
    Definition LD2410Defs.h:77
    @@ -1209,23 +1197,23 @@

    Returns
    true if the sequence was started, false otherwise.
    -

    Definition at line 845 of file LD2410Async.cpp.

    -
    848{
    - -
    850 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    -
    851
    -
    852 if (asyncIsBusy()) return false;
    -
    853
    -
    854 if (!resetCommandSequence()) return false;
    -
    855
    -
    856 for (byte gate = 0; gate < 9; gate++) {
    - -
    858 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    -
    859 if (!addCommandToSequence(cmd)) return false;
    -
    860 }
    -
    861
    -
    862 return executeCommandSequenceAsync(callback, userData);
    -
    863}
    +

    Definition at line 850 of file LD2410Async.cpp.

    +
    853{
    + +
    855 DEBUG_PRINTLN("Set Distance Gate Sensitivities (all gates)");
    +
    856
    +
    857 if (asyncIsBusy()) return false;
    +
    858
    +
    859 if (!resetCommandSequence()) return false;
    +
    860
    +
    861 for (byte gate = 0; gate < 9; gate++) {
    + +
    863 if (!LD2410CommandBuilder::buildGateSensitivityCommand(cmd, gate, movingThresholds[gate], stationaryThresholds[gate])) return false;
    +
    864 if (!addCommandToSequence(cmd)) return false;
    +
    865 }
    +
    866
    +
    867 return executeCommandSequenceAsync(callback, userData);
    +
    868}

    @@ -1264,13 +1252,13 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 982 of file LD2410Async.cpp.

    -
    982 {
    - -
    984 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    -
    985 if (asyncIsBusy()) return false;
    -
    986 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    -
    987};
    +

    Definition at line 987 of file LD2410Async.cpp.

    +
    987 {
    + +
    989 DEBUG_PRINTLN("Set Distance Resolution 75cm");
    +
    990 if (asyncIsBusy()) return false;
    +
    991 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution75cmCommandData, callback, userData);
    +
    992};
    constexpr byte setDistanceResolution75cmCommandData[6]
    Definition LD2410Defs.h:34
    @@ -1319,17 +1307,17 @@

    Returns
    true if the command was sent, false if invalid parameters or the library is busy.
    -

    Definition at line 989 of file LD2410Async.cpp.

    -
    991{
    - -
    993 DEBUG_PRINTLN("Set Distance Resolution");
    -
    994 if (asyncIsBusy()) return false;
    -
    995
    -
    996 byte cmd[6];
    -
    997 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    -
    998
    -
    999 return sendConfigCommandAsync(cmd, callback, userData);
    -
    1000}
    +

    Definition at line 994 of file LD2410Async.cpp.

    +
    996{
    + +
    998 DEBUG_PRINTLN("Set Distance Resolution");
    +
    999 if (asyncIsBusy()) return false;
    +
    1000
    +
    1001 byte cmd[6];
    +
    1002 if (!LD2410CommandBuilder::buildDistanceResolutionCommand(cmd, distanceResolution)) return false;
    +
    1003
    +
    1004 return sendConfigCommandAsync(cmd, callback, userData);
    +
    1005}
    bool buildDistanceResolutionCommand(byte *out, LD2410Types::DistanceResolution resolution)
    @@ -1389,18 +1377,18 @@

    Returns
    true if the command was sent, false otherwise (busy state or invalid values).
    -

    Definition at line 808 of file LD2410Async.cpp.

    -
    811{
    - -
    813 DEBUG_PRINTLN("Set Max Gate");
    -
    814 if (asyncIsBusy()) return false;
    -
    815
    -
    816 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    -
    817 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    -
    818 return sendConfigCommandAsync(cmd, callback, userData);
    -
    819 }
    -
    820 return false;
    -
    821}
    +

    Definition at line 813 of file LD2410Async.cpp.

    +
    816{
    + +
    818 DEBUG_PRINTLN("Set Max Gate");
    +
    819 if (asyncIsBusy()) return false;
    +
    820
    +
    821 byte cmd[sizeof(LD2410Defs::maxGateCommandData)];
    +
    822 if (LD2410CommandBuilder::buildMaxGateCommand(cmd, maxMovingGate, maxStationaryGate, noOneTimeout)) {
    +
    823 return sendConfigCommandAsync(cmd, callback, userData);
    +
    824 }
    +
    825 return false;
    +
    826}
    bool buildMaxGateCommand(byte *out, byte maxMotionGate, byte maxStationaryGate, unsigned short noOneTimeout)
    constexpr byte maxGateCommandData[0x16]
    Definition LD2410Defs.h:83
    @@ -1441,13 +1429,13 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 1002 of file LD2410Async.cpp.

    -
    1002 {
    - -
    1004 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    -
    1005 if (asyncIsBusy()) return false;
    -
    1006 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    -
    1007};
    +

    Definition at line 1007 of file LD2410Async.cpp.

    +
    1007 {
    + +
    1009 DEBUG_PRINTLN("Set Distance Resolution 20cm");
    +
    1010 if (asyncIsBusy()) return false;
    +
    1011 return sendConfigCommandAsync(LD2410Defs::setDistanceResolution20cmCommandData, callback, userData);
    +
    1012};
    constexpr byte setDistanceResolution20cmCommandData[6]
    Definition LD2410Defs.h:35
    @@ -1481,13 +1469,13 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 939 of file LD2410Async.cpp.

    -
    939 {
    - -
    941 DEBUG_PRINTLN("Disable Bluetooth");
    -
    942 if (asyncIsBusy()) return false;
    -
    943 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    944}
    +

    Definition at line 944 of file LD2410Async.cpp.

    +
    944 {
    + +
    946 DEBUG_PRINTLN("Disable Bluetooth");
    +
    947 if (asyncIsBusy()) return false;
    +
    948 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    949}
    constexpr byte bluetoothSettingsOnCommandData[6]
    Definition LD2410Defs.h:47
    @@ -1523,11 +1511,11 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 797 of file LD2410Async.cpp.

    -
    797 {
    -
    798 if (asyncIsBusy()) return false;
    -
    799 return disableConfigModeInternalAsync(callback, userData);
    -
    800}
    +

    Definition at line 802 of file LD2410Async.cpp.

    +
    802 {
    +
    803 if (asyncIsBusy()) return false;
    +
    804 return disableConfigModeInternalAsync(callback, userData);
    +
    805}

    @@ -1562,13 +1550,13 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 838 of file LD2410Async.cpp.

    -
    838 {
    - -
    840 DEBUG_PRINTLN("Disable EngineeringMode");
    -
    841 if (asyncIsBusy()) return false;
    -
    842 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    -
    843}
    +

    Definition at line 843 of file LD2410Async.cpp.

    +
    843 {
    + +
    845 DEBUG_PRINTLN("Disable EngineeringMode");
    +
    846 if (asyncIsBusy()) return false;
    +
    847 return sendConfigCommandAsync(LD2410Defs::engineeringModeDisableCommandData, callback, userData);
    +
    848}
    constexpr byte engineeringModeDisableCommandData[4]
    Definition LD2410Defs.h:62
    @@ -1599,9 +1587,9 @@

    Definition at line 372 of file LD2410Async.h.

    -
    372{ setInactivityHandling(false); };
    -
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.
    +

    Definition at line 310 of file LD2410Async.h.

    +
    310{ setInactivityHandling(false); };
    +
    void setInactivityHandling(bool enable)
    Enables or disables automatic inactivity handling of the sensor.

    @@ -1634,14 +1622,14 @@

    Returns
    true if the command has been sent, false if the command cant be sent (typically because another async command is pending).
    -

    Definition at line 931 of file LD2410Async.cpp.

    -
    931 {
    - -
    933 DEBUG_PRINTLN("Enable Bluetooth");
    -
    934 if (asyncIsBusy()) return false;
    -
    935
    -
    936 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    -
    937}
    +

    Definition at line 936 of file LD2410Async.cpp.

    +
    936 {
    + +
    938 DEBUG_PRINTLN("Enable Bluetooth");
    +
    939 if (asyncIsBusy()) return false;
    +
    940
    +
    941 return sendConfigCommandAsync(LD2410Defs::bluetoothSettingsOnCommandData, callback, userData);
    +
    942}

    @@ -1678,11 +1666,11 @@

    Returns
    true if the command was sent, false if blocked.
    -

    Definition at line 786 of file LD2410Async.cpp.

    -
    786 {
    -
    787 if (asyncIsBusy()) return false;
    -
    788 return enableConfigModeInternalAsync(callback, userData);
    -
    789}
    +

    Definition at line 791 of file LD2410Async.cpp.

    +
    791 {
    +
    792 if (asyncIsBusy()) return false;
    +
    793 return enableConfigModeInternalAsync(callback, userData);
    +
    794}

    @@ -1719,13 +1707,13 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 831 of file LD2410Async.cpp.

    -
    831 {
    - -
    833 DEBUG_PRINTLN("Enable EngineeringMode");
    -
    834 if (asyncIsBusy()) return false;
    -
    835 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    -
    836}
    +

    Definition at line 836 of file LD2410Async.cpp.

    +
    836 {
    + +
    838 DEBUG_PRINTLN("Enable EngineeringMode");
    +
    839 if (asyncIsBusy()) return false;
    +
    840 return sendConfigCommandAsync(LD2410Defs::engineeringModeEnableCommandData, callback, userData);
    +
    841}
    constexpr byte engineeringModeEnableCommandData[4]
    Definition LD2410Defs.h:59
    @@ -1756,8 +1744,8 @@

    Definition at line 363 of file LD2410Async.h.

    -
    363{ setInactivityHandling(true); };
    +

    Definition at line 302 of file LD2410Async.h.

    +
    302{ setInactivityHandling(true); };

    @@ -1780,34 +1768,34 @@

    end(), no more data will be processed until begin() is called again. This is useful to temporarily suspend radar processing without rebooting.

    Returns
    true if the task was stopped, false if it was not active.
    -

    Definition at line 1612 of file LD2410Async.cpp.

    -
    1612 {
    -
    1613 if (taskHandle != NULL) {
    - -
    1615 DEBUG_PRINTLN("Stopping data processing task");
    -
    1616 taskStop = true;
    -
    1617
    -
    1618 // Wait up to 200ms for graceful exit
    -
    1619 for (int i = 0; i < 20; i++) {
    -
    1620 if (taskHandle == NULL) {
    - -
    1622 DEBUG_PRINTLN("Task exited gracefully");
    -
    1623 return true;
    -
    1624 }
    -
    1625 vTaskDelay(1 / portTICK_PERIOD_MS);
    -
    1626 }
    -
    1627
    -
    1628 // If still not NULL, force delete
    - -
    1630 DEBUG_PRINTLN("Forcing task stop");
    -
    1631 vTaskDelete(taskHandle);
    -
    1632 taskHandle = NULL;
    -
    1633 return true;
    -
    1634 }
    -
    1635
    -
    1636 DEBUG_PRINTLN("Data processing task is not active");
    -
    1637 return false;
    -
    1638}
    +

    Definition at line 1617 of file LD2410Async.cpp.

    +
    1617 {
    +
    1618 if (taskHandle != NULL) {
    + +
    1620 DEBUG_PRINTLN("Stopping data processing task");
    +
    1621 taskStop = true;
    +
    1622
    +
    1623 // Wait up to 200ms for graceful exit
    +
    1624 for (int i = 0; i < 20; i++) {
    +
    1625 if (taskHandle == NULL) {
    + +
    1627 DEBUG_PRINTLN("Task exited gracefully");
    +
    1628 return true;
    +
    1629 }
    +
    1630 vTaskDelay(1 / portTICK_PERIOD_MS);
    +
    1631 }
    +
    1632
    +
    1633 // If still not NULL, force delete
    + +
    1635 DEBUG_PRINTLN("Forcing task stop");
    +
    1636 vTaskDelete(taskHandle);
    +
    1637 taskHandle = NULL;
    +
    1638 return true;
    +
    1639 }
    +
    1640
    +
    1641 DEBUG_PRINTLN("Data processing task is not active");
    +
    1642 return false;
    +
    1643}

    @@ -1837,8 +1825,8 @@

    Returns
    Timeout in milliseconds.
    -

    Definition at line 666 of file LD2410Async.h.

    -
    666{ return asyncCommandTimeoutMs; }
    +

    Definition at line 583 of file LD2410Async.h.

    +
    583{ return asyncCommandTimeoutMs; }

    @@ -1891,11 +1879,11 @@

    Returns
    A copy of the current ConfigData.
    -

    Definition at line 1451 of file LD2410Async.cpp.

    -
    1451 {
    -
    1452 return configData;
    -
    1453}
    -
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.
    +

    Definition at line 1456 of file LD2410Async.cpp.

    +
    1456 {
    +
    1457 return configData;
    +
    1458}
    +
    LD2410Types::ConfigData configData
    Current configuration parameters of the radar.

    @@ -1946,8 +1934,8 @@

    Returns
    Const reference to the current ConfigData.
    -

    Definition at line 619 of file LD2410Async.h.

    -
    619{ return configData; }
    +

    Definition at line 540 of file LD2410Async.h.

    +
    540{ return configData; }

    @@ -1990,11 +1978,11 @@

    Returns
    A copy of the current DetectionData.
    -

    Definition at line 1447 of file LD2410Async.cpp.

    -
    1447 {
    -
    1448 return detectionData;
    -
    1449}
    -
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.
    +

    Definition at line 1452 of file LD2410Async.cpp.

    +
    1452 {
    +
    1453 return detectionData;
    +
    1454}
    +
    LD2410Types::DetectionData detectionData
    Latest detection results from the radar.

    @@ -2045,8 +2033,8 @@

    Returns
    Const reference to the current DetectionData.
    -

    Definition at line 536 of file LD2410Async.h.

    -
    536{ return detectionData; }
    +

    Definition at line 461 of file LD2410Async.h.

    +
    461{ return detectionData; }

    @@ -2076,8 +2064,8 @@

    Returns
    Timeout in milliseconds.
    -

    Definition at line 405 of file LD2410Async.h.

    -
    405{ return inactivityHandlingTimeoutMs; };
    +

    Definition at line 340 of file LD2410Async.h.

    +
    340{ return inactivityHandlingTimeoutMs; };

    @@ -2107,11 +2095,11 @@

    Returns
    true if config mode is anabled, false if config mode is disabled
    -

    Definition at line 724 of file LD2410Async.h.

    -
    724 {
    -
    725 return configModeEnabled;
    -
    726 };
    -
    bool configModeEnabled
    True if the sensor is currently in config mode.
    +

    Definition at line 636 of file LD2410Async.h.

    +
    636 {
    +
    637 return configModeEnabled;
    +
    638 };
    +
    bool configModeEnabled
    True if the sensor is currently in config mode.

    @@ -2141,11 +2129,11 @@

    Returns
    true if engineering mode is anabled, false if engineering mode is disabled
    -

    Definition at line 776 of file LD2410Async.h.

    -
    776 {
    - -
    778 };
    -
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.
    +

    Definition at line 682 of file LD2410Async.h.

    +
    682 {
    + +
    684 };
    +
    bool engineeringModeEnabled
    True if the sensor is currently in engineering mode.

    @@ -2175,8 +2163,8 @@

    Returns
    true if inactivity handling is enabled, false otherwise.
    -

    Definition at line 381 of file LD2410Async.h.

    -
    381{ return inactivityHandlingEnabled; };
    +

    Definition at line 318 of file LD2410Async.h.

    +
    318{ return inactivityHandlingEnabled; };

    @@ -2211,17 +2199,17 @@

    Returns
    true if the command was sent, false otherwise.
    -

    Definition at line 1433 of file LD2410Async.cpp.

    -
    1433 {
    -
    1434
    -
    1435
    - -
    1437 DEBUG_PRINTLN("Reboot");
    -
    1438
    -
    1439 if (asyncIsBusy()) return false;
    +

    Definition at line 1438 of file LD2410Async.cpp.

    +
    1438 {
    +
    1439
    1440
    -
    1441 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    -
    1442}
    + +
    1442 DEBUG_PRINTLN("Reboot");
    +
    1443
    +
    1444 if (asyncIsBusy()) return false;
    +
    1445
    +
    1446 return enableConfigModeInternalAsync(rebootEnableConfigModeCallback, 0);
    +
    1447}
    @@ -2378,8 +2366,8 @@

    sender->getConfigDataRef().print();
    }
    });
    -
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    -
    void print() const
    Debug helper: print configuration contents to Serial.
    +
    const LD2410Types::ConfigData & getConfigDataRef() const
    Access the current config data without making a copy.
    +
    void print() const
    Debug helper: print configuration contents to Serial.

    Do: