ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

ESP Insights (Beta)

ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

Introduction

Developers normally prefer debugging issues by physically probing them using gdb or observing the logs. This surely helps debug issues, but there are often cases wherein issues are seen only in specific environments under specific conditions. Even things like casings and placement of the product can affect the behaviour. A few examples are

  • Wi-Fi disconnections for a smart switch concealed in a wall.
  • Smart speakers crashing during some specific usage pattern.
  • Appliance frequently rebooting due to power supply issues.

Having remote diagnostics facility helps in identifying such issues faster. ESP Insights includes a firmware agent (the Insights agent) that captures some of the vital pieces of diagnostics information from the device during runtime, and periodically uploads them to the ESP Insights cloud. The cloud then processes this data for easy visualisation. Developers can login to a web based dashboard to look at the health and issues reported by their devices in the field. A sample screen is show here.

Insights Overview

Currently, developers can monitor the following information from the web based dashboard:

  • Error logs: Anything that is logged on console with calls with ESP_LOGE by any component in the firmware
  • Warning logs: Anything that is logged on console with calls with ESP_LOGW by any component in the firmware
  • Custom Events: Application specific custom events that the firmware wishes to track via calls to ESP_DIAG_EVENT
  • Reset reason: The reason why the device was reset (power on, watchdog, brownout, etc.)
  • Coredump summary: In case of a crash, the register contents as well as the stack backtrace of the offending thread (wherever possible)
  • Metrics: Time-varying data like the free heap size, the Wi-Fi signal strength that is plotted over a period of time
  • Variables: Variable values like the IP Address or state variables that report their current value

All of this information should help the developer understand better how their device is performing in the field. You may find more details about all of these in the Features section below.

ESP Insights currently works with the ESP RainMaker cloud. Support for other cloud services will be available in a subsequent release.

Getting Started

If you have already been using ESP RainMaker, you can check out the documentation here and get started with enabling Insights in your ESP RainMaker examples. However, if you have never used RainMaker and just want to get started with Insights, continue with the steps below.

In order to enable diagnostics reporting in your firmware, you need to follow a few basic steps summarised below:

  • Set up ESP IDF and ESP Insights.
  • Build and Flash the minimal_diagnostics example on your board.
  • Use ESP RainMaker Host driven claiming to get the cloud credentials.
  • Visit the ESP Insights Dashboard, upload your firmware package and check the diagnostics information.

Head over here for more information.

Features

Let's look at some of the features of ESP Insights

Core Dump

In case of a firmware crash, the Insights agent captures the core dump information into the flash memory and reports it to the ESP Insights cloud in the subsequent boot-up. This allows you to look at all the crash logs that the devices may be generating in the field.

The entire stack backtrace leading up to the crash is also captured and reported. In order to optimise the device-cloud communication, the firmware only sends a summary of the core dump. The summary contains most useful contents of the core dump like the program counter, the exception cause, exception vaddress, general purpose registers, and the backtrace.

Core Dump

Configurations

The core dump reporting requires some configuration options to be set. The configuration options in the below sdkconfig.defaults file can be added in your own application's SDK configuration using the following command:

cat <
   
    > sdkconfig.defaults
CONFIG_ESP32_ENABLE_COREDUMP=y
CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH=y
CONFIG_ESP32_COREDUMP_DATA_FORMAT_ELF=y
CONFIG_ESP32_COREDUMP_CHECKSUM_CRC32=y
CONFIG_ESP32_CORE_DUMP_MAX_TASKS_NUM=64
EOF

   

Reconfigure the project using the following

rm sdkconfig
idf.py reconfigure

Partition Table

In order to store the core dump into flash an additional coredump partition is required. Add the following line to your project's partitions.csv.

coredump, data, coredump, , 64K

Logs

The esp_log is the default logging component in esp-idf. Typically ESP_LOGE and ESP_LOGW are used to log errors and warnings in the firmware. All the logs logged using the esp_log component are tracked by the Insights agent and reported to the ESP Insights cloud. This allows you to view these errors through the ESP Insights Dashboard, providing you with detailed information about what may be going on.

diagnostics-logs

NOTE: If you have multiple devices in the field, capturing every error and warning may generate large volumes of data that gets reported to the cloud. We allow you mechanisms to fine-tune what of these logs can be reported to the Insights cloud.

Configure the log level

Users can configure the log level to report by using esp_diag_log_hook_enable() and esp_diag_log_hook_disable() APIs.

/* enable tracking error logs */
esp_diag_log_hook_enable(ESP_DIAG_LOG_TYPE_ERROR);

/* enable tracking all log levels */
esp_diag_log_hook_enable(ESP_DIAG_LOG_TYPE_ERROR | ESP_DIAG_LOG_TYPE_WARNING | ESP_DIAG_LOG_TYPE_EVENT);

/* disable tracking custom events */
esp_diag_log_hook_disable(ESP_DIAG_LOG_TYPE_EVENT);

Maintaining Logs Across Reboots

Often it happens that a crash is preceded by certain error conditions that trigger the crash. It would be invaluable if we could extract these errors that occurred just before a crash happened, to understand the particulars of the crash. ESP Insights provides a way to capture this.

Most ESP32 SoCs are equipped with an RTC memory that is retained across a soft power cycle event. The Insights agent uses this memory to store the critical errors that occurred on the system. On any boot-up, the Insights agent will check for any unreported errors from the previous boot-up through this RTC memory and report that to the Insights cloud.

Reboot Reason

The Insights agent reports the reboot reason on every boot-up to the cloud. This allows you to identify whether a device rebooted because of a crash, a watchdog trigger, a soft reset, or a power-reset by the end-user.

Metrics

The Insights agent supports recording and reporting metrics to cloud. You may then view graphs, through the Insights dashboard, that plot how these metrics changed over a period of time.

You should enable CONFIG_DIAG_ENABLE_METRICS=y config option to enable metrics support.

