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();
}
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();

Wyświetl plik

@ -1,6 +1,7 @@
#pragma once
#include <string.h>
#include <string>
#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);

Wyświetl plik

@ -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");
}

Wyświetl plik

@ -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"