You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

75 lines
1.5 KiB

#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;
}