esp-idf | Espressif IoT Development Framework

 by   espressif C Version: v4.4.5 License: Apache-2.0

kandi X-RAY | esp-idf Summary

kandi X-RAY | esp-idf Summary

esp-idf is a C library typically used in Internet of Things (IoT), Framework applications. esp-idf has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

ESP-IDF is the development framework for Espressif SoCs supported on Windows, Linux and macOS.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              esp-idf has a medium active ecosystem.
              It has 10709 star(s) with 6536 fork(s). There are 491 watchers for this library.
              There were 3 major release(s) in the last 12 months.
              There are 1337 open issues and 8628 have been closed. On average issues are closed in 205 days. There are 125 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of esp-idf is v4.4.5

            kandi-Quality Quality

              esp-idf has 0 bugs and 0 code smells.

            kandi-Security Security

              esp-idf has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              esp-idf code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              esp-idf is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              esp-idf releases are available to install and integrate.
              Installation instructions are available. Examples and code snippets are not available.
              It has 44395 lines of code, 2776 functions and 400 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of esp-idf
            Get all kandi verified functions for this library.

            esp-idf Key Features

            No Key Features are available at this moment for esp-idf.

            esp-idf Examples and Code Snippets

            No Code Snippets are available at this moment for esp-idf.

            Community Discussions

            QUESTION

            Compile errors in Tensorflow Lite Micro framework when trying to integrate Tensorflow Lite Micro to my ESP32 Arduino project
            Asked 2022-Apr-05 at 03:13

            Hi stackoverflow community,

            I am trying to get a project leveraging Tensorflow Lite Micro to run on my ESP32 using PlatformIO and the Arduino framework (not ESP-IDF). Basically, I followed the guide in this medium post https://towardsdatascience.com/tensorflow-meet-the-esp32-3ac36d7f32c7 and then included everything in my already existing ESP32 project.

            My project was compiling fine prior to the integration of Tensorflow Lite Micro but since integrating it, I am getting the following compile errors which seem to be related to the Tensorflow framework itself. When I uncomment everything related to Tensorflow, it compiles fine. But just when only including the following header files, it breaks:

            ...

            ANSWER

            Answered 2022-Apr-05 at 03:13

            I resolved this for now by switching from the Arduino framework to the ESP-IDF framework. With this, it works like a charm.

            Source https://stackoverflow.com/questions/71719891

            QUESTION

            How to initialize a Queue on a second core of an ESP32?
            Asked 2022-Apr-03 at 12:08

            Currently I'm working on a Demo program to better understand working with FreeRTOS. Therefore I would like to try to initialize a Queue on my second core(core1). After initializing i would like to add something to it in a 1 second interval and whenever nothing happens I would like to check my queue and work its content off. Everything related to that queue should work on the second core. The reason being that I previously worked on a Webserver which operates on the main core. My future Queue is supposed to work in parallel on the second core.

            This is my current demoprogram:

            ...

            ANSWER

            Answered 2022-Jan-14 at 16:52

            You don't need to assume where the problem is; the answer is in the backtrace that you posted. The exception happened during a particular function call in your code:

            Source https://stackoverflow.com/questions/70708980

            QUESTION

            ESP32 webserver slows/hangs with more than 1 device accessing pages
            Asked 2022-Feb-09 at 20:27

            I'm writing a webserver for an ESP32, written primarily in C and using platformio and ESP-IDF on VSCode. With a single client, the server works great, but as soon as I try to load a page on more than 1 device (doesn't matter if all the same page or different), everything slows to a crawl. I can see the page requests arriving on the server nice and snappily, but the pages won't load/be sent for up to a minute.

            When this is happening, the server seems to favour an arbitrary device; my android phone, for example, will load pages at normal speeds while my PC and iPhone will be stuck, or on another occasion the PC will be loading fast and the other two devices stuck. This makes me wonder if it's related to my server/socket handling task, but ESP-IDF is such a tangled web of dependencies I'm not sure where to begin looking. I've made a post on the Espressif forum, but haven't had any responses yet. It's not the wifi connection alone, as if I connect all 3 devices but only access the webpages from one, that device still loads everything fine.

            Updates:

            07/02 - I'm more and more convinced that the culprit is the socket task, as it doesn't seem to allow for multiple sockets simultaneously; after accepting one it handles everything for that one socket before looping back and accepting another one.

            08/02 - I modified tcp_server_task to start a new task for each socket (below is now the modified function and additional task), but this if anything made things worse, leaving me more confused than before.

            09/02 - I tried increasing the backlog argument of listen() from 1 to 32, this also made no difference.

            Attempted (failed) solutions now include:

            • Setting keepAlive to 0

            • changing dest_addr_ip4 from INADDR_ANY to 192.168.4.1, the desired address for devices to connect to

            • pinning the socket handling task to a different core to the tcp_server_task

            • adding vTaskDelay(pdMS_TO_TICKS(x)) at various points with various values of x

            Stuck devices are still consistently loading simultaneously after however long it takes (usually 30 to 60 seconds, sometimes longer)

            10/02 - I forgot to mention, the ESP has bluetooth enabled as well, as we want users to be able to control stuff over both wireless methods.

            socket handling task(s):

            ...

            ANSWER

            Answered 2022-Feb-09 at 20:27

            Fixed it! The solution that worked in the end wasn't actually anything to do with sockets, all I did was set the lru_purge_enable of my httpd_config_t to true. All 3 devices are now very happily loading everything. I'd still be curious if anyone knows why the http (connections?) weren't being dropped and required purging.

            Source https://stackoverflow.com/questions/70964023

            QUESTION

            Include subdirectories to organise code in ESP-IDF for ESP32
            Asked 2022-Feb-01 at 22:03

            I'm using ESP-IDF 4.3.2 to create an ESP32 project with the following command:

            idf.py create-project --path test test

            I then modify main/main.c to contain the following code:

            ...

            ANSWER

            Answered 2022-Jan-29 at 20:57

            Im not exactly familiar with cmake and ESP-IDF. I use platformio in nvim and make. But try create in root directory CMakeLists.txt contains:

            Source https://stackoverflow.com/questions/70871393

            QUESTION

            ESP32 websocket client frame fragmentation configuration for binary data
            Asked 2022-Jan-21 at 19:15

            I am attempting to send camera frames to a web socket server from an ESP32 with a camera. I am using the ESP-IDF to implement the client web socket on the device. Specifically, I am using: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_websocket_client.html.

            I have noticed an issue where the server does not receive full frames from the device. I did some digging, read through RFC6455 and became aware of the concept of frame fragmentation. My thinking now is that the camera frames (640 x 480 pixels) need to be fragmented before being sent. I read through the ESP-IDF docs and only saw one mention of fragmentation.

            I feel comfortable enough to implement it myself, but it seems that there is no way to set the FIN bit, OPCODE, or any other parameters of the header described by RFC6455 using the ESP-IDF web socket client library.

            Does any one have any idea how these parameters can be set, or if there is some way to enable native frame fragmentation on the device?

            ...

            ANSWER

            Answered 2022-Jan-21 at 19:15

            Looking at the source code, it appears that the message is already being fragmented, if the message exceeds the size of buffer_size.

            The default size of buffer_size is 1024 bytes. You can change it in the config.

            Source https://stackoverflow.com/questions/70795636

            QUESTION

            git shallow is not working for submodules over jenkins?
            Asked 2022-Jan-15 at 20:51

            I am working on the esp-idf as submodule for my development and I have also integrated Jenkins for the same. It is running perfectly without shallow clone feature added over Jenkins. But, when I tried to clone submodule with shallow clone with depth 1, 5 to 10 it is throwing same error as below,

            Cloning into 'platform/esp32'... fatal: reference is not a tree: 286202caa31b61c2182209f37f8069a0b60fb942 Unable to checkout '286202caa31b61c2182209f37f8069a0b60fb942' in submodule path 'SDK/platform/esp32' Failed to recurse into submodule path 'SDK'

            However, it is working fine with git commands and without Jenkins.

            Any help would be benefits to me.

            My Jenkins setup as shown below,

            ...

            ANSWER

            Answered 2022-Jan-15 at 20:51

            This was also reported in Jenkins issue 60204 for git-scm plugin.
            Make sure you have the latest version for that plugin.

            Try and cleanup the Jenkins workspace associated with the job (with the help of the WS cleanup plugin)

            As noted in JENKINS 63581:

            The job definition you uploaded as config.xml includes the "clean before checkout" behavior but does not include the "wipe workspace" behavior.

            The "clean before checkout" behavior retains the existing git repository (the .git directory) but removes untracked files.
            It does that with the git clean -xfd command.

            If the workspace had been previously populated with repository content, the "clean before checkout" does not remove that previously created content.

            The git plugin tries to reduce data transfer by retaining the git repository across multiple builds in the same workspace.
            You would need to add "Wipe workspace" to assure that the two workspaces have the same content.

            If wipe workspace still shows a difference, then it is likely that there is a difference due to the two versions of command line git being used.

            The OP Bhargav Lalaji adds in the comments:

            I was checking the git command line on the different system and Jenkins was setup on other system.
            After check the git versions both of them have different version.

            After upgrade the git version from 2.7.4 to 2.34.1, I am able to checkout submodule with shallow clone with Jenkins

            Source https://stackoverflow.com/questions/70692459

            QUESTION

            accepting Uri between 2 numbers
            Asked 2021-Dec-20 at 20:30

            I'm working on the ESP-idf via Visual Studio Code. Currently I'm working on a Webserver implementation and i would like to accept the following url:

            IPADDRESS/command/on/5(number between 1 and 32)

            The easiest(but not very efficient) solution would be, to initialize every single uri like this

            ...

            ANSWER

            Answered 2021-Oct-28 at 12:00

            The ISP IDF HTTP server supports custom URI matchers, where you can create your own logic for matching the incoming request URIs or use basic wildcard expressions. I don't have time to dig into the API documentation for producing sample code, but it looks fairly simple.

            Source https://stackoverflow.com/questions/69751951

            QUESTION

            ESP32 esp-idf what is the sdkconfig.ci file used for?
            Asked 2021-Dec-18 at 23:22

            Several of the examples in the esp-idf contain a sdkconfig.ci file (e.g. examples/bluetooth/nimble/blehr).

            I understand the usage of sdkconfig.defaults but I can't find any reference to sdkconfig.ci in the Espressif build system API guide.

            When should the .ci file be used and under what conditions are the configurations in it applied?

            ...

            ANSWER

            Answered 2021-Aug-05 at 06:27

            sdkconfig.ci are configs used when building apps in their own CI system, so these by default won't do anything in your project.

            Usually, we can set config values using menuconfig, and these will be saved to sdkconfig. If there is a need to set some default values ( without using menuconfig), then this is possible by adding a sdkconfig.default file, and then add the new options there.

            Source https://stackoverflow.com/questions/68636836

            QUESTION

            CMake and ESP-IDF: Creating custom components
            Asked 2021-Nov-18 at 11:27

            Framework:

            ESP-IDF v4.3.1 - Eclipse Plugin

            Project with 1 active component (my plan is to add ble scanning, mqtt messaging and wifi access)

            ...

            ANSWER

            Answered 2021-Nov-18 at 11:27

            You have a naming conflict. You're trying to create a custom component named mqtt which requires the system component named mqtt and you expect the build system to figure it out. That's just asking for trouble :)

            Name your component myproject-mqtt or something. Watch out for similar problems with your components wifi and ble.

            Source https://stackoverflow.com/questions/70011677

            QUESTION

            How to disable specific compilation warnings from CPP compiler in VSCode? (preferably using build options)
            Asked 2021-Oct-24 at 16:33

            I am using VSCode and ESP-IDF to program Arduino. Some of the Arduino library files are generating warnings such as below.

            ...

            ANSWER

            Answered 2021-Oct-24 at 03:53

            Navigate to your ESP-IDF directory and look for build.cmake file under esp-idf/tools/cmake directory.

            In the build.cmake file - look for the section called function(__build_set_default_build_specifications) - this contains all the default compiler options that are executed at build time. Include -Wno-unused-function here, save and recompile your project!

            But be aware that this will disable this warning globally and affect other projects as well.

            Source https://stackoverflow.com/questions/69693750

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install esp-idf

            See https://idf.espressif.com/ for links to detailed instructions on how to set up the ESP-IDF depending on chip you use. Note: Each SoC series and each ESP-IDF release has its own documentation. Please see Section Versions on how to find documentation and how to checkout specific release of ESP-IDF.
            (See the Getting Started guide listed above for a full list of required steps with more details.).
            Install host build dependencies mentioned in the Getting Started guide.
            Run the install script to set up the build environment. The options include install.bat or install.ps1 for Windows, and install.sh or install.fish for Unix shells.
            Run the export script on Windows (export.bat) or source it on Unix (source export.sh) in every shell environment before using ESP-IDF.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries