Use std::string in API

pull/126/head
Phil Howard 2021-04-07 13:23:54 +01:00
rodzic 8ff49474ea
commit 0703c90dea
4 zmienionych plików z 38 dodań i 37 usunięć

Wyświetl plik

@ -127,13 +127,13 @@ namespace pimoroni {
driver.esp_deselect(); 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(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(SET_NET, SpiDrv::PARAM_NUMS_1); driver.send_cmd(SET_NET, SpiDrv::PARAM_NUMS_1);
driver.send_param((const uint8_t*)ssid, ssid_len, SpiDrv::LAST_PARAM); driver.send_param((const uint8_t*)ssid.data(), ssid.length(), SpiDrv::LAST_PARAM);
driver.pad_to_multiple_of_4(5 + ssid_len); driver.pad_to_multiple_of_4(5 + ssid.length());
driver.esp_deselect(); driver.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -149,14 +149,14 @@ namespace pimoroni {
return (data == WIFI_SPI_ACK) ? WL_SUCCESS : WL_FAILURE; 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(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(SET_PASSPHRASE, SpiDrv::PARAM_NUMS_2); 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*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM);
driver.send_param((const uint8_t*)passphrase, len, SpiDrv::LAST_PARAM); driver.send_param((const uint8_t*)passphrase.data(), passphrase.length(), SpiDrv::LAST_PARAM);
driver.pad_to_multiple_of_4(6 + ssid_len + len); driver.pad_to_multiple_of_4(6 + ssid.length() + passphrase.length());
driver.esp_deselect(); driver.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -172,15 +172,15 @@ namespace pimoroni {
return data; 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(); driver.wait_for_esp_select();
//Send Command //Send Command
driver.send_cmd(SET_KEY, SpiDrv::PARAM_NUMS_3); 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(&key_idx, KEY_IDX_LEN, SpiDrv::NO_LAST_PARAM);
driver.send_param((uint8_t*)key, len, SpiDrv::LAST_PARAM); driver.send_param((uint8_t*)key.data(), key.length(), SpiDrv::LAST_PARAM);
driver.pad_to_multiple_of_4(8 + ssid_len + len); driver.pad_to_multiple_of_4(8 + ssid.length() + key.length());
driver.esp_deselect(); driver.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -245,13 +245,13 @@ namespace pimoroni {
driver.esp_deselect(); driver.esp_deselect();
} }
void Esp32Spi::set_hostname(const char* hostname) { void Esp32Spi::set_hostname(const std::string hostname) {
driver.wait_for_esp_select(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(SET_HOSTNAME, SpiDrv::PARAM_NUMS_1); driver.send_cmd(SET_HOSTNAME, SpiDrv::PARAM_NUMS_1);
driver.send_param((uint8_t*)hostname, strlen(hostname), SpiDrv::LAST_PARAM); driver.send_param((uint8_t*)hostname.data(), hostname.length(), SpiDrv::LAST_PARAM);
driver.pad_to_multiple_of_4(5 + strlen(hostname)); driver.pad_to_multiple_of_4(5 + hostname.length());
driver.esp_deselect(); driver.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -343,7 +343,7 @@ namespace pimoroni {
ip_out = gateway_ip; ip_out = gateway_ip;
} }
const char* Esp32Spi::get_current_ssid() { std::string Esp32Spi::get_current_ssid() {
driver.wait_for_esp_select(); driver.wait_for_esp_select();
// Send Command // Send Command
@ -697,14 +697,14 @@ namespace pimoroni {
driver.esp_deselect(); 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(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(SET_AP_NET, SpiDrv::PARAM_NUMS_2); 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.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.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -720,15 +720,15 @@ namespace pimoroni {
return (data == WIFI_SPI_ACK) ? WL_SUCCESS : WL_FAILURE; 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(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(SET_AP_PASSPHRASE, SpiDrv::PARAM_NUMS_3); 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*)ssid.data(), ssid.length(), SpiDrv::NO_LAST_PARAM);
driver.send_param((uint8_t*)passphrase, len, 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.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.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();
@ -944,17 +944,17 @@ namespace pimoroni {
driver.esp_deselect(); 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(); driver.wait_for_esp_select();
// Send Command // Send Command
driver.send_cmd(START_CLIENT_TCP, SpiDrv::PARAM_NUMS_5); 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((uint8_t*)&ip_address, sizeof(ip_address), SpiDrv::NO_LAST_PARAM);
driver.send_param(port, SpiDrv::NO_LAST_PARAM); driver.send_param(port, SpiDrv::NO_LAST_PARAM);
driver.send_param(&sock, 1, SpiDrv::NO_LAST_PARAM); driver.send_param(&sock, 1, SpiDrv::NO_LAST_PARAM);
driver.send_param(&prot_mode, 1, SpiDrv::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.esp_deselect();
driver.wait_for_esp_select(); driver.wait_for_esp_select();

Wyświetl plik

@ -1,6 +1,7 @@
#pragma once #pragma once
#include <string.h> #include <string.h>
#include <string>
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "spi_drv.hpp" #include "spi_drv.hpp"
#include "ip_address.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_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); 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_network(const std::string ssid);
int8_t wifi_set_passphrase(const char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len); int8_t wifi_set_passphrase(const std::string ssid, const std::string passphrase);
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_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 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_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(); int8_t disconnect();
uint8_t get_connection_status(); uint8_t get_connection_status();
@ -127,7 +128,7 @@ namespace pimoroni {
void get_subnet_mask(IPAddress &mask_out); void get_subnet_mask(IPAddress &mask_out);
void get_gateway_ip(IPAddress &ip_out); void get_gateway_ip(IPAddress &ip_out);
const char* get_current_ssid(); std::string get_current_ssid();
uint8_t* get_current_bssid(); uint8_t* get_current_bssid();
int32_t get_current_rssi(); int32_t get_current_rssi();
uint8_t get_current_encryption_type(); uint8_t get_current_encryption_type();
@ -149,8 +150,8 @@ namespace pimoroni {
uint32_t get_time(); uint32_t get_time();
void set_power_mode(uint8_t mode); 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_network(const std::string ssid, 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_passphrase(const std::string ssid, const std::string passphrase, uint8_t channel);
int16_t ping(uint32_t ip_address, uint8_t ttl); 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(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_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(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); void stop_client(uint8_t sock);
uint8_t get_server_state(uint8_t sock); uint8_t get_server_state(uint8_t sock);

Wyświetl plik

@ -87,10 +87,10 @@ int main() {
printf("starting connection\n"); 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"); printf("waiting to establish connection status\n");
while(wireless.get_connection_status() != 3) { while(wireless.get_connection_status() != WL_CONNECTED) {
sleep_ms(1000); sleep_ms(1000);
printf("still waiting\n"); printf("still waiting\n");
} }

Wyświetl plik

@ -3,5 +3,5 @@
//DO NOT COMMIT THIS FILE!!! //DO NOT COMMIT THIS FILE!!!
//Your wireless network's name and password //Your wireless network's name and password
static const char NETWORK[] = "network name here"; #define NETWORK "network name here"
static const char PASSWORD[] = "network password here"; #define PASSWORD "network password here"