Changes based on Dan's feedback

This commit is contained in:
Scott Shawcroft 2020-09-03 16:32:12 -07:00
parent 5d8ac0428b
commit 0b94638aeb
No known key found for this signature in database
GPG Key ID: 0DFD512649C052DA
16 changed files with 78 additions and 105 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-27 11:21-0400\n"
"POT-Creation-Date: 2020-09-03 15:16-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1238,7 +1238,7 @@ msgid "Nordic Soft Device failure assertion."
msgstr ""
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string."
msgid "Not a valid IP string"
msgstr ""
#: ports/nrf/common-hal/_bleio/__init__.c
@ -1282,7 +1282,7 @@ msgid ""
msgstr ""
#: shared-bindings/ipaddress/__init__.c
msgid "Only raw int supported for ip."
msgid "Only raw int supported for ip"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c
@ -1365,10 +1365,6 @@ msgstr ""
msgid "Pull not used when direction is output."
msgstr ""
#: ports/stm/ref/pulseout-pre-timeralloc.c
msgid "PulseOut not supported on this chip"
msgstr ""
#: ports/stm/common-hal/os/__init__.c
msgid "RNG DeInit Error"
msgstr ""
@ -1486,7 +1482,7 @@ msgid "Serializer in use"
msgstr ""
#: shared-bindings/ssl/SSLContext.c
msgid "Server side context cannot have hostname."
msgid "Server side context cannot have hostname"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
@ -1792,7 +1788,7 @@ msgid ""
msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "WiFi password must be between 8 and 63 characters."
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c

View File

@ -55,7 +55,6 @@ bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self, const c
if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) {
mp_raise_espidf_MemoryError();
} else if (ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED) {
// What should this error be?
mp_raise_OSError_msg_varg(translate("Failed SSL handshake"));
} else {
mp_raise_OSError_msg_varg(translate("Unhandled ESP TLS error %d %d %x %d"), esp_tls_code, flags, err, result);
@ -123,15 +122,9 @@ mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self,
}
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
if (self->connected) {
self->connected = false;
}
self->connected = false;
if (self->tcp != NULL) {
int status = esp_tls_conn_destroy(self->tcp);
if (status < 0) {
// raise an error
}
esp_tls_conn_destroy(self->tcp);
self->tcp = NULL;
}
}

View File

