Merge pull request #3547 from microDev1/wifiHost
Add method to set custom hostname
This commit is contained in:
commit
b67acea587
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-10-10 23:49-0700\n"
|
"POT-Creation-Date: 2020-10-15 16:06+0530\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -947,6 +947,10 @@ msgstr ""
|
|||||||
msgid "Hardware in use, try alternative pins"
|
msgid "Hardware in use, try alternative pins"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/wifi/Radio.c
|
||||||
|
msgid "Hostname must be between 1 and 253 characters"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/vfs_posix_file.c py/objstringio.c
|
#: extmod/vfs_posix_file.c py/objstringio.c
|
||||||
msgid "I/O operation on closed file"
|
msgid "I/O operation on closed file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1026,6 +1030,7 @@ msgstr ""
|
|||||||
msgid "Invalid BSSID"
|
msgid "Invalid BSSID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
|
||||||
#: ports/stm/common-hal/analogio/AnalogOut.c
|
#: ports/stm/common-hal/analogio/AnalogOut.c
|
||||||
msgid "Invalid DAC pin supplied"
|
msgid "Invalid DAC pin supplied"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1237,7 +1242,6 @@ msgid "No CCCD for this Characteristic"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
|
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
|
||||||
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
|
|
||||||
#: ports/stm/common-hal/analogio/AnalogOut.c
|
#: ports/stm/common-hal/analogio/AnalogOut.c
|
||||||
msgid "No DAC on chip"
|
msgid "No DAC on chip"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2728,6 +2732,10 @@ msgstr ""
|
|||||||
msgid "invalid format specifier"
|
msgid "invalid format specifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/wifi/Radio.c
|
||||||
|
msgid "invalid hostname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: extmod/modussl_axtls.c
|
#: extmod/modussl_axtls.c
|
||||||
msgid "invalid key"
|
msgid "invalid key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -32,3 +32,8 @@ CONFIG_SPIRAM_MEMTEST=y
|
|||||||
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
||||||
# end of SPI RAM config
|
# end of SPI RAM config
|
||||||
|
|
||||||
|
#
|
||||||
|
# LWIP
|
||||||
|
#
|
||||||
|
CONFIG_LWIP_LOCAL_HOSTNAME="microS2"
|
||||||
|
# end of LWIP
|
||||||
|
@ -104,6 +104,19 @@ void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self) {
|
|||||||
self->current_scan = NULL;
|
self->current_scan = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mp_obj_t common_hal_wifi_radio_get_hostname(wifi_radio_obj_t *self) {
|
||||||
|
const char *hostname = NULL;
|
||||||
|
esp_netif_get_hostname(self->netif, &hostname);
|
||||||
|
if (hostname == NULL) {
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
return mp_obj_new_str(hostname, strlen(hostname));
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *hostname) {
|
||||||
|
esp_netif_set_hostname(self->netif, hostname);
|
||||||
|
}
|
||||||
|
|
||||||
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
|
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
|
||||||
// check enabled
|
// check enabled
|
||||||
start_station(self);
|
start_station(self);
|
||||||
|
@ -24,11 +24,13 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "shared-bindings/wifi/__init__.h"
|
||||||
|
|
||||||
|
#include <regex.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "py/objproperty.h"
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "shared-bindings/wifi/__init__.h"
|
#include "py/objproperty.h"
|
||||||
|
|
||||||
//| class Radio:
|
//| class Radio:
|
||||||
//| """Native wifi radio.
|
//| """Native wifi radio.
|
||||||
@ -50,7 +52,6 @@
|
|||||||
//|
|
//|
|
||||||
STATIC mp_obj_t wifi_radio_get_enabled(mp_obj_t self) {
|
STATIC mp_obj_t wifi_radio_get_enabled(mp_obj_t self) {
|
||||||
return mp_obj_new_bool(common_hal_wifi_radio_get_enabled(self));
|
return mp_obj_new_bool(common_hal_wifi_radio_get_enabled(self));
|
||||||
|
|
||||||
}
|
}
|
||||||
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_enabled_obj, wifi_radio_get_enabled);
|
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_enabled_obj, wifi_radio_get_enabled);
|
||||||
|
|
||||||
@ -102,6 +103,45 @@ STATIC mp_obj_t wifi_radio_stop_scanning_networks(mp_obj_t self_in) {
|
|||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_radio_stop_scanning_networks);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_radio_stop_scanning_networks);
|
||||||
|
|
||||||
|
//| hostname: ReadableBuffer
|
||||||
|
//| """Hostname for wifi interface. When the hostname is altered after interface started/connected
|
||||||
|
//| the changes would only be reflected once the interface restarts/reconnects."""
|
||||||
|
//|
|
||||||
|
STATIC mp_obj_t wifi_radio_get_hostname(mp_obj_t self_in) {
|
||||||
|
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
|
return common_hal_wifi_radio_get_hostname(self);
|
||||||
|
}
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_hostname_obj, wifi_radio_get_hostname);
|
||||||
|
|
||||||
|
STATIC mp_obj_t wifi_radio_set_hostname(mp_obj_t self_in, mp_obj_t hostname_in) {
|
||||||
|
mp_buffer_info_t hostname;
|
||||||
|
mp_get_buffer_raise(hostname_in, &hostname, MP_BUFFER_READ);
|
||||||
|
|
||||||
|
if (hostname.len < 1 || hostname.len > 253) {
|
||||||
|
mp_raise_ValueError(translate("Hostname must be between 1 and 253 characters"));
|
||||||
|
}
|
||||||
|
|
||||||
|
regex_t regex; //validate hostname according to RFC 1123
|
||||||
|
regcomp(®ex,"^(([a-z0-9]|[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]{0,61}[a-z0-9])$", REG_EXTENDED | REG_ICASE | REG_NOSUB);
|
||||||
|
if (regexec(®ex, hostname.buf, 0, NULL, 0)) {
|
||||||
|
mp_raise_ValueError(translate("invalid hostname"));
|
||||||
|
}
|
||||||
|
regfree(®ex);
|
||||||
|
|
||||||
|
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
|
common_hal_wifi_radio_set_hostname(self, hostname.buf);
|
||||||
|
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_hostname_obj, wifi_radio_set_hostname);
|
||||||
|
|
||||||
|
const mp_obj_property_t wifi_radio_hostname_obj = {
|
||||||
|
.base.type = &mp_type_property,
|
||||||
|
.proxy = {(mp_obj_t)&wifi_radio_get_hostname_obj,
|
||||||
|
(mp_obj_t)&wifi_radio_set_hostname_obj,
|
||||||
|
(mp_obj_t)&mp_const_none_obj},
|
||||||
|
};
|
||||||
|
|
||||||
//| def connect(self, ssid: ReadableBuffer, password: ReadableBuffer = b"", *, channel: Optional[int] = 0, timeout: Optional[float] = None) -> bool:
|
//| def connect(self, ssid: ReadableBuffer, password: ReadableBuffer = b"", *, channel: Optional[int] = 0, timeout: Optional[float] = None) -> bool:
|
||||||
//| """Connects to the given ssid and waits for an ip address. Reconnections are handled
|
//| """Connects to the given ssid and waits for an ip address. Reconnections are handled
|
||||||
//| automatically once one connection succeeds."""
|
//| automatically once one connection succeeds."""
|
||||||
@ -216,6 +256,8 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_start_scanning_networks), MP_ROM_PTR(&wifi_radio_start_scanning_networks_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_start_scanning_networks), MP_ROM_PTR(&wifi_radio_start_scanning_networks_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_stop_scanning_networks), MP_ROM_PTR(&wifi_radio_stop_scanning_networks_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_stop_scanning_networks), MP_ROM_PTR(&wifi_radio_stop_scanning_networks_obj) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&wifi_radio_hostname_obj) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&wifi_radio_connect_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&wifi_radio_connect_obj) },
|
||||||
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
|
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
|
|
||||||
const mp_obj_type_t wifi_radio_type;
|
const mp_obj_type_t wifi_radio_type;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WIFI_RADIO_ERROR_NONE,
|
WIFI_RADIO_ERROR_NONE,
|
||||||
WIFI_RADIO_ERROR_UNKNOWN,
|
WIFI_RADIO_ERROR_UNKNOWN,
|
||||||
@ -46,6 +45,9 @@ typedef enum {
|
|||||||
extern bool common_hal_wifi_radio_get_enabled(wifi_radio_obj_t *self);
|
extern bool common_hal_wifi_radio_get_enabled(wifi_radio_obj_t *self);
|
||||||
extern void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled);
|
extern void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled);
|
||||||
|
|
||||||
|
extern mp_obj_t common_hal_wifi_radio_get_hostname(wifi_radio_obj_t *self);
|
||||||
|
extern void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *hostname);
|
||||||
|
|
||||||
extern mp_obj_t common_hal_wifi_radio_get_mac_address(wifi_radio_obj_t *self);
|
extern mp_obj_t common_hal_wifi_radio_get_mac_address(wifi_radio_obj_t *self);
|
||||||
|
|
||||||
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self);
|
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user