diff --git a/drivers/esp32spi/esp32spi.cpp b/drivers/esp32spi/esp32spi.cpp index b183f0d0..b5311437 100644 --- a/drivers/esp32spi/esp32spi.cpp +++ b/drivers/esp32spi/esp32spi.cpp @@ -127,13 +127,13 @@ namespace pimoroni { driver.esp_deselect(); } - int8_t Esp32Spi::wifi_set_network(const char* ssid, uint8_t ssid_len) { + int8_t Esp32Spi::wifi_set_network(const std::string ssid) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(SET_NET, SpiDrv::PARAM_NUMS_1); - driver.send_param((const uint8_t*)ssid, ssid_len, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(5 + ssid_len); + driver.send_param((const uint8_t*)ssid.data(), ssid.length(), SpiDrv::LAST_PARAM); + driver.pad_to_multiple_of_4(5 + ssid.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -149,14 +149,14 @@ namespace pimoroni { return (data == WIFI_SPI_ACK) ? WL_SUCCESS : WL_FAILURE; } - int8_t Esp32Spi::wifi_set_passphrase(const char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len) { + int8_t Esp32Spi::wifi_set_passphrase(const std::string ssid, const std::string passphrase) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(SET_PASSPHRASE, SpiDrv::PARAM_NUMS_2); - driver.send_param((const uint8_t*)ssid, ssid_len, SpiDrv::NO_LAST_PARAM); - driver.send_param((const uint8_t*)passphrase, len, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(6 + ssid_len + len); + driver.send_param((const uint8_t*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM); + driver.send_param((const uint8_t*)passphrase.data(), passphrase.length(), SpiDrv::LAST_PARAM); + driver.pad_to_multiple_of_4(6 + ssid.length() + passphrase.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -172,15 +172,15 @@ namespace pimoroni { return data; } - int8_t Esp32Spi::wifi_set_key(const char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t len) { + int8_t Esp32Spi::wifi_set_key(const std::string ssid, uint8_t key_idx, const std::string key) { driver.wait_for_esp_select(); //Send Command driver.send_cmd(SET_KEY, SpiDrv::PARAM_NUMS_3); - driver.send_param((uint8_t*)ssid, ssid_len, SpiDrv::NO_LAST_PARAM); + driver.send_param((uint8_t*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM); driver.send_param(&key_idx, KEY_IDX_LEN, SpiDrv::NO_LAST_PARAM); - driver.send_param((uint8_t*)key, len, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(8 + ssid_len + len); + driver.send_param((uint8_t*)key.data(), key.length(), SpiDrv::LAST_PARAM); + driver.pad_to_multiple_of_4(8 + ssid.length() + key.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -245,13 +245,13 @@ namespace pimoroni { driver.esp_deselect(); } - void Esp32Spi::set_hostname(const char* hostname) { + void Esp32Spi::set_hostname(const std::string hostname) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(SET_HOSTNAME, SpiDrv::PARAM_NUMS_1); - driver.send_param((uint8_t*)hostname, strlen(hostname), SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(5 + strlen(hostname)); + driver.send_param((uint8_t*)hostname.data(), hostname.length(), SpiDrv::LAST_PARAM); + driver.pad_to_multiple_of_4(5 + hostname.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -343,7 +343,7 @@ namespace pimoroni { ip_out = gateway_ip; } - const char* Esp32Spi::get_current_ssid() { + std::string Esp32Spi::get_current_ssid() { driver.wait_for_esp_select(); // Send Command @@ -697,14 +697,14 @@ namespace pimoroni { driver.esp_deselect(); } - int8_t Esp32Spi::wifi_set_ap_network(const char* ssid, uint8_t ssid_len, uint8_t channel) { + int8_t Esp32Spi::wifi_set_ap_network(const std::string ssid, uint8_t channel) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(SET_AP_NET, SpiDrv::PARAM_NUMS_2); - driver.send_param((uint8_t*)ssid, ssid_len, SpiDrv::NO_LAST_PARAM); + driver.send_param((uint8_t*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM); driver.send_param(&channel, 1, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(3 + ssid_len); + driver.pad_to_multiple_of_4(3 + ssid.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -720,15 +720,15 @@ namespace pimoroni { return (data == WIFI_SPI_ACK) ? WL_SUCCESS : WL_FAILURE; } - int8_t Esp32Spi::wifi_set_ap_passphrase(const char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len, uint8_t channel) { + int8_t Esp32Spi::wifi_set_ap_passphrase(const std::string ssid, const std::string passphrase, uint8_t channel) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(SET_AP_PASSPHRASE, SpiDrv::PARAM_NUMS_3); - driver.send_param((uint8_t*)ssid, ssid_len, SpiDrv::NO_LAST_PARAM); - driver.send_param((uint8_t*)passphrase, len, SpiDrv::NO_LAST_PARAM); + driver.send_param((uint8_t*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM); + driver.send_param((uint8_t*)passphrase.data(), passphrase.length(), SpiDrv::NO_LAST_PARAM); driver.send_param(&channel, 1, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(4 + ssid_len + len); + driver.pad_to_multiple_of_4(4 + ssid.length() + passphrase.length()); driver.esp_deselect(); driver.wait_for_esp_select(); @@ -944,17 +944,17 @@ namespace pimoroni { driver.esp_deselect(); } - void Esp32Spi::start_client(const char* host, uint8_t host_len, uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode) { + void Esp32Spi::start_client(std::string host, uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode) { driver.wait_for_esp_select(); // Send Command driver.send_cmd(START_CLIENT_TCP, SpiDrv::PARAM_NUMS_5); - driver.send_param((uint8_t*)host, host_len, SpiDrv::NO_LAST_PARAM); + driver.send_param((uint8_t*)host.data(), host.length(), SpiDrv::NO_LAST_PARAM); driver.send_param((uint8_t*)&ip_address, sizeof(ip_address), SpiDrv::NO_LAST_PARAM); driver.send_param(port, SpiDrv::NO_LAST_PARAM); driver.send_param(&sock, 1, SpiDrv::NO_LAST_PARAM); driver.send_param(&prot_mode, 1, SpiDrv::LAST_PARAM); - driver.pad_to_multiple_of_4(17 + host_len); + driver.pad_to_multiple_of_4(17 + host.length()); driver.esp_deselect(); driver.wait_for_esp_select(); diff --git a/drivers/esp32spi/esp32spi.hpp b/drivers/esp32spi/esp32spi.hpp index 047dcd7c..38c952ad 100644 --- a/drivers/esp32spi/esp32spi.hpp +++ b/drivers/esp32spi/esp32spi.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "pico/stdlib.h" #include "spi_drv.hpp" #include "ip_address.hpp" @@ -110,14 +111,14 @@ namespace pimoroni { void get_network_data(uint8_t *ip_out, uint8_t *mask_out, uint8_t *gwip_out); void get_remote_data(uint8_t sock, uint8_t *ip_out, uint8_t *port_out); - int8_t wifi_set_network(const char* ssid, uint8_t ssid_len); - int8_t wifi_set_passphrase(const char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len); - int8_t wifi_set_key(const char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t len); + int8_t wifi_set_network(const std::string ssid); + int8_t wifi_set_passphrase(const std::string ssid, const std::string passphrase); + int8_t wifi_set_key(const std::string ssid, uint8_t key_idx, const std::string key); void config(uint8_t valid_params, uint32_t local_ip, uint32_t gateway, uint32_t subnet); void set_dns(uint8_t valid_params, uint32_t dns_server1, uint32_t dns_server2); - void set_hostname(const char* hostname); + void set_hostname(std::string hostname); int8_t disconnect(); uint8_t get_connection_status(); @@ -127,7 +128,7 @@ namespace pimoroni { void get_subnet_mask(IPAddress &mask_out); void get_gateway_ip(IPAddress &ip_out); - const char* get_current_ssid(); + std::string get_current_ssid(); uint8_t* get_current_bssid(); int32_t get_current_rssi(); uint8_t get_current_encryption_type(); @@ -149,8 +150,8 @@ namespace pimoroni { uint32_t get_time(); void set_power_mode(uint8_t mode); - int8_t wifi_set_ap_network(const char* ssid, uint8_t ssid_len, uint8_t channel); - int8_t wifi_set_ap_passphrase(const char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len, uint8_t channel); + int8_t wifi_set_ap_network(const std::string ssid, uint8_t channel); + int8_t wifi_set_ap_passphrase(const std::string ssid, const std::string passphrase, uint8_t channel); int16_t ping(uint32_t ip_address, uint8_t ttl); @@ -169,7 +170,7 @@ namespace pimoroni { void start_server(uint16_t port, uint8_t sock, uint8_t prot_mode); void start_server(uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode); void start_client(uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode); - void start_client(const char* host, uint8_t host_len, uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode); + void start_client(const std::string host, uint32_t ip_address, uint16_t port, uint8_t sock, uint8_t prot_mode); void stop_client(uint8_t sock); uint8_t get_server_state(uint8_t sock); diff --git a/examples/pico_wireless/demo.cpp b/examples/pico_wireless/demo.cpp index d82468b0..f220b5ab 100644 --- a/examples/pico_wireless/demo.cpp +++ b/examples/pico_wireless/demo.cpp @@ -87,10 +87,10 @@ int main() { printf("starting connection\n"); - bool connected = wireless.wifi_set_passphrase(NETWORK, sizeof(NETWORK), PASSWORD, sizeof(PASSWORD)); + bool connected = wireless.wifi_set_passphrase(NETWORK, PASSWORD); printf("waiting to establish connection status\n"); - while(wireless.get_connection_status() != 3) { + while(wireless.get_connection_status() != WL_CONNECTED) { sleep_ms(1000); printf("still waiting\n"); } diff --git a/examples/pico_wireless/secrets.h b/examples/pico_wireless/secrets.h index 1c56ef07..f273e9b2 100644 --- a/examples/pico_wireless/secrets.h +++ b/examples/pico_wireless/secrets.h @@ -3,5 +3,5 @@ //DO NOT COMMIT THIS FILE!!! //Your wireless network's name and password -static const char NETWORK[] = "network name here"; -static const char PASSWORD[] = "network password here"; +#define NETWORK "network name here" +#define PASSWORD "network password here"