From 07568530fdbecef4fd123ea1daacfdd20ed944c2 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Mon, 16 Oct 2023 22:23:26 +0200 Subject: [PATCH 01/19] [P159] Add LD2410 Radar presence detection --- lib/ld2410/LICENSE | 504 ++++++++ lib/ld2410/README.md | 89 ++ .../examples/advanced/LD2410-alarm-final.json | 411 +++++++ lib/ld2410/examples/advanced/README.md | 12 + .../examples/advanced/udpToSerialStudio.cpp | 488 ++++++++ .../examples/basicSensor/basicSensor.ino | 120 ++ .../examples/setupSensor/setupSensor.ino | 330 ++++++ lib/ld2410/include/README | 39 + lib/ld2410/keywords.txt | 50 + lib/ld2410/ld2410andbreakout.jpg | Bin 0 -> 176754 bytes lib/ld2410/ld2410pcb.jpg | Bin 0 -> 15527 bytes lib/ld2410/ld2410pinout.jpg | Bin 0 -> 13242 bytes lib/ld2410/lib/README | 46 + lib/ld2410/library.properties | 11 + lib/ld2410/platformio.ini | 32 + lib/ld2410/src/ld2410.cpp | 1049 +++++++++++++++++ lib/ld2410/src/ld2410.h | 216 ++++ lib/ld2410/test/README | 23 + src/Custom-sample.h | 2 + src/_P159_LD2410.ino | 245 ++++ src/src/CustomBuild/define_plugin_sets.h | 6 + src/src/PluginStructs/P159_data_struct.cpp | 190 +++ src/src/PluginStructs/P159_data_struct.h | 98 ++ 23 files changed, 3961 insertions(+) create mode 100644 lib/ld2410/LICENSE create mode 100644 lib/ld2410/README.md create mode 100644 lib/ld2410/examples/advanced/LD2410-alarm-final.json create mode 100644 lib/ld2410/examples/advanced/README.md create mode 100644 lib/ld2410/examples/advanced/udpToSerialStudio.cpp create mode 100644 lib/ld2410/examples/basicSensor/basicSensor.ino create mode 100644 lib/ld2410/examples/setupSensor/setupSensor.ino create mode 100644 lib/ld2410/include/README create mode 100644 lib/ld2410/keywords.txt create mode 100644 lib/ld2410/ld2410andbreakout.jpg create mode 100644 lib/ld2410/ld2410pcb.jpg create mode 100644 lib/ld2410/ld2410pinout.jpg create mode 100644 lib/ld2410/lib/README create mode 100644 lib/ld2410/library.properties create mode 100644 lib/ld2410/platformio.ini create mode 100644 lib/ld2410/src/ld2410.cpp create mode 100644 lib/ld2410/src/ld2410.h create mode 100644 lib/ld2410/test/README create mode 100644 src/_P159_LD2410.ino create mode 100644 src/src/PluginStructs/P159_data_struct.cpp create mode 100644 src/src/PluginStructs/P159_data_struct.h diff --git a/lib/ld2410/LICENSE b/lib/ld2410/LICENSE new file mode 100644 index 0000000000..8000a6faac --- /dev/null +++ b/lib/ld2410/LICENSE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/lib/ld2410/README.md b/lib/ld2410/README.md new file mode 100644 index 0000000000..030b2bcdb2 --- /dev/null +++ b/lib/ld2410/README.md @@ -0,0 +1,89 @@ +# LD2410 +## Introduction + +An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. + +![](ld2410andbreakout.jpg) + +The code in this library is based heavily off this [piece of work for ESPHome](https://github.com/rain931215/ESPHome-LD2410) and the manufacturer datasheet. + +The LD2410, as sold for configuration with the common breakout boards shown above communicates over serial at 256000 baud by default. This library allows you to configure and use the sensor over this serial connection. As the LD2410 is a device that uses a high baud rate, a microcontroller with a spare hardware UART for this communication is preferable to bit-banged software serial. + +The modules also provide an 'active high' output on the 'OUT' pin which can be used to signal presence, based off the settings configured. Once the modules are configured it is not necessary to use their UART, but it provides much more information. + +## Connections + +The module must be powered by 5V or higher, but does 3.3v I/O, please consider this when working with the module. + +![](ld2410pinout.jpg) + +The default header pitch is 1.27mm, half the size of the usual 0.1" hobbyist pin headers so you may need to buy some, or carefully de-solder the existing pins to use the module. + +![](ld2410pcb.jpg) + +If you have the breakout board, you can use the VCC, GND, TX and RX pins to work with the module. + +## Reading distances + +The LD2410 has a number of 'gates', each of which correspond to a distance of about 0.75m and many of the settings/measurements are calculated from this. + +You set the sensitivity at each 'gate' on a scale 0-100, any object that doesn't register above this scale is not reported on. The defaults do a good job of spotting an adult person and estimating distance. + +Both moving and stationary targets are detected separately, with a value for each in centimetres. The accuracy of this distance isn't amazing but given this sensor is targeted as a replacement for something like a passive infrared sensor it's a very big improvement. + +The minimal sketch to read distances is in the example 'basicSensor.ino'. + +## Configuring the sensor + +Each 'gate' has a sensitivity value for stationary and moving targets. You can also set a maximum gate that ignores readings beyond a certain gate for both stationary and moving targets and an 'idle timeout' for how long it reports on something after moving away. + +A sketch to configure the sensor is in the example 'setupSensor.ino' it's an interactive sketch that will take commands sent over the Serial monitor. It should demonstrate all the various bits of the configuration you can change. + +## Methods/variables + +Many of the configuration methods return a boolean value. This is because the protocol between the LD2410 and the microcontroller involves requesting the change and the LD2410 acknowledges this with success or failure. This means these methods are synchronous, they will block until the LD2410 responds with succeed/fail or the transaction times out after 100ms. + +The presence/distance readings report the most recent values as the LD2410 continuously streams data, which is processed by calling *read()* as often as is practical. + +``` +bool ld2410::begin(Stream &radarStream, bool waitForRadar = true) - You must supply a Stream for the UART (eg. Serial1 that the LD2410 is connected to) and by default it waits for the radar to respond so it feeds back if it is connected +void debug(Stream &debugStream) - Enables debugging output of the library on a Stream you pass it (eg. Serial) +void read() - You must call this frequently in your main loop to process incoming frames from the LD2410 +bool isConnected() - Is the LD2410 connected and sending data regularly +bool presenceDetected() - Is a presence detected. Nice and simple +bool stationaryTargetDetected() - Is a stationary target detected. +uint16_t stationaryTargetDistance() - Distance to the stationary target in centimetres. +uint8_t stationaryTargetEnergy() - The 'energy'of the target on a scale 0-100, which also a kind of confidence value. +bool movingTargetDetected() - Is a moving target detected. +uint16_t movingTargetDistance() - Distance to the moving target in centimetres. +uint8_t movingTargetEnergy() - The 'energy'of the target on a scale 0-100, which also a kind of confidence value. +bool requestFirmwareVersion() - Request the firmware version, which is then available on the values below. +uint8_t firmware_major_version +uint8_t firmware_minor_version +uint32_t firmware_bugfix_version - This is coded as HEX +bool requestCurrentConfiguration() - Request the full current configuration, which you can then read with the variable & methods below. +uint8_t max_gate - The max gate ID reported by the sensor +uint8_t max_moving_gate - The highest gate ID that will report moving targets +uint8_t max_stationary_gate - The highers gate ID that will report stationary targets +uint8_t motion_sensitivity[max_gate + 1] - One value 0-100 per gate +uint8_t stationary_sensitivity[max_gate + 1] - One value 0-100 per gate +bool setMaxValues(uint8_t moving, uint8_t stationary, uint16_t inactivityTimer) - Set furthest gates and inactivitity timer for targets +bool setGateSensitivity(uint8_t gate, uint8_t moving, uint8_t stationary) - Set gate sensitivites 0-100 +bool requestRestart() - Request a restart of the LD2410. Which is needed to apply some settings. +bool requestFactoryReset() - Request a factory reset of the LD2410. You need to restart afterwards to take effect. +bool requestStartEngineeringMode() - Request engineering mode, which sends more data on targets. +bool requestEndEngineeringMode() - Request the end of engineering mode. +``` + +## Changelog + +- v0.1.1 - Readings for stationary and moving targets were transposed, now fixed. Fixes #1 - stationaryTargetDetected() always true. Many improvements to parsing of commands/acks from the LD2410 and better debug logging. +- v0.1.0 - Initial release + +## Known issues/to-do list + +The code is somewhat verbose/inefficient. + +No support for engineering mode data yet. + +Feel free to contact me with PRs, suggestions and improvements. diff --git a/lib/ld2410/examples/advanced/LD2410-alarm-final.json b/lib/ld2410/examples/advanced/LD2410-alarm-final.json new file mode 100644 index 0000000000..c0f5cd94b6 --- /dev/null +++ b/lib/ld2410/examples/advanced/LD2410-alarm-final.json @@ -0,0 +1,411 @@ +{ + "frameEnd": "*/", + "frameParser": "/* \n * @brief Frame parsing function, you can modify this to suit your needs.\n * \n * By customizing this code, you can use a single JSON project file to \n * process different kinds of frames that are sent by the microcontroller \n * or any data source that is connected to Serial Studio. Frame parsing code\n * is specific to every JSON project that you create.\n *\n * @param frame string with the latest received frame.\n * @param separator data separator sequence defined by the JSON project.\n *\n * @note. only data that is *inside* the data delimiters will\n * be processed by the frame parser.\n *\n * @note you can safely declare global variables outside the\n * @c parse() function.\n */\nfunction parse(frame, separator) {\n return frame.split(separator);\n}", + "frameStart": "/*", + "groups": [ + { + "datasets": [ + { + "alarm": 0, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 0, + "min": 0, + "title": "Moving", + "units": "cm", + "value": "%2", + "widget": "" + }, + { + "alarm": 0, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 0, + "min": 0, + "title": "Detection", + "units": "cm", + "value": "%3", + "widget": "" + }, + { + "alarm": 50, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Energy", + "units": "dBZ", + "value": "%4", + "widget": "" + } + ], + "title": "Moving Target", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": 0, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 0, + "min": 0, + "title": "Stationary", + "units": "cm", + "value": "%5", + "widget": "" + }, + { + "alarm": 0, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 0, + "min": 0, + "title": "Detection", + "units": "cm", + "value": "%6", + "widget": "" + }, + { + "alarm": 50, + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 0, + "min": 0, + "title": "Energy", + "units": "dBZ", + "value": "%7", + "widget": "" + } + ], + "title": "Stationary Target", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%8", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%9", + "widget": "gauge" + }, + { + "alarm": "%10", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%11", + "widget": "gauge" + } + ], + "title": "Gate 0", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%12", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%13", + "widget": "gauge" + }, + { + "alarm": "%14", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%15", + "widget": "gauge" + } + ], + "title": "Gate 1", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%16", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%17", + "widget": "gauge" + }, + { + "alarm": "%18", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%19", + "widget": "gauge" + } + ], + "title": "Gate 2", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%20", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%21", + "widget": "gauge" + }, + { + "alarm": "%22", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%23", + "widget": "gauge" + } + ], + "title": "Gate 3", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%24", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%25", + "widget": "gauge" + }, + { + "alarm": "%26", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%27", + "widget": "gauge" + } + ], + "title": "Gate 4", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%28", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%29", + "widget": "gauge" + }, + { + "alarm": "%30", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%31", + "widget": "gauge" + } + ], + "title": "Gate 5", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%32", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%33", + "widget": "gauge" + }, + { + "alarm": "%34", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%35", + "widget": "gauge" + } + ], + "title": "Gate 6", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%36", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%37", + "widget": "gauge" + }, + { + "alarm": "%38", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%39", + "widget": "gauge" + } + ], + "title": "Gate 7", + "widget": "multiplot" + }, + { + "datasets": [ + { + "alarm": "%40", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Movement Energy", + "units": "dBZ", + "value": "%41", + "widget": "gauge" + }, + { + "alarm": "%42", + "fft": false, + "fftSamples": 1024, + "graph": true, + "led": false, + "log": false, + "max": 100, + "min": 0, + "title": "Static Energy", + "units": "dBZ", + "value": "%43", + "widget": "gauge" + } + ], + "title": "Gate 8", + "widget": "multiplot" + } + ], + "separator": ",", + "title": "%1" +} diff --git a/lib/ld2410/examples/advanced/README.md b/lib/ld2410/examples/advanced/README.md new file mode 100644 index 0000000000..f839d2fa7c --- /dev/null +++ b/lib/ld2410/examples/advanced/README.md @@ -0,0 +1,12 @@ +Advanced udpToSerialStudio.cpp + +SerialStudio reads the UDP output of the ESP and plots the various +data points. The ESP also has a command console on both Serial +and UDP port 8091, which allow configuration of LD2410 device. + + +You will need the JSON project file in this folder and the app "SerialStudio" at this link: +- https://github.com/Serial-Studio/Serial-Studio/releases + +### This file maps to csv data: use via SerialStudio Setup option + ld2410-alarm-final.json buildWithAlarmSerialStudioCSV() diff --git a/lib/ld2410/examples/advanced/udpToSerialStudio.cpp b/lib/ld2410/examples/advanced/udpToSerialStudio.cpp new file mode 100644 index 0000000000..cb6ab5b370 --- /dev/null +++ b/lib/ld2410/examples/advanced/udpToSerialStudio.cpp @@ -0,0 +1,488 @@ +/* + * Example sketch for reporting on readings from the LD2410 using + * whatever settings are currently configured. + * + * The sketch assumes an ESP32 board with the LD2410 connected as Serial2 + * on pins 16 & 17, the serial configuration for other boards may vary. + * + * Program broadcasts [reporting data] on port 8090, and listens on + * port 8091 for commands or configuration requests, + * responses are sent to callers ip/port as discovered. + * + * Where [reporting data], can be CSV-like, JSON with Short or Long attributes as + * documented in [SerialStudio's page](https://github.com/Serial-Studio/Serial-Studio/wiki/Communication-Protocol) + * + * WIFI_SSID and WIFI_PASS are double-quoted environment variables with related values, + * -- example: export PLATFORMIO_BUILD_FLAGS=-DWIFI_PASS='"ssid-password"' -DWIFI_SSID='"ssid-value"' + * or + * -- example: export WIFI_PASS='"ssid-password"' + * -- export WIFI_SSID='"ssid-value"' + * + * Gates: + * - each gate is 0.75m or 30 inches + * 0 to 9 gates = 6.75m or 22 feet ish + * + * + */ + +#include +#include +#include +#include + +#define RXD2 16 // 8 +#define TXD2 17 // 9 +#define MAX_COMMAND_TOKENS 32 +#define SNAME "LD2410 Sensor 01" +#define SERIAL_STUDIO 1 + +#ifdef SERIAL_STUDIO +AsyncUDP udp; +#endif + +const char* ssid = WIFI_SSID; +const char* ssidPassword = WIFI_PASS; +const uint16_t sendPort = 8090; +const uint16_t listenPort = 8091; +IPAddress ipSerialStudio(10,100,1,5); + +uint16_t remotePort = 8090; // default value, will be overridden on reciept of udp request +IPAddress ipRemote(10,100,1,5); // default value, will be overridden on reciept of udp request + +ld2410 radar; +volatile bool udpFlag = false; // send for callback +uint32_t lastReading = 0; +uint32_t pos = 0; +uint32_t pos1 = 0; +uint32_t pos2 = 0; + +bool sending_enabled = true; +char buffer1[128]; +char serialBuffer[256]; +String command = ""; +String output = ""; + +/* + * Available Commands */ +String availableCommands() { + String sCmd = ""; + sCmd += "\nSupported commands:"; + sCmd += "\n\t( 1) help: this text."; + sCmd += "\n\t( 2) streamstart: start sending udp data to SerialStudio."; + sCmd += "\n\t( 3) streamstop: stop sending to SerialStream."; + sCmd += "\n\t( 4) read: read current values from the sensor"; + sCmd += "\n\t( 5) readconfig: read the configuration from the sensor"; + sCmd += "\n\t( 6) setmaxvalues (2-8) (0-65535)seconds"; + sCmd += "\n\t( 7) setsensitivity (2-8|255) (0-100)"; + sCmd += "\n\t( 8) restart: restart the sensor"; + sCmd += "\n\t( 9) readversion: read firmware version"; + sCmd += "\n\t(10) factoryreset: factory reset the sensor"; + sCmd += "\n\t(11) deviceinfo: LD2410 device info"; + sCmd += "\n\t(12) reboot: reboot hosting micro-controller\n"; + + return sCmd; +} + +/* + * Command Processor + * - there are two ommands not implemented + * - requestConfigurationModeBegin() + * - requestConfigurationModeEnd() + * Otherwise all commands are available as options + */ +String commandProcessor(String &cmdStr) { + String sBuf = "\n"; + int iCmd = cmdStr.toInt(); + cmdStr.trim(); + + if(cmdStr.equals("help") || iCmd == 1) + { + sBuf += availableCommands(); + } + else if(cmdStr.equals("streamstart") || iCmd == 2) + { + sending_enabled = true; + sBuf += "\nSerialStudio UDP Stream Enabled. \n"; + } + else if(cmdStr.equals("streamstop") || iCmd == 3) + { + sending_enabled = false; + sBuf += "\nSerialStudio UDP Stream Disabled.\n"; + } + else if(cmdStr.equals("read") || iCmd == 4) + { + sBuf += "\nReading from sensor: "; + if(radar.isConnected()) + { + sBuf += "OK\n"; + if(radar.presenceDetected()) + { + if(radar.stationaryTargetDetected()) + { + sBuf += "Stationary target: "; + sBuf += radar.stationaryTargetDistance(); + sBuf += " cm energy: "; + sBuf += radar.stationaryTargetEnergy(); + sBuf += " dBZ\n"; + } + if(radar.movingTargetDetected()) + { + sBuf += "Moving target: "; + sBuf += radar.movingTargetDistance(); + sBuf += " cm energy: "; + sBuf += radar.movingTargetEnergy(); + sBuf += " dBZ\n"; + } + if(!radar.stationaryTargetDetected() && !radar.movingTargetDetected()) { + sBuf += "No Detection, in Idle Hold window of: "; + sBuf += radar.cfgSensorIdleTimeInSeconds(); + sBuf += " seconds\n"; + } + } + else + { + sBuf += "\nnothing detected\n"; + } + } + else + { + sBuf += "failed to read\n"; + } + } + else if(cmdStr.equals("readconfig") || iCmd == 5) + { + sBuf += "\nReading configuration from sensor: "; + if(radar.requestCurrentConfiguration()) + { + sBuf += "OK\n"; + sBuf += "Maximum gate ID: "; + sBuf += radar.cfgMaxGate(); + sBuf += "\n"; + sBuf += "Maximum gate for moving targets: "; + sBuf += radar.cfgMaxMovingGate(); + sBuf += "\n"; + sBuf += "Maximum gate for stationary targets: "; + sBuf += radar.cfgMaxStationaryGate(); + sBuf += "\n"; + sBuf += "Idle time for targets: "; + sBuf += radar.cfgSensorIdleTimeInSeconds() ; + sBuf += "s\n"; + sBuf += "Gate sensitivity\n"; + + for(uint8_t gate = 0; gate < LD2410_MAX_GATES; gate++) + { + sBuf += "Gate "; + sBuf += gate; + sBuf += " moving targets: "; + sBuf += radar.cfgMovingGateSensitivity(gate); + sBuf += " dBZ stationary targets: "; + sBuf += radar.cfgStationaryGateSensitivity(gate); + sBuf += " dBZ\n"; + } + } + else + { + sBuf += "Failed\n"; + } + } + else if(cmdStr.startsWith("setmaxvalues") || iCmd == 6) + { + uint8_t firstSpace = cmdStr.indexOf(' '); + uint8_t secondSpace = cmdStr.indexOf(' ',firstSpace + 1); + uint8_t thirdSpace = cmdStr.indexOf(' ',secondSpace + 1); + + uint8_t newMovingMaxDistance = (cmdStr.substring(firstSpace,secondSpace)).toInt(); + uint8_t newStationaryMaxDistance = (cmdStr.substring(secondSpace,thirdSpace)).toInt(); + uint16_t inactivityTimer = (cmdStr.substring(thirdSpace,cmdStr.length())).toInt(); + + if(newMovingMaxDistance > 0 && newStationaryMaxDistance > 0 && newMovingMaxDistance <= 8 && newStationaryMaxDistance <= 8) + { + sBuf += "\nSetting max values to gate "; + sBuf += newMovingMaxDistance; + sBuf += " moving targets, gate "; + sBuf += newStationaryMaxDistance; + sBuf += " stationary targets, "; + sBuf += inactivityTimer; + sBuf += "s inactivity timer: "; + if(radar.setMaxValues(newMovingMaxDistance, newStationaryMaxDistance, inactivityTimer)) + { + sBuf += "OK, now restart to apply settings\n"; + } + else + { + sBuf += "failed\n"; + } + } + else + { + sBuf += "Can't set distances to "; + sBuf += newMovingMaxDistance; + sBuf += " moving "; + sBuf += newStationaryMaxDistance; + sBuf += " stationary, try again\n"; + } + } + else if(cmdStr.startsWith("setsensitivity") || iCmd == 7) + { + uint8_t firstSpace = cmdStr.indexOf(' '); + uint8_t secondSpace = cmdStr.indexOf(' ',firstSpace + 1); + uint8_t thirdSpace = cmdStr.indexOf(' ',secondSpace + 1); + + uint8_t gate = (cmdStr.substring(firstSpace,secondSpace)).toInt(); + uint8_t motionSensitivity = (cmdStr.substring(secondSpace,thirdSpace)).toInt(); + uint8_t stationarySensitivity = (cmdStr.substring(thirdSpace,cmdStr.length())).toInt(); + + // Command method 1 -- limit gate to 0-8 -- set one gate set + // Command method 2 -- limit gate to 255 -- set all gates to same sensitivity value + if(motionSensitivity >= 0 && stationarySensitivity >= 0 && motionSensitivity <= 100 && stationarySensitivity <= 100) + { + sBuf += "\nSetting gate "; + sBuf += gate; + sBuf += " motion sensitivity to "; + sBuf += motionSensitivity; + sBuf += " dBZ & stationary sensitivity to "; + sBuf += stationarySensitivity; + sBuf += " dBZ: \n"; + if(radar.setGateSensitivityThreshold(gate, motionSensitivity, stationarySensitivity)) + { + sBuf += "OK, now restart to apply settings\n"; + } + else + { + sBuf += "failed\n"; + } + } + else + { + sBuf += "Can't set gate "; + sBuf += gate; + sBuf += " motion sensitivity to "; + sBuf += motionSensitivity; + sBuf += " dBZ & stationary sensitivity to "; + sBuf += stationarySensitivity; + sBuf += " dBZ, try again\n"; + } + } + else if(cmdStr.equals("restart") || iCmd ==8) + { + if(radar.requestRestart()) + { + delay(1500); + if(radar.requestStartEngineeringMode()) { + sBuf += "\nRestarting sensor: OK\n"; + } + } + else + { + sBuf += "\nRestarting sensor: failed\n"; + } + } + else if(cmdStr.equals("readversion") || iCmd == 9) + { + sBuf += "\nRequesting firmware version: "; + if(radar.requestFirmwareVersion()) + { + sBuf += radar.cmdFirmwareVersion(); + } + else + { + sBuf += "Failed\n"; + } + } + else if(cmdStr.equals("factoryreset") || iCmd == 10) + { + sBuf += "\nFactory resetting sensor: "; + if(radar.requestFactoryReset()) + { + sBuf += "OK, now restart sensor to take effect\n"; + } + else + { + sBuf += "failed\n"; + } + } + else if(cmdStr.equals("deviceinfo") || iCmd == 11) + { + sBuf += "\nLD2410 Device Information: \n"; + sBuf += "Data reporting mode: "; + sBuf += (radar.isEngineeringMode() ? "Engineering Mode" : "Target Mode"); + sBuf += "\nCommunication protocol version: v"; + sBuf += radar.cmdProtocolVersion(); + sBuf += ".0\nCommunications Buffer Size: "; + sBuf += radar.cmdCommunicationBufferSize(); + sBuf += " bytes\nDevice firmare version: "; + sBuf += radar.cmdFirmwareVersion(); + sBuf += "\tEngineering retain data value: "; + sBuf += radar.engRetainDataValue(); + sBuf += "\n"; + } + else if(cmdStr.equals("reboot") || iCmd == 12) + { + ESP.restart(); + } + else + { + sBuf += "\nUnknown command: "; + sBuf += cmdStr; + sBuf += "\n"; + } + + cmdStr.clear(); + sBuf += "\n choose:> "; + + return sBuf; +} + +/* + * Accepts Serial chars and process chars as a command + * when the newline char is received + */ +void commandHandler() { + if(Serial.available()) + { + char typedCharacter = Serial.read(); + if(typedCharacter == '\n') { + Serial.print( commandProcessor(command) ); + } else { + Serial.print(typedCharacter); + if(typedCharacter != '\r') { // effectively ignore CRs + command += typedCharacter; + } + } + } +} + +#ifdef SERIAL_STUDIO +/* + * Send data via UDP */ +void sendToRequestor(String str, bool requestor = false) { + if(requestor) { + udp.connect(ipRemote,remotePort); + } else { + udp.connect(ipSerialStudio,sendPort); + } + // Serial.printf("DEBUG: SizeOf(serialBuffer)=%d Length(str)=%d Contents:%s", sizeof(serialBuffer), str.length(), str.c_str()); + udp.print(str); + return udp.close(); +} +#endif + +/* + * CSV like Values for SerialStudio App - see test folder */ +// %1,2,3, 4, 5,6,7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43 +/*LD2410 Sensor 01,0,0,62,43,0,0,50,15, 0, 0,50,15, 0, 0,40, 5,40,62,30, 9,40,45,20, 3,30,25,15, 6,30,18,15, 1,20,10,15, 2,20, 8,15, 7,20, 6*/ +String buildWithAlarmSerialStudioCSV() { + pos = snprintf(serialBuffer,sizeof(serialBuffer),"/*%s,%d,%d,%d,%d,%d,%d,",SNAME,radar.stationaryTargetDistance(),radar.detectionDistance(), radar.stationaryTargetEnergy(),radar.movingTargetDistance(), radar.detectionDistance(), radar.movingTargetEnergy()); + + for(int x = 0; x < LD2410_MAX_GATES; ++x) { + pos1 = snprintf(buffer1,sizeof(buffer1),"%d,%d,%d,%d,", radar.cfgMovingGateSensitivity(x), radar.engMovingDistanceGateEnergy(x), radar.cfgStationaryGateSensitivity(x), radar.engStaticDistanceGateEnergy(x)); + strcat(serialBuffer, buffer1); + pos += pos1; + } + serialBuffer[--pos] = 0; + strcat(serialBuffer, "*/\n"); + + return String(serialBuffer); +} + +void setup(void) +{ + delay(1000); + + // start console path + Serial.begin(115200); + delay(250); + + // start path to LD2410 + // radar.debug(Serial); + Serial2.begin (256000, SERIAL_8N1, RXD2, TXD2); //UART for monitoring the radar rx, tx + +#ifdef SERIAL_STUDIO + // Start WiFi + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, ssidPassword); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.print("WiFi connected with IP: "); + Serial.println(WiFi.localIP()); + // 10.100.1.186 + + if(udp.listen(listenPort)) { + Serial.print(F("Client Listening on port: ")); + Serial.println(listenPort); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + + // save path for response when using udp + ipRemote = packet.remoteIP(); + remotePort = packet.remotePort(); + + // Parse Commands -- executing inside a callback can be problematic + // Using udpFlag to have loop handle it + command = (const char*)packet.data(); + udpFlag=true; + }); + } + + Serial.println(F("Client Initialized...")); +#endif + + // Start LD2410 Sensor + if(radar.begin(Serial2)) + { + Serial.println(F("Sensor Initialized...")); + delay(500); + radar.requestStartEngineeringMode(); + } + else + { + Serial.println(F(" Sensor was not connected")); + } + + Serial.println(F("setup() Complete...")); + Serial.println( availableCommands() ); + Serial.print("\n choose> "); +} + +void loop() +{ + radar.ld2410_loop(); + + if(sending_enabled) { + if(radar.isConnected() && millis() - lastReading > 1000) //Report every 1000ms + { + lastReading = millis(); + #ifdef SERIAL_STUDIO + sendToRequestor( buildWithAlarmSerialStudioCSV(), false ); + #else + if(Serial.available()) { + Serial.print( buildWithAlarmSerialStudioCSV() ); + } + #endif + } + } + #ifdef SERIAL_STUDIO + if(udpFlag && (command.length() > 1)) { // handle cb request + sendToRequestor(commandProcessor(command), true); + udpFlag=false; + command.clear(); + } + #endif + commandHandler(); +} diff --git a/lib/ld2410/examples/basicSensor/basicSensor.ino b/lib/ld2410/examples/basicSensor/basicSensor.ino new file mode 100644 index 0000000000..a18f022614 --- /dev/null +++ b/lib/ld2410/examples/basicSensor/basicSensor.ino @@ -0,0 +1,120 @@ +/* + * Example sketch for reporting on readings from the LD2410 using whatever settings are currently configured. + * + * This has been tested on the following platforms... + * + * On ESP32, connect the LD2410 to GPIO pins 32&33 + * On ESP32S2, connect the LD2410 to GPIO pins 8&9 + * On ESP32C3, connect the LD2410 to GPIO pins 4&5 + * On Arduino Leonardo or other ATmega32u4 board connect the LD2410 to GPIO pins TX & RX hardware serial + * + * The serial configuration for other boards will vary and you'll need to assign them yourself + * + * There is no example for ESP8266 as it only has one usable UART and will not boot if the alternate UART pins are used for the radar. + * + * For this sketch and other examples to be useful the board needs to have two usable UARTs. + * + */ + +#if defined(ESP32) + #ifdef ESP_IDF_VERSION_MAJOR // IDF 4+ + #if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 32 + #define RADAR_TX_PIN 33 + #elif CONFIG_IDF_TARGET_ESP32S2 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 9 + #define RADAR_TX_PIN 8 + #elif CONFIG_IDF_TARGET_ESP32C3 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 4 + #define RADAR_TX_PIN 5 + #else + #error Target CONFIG_IDF_TARGET is not supported + #endif + #else // ESP32 Before IDF 4.0 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 32 + #define RADAR_TX_PIN 33 + #endif +#elif defined(__AVR_ATmega32U4__) + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 0 + #define RADAR_TX_PIN 1 +#endif + +#include + +ld2410 radar; + +uint32_t lastReading = 0; +bool radarConnected = false; + +void setup(void) +{ + MONITOR_SERIAL.begin(115200); //Feedback over Serial Monitor + //radar.debug(MONITOR_SERIAL); //Uncomment to show debug information from the library on the Serial Monitor. By default this does not show sensor reads as they are very frequent. + #if defined(ESP32) + RADAR_SERIAL.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); //UART for monitoring the radar + #elif defined(__AVR_ATmega32U4__) + RADAR_SERIAL.begin(256000); //UART for monitoring the radar + #endif + delay(500); + MONITOR_SERIAL.print(F("\nConnect LD2410 radar TX to GPIO:")); + MONITOR_SERIAL.println(RADAR_RX_PIN); + MONITOR_SERIAL.print(F("Connect LD2410 radar RX to GPIO:")); + MONITOR_SERIAL.println(RADAR_TX_PIN); + MONITOR_SERIAL.print(F("LD2410 radar sensor initialising: ")); + if(radar.begin(RADAR_SERIAL)) + { + MONITOR_SERIAL.println(F("OK")); + MONITOR_SERIAL.print(F("LD2410 firmware version: ")); + MONITOR_SERIAL.print(radar.firmware_major_version); + MONITOR_SERIAL.print('.'); + MONITOR_SERIAL.print(radar.firmware_minor_version); + MONITOR_SERIAL.print('.'); + MONITOR_SERIAL.println(radar.firmware_bugfix_version, HEX); + } + else + { + MONITOR_SERIAL.println(F("not connected")); + } +} + +void loop() +{ + radar.read(); + if(radar.isConnected() && millis() - lastReading > 1000) //Report every 1000ms + { + lastReading = millis(); + if(radar.presenceDetected()) + { + if(radar.stationaryTargetDetected()) + { + Serial.print(F("Stationary target: ")); + Serial.print(radar.stationaryTargetDistance()); + Serial.print(F("cm energy:")); + Serial.print(radar.stationaryTargetEnergy()); + Serial.print(' '); + } + if(radar.movingTargetDetected()) + { + Serial.print(F("Moving target: ")); + Serial.print(radar.movingTargetDistance()); + Serial.print(F("cm energy:")); + Serial.print(radar.movingTargetEnergy()); + } + Serial.println(); + } + else + { + Serial.println(F("No target")); + } + } +} diff --git a/lib/ld2410/examples/setupSensor/setupSensor.ino b/lib/ld2410/examples/setupSensor/setupSensor.ino new file mode 100644 index 0000000000..2f9073de0d --- /dev/null +++ b/lib/ld2410/examples/setupSensor/setupSensor.ino @@ -0,0 +1,330 @@ +/* + * Example sketch to show using configuration commands on the LD2410. + * + * This has been tested on the following platforms... + * + * On ESP32, connect the LD2410 to GPIO pins 32&33 + * On ESP32S2, connect the LD2410 to GPIO pins 8&9 + * On ESP32C3, connect the LD2410 to GPIO pins 4&5 + * On Arduino Leonardo or other ATmega32u4 board connect the LD2410 to GPIO pins TX & RX hardware serial + * + * The serial configuration for other boards will vary and you'll need to assign them yourself + * + * There is no example for ESP8266 as it only has one usable UART and will not boot if the alternate UART pins are used for the radar. + * + * For this sketch and other examples to be useful the board needs to have two usable UARTs. + * + */ + +#if defined(ESP32) + #ifdef ESP_IDF_VERSION_MAJOR // IDF 4+ + #if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 32 + #define RADAR_TX_PIN 33 + #elif CONFIG_IDF_TARGET_ESP32S2 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 9 + #define RADAR_TX_PIN 8 + #elif CONFIG_IDF_TARGET_ESP32C3 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 4 + #define RADAR_TX_PIN 5 + #else + #error Target CONFIG_IDF_TARGET is not supported + #endif + #else // ESP32 Before IDF 4.0 + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 32 + #define RADAR_TX_PIN 33 + #endif +#elif defined(__AVR_ATmega32U4__) + #define MONITOR_SERIAL Serial + #define RADAR_SERIAL Serial1 + #define RADAR_RX_PIN 0 + #define RADAR_TX_PIN 1 +#endif + +#include + +ld2410 radar; +bool engineeringMode = false; +String command; + +void setup(void) +{ + MONITOR_SERIAL.begin(115200); //Feedback over Serial Monitor + delay(500); //Give a while for Serial Monitor to wake up + //radar.debug(Serial); //Uncomment to show debug information from the library on the Serial Monitor. By default this does not show sensor reads as they are very frequent. + #if defined(ESP32) + RADAR_SERIAL.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN); //UART for monitoring the radar + #elif defined(__AVR_ATmega32U4__) + RADAR_SERIAL.begin(256000); //UART for monitoring the radar + #endif + delay(500); + MONITOR_SERIAL.print(F("\nConnect LD2410 radar TX to GPIO:")); + MONITOR_SERIAL.println(RADAR_RX_PIN); + MONITOR_SERIAL.print(F("Connect LD2410 radar RX to GPIO:")); + MONITOR_SERIAL.println(RADAR_TX_PIN); + MONITOR_SERIAL.print(F("LD2410 radar sensor initialising: ")); + if(radar.begin(RADAR_SERIAL)) + { + MONITOR_SERIAL.println(F("OK")); + MONITOR_SERIAL.print(F("LD2410 firmware version: ")); + MONITOR_SERIAL.print(radar.firmware_major_version); + MONITOR_SERIAL.print('.'); + MONITOR_SERIAL.print(radar.firmware_minor_version); + MONITOR_SERIAL.print('.'); + MONITOR_SERIAL.println(radar.firmware_bugfix_version, HEX); + } + else + { + MONITOR_SERIAL.println(F("not connected")); + } + MONITOR_SERIAL.println(F("Supported commands\nread: read current values from the sensor\nreadconfig: read the configuration from the sensor\nsetmaxvalues \nsetsensitivity \nenableengineeringmode: enable engineering mode\ndisableengineeringmode: disable engineering mode\nrestart: restart the sensor\nreadversion: read firmware version\nfactoryreset: factory reset the sensor\n")); +} + +void loop() +{ + radar.read(); //Always read frames from the sensor + if(MONITOR_SERIAL.available()) + { + char typedCharacter = MONITOR_SERIAL.read(); + if(typedCharacter == '\r' || typedCharacter == '\n') + { + command.trim(); + if(command.equals("read")) + { + command = ""; + MONITOR_SERIAL.print(F("Reading from sensor: ")); + if(radar.isConnected()) + { + MONITOR_SERIAL.println(F("OK")); + if(radar.presenceDetected()) + { + if(radar.stationaryTargetDetected()) + { + MONITOR_SERIAL.print(F("Stationary target: ")); + MONITOR_SERIAL.print(radar.stationaryTargetDistance()); + MONITOR_SERIAL.print(F("cm energy: ")); + MONITOR_SERIAL.println(radar.stationaryTargetEnergy()); + } + if(radar.movingTargetDetected()) + { + MONITOR_SERIAL.print(F("Moving target: ")); + MONITOR_SERIAL.print(radar.movingTargetDistance()); + MONITOR_SERIAL.print(F("cm energy: ")); + MONITOR_SERIAL.println(radar.movingTargetEnergy()); + } + } + else + { + MONITOR_SERIAL.println(F("nothing detected")); + } + } + else + { + MONITOR_SERIAL.println(F("failed to read")); + } + } + else if(command.equals("readconfig")) + { + command = ""; + MONITOR_SERIAL.print(F("Reading configuration from sensor: ")); + if(radar.requestCurrentConfiguration()) + { + MONITOR_SERIAL.println(F("OK")); + MONITOR_SERIAL.print(F("Maximum gate ID: ")); + MONITOR_SERIAL.println(radar.max_gate); + MONITOR_SERIAL.print(F("Maximum gate for moving targets: ")); + MONITOR_SERIAL.println(radar.max_moving_gate); + MONITOR_SERIAL.print(F("Maximum gate for stationary targets: ")); + MONITOR_SERIAL.println(radar.max_stationary_gate); + MONITOR_SERIAL.print(F("Idle time for targets: ")); + MONITOR_SERIAL.println(radar.sensor_idle_time); + MONITOR_SERIAL.println(F("Gate sensitivity")); + for(uint8_t gate = 0; gate <= radar.max_gate; gate++) + { + MONITOR_SERIAL.print(F("Gate ")); + MONITOR_SERIAL.print(gate); + MONITOR_SERIAL.print(F(" moving targets: ")); + MONITOR_SERIAL.print(radar.motion_sensitivity[gate]); + MONITOR_SERIAL.print(F(" stationary targets: ")); + MONITOR_SERIAL.println(radar.stationary_sensitivity[gate]); + } + } + else + { + MONITOR_SERIAL.println(F("Failed")); + } + } + else if(command.startsWith("setmaxvalues")) + { + uint8_t firstSpace = command.indexOf(' '); + uint8_t secondSpace = command.indexOf(' ',firstSpace + 1); + uint8_t thirdSpace = command.indexOf(' ',secondSpace + 1); + uint8_t newMovingMaxDistance = (command.substring(firstSpace,secondSpace)).toInt(); + uint8_t newStationaryMaxDistance = (command.substring(secondSpace,thirdSpace)).toInt(); + uint16_t inactivityTimer = (command.substring(thirdSpace,command.length())).toInt(); + if(newMovingMaxDistance > 0 && newStationaryMaxDistance > 0 && newMovingMaxDistance <= 8 && newStationaryMaxDistance <= 8) + { + MONITOR_SERIAL.print(F("Setting max values to gate ")); + MONITOR_SERIAL.print(newMovingMaxDistance); + MONITOR_SERIAL.print(F(" moving targets, gate ")); + MONITOR_SERIAL.print(newStationaryMaxDistance); + MONITOR_SERIAL.print(F(" stationary targets, ")); + MONITOR_SERIAL.print(inactivityTimer); + MONITOR_SERIAL.print(F("s inactivity timer: ")); + command = ""; + if(radar.setMaxValues(newMovingMaxDistance, newStationaryMaxDistance, inactivityTimer)) + { + MONITOR_SERIAL.println(F("OK, now restart to apply settings")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else + { + MONITOR_SERIAL.print(F("Can't set distances to ")); + MONITOR_SERIAL.print(newMovingMaxDistance); + MONITOR_SERIAL.print(F(" moving ")); + MONITOR_SERIAL.print(newStationaryMaxDistance); + MONITOR_SERIAL.println(F(" stationary, try again")); + command = ""; + } + } + else if(command.startsWith("setsensitivity")) + { + uint8_t firstSpace = command.indexOf(' '); + uint8_t secondSpace = command.indexOf(' ',firstSpace + 1); + uint8_t thirdSpace = command.indexOf(' ',secondSpace + 1); + uint8_t gate = (command.substring(firstSpace,secondSpace)).toInt(); + uint8_t motionSensitivity = (command.substring(secondSpace,thirdSpace)).toInt(); + uint8_t stationarySensitivity = (command.substring(thirdSpace,command.length())).toInt(); + if(motionSensitivity >= 0 && stationarySensitivity >= 0 && motionSensitivity <= 100 && stationarySensitivity <= 100) + { + MONITOR_SERIAL.print(F("Setting gate ")); + MONITOR_SERIAL.print(gate); + MONITOR_SERIAL.print(F(" motion sensitivity to ")); + MONITOR_SERIAL.print(motionSensitivity); + MONITOR_SERIAL.print(F(" & stationary sensitivity to ")); + MONITOR_SERIAL.print(stationarySensitivity); + MONITOR_SERIAL.println(F(": ")); + command = ""; + if(radar.setGateSensitivityThreshold(gate, motionSensitivity, stationarySensitivity)) + { + MONITOR_SERIAL.println(F("OK, now restart to apply settings")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else + { + MONITOR_SERIAL.print(F("Can't set gate ")); + MONITOR_SERIAL.print(gate); + MONITOR_SERIAL.print(F(" motion sensitivity to ")); + MONITOR_SERIAL.print(motionSensitivity); + MONITOR_SERIAL.print(F(" & stationary sensitivity to ")); + MONITOR_SERIAL.print(stationarySensitivity); + MONITOR_SERIAL.println(F(", try again")); + command = ""; + } + } + else if(command.equals("enableengineeringmode")) + { + command = ""; + MONITOR_SERIAL.print(F("Enabling engineering mode: ")); + if(radar.requestStartEngineeringMode()) + { + MONITOR_SERIAL.println(F("OK")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else if(command.equals("disableengineeringmode")) + { + command = ""; + MONITOR_SERIAL.print(F("Disabling engineering mode: ")); + if(radar.requestEndEngineeringMode()) + { + MONITOR_SERIAL.println(F("OK")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else if(command.equals("restart")) + { + command = ""; + MONITOR_SERIAL.print(F("Restarting sensor: ")); + if(radar.requestRestart()) + { + MONITOR_SERIAL.println(F("OK")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else if(command.equals("readversion")) + { + command = ""; + MONITOR_SERIAL.print(F("Requesting firmware version: ")); + if(radar.requestFirmwareVersion()) + { + Serial.print(radar.cmdFirmwareVersion()); + } + else + { + MONITOR_SERIAL.println(F("Failed")); + } + } + else if(command.equals("factoryreset")) + { + command = ""; + MONITOR_SERIAL.print(F("Factory resetting sensor: ")); + if(radar.requestFactoryReset()) + { + MONITOR_SERIAL.println(F("OK, now restart sensor to take effect")); + } + else + { + MONITOR_SERIAL.println(F("failed")); + } + } + else + { + MONITOR_SERIAL.print(F("Unknown command: ")); + MONITOR_SERIAL.println(command); + command = ""; + } + } + else + { + command += typedCharacter; + } + } + /* + if() //Some data has been received from the radar + { + if(radar.presenceDetected()) + { + MONITOR_SERIAL.print(F("Stationary target: ")); + MONITOR_SERIAL.println(radar.stationaryTargetDistance()); + MONITOR_SERIAL.print(F("Moving target: ")); + MONITOR_SERIAL.println(radar.movingTargetDistance()); + } + } + */ +} diff --git a/lib/ld2410/include/README b/lib/ld2410/include/README new file mode 100644 index 0000000000..194dcd4325 --- /dev/null +++ b/lib/ld2410/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/lib/ld2410/keywords.txt b/lib/ld2410/keywords.txt new file mode 100644 index 0000000000..f78235c7d2 --- /dev/null +++ b/lib/ld2410/keywords.txt @@ -0,0 +1,50 @@ +ld2410 KEYWORD1 + +begin KEYWORD2 +debug KEYWORD2 +isConnected KEYWORD2 +read KEYWORD2 +presenceDetected KEYWORD2 + +ld2410_loop KEYWORD2 +isStationary KEYWORD2 +isMoving KEYWORD2 +isEngineeringMode KEYWORD2 +reportingDataComposition KEYWORD2 +detectionDistance KEYWORD2 + +stationaryTargetDetected KEYWORD2 +stationaryTargetDistance KEYWORD2 +stationaryTargetEnergy KEYWORD2 + +movingTargetDetected KEYWORD2 +movingTargetDistance KEYWORD2 +movingTargetEnergy KEYWORD2 + +engMovingDistanceGateEnergy KEYWORD2 +engStaticDistanceGateEnergy KEYWORD2 +engMaxMovingDistanceGate KEYWORD2 +engMaxStaticDistanceGate KEYWORD2 +engRetainDataValue KEYWORD2 + +requestRestart KEYWORD2 +requestFactoryReset KEYWORD2 +requestFirmwareVersion +requestCurrentConfiguration +requestStartEngineeringMode KEYWORD2 +requestEndEngineeringMode KEYWORD2 +setSerialBaudRate KEYWORD2 +setMaxValues KEYWORD2 +setGateSensitivityThreshold KEYWORD2 +requestConfigurationModeOpen KEYWORD2 +requestConfigurationModeClose KEYWORD2 + +cmdProtocolVersion KEYWORD2 +cmdFirmwareVersion KEYWORD2 + +cfgMaxGate KEYWORD2 +cfgMaxMovingGate KEYWORD2 +cfgMaxStationaryGate KEYWORD2 +cfgSensorIdleTimeInSeconds KEYWORD2 +cfgMovingGateSensitivity KEYWORD2 +cfgStationaryGateSensitivity KEYWORD2 diff --git a/lib/ld2410/ld2410andbreakout.jpg b/lib/ld2410/ld2410andbreakout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..495617aaad98c8484a0ab7fd7710b48e150b1e3c GIT binary patch literal 176754 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�W8CsKiE;8{N&{uOQS!Wg3HB0lJk;V+ z@x@3hC$OLctMg3b5&XHecFWhLy~Cuk-o0fe(plaYd*cP+OzN#tq&^cCVl4_4!){vP z${gYBDPha{XnpZ~9Q`qrFJw^A^(BHH01ar24UUO4VD6Q}@UxO)i){d2o->Qc7CxPeqArF_}x2jxd$(Fi zxFP!uZ!kXiM>s}g`c2bDPvfq%` zDvwfTGIA=T0kUtK{;&pWOWbI#!o^6Qe0&@JGpF}Y0qrR14YU4WwB-te5^UUA)|%Dr z*~#cpPiupx)f5Ym`y&oIkrV@MxXMUGh3!{&w&B}a1vhi&>dnMj*Bo101v0Hn*;Ktt z-TL>5%MFLA`*LC~u|pqY_{5@s!%|=@%Bb~tQC0WcM6COr%hBU?v9ayUjOIlzz6ws8 z7Bi~Y&rBvpF4e%nEvV*^y>iScUODl+-+677;S8L(*_JWc^fi3~eqRQk{$7_gIdiS8 zc8v+g+@W5O2h@9!d=T48K{<;nWwRijYK*~n!iZ2lah;e_OP$}l9QOs?tVgSflOFI; zE#3BGhAR`cmx?i!6UgrK&une0$QyC39II+E_RW)}&97f+n=;pYg3_Hg?`9>DD3UI% zKPcuCh-K4?g?mBJ)}4K7hyptEw^_Y2@5l#$Jk4F3*Iwj;7{b`TONglgw37k%DbJS*5B!y*ns{78Y+QOls zU)!^T?;9+wo$bw)KB%u>6C$d&<#)#l83Kmyo27Pq7AG%Aq+ld1s8iJ=@l-+0<`f^8 zcf>9TL{RfJs>1FFUVh;IW_0R8rK(xYE{E%rRp(Xrp z+?K>OPb!*~B%Oi(vIVib;bK&W)eW4(i5NN=j6{_02;{eGVQZx&4^XGY-Hs#9#5K))-uT26J5 z878GDeBe?kN!)w5gT@y|;kWzF;! zjrvtnPe3G9Gb~Zy5ujrIKP7loQ-xnae4NF!{^BJFV1(|x@rUv12uheXH(}XSh)s&% zE_zwC&XN8|%B&I#{(zsDQ575@C_kQ`^VttAIZt>Jv9PwnmTuHMxLczfzb75(CFn+s zNmZOzE1?6ZH|Nt^JS;!Y+~tqsAE`B~LAQq_<_?)SPyJfT{!O>ZNK1>NsovYd^?lL( zo2?H0bpXjvPqfx2A=jlH4*=$n^C{}^`%^f@r(oT3?Q)S@U4(U07F&8Tk{uN;oK4jI zPaVVc)On@4;l}P_P>)n5b+Cg4kOlf;4cclgDnVn~{Y*D}imk$n^;kslvo%FHo&-ym z6WAD>rq%o=wCZW>Hd=0Q#YGsLo!g)e=%Nljv^V`pB~Jv&-rhJF*xcXljl@-zWF@tz zPG=Xw&k=FUA>Vy+#iOF*6)s{72uTDC1?y#O>VV@Nrx(5g4d9P8hvjn7BS4KP{i=z` z`p1gK$ka^8msu^Doi9=OY zqjOnbgrfI0`(fMsMv0z&2E9lM0W>ZGZNH++rkI2sGqX);CTT?=)t|kuV&{E9??QwJ zHW1xM%quc;NYvYD;LNgu|8sRjGk{Dxn<_3_It=5N2Y7N??Mnk^;uebVt3Q47zfCi6I`L_!6vGDZK>yHumKW=INZ@~X4 d{r|D?G5*CbzXHMU|CYY~rvmoho7}_v{{#Mf;%Wc@ literal 0 HcmV?d00001 diff --git a/lib/ld2410/ld2410pinout.jpg b/lib/ld2410/ld2410pinout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c573f882d0f915b129478b80339070221b3029fb GIT binary patch literal 13242 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 THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/lib/ld2410/library.properties b/lib/ld2410/library.properties new file mode 100644 index 0000000000..aba11498ea --- /dev/null +++ b/lib/ld2410/library.properties @@ -0,0 +1,11 @@ +name=ld2410 +version=0.1.3 +author=Nick Reynolds +maintainer=Nick Reynolds +sentence=An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. +paragraph= This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. +category=Sensors +url=https://github.com/ncmreynolds/ld2410 +depends= +includes=ld2410.h +architectures=* \ No newline at end of file diff --git a/lib/ld2410/platformio.ini b/lib/ld2410/platformio.ini new file mode 100644 index 0000000000..f9d52b4235 --- /dev/null +++ b/lib/ld2410/platformio.ini @@ -0,0 +1,32 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[platformio] +src_dir = examples/ +lib_dir = . + + +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +board_build.mcu = esp32 +board_build.f_cpu = 240000000L +upload_speed = 921600 +monitor_speed = 256000 +monitor_encoding = hexlify +monitor_filters = log2file,time,esp32_exception_decoder + +build_flags = + -D PLATFORMIO_BUILD_FLAGS + -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -D PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH + -DWIFI_PASS='"BeveilgdMetWpa"' + -DWIFI_SSID='"Kantoor3"' diff --git a/lib/ld2410/src/ld2410.cpp b/lib/ld2410/src/ld2410.cpp new file mode 100644 index 0000000000..1ca60b971a --- /dev/null +++ b/lib/ld2410/src/ld2410.cpp @@ -0,0 +1,1049 @@ +/* + * An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. + * + * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. + * + * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome https://github.com/rain931215/ESPHome-LD2410. + * + * https://github.com/ncmreynolds/ld2410 + * + * Released under LGPL-2.1 see https://github.com/ncmreynolds/ld2410/LICENSE for full license + * + */ +#ifndef ld2410_cpp +#define ld2410_cpp +#include "ld2410.h" + + +ld2410::ld2410() //Constructor function +{ +} + +ld2410::~ld2410() //Destructor function +{ +} + +uint16_t ld2410::serial_to_int_(uint8_t index) +{ + return (int16_t) radar_data_frame_[index] + (radar_data_frame_[index + 1] << 8); +} + +bool ld2410::debug_command_results_(const char * title) { + if(latest_command_success_) + { + radar_uart_last_packet_ = millis(); + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG_PRINT) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print("\n"); + debug_uart_->print(title); + debug_uart_->print(" OK\n"); + } + #endif + return true; + } + else + { + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + debug_uart_->print("\n"); + debug_uart_->print(title); + debug_uart_->print(" Failed\n"); + } + #endif + return false; + } +} + +bool ld2410::wait_for_command_ack_(uint8_t command) { + while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if(read_frame_()) + { + if(latest_ack_ == command) + { + bool rcode = latest_command_success_; + delay(50); + leave_configuration_mode_(); + return rcode; + } + } + } + return false; +} + +bool ld2410::begin(Stream &radarStream, bool waitForRadar) { + radar_uart_ = &radarStream; //Set the stream used for the LD2410 + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + debug_uart_->println(F("ld2410 started")); + } + #endif + if(waitForRadar) + { + if(requestRestart()) { + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) { + debug_uart_->print(F("\nLD2410 Reset: Ok")); + } + } else { + if(debug_uart_ != nullptr) { + debug_uart_->print(F("\nLD2410 Reset: No response")); + } + #endif + } + delay(1500); // allow time for sensor to restart + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 Requesting Configuration: ")); + } + #endif + if(requestCurrentConfiguration()) + { + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nMax gate distance: ")); + debug_uart_->print(max_gate); + debug_uart_->print(F("\nMax motion detecting gate distance: ")); + debug_uart_->print(max_moving_gate); + debug_uart_->print(F("\nMax stationary detecting gate distance: ")); + debug_uart_->print(max_stationary_gate); + debug_uart_->print(F("\nSensitivity per gate")); + for(uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) + { + debug_uart_->print(F("\nGate ")); + debug_uart_->print(i); + debug_uart_->print(F(" (")); + debug_uart_->print(i * 0.75); + debug_uart_->print('-'); + debug_uart_->print((i+1) * 0.75); + debug_uart_->print(F(" metres) Motion: ")); + debug_uart_->print(motion_sensitivity[i]); + debug_uart_->print(F(" Stationary: ")); + debug_uart_->print(stationary_sensitivity[i]); + + } + debug_uart_->print(F("\nSensor idle timeout: ")); + debug_uart_->print(sensor_idle_time); + debug_uart_->println('s'); + } + #endif + return true; + } + #ifdef LD2410_DEBUG + else + { + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("no response")); + } + } + #endif + } + else + { + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 library configured")); + } + #endif + return true; + } + return false; +} + +#ifdef LD2410_DEBUG +void ld2410::debug(Stream &terminalStream) +{ + debug_uart_ = &terminalStream; //Set the stream used for the terminal + #if defined(ESP8266) + if(&terminalStream == &Serial) + { + if(debug_uart_ != nullptr) { + debug_uart_->write(17); //Send an XON to stop the hung terminal after reset on ESP8266 + } + } + #endif +} +#endif + +bool ld2410::isConnected() +{ + if(millis() - radar_uart_last_packet_ < radar_uart_timeout) //Use the last reading + { + return true; + } + return read_frame_(); //Try and read a frame if the current reading is too old +} + +bool ld2410::stationaryTargetDetected() +{ + return((target_type_ & TARGET_STATIONARY)); +} + +bool ld2410::movingTargetDetected() +{ + return((target_type_ & TARGET_MOVING)); +} + +String ld2410::cmdFirmwareVersion() { + String sVersion; + sVersion = 'v'; + sVersion += firmware_major_version; + sVersion += '.'; + sVersion += firmware_minor_version; + sVersion += '.'; + sVersion += String(firmware_bugfix_version, HEX); + + return sVersion; +} + +/* Command / Response / Protocol Frame + * + * REQUEST + * FD FC FB FA -- Header + * dd dd -- Frame data length + * dd dd -- Command Word + * ... -- Command Value nBytes + * 04 03 02 01 -- Footer + * + * RESPONSE + * FD FC FB FA -- Header + * dd dd -- Frame data length + * dd dd -- ACK Word + * ... -- Response Values nBytes + * 04 03 02 01 -- Footer + */ +bool ld2410::isProtocolDataFrame_() { + return ( radar_data_frame_[0] == FRAME_PREFIX_PROTOCOL && + radar_data_frame_[1] == 0xFC && + radar_data_frame_[2] == 0xFB && + radar_data_frame_[3] == 0xFA && + radar_data_frame_[radar_data_frame_position_ - 4] == 0x04 && + radar_data_frame_[radar_data_frame_position_ - 3] == 0x03 && + radar_data_frame_[radar_data_frame_position_ - 2] == 0x02 && + radar_data_frame_[radar_data_frame_position_ - 1] == 0x01 + ); +} + +/* Data Frame + * + * F4 F3 F2 F1 -- header + * dd dd -- frame data length + * dd -- Type of Data (0x01=Engineering data, 0x02=Target data) + * 0xAA -- Marker + * ... -- target state + * ... -- reporting data + * 0x55 -- Marker + * 0x00 -- Check flag + * F8 F7 F6 F5 - Footer +*/ +bool ld2410::isReportingDataFrame_() { + return ( radar_data_frame_[0] == FRAME_PREFIX_REPORTING && + radar_data_frame_[1] == 0xF3 && + radar_data_frame_[2] == 0xF2 && + radar_data_frame_[3] == 0xF1 && + radar_data_frame_[radar_data_frame_position_ - 4] == 0xF8 && + radar_data_frame_[radar_data_frame_position_ - 3] == 0xF7 && + radar_data_frame_[radar_data_frame_position_ - 2] == 0xF6 && + radar_data_frame_[radar_data_frame_position_ - 1] == 0xF5 + ); +} + +bool ld2410::read_frame_() +{ + if(!(radar_uart_ -> available())) + { + return false; + } + if(frame_started_ == false) + { + uint8_t byte_read_ = radar_uart_ -> read(); + if(byte_read_ == FRAME_PREFIX_REPORTING) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = false; + } + else if(byte_read_ == FRAME_PREFIX_PROTOCOL) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = true; + } + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nRcvd : 00 ")); + } + #endif + } + else + { + if(radar_data_frame_position_ < configuration_buffer_size_) + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + if(radar_data_frame_position_ < 0x10) + { + debug_uart_->print('0'); + } + debug_uart_->print(radar_data_frame_position_, HEX); + debug_uart_->print(' '); + } + #endif + radar_data_frame_[radar_data_frame_position_++] = radar_uart_ -> read(); + if(radar_data_frame_position_ > 7) //Can check for start and end + { + if(isReportingDataFrame_()) + { + if(parse_data_frame_()) + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed data OK")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse data")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + } + } + else if(isProtocolDataFrame_()) + { + if(parse_command_frame_()) + { + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed command OK")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else + { + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse command")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + } + } + } + } + else + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 frame overran")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + } + } + return false; +} + +void ld2410::print_frame_() +{ + #ifdef LD2410_DEBUG + if(debug_uart_ != nullptr) + { + if(ack_frame_ == true) + { + debug_uart_->print(F("\nCmnd : ")); + } + else + { + debug_uart_->print(F("\nData : ")); + } + for(uint8_t i = 0; i < radar_data_frame_position_ ; ++i) + { + if(radar_data_frame_[i] < 0x10) + { + debug_uart_->print('0'); + } + debug_uart_->print(radar_data_frame_[i],HEX); + debug_uart_->print(' '); + } + } + #endif +} + +bool ld2410::parse_data_frame_() +{ + uint16_t intra_frame_data_length_ = serial_to_int_(4); // radar_data_frame_[4] + (radar_data_frame_[5] << 8); + if(radar_data_frame_position_ != intra_frame_data_length_ + 10) + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nFrame length unexpected: ")); + debug_uart_->print(radar_data_frame_position_); + debug_uart_->print(F(" not ")); + debug_uart_->print(intra_frame_data_length_ + 10); + } + #endif + return false; + } + + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr ) + { + print_frame_(); + } + #endif + if(radar_data_frame_[6] == FRAME_TYPE_REPORTING && radar_data_frame_[7] == FRAME_TYPE_FLAG) //Engineering mode data + { + /* (Protocol) Target Data Reporting + * 02 AA d6,7 data type (target data) + * 02 d8 target type (stationary target) + * 51 00 d9,10 stationary target distance + * 00 d11 stationary target energy + * 00 00 d12,13 moving target distance + * 3B d14 moving target energy + * 00 00 d15,16 distance detection + + Engineering + * 08 d17 Max moving distance gate + * 08 d18 Max static distance gate + * 3C 22 05 03 03 04 03 06 05 d19,27 Movement distance gate energy + * 00 00 39 10 13 06 06 08 04 d28,36 Static distance gate energy + * 03 05 d37,d38 ?? v1283 d37 = lightsensor data, d38 = out pin sensor + * 55 00 d39,40 Frame flag + */ + engineering_mode_ = true; + target_type_ = radar_data_frame_[8]; + moving_target_distance_ = serial_to_int_(9); + moving_target_energy_ = radar_data_frame_[11]; + stationary_target_distance_ = serial_to_int_(12); + stationary_target_energy_ = radar_data_frame_[14]; + detection_distance_ = serial_to_int_(15); + + max_moving_distance_gate = radar_data_frame_[17]; + max_static_distance_gate = radar_data_frame_[18]; + light_sensor_data_ = radar_data_frame_[37]; + + uint8_t pos = 19; + + // motion_energy + for(uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { + movement_distance_gate_energy[gate] = radar_data_frame_[pos++]; + } + // stationary_engergy + for(uint8_t gate = 0; gate < sizeof(static_distance_gate_engergy); ++gate) { + static_distance_gate_engergy[gate] = radar_data_frame_[pos++]; + } + engineering_retain_data_ = serial_to_int_(pos); //radar_data_frame_[pos++] + (radar_data_frame_[pos] << 8); // maybe + + #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nEngineering data - ")); + if(target_type_ == TARGET_NONE) + { + debug_uart_->print(F(" no target")); + } + else if(target_type_ == TARGET_MOVING) + { + debug_uart_->print(F(" moving target:")); + } + else if(target_type_ == TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary target:")); + } + else if(target_type_ == TARGET_MOVING_AND_STATIONARY) + { + debug_uart_->print(F(" moving & stationary targets:")); + } + debug_uart_->print(F(" moving at ")); + debug_uart_->print(moving_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(moving_target_energy_); + + debug_uart_->print(F(" max moving distance gate:")); + debug_uart_->print(max_moving_distance_gate); + debug_uart_->print(F(" max static distance gate:")); + debug_uart_->print(max_static_distance_gate); + debug_uart_->print(F(" moving/static distance gate energy: ")); + for(uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { + debug_uart_->print(gate); + debug_uart_->print(": ["); + debug_uart_->print(movement_distance_gate_energy[gate]); + debug_uart_->print(","); + debug_uart_->print(static_distance_gate_engergy[gate]); + debug_uart_->print("] "); + } + debug_uart_->print("\n"); + } + #endif + + radar_uart_last_packet_ = millis(); + return true; + } + else if(radar_data_frame_[6] == FRAME_TYPE_TARGET && radar_data_frame_[7] == FRAME_TYPE_FLAG ) //Normal target data + { + //moving_target_distance_ = radar_data_frame_[9] + (radar_data_frame_[10] << 8); + //stationary_target_distance_ = radar_data_frame_[12] + (radar_data_frame_[13] << 8); + engineering_mode_ = false; + target_type_ = radar_data_frame_[8]; + moving_target_distance_ = serial_to_int_(9); + moving_target_energy_ = radar_data_frame_[11]; + stationary_target_distance_ = serial_to_int_(12); + stationary_target_energy_ = radar_data_frame_[14]; + detection_distance_ = serial_to_int_(15); + #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nNormal data - ")); + if(target_type_ == TARGET_NONE) + { + debug_uart_->print(F(" no target")); + } + else if(target_type_ == TARGET_MOVING) + { + debug_uart_->print(F(" moving target:")); + } + else if(target_type_ == TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary target:")); + } + else if(target_type_ == TARGET_MOVING_AND_STATIONARY) + { + debug_uart_->print(F(" moving & stationary targets:")); + } + if(radar_data_frame_[8] & TARGET_MOVING) + { + debug_uart_->print(F(" moving at ")); + debug_uart_->print(moving_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(moving_target_energy_); + } + if(radar_data_frame_[8] & TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary at ")); + debug_uart_->print(stationary_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(stationary_target_energy_); + } + } + #endif + radar_uart_last_packet_ = millis(); + return true; + } + else + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nUnknown frame type")); + } + #endif + print_frame_(); + } + + return false; +} + +bool ld2410::parse_command_frame_() +{ + uint16_t intra_frame_data_length_ = serial_to_int_(4); //radar_data_frame_[4] + (radar_data_frame_[5] << 8); + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + print_frame_(); + debug_uart_->print(F("\nACK frame payload: ")); + debug_uart_->print(intra_frame_data_length_); + debug_uart_->print(F(" bytes")); + } + #endif + latest_ack_ = radar_data_frame_[6]; + latest_command_success_ = (radar_data_frame_[8] == 0x00 && radar_data_frame_[9] == 0x00); + + switch(latest_ack_) + { + case CMD_CONFIGURATION_ENABLE: + if(latest_command_success_) + { + configuration_protocol_version_ = serial_to_int_(10); //radar_data_frame_[10] + (radar_data_frame_[11] << 8); + configuration_buffer_size_ = serial_to_int_(12); //radar_data_frame_[12] + (radar_data_frame_[13] << 8); + } + return debug_command_results_("ACK for entering configuration mode"); + case CMD_CONFIGURATION_END: + return debug_command_results_("ACK for leaving configuration mode"); + case CMD_MAX_DISTANCE_AND_UNMANNED_DURATION: + return debug_command_results_("ACK for setting max values"); + case CMD_READ_PARAMETER: + if(latest_command_success_) + { + max_gate = radar_data_frame_[11]; + max_moving_gate = radar_data_frame_[12]; + max_stationary_gate = radar_data_frame_[13]; + motion_sensitivity[0] = radar_data_frame_[14]; + motion_sensitivity[1] = radar_data_frame_[15]; + motion_sensitivity[2] = radar_data_frame_[16]; + motion_sensitivity[3] = radar_data_frame_[17]; + motion_sensitivity[4] = radar_data_frame_[18]; + motion_sensitivity[5] = radar_data_frame_[19]; + motion_sensitivity[6] = radar_data_frame_[20]; + motion_sensitivity[7] = radar_data_frame_[21]; + motion_sensitivity[8] = radar_data_frame_[22]; + stationary_sensitivity[0] = radar_data_frame_[23]; + stationary_sensitivity[1] = radar_data_frame_[24]; + stationary_sensitivity[2] = radar_data_frame_[25]; + stationary_sensitivity[3] = radar_data_frame_[26]; + stationary_sensitivity[4] = radar_data_frame_[27]; + stationary_sensitivity[5] = radar_data_frame_[28]; + stationary_sensitivity[6] = radar_data_frame_[29]; + stationary_sensitivity[7] = radar_data_frame_[30]; + stationary_sensitivity[8] = radar_data_frame_[31]; + sensor_idle_time = serial_to_int_(32); //radar_data_frame_[32]; + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nMax gate distance: ")); + debug_uart_->print(max_gate); + debug_uart_->print(F("\nMax motion detecting gate distance: ")); + debug_uart_->print(max_moving_gate); + debug_uart_->print(F("\nMax stationary detecting gate distance: ")); + debug_uart_->print(max_stationary_gate); + debug_uart_->print(F("\nSensitivity per gate")); + for(uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) + { + debug_uart_->print(F("\nGate ")); + debug_uart_->print(i); + debug_uart_->print(F(" (")); + debug_uart_->print(i * 0.75); + debug_uart_->print('-'); + debug_uart_->print((i+1) * 0.75); + debug_uart_->print(F(" metres) Motion: ")); + debug_uart_->print(motion_sensitivity[i]); + debug_uart_->print(F(" Stationary: ")); + debug_uart_->print(stationary_sensitivity[i]); + + } + debug_uart_->print(F("\nSensor idle timeout: ")); + debug_uart_->print(sensor_idle_time); + debug_uart_->print('s'); + } + #endif + } + return debug_command_results_("ACK for current configuration"); + case CMD_ENGINEERING_ENABLE: + return debug_command_results_("ACK for enable engineering mode"); + case CMD_ENGINEERING_END: + return debug_command_results_("ACK for end engineering mode"); + case CMD_RANGE_GATE_SENSITIVITY: + return debug_command_results_("ACK for setting sensitivity values"); + case CMD_READ_FIRMWARE_VERSION: + if(latest_command_success_) + { + firmware_major_version = radar_data_frame_[13]; + firmware_minor_version = radar_data_frame_[12]; + firmware_bugfix_version = radar_data_frame_[14]; + firmware_bugfix_version += radar_data_frame_[15]<<8; + firmware_bugfix_version += radar_data_frame_[16]<<16; + firmware_bugfix_version += radar_data_frame_[17]<<24; + } + return debug_command_results_("ACK for firmware version"); + case CMD_SET_SERIAL_PORT_BAUD: + return debug_command_results_("ACK for setting serial baud rate"); + case CMD_FACTORY_RESET: + return debug_command_results_("ACK for factory reset"); + case CMD_RESTART: + return debug_command_results_("ACK for restart"); + default: + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nUnknown command response")); + print_frame_(); + } + #endif + return false; + } + return false; +} + +/* + * Specification request command be executed + * inside configuraiton mode wrapper. If command fails + * exit-configuration mode is not required. + */ + +void ld2410::send_command_preamble_() +{ + //Command preamble + radar_uart_->write((uint8_t)char(0xFD)); + radar_uart_->write((uint8_t)char(0xFC)); + radar_uart_->write((uint8_t)char(0xFB)); + radar_uart_->write((uint8_t)char(0xFA)); +} + +void ld2410::send_command_postamble_() +{ + //Command end + radar_uart_->write((uint8_t)char(0x04)); + radar_uart_->write((uint8_t)char(0x03)); + radar_uart_->write((uint8_t)char(0x02)); + radar_uart_->write((uint8_t)char(0x01)); +} + +/* + * Wrapper to enable configuration mode for + * multiple command execution +*/ +bool ld2410::requestConfigurationModeBegin() { + if(configuration_mode_active) { // guard + return true; + } + configuration_mode_active = enter_configuration_mode_(); + return configuration_mode_active; +} + +/* + * Wrapper to disable configuration mode for + * multiple command execution +*/ +bool ld2410::requestConfigurationModeEnd() { + if(!configuration_mode_active) { // guard + return true; + } + configuration_mode_active = false; + configuration_mode_active = !leave_configuration_mode_(); + return configuration_mode_active; +} + +/* + * Configuration mode is required to be issued before + * any command execution. Multiple commands can be issued + * once configuraiton mode is enabled. When complete close with + * leave_configuration_mode(); + * + * Configuration mode is cancelled on any error by any + * given command, and leave is NOT required. +*/ +bool ld2410::enter_configuration_mode_() +{ + if(configuration_mode_active) { + return true; + } + send_command_preamble_(); + //Request + radar_uart_->write((uint8_t)char(0x04)); //Command is four bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_ENABLE)); //Request enter command mode + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x01)); + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if(read_frame_()) + { + if(latest_ack_ == CMD_CONFIGURATION_ENABLE) + { + return latest_command_success_; + } + } + } + return false; +} + +bool ld2410::leave_configuration_mode_() +{ + if(configuration_mode_active) { + return true; + } + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_END)); //Request leave command mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if(read_frame_()) + { + if(latest_ack_ == CMD_CONFIGURATION_END) + { + return latest_command_success_; + } + } + } + return false; +} + +bool ld2410::requestStartEngineeringMode() +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_ENGINEERING_ENABLE)); //Request enter engineering mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_ENGINEERING_ENABLE); + } + return false; +} + +bool ld2410::requestEndEngineeringMode() +{ + if(enter_configuration_mode_()) + { + delay(50); + enter_configuration_mode_(); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_ENGINEERING_END)); //Request leave engineering mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_ENGINEERING_END); + } + return false; +} + +bool ld2410::requestCurrentConfiguration() +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_READ_PARAMETER)); //Request current configuration + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_READ_PARAMETER); + } + return false; +} + +bool ld2410::requestFirmwareVersion() +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_READ_FIRMWARE_VERSION)); //Request firmware version + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_READ_FIRMWARE_VERSION); + } + return false; +} + +bool ld2410::requestRestart() +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_RESTART)); //Request restart + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_RESTART); + } + return false; +} + +bool ld2410::requestFactoryReset() +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Request firmware + radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_FACTORY_RESET)); //Request factory reset + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_FACTORY_RESET); + } + return false; +} + +/* + * Serial Speed Choices: default is 7 + * 1 = 9600 + * 2 = 19200 + * 3 = 38400 + * 4 = 57600 + * 5 = 115200 + * 6 = 230400 + * 7 = 256000 + * 8 = 460800 +*/ +bool ld2410::setSerialBaudRate(uint8_t cSpeed) +{ + if((cSpeed < 0) || (cSpeed > LD2410_MAX_GATES)) { + return false; + } + + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + //Serial baud Rate + radar_uart_->write((uint8_t)char(0x04)); //Command is four bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_SET_SERIAL_PORT_BAUD)); + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(cSpeed)); //Set serial baud rate 1-8, 9600-460800 default=7 + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_SET_SERIAL_PORT_BAUD); + } + return false; +} + +/* + * Set maximum gates and idle time + * + * maximum detection range gate: 2-8 + * unmanned duration: 0-65535 seconds +*/ +bool ld2410::setMaxValues(uint16_t moving, uint16_t stationary, uint16_t inactivityTimer) +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + radar_uart_->write((uint8_t)char(0x14)); //Command is 20 bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION)); //Request set max values + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); //Moving gate command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(moving & 0x00FF)); //Moving gate value + radar_uart_->write((uint8_t)char((moving & 0xFF00)>>8)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x01)); //Stationary gate command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(stationary & 0x00FF)); //Stationary gate value + radar_uart_->write((uint8_t)char((stationary & 0xFF00)>>8)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x02)); //Inactivity timer command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(inactivityTimer & 0x00FF)); //Inactivity timer + radar_uart_->write((uint8_t)char((inactivityTimer & 0xFF00)>>8)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION); + } + return false; +} + +/* + * configures the sensitivity of the distance gate + * + * Command word:0x0064 + * Command value: + * individual: + * 2 bytes distance gate word 0x0000 + 4 bytes distance gate value (2-8), + * 2 bytes motion sensitivity word 0x0001 + 4 bytes motion sensitivity value. (0-100) + * 2 bytes static sensitivity word 0x0002 + 4 bytes static sensitivity value. (0-100) + * or + * Grouped: (if input gate equals 255) + * 2 bytes distance gate: 0x0000 + 4 bytes distance gate value 0xFFFF + * 2 bytes motion sensitivity word 0x0001 + 4 bytes motion sensitivity value. (0-100) + * 2 bytes static sensitivity word 0x0002 + 4 bytes static sensitivity value. (0-100) + * + * Return value:2 bytes ACK status(0 success, 1 failure) +*/ +bool ld2410::setGateSensitivityThreshold(uint8_t gate, uint8_t moving, uint8_t stationary) +{ + if(enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + radar_uart_->write((uint8_t)char(0x14)); //Command is 20 bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_RANGE_GATE_SENSITIVITY)); //Request set sensitivity values + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); //Gate command + radar_uart_->write((uint8_t)char(0x00)); + if(gate == 255 ) { + radar_uart_->write((uint8_t)char(0xFF)); //Gate value + radar_uart_->write((uint8_t)char(0xFF)); + radar_uart_->write((uint8_t)char(0xFF)); + radar_uart_->write((uint8_t)char(0xFF)); + } else { + radar_uart_->write((uint8_t)char(gate)); //Gate value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + } + radar_uart_->write((uint8_t)char(0x01)); //Motion sensitivity command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(moving)); //Motion sensitivity value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x02)); //Stationary sensitivity command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(stationary)); //Stationary sensitivity value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); //Spacer + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_RANGE_GATE_SENSITIVITY); + } + return false; +} +#endif diff --git a/lib/ld2410/src/ld2410.h b/lib/ld2410/src/ld2410.h new file mode 100644 index 0000000000..a88a142a82 --- /dev/null +++ b/lib/ld2410/src/ld2410.h @@ -0,0 +1,216 @@ +/* + * An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. + * + * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. + * + * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome https://github.com/rain931215/ESPHome-LD2410. + * + * https://github.com/ncmreynolds/ld2410 + * + * Released under LGPL-2.1 see https://github.com/ncmreynolds/ld2410/LICENSE for full license + * + */ +#pragma once + +#include + +// #define LD2410_DEBUG // Send any debug to serial? +// #define LD2410_DEBUG_DATA //Debug all Data Frames +// #define LD2410_DEBUG_COMMANDS //Debug Command Acks +// #define LD2410_DEBUG_PARSE //Debug Reporting Frames + +// Exclude DEBUG logging when requested externally +#if defined(LIBRARIES_NO_LOG) && LIBRARIES_NO_LOG + #ifdef LD2410_DEBUG + #undef LD2410_DEBUG + #endif +#endif + +/* + * Protocol Command Words +*/ +#define LD2410_MAX_FRAME_LENGTH 0x40 // or 64 bytes +#define LD2410_MAX_GATES 9 // 0 - 8 gates + +#define CMD_CONFIGURATION_ENABLE 0xFF +#define CMD_CONFIGURATION_END 0xFE +#define CMD_MAX_DISTANCE_AND_UNMANNED_DURATION 0x60 +#define CMD_READ_PARAMETER 0x61 +#define CMD_ENGINEERING_ENABLE 0x62 +#define CMD_ENGINEERING_END 0x63 +#define CMD_RANGE_GATE_SENSITIVITY 0x64 +#define CMD_READ_FIRMWARE_VERSION 0xA0 +#define CMD_SET_SERIAL_PORT_BAUD 0xA1 +#define CMD_FACTORY_RESET 0xA2 +#define CMD_RESTART 0xA3 + +/* + * Data Frame Formats +*/ +#define FRAME_TYPE_REPORTING 0x01 +#define FRAME_TYPE_TARGET 0x02 +#define FRAME_PREFIX_PROTOCOL 0xFD +#define FRAME_PREFIX_REPORTING 0xF4 +#define FRAME_TYPE_FLAG 0xAA +#define FRAME_TYPE_MARKER 0x55 + +/* + * Target State Constants +*/ +#define TARGET_NONE 0x00 +#define TARGET_MOVING 0x01 +#define TARGET_STATIONARY 0x02 +#define TARGET_MOVING_AND_STATIONARY 0x03 + + +class ld2410 { + + public: + ld2410(); //Constructor function + ~ld2410(); //Destructor function + + /* + * Primary APIs */ + bool begin(Stream &, bool waitForRadar = true); //Start the ld2410 + #ifdef LD2410_DEBUG + void debug(Stream &); //Start debugging on a stream + #endif + + bool ld2410_loop(){return read_frame_();}; //Sensor loop service + bool presenceDetected(){return target_type_ != 0;}; //last report data had a type + bool isConnected(); + bool isStationary(){return stationaryTargetDetected();}; + bool isMoving(){return movingTargetDetected();}; + uint16_t detectionDistance(){return detection_distance_;}; //Target Reporting Data + + /* + * Utilities -- depreciation candidates */ + uint8_t reportingDataComposition(){return target_type_;}; //Target data state 0-3 + bool isEngineeringMode(){return engineering_mode_;}; //Reporting Data + bool movingTargetDetected(); + bool stationaryTargetDetected(); + bool read() {return read_frame_();}; + + /* + * primary sensor responses */ + uint16_t stationaryTargetDistance(){return stationary_target_distance_;}; //Target Reporting Data + uint8_t stationaryTargetEnergy(){return stationary_target_energy_;}; //Target Reporting Data + uint16_t movingTargetDistance(){return moving_target_distance_;}; //Target Reporting Data + uint8_t movingTargetEnergy(){return moving_target_energy_;}; //Target Reporting Data + + /* + * available if engineering mode is active */ + uint8_t engMovingDistanceGateEnergy(uint8_t gate){return ((gate = P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + ExtraTaskSettings.setTaskDeviceValueName(i, concat(Plugin_159_valuename(P159_OUTPUT_STATIC_DISTANCE_GATE_index, false), + (option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) + 1)); + } else + if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + ExtraTaskSettings.setTaskDeviceValueName(i, concat(Plugin_159_valuename(P159_OUTPUT_MOVING_DISTANCE_GATE_index, false), + (option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) + 1)); + } else { + ExtraTaskSettings.setTaskDeviceValueName(i, Plugin_159_valuename(option, false)); + } + ExtraTaskSettings.TaskDeviceValueDecimals[i] = 0; // No values have decimals + } else { + ExtraTaskSettings.clearTaskDeviceValueName(i); + } + } + + break; + } + + case PLUGIN_GET_DEVICEGPIONAMES: + { + serialHelper_getGpioNames(event); + + break; + } + + case PLUGIN_WEBFORM_SHOW_CONFIG: + { + string += serialHelper_getSerialTypeLabel(event); + + success = true; + + break; + } + + case PLUGIN_GET_DEVICEVALUECOUNT: + { + event->Par1 = P159_NR_OUTPUT_VALUES; + + success = true; + + break; + } + + case PLUGIN_GET_DEVICEVTYPE: + { + event->sensorType = static_cast(PCONFIG(P159_SENSOR_TYPE_INDEX)); + event->idx = P159_SENSOR_TYPE_INDEX; + + success = true; + + break; + } + + + case PLUGIN_SET_DEFAULTS: + { + PCONFIG(0) = P159_OUTPUT_PRESENCE; + PCONFIG(1) = P159_OUTPUT_DISTANCE; + PCONFIG(2) = P159_OUTPUT_STATIONARY_ENERGY; + PCONFIG(3) = P159_OUTPUT_MOVING_ENERGY; + + PCONFIG(P159_SENSOR_TYPE_INDEX) = static_cast(Sensor_VType::SENSOR_TYPE_QUAD); + + success = true; + + break; + } + + case PLUGIN_WEBFORM_LOAD_OUTPUT_SELECTOR: + { + const uint8_t optionCount = P159_ENGINEERING_MODE == 1 ? P159_NR_ENGINEERING_OUTPUT_OPTIONS : P159_NR_OUTPUT_OPTIONS; + String options[optionCount]; + + for (uint8_t option = 0; option < optionCount; ++option) { + if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + options[option] = concat(Plugin_159_valuename(P159_OUTPUT_STATIC_DISTANCE_GATE_index, true), + (option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) + 1); + } else + if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + options[option] = concat(Plugin_159_valuename(P159_OUTPUT_MOVING_DISTANCE_GATE_index, true), + (option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) + 1); + } else { + options[option] = Plugin_159_valuename(option, true); + } + } + + const int valueCount = P159_NR_OUTPUT_VALUES; + + for (uint8_t i = 0; i < valueCount; ++i) { + const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; + sensorTypeHelper_loadOutputSelector(event, pconfigIndex, i, optionCount, options); + } + success = true; + + break; + } + + case PLUGIN_WEBFORM_LOAD: + { + addFormSelector_YesNo(F("Engineering mode"), F("eng"), P159_ENGINEERING_MODE, true); + addFormNote(F("When changing this setting the page will be reloaded")); + success = true; + + break; + } + + case PLUGIN_WEBFORM_SAVE: + { + P159_ENGINEERING_MODE = getFormItemInt(F("eng")); + + success = true; + + break; + } + case PLUGIN_INIT: + { + int8_t rxPin = serialHelper_getRxPin(event); + int8_t txPin = serialHelper_getTxPin(event); + ESPEasySerialPort portType = serialHelper_getSerialType(event); + + // Create the P159_data_struct object that will do all the sensor interaction + initPluginTaskData(event->TaskIndex, new (std::nothrow) P159_data_struct(portType, rxPin, txPin, P159_ENGINEERING_MODE == 1)); + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + success = nullptr != P159_data; + addLog(LOG_LEVEL_INFO, concat(F("P159: INIT, success: "), success ? 1 : 0)); + + break; + } + + case PLUGIN_READ: + { + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + success = P159_data->plugin_read(event); + } + + break; + } + + case PLUGIN_WRITE: + { + // TODO + + break; + } + + case PLUGIN_EXIT: + { + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + P159_data->disconnectSerial(); + } + + success = true; + + break; + } + + case PLUGIN_TEN_PER_SECOND: + { + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + success = P159_data->processSensor(); // This has 50 msec delays included, so should NOT go in PLUGIN_FIFTY_PER_SECOND ! + } + + break; + } + } // switch + + return success; +} // function + +#endif // ifdef USES_P159 diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index 8e5333fec7..a7d5601a16 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -1606,6 +1606,9 @@ To create/register a plugin, you have to : #ifndef USES_P154 #define USES_P154 // Environment - BMP3xx #endif + #ifndef USES_P159 + #define USES_P159 // Presence - LD24x0 Radar detection + #endif #endif @@ -2276,6 +2279,9 @@ To create/register a plugin, you have to : #ifndef USES_P154 #define USES_P154 // Environment - BMP3xx #endif + #ifndef USES_P159 + #define USES_P159 // Presence - LD24x0 Radar detection + #endif // Controllers #ifndef USES_C015 diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp new file mode 100644 index 0000000000..f3f5d06191 --- /dev/null +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -0,0 +1,190 @@ +// ---------------------------------------------------------------------------- +// P159 "Dust - PM1006(K) (Vindriktning)" +// Implementation of sensor abstraction +// 2022 By flashmark +// ---------------------------------------------------------------------------- +#include "../PluginStructs/P159_data_struct.h" + +#ifdef USES_P159 + +const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, + bool displayString) { + const __FlashStringHelper *strings[] { /*** ATTENTION: Don't change order of values as these are stored as user-selected!!! ***/ + F("Presence"), F("Presence"), + F("Stationary Presence"), F("StationaryPresence"), + F("Moving Presence"), F("MovingPresence"), + F("Object distance"), F("Distance"), + F("Stationary Object distance"), F("StationaryDistance"), + F("Moving Object distance"), F("MovingDistance"), + F("Stationary Object energy"), F("StationaryEnergy"), + F("Moving Object energy"), F("MovingEnergy"), + F("Ambient light sensor"), F("AmbientLight"), + F("Stationary Object energy gate "), F("StatEnergyGate"), + F("Moving Object energy gate "), F("MovingEnergyGate"), + + // TODO Add more values + }; + const size_t index = (2 * value_nr) + (displayString ? 0 : 1); + constexpr size_t nrStrings = NR_ELEMENTS(strings); + + if (index < nrStrings) { + return strings[index]; + } + return F(""); +} + +P159_data_struct::P159_data_struct(ESPEasySerialPort portType, + int8_t rxPin, + int8_t txPin, + bool engineeringMode) { + _engineeringMode = engineeringMode; + + // Try to open the associated serial port + easySerial = new (std::nothrow) ESPeasySerial(portType, rxPin, txPin); + + if (nullptr != easySerial) { + easySerial->begin(256000); + radar = new (std::nothrow) ld2410(); + + if (nullptr != radar) { + if (radar->begin(*easySerial, false)) { + bool rst = radar->requestRestart(); + + // start initiated, now wait, next step: request configuration + milestone = millis(); + state = P159_state_e::Restarting; + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Restart sensor: "), rst ? 1 : 0)); + } else { + delete radar; + radar = nullptr; + } + } + } + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Initialized: "), isValid() ? 1 : 0)); +} // constructor + +void P159_data_struct::disconnectSerial() { + if (nullptr != easySerial) { + delete easySerial; + easySerial = nullptr; + } + + if (nullptr != radar) { + delete radar; + radar = nullptr; + } +} // disconnectSerial() + +bool P159_data_struct::processSensor() { + bool new_data = false; + + if (isValid()) { + switch (state) { + case P159_state_e::Initializing: + addLog(LOG_LEVEL_INFO, F("LD2410: Initializing")); + break; + case P159_state_e::Restarting: + + if ((milestone > 0) && (timePassedSince(milestone) > P159_DELAY_RESTART)) { + state = P159_state_e::Configuring; + milestone = 0; + + if (loglevelActiveFor(LOG_LEVEL_INFO)) { + radar->requestFirmwareVersion(); + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Firmware version: "), radar->cmdFirmwareVersion())); + + const bool cfg = radar->requestCurrentConfiguration(); + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Fetch configuration: "), cfg ? 1 : 0)); + + if (cfg) { + const uint8_t mGate = radar->cfgMaxGate(); + const uint8_t mMvGate = radar->cfgMaxMovingGate(); + const uint8_t mStGate = radar->cfgMaxStationaryGate(); + const uint8_t mMax = std::max(mGate, std::max(mMvGate, mStGate)); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensor idle time: %d sec."), radar->cfgSensorIdleTimeInSeconds())); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Max. gate: %d, max. moving gate: %d, max. stationary gate: %d"), + mGate, mMvGate, mStGate)); + + for (uint8_t i = 0; i < mMax; ++i) { + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensitivity, gate %d (%1.2f - %1.2f mtr): moving:%3d, stationary:%3d"), + i + 1, i * 0.75f, (i + 1) * 0.75f, + i < mMvGate ? radar->cfgMovingGateSensitivity(i) : 0, + i < mStGate ? radar->cfgStationaryGateSensitivity(i) : 0)); + } + } + } + } + break; + case P159_state_e::Configuring: + state = P159_state_e::Running; + + if (loglevelActiveFor(LOG_LEVEL_INFO)) { + if (_engineeringMode) { + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Engineering mode: "), radar->requestStartEngineeringMode() ? 1 : 0)); + } + } + break; + case P159_state_e::Running: + new_data = radar->ld2410_loop(); + break; + } + } // isValid() + + return new_data; +} // processSensor() + +bool P159_data_struct::plugin_read(struct EventStruct *event) { + bool result = false; + + if (isValid() && radar->isConnected()) { + const int8_t valueCount = P159_NR_OUTPUT_VALUES; + + for (int8_t i = 0; i < valueCount; ++i) { + const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; + bool isChanged = false; + UserVar[event->BaseVarIndex + i] = getRadarValue(event, i, PCONFIG(pconfigIndex), UserVar[event->BaseVarIndex + i], isChanged); + + result |= isChanged; + } + } + return result; +} // plugin_read() + +int P159_data_struct::getRadarValue(struct EventStruct *event, + uint8_t varIndex, + int16_t valueIndex, + int previousValue, + bool & isChanged) { + int result = previousValue; + + if (isValid()) { + switch (valueIndex) { + case P159_OUTPUT_PRESENCE: result = radar->presenceDetected() ? 1 : 0; break; + case P159_OUTPUT_STATIONARY_PRESENCE: result = radar->isStationary() ? 1 : 0; break; + case P159_OUTPUT_MOVING_PRESENCE: result = radar->isMoving() ? 1 : 0; break; + case P159_OUTPUT_DISTANCE: result = radar->detectionDistance(); break; + case P159_OUTPUT_STATIONARY_DISTANCE: result = radar->stationaryTargetDistance(); break; + case P159_OUTPUT_MOVING_DISTANCE: result = radar->movingTargetDistance(); break; + case P159_OUTPUT_STATIONARY_ENERGY: result = radar->stationaryTargetEnergy(); break; + case P159_OUTPUT_MOVING_ENERGY: result = radar->movingTargetEnergy(); break; + } + + if (_engineeringMode) { + if ((valueIndex >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (valueIndex <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + result = radar->engStaticDistanceGateEnergy(valueIndex - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1); + } + else + if ((valueIndex >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (valueIndex <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + result = radar->engMovingDistanceGateEnergy(valueIndex - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1); + } + else + if (valueIndex == P159_OUTPUT_LIGHT_SENSOR) { + result = radar->engLightSensorValue(); + } + } + isChanged = result != previousValue; + } // isValid() + return result; +} // getRadarValue() + +#endif // USES_P159 diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h new file mode 100644 index 0000000000..ab054d159b --- /dev/null +++ b/src/src/PluginStructs/P159_data_struct.h @@ -0,0 +1,98 @@ +// ---------------------------------------------------------------------------- +// P159 "Dust - PM1006(K) (Vindriktning)" +// Header file for sensor abstraction +// 2022 By flashmark +// ---------------------------------------------------------------------------- +#ifndef PLUGINSTRUCTS_P159_DATA_STRUCT_H +#define PLUGINSTRUCTS_P159_DATA_STRUCT_H + +#include "../../_Plugin_Helper.h" +#ifdef USES_P159 +# define PLUGIN_159_DEBUG false // set to true for extra log info + +# include +# include + +// place sensor type selector right after the output value settings +# define P159_QUERY1_CONFIG_POS 0 +# define P159_SENSOR_TYPE_INDEX (P159_QUERY1_CONFIG_POS + VARS_PER_TASK) +# define P159_NR_OUTPUT_VALUES getValueCountFromSensorType(static_cast(PCONFIG(P159_SENSOR_TYPE_INDEX))) +# define P159_ENGINEERING_MODE PCONFIG(5) + +# define P159_OUTPUT_PRESENCE 0 +# define P159_OUTPUT_STATIONARY_PRESENCE 1 +# define P159_OUTPUT_MOVING_PRESENCE 2 +# define P159_OUTPUT_DISTANCE 3 +# define P159_OUTPUT_STATIONARY_DISTANCE 4 +# define P159_OUTPUT_MOVING_DISTANCE 5 +# define P159_OUTPUT_STATIONARY_ENERGY 6 +# define P159_OUTPUT_MOVING_ENERGY 7 + +// Engineering mode: +# define P159_OUTPUT_LIGHT_SENSOR 8 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 9 +# define P159_OUTPUT_STATIC_DISTANCE_GATE_index 9 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 10 +# define P159_OUTPUT_MOVING_DISTANCE_GATE_index 10 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 11 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 12 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 13 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 14 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 15 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 16 + +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 17 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 18 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 19 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 20 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 21 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 22 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 23 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 24 + +# define P159_NR_OUTPUT_OPTIONS 8 // Last P159_OUTPUT_* value + 1 (count) +# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 25 // Last P159_OUTPUT_* value + 1 (count) + +# define P159_DELAY_RESTART 2500 // milliseconds to 'wait' (ignore) after a device-restart + +enum class P159_state_e : uint8_t { + Initializing = 0u, + Restarting = 1u, + Configuring = 2u, + Running = 3u, +}; + +const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, + bool displayString); + +struct P159_data_struct : public PluginTaskData_base { + P159_data_struct(ESPEasySerialPort portType, + int8_t rxPin, + int8_t txPin, + bool engineeringMode); + virtual ~P159_data_struct() = default; + void disconnectSerial(); // Disconnect the serial port connected to the sensor + bool processSensor(); // Process sensor, must be called regularly + bool plugin_read(struct EventStruct *event); + + bool isValid() const { + return nullptr != easySerial && nullptr != radar; + } + +private: + + int getRadarValue(struct EventStruct *event, + uint8_t varIndex, + int16_t valueIndex, + int previousValue, + bool & isChanged); + + ESPeasySerial *easySerial = nullptr; // Serial port object + ld2410 *radar = nullptr; // Sensor object + uint32_t milestone = 0; // When can we do the next phase when not in Running state? + P159_state_e state = P159_state_e::Initializing; + bool _engineeringMode = false; +}; + +#endif // USES_P159 +#endif // PLUGINSTRUCTS_P159_DATA_STRUCT_H From 38bd3eff1374011705e9a2f69be7519875e4d9f7 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 17 Oct 2023 21:08:53 +0200 Subject: [PATCH 02/19] [P159] Remove copy/paste evidence :-D --- src/src/PluginStructs/P159_data_struct.cpp | 5 ----- src/src/PluginStructs/P159_data_struct.h | 5 ----- 2 files changed, 10 deletions(-) diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index f3f5d06191..9b0eeecbce 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -1,8 +1,3 @@ -// ---------------------------------------------------------------------------- -// P159 "Dust - PM1006(K) (Vindriktning)" -// Implementation of sensor abstraction -// 2022 By flashmark -// ---------------------------------------------------------------------------- #include "../PluginStructs/P159_data_struct.h" #ifdef USES_P159 diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index ab054d159b..c4a853f964 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -1,8 +1,3 @@ -// ---------------------------------------------------------------------------- -// P159 "Dust - PM1006(K) (Vindriktning)" -// Header file for sensor abstraction -// 2022 By flashmark -// ---------------------------------------------------------------------------- #ifndef PLUGINSTRUCTS_P159_DATA_STRUCT_H #define PLUGINSTRUCTS_P159_DATA_STRUCT_H From 3c81f7799885d0986a962f4d1c4d8b257deecc43 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 21 Oct 2023 22:34:23 +0200 Subject: [PATCH 03/19] [P159] Many improvements, add/update settings for sensitivity --- src/_P159_LD2410.ino | 68 +++++++-- src/src/PluginStructs/P159_data_struct.cpp | 168 +++++++++++++++++---- src/src/PluginStructs/P159_data_struct.h | 45 ++++-- 3 files changed, 223 insertions(+), 58 deletions(-) diff --git a/src/_P159_LD2410.ino b/src/_P159_LD2410.ino index 83f28b3574..b9ef73c1cc 100644 --- a/src/_P159_LD2410.ino +++ b/src/_P159_LD2410.ino @@ -5,6 +5,10 @@ // ####################################################################################################### /** Changelog: + * 2023-10-21 tonhuisman: Read data at 50/sec instead of 10/sec to catch up with the high speed of output + * Add/update settings for Sensitivity and nr. of active gates, idle seconds + * Shorten default value names, (breaking) change setting for Engineering mode + * Add setting for generating events only when a value has changed * 2023-10-14 tonhuisman: Using ld2410 library from https://github.com/ncmreynolds/ld2410, but with PR #3 applied * including a fix for index/index + 1, mentioned in the comments of that PR and timeout * extended to 2500 msec @@ -35,16 +39,17 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) { // This case defines the device characteristics - Device[++deviceCount].Number = PLUGIN_ID_159; - Device[deviceCount].Type = DEVICE_TYPE_SERIAL; - Device[deviceCount].VType = Sensor_VType::SENSOR_TYPE_SINGLE; - Device[deviceCount].ValueCount = 4; - Device[deviceCount].OutputDataType = Output_Data_type_t::Simple; - Device[deviceCount].FormulaOption = true; - Device[deviceCount].SendDataOption = true; - Device[deviceCount].GlobalSyncOption = true; - Device[deviceCount].TimerOption = true; - Device[deviceCount].PluginStats = true; + Device[++deviceCount].Number = PLUGIN_ID_159; + Device[deviceCount].Type = DEVICE_TYPE_SERIAL; + Device[deviceCount].VType = Sensor_VType::SENSOR_TYPE_SINGLE; + Device[deviceCount].ValueCount = 4; + Device[deviceCount].OutputDataType = Output_Data_type_t::Simple; + Device[deviceCount].FormulaOption = true; + Device[deviceCount].SendDataOption = true; + Device[deviceCount].GlobalSyncOption = true; + Device[deviceCount].TimerOption = true; + Device[deviceCount].PluginStats = true; + Device[deviceCount].ExitTaskBeforeSave = false; // Enable calling PLUGIN_WEBFORM_SAVE on the instantiated object break; } @@ -136,7 +141,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_WEBFORM_LOAD_OUTPUT_SELECTOR: { - const uint8_t optionCount = P159_ENGINEERING_MODE == 1 ? P159_NR_ENGINEERING_OUTPUT_OPTIONS : P159_NR_OUTPUT_OPTIONS; + const uint8_t optionCount = P159_GET_ENGINEERING_MODE == 1 ? P159_NR_ENGINEERING_OUTPUT_OPTIONS : P159_NR_OUTPUT_OPTIONS; String options[optionCount]; for (uint8_t option = 0; option < optionCount; ++option) { @@ -158,6 +163,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; sensorTypeHelper_loadOutputSelector(event, pconfigIndex, i, optionCount, options); } + success = true; break; @@ -165,16 +171,33 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_WEBFORM_LOAD: { - addFormSelector_YesNo(F("Engineering mode"), F("eng"), P159_ENGINEERING_MODE, true); + addFormSelector_YesNo(F("Engineering mode"), F("eng"), P159_GET_ENGINEERING_MODE, true); addFormNote(F("When changing this setting the page will be reloaded")); + + addFormCheckBox(F("Generate Events only when changed"), F("diff"), P159_GET_UPDATE_DIFF_ONLY); + success = true; + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + addFormSubHeader(F("Sensitivity settings")); + success = P159_data->plugin_webform_load(event); + } + break; } case PLUGIN_WEBFORM_SAVE: { - P159_ENGINEERING_MODE = getFormItemInt(F("eng")); + P159_SET_ENGINEERING_MODE(getFormItemInt(F("eng"))); + P159_SET_UPDATE_DIFF_ONLY(isFormItemChecked(F("diff")) ? 1 : 0); + + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + P159_data->plugin_webform_save(event); + } success = true; @@ -187,7 +210,10 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) ESPEasySerialPort portType = serialHelper_getSerialType(event); // Create the P159_data_struct object that will do all the sensor interaction - initPluginTaskData(event->TaskIndex, new (std::nothrow) P159_data_struct(portType, rxPin, txPin, P159_ENGINEERING_MODE == 1)); + initPluginTaskData(event->TaskIndex, new (std::nothrow) P159_data_struct(portType, + rxPin, + txPin, + P159_GET_ENGINEERING_MODE == 1)); P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); success = nullptr != P159_data; @@ -231,8 +257,18 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) { P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); - if (nullptr != P159_data) { - success = P159_data->processSensor(); // This has 50 msec delays included, so should NOT go in PLUGIN_FIFTY_PER_SECOND ! + if ((nullptr != P159_data) && !P159_data->isRunning()) { + success = P159_data->processSensor(); // Not Running can have 50 msec delays included, so NOT in PLUGIN_FIFTY_PER_SECOND ! + } + + break; + } + case PLUGIN_FIFTY_PER_SECOND: + { + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if ((nullptr != P159_data) && P159_data->isRunning()) { + success = P159_data->processSensor(); // When running no delays are inserted, so can go in PLUGIN_FIFTY_PER_SECOND } break; diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index 9b0eeecbce..aa0e3c7dc3 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -6,14 +6,14 @@ const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, bool displayString) { const __FlashStringHelper *strings[] { /*** ATTENTION: Don't change order of values as these are stored as user-selected!!! ***/ F("Presence"), F("Presence"), - F("Stationary Presence"), F("StationaryPresence"), - F("Moving Presence"), F("MovingPresence"), + F("Stationary Presence"), F("StatPresence"), + F("Moving Presence"), F("MovPresence"), F("Object distance"), F("Distance"), - F("Stationary Object distance"), F("StationaryDistance"), - F("Moving Object distance"), F("MovingDistance"), - F("Stationary Object energy"), F("StationaryEnergy"), - F("Moving Object energy"), F("MovingEnergy"), - F("Ambient light sensor"), F("AmbientLight"), + F("Stationary Object distance"), F("StatDistance"), + F("Moving Object distance"), F("MovDistance"), + F("Stationary Object energy"), F("StatEnergy"), + F("Moving Object energy"), F("MovEnergy"), + F("Ambient light sensor"), F("AmbLight"), F("Stationary Object energy gate "), F("StatEnergyGate"), F("Moving Object energy gate "), F("MovingEnergyGate"), @@ -74,6 +74,9 @@ bool P159_data_struct::processSensor() { bool new_data = false; if (isValid()) { + uint32_t iStart = millis(); // FIXME Remove log + P159_state_e sState = state; + switch (state) { case P159_state_e::Initializing: addLog(LOG_LEVEL_INFO, F("LD2410: Initializing")); @@ -81,48 +84,63 @@ bool P159_data_struct::processSensor() { case P159_state_e::Restarting: if ((milestone > 0) && (timePassedSince(milestone) > P159_DELAY_RESTART)) { - state = P159_state_e::Configuring; + state = P159_state_e::GetVersion; milestone = 0; + radar->requestFirmwareVersion(); + } + break; + case P159_state_e::GetVersion: + + state = P159_state_e::GetConfiguration; + + if (loglevelActiveFor(LOG_LEVEL_INFO)) { + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Firmware version: "), radar->cmdFirmwareVersion())); + } + _configurationRead = radar->requestCurrentConfiguration(); + break; + case P159_state_e::GetConfiguration: + + state = P159_state_e::Engineering; + + if (loglevelActiveFor(LOG_LEVEL_INFO)) { + addLog(LOG_LEVEL_INFO, concat(F("LD2410: Fetch configuration: "), _configurationRead ? 1 : 0)); + + if (_configurationRead) { + const uint8_t mGate = radar->cfgMaxGate(); + const uint8_t mMvGate = radar->cfgMaxMovingGate(); + const uint8_t mStGate = radar->cfgMaxStationaryGate(); + const uint8_t mMax = std::max(mGate, std::max(mMvGate, mStGate)); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensor idle time: %d sec."), radar->cfgSensorIdleTimeInSeconds())); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Max. gate: %d, max. moving gate: %d, max. stationary gate: %d"), + mGate, mMvGate, mStGate)); - if (loglevelActiveFor(LOG_LEVEL_INFO)) { - radar->requestFirmwareVersion(); - addLog(LOG_LEVEL_INFO, concat(F("LD2410: Firmware version: "), radar->cmdFirmwareVersion())); - - const bool cfg = radar->requestCurrentConfiguration(); - addLog(LOG_LEVEL_INFO, concat(F("LD2410: Fetch configuration: "), cfg ? 1 : 0)); - - if (cfg) { - const uint8_t mGate = radar->cfgMaxGate(); - const uint8_t mMvGate = radar->cfgMaxMovingGate(); - const uint8_t mStGate = radar->cfgMaxStationaryGate(); - const uint8_t mMax = std::max(mGate, std::max(mMvGate, mStGate)); - addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensor idle time: %d sec."), radar->cfgSensorIdleTimeInSeconds())); - addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Max. gate: %d, max. moving gate: %d, max. stationary gate: %d"), - mGate, mMvGate, mStGate)); - - for (uint8_t i = 0; i < mMax; ++i) { - addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensitivity, gate %d (%1.2f - %1.2f mtr): moving:%3d, stationary:%3d"), - i + 1, i * 0.75f, (i + 1) * 0.75f, - i < mMvGate ? radar->cfgMovingGateSensitivity(i) : 0, - i < mStGate ? radar->cfgStationaryGateSensitivity(i) : 0)); - } + for (uint8_t i = 0; i <= mMax; ++i) { + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Sensitivity, gate %d (%.2f - %.2f mtr): moving:%3d, stationary:%3d"), + i, i * 0.75f, (i + 1) * 0.75f, + i <= mMvGate ? radar->cfgMovingGateSensitivity(i) : 0, + i <= mStGate ? radar->cfgStationaryGateSensitivity(i) : 0)); } } } break; - case P159_state_e::Configuring: + case P159_state_e::Engineering: state = P159_state_e::Running; if (loglevelActiveFor(LOG_LEVEL_INFO)) { if (_engineeringMode) { addLog(LOG_LEVEL_INFO, concat(F("LD2410: Engineering mode: "), radar->requestStartEngineeringMode() ? 1 : 0)); } + addLog(LOG_LEVEL_INFO, F("LD2410: Running mode.")); } break; case P159_state_e::Running: new_data = radar->ld2410_loop(); break; } + + if (P159_state_e::Running != sState) { // FIXME Remove log + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Starting state: %d duration: %u msec."), static_cast(sState), millis() - iStart)); + } } // isValid() return new_data; @@ -133,6 +151,7 @@ bool P159_data_struct::plugin_read(struct EventStruct *event) { if (isValid() && radar->isConnected()) { const int8_t valueCount = P159_NR_OUTPUT_VALUES; + result = !P159_GET_UPDATE_DIFF_ONLY; for (int8_t i = 0; i < valueCount; ++i) { const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; @@ -182,4 +201,91 @@ int P159_data_struct::getRadarValue(struct EventStruct *event, return result; } // getRadarValue() +void P159_data_struct::addJavascript() { + addHtml(F("" + )); +} + +bool P159_data_struct::plugin_webform_load(struct EventStruct *event) { + bool result = false; + + if (isValid()) { + if (!_configurationRead) { + _configurationRead = radar->requestCurrentConfiguration(); + } + + if (_configurationRead) { + const uint8_t mGate = radar->cfgMaxGate(); + const uint8_t mMvGate = radar->cfgMaxMovingGate(); + const uint8_t mStGate = radar->cfgMaxStationaryGate(); + const uint8_t mMax = std::max(mGate, std::max(mMvGate, mStGate)); + const uint16_t idleTime = radar->cfgSensorIdleTimeInSeconds(); + + addJavascript(); + addFormCheckBox(F("Modify sensor settings"), F("saveSens"), false); + + int idx = 0; + addFormNumericBox(F("Idle seconds"), getPluginCustomArgName(idx++), idleTime, 0, 65535, EMPTY_STRING, true); + addUnit(F("0..65535 sec.")); + addFormNumericBox(F("Max. Moving gates"), getPluginCustomArgName(idx++), mMvGate, 2, 8, EMPTY_STRING, true); + addUnit(F("2..8")); + addFormNumericBox(F("Max. Stationary gates"), getPluginCustomArgName(idx++), mStGate, 2, 8, EMPTY_STRING, true); + addUnit(F("2..8")); + + addRowLabel(F("Sensitivity")); + html_table(EMPTY_STRING, false); // Sub-table + html_table_header(F("Gate"), 200); + html_table_header(F("Moving"), 100); + html_table_header(F("Stationary"), 100); + + for (uint8_t i = 0; i <= mMax; ++i) { + html_TR_TD(); + addHtml(strformat(F("Gate %d (%.2f - %.2f mtr)"), i, i * 0.75f, (i + 1) * 0.75f)); + html_TD(); + addNumericBox(getPluginCustomArgName(idx++), radar->cfgMovingGateSensitivity(i), 0, 100, true); + html_TD(); + addNumericBox(getPluginCustomArgName(idx++), radar->cfgStationaryGateSensitivity(i), 0, 100, true); + } + html_end_table(); + addHtml(strformat(F("\n"), + idx)); + result = true; + } + } + return result; +} + +bool P159_data_struct::plugin_webform_save(struct EventStruct *event) { + bool result = false; + const bool doSave = isFormItemChecked(F("saveSens")); + + if (isValid() && doSave) { + int idx = 0; + const uint16_t idle = getFormItemInt(getPluginCustomArgName(idx++)); + const uint8_t gMove = getFormItemInt(getPluginCustomArgName(idx++)); + const uint8_t gStat = getFormItemInt(getPluginCustomArgName(idx++)); + addLog(LOG_LEVEL_INFO, F("LD2410: Save sensitivity settings to sensor, start...")); + radar->requestConfigurationModeBegin(); + radar->setMaxValues(gMove, gStat, idle); + const uint16_t maxGate = radar->cfgMaxGate(); + + for (uint16_t gate = 0; gate <= maxGate; ++gate) { + const uint16_t sMove = getFormItemInt(getPluginCustomArgName(idx++)); + const uint16_t sStat = getFormItemInt(getPluginCustomArgName(idx++)); + + // Set sensitivity (level) to 100 to effectively disable sensitivity + radar->setGateSensitivityThreshold(gate, gate <= gMove ? sMove : 100, gate <= gStat ? sStat : 100); + } + radar->requestConfigurationModeEnd(); + addLog(LOG_LEVEL_INFO, F("LD2410: Save sensitivity settings to sensor, done.")); + } + return result; +} + #endif // USES_P159 diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index c4a853f964..e0e659981a 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -12,7 +12,16 @@ # define P159_QUERY1_CONFIG_POS 0 # define P159_SENSOR_TYPE_INDEX (P159_QUERY1_CONFIG_POS + VARS_PER_TASK) # define P159_NR_OUTPUT_VALUES getValueCountFromSensorType(static_cast(PCONFIG(P159_SENSOR_TYPE_INDEX))) -# define P159_ENGINEERING_MODE PCONFIG(5) + +# define P159_CONFIG_FLAGS PCONFIG_ULONG(0) + +# define P159_FLAG_ENGINEERING_MODE 0 +# define P159_FLAG_UPDATE_DIFF_ONLY 1 + +# define P159_GET_ENGINEERING_MODE bitRead(P159_CONFIG_FLAGS, P159_FLAG_ENGINEERING_MODE) +# define P159_SET_ENGINEERING_MODE(x) bitWrite(P159_CONFIG_FLAGS, P159_FLAG_ENGINEERING_MODE, x) +# define P159_GET_UPDATE_DIFF_ONLY bitRead(P159_CONFIG_FLAGS, P159_FLAG_UPDATE_DIFF_ONLY) +# define P159_SET_UPDATE_DIFF_ONLY(x) bitWrite(P159_CONFIG_FLAGS, P159_FLAG_UPDATE_DIFF_ONLY, x) # define P159_OUTPUT_PRESENCE 0 # define P159_OUTPUT_STATIONARY_PRESENCE 1 @@ -51,10 +60,12 @@ # define P159_DELAY_RESTART 2500 // milliseconds to 'wait' (ignore) after a device-restart enum class P159_state_e : uint8_t { - Initializing = 0u, - Restarting = 1u, - Configuring = 2u, - Running = 3u, + Initializing = 0u, + Restarting = 1u, + GetVersion = 2u, + GetConfiguration = 3u, + Engineering = 4u, + Running = 5u, }; const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, @@ -69,11 +80,21 @@ struct P159_data_struct : public PluginTaskData_base { void disconnectSerial(); // Disconnect the serial port connected to the sensor bool processSensor(); // Process sensor, must be called regularly bool plugin_read(struct EventStruct *event); + bool plugin_webform_load(struct EventStruct *event); + bool plugin_webform_save(struct EventStruct *event); bool isValid() const { return nullptr != easySerial && nullptr != radar; } + P159_state_e getCurrentState() const { + return state; + } + + bool isRunning() const { + return isValid() && P159_state_e::Running == state; + } + private: int getRadarValue(struct EventStruct *event, @@ -81,12 +102,14 @@ struct P159_data_struct : public PluginTaskData_base { int16_t valueIndex, int previousValue, bool & isChanged); - - ESPeasySerial *easySerial = nullptr; // Serial port object - ld2410 *radar = nullptr; // Sensor object - uint32_t milestone = 0; // When can we do the next phase when not in Running state? - P159_state_e state = P159_state_e::Initializing; - bool _engineeringMode = false; + void addJavascript(); + + ESPeasySerial *easySerial = nullptr; // Serial port object + ld2410 *radar = nullptr; // Sensor object + uint32_t milestone = 0; // When can we do the next phase when not in Running state? + P159_state_e state = P159_state_e::Initializing; + bool _engineeringMode = false; + bool _configurationRead = false; }; #endif // USES_P159 From ca48cb100f1474244f662db39417836d35869c41 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 22 Oct 2023 13:25:25 +0200 Subject: [PATCH 04/19] [P159] Fix compilation on LIMIT_BUILD_SIZE builds --- src/src/PluginStructs/P159_data_struct.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index aa0e3c7dc3..ea48c71e52 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -230,11 +230,23 @@ bool P159_data_struct::plugin_webform_load(struct EventStruct *event) { addFormCheckBox(F("Modify sensor settings"), F("saveSens"), false); int idx = 0; - addFormNumericBox(F("Idle seconds"), getPluginCustomArgName(idx++), idleTime, 0, 65535, EMPTY_STRING, true); + addFormNumericBox(F("Idle seconds"), getPluginCustomArgName(idx++), idleTime, 0, 65535, + # if FEATURE_TOOLTIPS + EMPTY_STRING, + # endif // if FEATURE_TOOLTIPS + true); addUnit(F("0..65535 sec.")); - addFormNumericBox(F("Max. Moving gates"), getPluginCustomArgName(idx++), mMvGate, 2, 8, EMPTY_STRING, true); + addFormNumericBox(F("Max. Moving gates"), getPluginCustomArgName(idx++), mMvGate, 2, 8, + # if FEATURE_TOOLTIPS + EMPTY_STRING, + # endif // if FEATURE_TOOLTIPS + true); addUnit(F("2..8")); - addFormNumericBox(F("Max. Stationary gates"), getPluginCustomArgName(idx++), mStGate, 2, 8, EMPTY_STRING, true); + addFormNumericBox(F("Max. Stationary gates"), getPluginCustomArgName(idx++), mStGate, 2, 8, + # if FEATURE_TOOLTIPS + EMPTY_STRING, + # endif // if FEATURE_TOOLTIPS + true); addUnit(F("2..8")); addRowLabel(F("Sensitivity")); From 402c5c878e79666b3861efe88f36a59a07bed452 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 22 Oct 2023 13:28:03 +0200 Subject: [PATCH 05/19] [P159] Small improvements --- src/src/PluginStructs/P159_data_struct.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index ea48c71e52..b7d88be75d 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -6,18 +6,16 @@ const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, bool displayString) { const __FlashStringHelper *strings[] { /*** ATTENTION: Don't change order of values as these are stored as user-selected!!! ***/ F("Presence"), F("Presence"), - F("Stationary Presence"), F("StatPresence"), - F("Moving Presence"), F("MovPresence"), + F("Stationary Presence"), F("StatPres"), + F("Moving Presence"), F("MovPres"), F("Object distance"), F("Distance"), - F("Stationary Object distance"), F("StatDistance"), - F("Moving Object distance"), F("MovDistance"), + F("Stationary Object distance"), F("StatDist"), + F("Moving Object distance"), F("MovDist"), F("Stationary Object energy"), F("StatEnergy"), F("Moving Object energy"), F("MovEnergy"), F("Ambient light sensor"), F("AmbLight"), F("Stationary Object energy gate "), F("StatEnergyGate"), F("Moving Object energy gate "), F("MovingEnergyGate"), - - // TODO Add more values }; const size_t index = (2 * value_nr) + (displayString ? 0 : 1); constexpr size_t nrStrings = NR_ELEMENTS(strings); @@ -144,7 +142,7 @@ bool P159_data_struct::processSensor() { } // isValid() return new_data; -} // processSensor() +} // processSensor() bool P159_data_struct::plugin_read(struct EventStruct *event) { bool result = false; @@ -220,6 +218,9 @@ bool P159_data_struct::plugin_webform_load(struct EventStruct *event) { } if (_configurationRead) { + addRowLabel(F("Firmware version: ")); + addHtml(radar->cmdFirmwareVersion()); + const uint8_t mGate = radar->cfgMaxGate(); const uint8_t mMvGate = radar->cfgMaxMovingGate(); const uint8_t mStGate = radar->cfgMaxStationaryGate(); From d94d8bdfd2bd3d30272e32173c102628bb65e0d6 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 22 Oct 2023 13:38:01 +0200 Subject: [PATCH 06/19] [P159] Small improvements --- src/src/PluginStructs/P159_data_struct.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index b7d88be75d..7805474ab7 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -137,7 +137,7 @@ bool P159_data_struct::processSensor() { } if (P159_state_e::Running != sState) { // FIXME Remove log - addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Starting state: %d duration: %u msec."), static_cast(sState), millis() - iStart)); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Starting state: %d duration: %d msec."), static_cast(sState), timePassedSince(iStart))); } } // isValid() From 17db570b1fa5360cdde68c4fcf84d57284d28962 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 22 Oct 2023 14:00:53 +0200 Subject: [PATCH 07/19] [P159] Add command for sensor factoryreset --- src/_P159_LD2410.ino | 11 ++++++++- src/src/PluginStructs/P159_data_struct.cpp | 26 ++++++++++++++++++++-- src/src/PluginStructs/P159_data_struct.h | 2 ++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/_P159_LD2410.ino b/src/_P159_LD2410.ino index b9ef73c1cc..5811120b79 100644 --- a/src/_P159_LD2410.ino +++ b/src/_P159_LD2410.ino @@ -5,6 +5,7 @@ // ####################################################################################################### /** Changelog: + * 2023-10-22 tonhuisman: Add command handling: ld2410,factoryreset * 2023-10-21 tonhuisman: Read data at 50/sec instead of 10/sec to catch up with the high speed of output * Add/update settings for Sensitivity and nr. of active gates, idle seconds * Shorten default value names, (breaking) change setting for Engineering mode @@ -20,6 +21,10 @@ * human presence detectors */ +/** Commands: + * ld2410,factoryreset : Reset sensor to factory defaults, also restarts the sensor like the task is just started. + */ + #ifdef USES_P159 # include "src/PluginStructs/P159_data_struct.h" // Sensor abstraction for P159 @@ -235,7 +240,11 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) case PLUGIN_WRITE: { - // TODO + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + success = P159_data->plugin_write(event, string); + } break; } diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index 7805474ab7..0b96ac3d5b 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -137,12 +137,13 @@ bool P159_data_struct::processSensor() { } if (P159_state_e::Running != sState) { // FIXME Remove log - addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Starting state: %d duration: %d msec."), static_cast(sState), timePassedSince(iStart))); + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: Starting state: %d duration: %d msec."), + static_cast(sState), timePassedSince(iStart))); } } // isValid() return new_data; -} // processSensor() +} // processSensor() bool P159_data_struct::plugin_read(struct EventStruct *event) { bool result = false; @@ -301,4 +302,25 @@ bool P159_data_struct::plugin_webform_save(struct EventStruct *event) { return result; } +bool P159_data_struct::plugin_write(struct EventStruct *event, + String & string) { + bool result = false; + const String cmd = parseString(string, 1); + + if (isValid() && equals(cmd, F("ld2410"))) { + const String subcmd = parseString(string, 2); + + if (equals(subcmd, F("factoryreset"))) { + addLog(LOG_LEVEL_ERROR, F("LD2410: Performing unconditional sensor factory reset!")); + result = radar->requestFactoryReset(); + radar->requestRestart(); + + // start initiated, now wait, next step: request configuration + milestone = millis(); + state = P159_state_e::Restarting; + } + } + return result; +} + #endif // USES_P159 diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index e0e659981a..def2eb2856 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -82,6 +82,8 @@ struct P159_data_struct : public PluginTaskData_base { bool plugin_read(struct EventStruct *event); bool plugin_webform_load(struct EventStruct *event); bool plugin_webform_save(struct EventStruct *event); + bool plugin_write(struct EventStruct *event, + String & string); bool isValid() const { return nullptr != easySerial && nullptr != radar; From b3e17158371edc5ecdc06ad1a0d718ae83835154 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Mon, 23 Oct 2023 22:23:00 +0200 Subject: [PATCH 08/19] [Lib] LD2410: Fix bug (-1 for uint), add undocumented OutputPinState value --- lib/ld2410/src/ld2410.cpp | 1 + lib/ld2410/src/ld2410.h | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ld2410/src/ld2410.cpp b/lib/ld2410/src/ld2410.cpp index 1ca60b971a..5d1ed75383 100644 --- a/lib/ld2410/src/ld2410.cpp +++ b/lib/ld2410/src/ld2410.cpp @@ -449,6 +449,7 @@ bool ld2410::parse_data_frame_() max_moving_distance_gate = radar_data_frame_[17]; max_static_distance_gate = radar_data_frame_[18]; light_sensor_data_ = radar_data_frame_[37]; + output_pin_data_ = radar_data_frame_[38]; uint8_t pos = 19; diff --git a/lib/ld2410/src/ld2410.h b/lib/ld2410/src/ld2410.h index a88a142a82..aa5a14951c 100644 --- a/lib/ld2410/src/ld2410.h +++ b/lib/ld2410/src/ld2410.h @@ -100,12 +100,13 @@ class ld2410 { /* * available if engineering mode is active */ - uint8_t engMovingDistanceGateEnergy(uint8_t gate){return ((gate Date: Mon, 23 Oct 2023 22:27:31 +0200 Subject: [PATCH 09/19] [P159] Add OutputPinState option after AmbientLight option (breaking change!) --- src/_P159_LD2410.ino | 2 ++ src/src/PluginStructs/P159_data_struct.cpp | 7 +++- src/src/PluginStructs/P159_data_struct.h | 41 +++++++++++----------- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/_P159_LD2410.ino b/src/_P159_LD2410.ino index 5811120b79..a8a63804f3 100644 --- a/src/_P159_LD2410.ino +++ b/src/_P159_LD2410.ino @@ -5,6 +5,8 @@ // ####################################################################################################### /** Changelog: + * 2023-10-23 tonhuisman: !! Breaking change: Insert OutputPinState (undocumented) value after AmbientLight value + * shifting all Sensitivity value offsets by 1 !! * 2023-10-22 tonhuisman: Add command handling: ld2410,factoryreset * 2023-10-21 tonhuisman: Read data at 50/sec instead of 10/sec to catch up with the high speed of output * Add/update settings for Sensitivity and nr. of active gates, idle seconds diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index 0b96ac3d5b..0ac070a26f 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -14,6 +14,7 @@ const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, F("Stationary Object energy"), F("StatEnergy"), F("Moving Object energy"), F("MovEnergy"), F("Ambient light sensor"), F("AmbLight"), + F("Output pin state"), F("OutputPin"), F("Stationary Object energy gate "), F("StatEnergyGate"), F("Moving Object energy gate "), F("MovingEnergyGate"), }; @@ -191,9 +192,13 @@ int P159_data_struct::getRadarValue(struct EventStruct *event, result = radar->engMovingDistanceGateEnergy(valueIndex - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1); } else - if (valueIndex == P159_OUTPUT_LIGHT_SENSOR) { + if (P159_OUTPUT_LIGHT_SENSOR == valueIndex) { result = radar->engLightSensorValue(); } + else + if (P159_OUTPUT_PIN_STATE == valueIndex) { + result = radar->engOutputPinState(); + } } isChanged = result != previousValue; } // isValid() diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index def2eb2856..c3aad24624 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -34,28 +34,29 @@ // Engineering mode: # define P159_OUTPUT_LIGHT_SENSOR 8 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 9 -# define P159_OUTPUT_STATIC_DISTANCE_GATE_index 9 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 10 -# define P159_OUTPUT_MOVING_DISTANCE_GATE_index 10 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 11 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 12 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 13 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 14 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 15 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 16 - -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 17 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 18 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 19 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 20 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 21 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 22 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 23 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 24 +# define P159_OUTPUT_PIN_STATE 9 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 10 +# define P159_OUTPUT_STATIC_DISTANCE_GATE_index 10 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 11 +# define P159_OUTPUT_MOVING_DISTANCE_GATE_index 11 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 12 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 13 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 14 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 15 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 16 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 17 + +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 18 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 19 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 20 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 21 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 22 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 23 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 24 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 25 # define P159_NR_OUTPUT_OPTIONS 8 // Last P159_OUTPUT_* value + 1 (count) -# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 25 // Last P159_OUTPUT_* value + 1 (count) +# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 26 // Last P159_OUTPUT_* value + 1 (count) # define P159_DELAY_RESTART 2500 // milliseconds to 'wait' (ignore) after a device-restart From 0caef3871251ae0bddeae20957ee6b4273ea853c Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 24 Oct 2023 22:39:23 +0200 Subject: [PATCH 10/19] [P159] Minor change to determine how that may influence the build --- src/src/PluginStructs/P159_data_struct.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index c3aad24624..b826093780 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -107,10 +107,10 @@ struct P159_data_struct : public PluginTaskData_base { bool & isChanged); void addJavascript(); + P159_state_e state = P159_state_e::Initializing; ESPeasySerial *easySerial = nullptr; // Serial port object ld2410 *radar = nullptr; // Sensor object uint32_t milestone = 0; // When can we do the next phase when not in Running state? - P159_state_e state = P159_state_e::Initializing; bool _engineeringMode = false; bool _configurationRead = false; }; From f689caecc8129c7bb71caf2488a4164af86b37f7 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 28 Oct 2023 11:53:51 +0200 Subject: [PATCH 11/19] [Build] Freeze Python to 3.11 to fix pygit2 build issue --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 580eb5e132..bcae9da1ae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: - python-version: '3.x' + python-version: '3.11' - uses: actions/cache@v3 with: path: ~/.cache/pip From 1938bf3312c3753d21307f8b407ef5b5292612c2 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sat, 28 Oct 2023 15:24:51 +0200 Subject: [PATCH 12/19] [P159] Add Gate0 energy values that where missing Add GetConfig support for fetching all available values Add ld2410,logall command for dumping all values in the log (INFO level) Code improvements --- src/_P159_LD2410.ino | 49 ++++++++++++++--- src/src/PluginStructs/P159_data_struct.cpp | 63 ++++++++++++++++++---- src/src/PluginStructs/P159_data_struct.h | 48 +++++++++-------- 3 files changed, 119 insertions(+), 41 deletions(-) diff --git a/src/_P159_LD2410.ino b/src/_P159_LD2410.ino index a8a63804f3..290a0b0096 100644 --- a/src/_P159_LD2410.ino +++ b/src/_P159_LD2410.ino @@ -5,6 +5,12 @@ // ####################################################################################################### /** Changelog: + * 2023-10-28 tonhuisman: !! Breaking change (again): Insert Gate 0 value before Gate 1 value, both for Static and Moving + * energy, as that was missing until now. This is because of poor documentation, talking about 8 values + * where there are in fact 9 values, 0..8 ! + * Add support for getting all values (function PLUGIN_GET_CONFIG_VALUE), also when not configured + * like [#]. Available valuenames: see below. + * Add command ld2410,logall that writes all available values to the log (depending on Engineering mode) * 2023-10-23 tonhuisman: !! Breaking change: Insert OutputPinState (undocumented) value after AmbientLight value * shifting all Sensitivity value offsets by 1 !! * 2023-10-22 tonhuisman: Add command handling: ld2410,factoryreset @@ -25,6 +31,22 @@ /** Commands: * ld2410,factoryreset : Reset sensor to factory defaults, also restarts the sensor like the task is just started. + * ld2410,logall : Send all available values to the log (INFO level) like: "LD2410: : " + */ + +/** ValueNames: (for PLUGIN_GET_CONFIG_VALUE support) + * Presence : Presence (0/1) + * StatPres : Stationary presence (0/1) + * MovPres : Moving presence (0/1) + * Distance : Distance in cm + * StatDist : Stationary distance in cm + * MovDist : Moving distance in cm + * StatEnergy : Stationary object energy level + * MovEnergy : Moving object energy level + * AmbLight : Ambient light level (0..255) (unknown unit) + * OutputPin : State of the output pin (0/1) + * StatEnergyGate0..StatEnergyGate8 : Stationary object energy level for gate 0..8, 75 cm/gate + * MovEnergyGate0..MovEnergyGate8 : Moving object energy for gate 0..8, 75 cm/gate */ #ifdef USES_P159 @@ -77,13 +99,13 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; const uint8_t option = PCONFIG(pconfigIndex); - if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { ExtraTaskSettings.setTaskDeviceValueName(i, concat(Plugin_159_valuename(P159_OUTPUT_STATIC_DISTANCE_GATE_index, false), - (option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) + 1)); + option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0)); } else - if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { ExtraTaskSettings.setTaskDeviceValueName(i, concat(Plugin_159_valuename(P159_OUTPUT_MOVING_DISTANCE_GATE_index, false), - (option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) + 1)); + option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0)); } else { ExtraTaskSettings.setTaskDeviceValueName(i, Plugin_159_valuename(option, false)); } @@ -152,13 +174,13 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) String options[optionCount]; for (uint8_t option = 0; option < optionCount; ++option) { - if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { options[option] = concat(Plugin_159_valuename(P159_OUTPUT_STATIC_DISTANCE_GATE_index, true), - (option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) + 1); + option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0); } else - if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { options[option] = concat(Plugin_159_valuename(P159_OUTPUT_MOVING_DISTANCE_GATE_index, true), - (option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) + 1); + option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0); } else { options[option] = Plugin_159_valuename(option, true); } @@ -251,6 +273,17 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) break; } + case PLUGIN_GET_CONFIG_VALUE: + { + P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); + + if (nullptr != P159_data) { + success = P159_data->plugin_get_config_value(event, string); + } + + break; + } + case PLUGIN_EXIT: { P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index 0ac070a26f..ab19376e3b 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -16,7 +16,7 @@ const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, F("Ambient light sensor"), F("AmbLight"), F("Output pin state"), F("OutputPin"), F("Stationary Object energy gate "), F("StatEnergyGate"), - F("Moving Object energy gate "), F("MovingEnergyGate"), + F("Moving Object energy gate "), F("MovEnergyGate"), }; const size_t index = (2 * value_nr) + (displayString ? 0 : 1); constexpr size_t nrStrings = NR_ELEMENTS(strings); @@ -156,7 +156,7 @@ bool P159_data_struct::plugin_read(struct EventStruct *event) { for (int8_t i = 0; i < valueCount; ++i) { const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; bool isChanged = false; - UserVar[event->BaseVarIndex + i] = getRadarValue(event, i, PCONFIG(pconfigIndex), UserVar[event->BaseVarIndex + i], isChanged); + UserVar[event->BaseVarIndex + i] = getRadarValue(PCONFIG(pconfigIndex), UserVar[event->BaseVarIndex + i], isChanged); result |= isChanged; } @@ -164,11 +164,9 @@ bool P159_data_struct::plugin_read(struct EventStruct *event) { return result; } // plugin_read() -int P159_data_struct::getRadarValue(struct EventStruct *event, - uint8_t varIndex, - int16_t valueIndex, - int previousValue, - bool & isChanged) { +int P159_data_struct::getRadarValue(int16_t valueIndex, + int previousValue, + bool & isChanged) { int result = previousValue; if (isValid()) { @@ -184,12 +182,12 @@ int P159_data_struct::getRadarValue(struct EventStruct *event, } if (_engineeringMode) { - if ((valueIndex >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1) && (valueIndex <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { - result = radar->engStaticDistanceGateEnergy(valueIndex - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1); + if ((valueIndex >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (valueIndex <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + result = radar->engStaticDistanceGateEnergy(valueIndex - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0); } else - if ((valueIndex >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1) && (valueIndex <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { - result = radar->engMovingDistanceGateEnergy(valueIndex - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1); + if ((valueIndex >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0) && (valueIndex <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + result = radar->engMovingDistanceGateEnergy(valueIndex - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0); } else if (P159_OUTPUT_LIGHT_SENSOR == valueIndex) { @@ -323,6 +321,49 @@ bool P159_data_struct::plugin_write(struct EventStruct *event, // start initiated, now wait, next step: request configuration milestone = millis(); state = P159_state_e::Restarting; + } else if (equals(subcmd, F("logall"))) { + result = plugin_get_config_value(event, string, true); + } + } + return result; +} + +bool P159_data_struct::plugin_get_config_value(struct EventStruct *event, + String & string, + bool logAll) { + bool result = false; + + if (isValid()) { + const String cmd = parseString(string, 1); + const int16_t count = logAll && !_engineeringMode ? P159_NR_OUTPUT_OPTIONS : P159_NR_ENGINEERING_OUTPUT_OPTIONS; + + for (int16_t option = 0; option < count; ++option) { + int16_t idx = option; + int16_t gate = -1; + + if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { + idx = P159_OUTPUT_STATIC_DISTANCE_GATE_index; + gate = option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0; + } else + if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { + idx = P159_OUTPUT_MOVING_DISTANCE_GATE_index; + gate = option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0; + } + + if (logAll || + cmd.equalsIgnoreCase(concat(Plugin_159_valuename(idx, false), (gate > -1) ? String(gate) : F("")))) { + bool dummy; + string = getRadarValue(option, -1, dummy); + result = true; + + if (!logAll) { + break; + } else if (loglevelActiveFor(LOG_LEVEL_INFO)) { + addLog(LOG_LEVEL_INFO, strformat(F("LD2410: %s: %s"), + concat(Plugin_159_valuename(idx, true), (gate > -1) ? String(gate) : F("")).c_str(), + string.c_str())); + } + } } } return result; diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index b826093780..d06ee1d93b 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -35,28 +35,31 @@ // Engineering mode: # define P159_OUTPUT_LIGHT_SENSOR 8 # define P159_OUTPUT_PIN_STATE 9 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 10 + +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0 10 # define P159_OUTPUT_STATIC_DISTANCE_GATE_index 10 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 11 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 11 # define P159_OUTPUT_MOVING_DISTANCE_GATE_index 11 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 12 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 13 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 14 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 15 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 16 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 17 - -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 18 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 19 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 20 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 21 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 22 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 23 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 24 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 25 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 12 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 13 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 14 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 15 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 16 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 17 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 18 + +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0 19 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 20 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 21 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 22 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 23 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 24 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 25 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 26 +# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 27 # define P159_NR_OUTPUT_OPTIONS 8 // Last P159_OUTPUT_* value + 1 (count) -# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 26 // Last P159_OUTPUT_* value + 1 (count) +# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 28 // Last P159_OUTPUT_* value + 1 (count) # define P159_DELAY_RESTART 2500 // milliseconds to 'wait' (ignore) after a device-restart @@ -85,6 +88,9 @@ struct P159_data_struct : public PluginTaskData_base { bool plugin_webform_save(struct EventStruct *event); bool plugin_write(struct EventStruct *event, String & string); + bool plugin_get_config_value(struct EventStruct *event, + String & string, + bool logAll = false); bool isValid() const { return nullptr != easySerial && nullptr != radar; @@ -100,17 +106,15 @@ struct P159_data_struct : public PluginTaskData_base { private: - int getRadarValue(struct EventStruct *event, - uint8_t varIndex, - int16_t valueIndex, + int getRadarValue(int16_t valueIndex, int previousValue, bool & isChanged); void addJavascript(); - P159_state_e state = P159_state_e::Initializing; ESPeasySerial *easySerial = nullptr; // Serial port object ld2410 *radar = nullptr; // Sensor object uint32_t milestone = 0; // When can we do the next phase when not in Running state? + P159_state_e state = P159_state_e::Initializing; bool _engineeringMode = false; bool _configurationRead = false; }; From b753f5ce6a4d560e1767fe4dbbcce09923ff2108 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 29 Oct 2023 21:12:37 +0100 Subject: [PATCH 13/19] [Lib] LD2410: Read all data that can be read in 5 msec, add errorcount and data_valid checks --- lib/ld2410/src/ld2410.cpp | 187 ++++++++++++++++++++++---------------- lib/ld2410/src/ld2410.h | 15 +++ 2 files changed, 122 insertions(+), 80 deletions(-) diff --git a/lib/ld2410/src/ld2410.cpp b/lib/ld2410/src/ld2410.cpp index 5d1ed75383..1ba7786636 100644 --- a/lib/ld2410/src/ld2410.cpp +++ b/lib/ld2410/src/ld2410.cpp @@ -261,115 +261,134 @@ bool ld2410::read_frame_() { return false; } - if(frame_started_ == false) - { - uint8_t byte_read_ = radar_uart_ -> read(); - if(byte_read_ == FRAME_PREFIX_REPORTING) - { - radar_data_frame_[radar_data_frame_position_++] = byte_read_; - frame_started_ = true; - ack_frame_ = false; - } - else if(byte_read_ == FRAME_PREFIX_PROTOCOL) - { - radar_data_frame_[radar_data_frame_position_++] = byte_read_; - frame_started_ = true; - ack_frame_ = true; - } - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nRcvd : 00 ")); - } - #endif - } - else - { - if(radar_data_frame_position_ < configuration_buffer_size_) + const uint32_t _started = millis(); + int _available = radar_uart_->available(); + while (_available && (millis() - _started < SERIAL_RECEIVE_MAX_MS)) { // Read for max. N msec + yield(); + if(frame_started_ == false) { + uint8_t byte_read_ = radar_uart_ -> read(); + --_available; // 1 down + if(byte_read_ == FRAME_PREFIX_REPORTING) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = false; + } + else if(byte_read_ == FRAME_PREFIX_PROTOCOL) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = true; + } #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) if(debug_uart_ != nullptr) { - if(radar_data_frame_position_ < 0x10) - { - debug_uart_->print('0'); - } - debug_uart_->print(radar_data_frame_position_, HEX); - debug_uart_->print(' '); + debug_uart_->print(F("\nRcvd : 00 ")); } #endif - radar_data_frame_[radar_data_frame_position_++] = radar_uart_ -> read(); - if(radar_data_frame_position_ > 7) //Can check for start and end + } + else + { + if(radar_data_frame_position_ < configuration_buffer_size_) { - if(isReportingDataFrame_()) + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) { - if(parse_data_frame_()) - { - #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" parsed data OK")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - return true; - } - else + if(radar_data_frame_position_ < 0x10) { - #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" failed to parse data")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; + debug_uart_->print('0'); } + debug_uart_->print(radar_data_frame_position_, HEX); + debug_uart_->print(' '); } - else if(isProtocolDataFrame_()) + #endif + radar_data_frame_[radar_data_frame_position_++] = radar_uart_ -> read(); + --_available; // 1 more down + if(radar_data_frame_position_ > 7) //Can check for start and end { - if(parse_command_frame_()) + if(isReportingDataFrame_()) { - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) + if(parse_data_frame_()) { - debug_uart_->print(F(" parsed command OK")); + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed data OK")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse data")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - return true; } - else + else if(isProtocolDataFrame_()) { - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) + if(parse_command_frame_()) + { + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed command OK")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else { - debug_uart_->print(F(" failed to parse command")); + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse command")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; } } } - } - else - { - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) + else { - debug_uart_->print(F("\nLD2410 frame overran")); + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + if(debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 frame overran")); + } + #endif + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; + } + if (!_available && (millis() - _started < SERIAL_RECEIVE_GRACE_MS)) { // Data handled and time left? Read some more + _available = radar_uart_->available(); } } return false; } +uint16_t ld2410::getErrorCountAndReset() { + uint16_t result = _errorCount; + _errorCount = 0; + return result; +} + void ld2410::print_frame_() { #ifdef LD2410_DEBUG @@ -410,6 +429,7 @@ bool ld2410::parse_data_frame_() debug_uart_->print(intra_frame_data_length_ + 10); } #endif + _errorCount++; return false; } @@ -419,6 +439,7 @@ bool ld2410::parse_data_frame_() print_frame_(); } #endif + data_ready_ = false; if(radar_data_frame_[6] == FRAME_TYPE_REPORTING && radar_data_frame_[7] == FRAME_TYPE_FLAG) //Engineering mode data { /* (Protocol) Target Data Reporting @@ -506,6 +527,7 @@ bool ld2410::parse_data_frame_() #endif radar_uart_last_packet_ = millis(); + data_ready_ = true; return true; } else if(radar_data_frame_[6] == FRAME_TYPE_TARGET && radar_data_frame_[7] == FRAME_TYPE_FLAG ) //Normal target data @@ -556,6 +578,7 @@ bool ld2410::parse_data_frame_() } #endif radar_uart_last_packet_ = millis(); + data_ready_ = true; return true; } else @@ -566,6 +589,7 @@ bool ld2410::parse_data_frame_() debug_uart_->print(F("\nUnknown frame type")); } #endif + _errorCount++; print_frame_(); } @@ -654,6 +678,8 @@ bool ld2410::parse_command_frame_() debug_uart_->print('s'); } #endif + } else { + _errorCount++; } return debug_command_results_("ACK for current configuration"); case CMD_ENGINEERING_ENABLE: @@ -714,6 +740,7 @@ void ld2410::send_command_postamble_() radar_uart_->write((uint8_t)char(0x03)); radar_uart_->write((uint8_t)char(0x02)); radar_uart_->write((uint8_t)char(0x01)); + radar_uart_->flush(); } /* diff --git a/lib/ld2410/src/ld2410.h b/lib/ld2410/src/ld2410.h index aa5a14951c..b1b4610b24 100644 --- a/lib/ld2410/src/ld2410.h +++ b/lib/ld2410/src/ld2410.h @@ -14,6 +14,12 @@ #include +#if __cplusplus >= 202002L +#include +typedef std::atomic< bool > atomic_bool; +#else +typedef volatile bool atomic_bool; +#endif // #define LD2410_DEBUG // Send any debug to serial? // #define LD2410_DEBUG_DATA //Debug all Data Frames // #define LD2410_DEBUG_COMMANDS //Debug Command Acks @@ -63,6 +69,9 @@ #define TARGET_MOVING_AND_STATIONARY 0x03 +#define SERIAL_RECEIVE_MAX_MS 5 // Read for max. N milliseconds, we'd need (64*(8+2))*(1/256000)=2.5msec to read an entire buffer +#define SERIAL_RECEIVE_GRACE_MS 2 // Read more if still this amount of milliseconds available + class ld2410 { public: @@ -82,6 +91,7 @@ class ld2410 { bool isStationary(){return stationaryTargetDetected();}; bool isMoving(){return movingTargetDetected();}; uint16_t detectionDistance(){return detection_distance_;}; //Target Reporting Data + bool dataReady() {return data_ready_;} /* * Utilities -- depreciation candidates */ @@ -137,6 +147,8 @@ class ld2410 { uint8_t cfgMovingGateSensitivity(uint8_t gate){return ((gate < LD2410_MAX_GATES) ? motion_sensitivity[gate] : 255) ;}; //Read Parameters command response uint8_t cfgStationaryGateSensitivity(uint8_t gate){return ((gate < LD2410_MAX_GATES) ? stationary_sensitivity[gate] : 255);}; //Read Parameters command response + uint16_t getErrorCountAndReset(); + protected: /* * Request Firmware Version command responses */ @@ -187,6 +199,8 @@ class ld2410 { uint32_t radar_uart_last_command_ = 0; //Time of the last command sent to the radar uint32_t radar_uart_command_timeout_ = 250; //Timeout for sending commands + uint16_t _errorCount = 0; // Internal errorcounter, managed via getErrorCountAndReset() + uint8_t latest_ack_ = 0; uint8_t target_type_ = 0; uint8_t radar_data_frame_position_ = 0; //Where in the frame we are currently writing @@ -198,6 +212,7 @@ class ld2410 { bool engineering_mode_ = false; //Wheter engineering mode is active bool latest_command_success_ = false; bool configuration_mode_active = false; //Configuration state (multi-mode) + atomic_bool data_ready_ = false; // Can we read the current data? /* * feature management functions */ From 5a9b6e6b06e5f22310a3459f09ffeae9ccb8c629 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 29 Oct 2023 21:14:15 +0100 Subject: [PATCH 14/19] [P159] Rework processing, now near-instant response Add GetConfig support for sensitivity per gate values --- src/_P159_LD2410.ino | 13 +++- src/src/PluginStructs/P159_data_struct.cpp | 75 +++++++++++++++++++--- src/src/PluginStructs/P159_data_struct.h | 43 ++++++------- 3 files changed, 95 insertions(+), 36 deletions(-) diff --git a/src/_P159_LD2410.ino b/src/_P159_LD2410.ino index 290a0b0096..38113b527d 100644 --- a/src/_P159_LD2410.ino +++ b/src/_P159_LD2410.ino @@ -5,6 +5,10 @@ // ####################################################################################################### /** Changelog: + * 2023-10-29 tonhuisman: Rework processing, allow Interval = 0, as now the events will be generated when a value changes, + * but at most once per 100 msec, to not overload the ESP. Fixed the LD2410 library to work correctly + * with the event-driven scheduler model of ESPEasy, instead of the continuous loop() run of Arduino + * Add getconfig values for configured sensitivity level per gate, see below * 2023-10-28 tonhuisman: !! Breaking change (again): Insert Gate 0 value before Gate 1 value, both for Static and Moving * energy, as that was missing until now. This is because of poor documentation, talking about 8 values * where there are in fact 9 values, 0..8 ! @@ -47,6 +51,8 @@ * OutputPin : State of the output pin (0/1) * StatEnergyGate0..StatEnergyGate8 : Stationary object energy level for gate 0..8, 75 cm/gate * MovEnergyGate0..MovEnergyGate8 : Moving object energy for gate 0..8, 75 cm/gate + * StatSensGate0..StatSensGate8 : Stationary sensitivity setting gate 0..8 + * MovSensGate0..MovSensGate8 : Moving sensitivity setting gate 0..8 */ #ifdef USES_P159 @@ -77,6 +83,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) Device[deviceCount].SendDataOption = true; Device[deviceCount].GlobalSyncOption = true; Device[deviceCount].TimerOption = true; + Device[deviceCount].TimerOptional = true; Device[deviceCount].PluginStats = true; Device[deviceCount].ExitTaskBeforeSave = false; // Enable calling PLUGIN_WEBFORM_SAVE on the instantiated object @@ -246,7 +253,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); success = nullptr != P159_data; - addLog(LOG_LEVEL_INFO, concat(F("P159: INIT, success: "), success ? 1 : 0)); + addLog(LOG_LEVEL_INFO, concat(F("P159 : INIT, success: "), success ? 1 : 0)); break; } @@ -302,7 +309,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); if ((nullptr != P159_data) && !P159_data->isRunning()) { - success = P159_data->processSensor(); // Not Running can have 50 msec delays included, so NOT in PLUGIN_FIFTY_PER_SECOND ! + success = P159_data->processSensor(event); // Not Running can have 50 msec delays included, so NOT in PLUGIN_FIFTY_PER_SECOND ! } break; @@ -312,7 +319,7 @@ boolean Plugin_159(uint8_t function, struct EventStruct *event, String& string) P159_data_struct *P159_data = static_cast(getPluginTaskData(event->TaskIndex)); if ((nullptr != P159_data) && P159_data->isRunning()) { - success = P159_data->processSensor(); // When running no delays are inserted, so can go in PLUGIN_FIFTY_PER_SECOND + success = P159_data->processSensor(event); // When running no delays are inserted, so can go in PLUGIN_FIFTY_PER_SECOND } break; diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index ab19376e3b..6300b3ea13 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -17,6 +17,8 @@ const __FlashStringHelper* Plugin_159_valuename(uint8_t value_nr, F("Output pin state"), F("OutputPin"), F("Stationary Object energy gate "), F("StatEnergyGate"), F("Moving Object energy gate "), F("MovEnergyGate"), + F("Stationary sensitivity gate "), F("StatSensGate"), + F("Moving sensitivity gate "), F("MovSensGate"), }; const size_t index = (2 * value_nr) + (displayString ? 0 : 1); constexpr size_t nrStrings = NR_ELEMENTS(strings); @@ -69,7 +71,7 @@ void P159_data_struct::disconnectSerial() { } } // disconnectSerial() -bool P159_data_struct::processSensor() { +bool P159_data_struct::processSensor(struct EventStruct *event) { bool new_data = false; if (isValid()) { @@ -78,7 +80,7 @@ bool P159_data_struct::processSensor() { switch (state) { case P159_state_e::Initializing: - addLog(LOG_LEVEL_INFO, F("LD2410: Initializing")); + addLog(LOG_LEVEL_INFO, F("LD2410: Initializing...")); break; case P159_state_e::Restarting: @@ -129,11 +131,34 @@ bool P159_data_struct::processSensor() { if (_engineeringMode) { addLog(LOG_LEVEL_INFO, concat(F("LD2410: Engineering mode: "), radar->requestStartEngineeringMode() ? 1 : 0)); } - addLog(LOG_LEVEL_INFO, F("LD2410: Running mode.")); + addLog(LOG_LEVEL_INFO, F("LD2410: Enter Running state.")); } break; case P159_state_e::Running: new_data = radar->ld2410_loop(); + + if (new_data && radar->dataReady()) { + const int8_t valueCount = P159_NR_OUTPUT_VALUES; + bool result = false; + + for (int8_t i = 0; i < valueCount; ++i) { + const uint8_t pconfigIndex = i + P159_QUERY1_CONFIG_POS; + bool isChanged = false; + UserVar[event->BaseVarIndex + i] = getRadarValue(PCONFIG(pconfigIndex), UserVar[event->BaseVarIndex + i], isChanged); + + result |= isChanged; + } + + if (result && (timePassedSince(lastSent) >= P159_DELAY_SENDOUT)) { + lastSent = millis(); // Sending data incorporated in timing, just like PLUGIN_READ + sendData(event); + const uint16_t err = radar->getErrorCountAndReset(); + + if ((err != 0) && loglevelActiveFor(LOG_LEVEL_ERROR)) { + addLog(LOG_LEVEL_ERROR, concat(F("LD2410: Frame Errorcounter: "), err)); + } + } + } break; } @@ -160,6 +185,12 @@ bool P159_data_struct::plugin_read(struct EventStruct *event) { result |= isChanged; } + + if (result && (timePassedSince(lastSent) < P159_DELAY_SENDOUT)) { // Avoid duplicate sendouts + result = false; + } else if (result) { + lastSent = millis(); + } } return result; } // plugin_read() @@ -181,6 +212,14 @@ int P159_data_struct::getRadarValue(int16_t valueIndex, case P159_OUTPUT_MOVING_ENERGY: result = radar->movingTargetEnergy(); break; } + if ((valueIndex >= P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE0) && (valueIndex <= P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE8)) { + result = radar->cfgStationaryGateSensitivity(valueIndex - P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE0); + } + else + if ((valueIndex >= P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE0) && (valueIndex <= P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE8)) { + result = radar->cfgMovingGateSensitivity(valueIndex - P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE0); + } + if (_engineeringMode) { if ((valueIndex >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (valueIndex <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { result = radar->engStaticDistanceGateEnergy(valueIndex - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0); @@ -335,23 +374,39 @@ bool P159_data_struct::plugin_get_config_value(struct EventStruct *event, if (isValid()) { const String cmd = parseString(string, 1); - const int16_t count = logAll && !_engineeringMode ? P159_NR_OUTPUT_OPTIONS : P159_NR_ENGINEERING_OUTPUT_OPTIONS; + const int16_t count = P159_NR_MAX_OUTPUT_OPTIONS; for (int16_t option = 0; option < count; ++option) { int16_t idx = option; int16_t gate = -1; + if ((option >= P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE0) && (option <= P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE8)) { + idx = P159_OUTPUT_STATIC_SENSOR_GATE_index; + gate = option - P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE0; + } else + if ((option >= P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE0) && (option <= P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE8)) { + idx = P159_OUTPUT_MOVING_SENSOR_GATE_index; + gate = option - P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE0; + } else if ((option >= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8)) { - idx = P159_OUTPUT_STATIC_DISTANCE_GATE_index; - gate = option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0; + if (_engineeringMode) { + idx = P159_OUTPUT_STATIC_DISTANCE_GATE_index; + gate = option - P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0; + } else { + idx = -1; + } } else if ((option >= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0) && (option <= P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8)) { - idx = P159_OUTPUT_MOVING_DISTANCE_GATE_index; - gate = option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0; + if (_engineeringMode) { + idx = P159_OUTPUT_MOVING_DISTANCE_GATE_index; + gate = option - P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0; + } else { + idx = -1; + } } - if (logAll || - cmd.equalsIgnoreCase(concat(Plugin_159_valuename(idx, false), (gate > -1) ? String(gate) : F("")))) { + if ((idx > -1) && (logAll || + cmd.equalsIgnoreCase(concat(Plugin_159_valuename(idx, false), (gate > -1) ? String(gate) : F(""))))) { bool dummy; string = getRadarValue(option, -1, dummy); result = true; diff --git a/src/src/PluginStructs/P159_data_struct.h b/src/src/PluginStructs/P159_data_struct.h index d06ee1d93b..10ca327557 100644 --- a/src/src/PluginStructs/P159_data_struct.h +++ b/src/src/PluginStructs/P159_data_struct.h @@ -36,32 +36,28 @@ # define P159_OUTPUT_LIGHT_SENSOR 8 # define P159_OUTPUT_PIN_STATE 9 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0 10 # define P159_OUTPUT_STATIC_DISTANCE_GATE_index 10 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE1 11 -# define P159_OUTPUT_MOVING_DISTANCE_GATE_index 11 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE2 12 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE3 13 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE4 14 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE5 15 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE6 16 -# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE7 17 +# define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE0 10 # define P159_OUTPUT_STATIC_DISTANCE_ENERGY_GATE8 18 +# define P159_OUTPUT_MOVING_DISTANCE_GATE_index 11 # define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE0 19 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE1 20 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE2 21 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE3 22 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE4 23 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE5 24 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE6 25 -# define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE7 26 # define P159_OUTPUT_MOVING_DISTANCE_ENERGY_GATE8 27 -# define P159_NR_OUTPUT_OPTIONS 8 // Last P159_OUTPUT_* value + 1 (count) -# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 28 // Last P159_OUTPUT_* value + 1 (count) +# define P159_OUTPUT_STATIC_SENSOR_GATE_index 12 +# define P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE0 28 +# define P159_OUTPUT_STATIC_SENSOR_ENERGY_GATE8 36 + +# define P159_OUTPUT_MOVING_SENSOR_GATE_index 13 +# define P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE0 37 +# define P159_OUTPUT_MOVING_SENSOR_ENERGY_GATE8 45 + +# define P159_NR_OUTPUT_OPTIONS 8 // Last P159_OUTPUT_*_DISTANCE value + 1 (count) +# define P159_NR_ENGINEERING_OUTPUT_OPTIONS 28 // Last P159_OUTPUT_*_DISTANCE value + 1 (count) ENGINEERING +# define P159_NR_MAX_OUTPUT_OPTIONS 46 // Last P159_OUTPUT_*_SENSOR value + 1 (count) # define P159_DELAY_RESTART 2500 // milliseconds to 'wait' (ignore) after a device-restart +# define P159_DELAY_SENDOUT 100 // Minimal milliseconds between sending data/events enum class P159_state_e : uint8_t { Initializing = 0u, @@ -81,8 +77,8 @@ struct P159_data_struct : public PluginTaskData_base { int8_t txPin, bool engineeringMode); virtual ~P159_data_struct() = default; - void disconnectSerial(); // Disconnect the serial port connected to the sensor - bool processSensor(); // Process sensor, must be called regularly + void disconnectSerial(); // Disconnect the serial port connected to the sensor + bool processSensor(struct EventStruct *event); // Process sensor, must be called regularly bool plugin_read(struct EventStruct *event); bool plugin_webform_load(struct EventStruct *event); bool plugin_webform_save(struct EventStruct *event); @@ -106,14 +102,15 @@ struct P159_data_struct : public PluginTaskData_base { private: - int getRadarValue(int16_t valueIndex, - int previousValue, - bool & isChanged); + int getRadarValue(int16_t valueIndex, + int previousValue, + bool & isChanged); void addJavascript(); ESPeasySerial *easySerial = nullptr; // Serial port object ld2410 *radar = nullptr; // Sensor object uint32_t milestone = 0; // When can we do the next phase when not in Running state? + uint32_t lastSent = 0; // Last time we sent out data P159_state_e state = P159_state_e::Initializing; bool _engineeringMode = false; bool _configurationRead = false; From 53ffcbd08b46db172fcabcdee654526bc59cfdfd Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Sun, 29 Oct 2023 22:05:13 +0100 Subject: [PATCH 15/19] [Lib] LD2410: Reformat source (nearly all is changed!) Replace yield() by delay(0) --- lib/ld2410/src/ld2410.cpp | 1822 +++++++++++++++++++------------------ lib/ld2410/src/ld2410.h | 445 +++++---- 2 files changed, 1210 insertions(+), 1057 deletions(-) diff --git a/lib/ld2410/src/ld2410.cpp b/lib/ld2410/src/ld2410.cpp index 1ba7786636..ffd987da38 100644 --- a/lib/ld2410/src/ld2410.cpp +++ b/lib/ld2410/src/ld2410.cpp @@ -1,9 +1,11 @@ /* * An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. * - * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. + * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different + *ranges to both static and moving targets can be configured. * - * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome https://github.com/rain931215/ESPHome-LD2410. + * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome + *https://github.com/rain931215/ESPHome-LD2410. * * https://github.com/ncmreynolds/ld2410 * @@ -15,192 +17,202 @@ #include "ld2410.h" -ld2410::ld2410() //Constructor function -{ -} +ld2410::ld2410() // Constructor function +{} -ld2410::~ld2410() //Destructor function -{ -} +ld2410::~ld2410() // Destructor function +{} uint16_t ld2410::serial_to_int_(uint8_t index) { - return (int16_t) radar_data_frame_[index] + (radar_data_frame_[index + 1] << 8); + return (int16_t)radar_data_frame_[index] + (radar_data_frame_[index + 1] << 8); } -bool ld2410::debug_command_results_(const char * title) { - if(latest_command_success_) - { - radar_uart_last_packet_ = millis(); - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG_PRINT) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print("\n"); - debug_uart_->print(title); - debug_uart_->print(" OK\n"); - } - #endif - return true; - } - else - { - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - debug_uart_->print("\n"); - debug_uart_->print(title); - debug_uart_->print(" Failed\n"); - } - #endif - return false; - } +bool ld2410::debug_command_results_(const char *title) { + if (latest_command_success_) + { + radar_uart_last_packet_ = millis(); + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG_PRINT) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print("\n"); + debug_uart_->print(title); + debug_uart_->print(" OK\n"); + } + #endif // if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG_PRINT) && defined(LD2410_DEBUG) + return true; + } + else + { + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + debug_uart_->print("\n"); + debug_uart_->print(title); + debug_uart_->print(" Failed\n"); + } + #endif // ifdef LD2410_DEBUG + return false; + } } bool ld2410::wait_for_command_ack_(uint8_t command) { - while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) - { - if(read_frame_()) - { - if(latest_ack_ == command) - { - bool rcode = latest_command_success_; - delay(50); - leave_configuration_mode_(); - return rcode; - } - } - } - return false; + while (millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if (read_frame_()) + { + if (latest_ack_ == command) + { + bool rcode = latest_command_success_; + delay(50); + leave_configuration_mode_(); + return rcode; + } + } + } + return false; } -bool ld2410::begin(Stream &radarStream, bool waitForRadar) { - radar_uart_ = &radarStream; //Set the stream used for the LD2410 - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - debug_uart_->println(F("ld2410 started")); - } - #endif - if(waitForRadar) - { - if(requestRestart()) { - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) { - debug_uart_->print(F("\nLD2410 Reset: Ok")); - } - } else { - if(debug_uart_ != nullptr) { - debug_uart_->print(F("\nLD2410 Reset: No response")); - } - #endif - } - delay(1500); // allow time for sensor to restart - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nLD2410 Requesting Configuration: ")); - } - #endif - if(requestCurrentConfiguration()) - { - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nMax gate distance: ")); - debug_uart_->print(max_gate); - debug_uart_->print(F("\nMax motion detecting gate distance: ")); - debug_uart_->print(max_moving_gate); - debug_uart_->print(F("\nMax stationary detecting gate distance: ")); - debug_uart_->print(max_stationary_gate); - debug_uart_->print(F("\nSensitivity per gate")); - for(uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) - { - debug_uart_->print(F("\nGate ")); - debug_uart_->print(i); - debug_uart_->print(F(" (")); - debug_uart_->print(i * 0.75); - debug_uart_->print('-'); - debug_uart_->print((i+1) * 0.75); - debug_uart_->print(F(" metres) Motion: ")); - debug_uart_->print(motion_sensitivity[i]); - debug_uart_->print(F(" Stationary: ")); - debug_uart_->print(stationary_sensitivity[i]); - - } - debug_uart_->print(F("\nSensor idle timeout: ")); - debug_uart_->print(sensor_idle_time); - debug_uart_->println('s'); - } - #endif - return true; - } - #ifdef LD2410_DEBUG - else - { - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("no response")); - } - } - #endif - } - else - { - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nLD2410 library configured")); - } - #endif - return true; - } - return false; +bool ld2410::begin(Stream& radarStream, bool waitForRadar) { + radar_uart_ = &radarStream; // Set the stream used for the LD2410 + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + debug_uart_->println(F("ld2410 started")); + } + #endif // ifdef LD2410_DEBUG + + if (waitForRadar) + { + if (requestRestart()) { + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) { + debug_uart_->print(F("\nLD2410 Reset: Ok")); + } + } else { + if (debug_uart_ != nullptr) { + debug_uart_->print(F("\nLD2410 Reset: No response")); + } + #endif // ifdef LD2410_DEBUG + } + delay(1500); // allow time for sensor to restart + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 Requesting Configuration: ")); + } + #endif // ifdef LD2410_DEBUG + + if (requestCurrentConfiguration()) + { + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nMax gate distance: ")); + debug_uart_->print(max_gate); + debug_uart_->print(F("\nMax motion detecting gate distance: ")); + debug_uart_->print(max_moving_gate); + debug_uart_->print(F("\nMax stationary detecting gate distance: ")); + debug_uart_->print(max_stationary_gate); + debug_uart_->print(F("\nSensitivity per gate")); + + for (uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) + { + debug_uart_->print(F("\nGate ")); + debug_uart_->print(i); + debug_uart_->print(F(" (")); + debug_uart_->print(i * 0.75); + debug_uart_->print('-'); + debug_uart_->print((i + 1) * 0.75); + debug_uart_->print(F(" metres) Motion: ")); + debug_uart_->print(motion_sensitivity[i]); + debug_uart_->print(F(" Stationary: ")); + debug_uart_->print(stationary_sensitivity[i]); + } + debug_uart_->print(F("\nSensor idle timeout: ")); + debug_uart_->print(sensor_idle_time); + debug_uart_->println('s'); + } + #endif // ifdef LD2410_DEBUG + return true; + } + #ifdef LD2410_DEBUG + else + { + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("no response")); + } + } + #endif // ifdef LD2410_DEBUG + } + else + { + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 library configured")); + } + #endif // ifdef LD2410_DEBUG + return true; + } + return false; } #ifdef LD2410_DEBUG -void ld2410::debug(Stream &terminalStream) +void ld2410::debug(Stream& terminalStream) { - debug_uart_ = &terminalStream; //Set the stream used for the terminal - #if defined(ESP8266) - if(&terminalStream == &Serial) - { - if(debug_uart_ != nullptr) { - debug_uart_->write(17); //Send an XON to stop the hung terminal after reset on ESP8266 - } - } - #endif + debug_uart_ = &terminalStream; // Set the stream used for the terminal + # if defined(ESP8266) + + if (&terminalStream == &Serial) + { + if (debug_uart_ != nullptr) { + debug_uart_->write(17); // Send an XON to stop the hung terminal after reset on ESP8266 + } + } + # endif // if defined(ESP8266) } -#endif + +#endif // ifdef LD2410_DEBUG bool ld2410::isConnected() { - if(millis() - radar_uart_last_packet_ < radar_uart_timeout) //Use the last reading - { - return true; - } - return read_frame_(); //Try and read a frame if the current reading is too old + if (millis() - radar_uart_last_packet_ < radar_uart_timeout) // Use the last reading + { + return true; + } + return read_frame_(); // Try and read a frame if the current reading is too old } bool ld2410::stationaryTargetDetected() { - return((target_type_ & TARGET_STATIONARY)); + return (target_type_ & TARGET_STATIONARY); } bool ld2410::movingTargetDetected() { - return((target_type_ & TARGET_MOVING)); + return (target_type_ & TARGET_MOVING); } String ld2410::cmdFirmwareVersion() { - String sVersion; - sVersion = 'v'; - sVersion += firmware_major_version; - sVersion += '.'; - sVersion += firmware_minor_version; - sVersion += '.'; - sVersion += String(firmware_bugfix_version, HEX); - - return sVersion; + String sVersion; + + sVersion = 'v'; + sVersion += firmware_major_version; + sVersion += '.'; + sVersion += firmware_minor_version; + sVersion += '.'; + sVersion += String(firmware_bugfix_version, HEX); + + return sVersion; } /* Command / Response / Protocol Frame @@ -220,15 +232,15 @@ String ld2410::cmdFirmwareVersion() { * 04 03 02 01 -- Footer */ bool ld2410::isProtocolDataFrame_() { - return ( radar_data_frame_[0] == FRAME_PREFIX_PROTOCOL && - radar_data_frame_[1] == 0xFC && - radar_data_frame_[2] == 0xFB && - radar_data_frame_[3] == 0xFA && - radar_data_frame_[radar_data_frame_position_ - 4] == 0x04 && - radar_data_frame_[radar_data_frame_position_ - 3] == 0x03 && - radar_data_frame_[radar_data_frame_position_ - 2] == 0x02 && - radar_data_frame_[radar_data_frame_position_ - 1] == 0x01 - ); + return radar_data_frame_[0] == FRAME_PREFIX_PROTOCOL && + radar_data_frame_[1] == 0xFC && + radar_data_frame_[2] == 0xFB && + radar_data_frame_[3] == 0xFA && + radar_data_frame_[radar_data_frame_position_ - 4] == 0x04 && + radar_data_frame_[radar_data_frame_position_ - 3] == 0x03 && + radar_data_frame_[radar_data_frame_position_ - 2] == 0x02 && + radar_data_frame_[radar_data_frame_position_ - 1] == 0x01 + ; } /* Data Frame @@ -242,707 +254,754 @@ bool ld2410::isProtocolDataFrame_() { * 0x55 -- Marker * 0x00 -- Check flag * F8 F7 F6 F5 - Footer -*/ + */ bool ld2410::isReportingDataFrame_() { - return ( radar_data_frame_[0] == FRAME_PREFIX_REPORTING && - radar_data_frame_[1] == 0xF3 && - radar_data_frame_[2] == 0xF2 && - radar_data_frame_[3] == 0xF1 && - radar_data_frame_[radar_data_frame_position_ - 4] == 0xF8 && - radar_data_frame_[radar_data_frame_position_ - 3] == 0xF7 && - radar_data_frame_[radar_data_frame_position_ - 2] == 0xF6 && - radar_data_frame_[radar_data_frame_position_ - 1] == 0xF5 - ); + return radar_data_frame_[0] == FRAME_PREFIX_REPORTING && + radar_data_frame_[1] == 0xF3 && + radar_data_frame_[2] == 0xF2 && + radar_data_frame_[3] == 0xF1 && + radar_data_frame_[radar_data_frame_position_ - 4] == 0xF8 && + radar_data_frame_[radar_data_frame_position_ - 3] == 0xF7 && + radar_data_frame_[radar_data_frame_position_ - 2] == 0xF6 && + radar_data_frame_[radar_data_frame_position_ - 1] == 0xF5 + ; } bool ld2410::read_frame_() { - if(!(radar_uart_ -> available())) - { - return false; - } - const uint32_t _started = millis(); - int _available = radar_uart_->available(); - while (_available && (millis() - _started < SERIAL_RECEIVE_MAX_MS)) { // Read for max. N msec - yield(); - if(frame_started_ == false) - { - uint8_t byte_read_ = radar_uart_ -> read(); - --_available; // 1 down - if(byte_read_ == FRAME_PREFIX_REPORTING) - { - radar_data_frame_[radar_data_frame_position_++] = byte_read_; - frame_started_ = true; - ack_frame_ = false; - } - else if(byte_read_ == FRAME_PREFIX_PROTOCOL) - { - radar_data_frame_[radar_data_frame_position_++] = byte_read_; - frame_started_ = true; - ack_frame_ = true; - } - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nRcvd : 00 ")); - } - #endif - } - else - { - if(radar_data_frame_position_ < configuration_buffer_size_) - { - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - if(radar_data_frame_position_ < 0x10) - { - debug_uart_->print('0'); - } - debug_uart_->print(radar_data_frame_position_, HEX); - debug_uart_->print(' '); - } - #endif - radar_data_frame_[radar_data_frame_position_++] = radar_uart_ -> read(); - --_available; // 1 more down - if(radar_data_frame_position_ > 7) //Can check for start and end - { - if(isReportingDataFrame_()) - { - if(parse_data_frame_()) - { - #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" parsed data OK")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - return true; - } - else - { - #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" failed to parse data")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - _errorCount++; - } - } - else if(isProtocolDataFrame_()) - { - if(parse_command_frame_()) - { - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" parsed command OK")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - return true; - } - else - { - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F(" failed to parse command")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - _errorCount++; - } - } - } - } - else - { - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nLD2410 frame overran")); - } - #endif - frame_started_ = false; - radar_data_frame_position_ = 0; - _errorCount++; - } - } - if (!_available && (millis() - _started < SERIAL_RECEIVE_GRACE_MS)) { // Data handled and time left? Read some more - _available = radar_uart_->available(); - } - } - return false; + if (!radar_uart_->available()) + { + return false; + } + const uint32_t _started = millis(); + int _available = radar_uart_->available(); + + while (_available && (millis() - _started < SERIAL_RECEIVE_MAX_MS)) { // Read for max. N msec + delay(0); + + if (frame_started_ == false) + { + uint8_t byte_read_ = radar_uart_->read(); + --_available; // 1 down + + if (byte_read_ == FRAME_PREFIX_REPORTING) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = false; + } + else if (byte_read_ == FRAME_PREFIX_PROTOCOL) + { + radar_data_frame_[radar_data_frame_position_++] = byte_read_; + frame_started_ = true; + ack_frame_ = true; + } + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nRcvd : 00 ")); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + } + else + { + if (radar_data_frame_position_ < configuration_buffer_size_) + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + if (radar_data_frame_position_ < 0x10) + { + debug_uart_->print('0'); + } + debug_uart_->print(radar_data_frame_position_, HEX); + debug_uart_->print(' '); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + radar_data_frame_[radar_data_frame_position_++] = radar_uart_->read(); + --_available; // 1 more down + + if (radar_data_frame_position_ > 7) // Can check for start and end + { + if (isReportingDataFrame_()) + { + if (parse_data_frame_()) + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed data OK")); + } + #endif // if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse data")); + } + #endif // if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; + } + } + else if (isProtocolDataFrame_()) + { + if (parse_command_frame_()) + { + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F(" parsed command OK")); + } + #endif // if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + frame_started_ = false; + radar_data_frame_position_ = 0; + return true; + } + else + { + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F(" failed to parse command")); + } + #endif // if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; + } + } + } + } + else + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && \ + defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nLD2410 frame overran")); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + frame_started_ = false; + radar_data_frame_position_ = 0; + _errorCount++; + } + } + + if (!_available && (millis() - _started < SERIAL_RECEIVE_GRACE_MS)) { // Data handled and time left? Read some more + _available = radar_uart_->available(); + } + } + return false; } uint16_t ld2410::getErrorCountAndReset() { - uint16_t result = _errorCount; - _errorCount = 0; - return result; + uint16_t result = _errorCount; + + _errorCount = 0; + return result; } void ld2410::print_frame_() { - #ifdef LD2410_DEBUG - if(debug_uart_ != nullptr) - { - if(ack_frame_ == true) - { - debug_uart_->print(F("\nCmnd : ")); - } - else - { - debug_uart_->print(F("\nData : ")); - } - for(uint8_t i = 0; i < radar_data_frame_position_ ; ++i) - { - if(radar_data_frame_[i] < 0x10) - { - debug_uart_->print('0'); - } - debug_uart_->print(radar_data_frame_[i],HEX); - debug_uart_->print(' '); - } - } - #endif + #ifdef LD2410_DEBUG + + if (debug_uart_ != nullptr) + { + if (ack_frame_ == true) + { + debug_uart_->print(F("\nCmnd : ")); + } + else + { + debug_uart_->print(F("\nData : ")); + } + + for (uint8_t i = 0; i < radar_data_frame_position_; ++i) + { + if (radar_data_frame_[i] < 0x10) + { + debug_uart_->print('0'); + } + debug_uart_->print(radar_data_frame_[i], HEX); + debug_uart_->print(' '); + } + } + #endif // ifdef LD2410_DEBUG } bool ld2410::parse_data_frame_() { - uint16_t intra_frame_data_length_ = serial_to_int_(4); // radar_data_frame_[4] + (radar_data_frame_[5] << 8); - if(radar_data_frame_position_ != intra_frame_data_length_ + 10) - { - #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nFrame length unexpected: ")); - debug_uart_->print(radar_data_frame_position_); - debug_uart_->print(F(" not ")); - debug_uart_->print(intra_frame_data_length_ + 10); - } - #endif - _errorCount++; - return false; - } - - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr ) - { - print_frame_(); - } - #endif - data_ready_ = false; - if(radar_data_frame_[6] == FRAME_TYPE_REPORTING && radar_data_frame_[7] == FRAME_TYPE_FLAG) //Engineering mode data - { - /* (Protocol) Target Data Reporting - * 02 AA d6,7 data type (target data) - * 02 d8 target type (stationary target) - * 51 00 d9,10 stationary target distance - * 00 d11 stationary target energy - * 00 00 d12,13 moving target distance - * 3B d14 moving target energy - * 00 00 d15,16 distance detection - - Engineering - * 08 d17 Max moving distance gate - * 08 d18 Max static distance gate - * 3C 22 05 03 03 04 03 06 05 d19,27 Movement distance gate energy - * 00 00 39 10 13 06 06 08 04 d28,36 Static distance gate energy - * 03 05 d37,d38 ?? v1283 d37 = lightsensor data, d38 = out pin sensor - * 55 00 d39,40 Frame flag - */ - engineering_mode_ = true; - target_type_ = radar_data_frame_[8]; - moving_target_distance_ = serial_to_int_(9); - moving_target_energy_ = radar_data_frame_[11]; - stationary_target_distance_ = serial_to_int_(12); - stationary_target_energy_ = radar_data_frame_[14]; - detection_distance_ = serial_to_int_(15); - - max_moving_distance_gate = radar_data_frame_[17]; - max_static_distance_gate = radar_data_frame_[18]; - light_sensor_data_ = radar_data_frame_[37]; - output_pin_data_ = radar_data_frame_[38]; - - uint8_t pos = 19; - - // motion_energy - for(uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { - movement_distance_gate_energy[gate] = radar_data_frame_[pos++]; - } - // stationary_engergy - for(uint8_t gate = 0; gate < sizeof(static_distance_gate_engergy); ++gate) { - static_distance_gate_engergy[gate] = radar_data_frame_[pos++]; - } - engineering_retain_data_ = serial_to_int_(pos); //radar_data_frame_[pos++] + (radar_data_frame_[pos] << 8); // maybe - - #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nEngineering data - ")); - if(target_type_ == TARGET_NONE) - { - debug_uart_->print(F(" no target")); - } - else if(target_type_ == TARGET_MOVING) - { - debug_uart_->print(F(" moving target:")); - } - else if(target_type_ == TARGET_STATIONARY) - { - debug_uart_->print(F(" stationary target:")); - } - else if(target_type_ == TARGET_MOVING_AND_STATIONARY) - { - debug_uart_->print(F(" moving & stationary targets:")); - } - debug_uart_->print(F(" moving at ")); - debug_uart_->print(moving_target_distance_); - debug_uart_->print(F("cm power ")); - debug_uart_->print(moving_target_energy_); - - debug_uart_->print(F(" max moving distance gate:")); - debug_uart_->print(max_moving_distance_gate); - debug_uart_->print(F(" max static distance gate:")); - debug_uart_->print(max_static_distance_gate); - debug_uart_->print(F(" moving/static distance gate energy: ")); - for(uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { - debug_uart_->print(gate); - debug_uart_->print(": ["); - debug_uart_->print(movement_distance_gate_energy[gate]); - debug_uart_->print(","); - debug_uart_->print(static_distance_gate_engergy[gate]); - debug_uart_->print("] "); - } - debug_uart_->print("\n"); - } - #endif - - radar_uart_last_packet_ = millis(); - data_ready_ = true; - return true; - } - else if(radar_data_frame_[6] == FRAME_TYPE_TARGET && radar_data_frame_[7] == FRAME_TYPE_FLAG ) //Normal target data - { - //moving_target_distance_ = radar_data_frame_[9] + (radar_data_frame_[10] << 8); - //stationary_target_distance_ = radar_data_frame_[12] + (radar_data_frame_[13] << 8); - engineering_mode_ = false; - target_type_ = radar_data_frame_[8]; - moving_target_distance_ = serial_to_int_(9); - moving_target_energy_ = radar_data_frame_[11]; - stationary_target_distance_ = serial_to_int_(12); - stationary_target_energy_ = radar_data_frame_[14]; - detection_distance_ = serial_to_int_(15); - #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nNormal data - ")); - if(target_type_ == TARGET_NONE) - { - debug_uart_->print(F(" no target")); - } - else if(target_type_ == TARGET_MOVING) - { - debug_uart_->print(F(" moving target:")); - } - else if(target_type_ == TARGET_STATIONARY) - { - debug_uart_->print(F(" stationary target:")); - } - else if(target_type_ == TARGET_MOVING_AND_STATIONARY) - { - debug_uart_->print(F(" moving & stationary targets:")); - } - if(radar_data_frame_[8] & TARGET_MOVING) - { - debug_uart_->print(F(" moving at ")); - debug_uart_->print(moving_target_distance_); - debug_uart_->print(F("cm power ")); - debug_uart_->print(moving_target_energy_); - } - if(radar_data_frame_[8] & TARGET_STATIONARY) - { - debug_uart_->print(F(" stationary at ")); - debug_uart_->print(stationary_target_distance_); - debug_uart_->print(F("cm power ")); - debug_uart_->print(stationary_target_energy_); - } - } - #endif - radar_uart_last_packet_ = millis(); - data_ready_ = true; - return true; - } - else - { - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nUnknown frame type")); - } - #endif - _errorCount++; - print_frame_(); - } - - return false; + uint16_t intra_frame_data_length_ = serial_to_int_(4); // radar_data_frame_[4] + (radar_data_frame_[5] << 8); + + if (radar_data_frame_position_ != intra_frame_data_length_ + 10) + { + #if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nFrame length unexpected: ")); + debug_uart_->print(radar_data_frame_position_); + debug_uart_->print(F(" not ")); + debug_uart_->print(intra_frame_data_length_ + 10); + } + #endif // if defined(LD2410_DEBUG_DATA) && defined(LD2410_DEBUG) + _errorCount++; + return false; + } + + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + print_frame_(); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS)) && defined(LD2410_DEBUG) + data_ready_ = false; + + if ((radar_data_frame_[6] == FRAME_TYPE_REPORTING) && (radar_data_frame_[7] == FRAME_TYPE_FLAG)) // Engineering mode data + { + /* (Protocol) Target Data Reporting + * 02 AA d6,7 data type (target data) + * 02 d8 target type (stationary target) + * 51 00 d9,10 stationary target distance + * 00 d11 stationary target energy + * 00 00 d12,13 moving target distance + * 3B d14 moving target energy + * 00 00 d15,16 distance detection + + Engineering + * 08 d17 Max moving distance gate + * 08 d18 Max static distance gate + * 3C 22 05 03 03 04 03 06 05 d19,27 Movement distance gate energy + * 00 00 39 10 13 06 06 08 04 d28,36 Static distance gate energy + * 03 05 d37,d38 ?? v1283 d37 = lightsensor data, d38 = out pin sensor + * 55 00 d39,40 Frame flag + */ + engineering_mode_ = true; + target_type_ = radar_data_frame_[8]; + moving_target_distance_ = serial_to_int_(9); + moving_target_energy_ = radar_data_frame_[11]; + stationary_target_distance_ = serial_to_int_(12); + stationary_target_energy_ = radar_data_frame_[14]; + detection_distance_ = serial_to_int_(15); + + max_moving_distance_gate = radar_data_frame_[17]; + max_static_distance_gate = radar_data_frame_[18]; + light_sensor_data_ = radar_data_frame_[37]; + output_pin_data_ = radar_data_frame_[38]; + + uint8_t pos = 19; + + // motion_energy + for (uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { + movement_distance_gate_energy[gate] = radar_data_frame_[pos++]; + } + + // stationary_engergy + for (uint8_t gate = 0; gate < sizeof(static_distance_gate_engergy); ++gate) { + static_distance_gate_engergy[gate] = radar_data_frame_[pos++]; + } + engineering_retain_data_ = serial_to_int_(pos); // radar_data_frame_[pos++] + (radar_data_frame_[pos] << 8); // maybe + + #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nEngineering data - ")); + + if (target_type_ == TARGET_NONE) + { + debug_uart_->print(F(" no target")); + } + else if (target_type_ == TARGET_MOVING) + { + debug_uart_->print(F(" moving target:")); + } + else if (target_type_ == TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary target:")); + } + else if (target_type_ == TARGET_MOVING_AND_STATIONARY) + { + debug_uart_->print(F(" moving & stationary targets:")); + } + debug_uart_->print(F(" moving at ")); + debug_uart_->print(moving_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(moving_target_energy_); + + debug_uart_->print(F(" max moving distance gate:")); + debug_uart_->print(max_moving_distance_gate); + debug_uart_->print(F(" max static distance gate:")); + debug_uart_->print(max_static_distance_gate); + debug_uart_->print(F(" moving/static distance gate energy: ")); + + for (uint8_t gate = 0; gate < sizeof(movement_distance_gate_energy); ++gate) { + debug_uart_->print(gate); + debug_uart_->print(": ["); + debug_uart_->print(movement_distance_gate_energy[gate]); + debug_uart_->print(","); + debug_uart_->print(static_distance_gate_engergy[gate]); + debug_uart_->print("] "); + } + debug_uart_->print("\n"); + } + #endif // if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + + radar_uart_last_packet_ = millis(); + data_ready_ = true; + return true; + } + else if ((radar_data_frame_[6] == FRAME_TYPE_TARGET) && (radar_data_frame_[7] == FRAME_TYPE_FLAG)) // Normal target data + { + // moving_target_distance_ = radar_data_frame_[9] + (radar_data_frame_[10] << 8); + // stationary_target_distance_ = radar_data_frame_[12] + (radar_data_frame_[13] << 8); + engineering_mode_ = false; + target_type_ = radar_data_frame_[8]; + moving_target_distance_ = serial_to_int_(9); + moving_target_energy_ = radar_data_frame_[11]; + stationary_target_distance_ = serial_to_int_(12); + stationary_target_energy_ = radar_data_frame_[14]; + detection_distance_ = serial_to_int_(15); + #if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nNormal data - ")); + + if (target_type_ == TARGET_NONE) + { + debug_uart_->print(F(" no target")); + } + else if (target_type_ == TARGET_MOVING) + { + debug_uart_->print(F(" moving target:")); + } + else if (target_type_ == TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary target:")); + } + else if (target_type_ == TARGET_MOVING_AND_STATIONARY) + { + debug_uart_->print(F(" moving & stationary targets:")); + } + + if (radar_data_frame_[8] & TARGET_MOVING) + { + debug_uart_->print(F(" moving at ")); + debug_uart_->print(moving_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(moving_target_energy_); + } + + if (radar_data_frame_[8] & TARGET_STATIONARY) + { + debug_uart_->print(F(" stationary at ")); + debug_uart_->print(stationary_target_distance_); + debug_uart_->print(F("cm power ")); + debug_uart_->print(stationary_target_energy_); + } + } + #endif // if defined(LD2410_DEBUG_PARSE) && defined(LD2410_DEBUG) + radar_uart_last_packet_ = millis(); + data_ready_ = true; + return true; + } + else + { + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nUnknown frame type")); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && + // defined(LD2410_DEBUG) + _errorCount++; + print_frame_(); + } + + return false; } bool ld2410::parse_command_frame_() { - uint16_t intra_frame_data_length_ = serial_to_int_(4); //radar_data_frame_[4] + (radar_data_frame_[5] << 8); - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - print_frame_(); - debug_uart_->print(F("\nACK frame payload: ")); - debug_uart_->print(intra_frame_data_length_); - debug_uart_->print(F(" bytes")); - } - #endif - latest_ack_ = radar_data_frame_[6]; - latest_command_success_ = (radar_data_frame_[8] == 0x00 && radar_data_frame_[9] == 0x00); - - switch(latest_ack_) - { - case CMD_CONFIGURATION_ENABLE: - if(latest_command_success_) - { - configuration_protocol_version_ = serial_to_int_(10); //radar_data_frame_[10] + (radar_data_frame_[11] << 8); - configuration_buffer_size_ = serial_to_int_(12); //radar_data_frame_[12] + (radar_data_frame_[13] << 8); - } - return debug_command_results_("ACK for entering configuration mode"); - case CMD_CONFIGURATION_END: - return debug_command_results_("ACK for leaving configuration mode"); - case CMD_MAX_DISTANCE_AND_UNMANNED_DURATION: - return debug_command_results_("ACK for setting max values"); - case CMD_READ_PARAMETER: - if(latest_command_success_) - { - max_gate = radar_data_frame_[11]; - max_moving_gate = radar_data_frame_[12]; - max_stationary_gate = radar_data_frame_[13]; - motion_sensitivity[0] = radar_data_frame_[14]; - motion_sensitivity[1] = radar_data_frame_[15]; - motion_sensitivity[2] = radar_data_frame_[16]; - motion_sensitivity[3] = radar_data_frame_[17]; - motion_sensitivity[4] = radar_data_frame_[18]; - motion_sensitivity[5] = radar_data_frame_[19]; - motion_sensitivity[6] = radar_data_frame_[20]; - motion_sensitivity[7] = radar_data_frame_[21]; - motion_sensitivity[8] = radar_data_frame_[22]; - stationary_sensitivity[0] = radar_data_frame_[23]; - stationary_sensitivity[1] = radar_data_frame_[24]; - stationary_sensitivity[2] = radar_data_frame_[25]; - stationary_sensitivity[3] = radar_data_frame_[26]; - stationary_sensitivity[4] = radar_data_frame_[27]; - stationary_sensitivity[5] = radar_data_frame_[28]; - stationary_sensitivity[6] = radar_data_frame_[29]; - stationary_sensitivity[7] = radar_data_frame_[30]; - stationary_sensitivity[8] = radar_data_frame_[31]; - sensor_idle_time = serial_to_int_(32); //radar_data_frame_[32]; - #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nMax gate distance: ")); - debug_uart_->print(max_gate); - debug_uart_->print(F("\nMax motion detecting gate distance: ")); - debug_uart_->print(max_moving_gate); - debug_uart_->print(F("\nMax stationary detecting gate distance: ")); - debug_uart_->print(max_stationary_gate); - debug_uart_->print(F("\nSensitivity per gate")); - for(uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) - { - debug_uart_->print(F("\nGate ")); - debug_uart_->print(i); - debug_uart_->print(F(" (")); - debug_uart_->print(i * 0.75); - debug_uart_->print('-'); - debug_uart_->print((i+1) * 0.75); - debug_uart_->print(F(" metres) Motion: ")); - debug_uart_->print(motion_sensitivity[i]); - debug_uart_->print(F(" Stationary: ")); - debug_uart_->print(stationary_sensitivity[i]); - - } - debug_uart_->print(F("\nSensor idle timeout: ")); - debug_uart_->print(sensor_idle_time); - debug_uart_->print('s'); - } - #endif - } else { - _errorCount++; - } - return debug_command_results_("ACK for current configuration"); - case CMD_ENGINEERING_ENABLE: - return debug_command_results_("ACK for enable engineering mode"); - case CMD_ENGINEERING_END: - return debug_command_results_("ACK for end engineering mode"); - case CMD_RANGE_GATE_SENSITIVITY: - return debug_command_results_("ACK for setting sensitivity values"); - case CMD_READ_FIRMWARE_VERSION: - if(latest_command_success_) - { - firmware_major_version = radar_data_frame_[13]; - firmware_minor_version = radar_data_frame_[12]; - firmware_bugfix_version = radar_data_frame_[14]; - firmware_bugfix_version += radar_data_frame_[15]<<8; - firmware_bugfix_version += radar_data_frame_[16]<<16; - firmware_bugfix_version += radar_data_frame_[17]<<24; - } - return debug_command_results_("ACK for firmware version"); - case CMD_SET_SERIAL_PORT_BAUD: - return debug_command_results_("ACK for setting serial baud rate"); - case CMD_FACTORY_RESET: - return debug_command_results_("ACK for factory reset"); - case CMD_RESTART: - return debug_command_results_("ACK for restart"); - default: - #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) - if(debug_uart_ != nullptr) - { - debug_uart_->print(F("\nUnknown command response")); - print_frame_(); - } - #endif - return false; - } - return false; + uint16_t intra_frame_data_length_ = serial_to_int_(4); // radar_data_frame_[4] + (radar_data_frame_[5] << 8); + + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + print_frame_(); + debug_uart_->print(F("\nACK frame payload: ")); + debug_uart_->print(intra_frame_data_length_); + debug_uart_->print(F(" bytes")); + } + #endif // if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + latest_ack_ = radar_data_frame_[6]; + latest_command_success_ = (radar_data_frame_[8] == 0x00 && radar_data_frame_[9] == 0x00); + + switch (latest_ack_) + { + case CMD_CONFIGURATION_ENABLE: + + if (latest_command_success_) + { + configuration_protocol_version_ = serial_to_int_(10); // radar_data_frame_[10] + (radar_data_frame_[11] << 8); + configuration_buffer_size_ = serial_to_int_(12); // radar_data_frame_[12] + (radar_data_frame_[13] << 8); + } + return debug_command_results_("ACK for entering configuration mode"); + case CMD_CONFIGURATION_END: + return debug_command_results_("ACK for leaving configuration mode"); + case CMD_MAX_DISTANCE_AND_UNMANNED_DURATION: + return debug_command_results_("ACK for setting max values"); + case CMD_READ_PARAMETER: + + if (latest_command_success_) + { + max_gate = radar_data_frame_[11]; + max_moving_gate = radar_data_frame_[12]; + max_stationary_gate = radar_data_frame_[13]; + motion_sensitivity[0] = radar_data_frame_[14]; + motion_sensitivity[1] = radar_data_frame_[15]; + motion_sensitivity[2] = radar_data_frame_[16]; + motion_sensitivity[3] = radar_data_frame_[17]; + motion_sensitivity[4] = radar_data_frame_[18]; + motion_sensitivity[5] = radar_data_frame_[19]; + motion_sensitivity[6] = radar_data_frame_[20]; + motion_sensitivity[7] = radar_data_frame_[21]; + motion_sensitivity[8] = radar_data_frame_[22]; + stationary_sensitivity[0] = radar_data_frame_[23]; + stationary_sensitivity[1] = radar_data_frame_[24]; + stationary_sensitivity[2] = radar_data_frame_[25]; + stationary_sensitivity[3] = radar_data_frame_[26]; + stationary_sensitivity[4] = radar_data_frame_[27]; + stationary_sensitivity[5] = radar_data_frame_[28]; + stationary_sensitivity[6] = radar_data_frame_[29]; + stationary_sensitivity[7] = radar_data_frame_[30]; + stationary_sensitivity[8] = radar_data_frame_[31]; + sensor_idle_time = serial_to_int_(32); // radar_data_frame_[32]; + #if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nMax gate distance: ")); + debug_uart_->print(max_gate); + debug_uart_->print(F("\nMax motion detecting gate distance: ")); + debug_uart_->print(max_moving_gate); + debug_uart_->print(F("\nMax stationary detecting gate distance: ")); + debug_uart_->print(max_stationary_gate); + debug_uart_->print(F("\nSensitivity per gate")); + + for (uint8_t i = 0; i < sizeof(stationary_sensitivity); ++i) + { + debug_uart_->print(F("\nGate ")); + debug_uart_->print(i); + debug_uart_->print(F(" (")); + debug_uart_->print(i * 0.75); + debug_uart_->print('-'); + debug_uart_->print((i + 1) * 0.75); + debug_uart_->print(F(" metres) Motion: ")); + debug_uart_->print(motion_sensitivity[i]); + debug_uart_->print(F(" Stationary: ")); + debug_uart_->print(stationary_sensitivity[i]); + } + debug_uart_->print(F("\nSensor idle timeout: ")); + debug_uart_->print(sensor_idle_time); + debug_uart_->print('s'); + } + #endif // if defined(LD2410_DEBUG_COMMANDS) && defined(LD2410_DEBUG) + } else { + _errorCount++; + } + return debug_command_results_("ACK for current configuration"); + case CMD_ENGINEERING_ENABLE: + return debug_command_results_("ACK for enable engineering mode"); + case CMD_ENGINEERING_END: + return debug_command_results_("ACK for end engineering mode"); + case CMD_RANGE_GATE_SENSITIVITY: + return debug_command_results_("ACK for setting sensitivity values"); + case CMD_READ_FIRMWARE_VERSION: + + if (latest_command_success_) + { + firmware_major_version = radar_data_frame_[13]; + firmware_minor_version = radar_data_frame_[12]; + firmware_bugfix_version = radar_data_frame_[14]; + firmware_bugfix_version += radar_data_frame_[15] << 8; + firmware_bugfix_version += radar_data_frame_[16] << 16; + firmware_bugfix_version += radar_data_frame_[17] << 24; + } + return debug_command_results_("ACK for firmware version"); + case CMD_SET_SERIAL_PORT_BAUD: + return debug_command_results_("ACK for setting serial baud rate"); + case CMD_FACTORY_RESET: + return debug_command_results_("ACK for factory reset"); + case CMD_RESTART: + return debug_command_results_("ACK for restart"); + default: + #if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && defined(LD2410_DEBUG) + + if (debug_uart_ != nullptr) + { + debug_uart_->print(F("\nUnknown command response")); + print_frame_(); + } + #endif // if (defined(LD2410_DEBUG_DATA) || defined(LD2410_DEBUG_COMMANDS) || defined(LD2410_DEBUG_PARSE)) && + // defined(LD2410_DEBUG) + return false; + } + return false; } /* - * Specification request command be executed + * Specification request command be executed * inside configuraiton mode wrapper. If command fails * exit-configuration mode is not required. */ - void ld2410::send_command_preamble_() { - //Command preamble - radar_uart_->write((uint8_t)char(0xFD)); - radar_uart_->write((uint8_t)char(0xFC)); - radar_uart_->write((uint8_t)char(0xFB)); - radar_uart_->write((uint8_t)char(0xFA)); + // Command preamble + radar_uart_->write((uint8_t)char(0xFD)); + radar_uart_->write((uint8_t)char(0xFC)); + radar_uart_->write((uint8_t)char(0xFB)); + radar_uart_->write((uint8_t)char(0xFA)); } void ld2410::send_command_postamble_() { - //Command end - radar_uart_->write((uint8_t)char(0x04)); - radar_uart_->write((uint8_t)char(0x03)); - radar_uart_->write((uint8_t)char(0x02)); - radar_uart_->write((uint8_t)char(0x01)); - radar_uart_->flush(); + // Command end + radar_uart_->write((uint8_t)char(0x04)); + radar_uart_->write((uint8_t)char(0x03)); + radar_uart_->write((uint8_t)char(0x02)); + radar_uart_->write((uint8_t)char(0x01)); + radar_uart_->flush(); } /* * Wrapper to enable configuration mode for - * multiple command execution -*/ + * multiple command execution + */ bool ld2410::requestConfigurationModeBegin() { - if(configuration_mode_active) { // guard - return true; - } - configuration_mode_active = enter_configuration_mode_(); - return configuration_mode_active; + if (configuration_mode_active) { // guard + return true; + } + configuration_mode_active = enter_configuration_mode_(); + return configuration_mode_active; } /* * Wrapper to disable configuration mode for - * multiple command execution -*/ + * multiple command execution + */ bool ld2410::requestConfigurationModeEnd() { - if(!configuration_mode_active) { // guard - return true; - } - configuration_mode_active = false; - configuration_mode_active = !leave_configuration_mode_(); - return configuration_mode_active; + if (!configuration_mode_active) { // guard + return true; + } + configuration_mode_active = false; + configuration_mode_active = !leave_configuration_mode_(); + return configuration_mode_active; } /* * Configuration mode is required to be issued before * any command execution. Multiple commands can be issued * once configuraiton mode is enabled. When complete close with - * leave_configuration_mode(); - * - * Configuration mode is cancelled on any error by any + * leave_configuration_mode(); + * + * Configuration mode is cancelled on any error by any * given command, and leave is NOT required. -*/ + */ bool ld2410::enter_configuration_mode_() { - if(configuration_mode_active) { - return true; - } - send_command_preamble_(); - //Request - radar_uart_->write((uint8_t)char(0x04)); //Command is four bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_ENABLE)); //Request enter command mode - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x01)); - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) - { - if(read_frame_()) - { - if(latest_ack_ == CMD_CONFIGURATION_ENABLE) - { - return latest_command_success_; - } - } - } - return false; + if (configuration_mode_active) { + return true; + } + send_command_preamble_(); + + // Request + radar_uart_->write((uint8_t)char(0x04)); // Command is four bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_ENABLE)); // Request enter command mode + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x01)); + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + + while (millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if (read_frame_()) + { + if (latest_ack_ == CMD_CONFIGURATION_ENABLE) + { + return latest_command_success_; + } + } + } + return false; } bool ld2410::leave_configuration_mode_() { - if(configuration_mode_active) { - return true; - } - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_END)); //Request leave command mode - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - while(millis() - radar_uart_last_command_ < radar_uart_command_timeout_) - { - if(read_frame_()) - { - if(latest_ack_ == CMD_CONFIGURATION_END) - { - return latest_command_success_; - } - } - } - return false; + if (configuration_mode_active) { + return true; + } + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_CONFIGURATION_END)); // Request leave command mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + + while (millis() - radar_uart_last_command_ < radar_uart_command_timeout_) + { + if (read_frame_()) + { + if (latest_ack_ == CMD_CONFIGURATION_END) + { + return latest_command_success_; + } + } + } + return false; } bool ld2410::requestStartEngineeringMode() { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_ENGINEERING_ENABLE)); //Request enter engineering mode - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_ENGINEERING_ENABLE); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_ENGINEERING_ENABLE)); // Request enter engineering mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_ENGINEERING_ENABLE); + } + return false; } bool ld2410::requestEndEngineeringMode() { - if(enter_configuration_mode_()) - { - delay(50); - enter_configuration_mode_(); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_ENGINEERING_END)); //Request leave engineering mode - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_ENGINEERING_END); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + enter_configuration_mode_(); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_ENGINEERING_END)); // Request leave engineering mode + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_ENGINEERING_END); + } + return false; } bool ld2410::requestCurrentConfiguration() { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_READ_PARAMETER)); //Request current configuration - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_READ_PARAMETER); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_READ_PARAMETER)); // Request current configuration + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_READ_PARAMETER); + } + return false; } bool ld2410::requestFirmwareVersion() { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_READ_FIRMWARE_VERSION)); //Request firmware version - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_READ_FIRMWARE_VERSION); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_READ_FIRMWARE_VERSION)); // Request firmware version + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_READ_FIRMWARE_VERSION); + } + return false; } bool ld2410::requestRestart() { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_RESTART)); //Request restart - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_RESTART); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_RESTART)); // Request restart + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_RESTART); + } + return false; } bool ld2410::requestFactoryReset() { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Request firmware - radar_uart_->write((uint8_t)char(0x02)); //Command is two bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_FACTORY_RESET)); //Request factory reset - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_FACTORY_RESET); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Request firmware + radar_uart_->write((uint8_t)char(0x02)); // Command is two bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_FACTORY_RESET)); // Request factory reset + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_FACTORY_RESET); + } + return false; } /* * Serial Speed Choices: default is 7 - * 1 = 9600 + * 1 = 9600 * 2 = 19200 * 3 = 38400 * 4 = 57600 @@ -950,29 +1009,30 @@ bool ld2410::requestFactoryReset() * 6 = 230400 * 7 = 256000 * 8 = 460800 -*/ + */ bool ld2410::setSerialBaudRate(uint8_t cSpeed) { - if((cSpeed < 0) || (cSpeed > LD2410_MAX_GATES)) { - return false; - } - - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - //Serial baud Rate - radar_uart_->write((uint8_t)char(0x04)); //Command is four bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_SET_SERIAL_PORT_BAUD)); - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(cSpeed)); //Set serial baud rate 1-8, 9600-460800 default=7 - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_SET_SERIAL_PORT_BAUD); - } - return false; + if ((cSpeed < 0) || (cSpeed > LD2410_MAX_GATES)) { + return false; + } + + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + + // Serial baud Rate + radar_uart_->write((uint8_t)char(0x04)); // Command is four bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_SET_SERIAL_PORT_BAUD)); + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(cSpeed)); // Set serial baud rate 1-8, 9600-460800 default=7 + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_SET_SERIAL_PORT_BAUD); + } + return false; } /* @@ -980,40 +1040,40 @@ bool ld2410::setSerialBaudRate(uint8_t cSpeed) * * maximum detection range gate: 2-8 * unmanned duration: 0-65535 seconds -*/ + */ bool ld2410::setMaxValues(uint16_t moving, uint16_t stationary, uint16_t inactivityTimer) { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - radar_uart_->write((uint8_t)char(0x14)); //Command is 20 bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION)); //Request set max values - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x00)); //Moving gate command - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(moving & 0x00FF)); //Moving gate value - radar_uart_->write((uint8_t)char((moving & 0xFF00)>>8)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x01)); //Stationary gate command - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(stationary & 0x00FF)); //Stationary gate value - radar_uart_->write((uint8_t)char((stationary & 0xFF00)>>8)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x02)); //Inactivity timer command - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(inactivityTimer & 0x00FF)); //Inactivity timer - radar_uart_->write((uint8_t)char((inactivityTimer & 0xFF00)>>8)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + radar_uart_->write((uint8_t)char(0x14)); // Command is 20 bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION)); // Request set max values + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); // Moving gate command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(moving & 0x00FF)); // Moving gate value + radar_uart_->write((uint8_t)char((moving & 0xFF00) >> 8)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x01)); // Stationary gate command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(stationary & 0x00FF)); // Stationary gate value + radar_uart_->write((uint8_t)char((stationary & 0xFF00) >> 8)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x02)); // Inactivity timer command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(inactivityTimer & 0x00FF)); // Inactivity timer + radar_uart_->write((uint8_t)char((inactivityTimer & 0xFF00) >> 8)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_MAX_DISTANCE_AND_UNMANNED_DURATION); + } + return false; } /* @@ -1022,7 +1082,7 @@ bool ld2410::setMaxValues(uint16_t moving, uint16_t stationary, uint16_t inactiv * Command word:0x0064 * Command value: * individual: - * 2 bytes distance gate word 0x0000 + 4 bytes distance gate value (2-8), + * 2 bytes distance gate word 0x0000 + 4 bytes distance gate value (2-8), * 2 bytes motion sensitivity word 0x0001 + 4 bytes motion sensitivity value. (0-100) * 2 bytes static sensitivity word 0x0002 + 4 bytes static sensitivity value. (0-100) * or @@ -1030,48 +1090,50 @@ bool ld2410::setMaxValues(uint16_t moving, uint16_t stationary, uint16_t inactiv * 2 bytes distance gate: 0x0000 + 4 bytes distance gate value 0xFFFF * 2 bytes motion sensitivity word 0x0001 + 4 bytes motion sensitivity value. (0-100) * 2 bytes static sensitivity word 0x0002 + 4 bytes static sensitivity value. (0-100) - * + * * Return value:2 bytes ACK status(0 success, 1 failure) -*/ + */ bool ld2410::setGateSensitivityThreshold(uint8_t gate, uint8_t moving, uint8_t stationary) { - if(enter_configuration_mode_()) - { - delay(50); - send_command_preamble_(); - radar_uart_->write((uint8_t)char(0x14)); //Command is 20 bytes long - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(CMD_RANGE_GATE_SENSITIVITY)); //Request set sensitivity values - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x00)); //Gate command - radar_uart_->write((uint8_t)char(0x00)); - if(gate == 255 ) { - radar_uart_->write((uint8_t)char(0xFF)); //Gate value - radar_uart_->write((uint8_t)char(0xFF)); - radar_uart_->write((uint8_t)char(0xFF)); - radar_uart_->write((uint8_t)char(0xFF)); - } else { - radar_uart_->write((uint8_t)char(gate)); //Gate value - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - } - radar_uart_->write((uint8_t)char(0x01)); //Motion sensitivity command - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(moving)); //Motion sensitivity value - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x02)); //Stationary sensitivity command - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(stationary)); //Stationary sensitivity value - radar_uart_->write((uint8_t)char(0x00)); - radar_uart_->write((uint8_t)char(0x00)); //Spacer - radar_uart_->write((uint8_t)char(0x00)); - send_command_postamble_(); - radar_uart_last_command_ = millis(); - return wait_for_command_ack_(CMD_RANGE_GATE_SENSITIVITY); - } - return false; + if (enter_configuration_mode_()) + { + delay(50); + send_command_preamble_(); + radar_uart_->write((uint8_t)char(0x14)); // Command is 20 bytes long + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(CMD_RANGE_GATE_SENSITIVITY)); // Request set sensitivity values + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); // Gate command + radar_uart_->write((uint8_t)char(0x00)); + + if (gate == 255) { + radar_uart_->write((uint8_t)char(0xFF)); // Gate value + radar_uart_->write((uint8_t)char(0xFF)); + radar_uart_->write((uint8_t)char(0xFF)); + radar_uart_->write((uint8_t)char(0xFF)); + } else { + radar_uart_->write((uint8_t)char(gate)); // Gate value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + } + radar_uart_->write((uint8_t)char(0x01)); // Motion sensitivity command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(moving)); // Motion sensitivity value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x02)); // Stationary sensitivity command + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(stationary)); // Stationary sensitivity value + radar_uart_->write((uint8_t)char(0x00)); + radar_uart_->write((uint8_t)char(0x00)); // Spacer + radar_uart_->write((uint8_t)char(0x00)); + send_command_postamble_(); + radar_uart_last_command_ = millis(); + return wait_for_command_ack_(CMD_RANGE_GATE_SENSITIVITY); + } + return false; } -#endif + +#endif // ifndef ld2410_cpp diff --git a/lib/ld2410/src/ld2410.h b/lib/ld2410/src/ld2410.h index b1b4610b24..6007d57bd4 100644 --- a/lib/ld2410/src/ld2410.h +++ b/lib/ld2410/src/ld2410.h @@ -1,9 +1,11 @@ /* * An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. * - * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different ranges to both static and moving targets can be configured. + * This sensor is a Frequency Modulated Continuous Wave radar, which makes it good for presence detection and its sensitivity at different + *ranges to both static and moving targets can be configured. * - * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome https://github.com/rain931215/ESPHome-LD2410. + * The code in this library is based off the manufacturer datasheet and reading of this initial piece of work for ESPHome + *https://github.com/rain931215/ESPHome-LD2410. * * https://github.com/ncmreynolds/ld2410 * @@ -15,11 +17,12 @@ #include #if __cplusplus >= 202002L -#include -typedef std::atomic< bool > atomic_bool; -#else +# include +typedef std::atomic atomic_bool; +#else // if __cplusplus >= 202002L typedef volatile bool atomic_bool; -#endif +#endif // if __cplusplus >= 202002L + // #define LD2410_DEBUG // Send any debug to serial? // #define LD2410_DEBUG_DATA //Debug all Data Frames // #define LD2410_DEBUG_COMMANDS //Debug Command Acks @@ -27,16 +30,16 @@ typedef volatile bool atomic_bool; // Exclude DEBUG logging when requested externally #if defined(LIBRARIES_NO_LOG) && LIBRARIES_NO_LOG - #ifdef LD2410_DEBUG - #undef LD2410_DEBUG - #endif -#endif + # ifdef LD2410_DEBUG + # undef LD2410_DEBUG + # endif // ifdef LD2410_DEBUG +#endif // if defined(LIBRARIES_NO_LOG) && LIBRARIES_NO_LOG -/* +/* * Protocol Command Words -*/ -#define LD2410_MAX_FRAME_LENGTH 0x40 // or 64 bytes -#define LD2410_MAX_GATES 9 // 0 - 8 gates + */ +#define LD2410_MAX_FRAME_LENGTH 0x40 // or 64 bytes +#define LD2410_MAX_GATES 9 // 0 - 8 gates #define CMD_CONFIGURATION_ENABLE 0xFF #define CMD_CONFIGURATION_END 0xFE @@ -46,13 +49,13 @@ typedef volatile bool atomic_bool; #define CMD_ENGINEERING_END 0x63 #define CMD_RANGE_GATE_SENSITIVITY 0x64 #define CMD_READ_FIRMWARE_VERSION 0xA0 -#define CMD_SET_SERIAL_PORT_BAUD 0xA1 +#define CMD_SET_SERIAL_PORT_BAUD 0xA1 #define CMD_FACTORY_RESET 0xA2 #define CMD_RESTART 0xA3 -/* +/* * Data Frame Formats -*/ + */ #define FRAME_TYPE_REPORTING 0x01 #define FRAME_TYPE_TARGET 0x02 #define FRAME_PREFIX_PROTOCOL 0xFD @@ -62,172 +65,260 @@ typedef volatile bool atomic_bool; /* * Target State Constants -*/ + */ #define TARGET_NONE 0x00 #define TARGET_MOVING 0x01 #define TARGET_STATIONARY 0x02 -#define TARGET_MOVING_AND_STATIONARY 0x03 +#define TARGET_MOVING_AND_STATIONARY 0x03 #define SERIAL_RECEIVE_MAX_MS 5 // Read for max. N milliseconds, we'd need (64*(8+2))*(1/256000)=2.5msec to read an entire buffer #define SERIAL_RECEIVE_GRACE_MS 2 // Read more if still this amount of milliseconds available -class ld2410 { - - public: - ld2410(); //Constructor function - ~ld2410(); //Destructor function - - /* - * Primary APIs */ - bool begin(Stream &, bool waitForRadar = true); //Start the ld2410 - #ifdef LD2410_DEBUG - void debug(Stream &); //Start debugging on a stream - #endif - - bool ld2410_loop(){return read_frame_();}; //Sensor loop service - bool presenceDetected(){return target_type_ != 0;}; //last report data had a type - bool isConnected(); - bool isStationary(){return stationaryTargetDetected();}; - bool isMoving(){return movingTargetDetected();}; - uint16_t detectionDistance(){return detection_distance_;}; //Target Reporting Data - bool dataReady() {return data_ready_;} - - /* - * Utilities -- depreciation candidates */ - uint8_t reportingDataComposition(){return target_type_;}; //Target data state 0-3 - bool isEngineeringMode(){return engineering_mode_;}; //Reporting Data - bool movingTargetDetected(); - bool stationaryTargetDetected(); - bool read() {return read_frame_();}; - - /* - * primary sensor responses */ - uint16_t stationaryTargetDistance(){return stationary_target_distance_;}; //Target Reporting Data - uint8_t stationaryTargetEnergy(){return stationary_target_energy_;}; //Target Reporting Data - uint16_t movingTargetDistance(){return moving_target_distance_;}; //Target Reporting Data - uint8_t movingTargetEnergy(){return moving_target_energy_;}; //Target Reporting Data - - /* - * available if engineering mode is active */ - uint8_t engMovingDistanceGateEnergy(uint8_t gate){return ((gate Date: Sun, 29 Oct 2023 22:06:07 +0100 Subject: [PATCH 16/19] [P159] Fix wrong use of F(""), should be EMPTY_STRING --- src/src/PluginStructs/P159_data_struct.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/src/PluginStructs/P159_data_struct.cpp b/src/src/PluginStructs/P159_data_struct.cpp index 6300b3ea13..4befe37fdd 100644 --- a/src/src/PluginStructs/P159_data_struct.cpp +++ b/src/src/PluginStructs/P159_data_struct.cpp @@ -406,7 +406,7 @@ bool P159_data_struct::plugin_get_config_value(struct EventStruct *event, } if ((idx > -1) && (logAll || - cmd.equalsIgnoreCase(concat(Plugin_159_valuename(idx, false), (gate > -1) ? String(gate) : F(""))))) { + cmd.equalsIgnoreCase(concat(Plugin_159_valuename(idx, false), (gate > -1) ? String(gate) : EMPTY_STRING)))) { bool dummy; string = getRadarValue(option, -1, dummy); result = true; @@ -415,7 +415,7 @@ bool P159_data_struct::plugin_get_config_value(struct EventStruct *event, break; } else if (loglevelActiveFor(LOG_LEVEL_INFO)) { addLog(LOG_LEVEL_INFO, strformat(F("LD2410: %s: %s"), - concat(Plugin_159_valuename(idx, true), (gate > -1) ? String(gate) : F("")).c_str(), + concat(Plugin_159_valuename(idx, true), (gate > -1) ? String(gate) : EMPTY_STRING).c_str(), string.c_str())); } } From c7344df03f6fddc97874adf028da7e819c1ef9f6 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Tue, 14 Nov 2023 22:15:48 +0100 Subject: [PATCH 17/19] [P159] Add documentation --- docs/source/Plugin/P159.rst | 182 ++++++++++++++++++ .../Plugin/P159_DeviceConfiguration.png | Bin 0 -> 63317 bytes docs/source/Plugin/P159_EngineeringMode.png | Bin 0 -> 7911 bytes .../source/Plugin/P159_NumberOutputValues.png | Bin 0 -> 14158 bytes .../Plugin/P159_SensitivitySettings.png | Bin 0 -> 31136 bytes .../P159_SensitivitySettingsEnabled.png | Bin 0 -> 31772 bytes .../Plugin/P159_ValueOptionsEngineering1.png | Bin 0 -> 97790 bytes .../Plugin/P159_ValueOptionsEngineering2.png | Bin 0 -> 51214 bytes .../Plugin/P159_ValueOptionsStandard.png | Bin 0 -> 29812 bytes docs/source/Plugin/P159_commands.repl | 14 ++ docs/source/Plugin/P159_config_values.repl | 74 +++++++ docs/source/Plugin/P159_ld2410b.png | Bin 0 -> 128440 bytes docs/source/Plugin/P159_ld2410c.png | Bin 0 -> 239960 bytes docs/source/Plugin/_Plugin.rst | 6 + docs/source/Plugin/_plugin_categories.repl | 1 + .../Plugin/_plugin_substitutions_p15x.repl | 13 ++ 16 files changed, 290 insertions(+) create mode 100644 docs/source/Plugin/P159.rst create mode 100644 docs/source/Plugin/P159_DeviceConfiguration.png create mode 100644 docs/source/Plugin/P159_EngineeringMode.png create mode 100644 docs/source/Plugin/P159_NumberOutputValues.png create mode 100644 docs/source/Plugin/P159_SensitivitySettings.png create mode 100644 docs/source/Plugin/P159_SensitivitySettingsEnabled.png create mode 100644 docs/source/Plugin/P159_ValueOptionsEngineering1.png create mode 100644 docs/source/Plugin/P159_ValueOptionsEngineering2.png create mode 100644 docs/source/Plugin/P159_ValueOptionsStandard.png create mode 100644 docs/source/Plugin/P159_commands.repl create mode 100644 docs/source/Plugin/P159_config_values.repl create mode 100644 docs/source/Plugin/P159_ld2410b.png create mode 100644 docs/source/Plugin/P159_ld2410c.png diff --git a/docs/source/Plugin/P159.rst b/docs/source/Plugin/P159.rst new file mode 100644 index 0000000000..70183da070 --- /dev/null +++ b/docs/source/Plugin/P159.rst @@ -0,0 +1,182 @@ +.. include:: ../Plugin/_plugin_substitutions_p15x.repl +.. _P159_page: + +|P159_typename| +================================================== + +|P159_shortinfo| + +Plugin details +-------------- + +Type: |P159_type| + +Name: |P159_name| + +Status: |P159_status| + +GitHub: |P159_github|_ + +Maintainer: |P159_maintainer| + +Used libraries: |P159_usedlibraries| + +Description +----------- + +Detecting (human) presence can be achieved in several ways, like via IR detection sensors, or a light-beam that's interrupted by someone passing. But these sensors have quite some limitations, like limited sensitivity, no information about the distance, or weather a person is there but not moving. + +The limitations of these existing sensors are not applicable when using radar-based presence detection, and since some time, rather affordable radar human-presence detectors are available. These are available with 5 GHz, 10 GHz, 24 GHz and 60 GHz radar frequency transmitter/receiver chips. Because of the accuracy and range, achievable with 24 GHz sensors, these are quite popular, so support has been added to ESPEasy. + +Some examples of these sensors: + +.. image:: P159_ld2410b.png + :width: 250px + :alt: LD2410b with bluetooth support, 35 x 7 mm in size + +LD2410b with bluetooth support, 35 x 7 mm in size + +.. image:: P159_ld2410c.png + :width: 250px + :alt: LD2410c, 22 x 15 mm in size + +LD2410c, 22 x 15 mm in size + +(Images are sourced from AliExpress vendors) + +Configuration +------------- + +.. image:: P159_DeviceConfiguration.png + +* **Name**: Required by ESPEasy, must be unique among the list of available devices/tasks. + +* **Enabled**: The device can be disabled or enabled. When not enabled the device should not use any resources. + +Sensor +^^^^^^ + +See: :ref:`SerialHelper_page` + +For this sensor, only the **Serial port**, and for ESP32 or Software Serial, the GPIO selection options are available. + +.. warning:: The ``SWSerial`` option should better not be used, because of the high speed (256000 baud) that is used for the serial connection! + +Device Settings +^^^^^^^^^^^^^^^ + +* **Engineering mode**: With this option set ``Yes``, when changed the settings will be saved and the page reloaded, several extra Values are made available for selection. When not using the extra values available, **Engineering mode** should best be set to ``No`` to lower the system-load. + +.. image:: P159_EngineeringMode.png + +* *Available options*: **Yes** or **No** (the default). + +* **Generate Events only when changed**: Checking this option prevents sending an event if none of the values has changed on the next **Interval**. + +Output Configuration +^^^^^^^^^^^^^^^^^^^^ + +* **Number Output Values**: Select the number of values that should be available. Default set to ``Quad`` (4). + +.. image:: P159_NumberOutputValues.png + +* Select from **Single** (1) to **Quad** (4). + +After submitting the page, the number of Values will be changed to the selected number. + +* **Value 1** .. **Value 4**: For each Value the desired data can be configured, depending on the setting for **Engineering mode**, the available options are adjusted. + +* Engineering mode = **No**: + +.. image:: P159_ValueOptionsStandard.png + +* Engineering mode = **Yes**: + +.. image:: P159_ValueOptionsEngineering1.png + +.. image:: P159_ValueOptionsEngineering2.png + +Available options: + +* *Presence*: 0 = No presence, 1 = Presence detected +* *Stationairy presence*: 0 = No stationary presence, 1 = Stationary presence detected (Stationairy = non-moving person) +* *Moving presence*: 0 = No moving presence, 1 = Moving presence detected +* *Object distance*: Distance of the detected presence, in cm. +* *Stationary Object distance*: Distance of the detected stationary presence, in cm. +* *Moving Object distance*: Distance of the detected moving presence, in cm. +* *Stationary Object energy*: Energy level of the detected stationary presence, undefined unit, range 0..100. +* *Moving Object energy*: Energy level of the detected moving presence, undefined unit, range 0..100. + +Engineering mode enabled: + +* *Ambient light sensor*: If the unit includes an ambient light sensor, and many do, then this will hold the light level, undefined unit, range 0..255. This is an undocumented setting from the device, only usable on boards that have this sensor installed. +* *Output pin state*: This reflects the **Out** pin, available on most boards. This is an undocumented setting from the device. +* *Stationary Object energy gate 0..8*: 9 selections of the Stationary Object energy level for each 'gate' (the concept of gates is explained below) +* *Moving Object energy gate 0..8*: 9 selections of the Moving Object energy level for each 'gate' + +.. * *Stationary sensitivity gate 0..8*: 9 selections of the configured Stationary sensitivity level for each 'gate' +.. * *Moving sensitivity gate 0..8*: 9 selections of the configured Moving sensitivity level for each 'gate' + +Sensitivity settings +^^^^^^^^^^^^^^^^^^^^ + +Once the task is enabled, and a sensor is connected, extra configuration settings are available, that are disabled by default, and show the current configuration, as read from the sensor. To change any of these settings, the **Modify sensor settings** checkbox must be enabled, and the input fields will be enabled. The settings available are for configuring the idle time, number of active gates and sensitivity per gate. + +A **gate** is an area in view of the sensor. Each gate is aproximately 75 cm distance (sequentially) from the sensor, and the highest active gate-number, default set to the max. value, is 8 (number starts at 0, so there are 9 gates). These active gates can be configured separately for detecting Moving and Stationary objects/persons. The lowest gate-number that can be selected is 2. + +.. image:: P159_SensitivitySettings.png + +By default, the **Modify sensor settings** checkbox is unchecked. + +After checking the checkbox to enabled state, the settings will be available immediately: + +.. image:: P159_SensitivitySettingsEnabled.png + +* **Firmware version**: The version of the firmware installed on the sensor. The version shown in the screenshots is only shown as informational, and not a required value. For the Bluetooth enabled LD2410b sensor, updates for the firmware, when available, can be installed by using the LD2410 Mobile phone app. This firmware update feature is not available from ESPEasy. +* **Modify sensor settings**: Enable the checkbox to change the sensitivity settings, and store these in the sensor when the page is Submitted. +* **Idle seconds**: The number of seconds the *Presence* stays active after presence is removed, can be set here. Default value 5 sec. max. value is 65535 sec. +* **Max. Moving gates**: The number of active gates for detecting Moving presence. Range 2 .. 8. +* **Max. Stationary gates**: The number of active gates for detecting Stationary presence. Range 2 .. 8. +* **Sensitivity, Gate 0 .. 8**: For each type of detection, the sensitivity treshold can be set, range 0 .. 100, where 0 is the most sensitive, and 100 means it won't trigger, as that's the max. value that will be reported. + +For each gate the distance range in meters is also shown. When the highest enabled Gate is less that the default 8, then only up to that gate-number is shown and configurable. + +If the **Modify sensor settings** checkbox is checked when submitting the page, the settings are sent to the sensor, and the sensor will be restarted to activate them. The configured values are persistently stored in the LD2410 sensor. + +Might the configuration not be set correctly, and changing them again doesn't seem to work, then resetting the sensor, by issuing the ``ld2410,factoryreset`` command while the task is enabled and the sensor connected, the factory defaults will be restored. (See the list of supported commands, below.) + +Data Acquisition +^^^^^^^^^^^^^^^^ + +This group of settings, **Single event with all values** and **Send to Controller** settings are standard available configuration items. Send to Controller is only visible when one or more Controllers are configured. + +* **Interval** By default, Interval will be set to 0 sec. as this is optional for this device. The data will be collected and optionally sent to any configured controllers using this interval. For sending the values to the enabled controller(s), the command ``TaskRun,`` can be used. + +Values +^^^^^^ + +The plugin provides user configurable values, where the names will be changed according to the selected sensor value. A formula can be set to recalculate. The number of decimals can be set as desired, and defaults to 0. + +In selected builds, per Value is a **Stats** checkbox available, that when checked, gathers the data and presents recent data in a graph, as described here: :ref:`Task Value Statistics: ` + +Commands available +^^^^^^^^^^^^^^^^^^ + +.. include:: P159_commands.repl + +Get Config Values +^^^^^^^^^^^^^^^^^ + +Get Config Values retrieves values or settings from the sensor or plugin, and can be used in Rules, Display plugins, Formula's etc. The square brackets **are** part of the variable. Replace ```` by the **Name** of the task. + +.. include:: P159_config_values.repl + +Change log +---------- + +.. versionchanged:: 2.0 + ... + + |added| + 2023-11-13 Initial release version. + diff --git a/docs/source/Plugin/P159_DeviceConfiguration.png b/docs/source/Plugin/P159_DeviceConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..de3570d09f493d3ddb912851803c2f102964b1c1 GIT binary patch literal 63317 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%0A9${v8)<8?M3df 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 Sn--AlH#&k239R*xV*CZH`ULL) literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_EngineeringMode.png b/docs/source/Plugin/P159_EngineeringMode.png new file mode 100644 index 0000000000000000000000000000000000000000..9839a23e03448ded394b830a2377bcd72e6139b4 GIT binary patch literal 7911 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 LBMF6<$$Z+ zKpUp^TfYz85Jy*0P%}$Hw4)WES*Uf+3JLAQZCi7__6Nn`;osCzhBS(265j;>l*IWzOF;jN zT2q0(o@%!Z-e{aU?`)%QbbVBOTVcK1bn@HJ>ufOa+T+)5bZdWyh2u&0+X9`=Fan*%aXC(HedAI?r%v}cy#pbLE`ea zDRGzIB3RJ~XTNwNL^2r`t*Fml4Ru;GUel81*OtCxc>kYQAPTFZ05i*Xk-!(izLeyz zKW~h2**fKv6BT{%H91+(%F2pn?C;;duCFojd_p`pF}@ZSY=5q=uNCFqot9Xh936=| zM$bu;SdouC0n;JNVON)0ZRajVACGP(EzviFo23DA@5gor+YHx~)&*a_8({N@lj&xY z=Md^KZ=*M&)2AhYyWQqUk=b~PCPdK`s4RdACAPfXh8SFs=%50&ZOYwCrXFJF3vVXQ z`eV2(c=;Sppui}QZOrNl#}B+odAd{<{;AyYYUX*{`L5~zUw72%s*yjWaY&L?F#@sZ y!5OBkOB4U35&0oQsJjr%9iFr~5;x(DI=vaVGBtvwD6`z2S3gnFQZ7=o2>BoNI1zyW literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_NumberOutputValues.png b/docs/source/Plugin/P159_NumberOutputValues.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1afd0b30a5799df6c36795f220d03482d1a2f4 GIT binary patch literal 14158 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 literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_SensitivitySettings.png b/docs/source/Plugin/P159_SensitivitySettings.png new file mode 100644 index 0000000000000000000000000000000000000000..02bb76ebfd62d89ff7494e5b807a28834678888f GIT binary patch literal 31136 zcmc$`2|SeT+dn*&HCft7*3zOymdegliZ&EVb`i1+6Ill%M2od-B}qcEOocHF#!wO2 zvP@=%8Cgcg3}FmrdoSv~@85m@p67j^_y2jG|I-K8r_1HKuJbt0DyieZud~LJmV6i^;=_* z%at+p?}=I(`R_H}AAG>eon7y8^{V{tYfsFL`B{2LS4WgI{KS6sNM4d4t^rK>dl;yAUR_o3{i&oD)c=>w$1G3q#YcKO}!{)4A z`rze8|9ytP>2c4C=pd|dQ(;hbx_Q_O7OACM>)>{n6*$-W?L~Pw!5Y0_#7lAaCiptY)KcRhd*G_S zZN~B5gJSNg7lC1Q+rrM@>s?Mz^(Peb+T(aRe@fDqT@tt!aqv9&R?-rRZOGNvdkjLwwRZ}UM zk~=tVj-E=Gm=Rk768(Jfc^?E#b8hy!k@LdE@&Ue4Mu&;SYqrW0$GiLuC^Axh^5IS+ zM#8_ASCzS_V6fZM2i5ih%(R{fY@>3!cr8tLgj-22^+PKh;F-?X8k$Fh5L}l1s=DO(cHEL0H!Z=Jsr;Unk)2|6GYP86r5rUClc<~%`!~E~*9>QDx;N(m zhtt$I-KBE1t02qm97ta}5^^ia^fQk0wOWaZ;}EMJ&l%G0oEPoCF7t{J6C_KIF|J4+ z8-4NX&WmLuWG-dIQ_U8YQRVHNb{&P771yqU4k2WG?evN!y<-Ss$>0O8jSJI5T1FCW z(c`hMHFB`hxri%z@sJd}ICk+3lYKtce^Aq(cV6bwFFQW=I))-_Y_62FXqKSFeIILl zP51NBZO=W^Eh|Q!I{VX%aCN|3^o_=CZ-{j4#GTRGN&Vi{5iw}}tLO&Zr}B$vwq(pN zf5KxPMeA)p%)#NtRTFmf*Yf zSl{hm%&xh*)vI~L30Ls@j4au*wf_E8!x{ge20V0 zKEIS<5o5*-I1^z=HHCj+P@A3JwZG_52^hc` zOW+XAPP}$karM0$kBrYx9#+_xGK%r83abA`fe@EwN{PrwpHYHv`I(K&gJpM1Z(Zg*pJ&F#ZMlr&xTVgwM9_Ysu@#86fD zR8qL7lQ){!Qx%!_RcyrQ4Cx5X6gQN#CGJDR4Rl|NVP&r7+jyFU0a)>luCBpO=dBwG z=V7@)au%<1Elr>u_Y7_)C{*Aj<(CJ=6uM)mg=$2x(H0?)wy1P8I_RjB)^-*BS}oh- zZ_AN{%_lK~QJX3|PVqjK4z-T!CXNJH`#u`R4YyH^k%@Jwb}KCV;ZWnGAyP8Z6hdlD zN+W?80h2=VH?KrS$#V~XI))jYVmk zlt5&wO@hot0ZKY-^hz|ku0~mFDeMXA4h)MYl^bLP)tc0Qfe-a3tyGT-2J`YxMRdPS z3v}R`TJc?{t;5cB+K3A~WVdVjgwXU*xp_gmQLbWh%$s}kHAjxGgc&&+#ce1#vb68u zDOi?RvfpGK@yEf( zpOqtH4-2^6TuVf3`Q+BhynwlLmFRkfsZ`xR0EHqPQ(MN4+3z5xyY4}`?sDu-FgR;_ zKhFVu*x_+`q~8zxo6YfyQLMJXv!juu7=l=XG{u8@N3(@25WtGj)d z?^G)s7Q$Ty8yVq}9E{N0Sr@HU&)}<1K?S3dzu%03p*zFsr~J-#=pIsCnA(LBU1x+f z_~v0`AfD%&TV>NOQJRAor#XS$6J_?*jXs!efv4;clAB9x?8K7_s^n#Zg=p%YxIA}* z@e2Eg?9PW>mu4k=`EiNTr&!${TK?tDG$7UhPYQ{F1;^Yb+0B>_zo2F#1C$_s&*&Y8 zQR}K7GMH`IUN40Aa)0(ufynatb?>~e4&|=VuBkMc*mQSJqzqs1Sby@Phg|`)Xl>KB zKxKB_fu~*GJa1CCSRF(Qm+4zDdsNz9b-lk#t+O8X=W-ljm%bU`E4tsw{JTnv2lsuN%w=V$QW) z)$IDT+yjWQW=f-KMv&YbSa8H+-{P`o^DXPC$d8M}z-Q~$l}*2yo1e^tm!&{n$(tE@ z$ID~oK!y))u0>d=J`j;WpcCu)gQjxc`&axe0lC8dsKm!WxvRQvk0UwGjJYko{8Z(&^Lmj#P5^E zoc)4c4aEgXH&T>khNVLVK~catfuOJiInT^ISkemBiDzpH1SN955^BS@?3~99GYeVQ z25ETO2GDHJX5zZ(4(`d~O~inVAwv*IK@Ka|IJ|0zF#v_$YDMb-T;NPJD|@iC^UL61 zo6qo=cRjAk!2{wrE`knofU&{|rC$cUTvr@0PZ>{!a8Ir!aeN3@DvKbjKwMrRnhD;Z zyLJ;%L1uqjsSCDlBOx>zZDpV+@y$c3l1gwVkoW?plgMJA6OjPO)F&mN@HlJtddJN~ z5y{F!Sh=mhJAzvM_Mk8WBWC+_WM+|fX8O%MQ?d2JaK_E>J<#BM1`>HEVr%xnUbDd; z-W&`AYEy3_|1kggKrilK$a!et=*<=fx%nX0@VoZWOG(!9-Dg==ly}1m1YynY6vE}s zdf%>fW!b^BF=OM(3A_-4v{<#aa0hB_z37u(r%9_%Y zz>{TS$M?NuM`L^4bB??YTxTUhr`Zu9+ARY;8H`UR8QIr*0aPU+=o^96%Ib28#| zjk+s{{$1_j^z(`(lIZJ~oJ``rjF68o?No%KeauNkhrT%$7|tA-^cwj}KwJY$=!o5# zUU?^ke;2agno7u^9ZcRk34>tH^V&EABMlL`kv_^Y!19k`Z;3_=J=3f^e!WXP`rQf5 z1&MBnJJ7?Z_NW6Jiu=r^dj{_FdG$`?4E&ZOZ^;hbmR08zgdWd}XbQkFdc&G%gPG}3 zkoyOeU1>WPaMxt`X8i7rO8f3lySFx%!q_44$C|gRu3r`bs7pZgc9Ednm)d4`@_h-i z$&t**5_(MsQ}W)0Vpvb@^!S)zmsu%_!?|A#7mHqzeebr=1bxQs-{^)ztH0A?x2!Dz z)dMId7B8T)`R!H{B6U1D9<~E2j7iup-4Ono^6neLHkt1fm<9XrWa1#T631n9Yn(H zc)SJ}Wqs&=;8PlEevS_em9`MM7eppZl2RCD}Fi*(=CYOc|`Yfhv>IJQ=QN z6@0y1cv=Qd(5MqwSFu-N{Y!lD9;252SZ4W$(1O?jXPJ@7`D?7!faE!R_f_qeLuMz> z>0~Ub)yC&d?byc`+^&ZVoS$hx&&YTdd1a3*lS6))cnh)pg`qZiat}D+#Wf6TXy!|% zs#A2Mfyo~MW4kPovD~Nq3fh*cdt6{Y<;RcDY?>cj-Uv?=+AUb+`ABRRp zYO1QL_N{j#to;1>ZsV*ICNh0!JxF^OFjiQF5>2zR{n9xVJEZuIP{F8P03F^|qtR%u zK5KzfD5*L|2nZp4yiW6NV%qQa4m<;ADB_Dy{^ zw#j^IRgA5#y?UHRa%?V}(j8`WwE66F_%i&(eSGmJUK{-y#hN*9uV*(`z!}M-50A% zDBplW=Y-{q%szXYgc7U*!)A&zOd~)xS^5ef2_gE?Uf;OJ;tQg5@l49ZH2bT*GUD=l z-vZe&`6BD2&My56{X(csEC!Nw;vjq=0kQRYjK6|KG6i61>k_`HptPjY>D0Q85GWH9 zWLl&68F4M0d2du($5*RRC0BDcsz1*qzWO<4Suv!w}bi*Q4W3QM;NMf>e&gnXPi znc<(4ftw>oD$eYp!35|=PsvN`8Z%{y{US*ywdI+fh9Eh#@Z`*`;+9=Uf|`{K+s@S3 zPWu`;wGgVq?l4q`n<*QgCA}gKbFWW*G{uxYoi_`~tq_wTvexC~olIKsaJytQ9AG@~ zLkAu;RX=<G^2c&?Qd;-Zw`OfW zlgb|R47a61BSD794`g|?&@xYYEShQGrFi_qVR zVAzGb^(RIG1kYERLlIo(bhxKGQa6r#1d+pK9N)L-h`UJrAdn#&I%BjM@G+$=F=+W4 z<7f75qBl!@+D7|$G-8{pPtG?gU1y4dp1%isQBRJa*>K(%3V!}nmZ(IEi;LN8wBYS= zA3JoM7oi*tBwD9kpw>s`7)?_yg#yfP{K{KG;uiw=U8Uf`x0R4)hvsTES{xj2S9z*& z-Je3*gZ$6nM=mqWBSTxu^V)}Yq~dm(`P_rEQ65{YkxnRE;-b{|L8YtqqX z0g$VR-gmCDnlll~yZ!4x-RH&VH2wli6w^rxDJ8x9JS?qAv>2a=EvP%9dINh)Sxa#o zv0RUUW#d?o*2XeY=~(1cXbQ*ZEVJLMB584Z1yKOH5fCNYV`}ul^Ai=geA@M_qC(sP zS>Cat%KMvksGMIpf*us@eLDbrOBMfkAQd+^t1H)F@~Fjcju?N;9}H4_CCCiB9(dW4 zGH1FROmy2J#t`T00X!*%Wra(Xy0BauTyRl@KBPg>)^w2z<<4oZT$X)d?};6{x^)=c zwIMHpj^B^6;~u{dsW+K)5LZc!lzNfloli8E@nLw+)=@)np10Vw{B)y!@0St6bdd4s z7(LLd^Wtu$wrp)}J+Zv3Bb3_r{$HadjmsU@H!$Eo`N$S2ub|LD>B@Cu0#Tc9 zH6I=(kvbTRK#4uYZtY1(9(&m`NE}2y4ZOpb?}TbUAX&9mYPgtfQ|@C&(5!~=7C&J& zZvYh~0MFA58sjW3B6luV!S|dSS0xMt2L}VF)hPI1S9ku0u2job07qsK2zCL1fo_Ho zE2kmt$h(loOlI&PAe2wX0xvJ=)DW(Y!{H_Xl-CD?vokZLyzG!FfPG3pJOCu16+eJG~{sn&Ec4XbT4CK?eFBQD_P@tFefIMTnMo4>`0VbAOc6J|SXmx#-aYzXz773W8*b zP^eScmxGd#=!dW|hELM+x1E+h7T08e&Yp(JjLb zvfc)S_?71k1>wElz{`Y~;vntH5psj0wbn+8;YeMB2DPf*^RQe}GH^Q)Eyu%qS0njD zn#Ur04r{aMe57mqeQ)_^Z2iuZ6x=cCrma?l&DVJl*Q+izZ{eUuEFj+FR=%tFZCu=q zseggFns4yk_K}=hjub4lqL)l_Z)Fs*Vv6DC&;jLBS8(RMye5KGZsehvCNo}tc zRG!xNyl^19Ql<=-L>R@#wooF|=`(iIy)aUv_1N}h$DhzwMDn_5SeU68ee+Zx^j=Vz zr6I1EB?vm~aSY|1udmryjzKMnC|Gm62?=yv0owZ!a~lEivv z!gM|%tSbHNHkCQ)tpN6qBfGeZ;Z6i6v(EPU>#)Z zszt}Kr(jXD{e*O_@4C*_H03UWO^Z(Ca)r-hcaALA&6oiy|@h^Sqlp&qWP6*;^KFCnbagc3l$W49h@T5oY3O_H2ZNy9opu= zx|N&Jup4qU;Nz%vt;Cx~b^7Lw>GH(pVs-yvRxxfE8N?JhhM*y6;~3adfGH{W z0;Xp}Jpdy~C~IuaW@gk%=+MzhyQ!dbYE*+fh@7$|1|}oR5kc#|p*c?Gq%wjmH7?=6 zGa7F0ZSSs#L^s-FRJTN>L+b;e;z?D@q0^rZVG1Vk?{uz?-zkE`jKpuJSAh%n< zI?&s#fWd55#WZ^-r|ebHjm`FPbaZ?T8AOHvMq1CtA)MSQ)`3!1G5fcoW_tkRBcnbi z2FiM{dJ-6J|Lgag-lRDp6X`QEZu7v^t03tYv{R_p^;0`C6>mF<)&I;wk|uD_lDC(O@pjtfRp#YLmjAr}HU?l8TXFMqEhK)A$01 z?5#zr$5CMW=YC*2sfkalW!JmRoM^Pvv+TFDa1bqKfsQ*E>fnQ5MxGV_7pQxn_Ihwt zrbB8aj>o_PjfBP9Dz%VTf~6j7y#_QEKt|l`iRFB<_kqJZRTZAOiBHVgAJL<&=DB{{ zefFc3R6EAtVkZBp>k!XE;X&f;l|Om``iSKA!Vi_<#iy5F zjmeyzN<1G~FfB`IR3A{f#_{eqiVA8@vka^oMI_&<3WXHPdQ$s{i00dd*0o!}R6^8v5uI(%(pqme3psU* zCr|sNjM?a?VECz!ce7pA{}oYq(*FtiKG{3OO|G7HgB(nNja|F^7cMTVxNcmQPQxK= z@!WNw3p>T>9f^5eHj7od_db)$lh}ONj+$MqDb*WvH0Xjqe9IK~?32r134lEx(WHL# zecg}y=@k}U`{VaZqwbBYaxc$5keRnKgB3q)ZE<3vJ9m-N8P3DvDN)HX{6c*)s zCi#{cihAAF`)G|B+js{{N`3*Vx?%nj_;j+?mRf2iJO1UhOUZN`L=|#dVgG&=6t35$ zvs1Oh2wf`tQ%cK!sJCn|8aCVE^zvIZ{CkD|Z)AjR?S3kPs?VyHVk@GKYi&^#YL_6E z9c-GD#ixAR-=T&olFeVKP#`u-)WV=ldD&-+a-#Ibbl+_bIws~W&|rl^{CH|0n@oQe zW9=)H0{2r3z>JdrQ`kgoT?qq48J*uq4|J}$Ub5`^dEz`>ka;#LZ5PUJAQtt+Zxgq} zSpG4)W>@lMjt=BQz2kEUqMP!-fV2>ONc{}5_n|BzBsc7F2H|Q9TI0LnYtf(R2Jx1| z2B>&T*ReXLC89otC7(AmrLf{KQl-8+O6)6srY5_L9oiiU?KN`Oem~5og?>4gPE(fN z$ImN#l^Y-K2Th2Fb} z&z2p07SiuyvWtkmAzLdeH#5n`HgfH=&6i5-z{pb<1n3hUOj#;Khw`m#R5qWObRVNS zK$5&eUf9DQJb|)4u7f&+OE{NC4U}vXJHMLHMlys~%o}Z$>BA8S=_A@qMBt1%z6#Eh|Ywa5yTIWo&$wnHo zP#}0&XWol!r^}I18`qtzm!~U$pdqQ`q%E=HW_sQ7#!>f!gy{pq}UE#-ywQYb$a)2xPg+PyghU>2uVdKYPNtY#U7l5a`_M zpDc2@zJL%Ivx>zg1UQ#{AX^+1wFdz3ils%G9m8p^N~!H)_K#Igww0ji=f^JI4{`=d zDN%#pQket-!Ry8#ck@0*vDZU1TF)524g~vO&_T1N0nPXLnaio)11y4i;BL5LfcRxy zbW}d@VCrGlxxq8Mbcdo<^wbE=d!_tF)o{O?6vsL!=O8eS&trEVy?ouU^eoL`!D%q? z4PcdhkEPB(c)9X_c(bQ@+*zr4^TBSyUifm%d*AbeG|s&0gt)&>dcCcG=)e{Xn8$8c zVB>fT59i;gW7y{gKN(jTovZnySKt8X)_Cn1d;@p zvv!$R6*5Mt*J8xCCi==TbQuqq!EG~-!c$Ud72bbN($j04lpFrg8KY|<6{1a9GGP{( zmtnxvblLh|V_E7oIWoNo9l+#s%e7B-2wMyx+$7ovBulq#j=~Qk%B|$r*Sc}kZ(@4m zmxg>kk3YU3@@?)YB0>`FcYei#I`!mv{=ylI`Tke!r1)2({uv*Ws(Ji0 z93kIqI}jdj%$+)CT6z|WqtD}CqwM{ZQSE^dKg7lQLe?yCw@TAzkVlGBC$#KFnMCrM z$or#fB^#od%Gb^8%n1XC^vxXplD(NT)_CQrqfMpZ?)8rp$cl>MjJx5^BFV*(H^1U! zrXTi=Z!d_?Xa_`~&z?{BZE`3%e39_xSRt(iYGQ_I>b*X#4R%?0+6!0VHl zN47sv%sPPCA9&YNiugkV-zQxIM;|_bYLS*J^8v<@bT%DPR+U}0WqqH-88^V4o>$$tw8h-Z zOYPxZ_Zk(yLDfRIoEe zu~1GA?lI*p;nrR3kii6|H7G0ZPqWf4n>9Wf8RFzutr)){UdsV=nzYbYorzY%DKW13 z`vCvxvei%y1nad&lN3D0`h?9mhzC5_2v{T`o}>7sn968@J_;aKbrlWJ+dMRVz~d1o zVN>lZ%{yxMwUUx+#{ymEZUycw67{5B{LAlH=?eFb(K@aU&xT)z&N%J}M}Rk)(Ck!d z^u75{ex}VVGWTzCr#I)B3tQ4>(q(svE+Y8#BMfLexP#p6i~>RCovs|*r#6qP-kD|+ zDKg0VG)=LAfSckMjj$2bqZX0LW6PbymOqW^uFUxKW@v%ET(Br06HeoL|5WQ%5jWz? zi{P%!r11Ic(1946CA3twpKK_6j>}-w1=0=?6c04JgdARe11ud&jZAMyX@q->n*)n6 z!;HRt7(njDWgN?z3M`xl@-`O8*L z;buW4&||ey3Dc^VRBE0*&AZ{@5u&Dd1%R!`pGEebxg7CRXR!Xp^9r%ecu3WlzgL`p zk(=97fxkcH{~lBToOBz|5Aol0XiQ!DIT{ae;NzAKN3^krQXtT^qg3vc;ej^&}znnD{5y1EE zV5RQKYh2kY@e5p3cK5JK3fQET^Eua)5X9LK%??%dhtE+?2ZH0o)qPXCl-}i-MkFjJ zd&qyr&P=!v=u#8LM}pso#c_1!D9Mh%!@PK(8&bfQqrXS1hDlY^-WzKkYJOHcq917z z?Y#Z@5XYNxEwQzwOAo?h2vsX+Q#O7)z%uVn_{Q=pPKIT6T+GjnIk*%z7DC&`2B=NU zoUMZv@Gx;org-Oj!GO>snGwXc&Frr$$qi5P{TJ5e#$9VCUp2PNEO6H4byh=9yo&Ak16g2Bp8{T}~zI@7hyMS$K0%WUg>y zAVsB!*2gLtaPV6pJ*I#Av@#m6e8&5n2WZ~ed(Yi!FSc=8 zP7g3BW9^M))ZyN$%&lL>H8y`5()6v)=U)hw51G5LF|y-cnU9BGB<#jPQA>>#V6cx? z2V3xauoGAAHV;LkcSfH%k%n~;e~&-5wdDi(4ef$~`(CRsi$!=Jwq6IkR|qF=O4s~O zMNS1+$lt3((ve${Kb;Au@$=vI@M9LmEmeJ2+^+1n-J~}Ht@P)^yyE8jxfjc>IYU(F znP{};?nAhDQ{;iGhf(n(Wd(v$pFWTeD(tLv!$y8@xpHn0zUQV`T(8vumco`Fgx9Hz zs(`P?tt~5#F!TLEohJJZES&*rjz0=*CB#e){hP^}tfZwU-;kA?R>=3z&zMIJBImE& zlMycGW8YHZPaNCTDFk_e0?RAD(nfBiYEs)ggMl5En|BywgSe4*p;A4{x4?HYfb z+IAc8UQ|0X;eo!@=_Y@m>m=-&EX%bumSfUX)qpYXeU5E5SG>;KP#Lr%=rGn`K)yw3 z_5DO5+3Ut`0v>vfV?z33@!N0bWn{37Xtex3>Vc#0$nso!8IjKGlNAd+^Uo#K`U7M| z?;l{{n&{s`3(gP1zjUil66Cza%N(jC8myt_;mSIdugKPk-{P={rw4mGV3b^0*%Dc- zYB6sz+vcFjTF6j*sGD~8B*H zD=if;6e5nAj89@#MaLUs?DJxFl16&TT5txD8~-RkTD=Z!Pa5C?1xQWa@V|!o%>Zf4wn5?L_nTDfBt2Dz9KXL_6EH{bmze;FTGsplqF>B5 zIES6#zK8e_!hHWWThj_7pHohaA0P|_fU! zz%<^#-goyAsJK*c*WUUZ+RPU=t4m2|X~^D(HQhvP9XIR8zI8I;vU^q?j|Lu;n)C3g z`vW1Y`OQ7}Y_hgA71ix;lUX(sF7JrBhlbN+OEyn0g?dj3O7nI^M|40a^9ZA*OIOPk z`aU4v>qi0o1`Z9EwJUR?Ny`PHmmEu|fUeA%`m3CpYzKh6Ew4u_!0J~*(K!7^O?O)< z@=hm!z0sa(iLXQ(U34EvC4B5lNPA0|Zb|y^=DOwfByH-5uD#!-qkD}tuMDJqKS0Tq zh+-Hjh_N9u4Vt7*6o(M$I?6107IsC!vWgzo%X@y$@8tWc@r19@q=z*%JA^~~t)4d%)9$uA0SzJgnh=t?QGwx)qMeSq9AY(PljNVA zZ%#{S_;+YDPK|%P>soB6v_GR;M|RuZ2$@|F14dT*CF%Z3OK2%gp|F;4)A+NcCR&76 zcZ{(il|}yg%mb&u;tL+XbJpAY9YPId(y7#bJ7;&jql|e&><|f~dCG8riHGU7Rqt(4{{IGIdi^rZv~{QKt<3r1Gotjm zB7T!Z$)`*aIzZwqk^`k!kY3U87I~scq(brui`j>1Qf#64{C}H=!<(+IbF0+6wg$!1 zXGM~BssLiPx}^24aXNmJCCbqd-X9Y11^f*H==qH$|Sw9A>gS{{-zi9s*7DG zhXz{N{xkzyA<`jKvTXCavl}D(??HC3-xO;M)dh1uW8eKVse1p~$Y#e&!uUyvfSAmq zfrT9&*Dq!A@b~2T;`bmB0+3MR^%n^{H$C=8({8nKW>lBiG2kRof}y=8w=5b7SBah3 zN{n~Z+vkZzh=tN8eGKsQ_|Te!;vJDdcHz02U0nX1T}bQj>YS`?LFrUT^E0-!^)mpA zqgJsv?Sx2D?YFa$TXz#Ug6l5xG_QwaT+m+GG}R#4smTUruuvOydym4Dt^tH++bt%K zuXQaZoPn9E4EVL|KfV+=QtwTH@(o{=6N<+zzg|rOmV$d{)Qr zUAoNr2i#gD4<~KfJ$mn3>dF>lf=V>NS(KJ~-~cNB3e*4BrBpFWi#qp`NyalBF z7HEjBJ0p-yBn`ExY?MDY0MTNRr;6xs{i}{ z)7}D(WUEzIS5Hh$wS})N+<%(qV~5v_fCHm5(EFDpf-LkOR9vOokmIAHuG>MFNY26R z2+akj=eBQn=YgIdAkUdTTP7NzQF&=T12QVBRQ)$prPJweE}xNJO@WX>d&l$ohmu4?&b3%#tnCm6*3u1Et}H2teP=AL2=Xn@-|p?i3}awlI-28|g<*tq zkhhr=vT$! z0;|iN474~~ig#Cz#pQh?4P49%`MPYfD7SDcf+!psX8r>kF)8!NwIW~^hB`)}-7A%1 z`+oTtG`Kt-Q&B2E$oR#6|H_1&gRV%(ZoEq9_9)T~x%^gonN}it*Wb%zha?*JawH&2 zzRkfl1d`k?V5H(heG?&CWxB^cSz+|{W28!Qz^SvoOx7Ctow(hyuSmL|RYJH8fbVTu z34?G8ud-BilD_Ym*Jb`DsMnd}Ua&|{`DjQ)-QQAiXZNkfjxjxieQdpxYO>qKio9Ey zug>kjrtdnQvXeM&bk<>*wOeU!-ZV3HOQ+MWp*jvmH0_`RZ z{3CA+6eJwU=@WKKTIe`4Z#!);vS?`gH~B;jad3<-N$lSowt2!0nu&d9b4dM!-Xls# zdqj-|lMs7J>#QcNzdrZ}`8kxkOS+H{zmGX${KQ;JW% z+$p0MJ3zz^>EQ~ZSz;6tVOOPf9N~=K{(o>_p+G*&fxm_2#xG6I+h?1sZgA4bM@Wyo zTDog*0xirEMX|l)k^Sy1^9b5beA!5l%@I^`Wy|KX!jb(q%Wz%3$McfFzJe)tPX5sg zAp3VGnJ8kvD{c{?uL#vYJF3!L!LGR)UwiFR=|!P3+r|Y^!9KGa3pnxTc;uGOL;bPy z3gSR}Yq^woy!&q+oE#o=%f}+x=~~-872Y%QD#!j873_>$ThrUYBjV9nGIh_2k3tMZ zV#1aLAK6MQ+?_e6vE>BgZCQ!J*=Md+Ts$d}Bg8h0Q8VDBw%N2J40g$=xA?)VxTDbNVbVcu!o4g>VhMkT;Z#u1u%!&O zdQ{zGw&F^BJyNx)SW2PhZ{Gd~;nj_kZ%t~cB%7EP|1IpKyppe%lRo`v^E)NR-UOuG zzv1PpgE#q@%@w_#8&~3D|0x^-G5g;bGDvJ100y96RB+dtp83ys{1)g1onKhkwu+uW zhte^i=P2VJ@aep|TV!QLca;;nnRu_2NB>TVg~C~j9i=#`*XdMGsrhus1wtVbf`Rjn z{DKsJ)(ovI4Xo7#^!$PvQ{O59a8=#k`jVrh@5Or$2@MXeZau5Q(SoZC!uS5K?;HWB z@xN|gf$sT7FVk_OL1ZOl1=uK<4GUTzv8!(I(pP2e#?4D};}2^Z8Z?21FQBV=u&%D| z($O?XdrM2pK~N-T<;pMmUuDHh2fEc)72#A{nUxzi*Ep??vG0$6Rf~s)hOXp4(0ILu zzN`JZY#5L>{iQ>@7p+sP-wpo{6pY2>*&Ao`=F%Y4n!lDhK%teE0MYqh)s-6yUIQK; z6JJUgK|i(;AZ3~prbnKW18MSIZ9W!SD@gT2%q1rrw`Q*#3D|MS*0gCCC|*<|nA-Tg z^rWb+SQuob1-d&EJbVa9zeg*h+OGsxp_RT!x?3YW5ULJr3+dFQOw8@Fr{u3Ha>H=n z;}M~^w$>T*J|6l*;;Qa=Q~RSeyg$ykCj26!K|1y&2|INI6E{t@Cv8j4#SG_iYYI!1swfdq zbfjN(KF!2%n_S6Iw3Czn)R*>-yFGn%> z8ukkQ{vz%P=?JzfgVpkIxKBEow2BfxI21Do@YxXmszhrs@($D_T@kECx?l}9`Kd5= zIbRC5Q(5kQ0aOfHdV*A5nY@y1KITfv-O^?`AnbX^PG*DI5E=R`)lNHg1hkzudd-Zl{clzZ0rr0S$hG%M|o6=<`gbiHHNgVNkB#Bo^R z&Q0b1q=vnx&;@siW@v-u*~bUR*)gsRg>H+1)XIRbrv)YbB=H?p}}k2*X=L|dDlnpy5&9f40g=i z?3|YhXt4xt%)GfP96>hp-_){u?^1vMyX&v#c_-50X3)|#T|?x&^sS;lSJ0X)y{q<5 zS-NhsgX*)-aL8%#XbU-HPT*6uL&?4Q3HSll#tn;aXS0m1!!8mseZK<8TxNRboJ~s+ zBU7@8DNHv)$UUwkUwXFdJW^#+Gwl&Wk<9Lw8L(-8G0cE_Z(G?+$v^5Ze><@SlJjWyKF{iwOzRH9bj6 zk@$BlddGhtS^wEcyc+pkf2o##h5aBn+z-%GqgU&XfRH*dPwD!n6gth}3;~U`f+qpI zpT0>081p}Clz03{4Nn+h4vESdG?#`|`L+*9W6qG=D!Ssh?Uug0`ug-a%Ea<2yVc$j zG`6_9XU3)y9&18#LaNNr>5|gL1-uEwUKWCHwS)b?Ea`=cmu|zRkGIkJGB|2NYPA7Lt zdm`-KP5Db>HS2-jx9r|YEO9Q~H)vg9IB!xSeg{BcP*n1sEktVZo-in`U+E{LEFqIh z@I2h19BJo2&(-|Ud{S$Bp^j#as>hp)hx?e~O2Gb!TNf7t^&tD$SFwJNz2w}04l>XQ zu~hOfU+=*$Z6KMAgWA87RKTEGkvEf)Q0N=4k)N8NGT#Z?gGA}3v&a#B z{ZDD+;b~Vnmg^M|Xo3NJTtWa0=3QQ1{-ww~_cb6K6hL}cwU(&8{FbFjN?mw(0oI8fHenu|o z)C=w#saFNZ9Lm!bYM&E#K9iD3xJkiR6H*Y?c(O|7L$dF)Q7MX)e%i66V896iYX0-` z1F%?|dmDs-8FCET3FoMjO+MeAX1M-}R`26UYsq45NQ4 zWv#E_Li9uI?9^ifh}#nS5m|gF-ip-p1Ma<*?a(RllWBw}uzALx>PYNm_~TnAUr|Kn`|2Qm1JMw5a>%NX@68Z3T%k!~1fyR5`aE!hwbWllsX8+y1dz6nee=S_l>7cd6zTe5f|6RDEyr`?gadR0m`JXe^Wa*I$*Tg|#w z1N+QJB2X@v0k#XHzz-WzIeX#U$v?`p;Jpd8g|V{-W~3()_U!ku=3cPS09p6JhuR9_ zJEw@XZgY1UpB~!QRY{w;(*hQyU^H{mhvN<|i+EfCIVpZpV6vT_toZzqt~L=p8RiU)zL$}7IcymR8>=vg6h+2W2~ zd7-aOWjiMfQlV4%GwNoiu zQMRP`NJz4dB_vzOQYu?gA%>)88q*AkknCiq>`ErdI+$WCS<5z)cR#Gj8MI7)zeUJE#b1!1y$mtB zD+kO^`0$X=_+!pxaB{>zn6xP*#frcm1!FNc`~)UuE(ZnSqcrC}Ad*xpGSYE89|R zncN z5cYYqQS$|wtxx4X#et8$_YywkXmwZBphRidhPu%6@)r*bF>dU zUmwC?jigTRw2G^LM}0TyeBbgCmd{z4#0Tx6%uOU{c&qtW38o%Bw@hK*cTMW?t*+vA zlyEe725I}gVX_c{eD}`bN1Myp3og_ytySA^Y76Xj1%Pu$`(5Q3y7IOjftp62i>7+N zHP{T<&bnVbN}4P_=+&Q7a`2AZ+@q}4FKcHHHZIul|9tT)?jd@=l#hZ)j~Zs(-r??M zOWCrr+Ovk-wsbp%v5Gss4i>H2*&4T>jKU;nqRtbU{&NUl>JOLtQxdE4n~#6p@QL#N z)Og_lhDiinHd|<0WG#lypT9kUUnhAFpd`V&um6pl`97SiLLnqf%^tc}-{Ei@Wn!j{-+yr^v%_f%kjw!p_}dj|?Y(DV)?JFEUk@cfsc z{r@3o|1WGW6#EZ_IT)URVk1Uj4$rpGzf)P1cK(wC&w$xrZFTj=p06l7Oym7jc3N!q zn`w+0lc}BqnYn1E9+U#IRCuNO2B|+pB1W+e3)8&}jR^bW9CO7NXM3#Q9Q!id#Isz5%BefbqqL zLT8^EF`$iEV54D-;o)290z7=t;AdYMcuJl9W}SkjJ+gQ6ePY{OGgemET2}Uqm7(oz zn+a?2_pkLozFYNR*IR3KG5On}@3jiJBcm!A)dk5a87t2*Y#-4naVu44ewiS?_G(g3 z$oAzgmmSt1Op;_bQY5Aw^qn1nvaOr+MPPv$6%AP*AS?XP-6;|y4s4VMTl@zdyV}xF zK;aOXs6SFGtRq8D8L1VaF6>onwLm2*O85#EBIb%lhR+X*Qepz+RMg8+Uj6U#R4w7J z4G)vQDW1|jE5F*iaM>Z|mu+SK+3abci;?RnSkD4xtyGqG;Pd*#V$(jyWUuG}yA_Y$ zumHKnCkTie7a2HiFB^Bceeb4N&Yq?ZifiU_mv=dFp9=^zia9?lz=qOJkdR$?2ow=@ zqy9DZ{4Ws}B0^nY6~8YUH;zA6;*EEA-9W~4BuzWKr!o}|&=q2dLpaZd?fMV57byaj z;3jGDQ6PB*m?CLQoAhte z&R#8KbM0!+_ix^N&Oslv$r{6n^}iOi9$O8-@9cn;8kLhE;uA?|Yq9E5{45Fbg?4t4 zR7=m=t)W(m6D|IXi5ncS1n@9(({&GmFMb^RIKJw)jpN8M9ig<)?pNnzc4euTs|oO+ zIVSg(jXxck4I+IQQ$L99HpQ;s>GtpOLM}8t;1BnLoN-C)TJCWCy`UlvXTKx(3x3Rb9 zLdztnGS3+r+RUR=9)>?3=(2^&ys%3Ml_5U}gx zxns<{d>YF{%s`*Z!yR{rIV!5na=S^f_HUd#g<=m2$JK9j({T+brv(v=(jmJdl2?2i#C z=3kD{Y-YD@?TlAQ_1|GmcMB}+&fIX0j`9wW_kQCFPSCy2;wfhnczgz0ldcwm#u$4<8%;}qrU_XU^NE23ha$Vad zJGrANKBVD^gG9!%l^PY58Q zk1hlldP-C6t#}n171VDt)835jJW}}|w)0zV?6ZAu#kcqFUDR>bJAh?yWpFpS;8(fL zPuJ@OBl&iKKlp)njb?=#n!ZDmUJ>g@GhC+kQ!We*f_lr@>+l|SMpj`8k7=MN#ui>^ zBjG_!*---ctp@s>;v?m2K-`P%_BL|Dluo_r+R=Y_eEDpY}Gcsy(0@c>!-{Tlqb8 zg_Es2nJvAgNbl)K+XuyK2@2P;_OEG6>V$esezWIIr<$B*ni|@suEif6HENk^wK87J zrC6qRWNoTVVT^+)_z3;|NEw7vNr$bQbZe)NTP*j&FjE&uy?#xj_*><=*y*I>H8nTv zexpj_xrO7e2NZ?|*?flr;Yv2zRpLKF6sS8MUg-HA-iP@SMi*=Gh&?RQNEa0yUc3^k z-{XA}rfU1c&1FFuLXc@gr@=o~wv6J(a~c)#@XW|K*a zq{_Q3?Mqc?X2!e?mWNA=)_jp8S)0;!GVt_{cM ztpLN@U^LfoNhvbnOBjx(Vv3PCJ#EPy2x7Tg$18bQH)|)!9BVVcEqbE%vrLc-dBHI9 zQe!vigrE90dOX?)=bg^nRD@w;tJ~WU$&`edx&g_E47&WCc5>5WD9kpY z2-a1%AnkEjsvA;wa-Nv}3NGniwW{o0Hu?e>j?*}I<39Y{#0dupQ%u4|!j8AB$eQDQXFLm%vdtbz-k&my?RW*Y_bI&$M zc4mhtI1+=FXOjjgp+n6C$?+$~ee6VRW#zBtV2FvXRzE~5ay4jj*sZ;ZdgDMwzcJgq zVXmE(%$T<}_>y4qX2a2CPqVFWW;w<2M!QFflqTvS3%zZI4I9;Gn@>mLGcVB|?DW{j zqL+rR3~@bK6M7D`EI(7s&w(MCX>H^TLbgYX#VprpAEm}2w8LVFjcvHZ#vo95885v( z0{|IcbEDYsj}}>!&hhf{GRjJdOPq3V7Dy~>WnadNWp2$G;6H$LvI|hROU+aSwm1jK z0>IG#<4yECBtFAp>z;rXP(WeIv9V0?Ge8S&B*08Dx`g4M2C5Nsp~N@<(Zxq_j!Kyw z-`J?=Hy!QKsfsJR;Q3&D1(16l^%ZK;8nO9l-iZc6vWd_t-X>KL8v>2faovQqF z2ZZHf0SiXrOs5%UqxUmX-iKMPlf{CCaV-nW)g8dx2L3MY0oD%V@5q151v7rYP$(!W zDz?MQ~$3?fDDOSdFdRaG@kwH{h-N|hp7?qb~i*F&poi;kW!Sg)$OI>VCDvbZSs zokK46@ZrNBS?KG_hQ@G(9J_eeYnWTWnqVBn>&=yK7tiz`4T&G&0+n>SCq}<#Mi1af z;5Z`{<-%afTQ8C*+{JUy1kJ*Heh zfjj4$5a6w2>|l+BG6Qr`AWSK!s#LSnOz?_9;=#DJAT@l&2z;~Bwc*S>S_K>$+Li!^ z(dc=~*Xgt*TZy(+A7G_U0S^o?PA(TvbfkQ4@$~eD2!Iz&f3H~1y}2>S<&g@ihA2$! zGTe@nlXy=~<*jik={_kgjncc+?uOBo`Pu5w=TfletHE7w+DUuc0km>LUqfn<%ff{9 zl4snx*(~)ns*HB|>hiHsYi_9Ml5TcOOoee@GzaF(`f@wcOWu~ayZ^`{xz9plZBf@` z8yD7`$Iex}sJvW_BSdMHga;ZvLUVYm&+dK{!B-qP(-!F>NmXM7f@*aP z5>+#T(Hnku+cJXecpVk5b5d3)jZfM$f%w;DVso`$(Xqa`8T!ck8DzG|1BD>`Muy}` z_sf4UBp2az{H5{U|F@Jey7jgA4wKCHHN+Eusaz%DAPWnYuxRDv=cIT*e#eg5%&M)SVa|ABX>)HgHXK!0ArPZ;*mapsIKaKCX?xjun|;$+at42BI? zs!fkcP+AM3Y(L+J62{7)5xuSKRU0i4(k%y4&=>pI6Go*^uO1xBX}`qm$j`cT{nA@h zonfIhO6jidz(KBKx*J)*oUC2$$Usz(aY5@w+u{F&T-6Pj()lA!sVB(`DR;;H%_40G zyas5^C_=;#%wZ>&kcz^2NivNJcX-0VfNN1&yGv_KeN|MS^wSpyil^dVX2!_CRkb%sCdvnx|W*5L)L zdd{Lh$v;nR*bECDtFgUt3W>1raL@d~t1%%H`)m%l@6q)ZeK1#5 zfS3~4JA6+t*#q)eP&o>4Y4B>sWS-9ss-k2XkEy9{$Wm9^rUsf~*W{micD5DeMFk6# ztOV&801vu3TT}FUSe=4ai#UtCZs8$Jmj;9<>dw)9CIHsHx7(~8it}mmns*LLu)Nl?El|pud*;5wf^}S#}Aq*cTP2G?G+b-8^(Lt-pga2Y*PPOM}yfVB`f8c6t5< z4=f;wWf$VT&DomJob*NE-ZZ4~_AKz(UHym^ooRDJ>gHR)P@Z{F*q=BaISFwWO>Foi z+H8zqN0atq-OzAt3IbXvw4%-qYADlYU#^3r%(h0A<@UY}It{I?q2UhYQHDgwFyJnsjJ7xtmbBt} z6?49TNLesz!nHI3EDIVhi@+SlOR>N)`ah^y zWhEGTBr_+xLe}#c6e^y**?$!SHha$`vB3F$KF@hRX0`ITFdsU`Cs*^zVsW!= z2@W>{O8#$Qem)v0-;i7(lwK(l5LndyAn2h?!TkK=NcAFOX8&<>iW?`)k_xS@NJLL5 zFHAs121{&SV@Lbzy>V{pZ`2)?X%+PcxiAz)?p7hKaMreJuYsaF33;90;!m02vl__AcM^0x;=a3T% z9jwMdWg6;eN?$2X-R(C>7+d%aV%r3sJiKHoFc^om6Vff<-95~wYoY#RDmc`Vb6{2N z_>Qt7-W?xZ*Mn1PAARI}x^jL=*;@2_4TyF%bdR#Ge;wsbJ*1r8S3H61z(jetBKubi zB3IQ++TB7ct&@dveckd!VM9PX?p$|vCMp4UrvJ+O!pqv8=xB{po`}C_poRl`<1D1uz%eLREn&N(3tSvf zuMEdjzKHb!cT)Yi9o=2nN~cTljL9&2*2=q-z_$j^O{Fx;u%`%6Q>97f#- z?%ACHYYmeRl*_~%5(y$$5Mms6hhp@6Df`%3%mY?bjjFr)WVoQ1akxXss#Jsr*4+Te zNmy$b_0Sx^e>?eOd{N(-M*e8$g&&k%rTCj`++8P1F4imE zWgx#6Sa9F`=#MG}@{bI^GqJvE@p5Ee!b=oBKPWU|Fcse>eC4shj(UOPEa>O2m&t zi&eyL1{4U|dU<5GhdA@S4Br#vtq(0Yu*uA;!uR`@ax*UHFw^9KGGAz&VI4MRyrZSJ zN1vPGo|>4RE~=P{StGp}opJ%H5#Yx4ZQJ6qQK<bB*Pk3U4YPoC`rTA} z_it3L2BOZHZzisI!D$q-bM#)R!XUhBlzOixruOO+kB3ubUlj%+S` z9X&tT@xvJ8c2CNQ%Z1tSg6U@s58i4qo$GYM{mVj&LDW+*3-OPxEKDdg@{MieQqFj0 z7Ih5Prov&VN6REJR|qt9bi-N)eri^eISs0Z$!zh$63@#YOZa9r6Km}Z}Qk;y_2pzwz3J^zX=`b#tK`ls%_1u8w9C>_Awl< zj7|9lB;g#9vYrN%=otB)9(_r9We#DkVwy^h1=Y<8r$@V!20CFs@oSzkv&1w()A?B& zG4iA5q7x?W*_eIISrpF+HB7tQdmQPQY*Kv6?E%Wh9IMvt7OkbDDpkObk{BkF&IVth z?4^5!bWtu`He8yhi_;_&P2h2=9%0S7lnsSfm#jc@NK7A9(lhmGo#56g339wnFmipq zEDCuKerJ)UZ=cw<&?fe(hf93+N!oV@UMK|@TFGk4#bGVuxj<@e(ekhys8t>5_@tfB zTJ;9zf!k~hslX9yI(1+&sN@*u9f4a@^Q^uF0q^u#pzr%pu!eWXo|XtxD}qK4W+b0A zNpj7-detaGSESe81DB%g9meBK=?L@@kn~MFLpIB6DeZ)?d7=hzb*VDoXRWIKSes*o zYI}Qyx7I0_NkXYRho2OO3&rc!iH61DMg((}k7^vjA}I6F{OkrBx2>sQ$3ASUa{;E? z$Ho{!bu)0Npt zgc#Uvnt)0PkU)YoDG5kPfV8`??C;y(DdXNV&i$R=AJ>6njj>kpu6Mm<&S%c&S^3S% z!c=JIp`9QQNa&*3`Kut%cIwuDJ|5uAH_4<<;J|a|vgvu?2>jbHMk9d(Kh*3-00<=f z$JYOCDT>14z{&IXFI>NW-Zj9*-xGS@)6W;=;^FTHaTVIBc3MeIO-Wr<{gli}88vO4 zGpBUUXbA1RU}JSkT}e&#w2YFBsh^*_kE@LF_ire3A(BBL8PLV^hS!3f7e;&il+0hx z1j;=aT75lwpR?`p8G+n8)_b07vc<1g7D}333yi-z`ciq*i~FYL48f_*=C{K<(oeAFMG-D`VpH&Nlo>EejPD4QRruWh>kE%?zw;r0^> zC=Rp0Kot&$hqJy~Mg_hoHDDzoB!V{L*)^;U%kKE}2})|L{YV|`4T5d65+%*-XA&KK zdpAs{EiqYmza2l?_o929M)78c^R~bblp}o+n>!9#6+9ZOf%rABS54Q{8gZjM8*^d& zKf6{@X%Y#SW+ImQvhZCaA5rujD}7mAYxTC;t${rd%hE}*#g7NZytpJx4flxU9rmqp z;HQnYV}vrC)IYl#-k?Cn~d;ynU#*RxK|JZ>**oaTYK#yi*^ z9UKEZ$IHQCrB5cck!S-ttd9n{!=aw_XP7jb|$4snAKYxKEJPGlPej`llt{sQ5gq;{(9;$_00x#aQ} z0s5aN-VX4<%EIRkH~kpxZbvyBD>V^x%*4Gm(XH}>&@-pP0F(PU$x8EicKAZTqLbdkhX1X5s;4#z>A#}nCOS-$RPkF$!)TO0y zcJ$hdQ0WC;)~i-tp^&C;G5deERt=1^Q-j=+zcb1qu>G>YGq!p~O(F>gErSr8Ea8@O zb)!LVZ=b2Mu&PwJ03pY|f;&RQ?}|{D-5Xx7#6Hy&X|7nxe)wZ$j^sv1q1DabJ1R%P zJ3Urz-AbO~9SzEaA|0TE^`r60oWc;NtOETeNF}qt!9z-g{-8j(aZ`=Awu~(G4E1z5 z-?j|D|L3$og?M4d9B_uND5!8{3Az8F@dC_xkg+6Z@>I%~hbB0Zq?^*q5Ib#qC$v-)Q-}5ZC5y{#{WA_1dgD)R2-!(SyjO$ISW6>!C6olF?~>x5#IXlx{2@6E zL)~>b2JYTAkaMO`6xzTxzp|&ASoUn58(kawC)0b`z`5+=muCG^*|%4&k~NsLfo% zo~7-w`JH@KKfY%<8>G!f+j--khL8Oj%jxNa%(rPYXObOq6S77(9kgpcv8y5WNo^xw zMW1yM>_HHy$zp{U7P4b@d!RvMKd);;Df`CQWFzDclhR2%dEoH3lpsbedcVVHq6)d&J7Lz;uVtop<*Ui+$zB zJJ$l{_{tAf#>9Pdu_Ls|84$*IghEI6MiXu`4{QTf7)O)KM?btbzaS7#jkOahzp^Ki)~7D++^Gw3o(fsCB@g7LrCw^lSu|^ z0blu~JZupWQtXp|p2kkhF<$v)CGTEXS}6#RzS&KS*0;p1m50QuYwafVLUo@>%7MtW z2ZX5N%KiAzmz>5D$u++&5h~mG(dL`m3iFN3 zj6%MaksXm!nblHz8Z}ZOLrWttsDUx%JhV+>a`BT{uuqHk>RNPDv>>mY(~|kMhcs15 zDbmM~hCbWFBYpy+`hK706AyaFWV>*InvS;O^g?qyrgl=h*(I98;r*JY(4~#qwu>-d zD5d+8(7ZqP(t%W2k_wB*;aF`hc&IU`RD7gt$h|RC;dAr8NL^6VK3#DlA<(WQiXGiw8bE&JtjAR^d+Rugm*G=5 zBim1@R#!Y2S-Vo(#F}p_z1R8>b~BN+F0yAwwsG_B>y8X`&F83zL)m&qDLVb71z|6| z6Gg(c>^}^e9V9_Smt;*lB~(}773j&T@Tj++OG$oFd5zl9@4pv06$aHSqh(*4{yMRYOq?B*0$@veALOy9?m zY*Q$2ME&7I#BBiRE(inT3<6n!{;wV)hR^D;{$ws-*#Rr{?62)jaJsMmFrAZWzz|qr zGEc&`f!<|Yfbyz71#>3gD-#CHTL`)c+jK?OV54@J@y#IpCXIz=X#;pH&LALH+ooZNrs37J>#Ux51FR3njJgLDp&3IKzU4v_x#UWIUA;it z1`3`B7KuikCzNB4zq#78*HP0nc!vw}UsL~}L_gq*)$ zmpMdS?4HHF9wz9j7SNY#$EG^VtJPDN9|byfxMIZ!!)M2_MHc-8sGB4CMR-9QtYvvVy4KjwS`Lb@_1s?iQ=0MK3#CM~ygM?82 zg@Vc=bxLw(vmMe>By|8jS*bPWsTVHEWy#-jUxI=vaX}0>!xomck|$DlPk+`Q2mzRi z!X@s}PB}i~T>o3p$z?6@2zzm3#&*&EO3FpAs31Le!tcmd)>Fu}nf=IwR%#*;+%Iux z$W6%Fh(Q=rY#L@yvJ|EO(+2X&!C?fvsU<28KJt)cPHH|V6M0Wb7C-h%WB$HjnZO$d zs2}NzZ>x4)TwSTAeiiXy&oR}N5jx$6gC4AI}3<*o0l)!z9nYr%QHVj*l zf}xl7#)E3f`u#i1^{EEDOnLgtM~3SS2T#Ect)*VgeZB`ng)2 zyBjzs{<{NrGzI78+Y_`Uh*O9XZo>r1EaN^mp`?Fil-o(^W+-FdJn!K)**GVI{f4^x z;}IwQ2~|#0m0aN!6#H3l14)Nizt|Tq!41ok>MgC$HgB~7m&J)O-x zvX+Q}teV$QIL%f5mgAkBo!8MktTTf=IEMI_;AjHB{O3rx_!z}trSPKAkLTjYjfx~` z+^@ZDEkHH&2&msD5Omn8bLkM*hoBpo`*U!FKJ(#(?8*=0pfIm?_CJcq$q;#~SUix+VikwK02-y$-# zzBsGIKg0)`66YVSHM`utXD045U(;Z+B+Xa$MB`QCj6P9+yrIC;IIJ)FlGPv=<4Ic)H?PAmXqN-%As)96;~=)hNvE^-2k|m2~i<=Q;flGHX-E@7mdr;CvyEfMQ%KtQHj_$`?r_=; zTAJP~L0sGDAIgVzChDBwspvs&z&I_;*eqt0%>7<#EIkQ(nlpfe9fk1&0Bv&@YMDWZ zD@(9>z(?_GSy`#xU}ZIn7||uxc#*+(o5LA@eUA4nT%R+cGHnn>2QV4AoI0?&|KK~k z0)tIrbZ~C5b5bcRmHK#pdjP#J0^?F$DYt0AsK%-y=i}L^&8W{st|ShOy&x(_0fDr( zCI@tG+yD5%ZDn=!u73FD-MF~84`|q8A$Mop+VJqp5Cr1ID8MVOKo8x%O?8Q_e48*` z*;sK8fWy6;5v)r}R&`|+6%{3Q$gr^F(e0q%3&1Be+)PIx(B$mr4s~(y@gm9zA|sHYw`jr^-Iy?3AfRk$v=4JtEVXgH3gVR4Vt4(v zvDcGiM8F*yxcngecVU&}z@m#OhlnNKwtZ~M8DeqygcC_3t?!~(H9R1cO#9ZUg)T%f z7BAh@wHXY#(E(@4Xpt{hKPOn>2}iLQA{zt}!-czX!I~~~;895m}?&?zow zbU)CyDnA;{@0W%urN0N{_)W!Hj(_TnVp zJzk512UyQG_vlIjp*g->LF~xJzLI6BdlGQm&Q2Y$pljI$JTf-WGT4 z?ZAnx5~YYy6*7#Fs7kVPOwf$UE+1nrBqao z*WNoc93QMOQ7)u@dq3#;-Wk@~h-e-!3=cll*MgA<+~%B-OO{g54UZ04Tp6(7qLU-V z&{UnPM&2zt3T?V|7Ho#q`Ie1s!Gt|g@P)&ZoNrbKh#618R^Q0J+~C9@do}lK7Zm7` z2eC`kpiMkJZ3ymks!UY;y8k3b zjwq`s` z{E)DT;HQdAc^(*^Nzdj3cIEEha83>Fc!83qFAou2#NL>ZB|rD>d*;L({S-T-Q`SD; zDFF-lG?0&5&+x2MB6RF)(B3Y8c_(!sj20f?KcP~Q--%ioD~bi$w{OiyC`lY%lsp3? z7~{#b5!9?sckK;~MO)mxp(c9vcx`T+sBYjL(X?6;d9nIHFLc*c~X}f zn-aL&vWXGN*lBt*72>>DFT0~2QT?1zG-F5;ksY-!>DC#s|KKnF&O2c*5j&Qa#M1NA zhwF_o)Nu;809DXE(d9*j&Opd+- zWE2Xm5VI3Y2~s8{Bio#!$E`T$c7?}l2{%{SHSH%Ysh0t0dW)8O67XNQl658q1Q0UMIEI$aQ(aR z!cg-Xm95R|0jQa4v$)JorwksL&u-w<*5JqPCc+B%sN8bEb~D@py+{VN-vOr=GRL>P zT(JL>H0aJ2o|-^OnU{p9porxyv|RZ5wVgON#v=>hE0szuZr<`UwuFMNuI?#39&ebC z`$CDpOA4oFE=YmiDQ-1fIWyxP5EdrE1%U77(sjx2gdIx-I~W^vUM1jXU}XriVU~?c?j`*Nv|L z7o}D~?uCa#0D|gnZH@BL0D+zZ;h4{dxEjJoWn;yuRH5$@EgwL_p|ngX7t;|}t2}07 zV`FiCHwdK44Yd2`!dc(^wr8mjIf5MsbmjX5GECFdbFYRD*KG&g+WBLK`<{}8L1`!U z{09oFv<~J&FW_}sB=-w01hw5vx3zA2dbLcHs3J^puPy^NnP~Y+y5boW9{;w{ZuHT@ z)Tz5F33}&m5{1_2blI_h>)O}MP7l&z@&t6h z*TK!_9F@vg{zzU#3)j#v%Jlp~ZkWoD2IFhJtZC~jtF!lWQYb@@fo#|B?7Vu&`j9wyS#$nrd6lD-c{v6z=%k`7>S=^mt4Dwu zKI&FCTA^M1vbeLH=Cj*2apoe!b_Z%0E-5nw+^~cGqm)_A=Jm>J>2>_hc2W`PV!zvf znXESYygoFLwO>MWSL%M^yr&wRacnx@Y4G8Ct3U&FzHB%Werid!!Z0V&kB88UK`Kd) z8h~!y+mc+Rv^!(YORjGren*_I$8+^;n(S7V)|?tzO@M4@9)ta%E!c?OOT_Tzw6puk z)abDK$q*Cg9j5_a-Z?v7lQx$XbHA0TSaBng(f`r+4nYVD>BH{;`Pf{AR6iZ>{7ro;ZwTtTr^NM6hkgN;!s1Wj@GVPNAR_+V-RQALU$u zoEv0ocLYYkF=c`Q#9B%n<&Y3{y!T8vQki8Uvidm+4k$iumu$s+4b}efoI6bYw>6uFL z3g(O7z1ya*r|`b66N;9$dli!(OZRq<#4`O-{0yR~S%qwI ztZGKqbQpu5r}0Tej>PO+yqT=;1-=T#M>4HAWTi_2)Ii&SkxWuW{oWCXxe%4r+HiF= zbX+rw9ati7Fte<)YisDj0f#lLMcjKQYg%9-Ixv#qSW$!v_auxNfMm`?dygO3w)o;v zjw1%Da~bV(KUr#MPb55aOU&BrCY}<&j!EsL2)RGG?D#NfK^?eKwvU+6%V{Kigxt+R zt_gq=M7O|`k2(v4-K>_Hs7gkVd29~FqqdcWqE#X zt}~223ai=xfy|7yD2>FN)|_5n*WxQq1}~DZ6>LB{?A?-F!NI|WEoezww~;I0IwhZs zp^xm<)gu`~poqI$mjO{zp5HwbLZrp37Qt*CUu9)w_>r1BrUA%S`k!O6pFH|MLuj4u zoq!bmQ48?jNpAAQtn?^7G_pY0!W@bU!VGMh1~>Tku>5N=D@3&|+A|9HlHzy_1(s;c zBK$Mg;Tt!5iFr3d@R)J$`>%%L;FQvGSf@Ye-JlRJJt`^{D#2em`d)82)S|oDH9}DO zNcu{GVq8(3!CLhClQSZh=QWNwW4{Y6&hoI%X|b_hKgFhseMAhI_z*I)!$Ue3kG1QV zzXQk6jYClYVblTb4iq<9KQ!!aM%=Pfg!f(7N7-v8FTJ?}chUVyy|c`d@|avMhmt$I zC2U$#Nm;BUarfa^?cvleXPCJ#bxsp0T7GY2t!&eW(G>}BL!Ivt6nIW{*m)AH{55sJ zBOaBA0#|od_!DN8#%Sr*xs&4O=VC7*@)jg!-l+}BU1xa@7)J!PCffuyO;p5xBd=Dy z^v^A`3BU@A;45dA{Cx^2-c*n7R$uGh71)V{Y+6@(58UbTpv!a&Y$&pH8 z7dk|ZtbzRnV2WueYXgYj&Q$_*xZeR{R`WoE?`fxyY+Cc-L4Ie;k1_L=bOl*tiy9B) zBiE-}cd_V>TBIDAi*$4^eesj;v*nT{+PI6)W_;ZTS<}wU2<6m<48G=Q`@v5H3m!y0 zAeQ!B08r&hO63_pXevoPKOxI7gjJkJ0bnHe8+nX)VDptLxFjk~kUH0Hxr_KpJW?>k zJ3(#&kw6{XX>{kaTCqX>%t7C3=Y?p8a7m8Ial)DAxU(w5REIY~o-@QcFdDUaV=Q+n zs14zZn%O0x=$zM2b{=@2z0yE2W;zyWN5Pk%nCQ)Hw8Dn0FIajQV5%GZIH!kJ;&()i zUczh=H21?UMfsn~4#O z^_*k1S77cFtC5lyOPv_FC_r7SNyD&21NxM`jhN$)ZqnBVeQ>*&A*zLO=A`CHGNOC(sw28B34U153^Enxy;3C2nj5r<` ze;>)KF*<8_IIK4gw16!6|BTwPQ8Y8c3Ca{~>c$i2mTBoz%cv)wfGFTso#N zQF-ZR5y`SB$H9lFmwtlmZWE~_W`k_JHA@@v2gdpJE~4x4!NG%k)KRqyb$w4IDuS~@ zlU@+)fSQFb`h`N@=9@*(C-qP~`@@h2%=Q>@st07xsPaj~+Mw_}PRQCGHw{vQ@;m%$GH^Q|TZoBWpCE zw0`Q9OMP6xGk@Kq?B?r8N3KZxF$L7AHcW8`Ab{Pj{O)sXU825g{nhq&78kdux7M3G z`$~^1wZQ+H=5I1fc8*2#0pDYMq}>)|>Lql?{rOsgg!Z48;8)DW+sV#lpLq$YXO96! z^8+MPg|H-jH#!Q=V1J!gUJM4;Ar%P2+A~3!@EJm)3H>ekl_}?)b?VvIQ01mQyCyTN zfWX?>{!GE>MtJb$?9st~va*4@vryRO0_2YTo4go&>lT=(>>*l5F5x_dMq2q)Kk49D zW%zz_a}8us8no*$O6;=qfJleu*&cP11~t)t@UcLDxa(_)rYZcF`6jUgrcld@+DQ0H zh|}uCoW(exJKtFV@Gx`$r-!*31^D-Swy1f_1*A|QyRIr=eZ>DEWim4}U(V0Z%M@Nk zI5|1JTv-Vi4g<{Pt?v&3o~gFJzHsD;DLjJ?IBDz$!#=>5fgb#&E`0&<)Q>J!T39_`GO`Vn0Z1=EU2@C(e|Sh+h%sQw zUa(I55^y!>6Ves$y_N5K*<^Kf?|@iVQq@zoBHCFI&~+V?kDmWt*u4HK*=ZF#yygHz zKUa>bB=5bj_I@UJ;df4FIsOUo?CK%exyOrD^pClUvFw8|c0hQM)FB{$!8-h#wgUPq zwrai>c*?XZ&c_v=%suVBIDCPV;#9E@n1s8_Mi;xS3>YaJWjL)z>a7_d2Mf z(1tw>CoktrT@?0rua2pt&e_zuZbolYpDECe0~9&&j~?`IzVuuipDPRvw6QaS@A_P0 z^)aBH63L@EjNOYA$nRY*obBA7~U(h-cQ^8OU)`b3WCE^nwGz8<2r7 zRr;cPA3#Fpwc3_gbjlMTMX=&)3v&$Tl;Ck^{+gSj-_E$!oaDPvR=Mj9(L;Rs=p~4q zQo~vAhT9Z-^OHVCRt(*51Td?U->sWbvt&PO45sT&aaGG)SG=v(=-I_TIkMIRs=i>YIqLT^a=Fbj@QTX7a6%b7%M_>c}h3m{Qvq0<%!{dHP%M|Ni`IEGU zt08<}U#zvgVOjW1z^dg_EtQpSb@evUZY(q_%%(Pw?gY=H2;vI@uAy0u4436J3U9(mLVObsg1bz#wCbzuUtGaR@I^72qH?|3HU$z3b^VTh; z&BYuI$KaX|=qYPIkHwb|9^7JLh)vf3Mjg+S> z7*5JNEXs9iik@2zor~0UGRe@9qx+@GbJK@fjaP@3?Jp~5l@Uc;2pV%6!dIO5xBFj$ ziWtnWeDVC$c?o-z< z(1$zOH+;JsX_(n8?r2gDyQgFAaNDlv_fx=UEQ^LhxI_#(-8Ej><<=DK4|5goLM+A^ zJ0n-uCbdgpH*Z5>@f-G4l5T~60fff!W4Ah%sO(P;;c~XVr9F&R*Uqz7XG~7`wc{$S zlYZX0F)Py*w-|rQe~znwZU3HwS<2%6vlX#xx_@ocB{&68u)PI?RN%%w22G&$1tkv&d9xSBQ;yNvNQ5I zfkaufJn(@SW1O`opGZ>FHafHb76{%99Z_S}u{4z~i%@rD=~l$1^p*}PXUfQE`oI++ z5~VXArP87!8KG@?OsS5Q%!YXIFR)C{?iVi!>RXvf9TE3gs%410Z#`FkR&e)2+Q#=4 zB!B!7?uLll_@c8<^Swz{2Lq2^8LX{n;<|Wnf2&J}y;4J1(({I!-Y%3=;wR@vDv(&Q zTo)XsxUv^JhIIfxld@ku&=TI^cSy7BuSfijyz|NG-Ctr7KVq$FC;h$tJS0Tx`)jJd zgKkIYzBm(lWFm_j7-^eR$qNgDB5r?Su=O=?n8l#V%b8Nh!yrc`AnTJ&^t|yh-|(;1 z`M(L~-y7;w-mF;oYePNxee=J-GayjJc0e5eHyws{TUuI9_Z3)91GX|y@e-Gw?c?|w zV0yqY9wt^Zy8RHwobH>KX<&W;_(2O1F)_UVng#5(g27iWidOlxEMLpN(3Yg z>vwRgyhEwFPjSHvEqJ28DKIe5)*PKC&Z@sMtf6mUklM}3-x`4-b=~;XS+$L>x=P4= z!zW}{a;8R74(AeJ4}flUEl7`dBp6L85C#KsI4?>hSoV9iDij<|mK@9dxePY_8ah8A z<$>s>{VPz`Li_OAz9cozrpafX+)wO!Z*#M}$;Ba0>LaU2dnt}H_DV`?=0#{2KLcx^ z2OZQ_Ex0Idk^GkPdN3wjQj0gJVJFzqHz{xkaX|m;rbNJkZqg(f1|%R|#j*Y4kFaCi z9nCA7&Dsstb!#Syrc0Np*oxKe{FEP^O}HR_*0tHIHS?x^eke)8uykjc#jY0yrUSAV z1M1Nln80N3Zhz#mdtaRsCqf1}_L!K()V3atA2)s`KDlD%<8CAE!k&0(>c5263iG5J z2gs)C+VZv{BsW$ZD^WOm@yo|b~9W4STSUIaPAw>x{O?Am}* zlgWvh%sNi!LxRYwfJa}FS;ss~7FhNDZI~Xn{7=1x`@)Q?(1SY>fLmx1QdTYyu>M)( zpRC}~&fUz&W{*KNQv1jj3$9=jb&7V5Z z9JAf|z^f=3u!_*&iu{7X9`+imOz}1+=P)kB$jrBQ_Ug<1lji&8dK@hXMRfZzvFUe;g2Wge3a-;T;G^YASrQ_2QBKx@5{VBFofh^<;v5`s;Gc zt6R#czo}B|?x7`>-t?}#O9EeA@;32t)rGGR{@rgm>A7@`m!{`I@T^|o0_%ja@y1M4&2 z#_|%5etwNUs<2**ObZSEq*BuIMs$onCMQL1U4BhE{M6;Cuh{3nivOUvhgiG&Mnjw} zZ++bzoSvYclAe_&aF>mbAC&}Xq6X!cI@xlD0jjU^FAZ}N%t$7&r4^Y;8bUN|~H@vUEmq>YaPb6vj1I+IQlltOIhXGp)PZGG#+Ppza4NpAJed1*pK#&m0& z%o%LDz4&X{4)Fm4yrz1?^5t*b^re}R>ri3iti1Tw^qPpG*ApIQSBA0sgW7r&Z9Ca6 z(Q$?(>UFpWrTEcOY$W`PaYvmzH`eP94MD`fwU@qQx|~V!^(j8YMV2Y)!&U9giX#9t z-RRFgDHuvwmU-NO>w2lvH(jk-*oB0g7m0k}MhLgC+m6cRu?ivHesfKJ0jnR6xbZn8 z@6r&~0{L#PopORD=Q)%2XvsX1@zEQ7L}`6MwpTK<%#^@VRY_Ib*SfV6%Q#;%v`?6F zQUGBjBR7*ppT8vVn?EL175}Ugh9kWc-t*9y9!|Mz{EBx660TPHY5M5-I>OHFcaAI^ zUBJTM6yM^M86xb$N=cH{jqC6&--)g<)Ye$WP@^> zAASmYO0K^NjM6H}|K~D~xW*kzZVn03F*hV7>|z4Aii>9hfcj&{gM1F+09@V8{ED6W z`Iw-0FC--;UlIrenOv)t7Z8^pcwB@=qfh>VltKYO`5DI#Yw;BPAvE6)RYKjgt}yB<0@4y_KsE8hMo2=FQ=YA87(U zI;(d1S^sC`3jR6Ee*6E`YSaHhJ*)1Q+1ZY;&D9PGU_fDuW7emVAzjtgr?!eyGvGn1 zBxdbhP6|-#33?|CnBc0?28h#H21t$i`ugd4d_}*YD`9zab3{T~I%7+JFH~5}KB_M;j#hYejLPynWfVmP{)Hd;*1!jSk#aeVU`Ehl1r|wn7sGVp001v>n zPkGveqhwPT3rvjb3Rd9D#6E;j-&K-&APkn8_us?H87PA@yz>&4Z`l}a zJ!lVPVO`n&cO{~ZY5^sqgw>9xe>kymPLz8_6xOga{@7XYCsMUEv{i~eR0nb7ZL3E= zk0N#dHk`^@x*8+K4%Ixy=$U6sPnrx5ikAVqvw_q6Su?}#$4)r6AF!tfVlPgYXn;DW zT#D)4hyEBzc)9;3Az@4!COU%VUY@zueGj!*vK=vZ&%Cy013we=QSXMw9A$03J!|Iq zSPu>6#%9eVN-&j$!J7*oZ?;ca4B*~^P1(%BEpVe442vzhdo}&sJJa^umhN0P(!Miu zr}%~ie|dM*V>FT?QL=ksJ;ZyC_aNs$WOz4(vQlBZZe>?4-Ty~j)!B$#UV31&^-x`H zB#Hf7gSB(Xe2YZ$>HxbVwtC^uR|{RPe)Rwd)BqqbUHB87hiz})KYksQzjP4uLhcjb{As;E-|YS& z6lbg5Og@4?Afz#(ZF@NdD{#G9Pc-i}R_ymERj0Du{OzrMu8owSV>7SNH;=ZU2!B$7 zYFJ-IuA`4Bte=sqt5Rv&pd=QZzS8ma-;js>-Mt}?4@F)`OO>@3$!s;W{#?KN^Po-q z4gM5sb6xJX5%%q3bgWzQS=Z|Mk3E-d40bh$D0hbhu_`Y@?WG>q)a_^NjDk;|t-6AL zxfKg=RM(b%2irX|Jk}&C{BOC+{s_uDr_NupMA#SdJ`#Rl%pvs6pb(FKOqj>l7u<~B zq*Id{7hePkW;oCfoOL$v+e2iryyYfc!YeQZIbn`fPoGDEa~D=$`WAEld+aKIB_(lu zEQ2)muoSl&roHIYPws&`K>IziL#oNI8=Y0wuH!3*HAbzP=W*ea^n1KVxUps-xcGmM z^ILB1voi6HTC<5nhxMk{kPAOWqNVn`Y_mHgT$7G-ffV4|W3qNf5hSLvqS!L0n7axn zU~hb7Gk&ZuWQQE}KOpO@<+gk&71aEA`D=Ai0U)nh+fTmP7nx(?WU1TMpP*Iqx^C2~ za{n{UoY(d;f}Lx3I1>Gk*bgfBv79Z!X0)pl|61$xd_Qw8VJ5C;Fo%LjOYKT~GQJhv4Fb`f#IF!N zaiy0Ln8$6^Fm^dDi8J@)l;jb<1S(@Bb&m(mT1>pd&*(0iBO^0MI{IwU-p3wN-Tgk! zSaOuk7B&pQ9Nsi`DgcH}U<7CE2s;`0e@@pbVXDIy=D7^Ks{c-|7w0|^5)JPz?9#mo zZt*~0_*ZRnt~e5?9y+U=ng7Pmj1K|OJlT|^WdAeX0o6VGSAGWw;4k~PFyt>~)jvAw z^x}J54Jfl;g+^A{(`6+kiUB|^X9m&*KzdigI(o4=>6bjK`c-wb&uc7{!^Uh?9r>_h zfoP*YMnt;mXUMP+(bm>>B5la}cD~aG`#L2^#>kI^ZMX*D9It|-9g2Talj%^Rqb{YT zXQCGQ&=lfar$kvzlQ;32#cp_auobucpT3v(pS`p9-*7EL^4q^u)gJ7uoBCN*+pVX& z>Bn}c;#>k=0s-CPJ$v?STD-JDdT*9N27%zXvNmt;6yw&a#*7dqNlm(_p%X%bz4lx6|Z;SXtY_r9kc9PZXzGSKx|!MQGQ>&3<|wWAq*J2+`}MZEWc zD&50v$cB+qyafuT1+^E~$AI@AXV!Kk)yy90>meDuPQ5yImvHVie(YrU(IJEtZL#6z z)G+L5UnB|0up&JtTAz|@Gm^p!q-ot9v0;k@fUy55@T~HPdi}v3f=cRYyS7NsdVD5( zU^GrB_+pz4*50u~&;DSut?jzB@Rv2(CNI~<%Kg3`z&3(^=x&Xn=Z6w5Lf$4$OGFE! z64|P?;Wm+AG3xoHl2qyRr|rFdn7^3?Y2bZ46XW+U@ntQ)K6m7Ffe(6T1x|4@9$hxqIv(%_Zs;LjVTG|AO_;Y9wBP~%wuWyGI5RR=AhwbdAu$E9LSoXszJKMuA+c3JAr>@kVk=`en@yhMmVuf!Xz|Fbd;4)HBUns6Z z$X{&y+S3!eqHPq5tqDM8Q`Bdk@)t4`hLp(tss;G2icV#yE+2X}rZG<9j~p+AYB?D< zA2V;^D;F$!0A#A9jpmle#11BA`87UEhO&2toOS*vyuH30ZdvblEUnA+@H2E9!PnHA zb5TUz@vX(ue1XOBfLs;f4E&u%{(Ac03Dc#2*fS9!wz4n`xjgRUQ&p8Hv|wDf!*AP0 z63@0dQoB+bNk<lcjk*7@G3&%6$euQAWn zgPDgel@wf+a311hku~%FK8IWEELR1vGizd?@rRCHla}@%|ny(2r-8dZO@+!eQFcZ;cF&@5R38sD7S82^tYwx_CnRxgh$5@0T->} zF(s}k9CH$)HdUHXCu@I-J6@9NNSTz*vpKxGF{5J z`nQes;iRD5HkB(E1}*ui%X&qFf@M#6=E@=r#A?^&G<%~3Dj~?<(or+|b!51Qu z0nQu*QZsg=sC)H z6C{gV1W_Dsx@xY)`SwvNdN%YM)MIeOR$yG5o8GQ@0DV+`{ZZbtq2*rwIJ>`*$#?Ob z@pthYgOn-aHUzJ~J|eg6nh2qB^T8k5CR6do^DAHJnh58j{7fYDLpu5FpY*)U)cq}* z{8Zx#%JYp#ux{D!(zUMXkHCK$i@W^~H7jaBC-HFpfbMpvSajyBjG@+j623Y2tJID@)s8{Gw&-r0u1f=d)~Dyd_cS311^PQp#LL`mBj-<}F=HRgs8R zD*yqK?IMjSlf5JA8!I={HLk34S7A@BEE>f3lVSJP{i%T6{3q+iL%PoDTG!-vKF0R5 z14;yD4x_r*&ke9^zYId~zOxgzq2H-FVgJ#28LjCP|sxStRefw9n?$(ML{7A1+Od z*V*}bf9*e`UZ|pb^(=xNirkz@uZrt`O?O?PJR@K!ni>dfXOVs2@rpsGOd9sssIUzK z!Wa}rKsr>xED4LULK8@4;%5C#?MPB63(xcIDYRISrRnf9f=<19u=hb+VOTdCz<|xM^^- zB*b7j+rz$0jJf&T#=Y5D;t<4vyH9Boc;LZVY_m$THg%Qc@ymhs_Gx@E{1YonffejL>Sh)6?^1faF#lM6~kiwS}256T<|YrRjROgE2p z-Ot=86J`1|Ae+9LXUeX}0wj_;hNSi%jbtSMnn-}3;WpCg&*!fPLcJCD6I+)CuS##{ zd0#*9Ttp~+6NQ(6;Eh7hcdA`E6~tD^KI@v9upd>sd-=O4y~wJ&+x0mr>!jMTbTTkd zkzg;5Eh*u?VJ2BW?^kAGi=(6Azc@N$>8KP};~`?hox4xEu6y)IjwmTj_P8xEZHz)X zbz~{8YIc>=SPnm=bS{rUSrfq1-z}pePGqwz%JSd0y^C?=6LgB>;TlJWc1jH)NyMP& zYL9`I9cP=8tK>!9V@eO>*D$o#Jtflj#IoZId?mI_s65UbvhkGND%k7Skoz6s+r&AE zz|?njEuBP`zc)dMCw{V5I@froqRZuq`u-6)NCEG}neGtw9cpl=&U2cS(nG(!MANw2 z_PJcx(9;@%fo$o*Ey4z3JRoObs37-GGkVuLrb_jEeOHvsG>?k=+%wJJ=O3N=uA!}p zTkEPVMBS$Dg(h1QLczD+N$r;kIPMeg$@pxp!y%(;6;u`G*K63H|4B!uzY$|9ssr~M zlv@ga=l-3+!48~`&yl(;O}n3~_TZV@J&H;Zoomi5uLP5O?kDJ1D=d104_U?Fn|T86 zUx=IRVr|Ofz3WMOHHA}B=vS>3wZr#aW-8*TPXmOV>#q*ZnhQ_|wpTdS(EIOVDdnqV z{6kE6X6x=?M=DlF)N!Wl$FlOB#f|P~iB~^?Muk#Ht@RicW?X1+E+@ujC#;x z$s(28HKT|BRpiLn8p@&kUT0d^eAGO`wPkVtQ|$Whr4|7Nwe?~Oji$k;(BI@r7^+(% z0=D)Xm8yLCdlCR}$Nws;vRWA&7)a6H%5P%T03lWdVUEH`9n(mgt<0;>@UI#xzW)N4@ zkUFn4?!Q*WNoiOROG|;D#LXL1w|;~`TZ_^=$zFX|`gu$cxcNzCDPoCCli0)It`woA zqHWq)b6V4(k3FQUCL6W`*U`X_M3merJvw~3dSu14r2fHHmm}(r>>-(;!TQln>r&*B4F;TuJt_1k_gL|&Myk58{ZStx}{Y%=ye9*|1^|DCP(E*)K zeW2+GiNiPyf4*&6$~KL?SF#fOd`6%PTuvLWWqi7&<+``w2prtP$I-z#W%Nv7^!E@`CO(;tZ>8~F z1$pSscSE0q%kTGy+6}FY#r-m5-Exs-NgG}|{{ALC#uRoBo zsHlgspA1`>yd~94ja}wt0KbVvDGaZ@62A2lYS()TwS4VZeZ0s&{Sx8Hz^zK`8)mYxc6T}MABi;TuxBel#Ty+xT$J-fcqjYkMf zPVBP~?8XY`sHYFXL7JAwE=zDMf}n*7REHekhqz{jU`J6w)7duvm>O~(_xMrvAZQ({k*XprMF)0oHZ zPxa?Zz(vdx*wC8?bpr~xyFbM`Zb)-LtE?!aNm+lVoKp}tf&81c3wb?t%G z&kV;rwqp9rQXXgPO=m{+SMg!+@=U$+PZC(MX({yn9<1H&G4pQ;n!+BD-vPbA!k66) z{aV^n=6F<^ue8DF+ZBSZR4}s-%Esqcey3 zA0~?Y+E#`KIh)Zc01Fufv(z{JN`I0546pV3%S+WZl1+sNm@CzgrBu$fQpP!%{Qp(m zcSkkV?b{-XiiN6z(xr)oA_5{HRf;qP6p#`Hr3j%#Knw{M6i}pyG-)Cry-E)dm8vx9 zB|wx8A&JyL>f51w=R4jW z-IoRC8OinF-o|WWo0x5q8g(a`3Sfmzt@CmGm9KMb_X2H=8u#z^xhQv~PW<~2sM6+& zhyjU%(Zf{WR~cC3DG1wg}IYLuztEbS0(m38RIXju_qwWhhy^;z95_>v+ePT}Lb3bY$0Tha?lhsOH@6$hy}jEI~@*L#q82 zXczok!?1sI9uGMuMBE>=dHMxTPf z%D2~&ON`DPisrvZi_YKc%USB(Mr@WQ9}X^8ITx4Az;XHJ`$10bm<(HcHw*og_GpPfD$DQ(R!9y;9`se^m>GHYT^LQSXoLjS{ zIp9^0>M4{3t;Q^}%MnY~&}@F6GGO7-ztDi*AVZ$o163}%3hMK{ zbBaJyi>C5yTbLf79qs}jU#Y(Ce!OAi=afN`^RgxP+bN{{hkajUe)$}|#Q@eQg2Gqp zn_8#|5DetedW30;4$}3zU*n$Uti+&Ax5BasQK!2@|KP8LJ%rQ&A3Z?PqRxFTW)P>{ zj&?o<-!w)HP!mXBkS8Z-Pfk-5taqTBBCQ5wKDNF#AM@8#Qr%jH7LcjH z{7Stt+SKeRR_kklLMF&>^djrU8_r;P8@{m#5&^l(NlP1}GG6l(yq`|Ne0Jf&s+8#> zvF`!WidN{Vebpe%gVx6ZeoLUUFtObM-g3WS>F%@0huctCP+ghV&hZ8-4@R{Otoi77 z8enVqGYcG%&R@%ST&sztSa?-5wA|{SAX@rqr#*!BPd&~Dh%W;FLi+d%h2)QPYk)&{ z=RmWTfSc~3+5jyeoC`rku!muDZw0v0{GrSA7{HQK$b z4C0oJ&L@zss;ozHLD`n1^RRasxYQ`z(k?xQnt+U1Kyv)|Sp@%k{D%L9(J+lRT_{Q_ z+(UN|_BN(pQ>tWVy1|63G+3kS+V^I0>S3phmp$q8#ACOL%^UgW`>U#jQKQtV&)R2*pgjb9u&Z9KHu3wERrz=!x0@W=ewMx&-3>rhtVxK?wk z_H5GlJ*$10)3%bf2|fnU>7N(wv=TC>KdVsZ9UYZ&BV`fROe8Gk^MfG43RLglbY`V> zt*cV1P44QX3=^IcoG|hD+$Jjn=Ho@<-W>tV1npyh&>z|AZq!z{kQ;lc=34pUUb^6o zM*=z7__fy5s{Q>N_uY)vlDq-2#IUl%YA5`h#Tm2aB!mG`pW$t5bNb%4>o-pMXn2*- z86kdOJ`>VsbYQ=?u>llx^mpdvpLwaU2yXBIaU@8D*l#K5M>|W{!UKVe9?GJD#(v@V?M@Z& zYb8(!{cuT5}aP zOl7rqJ8?<}g&9VlALnH*)O;r)v*Z!OE#XEwHTUF{5CaBwnRgwv?``We>Uc!}%H5R= zkM2pFx6dK1l+sk@eB%1u5rPuyFsvrx@FTC4@^gs92w-hVH&{M>bEl4|n0TVT-U75e zQ*Ki;wqaU9yJQpXPNF&AuFCOxyYD!A z?h*fp$8?*+rCVpd)*Ol>&aQb}ThMsVGx=`fHB!91Foq<}W~IZ9awi34yFo9YwOhpA zHL(tr*vPH!jwJo;PJ|HZ0QcJO-BuL_3ug}DBFj6^+c?4jJ&cX$S_VP0N)hkf;1;Q= z*aia+#0x?DacMg>U#RObpbeh7bdzsn_$3oTx~8l*=rQ}VFP$wg)@yZ&!N*aVZ~YGm zPwrot#6F_b=y?!OYWyj3o7O}BUNs{g>VO^;$62f3elVh^%zv&4az z0fjw;Kj4cccOK(+CvXw`sz)q7{{G_6%e+oJG3;!?q2kf3!b5g$zr8+oly00o6t@K8>3a6wOqJ~- zCY}5%^H^!Ls^sBvK3Q(D`n9aiGl!NT`%yR8ORo>E{VG`u;?75wvef|_BtHVjiZH2O zzwhBri&adTS`BvN=0?*AUuO!}+UvC-VAG%V@`i0f<#Fgc>6z$bYEzG-?ilU0cf6#_ zCOAqclRBKW+XwV4wU*=fw^#rUJkAP8c+Yeb#A$>8yMX0c&sFB8k;c$MrwYxr0$V9N^+-T@@u zKP}7tVp^wrAAn^t;HOj9O$E&AOCk zUy}r^*a0^Hu)_WkaQuEY^$f5X3BzN)J34OI(t}Fj15|eYGC$zb9{U*X?2JFf)&J3* zTK-|57@vlJg?FHPIv(@={{8#*KknZ`_fo8`{(Zs$7eH^7Q5;e7j@$mun4!p9JO+22 zfVScpgM^NB11SPnRT8=)l0`(Jw;OY=Y<_AP{SFrOIt%6dwh@ ze|_MF&qjJ*3hXfKI^XjqP=L?1q%479C&+mCuYtzM)s5@Xml`fQQ}jm`Yqb5k1jMNj z)|j05*YPeH0sBlRcwvrqG3z!0=KF$X`jTqkzP5bdFV#%1-|}nX7Ypisl>pF5Ji7G% z2w2Y;z*k@LnfJ0tLVuH&>Kom-Q`%l9rbD^P=(+Fl*#{rQDLGL}ek$59G{?#Qt59^n znGqRJ7}&yw_j%K(f6R)lcfiESv9{47wFp&YNFY_zkhZ3hPgasbwW<5_qpvCrbcMK4 z+b0D&&!@ivB^Y(cc`9fGcv#!CV$zLR7WH#MXRyr!lrrrfHZtx7hgYLi@ldbcLJ>A! z28-ldVf9`Yb-vDwOr*8mJNGftF}$qUH!bb5WoLU_pn}Ol*mVKI*$)(bMi^Ait%(mt zQ;3qprJ*BSLoY14j4w2u9=8oBuogG;3I>@_dYSrcyx~r*{=$Ty8DCo-!Z3B`I~%h_ zp$2)j8J)b|9%k2gLC4cQ2HSmrY_Y25%ZzrTvi22KLV|^>I#}6&biU|p(SW?`w?pj@ z21#g#=lzp73Q$eD9LQMp;r8NK%*5^+ zKia)Tq!M|@V{fUR^X60XEJW%phBp;)^Snuei#`ETcfYm``mOr7TWwTm{XlyX!d+UR z%EVCzbA~iKaZ&H}+k+ItOB0e@LRV=|_!jSlwTi5y1oMUq58IqP_?nsw@6M}kanWeP zR{M5#joD{28M{pfr%2+K4taBSRIq*%fSOdsVF|b=USK z;z)COv{&2R+Y$Phx>`*h?SE-Kh6`v$zn=Q zLK@s(h6=+qy@Jt`MCa}?5CNk_c`=y<(i6ln6iL@v_+31I)G6g8ZYi02mqZLq&)+i^ zDI#&+#TpE>%lHw+)nlsJT4TsNIi)=1CvnBTD3z#2Jd*@qc*QN`C0Z zOC^kY8#lNvmV|XYfKR`wrX76qZvWL9c`(Q;k%fI%KC^Cdx@E*V1x1jv=Or#Tk@uPq zV;>Tn9(FEbguBM{qkdNelLj5FPFj-lvc|_KHXfL2!odh=GSH*VkZW8)_KcF4#tKol z?J?XE?31p=d3y+VV;b0t>iO^`mho??Fc6`OyZ@`8SpH#VrLmk!j1u|v{%`_X%46OM zBA;SG>)3$dxjR~F?QEOVN2QHNFb6wooCp_0dcndXAt}LFwH39r^$_+J5rmJzu@{CuG<@5RshrF?hKidGC!TISc)0yKgYOaq@8&PG~6- zYBPc{Bd~iL+-oPDBLl;rOfXQE5WE+- zZL3!>Fepv0tdv$Gkpz+FXL)3s9SUM!5c8vejo8j^H2}lyW@}s9n*h>C&WgAPfj~?F zyZyJh0NGymq&P(?V5Cf>)&lb`y>!5P-v`(V#ZTWI@+Yqs6G?=^M5=-&rT<%|aZ1V7 z1j+FD@b8rsvsWQQN2doHy<{NH)4jSRAUR;NRH|uWLU^?`qHNy$Krpa|{;VynR53mH zT(Q{&&KzE&;vm_+7$@g*KO4Pd`3Wxi81NMWzatF5-~@ix80h!VcQFNeJN?J>A9I0g zplSfs4B!s(jf{q$T1SQ{kR4$sI^&-jg8#|Uq-kwVzXqb@r3BWh2NP#lZE3wGFP0=>Y zd@?-VUUqA}$xOuyp1s`B88+m&~XX zUeKA&!Fpgwtq^U@n~iK(a+j5crZcLQR71;$2DW>7#B-zj86e6~084m5;M9`TSB8zUyk~avbrN>n>@|ArL~BJC@)O_CkKi5&MqpCo!yO5a(-} zGDYgttX?mho3!Ti6<*ob+*ej(G!Hzylvvgc_a6nh>=`|}JUx6(bz`|sd>fBUWlu@h zJX4_~f+&qo5yARiwQQb5_dQ;3xclEMbiVReKmt=>GcTslGB8AuhSSi zUkNLI@bpZ0%;5N$Fo)2V%&Q2LvV8Ae!-t0Gy1-8Lmyq(L@y}m{Uf6az;1I16V3AQM z%_EFgZUPb}v(j=Q; zGBXP7#c`_&64Wm4WA>Wc(~w1+r={t2pV=v+%8_WCXve(n7-xNe1B2ni+UHHBb^9h+ zO5XN}MNP|UA$Q}}WF*UlHp;@krk5_xO<6;I{R~?wZ3sBUTdH2yOK<#3NC0ognuRFS zn9jJHt0Q~z!)(NZa)dfYU#VWz``0zjix6B}kgIIe9WK-f`v?3c>B8g}na4;Km*`(D5L!#Z8p?<$W#J_sD7d=rXI z=EtJm96ql@HuGe?dlf}{1jOk?qW8hmGZvhGgBb^-Jj}Ge*FqN3qw~7>eEo1XcS|A9 zqyp^I^_K%@j3RuViB*|0U)EI2xe#%3N&@U(y6D7F&<}r8sY6w9d#pIFaHWYIDFnQ{ z7v+L8zL4bo0YC)X;FKGbr_39FpwyV%*U$L;gocEr^@#XYgnHCSGR_ai$iaU}{`_ei zmISr;=5hjh#juhy2Y+s@k1?wf&YNwsR1=Cux7$~#Ozj;Uwxp%?SllBT5pl60T}9frn%nq_K*}0ietyP|J)&Ft!)Th`dP0NB`4{=pdgS4( zaa;XVDR>7+a%dSCOq0addQd(p@7=RI(@ARNdC&(0COLR${2pJDr_TdE#V8;dl1n{0 z`+R0d9YH_oJM`hY{n}zmPfe`UGUWGkR+5XQIG3UumIoM4l4BOtE(c%!TM$6^48-Wd zu4t_7J)@V!-n@4`w&-1n8j4S1Tqgz?{eKGOx*vvWU%Q^He<7{3D!Ne4 z!-ib_d!%3@;k3^eFVjrd7xpXyGjl^YF+X-2Q~@zv5P$_i>(_zXw%|07P#@RR(=$({ zjzt|Qac$#GsIol)1P~xk@sGgG2l4Z>932~b^g$!0y}jKK$c7iqq_tl|dfQE}1Ehf$ zk#GQjY(VMCs;cHdtfC_ZAVt4<9@rJni-;}B z)!NvW5pODt4WN=Ed+NA>yvbfE&Hfya#AYz(`LZzb&Yo+Uw{SyLd1)=K>O!-9|6q2; zpW^0!GyvE^DMjp5@`fplLM*$aqLNSDm=T~yc3S{n0no{-nk$HSE=3Mw&bS${_tNzj zV5eAX3LriJ2(1vfu7yzs;s=FV0al$GfEMF5%ryZBI6zfZ6XUDeEs-X`3IdQVLWi>D z>`rC?h)x)<=;M}+z6AV}46Ukjvoe*McnhVK%1q2!N~)@=vcql89tIl5A*`^VU~&b2 zbQ>(pJXExeRCNezx0a%x1`=Q_w}Ly6tSW;H6c>Fy84{1lNd14p%ZNyUzHeXDy?;(l zuFmt?rg%TNPI(jS_!~3ca=b@x{xRIfOs8W#0EqvxW7uZB(g5F3oxVm6sWBm<>Iqoo zO-;%eKoiXDJJ{FurB^-S0?%@oBC(_4A7H>+?}zP+WlNzd20(-?M0EoGd|$O7hLLBc z+eZ#}Myev2H|kdHM8xoysR;RHnN`Ie=NT2-qDP?{&7Tg<`S_5?nMXlbxjG?Lil#6L~#Bk>m0Vzkm&K-cd)ZD8>;%Bl2Y! zC?I-%>13>+mFtgoWTaaJgc00i(#Z;3!uYx)MBbc-05=f(Z*l`6FMsE*$EUG`oq9RJ z^K89!;?&wxHQtHf@0pUYuEo<|d5}87f)#5g-^UmRbjey4$T4;%zqlL(5vhV^3VbgX zoXNUI8(SJQ>H&?eO#-YycX)dt>ZabmM+)qjd~oPqkS%}XZ{HECkWZK15VBh8dPnV_ zh}S%0t9I-XhCw@>i<{GNlfEZ0pcE~dtNCN`ko-jCu?^_%0uRgzA=sU#_iw~NBva=B zAV}McOdX#WOLP|iX1wX%!jQo`=Dt&klJ+}*>z;F`LHNrewb9yRPfs=4a9LvGLNt_` zwD0>fN3X*UKb^yVh1!=47FV)*fmIy4kNeWB19X;g)NySWR9C2@|CfFcCWVuO@Ofm< zG{og!Lh0-rBH=N~$87dy{)m`&ddT6c1W&&jwYz_X?8}!gcMyI%#H|d+9$EXHeiLuY(a5 z`&XE~B}rH*5~DLGhcD;{Ec?NJy~&*M0%c(j@)eF6Rb8j#6QwiGTcCg>hX%-vf1MYQ z7|;9p3OXChZ$EM1?0r{D)=-%%MzxLMB1NZyYXgE*S!DobV9^&P_g^vtlAo5^O5bX4 zKs0r;tTYgXLaAWAqiu0n_q&}v!U;~D!8PXRiPkRo8Cm(glv=y)yw%)x3;+sDQ2#n8 zSgGCt1#{#!E^k_5mDtlaijE`RyP}_t@}ZC8kR}h&(W);{-5%|gK%7oITu>nTs3OcNwHy>!F z;)D3E>&(#Zz9K5_EdM$7w+gw&JSvVXk3-4*uLcEkJ(+(31rA}5zb6N#fb}m%c$dko zmKq?|E0sC8(I^CvBKDO!W$A7{F`996waOlv6_>{F9}EgUf1yzc$d_yy`-KA8O0a^s zz|F%WYz;}92N8@*k$ny9h)ZXReH*gtMWzg$Cim-+}Z{b0X@V6f8Wfe@33;Rv#( zkcEY1q=q(Lk?;mDkmHNLY=)j%Wm=}xBj!hg@MGTRKIZ#36F_92)@kVKucW>ijDKP+ z$O-;wN`IC56SkT`8tN_Pry=I+eTQN;U*v3bR%O7PmPxyTCFU68@y1#nU+ag zIJp=99yV7+A15Ux*>}g!NMKz++VW8}2o8nTfkf*>gv6#?H15*g8SU9}m z)ZDELp5mKdn|oJlWS`=|l<#^CC(2ffPskVLhiJntW1+~4U`7paYr!W>F82LCpJzJ0 zuM#|6x+Rg%BbM#MyI^RXO{t7LEE_LAoIt&ccw6P$yau=M_lB)5{|d{do_%0_`eG1O z>BX@CJTkaE2Xf6dK-pv=sTVfa z$s9tOT^4JD&04O0)r?#d!;Tno_+ogD=NIboRPb%qwhZ$tsMP&m_UubpIyuVszvl6` z7T@jW?0jE|z&7oz1h$30RkNu+qHcQEEXo2~y&!v`|A^;6 z6MKhXazR9gKw6D4!aT*4W?P%2N?6)}m8MCLk2#OyXb4Z2@$hqG{>_3!&f;P$=9Vz8 zVkK?hN``T(P*~Sn)q%yy>sLSULf7krUT3iqTKOg_!mod?@Nu87nZ=T;VhM6xVOi@0 zBVccf&ymZS6+P%@o4qJB7$JJS*3~=3awh6r2+y#~z!A^zGEBxbc4PeoqRY!ls8Z|6 z`r0Q*Tl-a&&@K*2v5cf3Zg?5%l3b}X-3x{DUHOpD_YeufQlhJjl_$cs21f(X+r-L0 z6WNve%CDX7N-yewZa8vYaSe$gT!uIOx74L z2p!^ow!pg8=|jW~N6hzsJr-OBRXNKx>E}6hd2?_tr5qTq+gMi`(43T1*z5`$g?l}v zPQI%V#%{I;>23SYP#59-|DGf!-_zab43FEN{ofc;vOw$dYV|PwsUH18y(>mq1sb=X F{vVC?Unc+n literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_ValueOptionsEngineering1.png b/docs/source/Plugin/P159_ValueOptionsEngineering1.png new file mode 100644 index 0000000000000000000000000000000000000000..d45f280ad8ae6eec784b7eaeda2332fff3953406 GIT binary patch literal 97790 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 Hu0mjfpC7z4 literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_ValueOptionsEngineering2.png b/docs/source/Plugin/P159_ValueOptionsEngineering2.png new file mode 100644 index 0000000000000000000000000000000000000000..4212f115b78e08f57dedd9c7b0035823d8802ea5 GIT binary patch literal 51214 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%0A^IUuY{akQ8u~+R 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 TgIV+d(3hN)l4Qk4!{Gk~Md&CS literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_ValueOptionsStandard.png b/docs/source/Plugin/P159_ValueOptionsStandard.png new file mode 100644 index 0000000000000000000000000000000000000000..543ce77f20e3ba709e1fb374cbe0c2ab5a7e3e23 GIT binary patch literal 29812 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 H3i@9FPwI_O literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_commands.repl b/docs/source/Plugin/P159_commands.repl new file mode 100644 index 0000000000..2d97e4ce34 --- /dev/null +++ b/docs/source/Plugin/P159_commands.repl @@ -0,0 +1,14 @@ +.. csv-table:: + :header: "Command Syntax", "Extra information" + :widths: 20, 30 + + " + ``ld2410,factoryreset`` + "," + Sending this command to the task and a sensor is connected, then the sensor will be reset to the factory default settings, and restarted. There are no questions asked or extra arguments to provide. Use with caution of you have carefully configured, f.e. the sensitivity settings. + " + " + ``ld2410,logall`` + "," + This command will send all available sensor values (see below) to the log at INFO level. This can be viewed via an USB serial connection, when the Serial console is enabled, or via another log view, like the Tools/Log page. The minimum log level has to be set to INFO for the values to be shown. + " diff --git a/docs/source/Plugin/P159_config_values.repl b/docs/source/Plugin/P159_config_values.repl new file mode 100644 index 0000000000..82ae3edf72 --- /dev/null +++ b/docs/source/Plugin/P159_config_values.repl @@ -0,0 +1,74 @@ +.. csv-table:: + :header: "Config value", "Information" + :widths: 20, 30 + + " + ``[#Presence]`` + "," + Returns the currently reported Presence state, 0 (no presence) or 1 (presence detected) + " + " + ``[#StatPres]`` + "," + Returns the currently reported Stationary Presence state, 0 (no presence) or 1 (presence detected) + " + " + ``[#MovPres]`` + "," + Returns the currently reported Moving Presence state, 0 (no presence) or 1 (presence detected) + " + " + ``[#Distance]`` + "," + Returns the distance of the detected object from the sensor, in cm. + " + " + ``[#StatDist]`` + "," + Returns the distance of the detected Stationary object from the sensor, in cm. + " + " + ``[#MovDist]`` + "," + Returns the distance of the detected Moving object from the sensor, in cm. + " + " + ``[#StatEnergy]`` + "," + Returns the energy level of the detected Stationary object from the sensor, unknown unit, range 0..100. + " + " + ``[#MovEnergy]`` + "," + Returns the energy level of the detected Moving object from the sensor, unknown unit, range 0..100. + " + " + ``[#AmbLight]`` + "," + Returns the level of the ambient light, when available, unknown unit, range 0..255. + " + " + ``[#OutputPin]`` + "," + Returns the currently reported Output pin state, 0 (no presence) or 1 (presence detected) + " + " + ``[#StatEnergyGate0..8]`` + "," + Returns the energy level of the Stationary object per gate 0..8, unknown unit, value range 0..100. + " + " + ``[#MovEnergyGate0..8]`` + "," + Returns the energy level of the Moving object per gate 0..8, unknown unit, value range 0..100. + " + " + ``[#StatSensGate0..8]`` + "," + Returns the configured sensitivity level of the Stationary object per gate 0..8, unknown unit, value range 0..100. + " + " + ``[#MovSensGate0..8]`` + "," + Returns the configured sensitivity level of the Moving object per gate 0..8, unknown unit, value range 0..100. + " diff --git a/docs/source/Plugin/P159_ld2410b.png b/docs/source/Plugin/P159_ld2410b.png new file mode 100644 index 0000000000000000000000000000000000000000..c6372da93b3f54f09563590663af9d94e2a4eda2 GIT binary patch literal 128440 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

*45R9eiEhxw3Er>9 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≻~3KV^WyEI_~qX_W+n!5g|4bg0XGlV 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 nA95s^l7Gf0K Date: Wed, 15 Nov 2023 20:42:24 +0100 Subject: [PATCH 18/19] [P159] Update EasyColorMirror --- static/espeasy.js | 2 ++ static/espeasy.min.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/static/espeasy.js b/static/espeasy.js index 0484333552..86bcbafd72 100644 --- a/static/espeasy.js +++ b/static/espeasy.js @@ -104,6 +104,8 @@ var commonPlugins = [ "dac", "dac,1", "dac,2", //P153 "sht4x", "sht4x,startup", + //P159 + "ld2410", "ld2410,factoryreset", "ld2410,logall", ]; var pluginDispKind = [ //P095 diff --git a/static/espeasy.min.js b/static/espeasy.min.js index b625acaf21..04ce088c40 100644 --- a/static/espeasy.min.js +++ b/static/espeasy.min.js @@ -1 +1 @@ -var rEdit,commonAtoms=["And","Or"],commonKeywords=["If","Else","Elseif","Endif"],commonCommands=["AccessInfo","Background","Build","ClearAccessBlock","ClearRTCam","Config","ControllerDisable","ControllerEnable","DateTime","Debug","Dec","DeepSleep","DisablePriorityTask","DNS","DST","EraseSDKWiFi","ExecuteRules","Gateway","I2Cscanner","Inc","IP","Let","Load","LogEntry","LogPortStatus","LoopTimerSet","LoopTimerSet_ms","MemInfo","MemInfoDetail","Name","Password","PostToHTTP","Publish","Reboot","Reset","Save","SendTo","SendToHTTP","SendToUDP","Settings","Subnet","Subscribe","TaskClear","TaskClearAll","TaskDisable","TaskEnable","TaskRun","TaskValueSet","TaskValueSetAndRun","TimerPause","TimerResume","TimerSet","TimerSet_ms","TimeZone","UdpPort","UdpTest","Unit","UseNTP","WdConfig","WdRead","WiFi","WiFiAPkey","WiFiAllowAP","WiFiAPMode","WiFiConnect","WiFiDisconnect","WiFiKey","WiFiKey2","WiFiScan","WiFiSSID","WiFiSSID2","WiFiSTAMode","WiFi#Disconnected","Event","AsyncEvent","GPIO","GPIOToggle","LongPulse","LongPulse_mS","Monitor","Pulse","PWM","Servo","Status","Tone","RTTTL","UnMonitor",],commonString2=["Clock#Time","Login#Failed","MQTT#Connected","MQTT#Disconnected","MQTTimport#Connected","MQTTimport#Disconnected","Rules#Timer","System#Boot","System#BootMode","System#Sleep","System#Wake","TaskExit#","TaskInit#","Time#Initialized","Time#Set","WiFi#APmodeDisabled","WiFi#APmodeEnabled","WiFi#ChangedAccesspoint","WiFi#ChangedWiFichannel","WiFi#Connected"],commonPlugins=["ResetPulseCounter","SetPulseCounterTotal","LogPulseStatistic","analogout","MCPGPIO","MCPGPIOToggle","MCPLongPulse","MCPLongPulse_ms","MCPPulse","Status,MCP","Monitor,MCP","MonitorRange,MCP","UnMonitorRange,MCP","UnMonitor,MCP","MCPGPIORange","MCPGPIOPattern","MCPMode","MCPModeRange","LCDCmd","LCD","PCFGPIO","PCFGPIOToggle","PCFLongPulse","PCFLongPulse_ms","PCFPulse","Status,PCF","Monitor,PCF","MonitorRange,PCF","UnMonitorRange,PCF","UnMonitor,PCF","PCFGPIORange","PCFGPIOpattern","PCFMode","PCFmodeRange","pcapwm","pcafrq","mode2","OLED","OLEDCMD","OLEDCMD,on","OLEDCMD,off","OLEDCMD,clear","IRSEND","IRSENDAC","OledFramedCmd","OledFramedCmd,Display","OledFramedCmd,low","OledFramedCmd,med","OledFramedCmd,high","OledFramedCmd,Frame","OledFramedCmd,linecount","OledFramedCmd,leftalign","OledFramedCmd,align","OledFramedCmd,userDef1","OledFramedCmd,userDef2","NeoPixel","NeoPixelAll","NeoPixelLine","NeoPixelHSV","NeoPixelAllHSV","NeoPixelLineHSV","NeoPixelBright","MotorShieldCmd,DCMotor","MotorShieldCmd,Stepper","Sensair_SetRelay","PMSX003","PMSX003,Wake","PMSX003,Sleep","PMSX003,Reset","encwrite","Play","Vol","Eq","Mode","Repeat","tareChanA","tareChanB","7dn","7dst","7dsd","7dtext","7ddt","7dt","7dtfont","7dtbin","7don","7doff","7output","HLWCalibrate","HLWReset","WemosMotorShieldCMD","LolinMotorShieldCMD","GPS","GPS,Sleep","GPS,Wake","GPS#GotFix","GPS#LostFix","GPS#Travelled","homieValueSet","HeatPumpir","MitsubishiHP","MitsubishiHP,temperature","MitsubishiHP,power","MitsubishiHP,mode","MitsubishiHP,fan","MitsubishiHP,vane","MitsubishiHP,widevane","Culreader_Write","Touch","Touch,Rot","Touch,Flip","Touch,Enable","Touch,Disable","Touch,On","Touch,Off","Touch,Toggle","Touch,Setgrp","Touch,Incgrp","Touch,Decgrp","Touch,Incpage","Touch,Decpage","Touch,Updatebutton","WakeOnLan","DotMatrix","DotMatrix,clear","DotMatrix,update","DotMatrix,size","DotMatrix,txt","DotMatrix,settxt","DotMatrix,content","DotMatrix,alignment","DotMatrix,anim.in","DotMatrix,anim.out","DotMatrix,speed","DotMatrix,pause","DotMatrix,font","DotMatrix,layout","DotMatrix,inverted","DotMatrix,specialeffect","DotMatrix,offset","DotMatrix,brightness","DotMatrix,repeat","DotMatrix,setbar","DotMatrix,bar","Thermo","Thermo,Up","Thermo,Down","Thermo,Mode","Thermo,ModeBtn","Thermo,Setpoint","Max1704xclearalert","scdgetabc","scdgetalt","scdgettmp","scdsetcalibration","scdsetfrc","scdgetinterval","multirelay","multirelay,on","multirelay,off","multirelay,set","multirelay,get","multirelay,loop","ShiftOut","ShiftOut,Set","ShiftOut,SetNoUpdate","ShiftOut,Update","ShiftOut,SetAll","ShiftOut,SetAllNoUpdate","ShiftOut,SetAllLow","ShiftOut,SetAllHigh","ShiftOut,SetChipCount","ShiftOut,SetHexBin","cdmrst","nfx","nfx,off","nfx,on","nfx,dim","nfx,line,","nfx,hsvline,","nfx,one,","nfx,hsvone,","nfx,all,","nfx,rgb,","nfx,fade,","nfx,hsv,","nfx,colorfade,","nfx,rainbow","nfx,kitt,","nfx,comet,","nfx,theatre,","nfx,scan,","nfx,dualscan,","nfx,twinkle,","nfx,twinklefade,","nfx,sparkle,","nfx,wipe,","nfx,dualwipe","nfx,fire","nfx,fireflicker","nfx,faketv","nfx,simpleclock","nfx,stop","nfx,statusrequest","nfx,fadetime,","nfx,fadedelay,","nfx,speed,","nfx,count,","nfx,bgcolor","ShiftIn","ShiftIn,PinEvent","ShiftIn,ChipEvent","ShiftIn,SetChipCount","ShiftIn,SampleFrequency","ShiftIn,EventPerPin","scd4x","scd4x,storesettings","scd4x,facoryreset","scd4x,selftest","scd4x,setfrc,","axp","axp,ldo2","axp,ldo3","axp,ldoio","axp,gpio0","axp,gpio1","axp,gpio2","axp,gpio3","axp,gpio4","axp,dcdc2","axp,dcdc3","axp,ldo2map","axp,ldo3map","axp,ldoiomap","axp,dcdc2map","axp,dcdc3map","axp,ldo2perc","axp,ldo3perc","axp,ldoioperc","axp,dcdc2perc","axp,dcdc3perc","I2CEncoder","I2CEncoder,bright","I2CEncoder,led1","I2CEncoder,led2","I2CEncoder,gain","I2CEncoder,set","cachereader","cachereader,readpos","cachereader,sendtaskinfo","cachereader,flush","tm1621","tm1621,write,","tm1621,writerow,","tm1621,voltamp,","tm1621,energy,","tm1621,celcius,","tm1621,fahrenheit,","tm1621,humidity,","tm1621,raw,","dac","dac,1","dac,2","sht4x","sht4x,startup",],pluginDispKind=["tft","ili9341","ili9342","ili9481","ili9486","ili9488","eink","epaper","il3897","uc8151d","ssd1680","ws2in7","ws1in54","st77xx","st7735","st7789","st7796","neomatrix","neo","pcd8544",],pluginDispCmd=["cmd,on","cmd,off","cmd,clear","cmd,backlight","cmd,bright","cmd,deepsleep","cmd,seq_start","cmd,seq_end","cmd,inv","cmd,rot",",clear",",rot",",tpm",",txt",",txp",",txz",",txc",",txs",",txtfull",",asciitable",",font",",l",",lh",",lv",",lm",",lmr",",r",",rf",",c",",cf",",rf",",t",",tf",",rr",",rrf",",px",",pxh",",pxv",",bmp",",btn"],commonTag=["On","Do","Endon"],commonNumber=["toBin","toHex","Constrain","XOR","AND:","OR:","Ord","bitRead","bitSet","bitClear","bitWrite","urlencode"],commonMath=["Log","Ln","Abs","Exp","Sqrt","Sq","Round","Sin","Cos","Tan","aSin","aCos","aTan","Sin_d","Cos_d","Tan_d","aSin_d","aCos_d","aTan_d"],commonWarning=["delay","Delay","ResetFlashWriteCounter"],taskSpecifics=["settings.Enabled","settings.Interval","settings.ValueCount","settings.Controller1.Enabled","settings.Controller2.Enabled","settings.Controller3.Enabled","settings.Controller1.Idx","settings.Controller2.Idx","settings.Controller3.Idx"],AnythingElse=["%eventvalue%","%eventpar%","%eventname%","substring","%sysname%","%bootcause%","%systime%","%systm_hm%","%systm_hm_0%","%systm_hm_sp%","%systime_am%","%systime_am_0%","%systime_am_sp%","%systm_hm_am%","%systm_hm_am_0%","%systm_hm_am_sp%","%lcltime%","%sunrise%","%s_sunrise%","%m_sunrise%","%sunset%","%s_sunset%","%m_sunset%","%lcltime_am%","%syshour%","%syshour_0%","%sysmin%","%sysmin_0%","%syssec%","%syssec_0%","%sysday%","%sysday_0%","%sysmonth%","%sysmonth_0%","%sysyear%","%sysyear_0%","%sysyears%","%sysweekday%","%sysweekday_s%","%unixtime%","%uptime%","%uptime_ms%","%rssi%","%ip%","%unit%","%ssid%","%bssid%","%wi_ch%","%iswifi%","%vcc%","%mac%","%mac_int%","%isntp%","%ismqtt%","%dns%","%dns1%","%dns2%","%flash_freq%","%flash_size%","%flash_chip_vendor%","%flash_chip_model%","%fs_free%","%fs_size%","%cpu_id%","%cpu_freq%","%cpu_model%","%cpu_rev%","%cpu_cores%","%board_name%","%c_w_dir%","%c_c2f%","%c_ms2Bft%","%c_dew_th%","%c_alt_pres_sea%","%c_sea_pres_alt%","%c_cm2imp%","%c_mm2imp%","%c_m2day%","%c_m2dh%","%c_m2dhm%","%c_s2dhms%","%c_2hex%","%c_u2ip%","var","int"];for(const element2 of pluginDispKind)commonPlugins=commonPlugins.concat(element2);for(const element2 of pluginDispKind)for(const element3 of pluginDispCmd){let e=element2+element3;commonPlugins=commonPlugins.concat(e)}var EXTRAWORDS=commonAtoms.concat(commonPlugins,commonKeywords,commonCommands,commonString2,commonTag,commonNumber,commonMath,commonWarning,taskSpecifics,AnythingElse);function initCM(){CodeMirror.commands.autocomplete=function(e){e.showHint({hint:CodeMirror.hint.anyword})},(rEdit=CodeMirror.fromTextArea(document.getElementById("rules"),{tabSize:2,indentWithTabs:!1,lineNumbers:!0,autoCloseBrackets:!0,extraKeys:{"Ctrl-Space":"autocomplete",Tab(e){"null"===e.getMode().name?e.execCommand("insertTab"):e.somethingSelected()?e.execCommand("indentMore"):e.execCommand("insertSoftTab")},"Shift-Tab":e=>e.execCommand("indentLess")}})).on("change",function(){rEdit.save()}),rEdit.on("inputRead",function(e,t){var n=e.getCursor(),o=e.getTokenAt(n);/[\w%,.]/.test(t.text)&&"comment"!=o.type&&e.showHint({completeSingle:!1})})}!function(e){"object"==typeof exports&&"object"==typeof module?e(require("codemirror")):"function"==typeof define&&define.amd?define(["codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("espeasy",function(){var e={};function t(t,n){for(var o=0;oe.toLowerCase());commonCommands=commonCommands.concat(n);var o=commonString2.map(e=>e.toLowerCase());commonString2=commonString2.concat(o);var i=commonPlugins.map(e=>e.toLowerCase());commonPlugins=commonPlugins.concat(i);var a=commonAtoms.map(e=>e.toLowerCase());commonAtoms=commonAtoms.concat(a);var r=commonKeywords.map(e=>e.toLowerCase());commonKeywords=commonKeywords.concat(r);var s=commonTag.map(e=>e.toLowerCase());commonTag=commonTag.concat(s);var c=commonNumber.map(e=>e.toLowerCase());commonNumber=commonNumber.concat(c);var m=commonMath.map(e=>e.toLowerCase());commonMath=commonMath.concat(m);var l=AnythingElse.map(e=>e.toLowerCase());AnythingElse=AnythingElse.concat(l);var d=taskSpecifics.map(e=>e.toLowerCase());function u(t,n){if(t.eatSpace())return null;t.sol();var o=t.next();if(/\d/.test(o)){if("0"==o)return"x"===t.next()?(t.eatWhile(/\w/),"number"):(t.eatWhile(/\d|\./),"number");if(t.eatWhile(/\d|\./),!t.match("d")&&!t.match("output")&&(t.eol()||/\D/.test(t.peek())))return"number"}if(/\w/.test(o))for(let i of EXTRAWORDS){let a=i.substring(1);(i.includes(":")||i.includes(",")||i.includes("."))&&t.match(a)}if(/\w/.test(o)&&(t.eatWhile(/[\w]/),t.match(".gpio")||t.match(".pulse")||t.match(".frq")||t.match(".pwm")))return"def";if("\\"===o)return t.next(),null;if("("===o||")"===o)return"bracket";if("{"===o||"}"===o||":"===o)return"number";if("/"==o)return/\//.test(t.peek())?(t.skipToEnd(),"comment"):"operator";if("'"==o&&(t.eatWhile(/[^']/),t.match("'")))return"attribute";if("+"===o||"="===o||"<"===o||">"===o||"-"===o||","===o||"*"===o||"!"===o)return"operator";if("%"==o){if(/\d/.test(t.next()))return"number";if(t.eatWhile(/[^\s\%]/),t.match("%"))return"hr"}if("["==o&&(t.eatWhile(/[^\s\]]/),t.eat("]")))return"hr";t.eatWhile(/\w/);var r=t.current();return/\w/.test(o)&&t.match("#")?(t.eatWhile(/[\w.#]/),"string-2"):"#"===o?(t.eatWhile(/\w/),"number"):e.hasOwnProperty(r)?e[r]:null}return taskSpecifics=taskSpecifics.concat(d),t("atom",commonAtoms),t("keyword",commonKeywords),t("builtin",commonCommands),t("string-2",commonString2),t("def",commonPlugins),t("tag",commonTag),t("number",commonNumber),t("bracket",commonMath),t("warning",commonWarning),t("hr",AnythingElse),t("comment",taskSpecifics),{startState:function(){return{tokens:[]}},token:function(e,t){var n,o;return n=e,((o=t).tokens[0]||u)(n,o)},closeBrackets:"[]{}''\"\"``()",lineComment:"//",fold:"brace"}})}),function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],mod):e(CodeMirror)}(function(e){var t={pairs:"()[]{}''\"\"",closeBefore:")]}'\":;>",triples:"",explode:"[]{}"},n=e.Pos;function o(e,n){return"pairs"==n&&"string"==typeof e?e:"object"==typeof e&&null!=e[n]?e[n]:t[n]}e.defineOption("autoCloseBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.removeKeyMap(i),t.state.closeBrackets=null),n&&(a(o(n,"pairs")),t.state.closeBrackets=n,t.addKeyMap(i))});var i={Backspace:function t(i){var a=s(i);if(!a||i.getOption("disableInput"))return e.Pass;for(var r=o(a,"pairs"),c=i.listSelections(),m=0;m=0;m--){var u=c[m].head;i.replaceRange("",n(u.line,u.ch-1),n(u.line,u.ch+1),"+delete")}},Enter:function t(n){var i=s(n),a=i&&o(i,"explode");if(!a||n.getOption("disableInput"))return e.Pass;for(var r=n.listSelections(),m=0;m=0&&i.getRange(y,n(y.line,y.ch+3))==a+a+a?"skipThree":"skip";else if(h&&y.ch>1&&p.indexOf(a)>=0&&i.getRange(n(y.line,y.ch-2),y)==a+a){if(y.ch>2&&/\bstring/.test(i.getTokenTypeAt(n(y.line,y.ch-2))))return e.Pass;P="addFour"}else if(h){var b=0==y.ch?" ":i.getRange(n(y.line,y.ch-1),y);if(e.isWordChar(M)||b==a||e.isWordChar(b))return e.Pass;P="both"}else{if(!(x&&(0===M.length||/\s/.test(M)||f.indexOf(M)>-1)))return e.Pass;P="both"}if(C){if(C!=P)return e.Pass}else C=P}var v=u%2?l.charAt(u-1):a,D=u%2?a:l.charAt(u+1);i.operation(function(){if("skip"==C)c(i,1);else if("skipThree"==C)c(i,3);else if("surround"==C){for(var e=i.getSelections(),t=0;t0?{line:r.head.line,ch:r.head.ch+t}:{line:r.head.line-1};n.push({anchor:s,head:s})}e.setSelections(n,i)}function m(t){var o=e.cmpPos(t.anchor,t.head)>0;return{anchor:new n(t.anchor.line,t.anchor.ch+(o?-1:1)),head:new n(t.head.line,t.head.ch+(o?1:-1))}}function l(e,t){var o=e.getRange(n(t.line,t.ch-1),n(t.line,t.ch+1));return 2==o.length?o:null}function d(e,t){var o=e.getTokenAt(n(t.line,t.ch+1));return/\bstring/.test(o.type)&&o.start==t.ch&&(0==t.ch||!/\bstring/.test(e.getTokenTypeAt(t)))}a(t.pairs+"`")}); \ No newline at end of file +var rEdit,commonAtoms=["And","Or"],commonKeywords=["If","Else","Elseif","Endif"],commonCommands=["AccessInfo","Background","Build","ClearAccessBlock","ClearRTCam","Config","ControllerDisable","ControllerEnable","DateTime","Debug","Dec","DeepSleep","DisablePriorityTask","DNS","DST","EraseSDKWiFi","ExecuteRules","Gateway","I2Cscanner","Inc","IP","Let","Load","LogEntry","LogPortStatus","LoopTimerSet","LoopTimerSet_ms","MemInfo","MemInfoDetail","Name","Password","PostToHTTP","Publish","Reboot","Reset","Save","SendTo","SendToHTTP","SendToUDP","Settings","Subnet","Subscribe","TaskClear","TaskClearAll","TaskDisable","TaskEnable","TaskRun","TaskValueSet","TaskValueSetAndRun","TimerPause","TimerResume","TimerSet","TimerSet_ms","TimeZone","UdpPort","UdpTest","Unit","UseNTP","WdConfig","WdRead","WiFi","WiFiAPkey","WiFiAllowAP","WiFiAPMode","WiFiConnect","WiFiDisconnect","WiFiKey","WiFiKey2","WiFiScan","WiFiSSID","WiFiSSID2","WiFiSTAMode","WiFi#Disconnected","Event","AsyncEvent","GPIO","GPIOToggle","LongPulse","LongPulse_mS","Monitor","Pulse","PWM","Servo","Status","Tone","RTTTL","UnMonitor",],commonString2=["Clock#Time","Login#Failed","MQTT#Connected","MQTT#Disconnected","MQTTimport#Connected","MQTTimport#Disconnected","Rules#Timer","System#Boot","System#BootMode","System#Sleep","System#Wake","TaskExit#","TaskInit#","Time#Initialized","Time#Set","WiFi#APmodeDisabled","WiFi#APmodeEnabled","WiFi#ChangedAccesspoint","WiFi#ChangedWiFichannel","WiFi#Connected"],commonPlugins=["ResetPulseCounter","SetPulseCounterTotal","LogPulseStatistic","analogout","MCPGPIO","MCPGPIOToggle","MCPLongPulse","MCPLongPulse_ms","MCPPulse","Status,MCP","Monitor,MCP","MonitorRange,MCP","UnMonitorRange,MCP","UnMonitor,MCP","MCPGPIORange","MCPGPIOPattern","MCPMode","MCPModeRange","LCDCmd","LCD","PCFGPIO","PCFGPIOToggle","PCFLongPulse","PCFLongPulse_ms","PCFPulse","Status,PCF","Monitor,PCF","MonitorRange,PCF","UnMonitorRange,PCF","UnMonitor,PCF","PCFGPIORange","PCFGPIOpattern","PCFMode","PCFmodeRange","pcapwm","pcafrq","mode2","OLED","OLEDCMD","OLEDCMD,on","OLEDCMD,off","OLEDCMD,clear","IRSEND","IRSENDAC","OledFramedCmd","OledFramedCmd,Display","OledFramedCmd,low","OledFramedCmd,med","OledFramedCmd,high","OledFramedCmd,Frame","OledFramedCmd,linecount","OledFramedCmd,leftalign","OledFramedCmd,align","OledFramedCmd,userDef1","OledFramedCmd,userDef2","NeoPixel","NeoPixelAll","NeoPixelLine","NeoPixelHSV","NeoPixelAllHSV","NeoPixelLineHSV","NeoPixelBright","MotorShieldCmd,DCMotor","MotorShieldCmd,Stepper","Sensair_SetRelay","PMSX003","PMSX003,Wake","PMSX003,Sleep","PMSX003,Reset","encwrite","Play","Vol","Eq","Mode","Repeat","tareChanA","tareChanB","7dn","7dst","7dsd","7dtext","7ddt","7dt","7dtfont","7dtbin","7don","7doff","7output","HLWCalibrate","HLWReset","WemosMotorShieldCMD","LolinMotorShieldCMD","GPS","GPS,Sleep","GPS,Wake","GPS#GotFix","GPS#LostFix","GPS#Travelled","homieValueSet","HeatPumpir","MitsubishiHP","MitsubishiHP,temperature","MitsubishiHP,power","MitsubishiHP,mode","MitsubishiHP,fan","MitsubishiHP,vane","MitsubishiHP,widevane","Culreader_Write","Touch","Touch,Rot","Touch,Flip","Touch,Enable","Touch,Disable","Touch,On","Touch,Off","Touch,Toggle","Touch,Setgrp","Touch,Incgrp","Touch,Decgrp","Touch,Incpage","Touch,Decpage","Touch,Updatebutton","WakeOnLan","DotMatrix","DotMatrix,clear","DotMatrix,update","DotMatrix,size","DotMatrix,txt","DotMatrix,settxt","DotMatrix,content","DotMatrix,alignment","DotMatrix,anim.in","DotMatrix,anim.out","DotMatrix,speed","DotMatrix,pause","DotMatrix,font","DotMatrix,layout","DotMatrix,inverted","DotMatrix,specialeffect","DotMatrix,offset","DotMatrix,brightness","DotMatrix,repeat","DotMatrix,setbar","DotMatrix,bar","Thermo","Thermo,Up","Thermo,Down","Thermo,Mode","Thermo,ModeBtn","Thermo,Setpoint","Max1704xclearalert","scdgetabc","scdgetalt","scdgettmp","scdsetcalibration","scdsetfrc","scdgetinterval","multirelay","multirelay,on","multirelay,off","multirelay,set","multirelay,get","multirelay,loop","ShiftOut","ShiftOut,Set","ShiftOut,SetNoUpdate","ShiftOut,Update","ShiftOut,SetAll","ShiftOut,SetAllNoUpdate","ShiftOut,SetAllLow","ShiftOut,SetAllHigh","ShiftOut,SetChipCount","ShiftOut,SetHexBin","cdmrst","nfx","nfx,off","nfx,on","nfx,dim","nfx,line,","nfx,hsvline,","nfx,one,","nfx,hsvone,","nfx,all,","nfx,rgb,","nfx,fade,","nfx,hsv,","nfx,colorfade,","nfx,rainbow","nfx,kitt,","nfx,comet,","nfx,theatre,","nfx,scan,","nfx,dualscan,","nfx,twinkle,","nfx,twinklefade,","nfx,sparkle,","nfx,wipe,","nfx,dualwipe","nfx,fire","nfx,fireflicker","nfx,faketv","nfx,simpleclock","nfx,stop","nfx,statusrequest","nfx,fadetime,","nfx,fadedelay,","nfx,speed,","nfx,count,","nfx,bgcolor","ShiftIn","ShiftIn,PinEvent","ShiftIn,ChipEvent","ShiftIn,SetChipCount","ShiftIn,SampleFrequency","ShiftIn,EventPerPin","scd4x","scd4x,storesettings","scd4x,facoryreset","scd4x,selftest","scd4x,setfrc,","axp","axp,ldo2","axp,ldo3","axp,ldoio","axp,gpio0","axp,gpio1","axp,gpio2","axp,gpio3","axp,gpio4","axp,dcdc2","axp,dcdc3","axp,ldo2map","axp,ldo3map","axp,ldoiomap","axp,dcdc2map","axp,dcdc3map","axp,ldo2perc","axp,ldo3perc","axp,ldoioperc","axp,dcdc2perc","axp,dcdc3perc","I2CEncoder","I2CEncoder,bright","I2CEncoder,led1","I2CEncoder,led2","I2CEncoder,gain","I2CEncoder,set","cachereader","cachereader,readpos","cachereader,sendtaskinfo","cachereader,flush","tm1621","tm1621,write,","tm1621,writerow,","tm1621,voltamp,","tm1621,energy,","tm1621,celcius,","tm1621,fahrenheit,","tm1621,humidity,","tm1621,raw,","dac","dac,1","dac,2","sht4x","sht4x,startup","ld2410","ld2410,factoryreset","ld2410,logall",],pluginDispKind=["tft","ili9341","ili9342","ili9481","ili9486","ili9488","eink","epaper","il3897","uc8151d","ssd1680","ws2in7","ws1in54","st77xx","st7735","st7789","st7796","neomatrix","neo","pcd8544",],pluginDispCmd=["cmd,on","cmd,off","cmd,clear","cmd,backlight","cmd,bright","cmd,deepsleep","cmd,seq_start","cmd,seq_end","cmd,inv","cmd,rot",",clear",",rot",",tpm",",txt",",txp",",txz",",txc",",txs",",txtfull",",asciitable",",font",",l",",lh",",lv",",lm",",lmr",",r",",rf",",c",",cf",",rf",",t",",tf",",rr",",rrf",",px",",pxh",",pxv",",bmp",",btn"],commonTag=["On","Do","Endon"],commonNumber=["toBin","toHex","Constrain","XOR","AND:","OR:","Ord","bitRead","bitSet","bitClear","bitWrite","urlencode"],commonMath=["Log","Ln","Abs","Exp","Sqrt","Sq","Round","Sin","Cos","Tan","aSin","aCos","aTan","Sin_d","Cos_d","Tan_d","aSin_d","aCos_d","aTan_d"],commonWarning=["delay","Delay","ResetFlashWriteCounter"],taskSpecifics=["settings.Enabled","settings.Interval","settings.ValueCount","settings.Controller1.Enabled","settings.Controller2.Enabled","settings.Controller3.Enabled","settings.Controller1.Idx","settings.Controller2.Idx","settings.Controller3.Idx"],AnythingElse=["%eventvalue%","%eventpar%","%eventname%","substring","%sysname%","%bootcause%","%systime%","%systm_hm%","%systm_hm_0%","%systm_hm_sp%","%systime_am%","%systime_am_0%","%systime_am_sp%","%systm_hm_am%","%systm_hm_am_0%","%systm_hm_am_sp%","%lcltime%","%sunrise%","%s_sunrise%","%m_sunrise%","%sunset%","%s_sunset%","%m_sunset%","%lcltime_am%","%syshour%","%syshour_0%","%sysmin%","%sysmin_0%","%syssec%","%syssec_0%","%sysday%","%sysday_0%","%sysmonth%","%sysmonth_0%","%sysyear%","%sysyear_0%","%sysyears%","%sysweekday%","%sysweekday_s%","%unixtime%","%uptime%","%uptime_ms%","%rssi%","%ip%","%unit%","%ssid%","%bssid%","%wi_ch%","%iswifi%","%vcc%","%mac%","%mac_int%","%isntp%","%ismqtt%","%dns%","%dns1%","%dns2%","%flash_freq%","%flash_size%","%flash_chip_vendor%","%flash_chip_model%","%fs_free%","%fs_size%","%cpu_id%","%cpu_freq%","%cpu_model%","%cpu_rev%","%cpu_cores%","%board_name%","%c_w_dir%","%c_c2f%","%c_ms2Bft%","%c_dew_th%","%c_alt_pres_sea%","%c_sea_pres_alt%","%c_cm2imp%","%c_mm2imp%","%c_m2day%","%c_m2dh%","%c_m2dhm%","%c_s2dhms%","%c_2hex%","%c_u2ip%","var","int"];for(const element2 of pluginDispKind)commonPlugins=commonPlugins.concat(element2);for(const element2 of pluginDispKind)for(const element3 of pluginDispCmd){let e=element2+element3;commonPlugins=commonPlugins.concat(e)}var EXTRAWORDS=commonAtoms.concat(commonPlugins,commonKeywords,commonCommands,commonString2,commonTag,commonNumber,commonMath,commonWarning,taskSpecifics,AnythingElse);function initCM(){CodeMirror.commands.autocomplete=function(e){e.showHint({hint:CodeMirror.hint.anyword})},(rEdit=CodeMirror.fromTextArea(document.getElementById("rules"),{tabSize:2,indentWithTabs:!1,lineNumbers:!0,autoCloseBrackets:!0,extraKeys:{"Ctrl-Space":"autocomplete",Tab(e){"null"===e.getMode().name?e.execCommand("insertTab"):e.somethingSelected()?e.execCommand("indentMore"):e.execCommand("insertSoftTab")},"Shift-Tab":e=>e.execCommand("indentLess")}})).on("change",function(){rEdit.save()}),rEdit.on("inputRead",function(e,t){var n=e.getCursor(),o=e.getTokenAt(n);/[\w%,.]/.test(t.text)&&"comment"!=o.type&&e.showHint({completeSingle:!1})})}!function(e){"object"==typeof exports&&"object"==typeof module?e(require("codemirror")):"function"==typeof define&&define.amd?define(["codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("espeasy",function(){var e={};function t(t,n){for(var o=0;oe.toLowerCase());commonCommands=commonCommands.concat(n);var o=commonString2.map(e=>e.toLowerCase());commonString2=commonString2.concat(o);var i=commonPlugins.map(e=>e.toLowerCase());commonPlugins=commonPlugins.concat(i);var a=commonAtoms.map(e=>e.toLowerCase());commonAtoms=commonAtoms.concat(a);var r=commonKeywords.map(e=>e.toLowerCase());commonKeywords=commonKeywords.concat(r);var s=commonTag.map(e=>e.toLowerCase());commonTag=commonTag.concat(s);var c=commonNumber.map(e=>e.toLowerCase());commonNumber=commonNumber.concat(c);var l=commonMath.map(e=>e.toLowerCase());commonMath=commonMath.concat(l);var m=AnythingElse.map(e=>e.toLowerCase());AnythingElse=AnythingElse.concat(m);var d=taskSpecifics.map(e=>e.toLowerCase());function u(t,n){if(t.eatSpace())return null;t.sol();var o=t.next();if(/\d/.test(o)){if("0"==o)return"x"===t.next()?(t.eatWhile(/\w/),"number"):(t.eatWhile(/\d|\./),"number");if(t.eatWhile(/\d|\./),!t.match("d")&&!t.match("output")&&(t.eol()||/\D/.test(t.peek())))return"number"}if(/\w/.test(o))for(let i of EXTRAWORDS){let a=i.substring(1);(i.includes(":")||i.includes(",")||i.includes("."))&&t.match(a)}if(/\w/.test(o)&&(t.eatWhile(/[\w]/),t.match(".gpio")||t.match(".pulse")||t.match(".frq")||t.match(".pwm")))return"def";if("\\"===o)return t.next(),null;if("("===o||")"===o)return"bracket";if("{"===o||"}"===o||":"===o)return"number";if("/"==o)return/\//.test(t.peek())?(t.skipToEnd(),"comment"):"operator";if("'"==o&&(t.eatWhile(/[^']/),t.match("'")))return"attribute";if("+"===o||"="===o||"<"===o||">"===o||"-"===o||","===o||"*"===o||"!"===o)return"operator";if("%"==o){if(/\d/.test(t.next()))return"number";if(t.eatWhile(/[^\s\%]/),t.match("%"))return"hr"}if("["==o&&(t.eatWhile(/[^\s\]]/),t.eat("]")))return"hr";t.eatWhile(/\w/);var r=t.current();return/\w/.test(o)&&t.match("#")?(t.eatWhile(/[\w.#]/),"string-2"):"#"===o?(t.eatWhile(/\w/),"number"):e.hasOwnProperty(r)?e[r]:null}return taskSpecifics=taskSpecifics.concat(d),t("atom",commonAtoms),t("keyword",commonKeywords),t("builtin",commonCommands),t("string-2",commonString2),t("def",commonPlugins),t("tag",commonTag),t("number",commonNumber),t("bracket",commonMath),t("warning",commonWarning),t("hr",AnythingElse),t("comment",taskSpecifics),{startState:function(){return{tokens:[]}},token:function(e,t){var n,o;return n=e,((o=t).tokens[0]||u)(n,o)},closeBrackets:"[]{}''\"\"``()",lineComment:"//",fold:"brace"}})}),function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],mod):e(CodeMirror)}(function(e){var t={pairs:"()[]{}''\"\"",closeBefore:")]}'\":;>",triples:"",explode:"[]{}"},n=e.Pos;function o(e,n){return"pairs"==n&&"string"==typeof e?e:"object"==typeof e&&null!=e[n]?e[n]:t[n]}e.defineOption("autoCloseBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.removeKeyMap(i),t.state.closeBrackets=null),n&&(a(o(n,"pairs")),t.state.closeBrackets=n,t.addKeyMap(i))});var i={Backspace:function t(i){var a=s(i);if(!a||i.getOption("disableInput"))return e.Pass;for(var r=o(a,"pairs"),c=i.listSelections(),l=0;l=0;l--){var u=c[l].head;i.replaceRange("",n(u.line,u.ch-1),n(u.line,u.ch+1),"+delete")}},Enter:function t(n){var i=s(n),a=i&&o(i,"explode");if(!a||n.getOption("disableInput"))return e.Pass;for(var r=n.listSelections(),l=0;l=0&&i.getRange(y,n(y.line,y.ch+3))==a+a+a?"skipThree":"skip";else if(h&&y.ch>1&&p.indexOf(a)>=0&&i.getRange(n(y.line,y.ch-2),y)==a+a){if(y.ch>2&&/\bstring/.test(i.getTokenTypeAt(n(y.line,y.ch-2))))return e.Pass;P="addFour"}else if(h){var b=0==y.ch?" ":i.getRange(n(y.line,y.ch-1),y);if(e.isWordChar(M)||b==a||e.isWordChar(b))return e.Pass;P="both"}else{if(!(x&&(0===M.length||/\s/.test(M)||f.indexOf(M)>-1)))return e.Pass;P="both"}if(C){if(C!=P)return e.Pass}else C=P}var v=u%2?m.charAt(u-1):a,D=u%2?a:m.charAt(u+1);i.operation(function(){if("skip"==C)c(i,1);else if("skipThree"==C)c(i,3);else if("surround"==C){for(var e=i.getSelections(),t=0;t0?{line:r.head.line,ch:r.head.ch+t}:{line:r.head.line-1};n.push({anchor:s,head:s})}e.setSelections(n,i)}function l(t){var o=e.cmpPos(t.anchor,t.head)>0;return{anchor:new n(t.anchor.line,t.anchor.ch+(o?-1:1)),head:new n(t.head.line,t.head.ch+(o?1:-1))}}function m(e,t){var o=e.getRange(n(t.line,t.ch-1),n(t.line,t.ch+1));return 2==o.length?o:null}function d(e,t){var o=e.getTokenAt(n(t.line,t.ch+1));return/\bstring/.test(o.type)&&o.start==t.ch&&(0==t.ch||!/\bstring/.test(e.getTokenTypeAt(t)))}a(t.pairs+"`")}); \ No newline at end of file From 30f0cb3da8b03e0ca44fbd3f00e0002e64756404 Mon Sep 17 00:00:00 2001 From: Ton Huisman Date: Wed, 15 Nov 2023 20:43:48 +0100 Subject: [PATCH 19/19] [P159] Update comments to explicitly name LD2410 --- src/Custom-sample.h | 2 +- src/src/CustomBuild/define_plugin_sets.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Custom-sample.h b/src/Custom-sample.h index 93675bc71b..22ebbc7142 100644 --- a/src/Custom-sample.h +++ b/src/Custom-sample.h @@ -522,7 +522,7 @@ static const char DATA_ESPEASY_DEFAULT_MIN_CSS[] PROGMEM = { // #define USES_P153 // SHT4x // #define USES_P154 // BMP3xx -// #define USES_P159 // Presence - LD24x0 Radar detection +// #define USES_P159 // Presence - LD2410 Radar detection /* ####################################################################################################### diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index a7d5601a16..e024e90499 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -1607,7 +1607,7 @@ To create/register a plugin, you have to : #define USES_P154 // Environment - BMP3xx #endif #ifndef USES_P159 - #define USES_P159 // Presence - LD24x0 Radar detection + #define USES_P159 // Presence - LD2410 Radar detection #endif #endif @@ -2280,7 +2280,7 @@ To create/register a plugin, you have to : #define USES_P154 // Environment - BMP3xx #endif #ifndef USES_P159 - #define USES_P159 // Presence - LD24x0 Radar detection + #define USES_P159 // Presence - LD2410 Radar detection #endif // Controllers

e#zHC&_k-^29y%@i4a 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 JO2#<&{{TOz;G6&e literal 0 HcmV?d00001 diff --git a/docs/source/Plugin/P159_ld2410c.png b/docs/source/Plugin/P159_ld2410c.png new file mode 100644 index 0000000000000000000000000000000000000000..81d51a523694a9a6f1ccd910af247a39de9ccdf3 GIT binary patch literal 239960 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≶=>8(@LF~Ca*>eIh6?n!W2yd(z&#v(Fe0X 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