diff --git a/Kconfig b/Kconfig index 9419e6fae73..f0077d4050b 100644 --- a/Kconfig +++ b/Kconfig @@ -3,7 +3,6 @@ menu "Arduino Configuration" config ENABLE_ARDUINO_DEPENDS bool select LWIP_SO_RCVBUF - select BT_ENABLED select ETHERNET select WIFI_ENABLED select ESP32_PHY_CALIBRATION_AND_DATA_STORAGE diff --git a/cores/esp32/Esp.cpp b/cores/esp32/Esp.cpp index e80a5e92272..59211445d78 100644 --- a/cores/esp32/Esp.cpp +++ b/cores/esp32/Esp.cpp @@ -212,3 +212,11 @@ bool EspClass::flashRead(uint32_t offset, uint32_t *data, size_t size) { return spi_flash_read(offset, (uint32_t*) data, size) == ESP_OK; } + + +uint64_t EspClass::getEfuseMac(void) +{ + uint64_t _chipmacid; + esp_efuse_read_mac((uint8_t*) (&_chipmacid)); + return _chipmacid; +} diff --git a/cores/esp32/Esp.h b/cores/esp32/Esp.h index 2af27de9cf7..80e995a6e16 100644 --- a/cores/esp32/Esp.h +++ b/cores/esp32/Esp.h @@ -76,6 +76,8 @@ class EspClass bool flashWrite(uint32_t offset, uint32_t *data, size_t size); bool flashRead(uint32_t offset, uint32_t *data, size_t size); + uint64_t getEfuseMac(); + }; extern EspClass ESP; diff --git a/cores/esp32/esp32-hal-bt.c b/cores/esp32/esp32-hal-bt.c index 35899c31a7a..0d19e5d5b9f 100644 --- a/cores/esp32/esp32-hal-bt.c +++ b/cores/esp32/esp32-hal-bt.c @@ -14,6 +14,8 @@ #include "esp32-hal-bt.h" +#if CONFIG_BT_ENABLED + #include "bt.h" #include "esp_bt_defs.h" #include "esp_bt_main.h" @@ -62,5 +64,20 @@ bool btStop(){ return false; } +#else +bool btStarted() +{ + return false; +} + +bool btStart() +{ + return false; +} +bool btStop() +{ + return false; +} +#endif diff --git a/cores/esp32/esp32-hal-spi.c b/cores/esp32/esp32-hal-spi.c index a26042b0e0a..36258d414a3 100644 --- a/cores/esp32/esp32-hal-spi.c +++ b/cores/esp32/esp32-hal-spi.c @@ -332,11 +332,11 @@ void spiSetDataMode(spi_t * spi, uint8_t dataMode) break; case SPI_MODE2: spi->dev->pin.ck_idle_edge = 1; - spi->dev->user.ck_out_edge = 0; + spi->dev->user.ck_out_edge = 1; break; case SPI_MODE3: spi->dev->pin.ck_idle_edge = 1; - spi->dev->user.ck_out_edge = 1; + spi->dev->user.ck_out_edge = 0; break; case SPI_MODE0: default: diff --git a/cores/esp32/libb64/cdecode.c b/cores/esp32/libb64/cdecode.c index 2963d5f7dc1..aa84ef60a8d 100755 --- a/cores/esp32/libb64/cdecode.c +++ b/cores/esp32/libb64/cdecode.c @@ -6,89 +6,94 @@ For details, see http://sourceforge.net/projects/libb64 */ #include "cdecode.h" +#include -int base64_decode_value(char value_in) -{ - static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; - static const char decoding_size = sizeof(decoding); - value_in -= 43; - if (value_in < 0 || value_in > decoding_size) { - return -1; - } - return decoding[(int)value_in]; +static int base64_decode_value_signed(int8_t value_in){ + static const int8_t decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51}; + static const int8_t decoding_size = sizeof(decoding); + value_in -= 43; + if (value_in < 0 || value_in > decoding_size) return -1; + return decoding[(int)value_in]; +} + +void base64_init_decodestate(base64_decodestate* state_in){ + state_in->step = step_a; + state_in->plainchar = 0; } -void base64_init_decodestate(base64_decodestate* state_in) -{ - state_in->step = step_a; - state_in->plainchar = 0; +static int base64_decode_block_signed(const int8_t* code_in, const int length_in, int8_t* plaintext_out, base64_decodestate* state_in){ + const int8_t* codechar = code_in; + int8_t* plainchar = plaintext_out; + int8_t fragment; + + *plainchar = state_in->plainchar; + + switch (state_in->step){ + while (1){ + case step_a: + do { + if (codechar == code_in+length_in){ + state_in->step = step_a; + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } + fragment = (int8_t)base64_decode_value_signed(*codechar++); + } while (fragment < 0); + *plainchar = (fragment & 0x03f) << 2; + case step_b: + do { + if (codechar == code_in+length_in){ + state_in->step = step_b; + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } + fragment = (int8_t)base64_decode_value_signed(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x030) >> 4; + *plainchar = (fragment & 0x00f) << 4; + case step_c: + do { + if (codechar == code_in+length_in){ + state_in->step = step_c; + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } + fragment = (int8_t)base64_decode_value_signed(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x03c) >> 2; + *plainchar = (fragment & 0x003) << 6; + case step_d: + do { + if (codechar == code_in+length_in){ + state_in->step = step_d; + state_in->plainchar = *plainchar; + return plainchar - plaintext_out; + } + fragment = (int8_t)base64_decode_value_signed(*codechar++); + } while (fragment < 0); + *plainchar++ |= (fragment & 0x03f); + } + } + /* control should not reach here */ + return plainchar - plaintext_out; } -int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in) -{ - const char* codechar = code_in; - char* plainchar = plaintext_out; - char fragment; +static int base64_decode_chars_signed(const int8_t* code_in, const int length_in, int8_t* plaintext_out){ + base64_decodestate _state; + base64_init_decodestate(&_state); + int len = base64_decode_block_signed(code_in, length_in, plaintext_out, &_state); + if(len > 0) plaintext_out[len] = 0; + return len; +} - *plainchar = state_in->plainchar; +int base64_decode_value(char value_in){ + return base64_decode_value_signed(*((int8_t *) &value_in)); +} - switch (state_in->step) { - while (1) { - case step_a: - do { - if (codechar == code_in+length_in) { - state_in->step = step_a; - state_in->plainchar = *plainchar; - return plainchar - plaintext_out; - } - fragment = (char)base64_decode_value(*codechar++); - } while (fragment < 0); - *plainchar = (fragment & 0x03f) << 2; - case step_b: - do { - if (codechar == code_in+length_in) { - state_in->step = step_b; - state_in->plainchar = *plainchar; - return plainchar - plaintext_out; - } - fragment = (char)base64_decode_value(*codechar++); - } while (fragment < 0); - *plainchar++ |= (fragment & 0x030) >> 4; - *plainchar = (fragment & 0x00f) << 4; - case step_c: - do { - if (codechar == code_in+length_in) { - state_in->step = step_c; - state_in->plainchar = *plainchar; - return plainchar - plaintext_out; - } - fragment = (char)base64_decode_value(*codechar++); - } while (fragment < 0); - *plainchar++ |= (fragment & 0x03c) >> 2; - *plainchar = (fragment & 0x003) << 6; - case step_d: - do { - if (codechar == code_in+length_in) { - state_in->step = step_d; - state_in->plainchar = *plainchar; - return plainchar - plaintext_out; - } - fragment = (char)base64_decode_value(*codechar++); - } while (fragment < 0); - *plainchar++ |= (fragment & 0x03f); - } - } - /* control should not reach here */ - return plainchar - plaintext_out; +int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in){ + return base64_decode_block_signed((int8_t *) code_in, length_in, (int8_t *) plaintext_out, state_in); } -int base64_decode_chars(const char* code_in, const int length_in, char* plaintext_out) -{ - base64_decodestate _state; - base64_init_decodestate(&_state); - int len = base64_decode_block(code_in, length_in, plaintext_out, &_state); - if(len > 0) { - plaintext_out[len] = 0; - } - return len; +int base64_decode_chars(const char* code_in, const int length_in, char* plaintext_out){ + return base64_decode_chars_signed((int8_t *) code_in, length_in, (int8_t *) plaintext_out); } diff --git a/cores/esp32/nefry/Nefry.cpp b/cores/esp32/nefry/Nefry.cpp index 747d32373e4..6efa0ba7367 100644 --- a/cores/esp32/nefry/Nefry.cpp +++ b/cores/esp32/nefry/Nefry.cpp @@ -24,7 +24,7 @@ BootMode 1 : WriteMode切替をする */ -#define LIBVERSION ("0.6.2") +#define LIBVERSION ("0.7.0") #include "Nefry.h" Adafruit_NeoPixel _NefryLED[40]; diff --git a/cores/esp32/nefry/NefryWeb.cpp b/cores/esp32/nefry/NefryWeb.cpp index 1669000a614..8846888227a 100644 --- a/cores/esp32/nefry/NefryWeb.cpp +++ b/cores/esp32/nefry/NefryWeb.cpp @@ -56,12 +56,13 @@ void Nefry_Web::beginWeb() { content += Nefry.getAddressStr(WiFi.localIP()); content += F("
Module ID: "); content += Nefry.getModuleID(); + content += F("
"); + if (Nefry.getWriteMode())content += F("WriteMode"); content += F( - "
" "