Browse Source

wifi settings

master
n0m1s 6 years ago
parent
commit
5e0af043d6
4 changed files with 131 additions and 4 deletions
  1. +14
    -2
      settings.cpp
  2. +1
    -1
      settings.h
  3. +75
    -0
      wifi_settings.cpp
  4. +41
    -1
      wifi_settings.h

+ 14
- 2
settings.cpp View File

@ -26,9 +26,21 @@ void Settings::add_line(char const* section, char const* key, char const* val)
Serial.print(val); Serial.print(val);
Serial.println("\""); Serial.println("\"");
if(string_starts_by(section, "wifi"))
{
char const* network_name = "0";
if(section[4] == ':')
network_name = section + 5;
wifi.add_info(network_name, key, val);
}
else
{
delete[] key;
delete[] val;
}
delete[] section; delete[] section;
delete[] key;
delete[] val;
} }
Settings const* Settings::load(char const* settings_filename) Settings const* Settings::load(char const* settings_filename)


+ 1
- 1
settings.h View File

@ -18,7 +18,7 @@ class Settings
public: public:
static Settings const* load(char const* settings_filename); static Settings const* load(char const* settings_filename);
protected:
WifiSettings wifi;
}; };
#endif //SETTINGS_H #endif //SETTINGS_H

+ 75
- 0
wifi_settings.cpp View File

@ -0,0 +1,75 @@
#include "wifi_settings.h"
#include "string_helper.h"
WifiSettings::Network::Network(char const* name, Network* next):
m_name(name),
m_ssid(nullptr),
m_pass(nullptr),
m_next(next)
{
}
WifiSettings::Network::~Network()
{
if(m_next != nullptr)
delete m_next;
}
WifiSettings::WifiSettings():
m_first_network(nullptr)
{
}
WifiSettings::~WifiSettings()
{
if(m_first_network != nullptr)
delete m_first_network;
}
void WifiSettings::add_info(char const* network_name, char const* key, char const* val)
{
Network* net = find_network(network_name);
if(net == nullptr)
{
net = new Network(string_copy(network_name), m_first_network);
m_first_network = net;
}
if(string_equals(key, "ssid"))
{
if(net->m_ssid != nullptr)
delete[] net->m_ssid;
net->m_ssid = val;
}
else if(string_equals(key, "password"))
{
if(net->m_pass != nullptr)
delete[] net->m_pass;
net->m_pass = val;
}
else
delete[] val;
delete[] key;
}
WifiSettings::Network const* WifiSettings::networks_cbegin() const
{
return m_first_network;
}
WifiSettings::Network const* WifiSettings::networks_cend() const
{
return nullptr;
}
WifiSettings::Network* WifiSettings::find_network(char const* network_name)
{
for(Network* net = m_first_network; net != nullptr; net = net->m_next)
if(string_equals(net->m_name, network_name))
return net;
return nullptr;
}

+ 41
- 1
wifi_settings.h View File

@ -4,7 +4,47 @@
class WifiSettings class WifiSettings
{ {
public: public:
//TODO
class Network
{
friend class WifiSettings;
protected:
Network(char const* name, Network* next);
public:
~Network();
inline bool has_all_infos() const
{
return m_ssid != nullptr && m_pass != nullptr;
}
inline char const* ssid() const {return m_ssid;}
inline char const* pass() const {return m_pass;}
inline Network const* next() const {return m_next;}
private:
char const*const m_name;
char const* m_ssid;
char const* m_pass;
Network *const m_next;
};
WifiSettings();
~WifiSettings();
void add_info(char const* network_name, char const* key, char const* val);
Network const* networks_cbegin() const;
Network const* networks_cend() const;
protected:
Network* find_network(char const* network_name);
protected:
Network* m_first_network;
}; };
#endif //WIFI_SETTINGS_H #endif //WIFI_SETTINGS_H

Loading…
Cancel
Save