From 4355f291be73ebfebcf3e16f0844a3ae1b5019c6 Mon Sep 17 00:00:00 2001 From: ant Date: Sat, 13 Mar 2021 09:40:46 +0000 Subject: [PATCH 1/7] support custom I2C addr --- src/ECCX08.cpp | 4 ++-- src/ECCX08.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ECCX08.cpp b/src/ECCX08.cpp index 8bb1a9a..a5da6d4 100644 --- a/src/ECCX08.cpp +++ b/src/ECCX08.cpp @@ -775,7 +775,7 @@ uint16_t ECCX08Class::crc16(const byte data[], size_t length) } #ifdef CRYPTO_WIRE -ECCX08Class ECCX08(CRYPTO_WIRE, 0x60); +ECCX08Class ECCX08(CRYPTO_WIRE, CONFIG_ARDUINO_ECCX08_I2C_ADDR); #else -ECCX08Class ECCX08(Wire, 0x60); +ECCX08Class ECCX08(Wire, CONFIG_ARDUINO_ECCX08_I2C_ADDR); #endif \ No newline at end of file diff --git a/src/ECCX08.h b/src/ECCX08.h index 50490a5..29080e1 100644 --- a/src/ECCX08.h +++ b/src/ECCX08.h @@ -23,6 +23,10 @@ #include #include +#ifndef CONFIG_ARDUINO_ECCX08_I2C_ADDR +#define CONFIG_ARDUINO_ECCX08_I2C_ADDR 0x60 +#endif + class ECCX08Class { public: From 2282563bf836047f0fda9cdec1bbf8d9b2a71882 Mon Sep 17 00:00:00 2001 From: ant Date: Sat, 13 Mar 2021 14:15:21 +0000 Subject: [PATCH 2/7] Add begin function that takes I2C addr, and conditional compile for ESP32 --- library.properties | 2 +- src/ECCX08.cpp | 10 ++++++++++ src/ECCX08.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 4c1b8a3..358ea61 100644 --- a/library.properties +++ b/library.properties @@ -6,5 +6,5 @@ sentence=Arduino Library for the Atmel/Microchip ECC508 and ECC608 crypto chips paragraph= category=Communication url=https://github.com/arduino-libraries/ArduinoECCX08 -architectures=samd,megaavr,mbed +architectures=samd,megaavr,mbed,esp32 includes=ArduinoECCX08.h diff --git a/src/ECCX08.cpp b/src/ECCX08.cpp index a5da6d4..ffc24d4 100644 --- a/src/ECCX08.cpp +++ b/src/ECCX08.cpp @@ -38,6 +38,12 @@ ECCX08Class::~ECCX08Class() { } +int ECCX08Class::begin(uint8_t i2cAddress) +{ + _address = i2cAddress; + return begin(); +} + int ECCX08Class::begin() { _wire->begin(); @@ -721,7 +727,11 @@ int ECCX08Class::receiveResponse(void* response, size_t length) size_t responseSize = length + 3; // 1 for length header, 2 for CRC byte responseBuffer[responseSize]; +#if (ESP32) + while (_wire->requestFrom((uint8_t)_address, (uint8_t)responseSize, (bool)true) != responseSize && retries--); +#else while (_wire->requestFrom((uint8_t)_address, (size_t)responseSize, (bool)true) != responseSize && retries--); +#endif responseBuffer[0] = _wire->read(); diff --git a/src/ECCX08.h b/src/ECCX08.h index 29080e1..69a40c8 100644 --- a/src/ECCX08.h +++ b/src/ECCX08.h @@ -34,6 +34,7 @@ class ECCX08Class virtual ~ECCX08Class(); int begin(); + int begin(uint8_t i2cAddress); void end(); int serialNumber(byte sn[]); From cab288c2c2bb0e22c950624c551150ff18daa744 Mon Sep 17 00:00:00 2001 From: ant Date: Sat, 13 Mar 2021 14:37:49 +0000 Subject: [PATCH 3/7] Revert --- src/ECCX08.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ECCX08.cpp b/src/ECCX08.cpp index ffc24d4..dfcc7ad 100644 --- a/src/ECCX08.cpp +++ b/src/ECCX08.cpp @@ -785,7 +785,7 @@ uint16_t ECCX08Class::crc16(const byte data[], size_t length) } #ifdef CRYPTO_WIRE -ECCX08Class ECCX08(CRYPTO_WIRE, CONFIG_ARDUINO_ECCX08_I2C_ADDR); +ECCX08Class ECCX08(CRYPTO_WIRE, 0x60); #else -ECCX08Class ECCX08(Wire, CONFIG_ARDUINO_ECCX08_I2C_ADDR); +ECCX08Class ECCX08(Wire, 0x60); #endif \ No newline at end of file From 44baa6c96f6c1e591ab7f71bac01c7597b3a75fb Mon Sep 17 00:00:00 2001 From: ant Date: Sat, 13 Mar 2021 14:39:02 +0000 Subject: [PATCH 4/7] Add example --- examples/ESP32EduKit/ESP32EduKit.ino | 35 ++++++++++++++++++++++++++++ src/ECCX08.h | 4 ---- 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 examples/ESP32EduKit/ESP32EduKit.ino diff --git a/examples/ESP32EduKit/ESP32EduKit.ino b/examples/ESP32EduKit/ESP32EduKit.ino new file mode 100644 index 0000000..26f91c8 --- /dev/null +++ b/examples/ESP32EduKit/ESP32EduKit.ino @@ -0,0 +1,35 @@ +/* + ECCX08 Random Number running on an M5Stack Core2 ESP32 IoT EduKit + + This sketch uses the ECC508 or ECC608 to generate a random number + every second and print it to the Serial monitor + + Circuit: + - M5Stack Core2 ESP32 IoT EduKit + +*/ +#include + +void setup() { + Serial.begin(115200); Serial.println(); + + // The M5STack IoT EduKit has the ATECECCX08 at I2C address 0x35 and SDA 21, SCL 22. + Wire.begin(21,22); + if (!ECCX08.begin(0x35)) { + Serial.println("Failed to communicate with ECC508/ECC608!"); + while (1); + } + + if (!ECCX08.locked()) { + Serial.println("The ECC508/ECC608 is not locked!"); + while (1); + } +} + +void loop() { + Serial.print("Random number = "); + Serial.println(ECCX08.random(65535)); + + delay(1000); +} + diff --git a/src/ECCX08.h b/src/ECCX08.h index 69a40c8..0439b17 100644 --- a/src/ECCX08.h +++ b/src/ECCX08.h @@ -23,10 +23,6 @@ #include #include -#ifndef CONFIG_ARDUINO_ECCX08_I2C_ADDR -#define CONFIG_ARDUINO_ECCX08_I2C_ADDR 0x60 -#endif - class ECCX08Class { public: From 9864c4cfe5d3dc0d97aa0638056421fc5878a35a Mon Sep 17 00:00:00 2001 From: ant Date: Tue, 16 Mar 2021 07:40:05 +0000 Subject: [PATCH 5/7] Remove smaple as it breaks CI --- examples/ESP32EduKit/ESP32EduKit.ino | 35 ---------------------------- 1 file changed, 35 deletions(-) delete mode 100644 examples/ESP32EduKit/ESP32EduKit.ino diff --git a/examples/ESP32EduKit/ESP32EduKit.ino b/examples/ESP32EduKit/ESP32EduKit.ino deleted file mode 100644 index 26f91c8..0000000 --- a/examples/ESP32EduKit/ESP32EduKit.ino +++ /dev/null @@ -1,35 +0,0 @@ -/* - ECCX08 Random Number running on an M5Stack Core2 ESP32 IoT EduKit - - This sketch uses the ECC508 or ECC608 to generate a random number - every second and print it to the Serial monitor - - Circuit: - - M5Stack Core2 ESP32 IoT EduKit - -*/ -#include - -void setup() { - Serial.begin(115200); Serial.println(); - - // The M5STack IoT EduKit has the ATECECCX08 at I2C address 0x35 and SDA 21, SCL 22. - Wire.begin(21,22); - if (!ECCX08.begin(0x35)) { - Serial.println("Failed to communicate with ECC508/ECC608!"); - while (1); - } - - if (!ECCX08.locked()) { - Serial.println("The ECC508/ECC608 is not locked!"); - while (1); - } -} - -void loop() { - Serial.print("Random number = "); - Serial.println(ECCX08.random(65535)); - - delay(1000); -} - From ba895b22a54eacc8e800d67dde596105dc04c475 Mon Sep 17 00:00:00 2001 From: ant Date: Tue, 9 Nov 2021 11:24:17 +0000 Subject: [PATCH 6/7] Remove esp32 conditional code now that requestFrom fixed in ESP32 core --- src/ECCX08.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/ECCX08.cpp b/src/ECCX08.cpp index dfcc7ad..6145dd4 100644 --- a/src/ECCX08.cpp +++ b/src/ECCX08.cpp @@ -727,11 +727,7 @@ int ECCX08Class::receiveResponse(void* response, size_t length) size_t responseSize = length + 3; // 1 for length header, 2 for CRC byte responseBuffer[responseSize]; -#if (ESP32) - while (_wire->requestFrom((uint8_t)_address, (uint8_t)responseSize, (bool)true) != responseSize && retries--); -#else while (_wire->requestFrom((uint8_t)_address, (size_t)responseSize, (bool)true) != responseSize && retries--); -#endif responseBuffer[0] = _wire->read(); From 222fd839775b08171e2c718fc6c5fe9d8a9f8214 Mon Sep 17 00:00:00 2001 From: ant Date: Tue, 9 Nov 2021 11:33:16 +0000 Subject: [PATCH 7/7] merge master --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 358ea61..883a6dc 100644 --- a/library.properties +++ b/library.properties @@ -6,5 +6,5 @@ sentence=Arduino Library for the Atmel/Microchip ECC508 and ECC608 crypto chips paragraph= category=Communication url=https://github.com/arduino-libraries/ArduinoECCX08 -architectures=samd,megaavr,mbed,esp32 +architectures=samd,megaavr,mbed,mbed_nano,mbed_portenta,esp32 includes=ArduinoECCX08.h