@ -35,7 +35,7 @@
void common_hal_socketpool_socketpool_construct(socketpool_socketpool_obj_t* self, mp_obj_t radio) {
if (radio != MP_OBJ_FROM_PTR(&common_hal_wifi_radio_obj)) {
mp_raise_ValueError(translate("SocketPool can only be used with wifi.radio."));
mp_raise_ValueError(translate("SocketPool can only be used with wifi.radio"));
}
}
@ -63,7 +63,7 @@ socketpool_socket_obj_t* common_hal_socketpool_socket(socketpool_socketpool_obj_
if (socket_type == SOCK_DGRAM || socket_type == SOCK_RAW ||
addr_family == AF_INET6 || ipproto == IPPROTO_IPV6) {
mp_raise_NotImplementedError(translate("Only IPv4 SOCK_STREAM sockets supported."));
mp_raise_NotImplementedError(translate("Only IPv4 SOCK_STREAM sockets supported"));
}
int socknum = -1;

View File

@ -23,9 +23,3 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_SOCKETPOOL___INIT___H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_SOCKETPOOL___INIT___H
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_SOCKETPOOL___INIT___H

View File

@ -73,10 +73,12 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) {
}
}
#define MAC_ADDRESS_LENGTH 6
mp_obj_t common_hal_wifi_radio_get_mac_address(wifi_radio_obj_t *self) {
uint8_t mac[6];
uint8_t mac[MAC_ADDRESS_LENGTH];
esp_wifi_get_mac(ESP_IF_WIFI_STA, mac);
return mp_const_none;
return mp_obj_new_bytes(mac, MAC_ADDRESS_LENGTH);
}
mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self) {
@ -87,8 +89,8 @@ mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self) {
start_station(self);
wifi_scannednetworks_obj_t *scan = m_new_obj(wifi_scannednetworks_obj_t);
self->current_scan = scan;
scan->base.type = &wifi_scannednetworks_type;
self->current_scan = scan;
scan->start_channel = 1;
scan->end_channel = 11;
scan->radio_event_group = self->event_group_handle;
@ -107,9 +109,7 @@ wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t
wifi_config_t* config = &self->sta_config;
memcpy(&config->sta.ssid, ssid, ssid_len);
config->sta.ssid[ssid_len] = 0;
if (password_len > 0) {
memcpy(&config->sta.password, password, password_len);
}
memcpy(&config->sta.password, password, password_len);
config->sta.password[password_len] = 0;
config->sta.channel = channel;
esp_wifi_set_config(ESP_IF_WIFI_STA, config);
@ -159,7 +159,7 @@ mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address,
uint32_t received = 0;
uint32_t total_time_ms = 0;
while (received == 0 && total_time_ms < timeout_ms) {
while (received == 0 && total_time_ms < timeout_ms && !mp_hal_is_interrupted()) {
RUN_BACKGROUND_TASKS;
esp_ping_get_profile(ping, ESP_PING_PROF_DURATION, &total_time_ms, sizeof(total_time_ms));
esp_ping_get_profile(ping, ESP_PING_PROF_REPLY, &received, sizeof(received));

View File

@ -162,6 +162,7 @@ void wifi_scannednetworks_deinit(wifi_scannednetworks_obj_t* self) {
if (self->scanning) {
esp_wifi_scan_stop();
if (wifi_scannednetworks_wait_for_scan(self)) {
// Ignore the number of records since we're throwing them away.
uint16_t number = 0;
esp_wifi_scan_get_ap_records(&number, NULL);
self->scanning = false;

View File

@ -44,51 +44,42 @@ static void event_handler(void* arg, esp_event_base_t event_base,
int32_t event_id, void* event_data) {
wifi_radio_obj_t* radio = arg;
if (event_base == WIFI_EVENT) {
if (event_id == WIFI_EVENT_SCAN_DONE) {
xEventGroupSetBits(radio->event_group_handle, WIFI_SCAN_DONE_BIT);
} else if (event_id == WIFI_EVENT_STA_START) {
} else if (event_id == WIFI_EVENT_STA_STOP) {
} else if (event_id == WIFI_EVENT_STA_CONNECTED) {
ESP_EARLY_LOGW(TAG, "connected");
} else if (event_id == WIFI_EVENT_STA_DISCONNECTED) {
ESP_EARLY_LOGW(TAG, "disconnected");
wifi_event_sta_disconnected_t* d = (wifi_event_sta_disconnected_t*) event_data;
uint8_t reason = d->reason;
ESP_EARLY_LOGW(TAG, "reason %d 0x%02x", reason, reason);
if (radio->retries_left > 0 &&
(reason == WIFI_REASON_AUTH_EXPIRE ||
reason == WIFI_REASON_ASSOC_EXPIRE ||
reason == WIFI_REASON_CONNECTION_FAIL ||
reason == WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT)) {
radio->retries_left--;
ESP_EARLY_LOGI(TAG, "Retrying connect. %d retries remaining", radio->retries_left);
esp_wifi_connect();
return;
switch (event_id) {
case WIFI_EVENT_SCAN_DONE:
xEventGroupSetBits(radio->event_group_handle, WIFI_SCAN_DONE_BIT);
break;
case WIFI_EVENT_STA_CONNECTED:
ESP_EARLY_LOGW(TAG, "connected");
break;
case WIFI_EVENT_STA_DISCONNECTED: {
ESP_EARLY_LOGW(TAG, "disconnected");
wifi_event_sta_disconnected_t* d = (wifi_event_sta_disconnected_t*) event_data;
uint8_t reason = d->reason;
ESP_EARLY_LOGW(TAG, "reason %d 0x%02x", reason, reason);
if (radio->retries_left > 0 &&
(reason == WIFI_REASON_AUTH_EXPIRE ||
reason == WIFI_REASON_ASSOC_EXPIRE ||
reason == WIFI_REASON_CONNECTION_FAIL ||
reason == WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT)) {
radio->retries_left--;
ESP_EARLY_LOGI(TAG, "Retrying connect. %d retries remaining", radio->retries_left);
esp_wifi_connect();
return;
}
radio->last_disconnect_reason = reason;
xEventGroupSetBits(radio->event_group_handle, WIFI_DISCONNECTED_BIT);
}
radio->last_disconnect_reason = reason;
xEventGroupSetBits(radio->event_group_handle, WIFI_DISCONNECTED_BIT);
// if (reason != WIFI_REASON_ASSOC_LEAVE) {
// // reconnect
// }
} else if (event_id == WIFI_EVENT_STA_AUTHMODE_CHANGE) {
// Cases to handle later.
// case WIFI_EVENT_STA_START:
// case WIFI_EVENT_STA_STOP:
// case WIFI_EVENT_STA_AUTHMODE_CHANGE:
default:
break;
}
}
// esp_wifi_connect();
// if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
// esp_wifi_connect();
// } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
// if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
// esp_wifi_connect();
// s_retry_num++;
// ESP_LOGI(TAG, "retry to connect to the AP");
// } else {
// xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
// }
// ESP_LOGI(TAG,"connect to the AP fail");
// } else
if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
ESP_EARLY_LOGW(TAG, "got ip");
radio->retries_left = radio->starting_retries;
@ -100,7 +91,7 @@ static bool wifi_inited;
void common_hal_wifi_init(void) {
wifi_inited = true;
common_hal_wifi_radio_obj.base.type = &wifi_radio_type;
common_hal_wifi_radio_obj.base.type = &wifi_radio_type;
ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default());
@ -120,13 +111,13 @@ void common_hal_wifi_init(void) {
self,
&self->handler_instance_got_ip));
wifi_init_config_t config = WIFI_INIT_CONFIG_DEFAULT();
esp_err_t result = esp_wifi_init(&config);
if (result == ESP_ERR_NO_MEM) {
mp_raise_msg(&mp_type_MemoryError, translate("Failed to allocate Wifi memory"));
} else if (result != ESP_OK) {
// handle this
}
wifi_init_config_t config = WIFI_INIT_CONFIG_DEFAULT();
esp_err_t result = esp_wifi_init(&config);
if (result == ESP_ERR_NO_MEM) {
mp_raise_msg(&mp_type_MemoryError, translate("Failed to allocate Wifi memory"));
} else if (result != ESP_OK) {
mp_raise_RuntimeError(translate("Failed to init wifi"));
}
common_hal_wifi_radio_set_enabled(self, true);
}
@ -135,14 +126,14 @@ void wifi_reset(void) {
return;
}
wifi_radio_obj_t* radio = &common_hal_wifi_radio_obj;
common_hal_wifi_radio_set_enabled(radio, false);
common_hal_wifi_radio_set_enabled(radio, false);
ESP_ERROR_CHECK(esp_event_handler_instance_unregister(WIFI_EVENT,
ESP_EVENT_ANY_ID,
radio->handler_instance_all_wifi));
ESP_ERROR_CHECK(esp_event_handler_instance_unregister(IP_EVENT,
IP_EVENT_STA_GOT_IP,
radio->handler_instance_got_ip));
ESP_ERROR_CHECK(esp_wifi_deinit());
ESP_ERROR_CHECK(esp_wifi_deinit());
esp_netif_destroy(radio->netif);
radio->netif = NULL;
ESP_ERROR_CHECK(esp_netif_deinit());

View File

@ -23,7 +23,8 @@ CIRCUITPY_I2CPERIPHERAL = 0
CIRCUITPY_ROTARYIO = 0
CIRCUITPY_RTC = 0
CIRCUITPY_NVM = 0
CIRCUITPY_USB_MIDI = 0 # We don't have enough endpoints to include MIDI.
# We don't have enough endpoints to include MIDI.
CIRCUITPY_USB_MIDI = 0
CIRCUITPY_WIFI = 1
CIRCUITPY_ESPIDF = 1

View File

@ -1,10 +1,10 @@
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
# bootloader.bin 0x1000
# partition table 0x8000, 0xC00
otadata, data, ota, 0xd000, 0x2000,
phy_init, data, phy, 0xf000, 0x1000,
ota_0, 0, ota_0, 0x10000, 0x160000,
ota_1, 0, ota_1, 0x170000, 0x160000,
# bootloader.bin,, 0x1000, 32K
# partition table,, 0x8000, 4K
nvs, data, nvs, 0x9000, 20K,
otadata, data, ota, 0xe000, 8K,
ota_0, 0, ota_0, 0x10000, 1408K,
ota_1, 0, ota_1, 0x170000, 1408K,
uf2, app, factory,0x2d0000, 256K,
user_fs, data, fat, 0x310000, 960K,

1 # ESP-IDF Partition Table
2 # Name, Type, SubType, Offset, Size, Flags
3 # bootloader.bin 0x1000 # bootloader.bin,, 0x1000, 32K
4 # partition table 0x8000, 0xC00 # partition table,, 0x8000, 4K
5 otadata, data, ota, 0xd000, 0x2000, nvs, data, nvs, 0x9000, 20K,
6 phy_init, data, phy, 0xf000, 0x1000, otadata, data, ota, 0xe000, 8K,
7 ota_0, 0, ota_0, 0x10000, 0x160000, ota_0, 0, ota_0, 0x10000, 1408K,
8 ota_1, 0, ota_1, 0x170000, 0x160000, ota_1, 0, ota_1, 0x170000, 1408K,
9 uf2, app, factory,0x2d0000, 256K,
10 user_fs, data, fat, 0x310000, 960K,

View File

@ -95,7 +95,7 @@ CFLAGS += -DCIRCUITPY_COUNTIO=$(CIRCUITPY_COUNTIO)
CIRCUITPY_DISPLAYIO ?= $(CIRCUITPY_FULL_BUILD)
CFLAGS += -DCIRCUITPY_DISPLAYIO=$(CIRCUITPY_DISPLAYIO)
# CIRCUITPY_ESPIDF is handled in the atmel-samd tree.
# CIRCUITPY_ESPIDF is handled in the esp32s2 tree.
# Only for ESP32S chips.
# Assume not a ESP build.
CIRCUITPY_ESPIDF ?= 0

View File

@ -39,7 +39,7 @@
//| """Encapsulates an IPv4 address."""
//|
//| def __init__(self, address: Union[str, bytes]) -> None:
//| def __init__(self, address: Union[int, str, bytes]) -> None:
//| """Create a new IPv4Address object encapsulating the address value.
//|
//| The value itself can either be bytes or a string formatted address."""
@ -64,7 +64,7 @@ STATIC mp_obj_t ipaddress_ipv4address_make_new(const mp_obj_type_t *type, size_t
} else if (MP_OBJ_IS_STR(address)) {
GET_STR_DATA_LEN(address, str_data, str_len);
if (!ipaddress_parse_ipv4address((const char*) str_data, str_len, &value)) {
mp_raise_ValueError(translate("Not a valid IP string."));
mp_raise_ValueError(translate("Not a valid IP string"));
}
} else {
mp_buffer_info_t buf_info;

View File

@ -88,10 +88,10 @@ STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) {
} else if (MP_OBJ_IS_STR(ip_in)) {
GET_STR_DATA_LEN(ip_in, str_data, str_len);
if (!ipaddress_parse_ipv4address((const char*) str_data, str_len, &value)) {
mp_raise_ValueError(translate("Not a valid IP string."));
mp_raise_ValueError(translate("Not a valid IP string"));
}
} else {
mp_raise_ValueError(translate("Only raw int supported for ip."));
mp_raise_ValueError(translate("Only raw int supported for ip"));
}
return common_hal_ipaddress_new_ipv4address(value);

View File

@ -61,7 +61,7 @@ STATIC mp_obj_t socketpool_socketpool_make_new(const mp_obj_type_t *type, size_t
}
//| def socket(self, family: int, type: int, proto: int) -> None:
//| def socket(self, family: int = AF_INET, type: int = SOCK_STREAM, proto: int = IPPROTO_TCP) -> None:
//| """Create a new socket
//|
//| :param ~int family: AF_INET or AF_INET6

View File

@ -72,7 +72,7 @@ STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_ar
const char *server_hostname = mp_obj_str_get_str(args[ARG_server_hostname].u_obj);
bool server_side = args[ARG_server_side].u_bool;
if (server_side && server_hostname != NULL) {
mp_raise_ValueError(translate("Server side context cannot have hostname."));
mp_raise_ValueError(translate("Server side context cannot have hostname"));
}
socketpool_socket_obj_t* sock = args[ARG_sock].u_obj;

View File

@ -61,7 +61,7 @@ const mp_obj_property_t wifi_radio_enabled_obj = {
(mp_obj_t)&mp_const_none_obj },
};
//| mac_address: Address
//| mac_address: bytes
//| """MAC address of the wifi radio. (read-only)"""
//|
STATIC mp_obj_t wifi_radio_get_mac_address(mp_obj_t self) {
@ -110,7 +110,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_rad
STATIC mp_obj_t wifi_radio_connect(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_ssid, ARG_password, ARG_channel, ARG_timeout };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_ssid, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_ssid, MP_ARG_REQUIRED | MP_ARG_OBJ },
{ MP_QSTR_password, MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_channel, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
{ MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
@ -127,17 +127,14 @@ STATIC mp_obj_t wifi_radio_connect(size_t n_args, const mp_obj_t *pos_args, mp_m
mp_buffer_info_t ssid;
ssid.len = 0;
if (args[ARG_ssid].u_obj != MP_OBJ_NULL) {
mp_get_buffer_raise(args[ARG_ssid].u_obj, &ssid, MP_BUFFER_READ);
}
mp_get_buffer_raise(args[ARG_ssid].u_obj, &ssid, MP_BUFFER_READ);
mp_buffer_info_t password;
password.len = 0;
if (args[ARG_password].u_obj != MP_OBJ_NULL) {
mp_get_buffer_raise(args[ARG_password].u_obj, &password, MP_BUFFER_READ);
if (password.len > 0 && (password.len < 8 || password.len > 63)) {
mp_raise_ValueError(translate("WiFi password must be between 8 and 63 characters."));
mp_raise_ValueError(translate("WiFi password must be between 8 and 63 characters"));
}
}

View File

@ -31,5 +31,5 @@ mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value) {
ipaddress_ipv4address_obj_t* self = m_new_obj(ipaddress_ipv4address_obj_t);
self->base.type = &ipaddress_ipv4address_type;
common_hal_ipaddress_ipv4address_construct(self, (uint8_t*) &value, 4);
return self;
return MP_OBJ_FROM_PTR(self);
}