The Insights agent can record a set of pre-defined system metrics. Additionally, you could also add your own custom metrics.

Heap Metrics

Heap Metrics

The Insights agent has implemented heap metrics collection and reports free memory, largest free block, and minimum free memory ever. These parameters are tracked and reported for heap in the internal RAM as well as for the heap in the external RAM (in case device has the PSRAM). It also records failed memory allocations. Note that recording failed allocation is available from esp-idf release/v4.2 and onwards.

Enable CONFIG_DIAG_ENABLE_HEAP_METRICS=y config option to enable heap metrics.

Wi-Fi Metrics

The ESP Insights agent also supports Wi-Fi metrics. It collects Wi-Fi signal strength (RSSI) and minimum ever Wi-Fi signal strength information. RSSI is sampled every 30 seconds and if it crosses configured step interval(eg: 5dB, values in multiples of 5, -5dB, -10dB, -15dB, etc.) in either direction then it gets reported to cloud. From esp-idf v4.3 onwards the minimum ever RSSI is also collected and recorded when the RSSI value drops below a pre-configured threshold. The threshold can be configured using esp_wifi_set_rssi_threshold() API.

There is also an API to collect and report wifi metrics at any given point in time.

/* Reports RSSI to cloud and also prints to console */
esp_diag_wifi_metrics_dump();

Custom Metrics

It is fairly simple to register your own metrics as well. This can be done as:

/* Register a metrics to track room temperature */
esp_diag_metrics_register("temp", "temp1", "Room temperature", "room", ESP_DIAG_DATA_TYPE_UINT);

/* Record a data point for room temperature */
uint32_t room_temp = get_room_temperature();
esp_diag_metrics_add_uint("temp1", &room_temp);

As you may notice, every metric has some metadata associated with it. Some explanation of these fields:

  • "temp" - Tag for the metrics, group of metrics can be enabled/disable based on the tag
  • "temp1" - A unique key identifying the metric
  • "Room temperature" - The label that should be shown on the Insights dashboard
  • "room" - Hierarchical path in order to group metrics to allow easy navigation
  • ESP_DIAG_DATA_TYPE_UINT - Data type

Variables

Diagnostics variables are similar to metrics but they represent entities where their current value is much more important than over a period of time. For example, the IP address of the device.

You should enable CONFIG_DIAG_ENABLE_VARIABLES=y config option to enable variables support in firmware.

The Insights agent can record a set of pre-defined system variables. Additionally, you could also add your own custom variables.

Variables

Network Variables

The Insights module currently records some of the following network variables.

  • For Wi-Fi: connection status, SSID, BSSID, Channel, Authentication mode, and wifi disconnection reason
  • For IP: IP address, gateway, and netmask parameters

You should enable CONFIG_DIAG_ENABLE_NETWORK_VARIABLES config option to enable network variables.

Custom Variables

It is fairly simple to register your own variables as well. This can be done as:

/* Register a variable to track stations associated with ESP32 AP */
esp_diag_variable_register("wifi", "sta_cnt", "STAs associated", "wifi.sta", ESP_DIAG_DATA_TYPE_UINT);

/* Assuming WIFI_EVENT_AP_STACONNECTED and WIFI_EVENT_AP_STADISCONNECTED events track the number of associated stations */
esp_diag_variable_add_uint("sta_cnt", &sta_cnt);

As you may notice, every variable has some metadata associated with it. Some explanation of these fields:

  • "wifi" - Tag for the variables, group of variables can be enabled/disabled based on the tag
  • "sta_cnt" - A unique key identifying the variable
  • "STAs associated" - The label that should be shown on the Insights dashboard
  • "wifi.sta" - Hierarchical path in order to group variables to allow easy navigation
  • ESP_DIAG_DATA_TYPE_UINT - Data type

Transport Sharing

The Insights agent uses MQTT (TLS) sessions to send data to the cloud. Creating a separate TLS session on the device could add to the memory consumption on the device. To avoid this, the Insights agent shares the transport (MQTT) with your cloud agent. Currently the RainMaker cloud agent is supported. This ensures that we reuse the socket/TLS connection without adding a connection memory overhead on your device.

Optimising Device-Cloud Communication

The diagnostics data transfer between the device and the cloud is optimised to send as little data as possible. Some of the things that we do to ensure this are:

  • We use CBOR based encoding, which provides a tight binary representation of data to be transported between the device and the cloud
  • Wherever possible, we leverage the fact that the cloud can reference the ELF file for the firmware that is executing on the device. For example, if the firmware logs a read-only string data in diagnostics, this read-only string would already be present in the rodata of the firmware ELF image. So instead of transmitting the entire string, we just transmit the address of the string to the Insights cloud. The Insights cloud takes care of cross-referencing this with the appropriate ELF file to extract the string that is available.
  • Many cloud platforms charge based on the MQTT messages. One of the features we are working on is to piggyback diagnostics data into the same MQTT message as the command-and-control data from your cloud service. This will bring further costs savings by optimising the number of distinct MQTT messages being exchanged with the cloud.
