Repository: tuanpmt/esp32-mqtt Branch: master Commit: 10694e6a39b3 Files: 12 Total size: 49.7 KB Directory structure: gitextract_fainu1ow/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .gitmodules ├── LICENSE ├── Makefile ├── README.md ├── SublimeAStyleFormatter.sublime-settings ├── main/ │ ├── Kconfig.projbuild │ ├── app_main.c │ └── component.mk └── sdkconfig ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # EditorConfig helps developers define and maintain consistent # coding styles between different editors and IDEs # http://editorconfig.org root = true [*] indent_style = space indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [{*.md,*.rst}] trim_trailing_whitespace = false [{Makefile,*.mk,*.bat}] indent_style = tab indent_size = 2 [*/freertos/**] indent_style = tab indent_size = 4 [{*/freertos/**.S,**/FreeRTOSConfig.h}] indent_style = space indent_size = 4 [*.pem] insert_final_newline = false [*.py] max_line_length = 119 ================================================ FILE: .gitattributes ================================================ *.sublime-settings linguist-language=C ================================================ FILE: .gitignore ================================================ .DS_Store .output map.txt main/include/user_config.local.h bin build *.old ================================================ FILE: .gitmodules ================================================ [submodule "components/espmqtt"] path = components/espmqtt url = https://github.com/tuanpmt/espmqtt.git ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2016 Tuan PM 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. ================================================ FILE: Makefile ================================================ # # This is a project Makefile. It is assumed the directory this Makefile resides in is a # project subdirectory. # VERBOSE = 1 PROJECT_NAME := esp32-audio-code-idf include $(IDF_PATH)/make/project.mk ================================================ FILE: README.md ================================================ # ESP32 MQTT Library sample application - Project has moved to: https://github.com/tuanpmt/espmqtt/tree/master/examples - This project will not be developed, and all issues will not be supported. ## License Apache 2.0 ================================================ FILE: SublimeAStyleFormatter.sublime-settings ================================================ { // NOTE: You should always edit options in user file, not this file. // Print debug message "debug": false, // Auto format on file save "autoformat_on_save": false, // The mapping key is `syntax name`, and the value is `formatting mode`. // Note that the value for each mapping should be "c", "java" or "cs". "user_defined_syntax_mode_mapping": { // For example: /* "arduino": "c", "pde": "java", "apex": "java" */ }, // Please visit http://astyle.sourceforge.net/astyle.html for more information "options_default": { // Default bracket style // Can be one of "allman", "bsd", "break", "java", "attach", "kr", "k&r", // "k/r" "stroustrup", "whitesmith", "banner", "gnu", "linux", "horstmann", // "1tbs", "otbs ", "google", "pico", "lisp", "python", "vtk", or null // for default. "style": "k&r", // Tab options // "indent": Can be one of "spaces", "tab" "force-tab", "force-tab-x", or null // "indent-spaces": Can be either null or numbers // // While both "indent" or "indent-spaces" are null (default), the indentation options // will be retrieved from Sublime Text view settings: `tab_size`, `translate_tabs_to_spaces`: // 1. If `translate_tabs_to_spaces` is true, "indent" will be "spaces", otherwise, "tab"; // 2. "indent-spaces" will equal to `tab_size`. "indent": null, "indent-spaces": null, // === Bracket Modify Options === // Attach brackets to a namespace statement. This is done regardless of // the bracket style being used. "attach-namespaces": false, // Attach brackets to a class statement. This is done regardless of the // bracket style being used. "attach-classes": false, // Attach brackets to class and struct inline function definitions. This // is not done for run-in type brackets (Horstmann and Pico styles). This // option is effective for C++ files only. "attach-inlines": false, // Attach brackets to a bracketed extern "C" statement. This is done // regardless of the bracket style being used. This option is effective // for C++ files only. // // An extern "C" statement that is part of a function definition is // formatted according to the requested bracket style. Bracketed extern // "C" statements are unaffected by the bracket style and this option is // the only way to change them. "attach-extern-c": false, // === Indentation Options === // Indent 'class' and 'struct' blocks so that the blocks 'public:', // 'protected:' and 'private:' are indented. The struct blocks are // indented only if an access modifier is declared somewhere in the // struct. The entire block is indented. This option is effective for C++ files only. "indent-classes": false, // Indent 'class' and 'struct' access modifiers, 'public:', 'protected:' // and 'private:', one half indent. The rest of the class is not indented. // This option is effective for C++ files only. If used with indent‑classes // this option will be ignored. "indent-modifiers": false, // Indent 'switch' blocks so that the 'case X:' statements are indented // in the switch block. The entire case block is indented. "indent-switches": false, // Indent 'case X:' blocks from the 'case X:' headers. Case statements // not enclosed in blocks are NOT indented. "indent-cases": false, // Add extra indentation to namespace blocks. This option has // no effect on Java files. "indent-namespaces": false, // Add extra indentation to labels so they appear 1 indent less than the // current indentation, rather than being flushed to the left (the default). "indent-labels": false, // Indent preprocessor blocks at bracket level zero, and immediately within // a namespace. There are restrictions on what will be indented. Blocks // within methods, classes, arrays, etc, will not be indented. Blocks // containing brackets or multi-line define statements will not be indented. // Without this option the preprocessor block is not indented. "indent-preproc-block": false, // Indent multi-line preprocessor definitions ending with a backslash. // Should be used with `convert-tabs` for proper results. Does a pretty // good job, but cannot perform miracles in obfuscated preprocessor // definitions. Without this option the preprocessor statements remain unchanged. "indent-preproc-define": false, // Indent preprocessor conditional statements to the same level as the // source code. "indent-preproc-cond": false, // Indent C++ comments beginning in column one. By default C++ comments // beginning in column one are not indented. This option will allow the // comments to be indented with the code. "indent-col1-comments": false, // Set the minimal indent that is added when a header is built of multiple // lines. This indent helps to easily separate the header from the command // statements that follow. The value for # indicates a number of indents // and is a minimum value. The indent may be greater to align with the data // on the previous line. // The valid values are: // 0 - no minimal indent. The lines will be aligned with the paren on the // preceding line. // 1 - indent at least one additional indent. // 2 - indent at least two additional indents. // 3 - indent at least one-half an additional indent. This is intended for // large indents (e.g. 8). // The default value is 2, two additional indents. "min-conditional-indent": 2, // Set the maximum spaces to indent a continuation line. // The maximum spaces indicate a number of columns and // must not be greater than 120. A maximum of less // than two indent lengths will be ignored. This option // will prevent continuation lines from extending too // far to the right. Setting a larger value will allow // the code to be extended further to the right. // // range: [40, 120] "max-instatement-indent": 40, // === Padding Options === // null - Do nothing // "default" - Pad empty lines around header blocks (e.g. 'if', // 'for', 'while'...). // "all" - Pad empty lines around header blocks (e.g. 'if', // 'for', 'while'...). Treat closing header blocks // (e.g. 'else', 'catch') as stand-alone blocks. "break-blocks": null, // Insert space padding around operators. Any end of line comments // will remain in the original column, if possible. Note that there // is no option to unpad. Once padded, they stay padded. "pad-oper": true, // Insert space padding around parenthesis on both the outside and // the inside. Any end of line comments will remain in the original // column, if possible. "pad-paren": false, // Insert space padding around parenthesis on the outside only. Any // end of line comments will remain in the original column, if possible. // This can be used with `unpad-paren` below to remove unwanted spaces. "pad-paren-out": false, // Insert space padding around the first parenthesis in a series on the // outside only. Any end of line comments will remain in the original // column, if possible. This can be used with unpad-paren below to remove // unwanted spaces. If used with pad-paren or pad-paren-out, this // option will be ignored. If used with pad-paren-in, the result will // be the same as pad-paren. "pad-first-paren-out": false, // Insert space padding around parenthesis on the inside only. Any // end of line comments will remain in the original column, if possible. // This can be used with `unpad-paren` below to remove unwanted spaces. "pad-paren-in": false, // Insert space padding after paren headers only (e.g. 'if', 'for', //'while'...). Any end of line comments will remain in the original // column, if possible. This can be used with unpad-paren to remove // unwanted spaces. "pad-header": true, // Remove extra space padding around parenthesis on the inside and outside. // Any end of line comments will remain in the original column, if possible. // This option can be used in combination with the paren padding options // `pad-paren`, `pad-paren-out`, `pad-paren-in`, and `pad-header` above. // Only padding that has not been requested by other options will be removed. // For example, if a source has parens padded on both the inside and outside, // and you want inside only. You need to use unpad-paren to remove the outside // padding, and pad-paren-in to retain the inside padding. Using only `pad-paren-in` // would not remove the outside padding. "unpad-paren": false, // Delete empty lines within a function or method. Empty lines outside of functions // or methods are NOT deleted. If used with break-blocks or break-blocks=all it will // delete all lines EXCEPT the lines added by the `break-blocks` options. "delete-empty-lines": false, // Fill empty lines with the white space of the previous line. "fill-empty-lines": false, // Attach a pointer or reference operator (* or &) to either the variable type (left) // or variable name (right), or place it between the type and name (middle). // The spacing between the type and name will be preserved, if possible. To format // references separately use the following `align-reference` option. // can be one of null, "type", "middle" or "name" "align-pointer": null, // This option will align references separate from pointers. Pointers are not changed // by this option. If pointers and references are to be aligned the same, use the // previous `align-pointer` option. The option align-reference=none will not change // the reference alignment. The other options are the same as for `align-pointer`. // In the case of a reference to a pointer (*&) with conflicting alignments, the // `align-pointer` value will be used. // can be one of "none", "type", "middle", "name", or null for default. "align-reference": null, // === Formatting Options === // When `style` is "attach", "linux" or "stroustrup", this breaks closing headers // (e.g. 'else', 'catch', ...) from their immediately preceding closing brackets. // Closing header brackets are always broken with broken brackets, horstmann // rackets, indented blocks, and indented brackets. "break-closing-brackets": false, // Break "else if" header combinations into separate lines. This option has no effect // if keep-one-line-statements is used, the "else if" statements will remain as they are. // If this option is NOT used, "else if" header combinations will be placed on a single line. "break-elseifs": false, // Add brackets to unbracketed one line conditional statements (e.g. 'if', 'for', 'while'...). // The statement must be on a single line. The brackets will be added according to the // currently requested predefined style or bracket type. If no style or bracket type is // requested the brackets will be attached. If `add-one-line-brackets` is also used the // result will be one line brackets. "add-brackets": false, // Add one line brackets to unbracketed one line conditional statements // (e.g. 'if', 'for', 'while'...). The statement must be on a single line. // The option implies `keep-one-line-blocks` and will not break the one line blocks. "add-one-line-brackets": false, // Remove brackets from conditional statements (e.g. 'if', 'for', 'while'...). // The statement must be a single statement on a single line. If // --add-brackets or --add-one-line-brackets is also used the result will // be to add brackets. Brackets will not be removed from // "One True Brace Style", --style=1tbs. "remove-brackets": false, // Don't break one-line blocks. "keep-one-line-blocks": true, // Don't break complex statements and multiple statements residing on a single line. "keep-one-line-statements": true, // Closes whitespace in the angle brackets of template definitions. Closing // the ending angle brackets is now allowed by the C++11 standard. // Be sure your compiler supports this before making the changes. "close-templates": false, // Remove the preceding '*' in a multi-line comment that begins a line. // A trailing '*', if present, is also removed. Text that is less than one // is indent is indented to one indent. Text greater than one indent is // not changed. Multi-line comments that begin a line but without the // preceding '*' are indented to one indent for consistency. This can // slightly modify the indentation of commented out blocks of code. // Lines containing all '*' are left unchanged. Extra spacing is removed // from the comment close '*/'. "remove-comment-prefix": false, // The option max-code-length will break a line if the code exceeds # characters. // The valid values are 50 thru 200. Lines without logical conditionals will // break on a logical conditional (||, &&, ...), comma, paren, semicolon, or space. // // Some code will not be broken, such as comments, quotes, and arrays. // If used with keep-one-line-blocks or add-one-line-brackets the blocks // will NOT be broken. If used with keep-one-line-statements the statements // will be broken at a semicolon if the line goes over the maximum length. // If there is no available break point within the max code length, the // line will be broken at the first available break point after the max code length. // // By default logical conditionals will be placed first on the new line. // The option break-after-logical will cause the logical conditionals to be // placed last on the previous line. This option has no effect without max-code-length. "max-code-length": -1, "break-after-logical": false, // == Objective-C Options == // Because of the longer indents sometimes needed for Objective-C, the option // "max-instatement-indent" may need to be increased. If you are not getting // the paren and square bracket alignment you want, try increasing this value. // Align the colons in Objective-C method declarations. This option is effective // for Objective-C files only. "align-method-colon": false, // Insert space padding after the '-' or '+' Objective-C method prefix. This will // add exactly one space. Any additional spaces will be deleted. This option is // effective for Objective-C files only. "pad-method-prefix": false, // Remove all space padding after the '-' or '+' Objective-C method prefix. // If used with pad-method-prefix, this option will be ignored. This option // is effective for Objective-C files only. "unpad-method-prefix": false, // Add or remove space padding before or after the colons in an Objective-C // method call. These options will pad exactly one space. Any additional // spaces will be deleted. Colons immediarely preceeding a paren will not // be padded. This option is effective for Objective-C files only. // // Can be one of "none", "all", "after" or "before", or null for default. "pad-method-colon": null }, // // Language Specific Options // // You can override default options in language-specific options here. // Addtional options are also provided: // // "additional_options": Addtional options following astyle options file style // (http://astyle.sourceforge.net/astyle.html). // e.g.: "additional_options": ["--indent=spaces=2", "--convert-tabs"] // // "additional_options_file": Addtional options file for astyle (aka astylerc), you must specify // a full path for that file, environment variable may be included. // e.g.: "additional_options_file": "%USERPROFILE%/astylerc" // (Windows) // e.g.: "additional_options_file": "$HOME/.astylerc" // (Linux) // === Additional variables that you may use === // $file_path The directory of the current file, e.g., C:\Files. // $file The full path to the current file, e.g., C:\Files\Chapter1.txt. // $file_name The name portion of the current file, e.g., Chapter1.txt. // $file_extension The extension portion of the current file, e.g., txt. // $file_base_name The name-only portion of the current file, e.g., Document. // $packages The full path to the Packages folder. // The following requires "Sublime Text 3" // $project The full path to the current project file. // $project_path The directory of the current project file. // $project_name The name portion of the current project file. // $project_extension The extension portion of the current project file. // $project_base_name The name-only portion of the current project file. // // "use_only_additional_options": While true, SublimeAStyleFormatter will *only* process // options in *both* "additional_options" and "additional_options_file". // Language-specific options for C "options_c": { "use_only_additional_options": false, "additional_options_file": "", "additional_options": [] }, // Language-specific for C++ "options_c++": { "use_only_additional_options": false, "additional_options_file": "", "additional_options": [] }, // Language-specific for Java "options_java": { "style": "java", "use_only_additional_options": false, "additional_options_file": "", "additional_options": [] }, // Language-specific for C# "options_cs": { "use_only_additional_options": false, "additional_options_file": "", "additional_options": [] } } ================================================ FILE: main/Kconfig.projbuild ================================================ menu "MQTT Application sample" config WIFI_SSID string "WiFi SSID" default "myssid" help SSID (network name) for the example to connect to. config WIFI_PASSWORD string "WiFi Password" default "mypassword" help WiFi password (WPA or WPA2) for the example to use. endmenu ================================================ FILE: main/app_main.c ================================================ #include #include #include #include #include "esp_wifi.h" #include "esp_system.h" #include "nvs_flash.h" #include "esp_event_loop.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/semphr.h" #include "freertos/queue.h" #include "freertos/event_groups.h" #include "lwip/sockets.h" #include "lwip/dns.h" #include "lwip/netdb.h" #include "esp_log.h" #include "mqtt_client.h" static const char *TAG = "MQTT_SAMPLE"; static EventGroupHandle_t wifi_event_group; const static int CONNECTED_BIT = BIT0; static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event) { esp_mqtt_client_handle_t client = event->client; int msg_id; // your_context_t *context = event->context; switch (event->event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); msg_id = esp_mqtt_client_subscribe(client, "/topic/qos0", 0); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1); ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id); msg_id = esp_mqtt_client_unsubscribe(client, "/topic/qos1"); ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id); break; case MQTT_EVENT_DISCONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); break; case MQTT_EVENT_SUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id); msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0); ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id); break; case MQTT_EVENT_UNSUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id); break; case MQTT_EVENT_PUBLISHED: ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id); break; case MQTT_EVENT_DATA: ESP_LOGI(TAG, "MQTT_EVENT_DATA"); printf("TOPIC=%.*s\r\n", event->topic_len, event->topic); printf("DATA=%.*s\r\n", event->data_len, event->data); break; case MQTT_EVENT_ERROR: ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); break; } return ESP_OK; } static esp_err_t wifi_event_handler(void *ctx, system_event_t *event) { switch (event->event_id) { case SYSTEM_EVENT_STA_START: esp_wifi_connect(); break; case SYSTEM_EVENT_STA_GOT_IP: xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); break; case SYSTEM_EVENT_STA_DISCONNECTED: esp_wifi_connect(); xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); break; default: break; } return ESP_OK; } static void wifi_init(void) { tcpip_adapter_init(); wifi_event_group = xEventGroupCreate(); ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL)); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM)); wifi_config_t wifi_config = { .sta = { .ssid = CONFIG_WIFI_SSID, .password = CONFIG_WIFI_PASSWORD, }, }; ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config)); ESP_LOGI(TAG, "start the WIFI SSID:[%s] password:[%s]", CONFIG_WIFI_SSID, "******"); ESP_ERROR_CHECK(esp_wifi_start()); ESP_LOGI(TAG, "Waiting for wifi"); xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY); } static void mqtt_app_start(void) { const esp_mqtt_client_config_t mqtt_cfg = { .uri = "mqtt://iot.eclipse.org", .event_handle = mqtt_event_handler, // .user_context = (void *)your_context }; esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg); esp_mqtt_client_start(client); } void app_main() { ESP_LOGI(TAG, "[APP] Startup.."); ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size()); ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version()); esp_log_level_set("*", ESP_LOG_INFO); esp_log_level_set("MQTT_CLIENT", ESP_LOG_VERBOSE); esp_log_level_set("TRANSPORT_TCP", ESP_LOG_VERBOSE); esp_log_level_set("TRANSPORT_SSL", ESP_LOG_VERBOSE); esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE); esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE); nvs_flash_init(); wifi_init(); mqtt_app_start(); } ================================================ FILE: main/component.mk ================================================ # # Main Makefile. This is basically the same as a component makefile. # # This Makefile should, at the very least, just include $(SDK_PATH)/make/component.mk. By default, # this will take the sources in the src/ directory, compile them and link them into # lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable, # please read the SDK documents if you need to do this. # THISDIR:=$(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DATETIME := $(shell date "+%Y-%b-%d_%H:%M:%S_%Z") COMPONENT_ADD_INCLUDEDIRS := include CFLAGS += -DBUID_TIME=\"$(DATETIME)\" -Wno-error=format= ifneq ("$(wildcard $(THISDIR)/include/user_config.local.h)","") CFLAGS += -DLOCAL_CONFIG_AVAILABLE endif include $(IDF_PATH)/make/component_common.mk #include $(IDF_PATH)/make/component.mk ================================================ FILE: sdkconfig ================================================ # # Automatically generated file; DO NOT EDIT. # Espressif IoT Development Framework Configuration # # # SDK tool configuration # CONFIG_TOOLPREFIX="xtensa-esp32-elf-" CONFIG_PYTHON="python" CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y # # Bootloader config # CONFIG_LOG_BOOTLOADER_LEVEL_NONE= CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= CONFIG_LOG_BOOTLOADER_LEVEL_WARN= CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= CONFIG_LOG_BOOTLOADER_LEVEL=3 CONFIG_BOOTLOADER_VDDSDIO_BOOST=y # # Security features # CONFIG_SECURE_BOOT_ENABLED= CONFIG_FLASH_ENCRYPTION_ENABLED= # # Serial flasher config # CONFIG_ESPTOOLPY_PORT="/dev/tty.SLAB_USBtoUART" CONFIG_ESPTOOLPY_BAUD_115200B= CONFIG_ESPTOOLPY_BAUD_230400B= CONFIG_ESPTOOLPY_BAUD_921600B=y CONFIG_ESPTOOLPY_BAUD_2MB= CONFIG_ESPTOOLPY_BAUD_OTHER= CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 CONFIG_ESPTOOLPY_BAUD=921600 CONFIG_ESPTOOLPY_COMPRESSED=y CONFIG_FLASHMODE_QIO= CONFIG_FLASHMODE_QOUT= CONFIG_FLASHMODE_DIO=y CONFIG_FLASHMODE_DOUT= CONFIG_ESPTOOLPY_FLASHMODE="dio" CONFIG_ESPTOOLPY_FLASHFREQ_80M= CONFIG_ESPTOOLPY_FLASHFREQ_40M=y CONFIG_ESPTOOLPY_FLASHFREQ_26M= CONFIG_ESPTOOLPY_FLASHFREQ_20M= CONFIG_ESPTOOLPY_FLASHFREQ="40m" CONFIG_ESPTOOLPY_FLASHSIZE_1MB= CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y CONFIG_ESPTOOLPY_FLASHSIZE_4MB= CONFIG_ESPTOOLPY_FLASHSIZE_8MB= CONFIG_ESPTOOLPY_FLASHSIZE_16MB= CONFIG_ESPTOOLPY_FLASHSIZE="2MB" CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y CONFIG_ESPTOOLPY_BEFORE_RESET=y CONFIG_ESPTOOLPY_BEFORE_NORESET= CONFIG_ESPTOOLPY_BEFORE="default_reset" CONFIG_ESPTOOLPY_AFTER_RESET=y CONFIG_ESPTOOLPY_AFTER_NORESET= CONFIG_ESPTOOLPY_AFTER="hard_reset" CONFIG_MONITOR_BAUD_9600B= CONFIG_MONITOR_BAUD_57600B= CONFIG_MONITOR_BAUD_115200B=y CONFIG_MONITOR_BAUD_230400B= CONFIG_MONITOR_BAUD_921600B= CONFIG_MONITOR_BAUD_2MB= CONFIG_MONITOR_BAUD_OTHER= CONFIG_MONITOR_BAUD_OTHER_VAL=115200 CONFIG_MONITOR_BAUD=115200 # # MQTT Application sample # CONFIG_WIFI_SSID="myssid" CONFIG_WIFI_PASSWORD="mypassword" # # Partition Table # CONFIG_PARTITION_TABLE_SINGLE_APP=y CONFIG_PARTITION_TABLE_TWO_OTA= CONFIG_PARTITION_TABLE_CUSTOM= CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000 CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" CONFIG_APP_OFFSET=0x10000 # # Compiler options # CONFIG_OPTIMIZATION_LEVEL_DEBUG=y CONFIG_OPTIMIZATION_LEVEL_RELEASE= CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= CONFIG_CXX_EXCEPTIONS= CONFIG_STACK_CHECK_NONE=y CONFIG_STACK_CHECK_NORM= CONFIG_STACK_CHECK_STRONG= CONFIG_STACK_CHECK_ALL= CONFIG_STACK_CHECK= # # Component config # # # Application Level Tracing # CONFIG_ESP32_APPTRACE_DEST_TRAX= CONFIG_ESP32_APPTRACE_DEST_NONE=y CONFIG_ESP32_APPTRACE_ENABLE= CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y # # FreeRTOS SystemView Tracing # CONFIG_AWS_IOT_SDK= # # Bluetooth # CONFIG_BT_ENABLED= CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_BT_RESERVE_DRAM=0 # # ESP32-specific # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240= CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 CONFIG_MEMMAP_SMP=y CONFIG_SPIRAM_SUPPORT= CONFIG_MEMMAP_TRACEMEM= CONFIG_MEMMAP_TRACEMEM_TWOBANKS= CONFIG_ESP32_TRAX= CONFIG_TRACEMEM_RESERVE_DRAM=0x0 CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y CONFIG_ESP32_ENABLE_COREDUMP= CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2048 CONFIG_MAIN_TASK_STACK_SIZE=4096 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y CONFIG_NEWLIB_NANO_FORMAT= CONFIG_CONSOLE_UART_DEFAULT=y CONFIG_CONSOLE_UART_CUSTOM= CONFIG_CONSOLE_UART_NONE= CONFIG_CONSOLE_UART_NUM=0 CONFIG_CONSOLE_UART_BAUDRATE=115200 CONFIG_ULP_COPROC_ENABLED= CONFIG_ULP_COPROC_RESERVE_MEM=0 CONFIG_ESP32_PANIC_PRINT_HALT= CONFIG_ESP32_PANIC_PRINT_REBOOT=y CONFIG_ESP32_PANIC_SILENT_REBOOT= CONFIG_ESP32_PANIC_GDBSTUB= CONFIG_ESP32_DEBUG_OCDAWARE=y CONFIG_INT_WDT=y CONFIG_INT_WDT_TIMEOUT_MS=300 CONFIG_TASK_WDT=y CONFIG_TASK_WDT_PANIC= CONFIG_TASK_WDT_TIMEOUT_S=5 CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y CONFIG_BROWNOUT_DET=y CONFIG_BROWNOUT_DET_LVL_SEL_0=y CONFIG_BROWNOUT_DET_LVL_SEL_1= CONFIG_BROWNOUT_DET_LVL_SEL_2= CONFIG_BROWNOUT_DET_LVL_SEL_3= CONFIG_BROWNOUT_DET_LVL_SEL_4= CONFIG_BROWNOUT_DET_LVL_SEL_5= CONFIG_BROWNOUT_DET_LVL_SEL_6= CONFIG_BROWNOUT_DET_LVL_SEL_7= CONFIG_BROWNOUT_DET_LVL=0 CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y CONFIG_ESP32_TIME_SYSCALL_USE_RTC= CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= CONFIG_ESP32_TIME_SYSCALL_USE_NONE= CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP32_XTAL_FREQ_40= CONFIG_ESP32_XTAL_FREQ_26= CONFIG_ESP32_XTAL_FREQ_AUTO=y CONFIG_ESP32_XTAL_FREQ=0 CONFIG_DISABLE_BASIC_ROM_CONSOLE= CONFIG_NO_BLOBS= CONFIG_ESP_TIMER_PROFILING= CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= # # Wi-Fi # CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= 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_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 # # PHY # CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 CONFIG_ESP32_PHY_MAX_TX_POWER=20 # # Power Management # CONFIG_PM_ENABLE= # # Ethernet # CONFIG_DMA_RX_BUF_NUM=10 CONFIG_DMA_TX_BUF_NUM=10 CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE= CONFIG_EMAC_TASK_PRIORITY=20 # # FAT Filesystem support # CONFIG_FATFS_CODEPAGE_DYNAMIC= CONFIG_FATFS_CODEPAGE_437=y CONFIG_FATFS_CODEPAGE_720= CONFIG_FATFS_CODEPAGE_737= CONFIG_FATFS_CODEPAGE_771= CONFIG_FATFS_CODEPAGE_775= CONFIG_FATFS_CODEPAGE_850= CONFIG_FATFS_CODEPAGE_852= CONFIG_FATFS_CODEPAGE_855= CONFIG_FATFS_CODEPAGE_857= CONFIG_FATFS_CODEPAGE_860= CONFIG_FATFS_CODEPAGE_861= CONFIG_FATFS_CODEPAGE_862= CONFIG_FATFS_CODEPAGE_863= CONFIG_FATFS_CODEPAGE_864= CONFIG_FATFS_CODEPAGE_865= CONFIG_FATFS_CODEPAGE_866= CONFIG_FATFS_CODEPAGE_869= CONFIG_FATFS_CODEPAGE_932= CONFIG_FATFS_CODEPAGE_936= CONFIG_FATFS_CODEPAGE_949= CONFIG_FATFS_CODEPAGE_950= CONFIG_FATFS_CODEPAGE=437 CONFIG_FATFS_LFN_NONE=y CONFIG_FATFS_LFN_HEAP= CONFIG_FATFS_LFN_STACK= CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y # # FreeRTOS # CONFIG_FREERTOS_UNICORE=y CONFIG_FREERTOS_CORETIMER_0=y CONFIG_FREERTOS_CORETIMER_1= CONFIG_FREERTOS_HZ=1000 CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL=y CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY= CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= CONFIG_FREERTOS_ASSERT_DISABLE= CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024 CONFIG_FREERTOS_ISR_STACKSIZE=1536 CONFIG_FREERTOS_LEGACY_HOOKS= CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 CONFIG_SUPPORT_STATIC_ALLOCATION= CONFIG_TIMER_TASK_PRIORITY=1 CONFIG_TIMER_TASK_STACK_DEPTH=2048 CONFIG_TIMER_QUEUE_LENGTH=10 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 CONFIG_FREERTOS_USE_TRACE_FACILITY= CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= CONFIG_FREERTOS_DEBUG_INTERNALS=y CONFIG_FREERTOS_PORTMUX_DEBUG= # # Heap memory debugging # CONFIG_HEAP_POISONING_DISABLED=y CONFIG_HEAP_POISONING_LIGHT= CONFIG_HEAP_POISONING_COMPREHENSIVE= CONFIG_HEAP_TRACING= # # libsodium # # # Log output # CONFIG_LOG_DEFAULT_LEVEL_NONE= CONFIG_LOG_DEFAULT_LEVEL_ERROR= CONFIG_LOG_DEFAULT_LEVEL_WARN= CONFIG_LOG_DEFAULT_LEVEL_INFO=y CONFIG_LOG_DEFAULT_LEVEL_DEBUG= CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_LOG_COLORS=y # # LWIP # CONFIG_L2_TO_L3_COPY= CONFIG_LWIP_IRAM_OPTIMIZATION= CONFIG_LWIP_MAX_SOCKETS=4 CONFIG_LWIP_SO_REUSE= CONFIG_LWIP_SO_RCVBUF= CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 CONFIG_LWIP_IP_FRAG= CONFIG_LWIP_IP_REASSEMBLY= CONFIG_LWIP_STATS= CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y CONFIG_TCPIP_RECVMBOX_SIZE=32 CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y # # DHCP server # CONFIG_LWIP_DHCPS_LEASE_UNIT=60 CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 CONFIG_LWIP_AUTOIP= CONFIG_LWIP_NETIF_LOOPBACK=y CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 # # TCP # CONFIG_LWIP_MAX_ACTIVE_TCP=16 CONFIG_LWIP_MAX_LISTENING_TCP=16 CONFIG_TCP_MAXRTX=12 CONFIG_TCP_SYNMAXRTX=6 CONFIG_TCP_MSS=1436 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_TCP_OVERSIZE_MSS=y CONFIG_TCP_OVERSIZE_QUARTER_MSS= CONFIG_TCP_OVERSIZE_DISABLE= # # UDP # CONFIG_LWIP_MAX_UDP_PCBS=16 CONFIG_UDP_RECVMBOX_SIZE=6 CONFIG_TCPIP_TASK_STACK_SIZE=2560 CONFIG_PPP_SUPPORT= # # ICMP # CONFIG_LWIP_MULTICAST_PING= CONFIG_LWIP_BROADCAST_PING= # # LWIP RAW API # CONFIG_LWIP_MAX_RAW_PCBS=16 # # mbedTLS # CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 CONFIG_MBEDTLS_DEBUG= CONFIG_MBEDTLS_HARDWARE_AES=y CONFIG_MBEDTLS_HARDWARE_MPI=y CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y CONFIG_MBEDTLS_HARDWARE_SHA=y CONFIG_MBEDTLS_HAVE_TIME=y CONFIG_MBEDTLS_HAVE_TIME_DATE= CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y CONFIG_MBEDTLS_TLS_SERVER_ONLY= CONFIG_MBEDTLS_TLS_CLIENT_ONLY= CONFIG_MBEDTLS_TLS_DISABLED= CONFIG_MBEDTLS_TLS_SERVER=y CONFIG_MBEDTLS_TLS_CLIENT=y CONFIG_MBEDTLS_TLS_ENABLED=y # # TLS Key Exchange Methods # CONFIG_MBEDTLS_PSK_MODES= 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 CONFIG_MBEDTLS_SSL_RENEGOTIATION=y CONFIG_MBEDTLS_SSL_PROTO_SSL3= 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= CONFIG_MBEDTLS_SSL_ALPN=y CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y # # Symmetric Ciphers # CONFIG_MBEDTLS_AES_C=y CONFIG_MBEDTLS_CAMELLIA_C= CONFIG_MBEDTLS_DES_C= CONFIG_MBEDTLS_RC4_DISABLED=y CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= CONFIG_MBEDTLS_RC4_ENABLED= CONFIG_MBEDTLS_BLOWFISH_C= CONFIG_MBEDTLS_XTEA_C= CONFIG_MBEDTLS_CCM_C=y CONFIG_MBEDTLS_GCM_C=y CONFIG_MBEDTLS_RIPEMD160_C= # # 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 CONFIG_MBEDTLS_ECP_C=y CONFIG_MBEDTLS_ECDH_C=y CONFIG_MBEDTLS_ECDSA_C=y 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 # # OpenSSL # CONFIG_OPENSSL_DEBUG= CONFIG_OPENSSL_ASSERT_DO_NOTHING=y CONFIG_OPENSSL_ASSERT_EXIT= # # PThreads # CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 # # SPI Flash driver # CONFIG_SPI_FLASH_VERIFY_WRITE= CONFIG_SPI_FLASH_ENABLE_COUNTERS= CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= # # SPIFFS Configuration # CONFIG_SPIFFS_MAX_PARTITIONS=3 # # SPIFFS Cache Configuration # CONFIG_SPIFFS_CACHE=y CONFIG_SPIFFS_CACHE_WR=y CONFIG_SPIFFS_CACHE_STATS= CONFIG_SPIFFS_PAGE_CHECK=y CONFIG_SPIFFS_GC_MAX_RUNS=10 CONFIG_SPIFFS_GC_STATS= CONFIG_SPIFFS_PAGE_SIZE=256 CONFIG_SPIFFS_OBJ_NAME_LEN=32 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= CONFIG_SPIFFS_API_DBG= CONFIG_SPIFFS_GC_DBG= CONFIG_SPIFFS_CACHE_DBG= CONFIG_SPIFFS_CHECK_DBG= CONFIG_SPIFFS_TEST_VISUALISATION= # # tcpip adapter # CONFIG_IP_LOST_TIMER_INTERVAL=120 # # Wear Levelling # CONFIG_WL_SECTOR_SIZE_512= CONFIG_WL_SECTOR_SIZE_4096=y CONFIG_WL_SECTOR_SIZE=4096