esp8266ndn icon indicating copy to clipboard operation
esp8266ndn copied to clipboard

Issues getting the example to compile using the Arduino IDE

Open derteufelqwe opened this issue 2 years ago • 1 comments

Hello,

I am really interested in your NDN libraries and tried to get one of your examples to work on my ESP-WROOM-32 but unfortunately I get compiler errors. I have done the following things (on my Windows machine):

  • Installed the latest version of the Arduino IDE
  • Installed the ESP32 boards in the IDE
  • Installed both the latest master of this library as well as NDNph to <User>/Documents/Arduino/libraries
  • Restartet the IDE

But when I now run this simple program

#include <esp8266ndn.h>

void setup() {
}

void loop() {
}

I get the following exception

Expand Stacktrace

In file included from c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:4,
                 from c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/port.hpp:8,
                 from c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/NDNph.h:4,
                 from c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/port/port.hpp:28,
                 from c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/esp8266ndn.h:11,
                 from C:\Users\myuser\Downloads\arduino_sketch\arduino_sketch.ino:1:
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp: In constructor 'ndnph::mbedtls::Sha256::Sha256()':
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp:37:12: error: 'mbedtls_sha256_starts_ret' was not declared in this scope; did you mean 'mbedtls_sha256_starts'?
   37 |     m_ok = mbedtls_sha256_starts_ret(&m_ctx, 0) == 0;
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
      |            mbedtls_sha256_starts
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp: In member function 'void ndnph::mbedtls::Sha256::update(const uint8_t*, size_t)':
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp:47:20: error: 'mbedtls_sha256_update_ret' was not declared in this scope; did you mean 'mbedtls_sha256_update'?
   47 |     m_ok = m_ok && mbedtls_sha256_update_ret(&m_ctx, chunk, size) == 0;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                    mbedtls_sha256_update
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp: In member function 'bool ndnph::mbedtls::Sha256::final(uint8_t*)':
c:\users\myuser\documents\arduino\libraries\ndnph\src\ndnph\port\mbed-common.hpp:52:20: error: 'mbedtls_sha256_finish_ret' was not declared in this scope; did you mean 'mbedtls_sha256_finish'?
   52 |     m_ok = m_ok && mbedtls_sha256_finish_ret(&m_ctx, digest) == 0;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                    mbedtls_sha256_finish
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp: In constructor 'ndnph::port_ec_mbed::EcKeyBase::EcKeyBase()':
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:40:37: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
   40 |     mbedtls_ecp_group_copy(&keypair.grp, mbedtls::P256::group());
      |                                     ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp: In member function 'bool ndnph::port_ec_mbed::EcPvt::import(const uint8_t*)':
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:61:51: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'd'
   61 |     return mbedtls_mpi_read_binary(&this->keypair.d, bits, mbedtls::P256::PvtLen::value) == 0 &&
      |                                                   ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:62:53: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
   62 |            mbedtls_ecp_check_privkey(&this->keypair.grp, &this->keypair.d) == 0;
      |                                                     ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:62:73: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'd'
   62 |            mbedtls_ecp_check_privkey(&this->keypair.grp, &this->keypair.d) == 0;
      |                                                                         ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp: In member function 'ssize_t ndnph::port_ec_mbed::EcPvt::sign(const uint8_t*, uint8_t*) const':
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:75:42: error: invalid conversion from 'size_t*' {aka 'unsigned int*'} to 'size_t' {aka 'unsigned int'} [-fpermissive]
   75 |                                          &sigLen, nullptr, nullptr) == 0
      |                                          ^~~~~~~
      |                                          |
      |                                          size_t* {aka unsigned int*}
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:74:41: error: too few arguments to function 'int mbedtls_ecdsa_write_signature(mbedtls_ecdsa_context*, mbedtls_md_type_t, const unsigned char*, size_t, unsigned char*, size_t, size_t*, int (*)(void*, unsigned char*, size_t), void*)'
   74 |     return mbedtls_ecdsa_write_signature(ctx, MBEDTLS_MD_SHA256, digest, NDNPH_SHA256_LEN, sig,
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   75 |                                          &sigLen, nullptr, nullptr) == 0
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:5:
C:\Users\myuser\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-6b1f40b9bf/esp32/include/mbedtls/mbedtls/include/mbedtls/ecdsa.h:483:5: note: declared here
  483 | int mbedtls_ecdsa_write_signature(mbedtls_ecdsa_context *ctx,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp: In member function 'bool ndnph::port_ec_mbed::EcPub::import(const uint8_t*)':
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:86:57: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
   86 |     return mbedtls_ecp_point_read_binary(&this->keypair.grp, &this->keypair.Q, bits,
      |                                                         ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:86:77: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'Q'
   86 |     return mbedtls_ecp_point_read_binary(&this->keypair.grp, &this->keypair.Q, bits,
      |                                                                             ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:88:52: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
   88 |            mbedtls_ecp_check_pubkey(&this->keypair.grp, &this->keypair.Q) == 0;
      |                                                    ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:88:72: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'Q'
   88 |            mbedtls_ecp_check_pubkey(&this->keypair.grp, &this->keypair.Q) == 0;
      |                                                                        ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp: In member function 'bool ndnph::port_ec_mbed::EcKeyGen::generate(uint8_t*, uint8_t*)':
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:109:51: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
  109 |     return mbedtls_ecp_gen_keypair(&this->keypair.grp, &this->keypair.d, &this->keypair.Q,
      |                                                   ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:109:71: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'd'
  109 |     return mbedtls_ecp_gen_keypair(&this->keypair.grp, &this->keypair.d, &this->keypair.Q,
      |                                                                       ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:109:89: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'Q'
  109 |     return mbedtls_ecp_gen_keypair(&this->keypair.grp, &this->keypair.d, &this->keypair.Q,
      |                                                                                         ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:111:52: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'd'
  111 |            mbedtls_mpi_write_binary(&this->keypair.d, pvtBits, mbedtls::P256::PvtLen::value) == 0 &&
      |                                                    ^
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:112:58: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'grp'
  112 |            mbedtls_ecp_point_write_binary(&this->keypair.grp, &this->keypair.Q,
      |                                                          ^~~
c:\Users\myuser\Documents\Arduino\libraries\NDNph\src/ndnph/port/ec/mbed.hpp:112:78: error: 'mbedtls_ecp_keypair' {aka 'struct mbedtls_ecp_keypair'} has no member named 'Q'
  112 |            mbedtls_ecp_point_write_binary(&this->keypair.grp, &this->keypair.Q,
      |                                                                              ^
In file included from c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/esp8266ndn.h:18:
c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/transport/ble-server-transport.hpp: In member function 'String esp8266ndn::BleServerTransport::getAddr() const':
c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/transport/ble-server-transport.hpp:78:56: error: 'class String' has no member named 'data'
   78 |     return String(::BLEDevice::getAddress().toString().data()) + " (addr-type=public)";
      |                                                        ^~~~
c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/transport/ble-server-transport.hpp: In member function 'virtual void esp8266ndn::BleServerTransport::CsCallbacks::onWrite(BLECharacteristic*)':
c:\Users\myuser\Documents\Arduino\libraries\esp8266ndn\src/transport/ble-server-transport.hpp:117:40: error: conversion from 'String' to non-scalar type 'std::string' {aka 'std::__cxx11::basic_string<char>'} requested
  117 |       std::string value = chr->getValue();
      |                           ~~~~~~~~~~~~~^~

exit status 1

Compilation error: exit status 1

which is weired as the file does in fact exist.

But when I try to compile this program (I just import the file which couldn't be found in the previous step)

#include <ndnph/port/ec/mbed.hpp>

void setup() {
}

void loop() {
}

I get a file not found exception

Expand Stacktrace 2

C:\Users\myuser\Downloads\arduino_sketch\arduino_sketch.ino:1:10: fatal error: ndnph/port/ec/mbed.hpp: No such file or directory
    1 | #include <ndnph/port/ec/mbed.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

exit status 1

Compilation error: ndnph/port/ec/mbed.hpp: No such file or directory

It would be awesome if you could help me.

derteufelqwe avatar Nov 03 '23 18:11 derteufelqwe

These errors seem to be breaking changes of Arduino ESP32 core version 3.x (based on ESP-IDF 5.1). I will resolve them but this would take some weeks.

For now you can consider to downgrade to Arduino ESP32 core version 2.x (based on ESP-IDF 4.4), which is likely to work.

yoursunny avatar Nov 07 '23 03:11 yoursunny

Arduino ESP32 core version 3.x is now supported. https://github.com/yoursunny/NDNph/commit/c9fec76b9d8a0d20772238df2169246871df6fc5 https://github.com/yoursunny/esp8266ndn/commit/e6da0598f921c38547f3e81283f1b25d991d2665

yoursunny avatar Jun 06 '24 22:06 yoursunny