Skip to content

Commit e9a993d

Browse files
authored
Merge pull request #3 from espressif/master
update
2 parents 0e2c136 + dcff2e9 commit e9a993d

File tree

156 files changed

+276
-79
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+276
-79
lines changed

CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ set(LIBRARY_SRCS
7272
libraries/WiFi/src/WiFi.cpp
7373
libraries/WiFi/src/WiFiGeneric.cpp
7474
libraries/WiFi/src/WiFiMulti.cpp
75-
libraries/WiFi/src/WiFiProv.cpp
7675
libraries/WiFi/src/WiFiScan.cpp
7776
libraries/WiFi/src/WiFiServer.cpp
7877
libraries/WiFi/src/WiFiSTA.cpp
7978
libraries/WiFi/src/WiFiUdp.cpp
79+
libraries/WiFiProv/src/WiFiProv.cpp
8080
libraries/Wire/src/Wire.cpp
8181
)
8282

@@ -202,6 +202,7 @@ set(COMPONENT_ADD_INCLUDEDIRS
202202
libraries/WebServer/src
203203
libraries/WiFiClientSecure/src
204204
libraries/WiFi/src
205+
libraries/WiFiProv/src
205206
libraries/Wire/src
206207
)
207208

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
Latest Stable Release [![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Release Date](https://img.shields.io/github/release-date/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Downloads](https://img.shields.io/github/downloads/espressif/arduino-esp32/latest/total.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/)
1616

17-
Latest Development Release [![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Release Date](https://img.shields.io/github/release-date/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Downloads](https://img.shields.io/github/downloads/espressif/arduino-esp32/latest/total.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/)
17+
Latest Development Release [![Release Version](https://img.shields.io/github/release/espressif/arduino-esp32/all.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Release Date](https://img.shields.io/github/release-date-pre/espressif/arduino-esp32.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/) [![Downloads](https://img.shields.io/github/downloads-pre/espressif/arduino-esp32/latest/total.svg?style=plastic)](https://github.com/espressif/arduino-esp32/releases/latest/)
1818

1919

2020
### Installation Instructions

cores/esp32/Arduino.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
8989
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
9090
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
91-
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
91+
#define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet(value, bit) : bitClear(value, bit))
9292

9393
// avr-libc defines _NOP() since 1.6.2
9494
#ifndef _NOP

cores/esp32/pgmspace.h

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ typedef unsigned long prog_uint32_t;
5353
*(void * const *)(_addr); \
5454
})
5555

56+
#define pgm_get_far_address(x) ((uint32_t)(&(x)))
57+
5658
#define pgm_read_byte_near(addr) pgm_read_byte(addr)
5759
#define pgm_read_word_near(addr) pgm_read_word(addr)
5860
#define pgm_read_dword_near(addr) pgm_read_dword(addr)

libraries/BLE/src/BLEHIDDevice.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ BLECharacteristic* BLEHIDDevice::protocolMode() {
194194

195195
void BLEHIDDevice::setBatteryLevel(uint8_t level) {
196196
m_batteryLevelCharacteristic->setValue(&level, 1);
197+
m_batteryLevelCharacteristic->notify();
197198
}
198199
/*
199200
* @brief Returns battery level characteristic

libraries/FFat/src/FFat.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,21 @@ size_t F_Fat::totalBytes()
135135
return tot_sect * sect_size;
136136
}
137137

138+
size_t F_Fat::usedBytes()
139+
{
140+
FATFS *fs;
141+
DWORD free_clust, used_sect, sect_size;
142+
143+
BYTE pdrv = ff_diskio_get_pdrv_wl(_wl_handle);
144+
char drv[3] = {(char)(48+pdrv), ':', 0};
145+
if ( f_getfree(drv, &free_clust, &fs) != FR_OK){
146+
return 0;
147+
}
148+
used_sect = (fs->n_fatent - 2 - free_clust) * fs->csize;
149+
sect_size = CONFIG_WL_SECTOR_SIZE;
150+
return used_sect * sect_size;
151+
}
152+
138153
size_t F_Fat::freeBytes()
139154
{
140155

libraries/FFat/src/FFat.h

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class F_Fat : public FS
3131
bool begin(bool formatOnFail=false, const char * basePath="/ffat", uint8_t maxOpenFiles=10, const char * partitionLabel = (char*)FFAT_PARTITION_LABEL);
3232
bool format(bool full_wipe = FFAT_WIPE_QUICK, char* partitionLabel = (char*)FFAT_PARTITION_LABEL);
3333
size_t totalBytes();
34+
size_t usedBytes();
3435
size_t freeBytes();
3536
void end();
3637
bool exists(const char* path);

libraries/SD/src/sd_diskio.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -607,8 +607,9 @@ DRESULT ff_sd_write(uint8_t pdrv, const uint8_t* buffer, DWORD sector, UINT coun
607607

608608
if (count > 1) {
609609
res = sdWriteSectors(pdrv, (const char*)buffer, sector, count) ? RES_OK : RES_ERROR;
610+
} else {
611+
res = sdWriteSector(pdrv, (const char*)buffer, sector) ? RES_OK : RES_ERROR;
610612
}
611-
res = sdWriteSector(pdrv, (const char*)buffer, sector) ? RES_OK : RES_ERROR;
612613
return res;
613614
}
614615

libraries/WebServer/src/WebServer.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -313,11 +313,12 @@ void WebServer::handleClient() {
313313
_contentLength = CONTENT_LENGTH_NOT_SET;
314314
_handleRequest();
315315

316-
if (_currentClient.connected()) {
317-
_currentStatus = HC_WAIT_CLOSE;
318-
_statusChange = millis();
319-
keepCurrentClient = true;
320-
}
316+
// Fix for issue with Chrome based browsers: https://github.com/espressif/arduino-esp32/issues/3652
317+
// if (_currentClient.connected()) {
318+
// _currentStatus = HC_WAIT_CLOSE;
319+
// _statusChange = millis();
320+
// keepCurrentClient = true;
321+
// }
321322
}
322323
} else { // !_currentClient.available()
323324
if (millis() - _statusChange <= HTTP_MAX_DATA_WAIT) {

libraries/WiFi/src/WiFi.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,14 @@ void WiFiClass::printDiag(Print& p)
8888
p.println(conf.sta.bssid_set);
8989
}
9090

91+
void WiFiClass::enableProv(bool status)
92+
{
93+
prov_enable = status;
94+
}
95+
96+
bool WiFiClass::isProvEnabled()
97+
{
98+
return prov_enable;
99+
}
100+
91101
WiFiClass WiFi;

libraries/WiFi/src/WiFi.h

+10-2
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,17 @@
3737
#include "WiFiClient.h"
3838
#include "WiFiServer.h"
3939
#include "WiFiUdp.h"
40-
#include "WiFiProv.h"
4140

42-
class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanClass, public WiFiAPClass, public WiFiProvClass
41+
class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanClass, public WiFiAPClass
4342
{
43+
private:
44+
bool prov_enable;
4445
public:
46+
WiFiClass()
47+
{
48+
prov_enable = false;
49+
}
50+
4551
using WiFiGenericClass::channel;
4652

4753
using WiFiSTAClass::SSID;
@@ -60,6 +66,8 @@ class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanC
6066
friend class WiFiClient;
6167
friend class WiFiServer;
6268
friend class WiFiUDP;
69+
void enableProv(bool status);
70+
bool isProvEnabled();
6371
};
6472

6573
extern WiFiClass WiFi;

libraries/WiFi/src/WiFiServer.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ WiFiClient WiFiServer::available(){
6363
}
6464

6565
void WiFiServer::begin(uint16_t port){
66+
begin(port, 1);
67+
}
68+
69+
void WiFiServer::begin(uint16_t port, int enable){
6670
if(_listening)
6771
return;
6872
if(port){
@@ -72,6 +76,7 @@ void WiFiServer::begin(uint16_t port){
7276
sockfd = socket(AF_INET , SOCK_STREAM, 0);
7377
if (sockfd < 0)
7478
return;
79+
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int));
7580
server.sin_family = AF_INET;
7681
server.sin_addr.s_addr = INADDR_ANY;
7782
server.sin_port = htons(_port);

libraries/WiFi/src/WiFiServer.h

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class WiFiServer : public Server {
4040
WiFiClient available();
4141
WiFiClient accept(){return available();}
4242
void begin(uint16_t port=0);
43+
void begin(uint16_t port, int reuse_enable);
4344
void setNoDelay(bool nodelay);
4445
bool getNoDelay();
4546
bool hasClient();

libraries/WiFi/examples/WiFiProv/WiFiProv.ino renamed to libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "WiFi.h"
1+
#include "WiFiProv.h"
22
void SysProvEvent(system_event_t *sys_event,wifi_prov_event_t *prov_event)
33
{
44
if(sys_event) {
@@ -56,8 +56,8 @@ void setup() {
5656
/* uint8_t uuid[16] = {0xb4, 0xdf, 0x5a, 0x1c, 0x3f, 0x6b, 0xf4, 0xbf,
5757
0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02 };*/
5858
WiFi.onEvent(SysProvEvent);
59-
//WiFi.beginProvision(provSchemeBLE, WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "PROV_XXX", NULL, NULL);
60-
WiFi.beginProvision(provSchemeSoftAP, WIFI_PROV_EVENT_HANDLER_NONE, WIFI_PROV_SECURITY_1, "abcd1234", NULL, NULL, NULL);
59+
//WiFiProv.beginProvision(provSchemeBLE, WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "PROV_XXX", NULL, NULL);
60+
WiFiProv.beginProvision(provSchemeSoftAP, WIFI_PROV_EVENT_HANDLER_NONE, WIFI_PROV_SECURITY_1, "abcd1234", NULL, NULL, NULL);
6161
}
6262

6363
void loop() {

libraries/WiFiProv/library.properties

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name=WiFiProv
2+
version=1.0
3+
author=Switi Mhaiske <sweetymhaiske@gmail.com>
4+
maintainer=Hristo Gochkov <hristo@espressif.com>
5+
sentence=Enables provisioning.
6+
paragraph=With this library you can perform provisioning on esp32 via SoftAP or BLE.
7+
category=
8+
url=
9+
architectures=esp32

libraries/WiFi/src/WiFiProv.cpp renamed to libraries/WiFiProv/src/WiFiProv.cpp

+8-13
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,18 @@
3131
#include <wifi_provisioning/scheme_softap.h>
3232
#include <wifi_provisioning/manager.h>
3333
#undef IPADDR_NONE
34-
#include "WiFi.h"
34+
#include "WiFiProv.h"
35+
#include "SimpleBLE.h"
3536

36-
wifi_prov_mgr_config_t config;
37-
scheme_t prov_scheme;
3837
extern esp_err_t postToSysQueue(system_prov_event_t *);
38+
39+
static wifi_prov_mgr_config_t config;
40+
static scheme_t prov_scheme;
3941
static const uint8_t custom_service_uuid[16] = { 0xb4, 0xdf, 0x5a, 0x1c, 0x3f, 0x6b, 0xf4, 0xbf,
4042
0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02, };
4143

4244
#define SERV_NAME_PREFIX_PROV "PROV_"
4345

44-
bool WiFiProvClass::prov_enable = true;
45-
46-
bool WiFiProvClass::isProvEnabled()
47-
{
48-
return prov_enable;
49-
}
50-
5146
void provSchemeBLE()
5247
{
5348
prov_scheme = WIFI_PROV_SCHEME_BLE;
@@ -108,7 +103,7 @@ static void get_device_service_name(char *service_name, size_t max)
108103

109104
void WiFiProvClass :: beginProvision(void (*scheme_cb)(), wifi_prov_event_handler_t scheme_event_handler, wifi_prov_security_t security, const char * pop, const char *service_name, const char *service_key, uint8_t * uuid)
110105
{
111-
prov_enable = true;
106+
WiFi.enableProv(true);
112107
bool provisioned = false;
113108
scheme_cb();
114109
config.scheme_event_handler = scheme_event_handler;
@@ -151,7 +146,7 @@ void WiFiProvClass :: beginProvision(void (*scheme_cb)(), wifi_prov_event_handle
151146
} else {
152147
wifi_prov_mgr_deinit();
153148
WiFi.mode(WIFI_MODE_STA);
154-
log_i("Aleardy Provisioned, starting Wi-Fi STA");
149+
log_i("Already Provisioned, starting Wi-Fi STA");
155150
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
156151
wifi_config_t conf;
157152
esp_wifi_get_config(WIFI_IF_STA,&conf);
@@ -161,4 +156,4 @@ void WiFiProvClass :: beginProvision(void (*scheme_cb)(), wifi_prov_event_handle
161156
WiFi.begin();
162157
}
163158
}
164-
159+
WiFiProvClass WiFiProv;

libraries/WiFi/src/WiFiProv.h renamed to libraries/WiFiProv/src/WiFiProv.h

+3-12
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@
1717
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1818
*/
1919

20+
#include "WiFi.h"
2021
#include "wifi_provisioning/manager.h"
2122
#include "wifi_provisioning/scheme_ble.h"
22-
#include "nvs_flash.h"
23-
#include "SimpleBLE.h"
2423
//Select the scheme using which you want to provision
2524
typedef enum
2625
{
@@ -34,19 +33,11 @@ extern void provSchemeBLE();
3433
//Provisioning class
3534
class WiFiProvClass
3635
{
37-
protected:
38-
static bool prov_enable;
39-
4036
public:
41-
WiFiProvClass() {
42-
prov_enable = false;
43-
}
4437

45-
bool isProvEnabled();
46-
47-
void beginProvision(void (*scheme_cb)() = provSchemeSoftAP, wifi_prov_event_handler_t scheme_event_handler = WIFI_PROV_EVENT_HANDLER_NONE, wifi_prov_security_t security = WIFI_PROV_SECURITY_1, const char * pop = "abcd1234", const char * service_name = NULL, const char * service_key = NULL, uint8_t *uuid = NULL);
38+
void beginProvision(void (*scheme_cb)() = provSchemeSoftAP, wifi_prov_event_handler_t scheme_event_handler = WIFI_PROV_EVENT_HANDLER_NONE, wifi_prov_security_t security = WIFI_PROV_SECURITY_1, const char * pop = "abcd1234", const char * service_name = NULL, const char * service_key = NULL, uint8_t *uuid = NULL);
4839
};
49-
40+
extern WiFiProvClass WiFiProv;
5041
/*
5142
Event Handler for BLE
5243
- WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM

package/package_esp32_index.template.json

+26-26
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
{
4242
"packager": "esp32",
4343
"name": "esptool_py",
44-
"version": "2.6.1"
44+
"version": "3.0.0"
4545
},
4646
{
4747
"packager": "esp32",
@@ -102,49 +102,49 @@
102102
},
103103
{
104104
"name": "esptool_py",
105-
"version": "2.6.1",
105+
"version": "3.0.0",
106106
"systems": [
107107
{
108108
"host": "i686-mingw32",
109-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-windows.zip",
110-
"archiveFileName": "esptool-2.6.1-windows.zip",
111-
"checksum": "SHA-256:84cf0b369a7707fe566434faba148852fc464992111d5baa95b658b374802f96",
112-
"size": "3422445"
109+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-windows.zip",
110+
"archiveFileName": "esptool-3.0.0.2-windows.zip",
111+
"checksum": "SHA-256:b192bfc1545a3c92658ce586b4edcc2aca3f0ad4b3fa8417d658bc8a48f1387e",
112+
"size": "3434736"
113113
},
114114
{
115115
"host": "x86_64-apple-darwin",
116-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-macos.tar.gz",
117-
"archiveFileName": "esptool-2.6.1-macos.tar.gz",
118-
"checksum": "SHA-256:f4eb758a301d6902cc9dfcd49d36345d2f075ad123da7cf8132d15cfb7533457",
119-
"size": "3837085"
116+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-macos.tar.gz",
117+
"archiveFileName": "esptool-3.0.0.2-macos.tar.gz",
118+
"checksum": "SHA-256:9213f46d5aa865558da4a2ef4218e87eef4782779128083c15ce2b3e4d07a1ea",
119+
"size": "3849615"
120120
},
121121
{
122122
"host": "x86_64-pc-linux-gnu",
123-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
124-
"archiveFileName": "esptool-2.6.1-linux.tar.gz",
125-
"checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
126-
"size": "44762"
123+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-linux.tar.gz",
124+
"archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
125+
"checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
126+
"size": "57526"
127127
},
128128
{
129129
"host": "i686-pc-linux-gnu",
130-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
131-
"archiveFileName": "esptool-2.6.1-linux.tar.gz",
132-
"checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
133-
"size": "44762"
130+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-linux.tar.gz",
131+
"archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
132+
"checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
133+
"size": "57526"
134134
},
135135
{
136136
"host": "arm-linux-gnueabihf",
137-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
138-
"archiveFileName": "esptool-2.6.1-linux.tar.gz",
139-
"checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
140-
"size": "44762"
137+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-linux.tar.gz",
138+
"archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
139+
"checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
140+
"size": "57526"
141141
},
142142
{
143143
"host": "aarch64-linux-gnu",
144-
"url": "https://dl.espressif.com/dl/esptool-2.6.1-linux.tar.gz",
145-
"archiveFileName": "esptool-2.6.1-linux.tar.gz",
146-
"checksum": "SHA-256:eaf82ff4070d9792f6a42ae1e485375de5a87bec59ef01dfb95de901519ec7fb",
147-
"size": "44762"
144+
"url": "https://dl.espressif.com/dl/esptool-3.0.0.2-linux.tar.gz",
145+
"archiveFileName": "esptool-3.0.0.2-linux.tar.gz",
146+
"checksum": "SHA-256:d5cb51da1c74ff69f81b820470d2ecccb5c7c3a2dec7776483d4c89588b00020",
147+
"size": "57526"
148148
}
149149
]
150150
},

0 commit comments

Comments
 (0)