Comments
  • How to generate firmware package? /project_build_config.json: no such file or directory

    How to generate firmware package? /project_build_config.json: no such file or directory

    Hello,

    I am trying to upload the firmware package to esp-insights dashboard but it says that something went wrong: image

    I am using Arduino and platformio to build the firmware, so I have created the zip file using also the build/ directory from platformio, which contains the firmware.bin, elf, map and the rest of the files but it looks that this "project_build_config.json" file is not generated using arduino framework for firmware compilation.

    If I use the ESP-IDF hello-world example and compile it, it also does not create such as "project_build_config.json" but it creates a "project_description.json" file. If I use that file (change the respective app_elf and app_bine properties to the correct ones) and upload this also within the zip file, the error I get while uploading the zip file is:

    image

    • So what are the exact files (bin, elf, map, what else?) that should be added to the firmware package zip file?
    • How can I adjust the "project_description.json" file or what are the json properties that the backend needs?

    Thank you!

  • Implementing esp_insights_unregister_periodic_handler.

    Implementing esp_insights_unregister_periodic_handler.

    In order to properly deinitialize the ESP Insights it is necessary to stop the periodic handler timer, stop the work queue and deinit it too. Finally the esp_insights_entry_t structure is freed.

    Please note that that it was necessary to add a modification for the rmaker_common component (submodule) that is being reviewd at https://github.com/espressif/esp-rainmaker-common/pull/2

  • Unable to build

    Unable to build

    C:/Users/he/Desktop/esp-insights/components/esp_diagnostics/src/esp_diagnostics_utils.c: In function 'esp_diag_task_snapshot_get$part$0': C:/Users/he/Desktop/esp-insights/components/esp_diagnostics/src/esp_diagnostics_utils.c:156:13: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation] strncpy(tasks[i].name, name, strlen(name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • Unable to upload firmware package

    Unable to upload firmware package

    Sometimes it's difficult to upload a new firmware package. Most of the time it says "Something went wrong" without uploading the firmware properly. However, it seems that the firmware is uploaded besides the error message.

    Screenshot from 2022-02-13 11-57-13

  • Idf patch not working

    Idf patch not working

    I am using esp idf 4.3.1 and trying to apply the patch for 4.3

    Here is the output of the patch file:

        ~/esp/esp-idf  on  #v4.3.1 !8183  git apply -v /Users/miroslavpetrov/esp/esp-rainmaker/components/esp-insights/idf-patches/Diagnostics-support-in-esp-idf-tag-v4.3.patch
    Checking patch components/espcoredump/CMakeLists.txt...
    warning: components/espcoredump/CMakeLists.txt has type 100755, expected 100644
    Checking patch components/espcoredump/Kconfig...
    warning: components/espcoredump/Kconfig has type 100755, expected 100644
    Hunk #1 succeeded at 90 (offset 8 lines).
    Checking patch components/espcoredump/component.mk...
    warning: components/espcoredump/component.mk has type 100755, expected 100644
    Checking patch components/espcoredump/include/esp_core_dump.h...
    warning: components/espcoredump/include/esp_core_dump.h has type 100755, expected 100644
    error: while searching for:
     */
    esp_err_t esp_core_dump_image_get(size_t* out_addr, size_t *out_size);
    
    #ifdef __cplusplus
    }
    #endif
    
    error: patch failed: components/espcoredump/include/esp_core_dump.h:89
    error: components/espcoredump/include/esp_core_dump.h: patch does not apply
    Checking patch components/espcoredump/include/port/riscv/esp_core_dump_summary_port.h...
    Checking patch components/espcoredump/include/port/xtensa/esp_core_dump_summary_port.h...
    Checking patch components/espcoredump/include_core_dump/esp_core_dump_port.h...
    warning: components/espcoredump/include_core_dump/esp_core_dump_port.h has type 100755, expected 100644
    Checking patch components/espcoredump/src/core_dump_elf.c...
    warning: components/espcoredump/src/core_dump_elf.c has type 100755, expected 100644
    Checking patch components/espcoredump/src/core_dump_flash.c...
    warning: components/espcoredump/src/core_dump_flash.c has type 100755, expected 100644
    error: while searching for:
    #include "esp_flash_encrypt.h"
    #include "esp_rom_crc.h"
    
    const static DRAM_ATTR char TAG[] __attribute__((unused)) = "esp_core_dump_flash";
    
    #if CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH
    
    error: patch failed: components/espcoredump/src/core_dump_flash.c:20
    error: components/espcoredump/src/core_dump_flash.c: patch does not apply
    Checking patch components/espcoredump/src/port/riscv/core_dump_port.c...
    warning: components/espcoredump/src/port/riscv/core_dump_port.c has type 100755, expected 100644
    Checking patch components/espcoredump/src/port/xtensa/core_dump_port.c...
    warning: components/espcoredump/src/port/xtensa/core_dump_port.c has type 100755, expected 100644
        ~/esp/esp-idf  on  #v4.3.1 !8183 
    
  • No data in dashboard

    No data in dashboard

    I am trying to use esp insights together with esp rainmaker but no data is shown in the dashboard. I have enabled all options in the sdkconfig, I have uploaded the .zip archive with the firmware to the dashboard. In the serial output of the esp I can see that data is being transferred to the esp insights. I (1020998) esp_insights: MQTT Published. Msg id: 12308. I (1021198) esp_insights: MQTT Published. Msg id: 5031. I (1021208) esp_insights: MQTT Published. Msg id: 63640.

    I (902908) esp_insights: MQTT Published. Msg id: 1330. I (903038) esp_insights: MQTT Published. Msg id: 5125. I (903038) esp_insights: MQTT Published. Msg id: 33022. I (905708) esp_insights: Sending data of length 1535 to the MQTT Insights topic:

    Screenshot 2021-08-26 at 12 56 06
  • Insights SSID variable 1st letter uppercase

    Insights SSID variable 1st letter uppercase

    Thanks for this functionality!

    Using the switch example code and with variable and metrics enabled, I noticed that the SSID is reported with the 1st letter in uppercase.

    in this case the ssid is Screenshot (167) Screenshot (168)

  • "Some information is missing! There is a chance that some firmware package is not present."

    [RESOLVED] image

    Is it due to unsynchronised firmware package? Can it still remains if updated firmware package?

    Also have a lot of warnings like this: image

    I use ESP Insights with RainMaker. Using ESP32-C3-DevKitM-1, IDF v.4.4.3 I think that Firmware Package is in sync.

    EDIT: the warning disappears when there is no records on the screen, catched before firmware package sync.

  • can send data to cloud error will case device restart

    can send data to cloud error will case device restart

    05/12/22 21:01:46 Software reset due to exception/panic (ESP_RST_PANIC)

    ERROR 05/12/22 21:02:39 E (7905) esp-tls: couldn't get hostname for :client.insights.espressif.com: getaddrinfo() returns 202, addrinfo=0x0

    ERROR 05/12/22 21:02:39 E (7925) esp-tls: Failed to open new connection

    ERROR 05/12/22 21:02:39 E (7925) transport_base: Failed to open a new connection

    ERROR 05/12/22 21:02:39 E (7935) HTTP_CLIENT: Connection failed, sock < 0

    ERROR 05/12/22 21:02:39 E (7935) tport_https: esp_http_client_perform failed err:0x7002

    ERROR 05/12/22 21:02:39 E (7945) esp-tls: couldn't get hostname for :client.insights.espressif.com: getaddrinfo() returns 202, addrinfo=0x0

    ERROR 05/12/22 21:02:39 E (7955) esp-tls: Failed to open new connection

    ERROR 05/12/22 21:02:39 E (7965) transport_base: Failed to open a new connection

    ERROR 05/12/22 21:02:39 E (7965) HTTP_CLIENT: Connection failed, sock < 0

    ERROR 05/12/22 21:02:39 E (7975) tport_https: esp_http_client_perform failed err:0x700

  • Add esp-insights to component manager

    Add esp-insights to component manager

    To test esp_insights in an existing project I had to clone the repository and copy the components folder into my project's component folder and then enable it using idf.py menuconfig. Not sure if there's an easier way of doing this, but using the component manager would be a nice way of simplifying the process.

  • "Please provide a valid package name"

    When trying to add the Firmware Package on the dashboard I get the "Please provide a valid package name" error.

    Captura de pantalla 2022-11-29 213231

    The Project name is: R84.24 The version is: 2_0_0_221118 The zip file generated is: R84.24-v2_0_0_221118.zip The package name I'm using is: R84.24-v2_0_0_221118, also tried R84.24-2_0_0_221118 and other combinations.

    Captura de pantalla 2022-11-29 213313

  • Failed to resolve component 'rmaker_common'.

    Failed to resolve component 'rmaker_common'.

    I try to add ESP Insights to an ESP32-C3 project. I have added esp_diagnostics, esp_insights and esp-rainmaker (git clone --recursive https://github.com/espressif/esp-rainmaker.git) to the components directory of my project. During the build process the following error is thrown:

    PS C:\Projects\wifi-prov> pio run -t menuconfig
    Processing debug (board: esp32-c3-devkitm-1; platform: https://git.traplinked.com/traplinked/hardware/platformio/platforms/platform-espidf.git#idf_4.4.2; framework: espidf)
    ------------------------------------------------------------------------------------------------------------------------
    Verbose mode can be enabled via `-v, --verbose` option
    CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
    PLATFORM: Espressif 32 (4.4.2+sha.ce6cdd0) > Espressif ESP32-C3-DevKitM-1
    HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
    DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
    PACKAGES:
     - framework-espidf @ 3.40402.0+sha.67bfcf25
     - tool-cmake @ 3.16.4
     - tool-esptoolpy @ 1.30300.0 (3.3.0)
     - tool-idf @ 1.0.1
     - tool-mconf @ 1.4060000.20190628 (406.0.0)
     - tool-mklittlefs @ 1.203.210628 (2.3)
     - tool-mkspiffs @ 2.230.0 (2.30)
     - tool-ninja @ 1.9.0
     - toolchain-esp32ulp @ 1.22851.191205 (2.28.51)
     - toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
    Reading CMake configuration...
    -- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.38.1.windows.1")
    -- Component directory C:/Projects/wifi-prov/components/esp-rainmaker does not contain a CMakeLists.txt file. No component will be added
    -- The C compiler identification is GNU 8.4.0
    -- The CXX compiler identification is GNU 8.4.0
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/Users/Daniel/.platformio/packages/toolchain-riscv32-esp/bin/riscv32-esp-elf-gcc.exe
    -- Check for working C compiler: C:/Users/Daniel/.platformio/packages/toolchain-riscv32-esp/bin/riscv32-esp-elf-gcc.exe
    -- Check for working C compiler: C:/Users/Daniel/.platformio/packages/toolchain-riscv32-esp/bin/riscv32-esp-elf-gcc.exe -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: C:/Users/Daniel/.platformio/packages/toolchain-riscv32-esp/bin/riscv32-esp-elf-g++.exe
    -- Check for working CXX compiler: C:/Users/Daniel/.platformio/packages/toolchain-riscv32-esp/bin/riscv32-esp-elf-g++.exe -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Project is not inside a git repository, or git repository has no commits; will not use 'git describe' to determine PROJECT_VER.
    -- Building ESP-IDF components for target esp32c3
    -- Configuring incomplete, errors occurred!
    See also "C:/Projects/wifi-prov/.pio/build/debug/CMakeFiles/CMakeOutput.log".
    
    CMake Error at C:/Users/Daniel/.platformio/packages/[email protected]/tools/cmake/build.cmake:201 (message):
      Failed to resolve component 'rmaker_common'.
    Call Stack (most recent call first):
      C:/Users/Daniel/.platformio/packages/[email protected]/tools/cmake/build.cmake:232 (__build_resolve_and_add_req)
      C:/Users/Daniel/.platformio/packages/[email protected]/tools/cmake/build.cmake:509 (__build_expand_requirements)
      C:/Users/Daniel/.platformio/packages/[email protected]/tools/cmake/project.cmake:384 (idf_build_process)
      CMakeLists.txt:4 (project)
    

    How can I fix this?

  • ESP_LOGI compile errors and rtc_store info is used uninitialized in

    ESP_LOGI compile errors and rtc_store info is used uninitialized in "rtc_store_read_complete"

    Hello,

    I'm refreshing a ESP-IDF 4.4 project of mine towards ESP-IDF 5.x:

    https://github.com/brainstorm/esp-modbus-power-meter

    But I'm encountering some issues with rtc_store component in esp-insights, is this a known issue?:

    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c:123:43: error: 'info' is used uninitialized [-Werror=uninitialized]
      123 |     ((data_store_info_t *) &info)->filled -= len;
          |                                           ^~
    

    Full idf.py build log:

    (esp) [email protected] esp-modbus-power-meter % idf.py build
    Executing action: all (aliases: build)
    Running ninja in directory /Users/rvalls/dev/personal/esp-modbus-power-meter/build
    Executing "ninja all"...
    [0/1] Re-running CMake...-- Component directory /Users/rvalls/esp/esp-idf/components/asio does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/cbor does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/coap does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/expat does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/libsodium does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/nghttp does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights does not contain a CMakeLists.txt file. No component will be added
    -- Building ESP-IDF components for target esp32s2
    Processing 1 dependencies:
    [1/1] idf (5.1.0)-- Project sdkconfig file /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:300 CONFIG_MCPWM_ISR_IN_IRAM was replaced with CONFIG_MCPWM_ISR_IRAM_SAFE
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:355 CONFIG_ESP32S2_DEFAULT_CPU_FREQ_80 was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:356 CONFIG_ESP32S2_DEFAULT_CPU_FREQ_160 was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:357 CONFIG_ESP32S2_DEFAULT_CPU_FREQ_240 was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:358 CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ was replaced with CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:376 CONFIG_ESP32S2_SPIRAM_SUPPORT was replaced with CONFIG_SPIRAM
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:379 CONFIG_ESP32S2_ULP_COPROC_ENABLED was replaced with CONFIG_ULP_COPROC_ENABLED
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:380 CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM was replaced with CONFIG_ULP_COPROC_RESERVE_MEM
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:381 CONFIG_ESP32S2_DEBUG_OCDAWARE was replaced with CONFIG_ESP_DEBUG_OCDAWARE
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:382 CONFIG_ESP32S2_BROWNOUT_DET was replaced with CONFIG_ESP_BROWNOUT_DET
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:383 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_7 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:384 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_6 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:385 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_5 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:386 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_4 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:387 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_3 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:388 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_2 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:389 CONFIG_ESP32S2_BROWNOUT_DET_LVL_SEL_1 was replaced with CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:390 CONFIG_ESP32S2_BROWNOUT_DET_LVL was replaced with CONFIG_ESP_BROWNOUT_DET_LVL
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:391 CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC_FRC1 was replaced with CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:392 CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC was replaced with CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:393 CONFIG_ESP32S2_TIME_SYSCALL_USE_FRC1 was replaced with CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:394 CONFIG_ESP32S2_TIME_SYSCALL_USE_NONE was replaced with CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:395 CONFIG_ESP32S2_RTC_CLK_SRC_INT_RC was replaced with CONFIG_RTC_CLK_SRC_INT_RC
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:396 CONFIG_ESP32S2_RTC_CLK_SRC_EXT_CRYS was replaced with CONFIG_RTC_CLK_SRC_EXT_CRYS
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:397 CONFIG_ESP32S2_RTC_CLK_SRC_EXT_OSC was replaced with CONFIG_RTC_CLK_SRC_EXT_OSC
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:398 CONFIG_ESP32S2_RTC_CLK_SRC_INT_8MD256 was replaced with CONFIG_RTC_CLK_SRC_INT_8MD256
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:399 CONFIG_ESP32S2_RTC_CLK_CAL_CYCLES was replaced with CONFIG_RTC_CLK_CAL_CYCLES
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:400 CONFIG_ESP32S2_NO_BLOBS was replaced with CONFIG_APP_NO_BLOBS
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:459 CONFIG_OTA_ALLOW_HTTP was replaced with CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:580 CONFIG_ESP_TASK_WDT was replaced with CONFIG_ESP_TASK_WDT_INIT
    /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig:751 CONFIG_HAL_ASSERTION_SILIENT was replaced with CONFIG_HAL_ASSERTION_SILENT
    -- App "esp-modbus-power-meter" version: portimao-27-g4491fac-dirty
    -- Adding linker script /Users/rvalls/dev/personal/esp-modbus-power-meter/build/esp-idf/esp_system/ld/memory.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_system/ld/esp32s2/sections.ld.in
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.api.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.libgcc.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-data.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.spiflash.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/soc/esp32s2/ld/esp32s2.peripherals.ld
    ESP RainMaker Project commit: fee5190-dirty
    ESP Insights Project commit: 
    -- Components: app_insights app_reset app_trace app_update app_wifi bootloader bootloader_support bt cbor cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_common esp_diagnostics esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_insights esp_lcd esp_local_ctrl esp_netif esp_phy esp_pm esp_psram esp_rainmaker esp_ringbuf esp_rom esp_schedule esp_system esp_timer esp_wifi espcoredump esptool_py fatfs freertos gpio_button hal heap http_parser idf_test ieee802154 json json_generator json_parser log lwip mbedtls mdns mqtt newlib nvs_flash openthread partition_table perfmon protobuf-c protocomm pthread qrcode rmaker_common rtc_store sdmmc soc spi_flash spiffs tcp_transport tinyusb touch_element ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant ws2812_led xtensa
    -- Component paths: /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/examples/common/app_insights /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/examples/common/app_reset /Users/rvalls/esp/esp-idf/components/app_trace /Users/rvalls/esp/esp-idf/components/app_update /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/examples/common/app_wifi /Users/rvalls/esp/esp-idf/components/bootloader /Users/rvalls/esp/esp-idf/components/bootloader_support /Users/rvalls/esp/esp-idf/components/bt /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/cbor /Users/rvalls/esp/esp-idf/components/cmock /Users/rvalls/esp/esp-idf/components/console /Users/rvalls/esp/esp-idf/components/cxx /Users/rvalls/esp/esp-idf/components/driver /Users/rvalls/esp/esp-idf/components/efuse /Users/rvalls/esp/esp-idf/components/esp-tls /Users/rvalls/esp/esp-idf/components/esp_adc /Users/rvalls/esp/esp-idf/components/esp_app_format /Users/rvalls/esp/esp-idf/components/esp_common /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/esp_diagnostics /Users/rvalls/esp/esp-idf/components/esp_eth /Users/rvalls/esp/esp-idf/components/esp_event /Users/rvalls/esp/esp-idf/components/esp_gdbstub /Users/rvalls/esp/esp-idf/components/esp_hid /Users/rvalls/esp/esp-idf/components/esp_http_client /Users/rvalls/esp/esp-idf/components/esp_http_server /Users/rvalls/esp/esp-idf/components/esp_https_ota /Users/rvalls/esp/esp-idf/components/esp_https_server /Users/rvalls/esp/esp-idf/components/esp_hw_support /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/esp_insights /Users/rvalls/esp/esp-idf/components/esp_lcd /Users/rvalls/esp/esp-idf/components/esp_local_ctrl /Users/rvalls/esp/esp-idf/components/esp_netif /Users/rvalls/esp/esp-idf/components/esp_phy /Users/rvalls/esp/esp-idf/components/esp_pm /Users/rvalls/esp/esp-idf/components/esp_psram /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp_rainmaker /Users/rvalls/esp/esp-idf/components/esp_ringbuf /Users/rvalls/esp/esp-idf/components/esp_rom /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp_schedule /Users/rvalls/esp/esp-idf/components/esp_system /Users/rvalls/esp/esp-idf/components/esp_timer /Users/rvalls/esp/esp-idf/components/esp_wifi /Users/rvalls/esp/esp-idf/components/espcoredump /Users/rvalls/esp/esp-idf/components/esptool_py /Users/rvalls/esp/esp-idf/components/fatfs /Users/rvalls/esp/esp-idf/components/freertos /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/gpio_button /Users/rvalls/esp/esp-idf/components/hal /Users/rvalls/esp/esp-idf/components/heap /Users/rvalls/esp/esp-idf/components/http_parser /Users/rvalls/esp/esp-idf/components/idf_test /Users/rvalls/esp/esp-idf/components/ieee802154 /Users/rvalls/esp/esp-idf/components/json /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/json_generator /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/json_parser /Users/rvalls/esp/esp-idf/components/log /Users/rvalls/esp/esp-idf/components/lwip /Users/rvalls/esp/esp-idf/components/mbedtls /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/mdns /Users/rvalls/esp/esp-idf/components/mqtt /Users/rvalls/esp/esp-idf/components/newlib /Users/rvalls/esp/esp-idf/components/nvs_flash /Users/rvalls/esp/esp-idf/components/openthread /Users/rvalls/esp/esp-idf/components/partition_table /Users/rvalls/esp/esp-idf/components/perfmon /Users/rvalls/esp/esp-idf/components/protobuf-c /Users/rvalls/esp/esp-idf/components/protocomm /Users/rvalls/esp/esp-idf/components/pthread /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/qrcode /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rmaker_common /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store /Users/rvalls/esp/esp-idf/components/sdmmc /Users/rvalls/esp/esp-idf/components/soc /Users/rvalls/esp/esp-idf/components/spi_flash /Users/rvalls/esp/esp-idf/components/spiffs /Users/rvalls/esp/esp-idf/components/tcp_transport /Users/rvalls/esp/esp-idf/components/tinyusb /Users/rvalls/esp/esp-idf/components/touch_element /Users/rvalls/esp/esp-idf/components/ulp /Users/rvalls/esp/esp-idf/components/unity /Users/rvalls/esp/esp-idf/components/usb /Users/rvalls/esp/esp-idf/components/vfs /Users/rvalls/esp/esp-idf/components/wear_levelling /Users/rvalls/esp/esp-idf/components/wifi_provisioning /Users/rvalls/esp/esp-idf/components/wpa_supplicant /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/ws2812_led /Users/rvalls/esp/esp-idf/components/xtensa
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/rvalls/dev/personal/esp-modbus-power-meter/build
    [0/1] Re-running CMake...-- Component directory /Users/rvalls/esp/esp-idf/components/asio does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/cbor does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/coap does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/expat does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/libsodium does not contain a CMakeLists.txt file. No component will be added
    -- Component directory /Users/rvalls/esp/esp-idf/components/nghttp does not contain a CMakeLists.txt file. No component will be added
    -- Building ESP-IDF components for target esp32s2
    -- Project sdkconfig file /Users/rvalls/dev/personal/esp-modbus-power-meter/sdkconfig
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/soc/esp32s2/ld/esp32s2.peripherals.ld
    -- App "bootloader" version: v5.1-dev-1195-gfa5d0a3513
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.api.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.libgcc.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2/ld/esp32s2.rom.spiflash.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/bootloader/subproject/main/ld/esp32s2/bootloader.ld
    -- Adding linker script /Users/rvalls/esp/esp-idf/components/bootloader/subproject/main/ld/esp32s2/bootloader.rom.ld
    -- Components: bootloader bootloader_support efuse esp_app_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
    -- Component paths: /Users/rvalls/esp/esp-idf/components/bootloader /Users/rvalls/esp/esp-idf/components/bootloader_support /Users/rvalls/esp/esp-idf/components/efuse /Users/rvalls/esp/esp-idf/components/esp_app_format /Users/rvalls/esp/esp-idf/components/esp_common /Users/rvalls/esp/esp-idf/components/esp_hw_support /Users/rvalls/esp/esp-idf/components/esp_rom /Users/rvalls/esp/esp-idf/components/esp_system /Users/rvalls/esp/esp-idf/components/esptool_py /Users/rvalls/esp/esp-idf/components/freertos /Users/rvalls/esp/esp-idf/components/hal /Users/rvalls/esp/esp-idf/components/log /Users/rvalls/esp/esp-idf/components/bootloader/subproject/main /Users/rvalls/esp/esp-idf/components/bootloader/subproject/components/micro-ecc /Users/rvalls/esp/esp-idf/components/newlib /Users/rvalls/esp/esp-idf/components/partition_table /Users/rvalls/esp/esp-idf/components/soc /Users/rvalls/esp/esp-idf/components/spi_flash /Users/rvalls/esp/esp-idf/components/xtensa
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/rvalls/dev/personal/esp-modbus-power-meter/build/bootloader
    [1/1] cd /Users/rvalls/dev/personal/esp-modbus-power-meter/build/bootloader/esp-idf/esptool_p...ader 0x1000 /Users/rvalls/dev/personal/esp-modbus-power-meter/build/bootloader/bootloader.binBootloader binary size 0x4f70 bytes. 0x2090 bytes (29%) free.
    [836/919] Building C object esp-idf/ws2812_led/CMakeFiles/__idf_ws2812_led.dir/ws2812_led.c.objIn file included from /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/ws2812_led/ws2812_led.c:22:
    /Users/rvalls/esp/esp-idf/components/driver/deprecated/driver/rmt.h:18:2: warning: #warning "The legacy RMT driver is deprecated, please use driver/rmt_tx.h and/or driver/rmt_rx.h" [-Wcpp]
       18 | #warning "The legacy RMT driver is deprecated, please use driver/rmt_tx.h and/or driver/rmt_rx.h"
          |  ^~~~~~~
    [839/919] Building C object esp-idf/ws2812_led/CMakeFiles/__idf_ws2812_led.dir/led_strip_rmt_ws2812.c.objIn file included from /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/ws2812_led/led_strip_rmt_ws2812.c:20:
    /Users/rvalls/esp/esp-idf/components/driver/deprecated/driver/rmt.h:18:2: warning: #warning "The legacy RMT driver is deprecated, please use driver/rmt_tx.h and/or driver/rmt_rx.h" [-Wcpp]
       18 | #warning "The legacy RMT driver is deprecated, please use driver/rmt_tx.h and/or driver/rmt_rx.h"
          |  ^~~~~~~
    [860/919] Building C object esp-idf/rtc_store/CMakeFiles/__idf_rtc_store.dir/src/rtc_store.c.objFAILED: esp-idf/rtc_store/CMakeFiles/__idf_rtc_store.dir/src/rtc_store.c.obj 
    /Users/rvalls/.espressif/tools/xtensa-esp32s2-elf/esp-2022r1-11.2.0/xtensa-esp32s2-elf/bin/xtensa-esp32s2-elf-gcc -DESP_PLATFORM -DIDF_VER=\"v5.1-dev-1195-gfa5d0a3513\" -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/Users/rvalls/dev/personal/esp-modbus-power-meter/build/config -I/Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/include -I/Users/rvalls/esp/esp-idf/components/newlib/platform_include -I/Users/rvalls/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/Users/rvalls/esp/esp-idf/components/freertos/esp_additions/include/freertos -I/Users/rvalls/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/Users/rvalls/esp/esp-idf/components/freertos/esp_additions/include -I/Users/rvalls/esp/esp-idf/components/esp_hw_support/include -I/Users/rvalls/esp/esp-idf/components/esp_hw_support/include/soc -I/Users/rvalls/esp/esp-idf/components/esp_hw_support/include/soc/esp32s2 -I/Users/rvalls/esp/esp-idf/components/esp_hw_support/port/esp32s2/. -I/Users/rvalls/esp/esp-idf/components/esp_hw_support/port/esp32s2/private_include -I/Users/rvalls/esp/esp-idf/components/heap/include -I/Users/rvalls/esp/esp-idf/components/log/include -I/Users/rvalls/esp/esp-idf/components/soc/include -I/Users/rvalls/esp/esp-idf/components/soc/esp32s2/. -I/Users/rvalls/esp/esp-idf/components/soc/esp32s2/include -I/Users/rvalls/esp/esp-idf/components/hal/esp32s2/include -I/Users/rvalls/esp/esp-idf/components/hal/include -I/Users/rvalls/esp/esp-idf/components/hal/platform_port/include -I/Users/rvalls/esp/esp-idf/components/esp_rom/include -I/Users/rvalls/esp/esp-idf/components/esp_rom/include/esp32s2 -I/Users/rvalls/esp/esp-idf/components/esp_rom/esp32s2 -I/Users/rvalls/esp/esp-idf/components/esp_common/include -I/Users/rvalls/esp/esp-idf/components/esp_system/include -I/Users/rvalls/esp/esp-idf/components/esp_system/port/soc -I/Users/rvalls/esp/esp-idf/components/esp_system/port/include/private -I/Users/rvalls/esp/esp-idf/components/xtensa/include -I/Users/rvalls/esp/esp-idf/components/xtensa/esp32s2/include -I/Users/rvalls/esp/esp-idf/components/lwip/include -I/Users/rvalls/esp/esp-idf/components/lwip/include/apps -I/Users/rvalls/esp/esp-idf/components/lwip/include/apps/sntp -I/Users/rvalls/esp/esp-idf/components/lwip/lwip/src/include -I/Users/rvalls/esp/esp-idf/components/lwip/port/esp32/include -I/Users/rvalls/esp/esp-idf/components/lwip/port/esp32/include/arch -I/Users/rvalls/esp/esp-idf/components/esp_event/include -mlongcalls  -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Os -freorder-blocks -fmacro-prefix-map=/Users/rvalls/dev/personal/esp-modbus-power-meter=. -fmacro-prefix-map=/Users/rvalls/esp/esp-idf=/IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/rtc_store/CMakeFiles/__idf_rtc_store.dir/src/rtc_store.c.obj -MF esp-idf/rtc_store/CMakeFiles/__idf_rtc_store.dir/src/rtc_store.c.obj.d -o esp-idf/rtc_store/CMakeFiles/__idf_rtc_store.dir/src/rtc_store.c.obj -c /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c
    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c: In function 'rtc_store_read_complete':
    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c:123:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
      123 |     ((data_store_info_t *) &info)->filled -= len;
          |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c:124:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
      124 |     ((data_store_info_t *) &info)->read_offset += len;
          |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c:123:43: error: 'info' is used uninitialized [-Werror=uninitialized]
      123 |     ((data_store_info_t *) &info)->filled -= len;
          |                                           ^~
    /Users/rvalls/dev/personal/esp-modbus-power-meter/lib/esp-rainmaker/components/esp-insights/components/rtc_store/src/rtc_store.c:120:14: note: 'info' declared here
      120 |     uint32_t info = rbuf_data->store->info;
          |              ^~~~
    cc1: some warnings being treated as errors
    [866/919] Building C object esp-idf/mdns/CMakeFiles/__idf_mdns.dir/mdns.c.objninja: build stopped: subcommand failed.
    ninja failed with exit code 1, output of the command is in the /Users/rvalls/dev/personal/esp-modbus-power-meter/build/log/idf_py_stderr_output_40444 and /Users/rvalls/dev/personal/esp-modbus-power-meter/build/log/idf_py_stdout_output_40444
    
C/C++ language server supporting multi-million line code base, powered by libclang. Emacs, Vim, VSCode, and others with language server protocol support. Cross references, completion, diagnostics, semantic highlighting and more

Archived cquery is no longer under development. clangd and ccls are both good replacements. cquery cquery is a highly-scalable, low-latency language s

Jan 2, 2023
Swift Framework for Apple Health Integration with Terra Enabling Developers LTD.

TerraSwift This library allows developers to connect to TERRA ENABLING DEVELOPERS LTD. through Swift (implemented with Swift5.0). This library uses He

Oct 14, 2022
Dec 25, 2022
Universal State Monitor software for home automation input devices

Universal State Monitor Copyright 2019-2021 SuperHouse Automation Pty Ltd www.superhouse.tv A binary state monitor for DIY home automation projects. T

Aug 24, 2021
Is this hardware solution the ultimate in switch bounce elimination? Simple PCB, cheap components = final solution!
Is this hardware solution the ultimate in switch bounce elimination? Simple PCB, cheap components = final solution!

#230 Ultimate Switch Bounce Eliminator Direct link to video: https://youtu.be/b2uUYiGrS5Y It's time to try a final, alternative approach to the ubiqui

Nov 7, 2022
An easy to build CO2 Monitor/Meter with Android and iOS App for real time visualization and charting of air data, data logger, a variety of communication options (BLE, WIFI, MQTT, ESP-Now) and many supported sensors.
An easy to build CO2 Monitor/Meter with Android and iOS App for real time visualization and charting of air data, data logger, a variety of communication options (BLE, WIFI, MQTT, ESP-Now) and many supported sensors.

CO2-Gadget An easy to build CO2 Monitor/Meter with cell phone App for real time visualization and charting of air data, datalogger, a variety of commu

Dec 17, 2022
Identify I2C devices from a database of the most popular I2C sensors and other devices

I2C Detective Identify I2C devices from a database of the most popular I2C sensors and other devices. For more information see http://www.technoblogy.

Nov 29, 2022
Creates an AP with a web page interface that allows configuration of ESP for local WiFi network.

Creates an AP with a web page interface that allows configuration of ESP for local WiFi network.

Feb 5, 2022
GPU 3D signed distance field generator, written with DirectX 11 compute shader
GPU 3D signed distance field generator, written with DirectX 11 compute shader

GPU SDF Generator GPU 3D signed distance field generator, written with DirectX 11 compute shader Building git clone --recursive https://github.com/Air

Dec 13, 2022
Project in the field of Advanced Programming Techniques by prof. Brian Kernighan, inspired by real event that made Ken Thompson invent grep command

ed_to_grep Project in the field of Advanced Programming Techniques by prof. Brian Kernighan, inspired by real event that made Ken Thompson invent grep

Nov 1, 2022
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

Sep 22, 2022
Finite Field Operations on GPGPU

ff-gpu Finite Field Operations on GPGPU Background In recent times, I've been interested in Finite Field operations, so I decided to implement few fie

Nov 7, 2022
Gramado Field - It is a 64bit operating system.

Welcome to Gramado OS - Codename 'Field' This repository has the source code for: Gramado boot loader Gramado kernel Gramado Window Server Application

Oct 2, 2022
The whole design is modular, parametric (cost and others), field repairable, and super extensible
The whole design is modular, parametric (cost and others), field repairable, and super extensible

Easy-Transceiver The whole design is modular, parametric (cost and others), field repairable, and super extensible. It is almost trivial to add suppor

Oct 2, 2022
A field war simulator in console with C language, inspiring from BattleField 1.

CBattleField 一个基于C语言的在控制台上的战争模拟器。其灵感来源于游戏《战地1》 A field war simulator in console with C language, inspiring from BattleField 1. 你可以在这里查看演示。 You could w

Dec 12, 2022
Veml7700-esp-idf - VEML7700 Light Sensor driver for ESP-IDF
Veml7700-esp-idf - VEML7700 Light Sensor driver for ESP-IDF

VEML7700 Light Sensor driver for ESP-IDF Overview This project aims to provide a very simple interface for configuring and reading data from the VEML7

Nov 3, 2022
The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.

PNT Integrity Library The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby

Jan 6, 2023
Get a users HWID in C++ and use it in Java

JNA Example rust version with jni soon What is this? This is example of using c++ and jna to get the hwid of a computer. Why? Your program will be mor

Sep 22, 2021
There are several guides for kernel developers and users

There are several guides for kernel developers and users

Dec 25, 2021