diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4026deb..a053cba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,5 +2,9 @@
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
+# (Not part of the boilerplate)
+# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
+
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
-project(mesh_ota)
+project(https-mbedtls)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index e142a52..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,625 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-
-Version 3, 29 June 2007
-
-Copyright © 2007 Free Software Foundation, Inc.
-
-Everyone is permitted to copy and distribute verbatim copies of this license
-document, but changing it is not allowed.
-
-Preamble
-
-The GNU General Public License is a free, copyleft license for software and
-other kinds of works.
-
-The licenses for most software and other practical works are designed to take
-away your freedom to share and change the works. By contrast, the GNU General
-Public License is intended to guarantee your freedom to share and change all
-versions of a program--to make sure it remains free software for all its users.
-We, the Free Software Foundation, use the GNU General Public License for most
-of our software; it applies also to any other work released this way by its
-authors. You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, 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 them if you wish), that
-you receive source code or can get it if you want it, that you can change
-the software or use pieces of it in new free programs, and that you know you
-can do these things.
-
-To protect your rights, we need to prevent others from denying you these rights
-or asking you to surrender the rights. Therefore, you have certain responsibilities
-if you distribute copies of the software, or if you modify it: responsibilities
-to respect the freedom of others.
-
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must pass on to the recipients the same freedoms that you received.
-You must make sure that they, too, receive or can get the source code. And
-you must show them these terms so they know their rights.
-
-Developers that use the GNU GPL protect your rights with two steps: (1) assert
-copyright on the software, and (2) offer you this License giving you legal
-permission to copy, distribute and/or modify it.
-
-For the developers' and authors' protection, the GPL clearly explains that
-there is no warranty for this free software. For both users' and authors'
-sake, the GPL requires that modified versions be marked as changed, so that
-their problems will not be attributed erroneously to authors of previous versions.
-
-Some devices are designed to deny users access to install or run modified
-versions of the software inside them, although the manufacturer can do so.
-This is fundamentally incompatible with the aim of protecting users' freedom
-to change the software. The systematic pattern of such abuse occurs in the
-area of products for individuals to use, which is precisely where it is most
-unacceptable. Therefore, we have designed this version of the GPL to prohibit
-the practice for those products. If such problems arise substantially in other
-domains, we stand ready to extend this provision to those domains in future
-versions of the GPL, as needed to protect the freedom of users.
-
-Finally, every program is threatened constantly by software patents. States
-should not allow patents to restrict development and use of software on general-purpose
-computers, but in those that do, we wish to avoid the special danger that
-patents applied to a free program could make it effectively proprietary. To
-prevent this, the GPL assures that patents cannot be used to render the program
-non-free.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
-"Copyright" also means copyright-like laws that apply to other kinds of works,
-such as semiconductor masks.
-
-"The Program" refers to any copyrightable work licensed under this License.
-Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
-or organizations.
-
-To "modify" a work means to copy from or adapt all or part of the work in
-a fashion requiring copyright permission, other than the making of an exact
-copy. The resulting work is called a "modified version" of the earlier work
-or a work "based on" the earlier work.
-
-A "covered work" means either the unmodified Program or a work based on the
-Program.
-
-To "propagate" a work means to do anything with it that, without permission,
-would make you directly or secondarily liable for infringement under applicable
-copyright law, except executing it on a computer or modifying a private copy.
-Propagation includes copying, distribution (with or without modification),
-making available to the public, and in some countries other activities as
-well.
-
-To "convey" a work means any kind of propagation that enables other parties
-to make or receive copies. Mere interaction with a user through a computer
-network, with no transfer of a copy, is not conveying.
-
-An interactive user interface displays "Appropriate Legal Notices" to the
-extent that it includes a convenient and prominently visible feature that
-(1) displays an appropriate copyright notice, and (2) tells the user that
-there is no warranty for the work (except to the extent that warranties are
-provided), that licensees may convey the work under this License, and how
-to view a copy of this License. If the interface presents a list of user commands
-or options, such as a menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
-The "source code" for a work means the preferred form of the work for making
-modifications to it. "Object code" means any non-source form of a work.
-
-A "Standard Interface" means an interface that either is an official standard
-defined by a recognized standards body, or, in the case of interfaces specified
-for a particular programming language, one that is widely used among developers
-working in that language.
-
-The "System Libraries" of an executable work include anything, other than
-the work as a whole, that (a) is included in the normal form of packaging
-a Major Component, but which is not part of that Major Component, and (b)
-serves only to enable use of the work with that Major Component, or to implement
-a Standard Interface for which an implementation is available to the public
-in source code form. A "Major Component", in this context, means a major essential
-component (kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to produce
-the work, or an object code interpreter used to run it.
-
-The "Corresponding Source" for a work in object code form means all the source
-code needed to generate, install, and (for an executable work) run the object
-code and to modify the work, including scripts to control those activities.
-However, it does not include the work's System Libraries, or general-purpose
-tools or generally available free programs which are used unmodified in performing
-those activities but which are not part of the work. For example, Corresponding
-Source includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically linked
-subprograms that the work is specifically designed to require, such as by
-intimate data communication or control flow between those subprograms and
-other parts of the work.
-
-The Corresponding Source need not include anything that users can regenerate
-automatically from other parts of the Corresponding Source.
-
- The Corresponding Source for a work in source code form is that same work.
-
- 2. Basic Permissions.
-
-All rights granted under this License are granted for the term of copyright
-on the Program, and are irrevocable provided the stated conditions are met.
-This License explicitly affirms your unlimited permission to run the unmodified
-Program. The output from running a covered work is covered by this License
-only if the output, given its content, constitutes a covered work. This License
-acknowledges your rights of fair use or other equivalent, as provided by copyright
-law.
-
-You may make, run and propagate covered works that you do not convey, without
-conditions so long as your license otherwise remains in force. You may convey
-covered works to others for the sole purpose of having them make modifications
-exclusively for you, or provide you with facilities for running those works,
-provided that you comply with the terms of this License in conveying all material
-for which you do not control copyright. Those thus making or running the covered
-works for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of your copyrighted
-material outside their relationship with you.
-
-Conveying under any other circumstances is permitted solely under the conditions
-stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-No covered work shall be deemed part of an effective technological measure
-under any applicable law fulfilling obligations under article 11 of the WIPO
-copyright treaty adopted on 20 December 1996, or similar laws prohibiting
-or restricting circumvention of such measures.
-
-When you convey a covered work, you waive any legal power to forbid circumvention
-of technological measures to the extent such circumvention is effected by
-exercising rights under this License with respect to the covered work, and
-you disclaim any intention to limit operation or modification of the work
-as a means of enforcing, against the work's users, your or third parties'
-legal rights to forbid circumvention of technological measures.
-
- 4. Conveying Verbatim Copies.
-
-You may convey verbatim copies of the Program's source code as you receive
-it, in any medium, provided that you conspicuously and appropriately publish
-on each copy an appropriate copyright notice; keep intact all notices stating
-that this License and any non-permissive terms added in accord with section
-7 apply to the code; keep intact all notices of the absence of any warranty;
-and give all recipients a copy of this License along with the Program.
-
-You may charge any price or no price for each copy that you convey, and you
-may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
-You may convey a work based on the Program, or the modifications to produce
-it from the Program, in the form of source code under the terms of section
-4, provided that you also meet all of these conditions:
-
-a) The work must carry prominent notices stating that you modified it, and
-giving a relevant date.
-
-b) The work must carry prominent notices stating that it is released under
-this License and any conditions added under section 7. This requirement modifies
-the requirement in section 4 to "keep intact all notices".
-
-c) You must license the entire work, as a whole, under this License to anyone
-who comes into possession of a copy. This License will therefore apply, along
-with any applicable section 7 additional terms, to the whole of the work,
-and all its parts, regardless of how they are packaged. This License gives
-no permission to license the work in any other way, but it does not invalidate
-such permission if you have separately received it.
-
-d) If the work has interactive user interfaces, each must display Appropriate
-Legal Notices; however, if the Program has interactive interfaces that do
-not display Appropriate Legal Notices, your work need not make them do so.
-
-A compilation of a covered work with other separate and independent works,
-which are not by their nature extensions of the covered work, and which are
-not combined with it such as to form a larger program, in or on a volume of
-a storage or distribution medium, is called an "aggregate" if the compilation
-and its resulting copyright are not used to limit the access or legal rights
-of the compilation's users beyond what the individual works permit. Inclusion
-of a covered work in an aggregate does not cause this License to apply to
-the other parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
-You may convey a covered work in object code form under the terms of sections
-4 and 5, provided that you also convey the machine-readable Corresponding
-Source under the terms of this License, in one of these ways:
-
-a) Convey the object code in, or embodied in, a physical product (including
-a physical distribution medium), accompanied by the Corresponding Source fixed
-on a durable physical medium customarily used for software interchange.
-
-b) Convey the object code in, or embodied in, a physical product (including
-a physical distribution medium), accompanied by a written offer, valid for
-at least three years and valid for as long as you offer spare parts or customer
-support for that product model, to give anyone who possesses the object code
-either (1) a copy of the Corresponding Source for all the software in the
-product that is covered by this License, on a durable physical medium customarily
-used for software interchange, for a price no more than your reasonable cost
-of physically performing this conveying of source, or (2) access to copy the
-Corresponding Source from a network server at no charge.
-
-c) Convey individual copies of the object code with a copy of the written
-offer to provide the Corresponding Source. This alternative is allowed only
-occasionally and noncommercially, and only if you received the object code
-with such an offer, in accord with subsection 6b.
-
-d) Convey the object code by offering access from a designated place (gratis
-or for a charge), and offer equivalent access to the Corresponding Source
-in the same way through the same place at no further charge. You need not
-require recipients to copy the Corresponding Source along with the object
-code. If the place to copy the object code is a network server, the Corresponding
-Source may be on a different server (operated by you or a third party) that
-supports equivalent copying facilities, provided you maintain clear directions
-next to the object code saying where to find the Corresponding Source. Regardless
-of what server hosts the Corresponding Source, you remain obligated to ensure
-that it is available for as long as needed to satisfy these requirements.
-
-e) Convey the object code using peer-to-peer transmission, provided you inform
-other peers where the object code and Corresponding Source of the work are
-being offered to the general public at no charge under subsection 6d.
-
-A separable portion of the object code, whose source code is excluded from
-the Corresponding Source as a System Library, need not be included in conveying
-the object code work.
-
-A "User Product" is either (1) a "consumer product", which means any tangible
-personal property which is normally used for personal, family, or household
-purposes, or (2) anything designed or sold for incorporation into a dwelling.
-In determining whether a product is a consumer product, doubtful cases shall
-be resolved in favor of coverage. For a particular product received by a particular
-user, "normally used" refers to a typical or common use of that class of product,
-regardless of the status of the particular user or of the way in which the
-particular user actually uses, or expects or is expected to use, the product.
-A product is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent the
-only significant mode of use of the product.
-
-"Installation Information" for a User Product means any methods, procedures,
-authorization keys, or other information required to install and execute modified
-versions of a covered work in that User Product from a modified version of
-its Corresponding Source. The information must suffice to ensure that the
-continued functioning of the modified object code is in no case prevented
-or interfered with solely because modification has been made.
-
-If you convey an object code work under this section in, or with, or specifically
-for use in, a User Product, and the conveying occurs as part of a transaction
-in which the right of possession and use of the User Product is transferred
-to the recipient in perpetuity or for a fixed term (regardless of how the
-transaction is characterized), the Corresponding Source conveyed under this
-section must be accompanied by the Installation Information. But this requirement
-does not apply if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has been installed
-in ROM).
-
-The requirement to provide Installation Information does not include a requirement
-to continue to provide support service, warranty, or updates for a work that
-has been modified or installed by the recipient, or for the User Product in
-which it has been modified or installed. Access to a network may be denied
-when the modification itself materially and adversely affects the operation
-of the network or violates the rules and protocols for communication across
-the network.
-
-Corresponding Source conveyed, and Installation Information provided, in accord
-with this section must be in a format that is publicly documented (and with
-an implementation available to the public in source code form), and must require
-no special password or key for unpacking, reading or copying.
-
- 7. Additional Terms.
-
-"Additional permissions" are terms that supplement the terms of this License
-by making exceptions from one or more of its conditions. Additional permissions
-that are applicable to the entire Program shall be treated as though they
-were included in this License, to the extent that they are valid under applicable
-law. If additional permissions apply only to part of the Program, that part
-may be used separately under those permissions, but the entire Program remains
-governed by this License without regard to the additional permissions.
-
-When you convey a copy of a covered work, you may at your option remove any
-additional permissions from that copy, or from any part of it. (Additional
-permissions may be written to require their own removal in certain cases when
-you modify the work.) You may place additional permissions on material, added
-by you to a covered work, for which you have or can give appropriate copyright
-permission.
-
-Notwithstanding any other provision of this License, for material you add
-to a covered work, you may (if authorized by the copyright holders of that
-material) supplement the terms of this License with terms:
-
-a) Disclaiming warranty or limiting liability differently from the terms of
-sections 15 and 16 of this License; or
-
-b) Requiring preservation of specified reasonable legal notices or author
-attributions in that material or in the Appropriate Legal Notices displayed
-by works containing it; or
-
-c) Prohibiting misrepresentation of the origin of that material, or requiring
-that modified versions of such material be marked in reasonable ways as different
-from the original version; or
-
-d) Limiting the use for publicity purposes of names of licensors or authors
-of the material; or
-
-e) Declining to grant rights under trademark law for use of some trade names,
-trademarks, or service marks; or
-
-f) Requiring indemnification of licensors and authors of that material by
-anyone who conveys the material (or modified versions of it) with contractual
-assumptions of liability to the recipient, for any liability that these contractual
-assumptions directly impose on those licensors and authors.
-
-All other non-permissive additional terms are considered "further restrictions"
-within the meaning of section 10. If the Program as you received it, or any
-part of it, contains a notice stating that it is governed by this License
-along with a term that is a further restriction, you may remove that term.
-If a license document contains a further restriction but permits relicensing
-or conveying under this License, you may add to a covered work material governed
-by the terms of that license document, provided that the further restriction
-does not survive such relicensing or conveying.
-
-If you add terms to a covered work in accord with this section, you must place,
-in the relevant source files, a statement of the additional terms that apply
-to those files, or a notice indicating where to find the applicable terms.
-
-Additional terms, permissive or non-permissive, may be stated in the form
-of a separately written license, or stated as exceptions; the above requirements
-apply either way.
-
- 8. Termination.
-
-You may not propagate or modify a covered work except as expressly provided
-under this License. Any attempt otherwise to propagate or modify it is void,
-and will automatically terminate your rights under this License (including
-any patent licenses granted under the third paragraph of section 11).
-
-However, if you cease all violation of this License, then your license from
-a particular copyright holder is reinstated (a) provisionally, unless and
-until the copyright holder explicitly and finally terminates your license,
-and (b) permanently, if the copyright holder fails to notify you of the violation
-by some reasonable means prior to 60 days after the cessation.
-
-Moreover, your license from a particular copyright holder is reinstated permanently
-if the copyright holder notifies you of the violation by some reasonable means,
-this is the first time you have received notice of violation of this License
-(for any work) from that copyright holder, and you cure the violation prior
-to 30 days after your receipt of the notice.
-
-Termination of your rights under this section does not terminate the licenses
-of parties who have received copies or rights from you under this License.
-If your rights have been terminated and not permanently reinstated, you do
-not qualify to receive new licenses for the same material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
-You are not required to accept this License in order to receive or run a copy
-of the Program. Ancillary propagation of a covered work occurring solely as
-a consequence of using peer-to-peer transmission to receive a copy likewise
-does not require acceptance. However, nothing other than this License grants
-you permission to propagate or modify any covered work. These actions infringe
-copyright if you do not accept this License. Therefore, by modifying or propagating
-a covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
-Each time you convey a covered work, the recipient automatically receives
-a license from the original licensors, to run, modify and propagate that work,
-subject to this License. You are not responsible for enforcing compliance
-by third parties with this License.
-
-An "entity transaction" is a transaction transferring control of an organization,
-or substantially all assets of one, or subdividing an organization, or merging
-organizations. If propagation of a covered work results from an entity transaction,
-each party to that transaction who receives a copy of the work also receives
-whatever licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the Corresponding
-Source of the work from the predecessor in interest, if the predecessor has
-it or can get it with reasonable efforts.
-
-You may not impose any further restrictions on the exercise of the rights
-granted or affirmed under this License. For example, you may not impose a
-license fee, royalty, or other charge for exercise of rights granted under
-this License, and you may not initiate litigation (including a cross-claim
-or counterclaim in a lawsuit) alleging that any patent claim is infringed
-by making, using, selling, offering for sale, or importing the Program or
-any portion of it.
-
- 11. Patents.
-
-A "contributor" is a copyright holder who authorizes use under this License
-of the Program or a work on which the Program is based. The work thus licensed
-is called the contributor's "contributor version".
-
-A contributor's "essential patent claims" are all patent claims owned or controlled
-by the contributor, whether already acquired or hereafter acquired, that would
-be infringed by some manner, permitted by this License, of making, using,
-or selling its contributor version, but do not include claims that would be
-infringed only as a consequence of further modification of the contributor
-version. For purposes of this definition, "control" includes the right to
-grant patent sublicenses in a manner consistent with the requirements of this
-License.
-
-Each contributor grants you a non-exclusive, worldwide, royalty-free patent
-license under the contributor's essential patent claims, to make, use, sell,
-offer for sale, import and otherwise run, modify and propagate the contents
-of its contributor version.
-
-In the following three paragraphs, a "patent license" is any express agreement
-or commitment, however denominated, not to enforce a patent (such as an express
-permission to practice a patent or covenant not to sue for patent infringement).
-To "grant" such a patent license to a party means to make such an agreement
-or commitment not to enforce a patent against the party.
-
-If you convey a covered work, knowingly relying on a patent license, and the
-Corresponding Source of the work is not available for anyone to copy, free
-of charge and under the terms of this License, through a publicly available
-network server or other readily accessible means, then you must either (1)
-cause the Corresponding Source to be so available, or (2) arrange to deprive
-yourself of the benefit of the patent license for this particular work, or
-(3) arrange, in a manner consistent with the requirements of this License,
-to extend the patent license to downstream recipients. "Knowingly relying"
-means you have actual knowledge that, but for the patent license, your conveying
-the covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that country
-that you have reason to believe are valid.
-
-If, pursuant to or in connection with a single transaction or arrangement,
-you convey, or propagate by procuring conveyance of, a covered work, and grant
-a patent license to some of the parties receiving the covered work authorizing
-them to use, propagate, modify or convey a specific copy of the covered work,
-then the patent license you grant is automatically extended to all recipients
-of the covered work and works based on it.
-
-A patent license is "discriminatory" if it does not include within the scope
-of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
-of one or more of the rights that are specifically granted under this License.
-You may not convey a covered work if you are a party to an arrangement with
-a third party that is in the business of distributing software, under which
-you make payment to the third party based on the extent of your activity of
-conveying the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory patent
-license (a) in connection with copies of the covered work conveyed by you
-(or copies made from those copies), or (b) primarily for and in connection
-with specific products or compilations that contain the covered work, unless
-you entered into that arrangement, or that patent license was granted, prior
-to 28 March 2007.
-
-Nothing in this License shall be construed as excluding or limiting any implied
-license or other defenses to infringement that may otherwise be available
-to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
-If 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 convey a covered work so as
-to satisfy simultaneously your obligations under this License and any other
-pertinent obligations, then as a consequence you may not convey it at all.
-For example, if you agree to terms that obligate you to collect a royalty
-for further conveying from those to whom you convey the Program, the only
-way you could satisfy both those terms and this License would be to refrain
-entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
-Notwithstanding any other provision of this License, you have permission to
-link or combine any covered work with a work licensed under version 3 of the
-GNU Affero General Public License into a single combined work, and to convey
-the resulting work. The terms of this License will continue to apply to the
-part which is the covered work, but the special requirements of the GNU Affero
-General Public License, section 13, concerning interaction through a network
-will apply to the combination as such.
-
- 14. Revised Versions of this License.
-
-The Free Software Foundation may publish revised and/or new versions of the
-GNU 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 Program specifies
-that a certain numbered version of the GNU General Public License "or any
-later version" applies to it, you have the option of following the terms and
-conditions either of that numbered version or of any later version published
-by the Free Software Foundation. If the Program does not specify a version
-number of the GNU General Public License, you may choose any version ever
-published by the Free Software Foundation.
-
-If the Program specifies that a proxy can decide which future versions of
-the GNU General Public License can be used, that proxy's public statement
-of acceptance of a version permanently authorizes you to choose that version
-for the Program.
-
-Later license versions may give you additional or different permissions. However,
-no additional obligations are imposed on any author or copyright holder as
-a result of your choosing to follow a later version.
-
- 15. Disclaimer of Warranty.
-
-THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
-LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE PROGRAM
-PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
-CORRECTION.
-
- 16. Limitation of Liability.
-
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
-ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
-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 PROGRAM (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
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
-PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
-If the disclaimer of warranty and limitation of liability provided above cannot
-be given local legal effect according to their terms, reviewing courts shall
-apply local law that most closely approximates an absolute waiver of all civil
-liability in connection with the Program, unless a warranty or assumption
-of liability accompanies a copy of the Program in return for a fee. END OF
-TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible
-use to the public, the best way to achieve this is to make it free software
-which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest to attach
-them to the start of each source file to most effectively state 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 program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program does terminal interaction, make it output a short notice like
-this when it starts in an interactive mode:
-
- Copyright (C)
-
-This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-
-This is free software, and you are welcome to redistribute it under certain
-conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands might
-be different; for a GUI interface, you would use an "about box".
-
-You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary. For
-more information on this, and how to apply and follow the GNU GPL, see .
-
-The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General Public
-License instead of this License. But first, please read .
diff --git a/Makefile b/Makefile
index 7a9b567..2658f2f 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,8 @@
# project subdirectory.
#
-PROJECT_NAME := mesh_ota
+PROJECT_NAME := https-mbedtls
+
+EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
include $(IDF_PATH)/make/project.mk
diff --git a/README.md b/README.md
deleted file mode 100644
index 1ad16bd..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# ESP32-Mesh-OTA
-
diff --git a/components/mesh_ota/CMakeLists.txt b/components/mesh_ota/CMakeLists.txt
deleted file mode 100644
index 083dd40..0000000
--- a/components/mesh_ota/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-idf_component_register(SRCS "mesh_ota.c"
- INCLUDE_DIRS "include"
- REQUIRES nvs_flash
- esp_http_client bootloader_support
- PRIV_REQUIRES log app_update
- )
diff --git a/components/mesh_ota/component.mk b/components/mesh_ota/component.mk
deleted file mode 100644
index e69de29..0000000
diff --git a/components/mesh_ota/include/mesh_ota.h b/components/mesh_ota/include/mesh_ota.h
deleted file mode 100644
index 6064a57..0000000
--- a/components/mesh_ota/include/mesh_ota.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef H_MESH_OTA
-#define H_MESH_OTA
-
-#include
-#include "esp_system.h"
-#include "esp_event.h"
-#include "esp_log.h"
-
-#include
-#include "esp_wifi.h"
-#include "esp_system.h"
-#include "esp_event.h"
-#include "esp_log.h"
-#include "esp_mesh.h"
-#include "esp_mesh_internal.h"
-#include "nvs_flash.h"
-#include "driver/gpio.h"
-#include "esp_ota_ops.h"
-#include "esp_partition.h"
-
-
-
-
-bool bNewerVersion(const char* pu8Local, const char* pu8Remote);
-
-
-#endif /* H_MESH_OTA */
diff --git a/components/mesh_ota/mesh_ota.c b/components/mesh_ota/mesh_ota.c
deleted file mode 100644
index b32d0ca..0000000
--- a/components/mesh_ota/mesh_ota.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "mesh_ota.h"
-
-
-
-/*
- * 999.999.999
- * Return true if remote version is newer (higher) than local version
-*/
-bool bNewerVersion(const char* pu8Local, const char* pu8Remote){
-
- char u8LocalTmp[12];
- char u8RemoteTmp[12];
-
- char* pu8saveptrLocal;
- char* pu8saveptrRemote;
-
- strcpy(u8LocalTmp, pu8Local);
- strcpy(u8RemoteTmp, pu8Remote);
-
- char* pu8TokenLocal = strtok_r(u8LocalTmp, ".", &pu8saveptrLocal);
- char* pu8TokenRemote = strtok_r(u8RemoteTmp, ".", &pu8saveptrRemote) ;
-
-
- bool bReturn = false;
-
- uint8_t u8Index = 0;
-
- while( (u8Index <= 2) && (bReturn == false)){
-
- u8Index++;
-
- if(atoi(pu8TokenLocal) < atoi(pu8TokenRemote))
- {
- bReturn = true;
- }
-
- pu8TokenLocal = strtok_r(NULL, ".", &pu8saveptrLocal);
- pu8TokenRemote = strtok_r(NULL, ".", &pu8saveptrRemote) ;
- }
-
- return bReturn;
-}
diff --git a/components/mesh_ota/test/CMakeLists.txt b/components/mesh_ota/test/CMakeLists.txt
deleted file mode 100644
index dfb3c14..0000000
--- a/components/mesh_ota/test/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-idf_component_register(SRC_DIRS "."
- INCLUDE_DIRS "."
- REQUIRES cmock mesh_ota)
diff --git a/components/mesh_ota/test/component.mk b/components/mesh_ota/test/component.mk
deleted file mode 100644
index e8e167c..0000000
--- a/components/mesh_ota/test/component.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-# This is the minimal test component makefile.
-#
-# The following line is needed to force the linker to include all the object
-# files into the application, even if the functions in these object files
-# are not referenced from outside (which is usually the case for unit tests).
-#
-COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
diff --git a/components/mesh_ota/test/test_mesh_ota.c b/components/mesh_ota/test/test_mesh_ota.c
deleted file mode 100644
index 22c742d..0000000
--- a/components/mesh_ota/test/test_mesh_ota.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include
-#include "unity.h"
-#include "mesh_ota.h"
-
-TEST_CASE("Remote got patch", "[distinguish newer image version]")
-{
- char versionLocal[] = "1.2.3"; //current running image
- char versionRemote[] = "1.2.4"; //image from server
- TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Remote got minor", "[distinguish newer image version]")
-{
- char versionLocal[] = "1.2.3"; //current running image
- char versionRemote[] = "1.3.3"; //image from server
- TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Remote got major", "[distinguish newer image version]")
-{
- char versionLocal[] = "1.2.3"; //current running image
- char versionRemote[] = "2.2.3"; //image from server
- TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Local got patch", "[distinguish newer image version]")
-{
- char versionLocal[] = "1.2.4"; //current running image
- char versionRemote[] = "1.2.3"; //image from server
- TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Local got minor", "[distinguish newer image version]")
-{
- char versionLocal[] = "1.3.3"; //current running image
- char versionRemote[] = "1.2.3"; //image from server
- TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Local got major", "[distinguish newer image version]")
-{
- char versionLocal[] = "2.2.3"; //current running image
- char versionRemote[] = "1.2.3"; //image from server
- TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Remote got alpha and patch", "[distinguish newer image version]")
-{
- char versionLocal[] = "2.2.3"; //current running image
- char versionRemote[] = "a2.2.4"; //image from server
- TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
-}
-
-TEST_CASE("Remote got max", "[distinguish newer image version]")
-{
- char versionLocal[] = "2.2.3"; //current running image
- char versionRemote[] = "999.999.999"; //image from server
- TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
-}
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index cf2c455..bdc0271 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -1,2 +1,5 @@
-idf_component_register(SRCS "main.c"
+# Embed the server root certificate into the final binary
+#
+# (If this was a component, we would set COMPONENT_EMBED_TXTFILES here.)
+idf_component_register(SRCS "https_mbedtls_example_main.c"
INCLUDE_DIRS ".")
diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild
deleted file mode 100644
index 3d502c8..0000000
--- a/main/Kconfig.projbuild
+++ /dev/null
@@ -1,165 +0,0 @@
-menu "Mesh OTA Configuration"
-
- choice
- bool "Mesh Topology"
- default MESH_TOPO_TREE
- help
- Mesh Network Topology.
-
- config MESH_TOPO_TREE
- bool "MESH_TOPO_TREE"
- config MESH_TOPO_CHAIN
- bool "MESH_TOPO_CHAIN"
- endchoice
-
- config MESH_TOPOLOGY
- int
- default 0 if MESH_TOPO_TREE
- default 1 if MESH_TOPO_CHAIN
- help
- Mesh Network Topology.
-
- config MESH_ENABLE_PS
- bool "Enable mesh PS (power save) function"
- default y
- help
- Enable/Disable Power Save function.
-
- choice
- bool "Mesh PS device duty cycle type"
- depends on MESH_ENABLE_PS
- default MESH_PS_DEV_DUTY_TYPE_REQUEST
- help
- Mesh PS device duty cycle type.
-
- config MESH_PS_DEV_DUTY_TYPE_REQUEST
- bool "MESH_PS_DEV_DUTY_TYPE_REQUEST"
- config MESH_PS_DEV_DUTY_TYPE_DEMAND
- bool "MESH_PS_DEV_DUTY_TYPE_DEMAND"
- endchoice
-
- config MESH_PS_DEV_DUTY_TYPE
- int
- depends on MESH_ENABLE_PS
- default 1 if MESH_PS_DEV_DUTY_TYPE_REQUEST
- default 4 if MESH_PS_DEV_DUTY_TYPE_DEMAND
- help
- Mesh PS device duty cycle type.
-
- config MESH_PS_DEV_DUTY
- int "Mesh PS device duty cycle"
- depends on MESH_ENABLE_PS
- range 1 100
- default 12
- help
- Mesh PS device duty cycle.
-
- config MESH_PS_NWK_DUTY
- int "Mesh PS network duty cycle"
- depends on MESH_ENABLE_PS
- range 1 100
- default 12
- help
- Mesh PS network duty cycle.
-
- config MESH_PS_NWK_DUTY_DURATION
- int "Mesh PS network duty cycle duration (unit: minutes)"
- depends on MESH_ENABLE_PS
- range -1 100
- default -1
- help
- Mesh PS network duty cycle duration.
-
- choice
- bool "Mesh PS network duty cycle rule"
- depends on MESH_ENABLE_PS
- default MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE
- help
- Mesh PS network duty cycle rule.
-
- config MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE
- bool "MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE"
- config MESH_PS_NETWORK_DUTY_APPLIED_UPLINK
- bool "MESH_PS_NETWORK_DUTY_APPLIED_UPLINK"
- endchoice
-
- config MESH_PS_NWK_DUTY_RULE
- int
- depends on MESH_ENABLE_PS
- default 0 if MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE
- default 1 if MESH_PS_NETWORK_DUTY_APPLIED_UPLINK
- help
- Mesh PS network duty cycle rule.
-
- config MESH_MAX_LAYER
- int "Mesh Max Layer"
- range 1 25 if MESH_TOPO_TREE
- range 1 1000 if MESH_TOPO_CHAIN
- default 6
- help
- Max layer allowed in mesh network.
-
- config MESH_CHANNEL
- int "channel"
- range 0 14
- default 0
- help
- mesh network channel.
-
- config MESH_ROUTER_SSID
- string "Router SSID"
- default "ROUTER_SSID"
- help
- Router SSID.
-
- config MESH_ROUTER_PASSWD
- string "Router password"
- default "ROUTER_PASSWD"
- help
- Router password.
-
- choice
- bool "Mesh AP Authentication Mode"
- default WIFI_AUTH_WPA2_PSK
- help
- Authentication mode.
-
- config WIFI_AUTH_OPEN
- bool "WIFI_AUTH_OPEN"
- config WIFI_AUTH_WPA_PSK
- bool "WIFI_AUTH_WPA_PSK"
- config WIFI_AUTH_WPA2_PSK
- bool "WIFI_AUTH_WPA2_PSK"
- config WIFI_AUTH_WPA_WPA2_PSK
- bool "WIFI_AUTH_WPA_WPA2_PSK"
- endchoice
-
- config MESH_AP_AUTHMODE
- int
- default 0 if WIFI_AUTH_OPEN
- default 2 if WIFI_AUTH_WPA_PSK
- default 3 if WIFI_AUTH_WPA2_PSK
- default 4 if WIFI_AUTH_WPA_WPA2_PSK
- help
- Mesh AP authentication mode.
-
- config MESH_AP_PASSWD
- string "Mesh AP Password"
- default "MAP_PASSWD"
- help
- Mesh AP password.
-
- config MESH_AP_CONNECTIONS
- int "Mesh AP Connections"
- range 1 10
- default 6
- help
- The number of stations allowed to connect in.
-
- config MESH_ROUTE_TABLE_SIZE
- int "Mesh Routing Table Size"
- range 1 300
- default 50
- help
- The number of devices over the network(max: 300).
-endmenu
diff --git a/main/component.mk b/main/component.mk
index 0b9d758..a98f634 100644
--- a/main/component.mk
+++ b/main/component.mk
@@ -2,4 +2,3 @@
# "main" pseudo-component makefile.
#
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
-
diff --git a/main/https_mbedtls_example_main.c b/main/https_mbedtls_example_main.c
new file mode 100644
index 0000000..8ed044e
--- /dev/null
+++ b/main/https_mbedtls_example_main.c
@@ -0,0 +1,276 @@
+/* HTTPS GET Example using plain mbedTLS sockets
+ *
+ * Contacts the howsmyssl.com API via TLS v1.2 and reads a JSON
+ * response.
+ *
+ * Adapted from the ssl_client1 example in mbedtls.
+ *
+ * Original Copyright (C) 2006-2016, ARM Limited, All Rights Reserved, Apache 2.0 License.
+ * Additions Copyright (C) Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD, Apache 2.0 License.
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include
+#include
+#include "freertos/FreeRTOS.h"
+#include "freertos/task.h"
+#include "esp_wifi.h"
+#include "esp_event.h"
+#include "esp_log.h"
+#include "esp_system.h"
+#include "nvs_flash.h"
+#include "protocol_examples_common.h"
+#include "esp_netif.h"
+
+#include "lwip/err.h"
+#include "lwip/sockets.h"
+#include "lwip/sys.h"
+#include "lwip/netdb.h"
+#include "lwip/dns.h"
+
+#include "mbedtls/platform.h"
+#include "mbedtls/net_sockets.h"
+#include "mbedtls/esp_debug.h"
+#include "mbedtls/ssl.h"
+#include "mbedtls/entropy.h"
+#include "mbedtls/ctr_drbg.h"
+#include "mbedtls/error.h"
+#include "mbedtls/certs.h"
+#include "esp_crt_bundle.h"
+
+
+/* Constants that aren't configurable in menuconfig */
+#define WEB_SERVER "ota.hendrikschutter.com"
+#define WEB_PORT "443"
+#define WEB_URL "https://ota.hendrikschutter.com/hello-world.bin"
+
+static const char *TAG = "example";
+
+static const char *REQUEST = "GET " WEB_URL " HTTP/1.1\r\n"
+ "Host: "WEB_SERVER"\r\n"
+ "User-Agent: esp-idf/1.0 esp32\r\n"
+ "\r\n";
+
+
+static void https_get_task(void *pvParameters)
+{
+ char buf[512];
+ int ret, flags, len;
+
+ mbedtls_entropy_context entropy;
+ mbedtls_ctr_drbg_context ctr_drbg;
+ mbedtls_ssl_context ssl;
+ mbedtls_x509_crt cacert;
+ mbedtls_ssl_config conf;
+ mbedtls_net_context server_fd;
+
+ mbedtls_ssl_init(&ssl);
+ mbedtls_x509_crt_init(&cacert);
+ mbedtls_ctr_drbg_init(&ctr_drbg);
+ ESP_LOGI(TAG, "Seeding the random number generator");
+
+ mbedtls_ssl_config_init(&conf);
+
+ mbedtls_entropy_init(&entropy);
+ if((ret = mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, NULL, 0)) != 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_ctr_drbg_seed returned %d", ret);
+ abort();
+ }
+
+ ESP_LOGI(TAG, "Attaching the certificate bundle...");
+
+ ret = esp_crt_bundle_attach(&conf);
+
+ if(ret < 0)
+ {
+ ESP_LOGE(TAG, "esp_crt_bundle_attach returned -0x%x\n\n", -ret);
+ abort();
+ }
+
+ ESP_LOGI(TAG, "Setting hostname for TLS session...");
+
+ /* Hostname set here should match CN in server certificate */
+ if((ret = mbedtls_ssl_set_hostname(&ssl, WEB_SERVER)) != 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_ssl_set_hostname returned -0x%x", -ret);
+ abort();
+ }
+
+ ESP_LOGI(TAG, "Setting up the SSL/TLS structure...");
+
+ if((ret = mbedtls_ssl_config_defaults(&conf,
+ MBEDTLS_SSL_IS_CLIENT,
+ MBEDTLS_SSL_TRANSPORT_STREAM,
+ MBEDTLS_SSL_PRESET_DEFAULT)) != 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_ssl_config_defaults returned %d", ret);
+ goto exit;
+ }
+
+ /* MBEDTLS_SSL_VERIFY_OPTIONAL is bad for security, in this example it will print
+ a warning if CA verification fails but it will continue to connect.
+
+ You should consider using MBEDTLS_SSL_VERIFY_REQUIRED in your own code.
+ */
+ mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_OPTIONAL);
+ mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL);
+ mbedtls_ssl_conf_rng(&conf, mbedtls_ctr_drbg_random, &ctr_drbg);
+#ifdef CONFIG_MBEDTLS_DEBUG
+ mbedtls_esp_enable_debug_log(&conf, CONFIG_MBEDTLS_DEBUG_LEVEL);
+#endif
+
+ if ((ret = mbedtls_ssl_setup(&ssl, &conf)) != 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_ssl_setup returned -0x%x\n\n", -ret);
+ goto exit;
+ }
+
+ mbedtls_net_init(&server_fd);
+
+ ESP_LOGI(TAG, "Connecting to %s:%s...", WEB_SERVER, WEB_PORT);
+
+ if ((ret = mbedtls_net_connect(&server_fd, WEB_SERVER,
+ WEB_PORT, MBEDTLS_NET_PROTO_TCP)) != 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_net_connect returned -%x", -ret);
+ goto exit;
+ }
+
+ ESP_LOGI(TAG, "Connected.");
+
+ mbedtls_ssl_set_bio(&ssl, &server_fd, mbedtls_net_send, mbedtls_net_recv, NULL);
+
+ ESP_LOGI(TAG, "Performing the SSL/TLS handshake...");
+
+ while ((ret = mbedtls_ssl_handshake(&ssl)) != 0)
+ {
+ if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE)
+ {
+ ESP_LOGE(TAG, "mbedtls_ssl_handshake returned -0x%x", -ret);
+ goto exit;
+ }
+ }
+
+ ESP_LOGI(TAG, "Verifying peer X.509 certificate...");
+
+ if ((flags = mbedtls_ssl_get_verify_result(&ssl)) != 0)
+ {
+ /* In real life, we probably want to close connection if ret != 0 */
+ ESP_LOGW(TAG, "Failed to verify peer certificate!");
+ bzero(buf, sizeof(buf));
+ mbedtls_x509_crt_verify_info(buf, sizeof(buf), " ! ", flags);
+ ESP_LOGW(TAG, "verification info: %s", buf);
+ }
+ else {
+ ESP_LOGI(TAG, "Certificate verified.");
+ }
+
+ ESP_LOGI(TAG, "Cipher suite is %s", mbedtls_ssl_get_ciphersuite(&ssl));
+
+ ESP_LOGI(TAG, "Writing HTTP request...");
+
+ size_t written_bytes = 0;
+ do {
+ ret = mbedtls_ssl_write(&ssl,
+ (const unsigned char *)REQUEST + written_bytes,
+ strlen(REQUEST) - written_bytes);
+ if (ret >= 0) {
+ ESP_LOGI(TAG, "%d bytes written", ret);
+ written_bytes += ret;
+ } else if (ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret != MBEDTLS_ERR_SSL_WANT_READ) {
+ ESP_LOGE(TAG, "mbedtls_ssl_write returned -0x%x", -ret);
+ goto exit;
+ }
+ } while(written_bytes < strlen(REQUEST));
+
+ ESP_LOGI(TAG, "Reading HTTP response...");
+
+ //do
+ /// {
+ len = sizeof(buf) - 1;
+ bzero(buf, sizeof(buf));
+ ret = mbedtls_ssl_read(&ssl, (unsigned char *)buf, len);
+
+ if(ret == MBEDTLS_ERR_SSL_WANT_READ || ret == MBEDTLS_ERR_SSL_WANT_WRITE)
+ // continue;
+
+ if(ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
+ ret = 0;
+ // break;
+ }
+
+ if(ret < 0)
+ {
+ ESP_LOGE(TAG, "mbedtls_ssl_read returned -0x%x", -ret);
+ // break;
+ }
+
+ if(ret == 0)
+ {
+ ESP_LOGI(TAG, "connection closed");
+ // break;
+ }
+
+ ESP_LOGE(TAG, "mbedtls_ssl_read returned -0x%x", ret);
+
+ len = ret;
+ ESP_LOGD(TAG, "%d bytes read", len);
+ /* Print response directly to stdout as it is read */
+ for(int i = 0; i < len; i++) {
+ putchar(buf[i]);
+ }
+ // } while(1);
+
+ mbedtls_ssl_close_notify(&ssl);
+
+ exit:
+ mbedtls_ssl_session_reset(&ssl);
+ mbedtls_net_free(&server_fd);
+
+ if(ret != 0)
+ {
+ mbedtls_strerror(ret, buf, 100);
+ ESP_LOGE(TAG, "Last error was: -0x%x - %s", -ret, buf);
+ }
+
+ putchar('\n'); // JSON output doesn't have a newline at end
+
+ static int request_count;
+ ESP_LOGI(TAG, "Completed %d requests", ++request_count);
+
+
+ ESP_LOGI(TAG, "going into endless loop!");
+
+
+ while(1){
+
+ }
+
+}
+
+void app_main(void)
+{
+ ESP_ERROR_CHECK( nvs_flash_init() );
+ ESP_ERROR_CHECK(esp_netif_init());
+ ESP_ERROR_CHECK(esp_event_loop_create_default());
+
+ /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
+ * Read "Establishing Wi-Fi or Ethernet Connection" section in
+ * examples/protocols/README.md for more information about this function.
+ */
+ ESP_ERROR_CHECK(example_connect());
+
+ xTaskCreate(&https_get_task, "https_get_task", 8192, NULL, 5, NULL);
+}
diff --git a/main/main.c b/main/main.c
deleted file mode 100644
index e73d9f4..0000000
--- a/main/main.c
+++ /dev/null
@@ -1,599 +0,0 @@
-
-#include
-#include "esp_wifi.h"
-#include "esp_system.h"
-#include "esp_event.h"
-#include "esp_log.h"
-#include "esp_mesh.h"
-#include "esp_mesh_internal.h"
-#include "nvs_flash.h"
-#include "driver/gpio.h"
-#include "esp_ota_ops.h"
-#include "esp_partition.h"
-
-#include "mesh_ota.h"
-
-
-#define RX_SIZE (1234)
-#define TX_SIZE (1234)
-
-
-
-static const char *MESH_TAG = "mesh_main";
-static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77};
-static uint8_t tx_buf[TX_SIZE] = { 0, };
-static uint8_t rx_buf[RX_SIZE] = { 0, };
-static bool is_mesh_connected = false;
-static mesh_addr_t mesh_parent_addr;
-static uint8_t ownMAC[6];
-static int mesh_layer = -1;
-static esp_netif_t *netif_sta = NULL;
-
-struct ota_mesh_packet {
- enum ota_mesh_packet_type {
- APP_Version_Request,
- APP_Version_Response,
- OTA_Data,
- OTA_ACK,
- OTA_Complete
- } type;
-
- uint8_t au8Payload[1024];
-};
-
-/*******************************************************
- * Function Declarations
- *******************************************************/
-
-esp_err_t esp_mesh_send_packet(mesh_addr_t* dest, struct ota_mesh_packet* packet);
-
-/*******************************************************
- * Function Definitions
- *******************************************************/
-
-esp_err_t esp_mesh_ota_send(mesh_addr_t* dest)
-{
- esp_err_t err = ESP_OK;
-
- static uint32_t u32index;
-
- const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
-
- if((*currentPartition).subtype == 0) {
-
- int data_read = 0;
-
- struct ota_mesh_packet packet;
- packet.type=OTA_Data;
-
- if(u32index == 1024)
- {
- //all data read
- data_read = 0;
- u32index = 0;
- }
- else
- {
- ESP_LOGI(MESH_TAG, "OTA-Data read: %i", u32index);
- err = esp_partition_read(currentPartition, (1024*u32index), packet.au8Payload, 1024 );
- ESP_ERROR_CHECK(err);
- data_read = 1024;
- u32index++;
- }
-
- if (data_read > 0)
- {
- //send ota fragemnt to node
- esp_mesh_send_packet(dest, &packet);
- }
-
- ESP_ERROR_CHECK(err);
- }
- else
- {
- ESP_LOGI(MESH_TAG, "Subtype: %d", (*currentPartition).subtype);
- }
- return err;
-}
-
-esp_err_t esp_mesh_ota_receive(mesh_addr_t* dest, struct ota_mesh_packet* packet)
-{
- esp_err_t err = ESP_OK;
- static esp_ota_handle_t otaHandle;
- static uint32_t u32index;
-
- const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
- const esp_partition_t * otaPartition = esp_ota_get_next_update_partition(currentPartition);
-
- if(u32index == 0)
- {
- //first run
-
- err = esp_ota_begin(otaPartition, OTA_SIZE_UNKNOWN, &otaHandle);
- ESP_ERROR_CHECK(err);
- }
-
- ESP_LOGI(MESH_TAG, "OTA-Data write: %i", u32index);
- err = esp_ota_write(otaHandle, packet->au8Payload, 1024);
-
- if(err != ESP_OK)
- {
- ESP_LOGE(MESH_TAG, "OTA-Data write error: %i at %i", err, u32index);
- }
-
- ESP_ERROR_CHECK(err);
-
-
-
- if(u32index >= 1023)
- {
- //ota update complete
-
- ESP_LOGI(MESH_TAG, "OTA-Data complete arrived: %i", u32index);
- err = esp_ota_end(otaHandle);
- ESP_ERROR_CHECK(err);
- esp_app_desc_t otaPartitionDesc;
- err = esp_ota_get_partition_description(otaPartition, &otaPartitionDesc);
- ESP_ERROR_CHECK(err);
- ESP_LOGI(MESH_TAG, "otaPartition project_name: %s", (otaPartitionDesc).project_name);
-
- err = esp_ota_set_boot_partition(otaPartition);
- ESP_ERROR_CHECK(err);
-
- struct ota_mesh_packet retPacket;
- retPacket.type=OTA_Complete;
- ESP_ERROR_CHECK (esp_mesh_send_packet(dest, &retPacket)); //send back to parent
-
- //check if this node has children --> Update them
-
- esp_restart();
- }
-
- u32index++;
-
-
- return err;
-}
-
-//returns true if MAC address is equal
-bool esp_mesh_check_MAC_Equality(uint8_t* aMAC, uint8_t* bMAC)
-{
- for (uint8_t index = 0; index < 6; index++)
- {
- if(aMAC[index] != bMAC[index]) {
- return false;
- }
- }
- return true;
-}
-
-esp_err_t esp_mesh_get_Children(mesh_addr_t children[], uint16_t* pu16ChildrenSize)
-{
- *pu16ChildrenSize = 0;
- mesh_addr_t route_table[CONFIG_MESH_ROUTE_TABLE_SIZE];
- int route_table_size = 0;
- esp_mesh_get_routing_table((mesh_addr_t *) &route_table, CONFIG_MESH_ROUTE_TABLE_SIZE * 6, &route_table_size);
- for(uint16_t index = 0; index < esp_mesh_get_routing_table_size(); index++)
- {
- if(! (esp_mesh_check_MAC_Equality(ownMAC, route_table[index].addr)) )
- {
- //child node
- // ESP_LOGI(MESH_TAG, "adding Node: \"0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\" ", route_table[index].addr[0], route_table[index].addr[1], route_table[index].addr[2], route_table[index].addr[3], route_table[index].addr[4], route_table[index].addr[5]);
- children[*pu16ChildrenSize] = route_table[index];
- *pu16ChildrenSize = (*pu16ChildrenSize)+1;
- }
- }
- return ESP_OK;
-}
-
-
-esp_err_t esp_mesh_send_packet(mesh_addr_t* dest, struct ota_mesh_packet* packet)
-{
- esp_err_t err;
- mesh_data_t data;
- data.data = tx_buf;
- data.size = sizeof(tx_buf);
- data.proto = MESH_PROTO_BIN;
- data.tos = MESH_TOS_P2P;
-
- memcpy(tx_buf, (uint8_t *)packet, sizeof(struct ota_mesh_packet));
-
- err = esp_mesh_send(dest, &data, MESH_DATA_P2P, NULL, 0);
-
- return err;
-}
-
-void esp_mesh_p2p_rx_main(void *arg)
-{
- esp_err_t err;
- mesh_addr_t from;
- mesh_data_t data;
- int flag = 0;
- data.data = rx_buf;
- data.size = RX_SIZE;
-
- while (true) {
- data.size = RX_SIZE;
- err = esp_mesh_recv(&from, &data, portMAX_DELAY, &flag, NULL, 0);
- if (err != ESP_OK || !data.size) {
- ESP_LOGE(MESH_TAG, "err:0x%x, size:%d", err, data.size);
- continue;
- }
-
- struct ota_mesh_packet packet;
- memcpy(&packet, (uint8_t *)rx_buf, sizeof(struct ota_mesh_packet));
-
- switch (packet.type)
- {
- case APP_Version_Request:
- ESP_LOGI(MESH_TAG, "recv: APP_Version_Request");
- packet.type=APP_Version_Response;
- packet.au8Payload[0] = 42; //TODO get current running version
- ESP_ERROR_CHECK (esp_mesh_send_packet(&from, &packet)); //send back to parent
- break;
- case APP_Version_Response:
- ESP_LOGI(MESH_TAG, "recv: APP_Version_Response - App Version %i: ", packet.au8Payload[0]);
- //check if node is out-dated
- esp_mesh_ota_send(&from);
- break;
- case OTA_Data:
- ESP_LOGI(MESH_TAG, "recv: OTA_Data");
- esp_mesh_ota_receive(&from, &packet);
- packet.type=OTA_ACK;
- ESP_ERROR_CHECK (esp_mesh_send_packet(&from, &packet)); //send back to parent
- break;
- case OTA_ACK:
- ESP_LOGI(MESH_TAG, "recv: OTA_ACK");
- esp_mesh_ota_send(&from);
- break;
- case OTA_Complete:
- ESP_LOGI(MESH_TAG, "recv: OTA_Complete");
- break;
- default:
- ESP_LOGE(MESH_TAG, "recv: something");
- break;
- }
-
- } //end while
- vTaskDelete(NULL);
-}
-
-
-esp_err_t esp_mesh_comm_p2p_start(void)
-{
- static bool is_comm_p2p_started = false;
- if (!is_comm_p2p_started) {
- is_comm_p2p_started = true;
- xTaskCreate(esp_mesh_p2p_rx_main, "MPRX", 7000, NULL, 5, NULL);
- }
- return ESP_OK;
-}
-
-void mesh_event_handler(void *arg, esp_event_base_t event_base,
- int32_t event_id, void *event_data)
-{
- mesh_addr_t id = {0,};
- static uint16_t last_layer = 0;
-
- switch (event_id) {
- case MESH_EVENT_STARTED: {
- esp_mesh_get_id(&id);
- ESP_LOGI(MESH_TAG, "ID:"MACSTR"", MAC2STR(id.addr));
-is_mesh_connected = false;
-mesh_layer = esp_mesh_get_layer();
-}
-break;
- case MESH_EVENT_STOPPED: {
-ESP_LOGI(MESH_TAG, "");
-is_mesh_connected = false;
-mesh_layer = esp_mesh_get_layer();
-}
-break;
- case MESH_EVENT_CHILD_CONNECTED: {
-mesh_event_child_connected_t *child_connected = (mesh_event_child_connected_t *)event_data;
-ESP_LOGI(MESH_TAG, "aid:%d, "MACSTR"",
- child_connected->aid,
- MAC2STR(child_connected->mac));
-}
-break;
- case MESH_EVENT_CHILD_DISCONNECTED: {
-mesh_event_child_disconnected_t *child_disconnected = (mesh_event_child_disconnected_t *)event_data;
-ESP_LOGI(MESH_TAG, "aid:%d, "MACSTR"",
- child_disconnected->aid,
- MAC2STR(child_disconnected->mac));
-}
-break;
- case MESH_EVENT_ROUTING_TABLE_ADD: {
-mesh_event_routing_table_change_t *routing_table = (mesh_event_routing_table_change_t *)event_data;
-ESP_LOGW(MESH_TAG, "add %d, new:%d, layer:%d",
- routing_table->rt_size_change,
- routing_table->rt_size_new, mesh_layer);
-}
-break;
- case MESH_EVENT_ROUTING_TABLE_REMOVE: {
-mesh_event_routing_table_change_t *routing_table = (mesh_event_routing_table_change_t *)event_data;
-ESP_LOGW(MESH_TAG, "remove %d, new:%d, layer:%d",
- routing_table->rt_size_change,
- routing_table->rt_size_new, mesh_layer);
-}
-break;
- case MESH_EVENT_NO_PARENT_FOUND: {
-mesh_event_no_parent_found_t *no_parent = (mesh_event_no_parent_found_t *)event_data;
-ESP_LOGI(MESH_TAG, "scan times:%d",
- no_parent->scan_times);
-}
- /* TODO handler for the failure */
-break;
- case MESH_EVENT_PARENT_CONNECTED: {
-mesh_event_connected_t *connected = (mesh_event_connected_t *)event_data;
-esp_mesh_get_id(&id);
-mesh_layer = connected->self_layer;
-memcpy(&mesh_parent_addr.addr, connected->connected.bssid, 6);
-ESP_LOGI(MESH_TAG,
- "layer:%d-->%d, parent:"MACSTR"%s, ID:"MACSTR", duty:%d",
- last_layer, mesh_layer, MAC2STR(mesh_parent_addr.addr),
- esp_mesh_is_root() ? "" :
- (mesh_layer == 2) ? "" : "", MAC2STR(id.addr), connected->duty);
-last_layer = mesh_layer;
- // mesh_connected_indicator(mesh_layer);
-is_mesh_connected = true;
-if (esp_mesh_is_root()) {
-esp_netif_dhcpc_start(netif_sta);
-}
-esp_mesh_comm_p2p_start();//start receiving
-}
-break;
- case MESH_EVENT_PARENT_DISCONNECTED: {
-mesh_event_disconnected_t *disconnected = (mesh_event_disconnected_t *)event_data;
-ESP_LOGI(MESH_TAG,
- "reason:%d",
- disconnected->reason);
-is_mesh_connected = false;
- // mesh_disconnected_indicator();
-mesh_layer = esp_mesh_get_layer();
-}
-break;
- case MESH_EVENT_LAYER_CHANGE: {
-mesh_event_layer_change_t *layer_change = (mesh_event_layer_change_t *)event_data;
-mesh_layer = layer_change->new_layer;
-ESP_LOGI(MESH_TAG, "layer:%d-->%d%s",
- last_layer, mesh_layer,
- esp_mesh_is_root() ? "" :
- (mesh_layer == 2) ? "" : "");
-last_layer = mesh_layer;
- // mesh_connected_indicator(mesh_layer);
-}
-break;
- case MESH_EVENT_ROOT_ADDRESS: {
-mesh_event_root_address_t *root_addr = (mesh_event_root_address_t *)event_data;
-ESP_LOGI(MESH_TAG, "root address:"MACSTR"",
- MAC2STR(root_addr->addr));
-}
-break;
- case MESH_EVENT_VOTE_STARTED: {
-mesh_event_vote_started_t *vote_started = (mesh_event_vote_started_t *)event_data;
-ESP_LOGI(MESH_TAG,
- "attempts:%d, reason:%d, rc_addr:"MACSTR"",
- vote_started->attempts,
- vote_started->reason,
- MAC2STR(vote_started->rc_addr.addr));
-}
-break;
- case MESH_EVENT_VOTE_STOPPED: {
-ESP_LOGI(MESH_TAG, "");
-break;
-}
- case MESH_EVENT_ROOT_SWITCH_REQ: {
-mesh_event_root_switch_req_t *switch_req = (mesh_event_root_switch_req_t *)event_data;
-ESP_LOGI(MESH_TAG,
- "reason:%d, rc_addr:"MACSTR"",
- switch_req->reason,
- MAC2STR( switch_req->rc_addr.addr));
-}
-break;
- case MESH_EVENT_ROOT_SWITCH_ACK: {
-/* new root */
-mesh_layer = esp_mesh_get_layer();
-esp_mesh_get_parent_bssid(&mesh_parent_addr);
-ESP_LOGI(MESH_TAG, "layer:%d, parent:"MACSTR"", mesh_layer, MAC2STR(mesh_parent_addr.addr));
-}
-break;
- case MESH_EVENT_TODS_STATE: {
-mesh_event_toDS_state_t *toDs_state = (mesh_event_toDS_state_t *)event_data;
-ESP_LOGI(MESH_TAG, "state:%d", *toDs_state);
-}
-break;
- case MESH_EVENT_ROOT_FIXED: {
-mesh_event_root_fixed_t *root_fixed = (mesh_event_root_fixed_t *)event_data;
-ESP_LOGI(MESH_TAG, "%s",
- root_fixed->is_fixed ? "fixed" : "not fixed");
-}
-break;
- case MESH_EVENT_ROOT_ASKED_YIELD: {
-mesh_event_root_conflict_t *root_conflict = (mesh_event_root_conflict_t *)event_data;
-ESP_LOGI(MESH_TAG,
- ""MACSTR", rssi:%d, capacity:%d",
- MAC2STR(root_conflict->addr),
- root_conflict->rssi,
- root_conflict->capacity);
-}
-break;
- case MESH_EVENT_CHANNEL_SWITCH: {
-mesh_event_channel_switch_t *channel_switch = (mesh_event_channel_switch_t *)event_data;
-ESP_LOGI(MESH_TAG, "new channel:%d", channel_switch->channel);
-}
-break;
- case MESH_EVENT_SCAN_DONE: {
-mesh_event_scan_done_t *scan_done = (mesh_event_scan_done_t *)event_data;
-ESP_LOGI(MESH_TAG, "number:%d",
- scan_done->number);
-}
-break;
- case MESH_EVENT_NETWORK_STATE: {
-mesh_event_network_state_t *network_state = (mesh_event_network_state_t *)event_data;
-ESP_LOGI(MESH_TAG, "is_rootless:%d",
- network_state->is_rootless);
-}
-break;
- case MESH_EVENT_STOP_RECONNECTION: {
-ESP_LOGI(MESH_TAG, "");
-}
-break;
- case MESH_EVENT_FIND_NETWORK: {
-mesh_event_find_network_t *find_network = (mesh_event_find_network_t *)event_data;
-ESP_LOGI(MESH_TAG, "new channel:%d, router BSSID:"MACSTR"",
- find_network->channel, MAC2STR(find_network->router_bssid));
-}
-break;
- case MESH_EVENT_ROUTER_SWITCH: {
-mesh_event_router_switch_t *router_switch = (mesh_event_router_switch_t *)event_data;
-ESP_LOGI(MESH_TAG, "new router:%s, channel:%d, "MACSTR"",
- router_switch->ssid, router_switch->channel, MAC2STR(router_switch->bssid));
-}
-break;
- case MESH_EVENT_PS_PARENT_DUTY: {
-mesh_event_ps_duty_t *ps_duty = (mesh_event_ps_duty_t *)event_data;
-ESP_LOGI(MESH_TAG, "duty:%d", ps_duty->duty);
-}
-break;
- case MESH_EVENT_PS_CHILD_DUTY: {
-mesh_event_ps_duty_t *ps_duty = (mesh_event_ps_duty_t *)event_data;
-ESP_LOGI(MESH_TAG, "cidx:%d, "MACSTR", duty:%d", ps_duty->child_connected.aid-1,
-MAC2STR(ps_duty->child_connected.mac), ps_duty->duty);
-}
-break;
- default:
- ESP_LOGI(MESH_TAG, "unknown id:%d", event_id);
- break;
- }
-}
-
-void ip_event_handler(void *arg, esp_event_base_t event_base,
- int32_t event_id, void *event_data)
-{
- ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data;
- ESP_LOGI(MESH_TAG, "IP:" IPSTR, IP2STR(&event->ip_info.ip));
-
-}
-
-
-
-
-void app_main(void)
-{
-
- esp_err_t err;
-
-/*
-
-
- err = nvs_flash_erase();
-
- if(err != ESP_OK){
- ESP_LOGI(MESH_TAG, "Error: %x", err);
- while(1){
-
- }
- }
- */
-
- ESP_ERROR_CHECK(nvs_flash_init());
-
- ESP_LOGI(MESH_TAG, "Hello World");
- const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
- ESP_LOGI(MESH_TAG, "Type: %d", (*currentPartition).subtype);
- ESP_LOGI(MESH_TAG, "Start address: %d", (*currentPartition).address);
- ESP_LOGI(MESH_TAG, "Size: %d", (*currentPartition).size); //passt
- ESP_LOGI(MESH_TAG, "Encrypted: %d", (*currentPartition).encrypted);
-
- esp_app_desc_t curPartitionDesc;
- err = esp_ota_get_partition_description(currentPartition, &curPartitionDesc);
- ESP_ERROR_CHECK(err);
- ESP_LOGI(MESH_TAG, "currentPartition project_name: %s", (curPartitionDesc).project_name);
- ESP_LOGI(MESH_TAG, "currentPartition version: %s", (curPartitionDesc).version);
- ESP_LOGI(MESH_TAG, "currentPartition Timestamp: %s %s", (curPartitionDesc).date, (curPartitionDesc).time);
-
- char test[] = "1.2.3";
-
-
- if(bNewerVersion((curPartitionDesc).version, test)){
-
- ESP_LOGI(MESH_TAG, "Newer Version available");
-
- }
-
-
-
- /* tcpip initialization */
- ESP_ERROR_CHECK(esp_netif_init());
-
- /* event initialization */
- ESP_ERROR_CHECK(esp_event_loop_create_default());
-
- /* create network interfaces for mesh (only station instance saved for further manipulation, soft AP instance ignored */
- ESP_ERROR_CHECK(esp_netif_create_default_wifi_mesh_netifs(&netif_sta, NULL));
-
- /* wifi initialization */
- wifi_init_config_t config = WIFI_INIT_CONFIG_DEFAULT();
- ESP_ERROR_CHECK(esp_wifi_init(&config));
- ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &ip_event_handler, NULL));
- ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_FLASH));
- ESP_ERROR_CHECK(esp_wifi_start());
-
- /* mesh initialization */
- ESP_ERROR_CHECK(esp_mesh_init());
- ESP_ERROR_CHECK(esp_event_handler_register(MESH_EVENT, ESP_EVENT_ANY_ID, &mesh_event_handler, NULL));
-
- /* set mesh topology */
- ESP_ERROR_CHECK(esp_mesh_set_topology(CONFIG_MESH_TOPOLOGY));
-
- /* set mesh max layer according to the topology */
- ESP_ERROR_CHECK(esp_mesh_set_max_layer(CONFIG_MESH_MAX_LAYER));
- ESP_ERROR_CHECK(esp_mesh_set_vote_percentage(1));
- ESP_ERROR_CHECK(esp_mesh_set_xon_qsize(128));
-
- /* Disable mesh PS function */
- ESP_ERROR_CHECK(esp_mesh_disable_ps());
- ESP_ERROR_CHECK(esp_mesh_set_ap_assoc_expire(10));
-
- mesh_cfg_t cfg = MESH_INIT_CONFIG_DEFAULT();
-
- /* mesh ID */
- memcpy((uint8_t *) &cfg.mesh_id, MESH_ID, 6);
-
- /* router */
- cfg.channel = CONFIG_MESH_CHANNEL;
- cfg.router.ssid_len = strlen(CONFIG_MESH_ROUTER_SSID);
- memcpy((uint8_t *) &cfg.router.ssid, CONFIG_MESH_ROUTER_SSID, cfg.router.ssid_len);
- memcpy((uint8_t *) &cfg.router.password, CONFIG_MESH_ROUTER_PASSWD,
- strlen(CONFIG_MESH_ROUTER_PASSWD));
-
- /* mesh softAP */
- ESP_ERROR_CHECK(esp_mesh_set_ap_authmode(CONFIG_MESH_AP_AUTHMODE));
- cfg.mesh_ap.max_connection = CONFIG_MESH_AP_CONNECTIONS;
- memcpy((uint8_t *) &cfg.mesh_ap.password, CONFIG_MESH_AP_PASSWD,
- strlen(CONFIG_MESH_AP_PASSWD));
- ESP_ERROR_CHECK(esp_mesh_set_config(&cfg));
-
- ESP_ERROR_CHECK(esp_base_mac_addr_get(ownMAC));
-
- ESP_LOGI(MESH_TAG, "Own MAC: \"0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\" ", ownMAC[0], ownMAC[1], ownMAC[2], ownMAC[3], ownMAC[4], ownMAC[5]);
-
- /* mesh start */
- ESP_ERROR_CHECK(esp_mesh_start());
-
- ESP_LOGI(MESH_TAG, "mesh starts successfully, heap:%d, %s<%d>%s, ps:%d\n", esp_get_minimum_free_heap_size(),
- esp_mesh_is_root_fixed() ? "root fixed" : "root not fixed",
- esp_mesh_get_topology(), esp_mesh_get_topology() ? "(chain)":"(tree)", esp_mesh_is_ps_enabled());
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/partitions.csv b/partitions.csv
deleted file mode 100644
index 35a548f..0000000
--- a/partitions.csv
+++ /dev/null
@@ -1,8 +0,0 @@
-# Name, Type, SubType, Offset, Size, Flags
-# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
-nvs, data, nvs, , 0x4000,
-otadata, data, ota, , 0x2000,
-phy_init, data, phy, , 0x1000,
-factory, app, factory, , 1M,
-ota_0, app, ota_0, , 1M,
-ota_1, app, ota_1, , 1M,
diff --git a/sdkconfig b/sdkconfig
index 0dcf367..81d705d 100644
--- a/sdkconfig
+++ b/sdkconfig
@@ -31,8 +31,7 @@ CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
CONFIG_APP_COMPILE_TIME_DATE=y
# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
-CONFIG_APP_PROJECT_VER_FROM_CONFIG=y
-CONFIG_APP_PROJECT_VER="0.0.1"
+# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
# end of Application manager
@@ -67,15 +66,8 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
#
# Security features
#
-CONFIG_SECURE_SIGNED_ON_UPDATE=y
-CONFIG_SECURE_SIGNED_APPS=y
-CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT=y
-CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME=y
-# CONFIG_SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT is not set
-CONFIG_SECURE_SIGNED_ON_UPDATE_NO_SECURE_BOOT=y
+# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
# CONFIG_SECURE_BOOT is not set
-CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=y
-CONFIG_SECURE_BOOT_SIGNING_KEY="secure_boot_signing_key.pem"
# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
# end of Security features
@@ -95,11 +87,11 @@ CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
CONFIG_ESPTOOLPY_FLASHFREQ="40m"
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
+# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
+CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
CONFIG_ESPTOOLPY_BEFORE_RESET=y
# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
@@ -122,44 +114,28 @@ CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
#
# Partition Table
#
-# CONFIG_PARTITION_TABLE_SINGLE_APP is not set
+CONFIG_PARTITION_TABLE_SINGLE_APP=y
# CONFIG_PARTITION_TABLE_TWO_OTA is not set
-CONFIG_PARTITION_TABLE_CUSTOM=y
+# CONFIG_PARTITION_TABLE_CUSTOM is not set
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
-CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
CONFIG_PARTITION_TABLE_OFFSET=0x8000
CONFIG_PARTITION_TABLE_MD5=y
# end of Partition Table
#
-# Mesh OTA Configuration
+# Example Connection Configuration
#
-CONFIG_MESH_TOPO_TREE=y
-# CONFIG_MESH_TOPO_CHAIN is not set
-CONFIG_MESH_TOPOLOGY=0
-CONFIG_MESH_ENABLE_PS=y
-CONFIG_MESH_PS_DEV_DUTY_TYPE_REQUEST=y
-# CONFIG_MESH_PS_DEV_DUTY_TYPE_DEMAND is not set
-CONFIG_MESH_PS_DEV_DUTY_TYPE=1
-CONFIG_MESH_PS_DEV_DUTY=12
-CONFIG_MESH_PS_NWK_DUTY=12
-CONFIG_MESH_PS_NWK_DUTY_DURATION=-1
-CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE=y
-# CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_UPLINK is not set
-CONFIG_MESH_PS_NWK_DUTY_RULE=0
-CONFIG_MESH_MAX_LAYER=6
-CONFIG_MESH_CHANNEL=13
-CONFIG_MESH_ROUTER_SSID="labNet"
-CONFIG_MESH_ROUTER_PASSWD="12345678"
-# CONFIG_WIFI_AUTH_OPEN is not set
-# CONFIG_WIFI_AUTH_WPA_PSK is not set
-CONFIG_WIFI_AUTH_WPA2_PSK=y
-# CONFIG_WIFI_AUTH_WPA_WPA2_PSK is not set
-CONFIG_MESH_AP_AUTHMODE=3
-CONFIG_MESH_AP_PASSWD="qaws1234"
-CONFIG_MESH_AP_CONNECTIONS=6
-CONFIG_MESH_ROUTE_TABLE_SIZE=50
-# end of Mesh OTA Configuration
+CONFIG_EXAMPLE_CONNECT_WIFI=y
+CONFIG_EXAMPLE_WIFI_SSID="labNet"
+CONFIG_EXAMPLE_WIFI_PASSWORD="12345678"
+# CONFIG_EXAMPLE_CONNECT_ETHERNET is not set
+CONFIG_EXAMPLE_CONNECT_IPV6=y
+CONFIG_EXAMPLE_CONNECT_IPV6_PREF_LOCAL_LINK=y
+# CONFIG_EXAMPLE_CONNECT_IPV6_PREF_GLOBAL is not set
+# CONFIG_EXAMPLE_CONNECT_IPV6_PREF_SITE_LOCAL is not set
+# CONFIG_EXAMPLE_CONNECT_IPV6_PREF_UNIQUE_LOCAL is not set
+# end of Example Connection Configuration
#
# Compiler options
@@ -1034,7 +1010,7 @@ CONFIG_WS_BUFFER_SIZE=1024
#
CONFIG_UNITY_ENABLE_FLOAT=y
CONFIG_UNITY_ENABLE_DOUBLE=y
-CONFIG_UNITY_ENABLE_COLOR=y
+# CONFIG_UNITY_ENABLE_COLOR is not set
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
# CONFIG_UNITY_ENABLE_FIXTURE is not set
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
@@ -1087,3 +1063,161 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
#
# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
# end of Compatibility options
+
+# Deprecated options for backward compatibility
+CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
+# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
+# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
+# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
+CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
+# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
+# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
+CONFIG_LOG_BOOTLOADER_LEVEL=3
+# CONFIG_APP_ROLLBACK_ENABLE is not set
+# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
+# CONFIG_FLASHMODE_QIO is not set
+# CONFIG_FLASHMODE_QOUT is not set
+CONFIG_FLASHMODE_DIO=y
+# CONFIG_FLASHMODE_DOUT is not set
+# CONFIG_MONITOR_BAUD_9600B is not set
+# CONFIG_MONITOR_BAUD_57600B is not set
+CONFIG_MONITOR_BAUD_115200B=y
+# CONFIG_MONITOR_BAUD_230400B is not set
+# CONFIG_MONITOR_BAUD_921600B is not set
+# CONFIG_MONITOR_BAUD_2MB is not set
+# CONFIG_MONITOR_BAUD_OTHER is not set
+CONFIG_MONITOR_BAUD_OTHER_VAL=115200
+CONFIG_MONITOR_BAUD=115200
+CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
+# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
+CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
+# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
+# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
+# CONFIG_CXX_EXCEPTIONS is not set
+CONFIG_STACK_CHECK_NONE=y
+# CONFIG_STACK_CHECK_NORM is not set
+# CONFIG_STACK_CHECK_STRONG is not set
+# CONFIG_STACK_CHECK_ALL is not set
+# CONFIG_WARN_WRITE_STRINGS is not set
+# CONFIG_DISABLE_GCC8_WARNINGS is not set
+# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
+CONFIG_ESP32_APPTRACE_DEST_NONE=y
+CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
+CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
+CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
+CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
+CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
+CONFIG_ADC2_DISABLE_DAC=y
+# CONFIG_SPIRAM_SUPPORT is not set
+CONFIG_TRACEMEM_RESERVE_DRAM=0x0
+# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
+CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
+CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
+# CONFIG_ULP_COPROC_ENABLED is not set
+CONFIG_ULP_COPROC_RESERVE_MEM=0
+CONFIG_BROWNOUT_DET=y
+CONFIG_BROWNOUT_DET_LVL_SEL_0=y
+# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
+# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
+CONFIG_BROWNOUT_DET_LVL=0
+CONFIG_REDUCE_PHY_TX_POWER=y
+CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
+# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
+# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
+# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
+# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
+# CONFIG_NO_BLOBS is not set
+# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
+CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
+CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
+CONFIG_MAIN_TASK_STACK_SIZE=3584
+CONFIG_IPC_TASK_STACK_SIZE=1024
+CONFIG_CONSOLE_UART_DEFAULT=y
+# CONFIG_CONSOLE_UART_CUSTOM is not set
+# CONFIG_ESP_CONSOLE_UART_NONE is not set
+CONFIG_CONSOLE_UART=y
+CONFIG_CONSOLE_UART_NUM=0
+CONFIG_CONSOLE_UART_BAUDRATE=115200
+CONFIG_INT_WDT=y
+CONFIG_INT_WDT_TIMEOUT_MS=300
+CONFIG_INT_WDT_CHECK_CPU1=y
+CONFIG_TASK_WDT=y
+# CONFIG_TASK_WDT_PANIC is not set
+CONFIG_TASK_WDT_TIMEOUT_S=5
+CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
+CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
+# CONFIG_EVENT_LOOP_PROFILING is not set
+CONFIG_POST_EVENTS_FROM_ISR=y
+CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
+# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
+CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
+# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
+# CONFIG_ESP32S2_PANIC_GDBSTUB is not set
+CONFIG_TIMER_TASK_STACK_SIZE=3584
+# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
+# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
+CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
+CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
+CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
+CONFIG_MB_QUEUE_LENGTH=20
+CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
+CONFIG_MB_SERIAL_BUF_SIZE=256
+CONFIG_MB_SERIAL_TASK_PRIO=10
+CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
+CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
+CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
+CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
+CONFIG_MB_CONTROLLER_STACK_SIZE=4096
+CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
+CONFIG_MB_TIMER_PORT_ENABLED=y
+CONFIG_MB_TIMER_GROUP=0
+CONFIG_MB_TIMER_INDEX=0
+# CONFIG_SUPPORT_STATIC_ALLOCATION is not set
+CONFIG_TIMER_TASK_PRIORITY=1
+CONFIG_TIMER_TASK_STACK_DEPTH=2048
+CONFIG_TIMER_QUEUE_LENGTH=10
+# CONFIG_L2_TO_L3_COPY is not set
+# CONFIG_USE_ONLY_LWIP_SELECT is not set
+CONFIG_ESP_GRATUITOUS_ARP=y
+CONFIG_GARP_TMR_INTERVAL=60
+CONFIG_TCPIP_RECVMBOX_SIZE=32
+CONFIG_TCP_MAXRTX=12
+CONFIG_TCP_SYNMAXRTX=12
+CONFIG_TCP_MSS=1440
+CONFIG_TCP_MSL=60000
+CONFIG_TCP_SND_BUF_DEFAULT=5744
+CONFIG_TCP_WND_DEFAULT=5744
+CONFIG_TCP_RECVMBOX_SIZE=6
+CONFIG_TCP_QUEUE_OOSEQ=y
+# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
+CONFIG_TCP_OVERSIZE_MSS=y
+# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
+# CONFIG_TCP_OVERSIZE_DISABLE is not set
+CONFIG_UDP_RECVMBOX_SIZE=6
+CONFIG_TCPIP_TASK_STACK_SIZE=3072
+CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
+# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
+# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
+CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
+# CONFIG_PPP_SUPPORT is not set
+CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
+CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
+CONFIG_ESP32_PTHREAD_STACK_MIN=768
+CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
+# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
+# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
+CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
+CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
+CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
+# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
+# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
+CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
+CONFIG_SUPPORT_TERMIOS=y
+CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
+CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
+# End of deprecated options
diff --git a/secure_boot_signing_key.pem b/secure_boot_signing_key.pem
deleted file mode 100644
index be8f795..0000000
--- a/secure_boot_signing_key.pem
+++ /dev/null
@@ -1,5 +0,0 @@
------BEGIN EC PRIVATE KEY-----
-MHcCAQEEIPADEvh72EIFEGixpoyTcMq6k3TdS5vYytoCd/aFdcOUoAoGCCqGSM49
-AwEHoUQDQgAE3LyvSuovRT0+O9V8fcjvdHT1vaS2RRs6Zh7RKd3LemhOR+ZZ7KmE
-7QZiCmbVxMsano1h8rJG0m4PSv/eQ03K8A==
------END EC PRIVATE KEY-----
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
deleted file mode 100644
index e47aa84..0000000
--- a/test/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-# This is the project CMakeLists.txt file for the test subproject
-cmake_minimum_required(VERSION 3.5)
-
-# Include the components directory of the main application:
-#
-set(EXTRA_COMPONENT_DIRS "../components")
-
-# Set the components to include the tests for.
-# This can be overriden from CMake cache:
-# - when invoking CMake directly: cmake -D TEST_COMPONENTS="xxxxx" ..
-# - when using idf.py: idf.py -T xxxxx build
-#
-set(TEST_COMPONENTS "mesh_ota" CACHE STRING "List of components to test")
-
-include($ENV{IDF_PATH}/tools/cmake/project.cmake)
-project(unit_test_mesh_ota)
diff --git a/test/Makefile b/test/Makefile
deleted file mode 100644
index 5e6a595..0000000
--- a/test/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# This is a project Makefile for the test subproject.
-#
-
-PROJECT_NAME := unit_test_mesh_ota
-
-# Include the components directory of the main application:
-#
-EXTRA_COMPONENT_DIRS := $(realpath ../components)
-
-# Set the components to include the tests for.
-# This can be overriden from the command line
-# (e.g. 'make TEST_COMPONENTS=xxxx flash monitor')
-#
-TEST_COMPONENTS ?= mesh_ota
-
-include $(IDF_PATH)/make/project.mk
diff --git a/test/main/CMakeLists.txt b/test/main/CMakeLists.txt
deleted file mode 100644
index b9d8f20..0000000
--- a/test/main/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-idf_component_register(SRCS "unit_test_mesh_ota.c"
- INCLUDE_DIRS ".")
diff --git a/test/main/component.mk b/test/main/component.mk
deleted file mode 100644
index e69de29..0000000
diff --git a/test/main/unit_test_mesh_ota.c b/test/main/unit_test_mesh_ota.c
deleted file mode 100644
index 1c7fe6f..0000000
--- a/test/main/unit_test_mesh_ota.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Example test application for testable component.
-
- This example code is in the Public Domain (or CC0 licensed, at your option.)
-
- Unless required by applicable law or agreed to in writing, this
- software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
- CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#include
-#include
-#include "unity.h"
-
-static void print_banner(const char* text);
-
-void app_main(void)
-{
- /* These are the different ways of running registered tests.
- * In practice, only one of them is usually needed.
- *
- * UNITY_BEGIN() and UNITY_END() calls tell Unity to print a summary
- * (number of tests executed/failed/ignored) of tests executed between these calls.
- */
-
- /*
- print_banner("Executing one test by its name");
- UNITY_BEGIN();
- unity_run_test_by_name("Mean of an empty array is zero");
- UNITY_END();
-
- print_banner("Running tests with [mean] tag");
- UNITY_BEGIN();
- unity_run_tests_by_tag("[mean]", false);
- UNITY_END();
-
- print_banner("Running tests without [fails] tag");
- UNITY_BEGIN();
- unity_run_tests_by_tag("[fails]", true);
- UNITY_END();
-*/
-
-
- print_banner("Running all the registered tests");
- UNITY_BEGIN();
- unity_run_all_tests();
- UNITY_END();
-
- print_banner("Starting interactive test menu");
- /* This function will not return, and will be busy waiting for UART input.
- * Make sure that task watchdog is disabled if you use this function.
- */
- unity_run_menu();
-}
-
-static void print_banner(const char* text)
-{
- printf("\n#### %s #####\n\n", text);
-}
diff --git a/test/sdkconfig b/test/sdkconfig
deleted file mode 100644
index 51f995d..0000000
--- a/test/sdkconfig
+++ /dev/null
@@ -1,1201 +0,0 @@
-#
-# Automatically generated file. DO NOT EDIT.
-# Espressif IoT Development Framework (ESP-IDF) Project Configuration
-#
-CONFIG_IDF_CMAKE=y
-CONFIG_IDF_TARGET_ARCH_XTENSA=y
-CONFIG_IDF_TARGET="esp32"
-CONFIG_IDF_TARGET_ESP32=y
-CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
-
-#
-# SDK tool configuration
-#
-CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set
-# end of SDK tool configuration
-
-#
-# Build type
-#
-CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y
-# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
-CONFIG_APP_BUILD_GENERATE_BINARIES=y
-CONFIG_APP_BUILD_BOOTLOADER=y
-CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
-# end of Build type
-
-#
-# Application manager
-#
-CONFIG_APP_COMPILE_TIME_DATE=y
-# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
-# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
-# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
-CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
-# end of Application manager
-
-#
-# Bootloader config
-#
-CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000
-CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
-CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y
-# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
-CONFIG_BOOTLOADER_LOG_LEVEL=3
-# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
-CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
-# CONFIG_BOOTLOADER_FACTORY_RESET is not set
-# CONFIG_BOOTLOADER_APP_TEST is not set
-CONFIG_BOOTLOADER_WDT_ENABLE=y
-# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
-CONFIG_BOOTLOADER_WDT_TIME_MS=9000
-# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
-CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
-# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
-# end of Bootloader config
-
-#
-# Security features
-#
-# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
-# CONFIG_SECURE_BOOT is not set
-# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
-# end of Security features
-
-#
-# Serial flasher config
-#
-CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
-# CONFIG_ESPTOOLPY_NO_STUB is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
-CONFIG_ESPTOOLPY_FLASHMODE_DIO=y
-# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
-CONFIG_ESPTOOLPY_FLASHMODE="dio"
-# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
-# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set
-# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ="40m"
-# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
-# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
-CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
-CONFIG_ESPTOOLPY_BEFORE_RESET=y
-# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
-CONFIG_ESPTOOLPY_BEFORE="default_reset"
-CONFIG_ESPTOOLPY_AFTER_RESET=y
-# CONFIG_ESPTOOLPY_AFTER_NORESET is not set
-CONFIG_ESPTOOLPY_AFTER="hard_reset"
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
-# end of Serial flasher config
-
-#
-# Partition Table
-#
-CONFIG_PARTITION_TABLE_SINGLE_APP=y
-# CONFIG_PARTITION_TABLE_TWO_OTA is not set
-# CONFIG_PARTITION_TABLE_CUSTOM is not set
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
-CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
-CONFIG_PARTITION_TABLE_OFFSET=0x8000
-CONFIG_PARTITION_TABLE_MD5=y
-# end of Partition Table
-
-#
-# Compiler options
-#
-CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
-# CONFIG_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_COMPILER_OPTIMIZATION_NONE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
-# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
-# CONFIG_COMPILER_CXX_RTTI is not set
-CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
-# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set
-# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set
-# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_COMPILER_DUMP_RTL_FILES is not set
-# end of Compiler options
-
-#
-# Component config
-#
-
-#
-# Application Level Tracing
-#
-# CONFIG_APPTRACE_DEST_TRAX is not set
-CONFIG_APPTRACE_DEST_NONE=y
-CONFIG_APPTRACE_LOCK_ENABLE=y
-# end of Application Level Tracing
-
-#
-# ESP-ASIO
-#
-# CONFIG_ASIO_SSL_SUPPORT is not set
-# end of ESP-ASIO
-
-#
-# Bluetooth
-#
-# CONFIG_BT_ENABLED is not set
-CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
-CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
-CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
-CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0
-CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
-CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
-CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
-CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
-CONFIG_BT_RESERVE_DRAM=0
-# end of Bluetooth
-
-#
-# CoAP Configuration
-#
-CONFIG_COAP_MBEDTLS_PSK=y
-# CONFIG_COAP_MBEDTLS_PKI is not set
-# CONFIG_COAP_MBEDTLS_DEBUG is not set
-CONFIG_COAP_LOG_DEFAULT_LEVEL=0
-# end of CoAP Configuration
-
-#
-# Driver configurations
-#
-
-#
-# ADC configuration
-#
-# CONFIG_ADC_FORCE_XPD_FSM is not set
-CONFIG_ADC_DISABLE_DAC=y
-# end of ADC configuration
-
-#
-# SPI configuration
-#
-# CONFIG_SPI_MASTER_IN_IRAM is not set
-CONFIG_SPI_MASTER_ISR_IN_IRAM=y
-# CONFIG_SPI_SLAVE_IN_IRAM is not set
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
-# end of SPI configuration
-
-#
-# TWAI configuration
-#
-# CONFIG_TWAI_ISR_IN_IRAM is not set
-# end of TWAI configuration
-
-#
-# UART configuration
-#
-# CONFIG_UART_ISR_IN_IRAM is not set
-# end of UART configuration
-
-#
-# RTCIO configuration
-#
-# CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set
-# end of RTCIO configuration
-# end of Driver configurations
-
-#
-# eFuse Bit Manager
-#
-# CONFIG_EFUSE_CUSTOM_TABLE is not set
-# CONFIG_EFUSE_VIRTUAL is not set
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set
-CONFIG_EFUSE_MAX_BLK_LEN=192
-# end of eFuse Bit Manager
-
-#
-# ESP-TLS
-#
-CONFIG_ESP_TLS_USING_MBEDTLS=y
-# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
-# CONFIG_ESP_TLS_SERVER is not set
-# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
-# end of ESP-TLS
-
-#
-# ESP32-specific
-#
-CONFIG_ESP32_REV_MIN_0=y
-# CONFIG_ESP32_REV_MIN_1 is not set
-# CONFIG_ESP32_REV_MIN_2 is not set
-# CONFIG_ESP32_REV_MIN_3 is not set
-CONFIG_ESP32_REV_MIN=0
-CONFIG_ESP32_DPORT_WORKAROUND=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
-# CONFIG_ESP32_SPIRAM_SUPPORT is not set
-# CONFIG_ESP32_TRAX is not set
-CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
-# CONFIG_ESP32_ULP_COPROC_ENABLED is not set
-CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0
-CONFIG_ESP32_DEBUG_OCDAWARE=y
-CONFIG_ESP32_BROWNOUT_DET=y
-CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_ESP32_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_REDUCE_PHY_TX_POWER=y
-CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y
-# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set
-CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set
-# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set
-CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024
-CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000
-CONFIG_ESP32_XTAL_FREQ_40=y
-# CONFIG_ESP32_XTAL_FREQ_26 is not set
-# CONFIG_ESP32_XTAL_FREQ_AUTO is not set
-CONFIG_ESP32_XTAL_FREQ=40
-# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_ESP32_NO_BLOBS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set
-CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
-# end of ESP32-specific
-
-#
-# ADC-Calibration
-#
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
-CONFIG_ADC_CAL_LUT_ENABLE=y
-# end of ADC-Calibration
-
-#
-# Common ESP-related
-#
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
-CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
-CONFIG_ESP_IPC_TASK_STACK_SIZE=1024
-CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
-CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
-CONFIG_ESP_CONSOLE_UART_DEFAULT=y
-# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_NONE is not set
-CONFIG_ESP_CONSOLE_UART=y
-CONFIG_ESP_CONSOLE_UART_NUM=0
-CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
-CONFIG_ESP_INT_WDT=y
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_INT_WDT_CHECK_CPU1=y
-# CONFIG_ESP_TASK_WDT is not set
-# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_BT_OFFSET=2
-CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
-# end of Common ESP-related
-
-#
-# Ethernet
-#
-CONFIG_ETH_ENABLED=y
-CONFIG_ETH_USE_ESP32_EMAC=y
-CONFIG_ETH_PHY_INTERFACE_RMII=y
-# CONFIG_ETH_PHY_INTERFACE_MII is not set
-CONFIG_ETH_RMII_CLK_INPUT=y
-# CONFIG_ETH_RMII_CLK_OUTPUT is not set
-CONFIG_ETH_RMII_CLK_IN_GPIO=0
-CONFIG_ETH_DMA_BUFFER_SIZE=512
-CONFIG_ETH_DMA_RX_BUFFER_NUM=10
-CONFIG_ETH_DMA_TX_BUFFER_NUM=10
-CONFIG_ETH_USE_SPI_ETHERNET=y
-# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
-# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
-# CONFIG_ETH_USE_OPENETH is not set
-# end of Ethernet
-
-#
-# Event Loop Library
-#
-# CONFIG_ESP_EVENT_LOOP_PROFILING is not set
-CONFIG_ESP_EVENT_POST_FROM_ISR=y
-CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
-# end of Event Loop Library
-
-#
-# GDB Stub
-#
-# end of GDB Stub
-
-#
-# ESP HTTP client
-#
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set
-# end of ESP HTTP client
-
-#
-# HTTP Server
-#
-CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
-CONFIG_HTTPD_MAX_URI_LEN=512
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
-CONFIG_HTTPD_PURGE_BUF_LEN=32
-# CONFIG_HTTPD_LOG_PURGE_DATA is not set
-# CONFIG_HTTPD_WS_SUPPORT is not set
-# end of HTTP Server
-
-#
-# ESP HTTPS OTA
-#
-# CONFIG_OTA_ALLOW_HTTP is not set
-# end of ESP HTTPS OTA
-
-#
-# ESP HTTPS server
-#
-# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
-# end of ESP HTTPS server
-
-#
-# ESP NETIF Adapter
-#
-CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
-CONFIG_ESP_NETIF_TCPIP_LWIP=y
-# CONFIG_ESP_NETIF_LOOPBACK is not set
-CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y
-# end of ESP NETIF Adapter
-
-#
-# Power Management
-#
-# CONFIG_PM_ENABLE is not set
-# end of Power Management
-
-#
-# ESP System Settings
-#
-# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
-CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
-# end of ESP System Settings
-
-#
-# High resolution timer (esp_timer)
-#
-# CONFIG_ESP_TIMER_PROFILING is not set
-CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y
-CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y
-CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
-# CONFIG_ESP_TIMER_IMPL_FRC2 is not set
-CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
-# end of High resolution timer (esp_timer)
-
-#
-# Wi-Fi
-#
-CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
-CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
-CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
-CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
-CONFIG_ESP32_WIFI_TX_BA_WIN=6
-CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
-CONFIG_ESP32_WIFI_RX_BA_WIN=6
-CONFIG_ESP32_WIFI_NVS_ENABLED=y
-CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
-# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
-CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
-CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
-# CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE is not set
-CONFIG_ESP32_WIFI_IRAM_OPT=y
-CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
-CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
-# end of Wi-Fi
-
-#
-# PHY
-#
-CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP32_PHY_MAX_TX_POWER=20
-# end of PHY
-
-#
-# Core dump
-#
-# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
-# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set
-CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y
-# end of Core dump
-
-#
-# FAT Filesystem support
-#
-# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set
-CONFIG_FATFS_CODEPAGE_437=y
-# CONFIG_FATFS_CODEPAGE_720 is not set
-# CONFIG_FATFS_CODEPAGE_737 is not set
-# CONFIG_FATFS_CODEPAGE_771 is not set
-# CONFIG_FATFS_CODEPAGE_775 is not set
-# CONFIG_FATFS_CODEPAGE_850 is not set
-# CONFIG_FATFS_CODEPAGE_852 is not set
-# CONFIG_FATFS_CODEPAGE_855 is not set
-# CONFIG_FATFS_CODEPAGE_857 is not set
-# CONFIG_FATFS_CODEPAGE_860 is not set
-# CONFIG_FATFS_CODEPAGE_861 is not set
-# CONFIG_FATFS_CODEPAGE_862 is not set
-# CONFIG_FATFS_CODEPAGE_863 is not set
-# CONFIG_FATFS_CODEPAGE_864 is not set
-# CONFIG_FATFS_CODEPAGE_865 is not set
-# CONFIG_FATFS_CODEPAGE_866 is not set
-# CONFIG_FATFS_CODEPAGE_869 is not set
-# CONFIG_FATFS_CODEPAGE_932 is not set
-# CONFIG_FATFS_CODEPAGE_936 is not set
-# CONFIG_FATFS_CODEPAGE_949 is not set
-# CONFIG_FATFS_CODEPAGE_950 is not set
-CONFIG_FATFS_CODEPAGE=437
-CONFIG_FATFS_LFN_NONE=y
-# CONFIG_FATFS_LFN_HEAP is not set
-# CONFIG_FATFS_LFN_STACK is not set
-CONFIG_FATFS_FS_LOCK=0
-CONFIG_FATFS_TIMEOUT_MS=10000
-CONFIG_FATFS_PER_FILE_CACHE=y
-# CONFIG_FATFS_USE_FASTSEEK is not set
-# end of FAT Filesystem support
-
-#
-# Modbus configuration
-#
-CONFIG_FMB_COMM_MODE_TCP_EN=y
-CONFIG_FMB_TCP_PORT_DEFAULT=502
-CONFIG_FMB_TCP_PORT_MAX_CONN=5
-CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20
-CONFIG_FMB_COMM_MODE_RTU_EN=y
-CONFIG_FMB_COMM_MODE_ASCII_EN=y
-CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_FMB_QUEUE_LENGTH=20
-CONFIG_FMB_PORT_TASK_STACK_SIZE=4096
-CONFIG_FMB_SERIAL_BUF_SIZE=256
-CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
-CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
-CONFIG_FMB_PORT_TASK_PRIO=10
-CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_FMB_CONTROLLER_STACK_SIZE=4096
-CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
-CONFIG_FMB_TIMER_PORT_ENABLED=y
-CONFIG_FMB_TIMER_GROUP=0
-CONFIG_FMB_TIMER_INDEX=0
-# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
-# end of Modbus configuration
-
-#
-# FreeRTOS
-#
-# CONFIG_FREERTOS_UNICORE is not set
-CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
-CONFIG_FREERTOS_CORETIMER_0=y
-# CONFIG_FREERTOS_CORETIMER_1 is not set
-CONFIG_FREERTOS_HZ=100
-CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
-CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
-# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
-CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y
-# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set
-# CONFIG_FREERTOS_ASSERT_DISABLE is not set
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304
-CONFIG_FREERTOS_ISR_STACKSIZE=1536
-# CONFIG_FREERTOS_LEGACY_HOOKS is not set
-CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
-# CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION is not set
-CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
-CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
-# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
-# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
-CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
-# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
-# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
-CONFIG_FREERTOS_DEBUG_OCDAWARE=y
-# CONFIG_FREERTOS_FPU_IN_ISR is not set
-# end of FreeRTOS
-
-#
-# Heap memory debugging
-#
-CONFIG_HEAP_POISONING_DISABLED=y
-# CONFIG_HEAP_POISONING_LIGHT is not set
-# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set
-CONFIG_HEAP_TRACING_OFF=y
-# CONFIG_HEAP_TRACING_STANDALONE is not set
-# CONFIG_HEAP_TRACING_TOHOST is not set
-# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set
-# end of Heap memory debugging
-
-#
-# jsmn
-#
-# CONFIG_JSMN_PARENT_LINKS is not set
-# CONFIG_JSMN_STRICT is not set
-# end of jsmn
-
-#
-# libsodium
-#
-# end of libsodium
-
-#
-# Log output
-#
-# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
-# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
-# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
-CONFIG_LOG_DEFAULT_LEVEL_INFO=y
-# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
-# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
-CONFIG_LOG_DEFAULT_LEVEL=3
-CONFIG_LOG_COLORS=y
-CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
-# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
-# end of Log output
-
-#
-# LWIP
-#
-CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
-CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
-# CONFIG_LWIP_L2_TO_L3_COPY is not set
-# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
-CONFIG_LWIP_TIMERS_ONDEMAND=y
-CONFIG_LWIP_MAX_SOCKETS=10
-# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
-# CONFIG_LWIP_SO_LINGER is not set
-CONFIG_LWIP_SO_REUSE=y
-CONFIG_LWIP_SO_REUSE_RXTOALL=y
-# CONFIG_LWIP_SO_RCVBUF is not set
-# CONFIG_LWIP_NETBUF_RECVINFO is not set
-CONFIG_LWIP_IP4_FRAG=y
-CONFIG_LWIP_IP6_FRAG=y
-# CONFIG_LWIP_IP4_REASSEMBLY is not set
-# CONFIG_LWIP_IP6_REASSEMBLY is not set
-# CONFIG_LWIP_IP_FORWARD is not set
-# CONFIG_LWIP_STATS is not set
-# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
-CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
-CONFIG_LWIP_GARP_TMR_INTERVAL=60
-CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
-CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
-# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
-
-#
-# DHCP server
-#
-CONFIG_LWIP_DHCPS_LEASE_UNIT=60
-CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
-# end of DHCP server
-
-# CONFIG_LWIP_AUTOIP is not set
-# CONFIG_LWIP_IPV6_AUTOCONFIG is not set
-CONFIG_LWIP_NETIF_LOOPBACK=y
-CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
-
-#
-# TCP
-#
-CONFIG_LWIP_TCP_ISN_HOOK=y
-CONFIG_LWIP_MAX_ACTIVE_TCP=16
-CONFIG_LWIP_MAX_LISTENING_TCP=16
-CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
-CONFIG_LWIP_TCP_MAXRTX=12
-CONFIG_LWIP_TCP_SYNMAXRTX=12
-CONFIG_LWIP_TCP_MSS=1440
-CONFIG_LWIP_TCP_TMR_INTERVAL=250
-CONFIG_LWIP_TCP_MSL=60000
-CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
-CONFIG_LWIP_TCP_WND_DEFAULT=5744
-CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
-CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
-# CONFIG_LWIP_TCP_SACK_OUT is not set
-# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_LWIP_TCP_OVERSIZE_MSS=y
-# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
-CONFIG_LWIP_TCP_RTO_TIME=1500
-# end of TCP
-
-#
-# UDP
-#
-CONFIG_LWIP_MAX_UDP_PCBS=16
-CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
-# end of UDP
-
-CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_LWIP_PPP_SUPPORT is not set
-CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
-CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
-# CONFIG_LWIP_SLIP_SUPPORT is not set
-
-#
-# ICMP
-#
-# CONFIG_LWIP_MULTICAST_PING is not set
-# CONFIG_LWIP_BROADCAST_PING is not set
-# end of ICMP
-
-#
-# LWIP RAW API
-#
-CONFIG_LWIP_MAX_RAW_PCBS=16
-# end of LWIP RAW API
-
-#
-# SNTP
-#
-CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1
-CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
-# end of SNTP
-
-CONFIG_LWIP_ESP_LWIP_ASSERT=y
-
-#
-# Debug
-#
-# CONFIG_LWIP_NETIF_DEBUG is not set
-# CONFIG_LWIP_PBUF_DEBUG is not set
-# CONFIG_LWIP_ETHARP_DEBUG is not set
-# CONFIG_LWIP_API_LIB_DEBUG is not set
-# CONFIG_LWIP_SOCKETS_DEBUG is not set
-# CONFIG_LWIP_IP_DEBUG is not set
-# CONFIG_LWIP_ICMP_DEBUG is not set
-# CONFIG_LWIP_IP6_DEBUG is not set
-# CONFIG_LWIP_ICMP6_DEBUG is not set
-# end of Debug
-# end of LWIP
-
-#
-# mbedTLS
-#
-CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
-# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
-# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
-CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
-CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
-# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
-# CONFIG_MBEDTLS_DEBUG is not set
-
-#
-# Certificate Bundle
-#
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set
-# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set
-# end of Certificate Bundle
-
-# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
-# CONFIG_MBEDTLS_CMAC_C is not set
-CONFIG_MBEDTLS_HARDWARE_AES=y
-CONFIG_MBEDTLS_HARDWARE_MPI=y
-CONFIG_MBEDTLS_HARDWARE_SHA=y
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set
-CONFIG_MBEDTLS_HAVE_TIME=y
-# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
-CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
-CONFIG_MBEDTLS_SHA512_C=y
-CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
-# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set
-# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set
-# CONFIG_MBEDTLS_TLS_DISABLED is not set
-CONFIG_MBEDTLS_TLS_SERVER=y
-CONFIG_MBEDTLS_TLS_CLIENT=y
-CONFIG_MBEDTLS_TLS_ENABLED=y
-
-#
-# TLS Key Exchange Methods
-#
-# CONFIG_MBEDTLS_PSK_MODES is not set
-CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
-# end of TLS Key Exchange Methods
-
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
-# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set
-CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
-# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
-CONFIG_MBEDTLS_SSL_ALPN=y
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
-
-#
-# Symmetric Ciphers
-#
-CONFIG_MBEDTLS_AES_C=y
-# CONFIG_MBEDTLS_CAMELLIA_C is not set
-# CONFIG_MBEDTLS_DES_C is not set
-CONFIG_MBEDTLS_RC4_DISABLED=y
-# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set
-# CONFIG_MBEDTLS_RC4_ENABLED is not set
-# CONFIG_MBEDTLS_BLOWFISH_C is not set
-# CONFIG_MBEDTLS_XTEA_C is not set
-CONFIG_MBEDTLS_CCM_C=y
-CONFIG_MBEDTLS_GCM_C=y
-# end of Symmetric Ciphers
-
-# CONFIG_MBEDTLS_RIPEMD160_C is not set
-
-#
-# Certificates
-#
-CONFIG_MBEDTLS_PEM_PARSE_C=y
-CONFIG_MBEDTLS_PEM_WRITE_C=y
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
-# end of Certificates
-
-CONFIG_MBEDTLS_ECP_C=y
-CONFIG_MBEDTLS_ECDH_C=y
-CONFIG_MBEDTLS_ECDSA_C=y
-# CONFIG_MBEDTLS_ECJPAKE_C is not set
-CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
-CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
-# CONFIG_MBEDTLS_POLY1305_C is not set
-# CONFIG_MBEDTLS_CHACHA20_C is not set
-# CONFIG_MBEDTLS_HKDF_C is not set
-# CONFIG_MBEDTLS_THREADING_C is not set
-# CONFIG_MBEDTLS_SECURITY_RISKS is not set
-# end of mbedTLS
-
-#
-# mDNS
-#
-CONFIG_MDNS_MAX_SERVICES=10
-CONFIG_MDNS_TASK_PRIORITY=1
-CONFIG_MDNS_TASK_STACK_SIZE=4096
-# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_MDNS_TASK_AFFINITY_CPU0=y
-# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
-CONFIG_MDNS_TASK_AFFINITY=0x0
-CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
-CONFIG_MDNS_TIMER_PERIOD_MS=100
-# end of mDNS
-
-#
-# ESP-MQTT Configurations
-#
-CONFIG_MQTT_PROTOCOL_311=y
-CONFIG_MQTT_TRANSPORT_SSL=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
-# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
-# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
-# CONFIG_MQTT_CUSTOM_OUTBOX is not set
-# end of ESP-MQTT Configurations
-
-#
-# Newlib
-#
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set
-CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y
-# CONFIG_NEWLIB_NANO_FORMAT is not set
-# end of Newlib
-
-#
-# NVS
-#
-# end of NVS
-
-#
-# OpenSSL
-#
-# CONFIG_OPENSSL_DEBUG is not set
-CONFIG_OPENSSL_ERROR_STACK=y
-# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set
-CONFIG_OPENSSL_ASSERT_EXIT=y
-# end of OpenSSL
-
-#
-# PThreads
-#
-CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_PTHREAD_STACK_MIN=768
-CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
-# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
-# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
-CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
-# end of PThreads
-
-#
-# SPI Flash driver
-#
-# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
-# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
-CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
-CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
-# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set
-# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
-# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
-CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
-CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
-CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1
-CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
-# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set
-# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
-
-#
-# Auto-detect flash chips
-#
-CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
-# end of Auto-detect flash chips
-# end of SPI Flash driver
-
-#
-# SPIFFS Configuration
-#
-CONFIG_SPIFFS_MAX_PARTITIONS=3
-
-#
-# SPIFFS Cache Configuration
-#
-CONFIG_SPIFFS_CACHE=y
-CONFIG_SPIFFS_CACHE_WR=y
-# CONFIG_SPIFFS_CACHE_STATS is not set
-# end of SPIFFS Cache Configuration
-
-CONFIG_SPIFFS_PAGE_CHECK=y
-CONFIG_SPIFFS_GC_MAX_RUNS=10
-# CONFIG_SPIFFS_GC_STATS is not set
-CONFIG_SPIFFS_PAGE_SIZE=256
-CONFIG_SPIFFS_OBJ_NAME_LEN=32
-# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
-CONFIG_SPIFFS_USE_MAGIC=y
-CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
-CONFIG_SPIFFS_META_LENGTH=4
-CONFIG_SPIFFS_USE_MTIME=y
-
-#
-# Debug Configuration
-#
-# CONFIG_SPIFFS_DBG is not set
-# CONFIG_SPIFFS_API_DBG is not set
-# CONFIG_SPIFFS_GC_DBG is not set
-# CONFIG_SPIFFS_CACHE_DBG is not set
-# CONFIG_SPIFFS_CHECK_DBG is not set
-# CONFIG_SPIFFS_TEST_VISUALISATION is not set
-# end of Debug Configuration
-# end of SPIFFS Configuration
-
-#
-# TCP Transport
-#
-CONFIG_WS_BUFFER_SIZE=1024
-# end of TCP Transport
-
-#
-# TinyUSB
-#
-# end of TinyUSB
-
-#
-# Unity unit testing library
-#
-CONFIG_UNITY_ENABLE_FLOAT=y
-CONFIG_UNITY_ENABLE_DOUBLE=y
-# CONFIG_UNITY_ENABLE_COLOR is not set
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
-# CONFIG_UNITY_ENABLE_FIXTURE is not set
-# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
-# end of Unity unit testing library
-
-#
-# Virtual file system
-#
-CONFIG_VFS_SUPPORT_IO=y
-CONFIG_VFS_SUPPORT_DIR=y
-CONFIG_VFS_SUPPORT_SELECT=y
-CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_VFS_SUPPORT_TERMIOS=y
-
-#
-# Host File System I/O (Semihosting)
-#
-CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# end of Host File System I/O (Semihosting)
-# end of Virtual file system
-
-#
-# Wear Levelling
-#
-# CONFIG_WL_SECTOR_SIZE_512 is not set
-CONFIG_WL_SECTOR_SIZE_4096=y
-CONFIG_WL_SECTOR_SIZE=4096
-# end of Wear Levelling
-
-#
-# Wi-Fi Provisioning Manager
-#
-CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
-CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
-# end of Wi-Fi Provisioning Manager
-
-#
-# Supplicant
-#
-CONFIG_WPA_MBEDTLS_CRYPTO=y
-# CONFIG_WPA_DEBUG_PRINT is not set
-# CONFIG_WPA_TESTING_OPTIONS is not set
-# CONFIG_WPA_WPS_WARS is not set
-# end of Supplicant
-# end of Component config
-
-#
-# Compatibility options
-#
-# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
-# end of Compatibility options
-
-# Deprecated options for backward compatibility
-CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
-CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
-# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
-CONFIG_LOG_BOOTLOADER_LEVEL=3
-# CONFIG_APP_ROLLBACK_ENABLE is not set
-# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
-# CONFIG_FLASHMODE_QIO is not set
-# CONFIG_FLASHMODE_QOUT is not set
-CONFIG_FLASHMODE_DIO=y
-# CONFIG_FLASHMODE_DOUT is not set
-# CONFIG_MONITOR_BAUD_9600B is not set
-# CONFIG_MONITOR_BAUD_57600B is not set
-CONFIG_MONITOR_BAUD_115200B=y
-# CONFIG_MONITOR_BAUD_230400B is not set
-# CONFIG_MONITOR_BAUD_921600B is not set
-# CONFIG_MONITOR_BAUD_2MB is not set
-# CONFIG_MONITOR_BAUD_OTHER is not set
-CONFIG_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_MONITOR_BAUD=115200
-CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
-# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
-CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
-# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
-# CONFIG_CXX_EXCEPTIONS is not set
-CONFIG_STACK_CHECK_NONE=y
-# CONFIG_STACK_CHECK_NORM is not set
-# CONFIG_STACK_CHECK_STRONG is not set
-# CONFIG_STACK_CHECK_ALL is not set
-# CONFIG_WARN_WRITE_STRINGS is not set
-# CONFIG_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
-CONFIG_ESP32_APPTRACE_DEST_NONE=y
-CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
-CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
-CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
-CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
-CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
-CONFIG_ADC2_DISABLE_DAC=y
-# CONFIG_SPIRAM_SUPPORT is not set
-CONFIG_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
-CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
-CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
-# CONFIG_ULP_COPROC_ENABLED is not set
-CONFIG_ULP_COPROC_RESERVE_MEM=0
-CONFIG_BROWNOUT_DET=y
-CONFIG_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_BROWNOUT_DET_LVL=0
-CONFIG_REDUCE_PHY_TX_POWER=y
-CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
-# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_NO_BLOBS is not set
-# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_MAIN_TASK_STACK_SIZE=3584
-CONFIG_IPC_TASK_STACK_SIZE=1024
-CONFIG_CONSOLE_UART_DEFAULT=y
-# CONFIG_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_UART_NONE is not set
-CONFIG_CONSOLE_UART=y
-CONFIG_CONSOLE_UART_NUM=0
-CONFIG_CONSOLE_UART_BAUDRATE=115200
-CONFIG_INT_WDT=y
-CONFIG_INT_WDT_TIMEOUT_MS=300
-CONFIG_INT_WDT_CHECK_CPU1=y
-# CONFIG_TASK_WDT is not set
-# CONFIG_EVENT_LOOP_PROFILING is not set
-CONFIG_POST_EVENTS_FROM_ISR=y
-CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
-# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
-CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP32S2_PANIC_GDBSTUB is not set
-CONFIG_TIMER_TASK_STACK_SIZE=3584
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
-CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
-CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_MB_QUEUE_LENGTH=20
-CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
-CONFIG_MB_SERIAL_BUF_SIZE=256
-CONFIG_MB_SERIAL_TASK_PRIO=10
-CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_MB_CONTROLLER_STACK_SIZE=4096
-CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
-CONFIG_MB_TIMER_PORT_ENABLED=y
-CONFIG_MB_TIMER_GROUP=0
-CONFIG_MB_TIMER_INDEX=0
-# CONFIG_SUPPORT_STATIC_ALLOCATION is not set
-CONFIG_TIMER_TASK_PRIORITY=1
-CONFIG_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_TIMER_QUEUE_LENGTH=10
-# CONFIG_L2_TO_L3_COPY is not set
-# CONFIG_USE_ONLY_LWIP_SELECT is not set
-CONFIG_ESP_GRATUITOUS_ARP=y
-CONFIG_GARP_TMR_INTERVAL=60
-CONFIG_TCPIP_RECVMBOX_SIZE=32
-CONFIG_TCP_MAXRTX=12
-CONFIG_TCP_SYNMAXRTX=12
-CONFIG_TCP_MSS=1440
-CONFIG_TCP_MSL=60000
-CONFIG_TCP_SND_BUF_DEFAULT=5744
-CONFIG_TCP_WND_DEFAULT=5744
-CONFIG_TCP_RECVMBOX_SIZE=6
-CONFIG_TCP_QUEUE_OOSEQ=y
-# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_TCP_OVERSIZE_MSS=y
-# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_TCP_OVERSIZE_DISABLE is not set
-CONFIG_UDP_RECVMBOX_SIZE=6
-CONFIG_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_PPP_SUPPORT is not set
-CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_ESP32_PTHREAD_STACK_MIN=768
-CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
-CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
-CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
-CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_SUPPORT_TERMIOS=y
-CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# End of deprecated options
diff --git a/test/sdkconfig.defaults b/test/sdkconfig.defaults
deleted file mode 100644
index a1f2ef6..0000000
--- a/test/sdkconfig.defaults
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_ESP_TASK_WDT=n