openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
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.
 
 
 
 
 
 

94 lines
2.9 KiB

#pragma once
#include <QtDBus>
#include <QWidget>
#include "selfdrive/ui/qt/offroad/networkmanager.h"
enum class SecurityType {
OPEN,
WPA,
UNSUPPORTED
};
enum class ConnectedType{
DISCONNECTED,
CONNECTING,
CONNECTED
};
typedef QMap<QString, QMap<QString, QVariant>> Connection;
typedef QVector<QMap<QString, QVariant>> IpConfig;
struct Network {
QString path;
QByteArray ssid;
unsigned int strength;
ConnectedType connected;
SecurityType security_type;
};
class WifiManager : public QWidget {
Q_OBJECT
public:
explicit WifiManager(QWidget* parent);
void requestScan();
QVector<Network> seen_networks;
QMap<QDBusObjectPath, QString> knownConnections;
QString ipv4_address;
void refreshNetworks();
void forgetConnection(const QString &ssid);
bool isKnownConnection(const QString &ssid);
void activateWifiConnection(const QString &ssid);
void connect(const Network &ssid);
void connect(const Network &ssid, const QString &password);
void connect(const Network &ssid, const QString &username, const QString &password);
void disconnect();
// Tethering functions
void setTetheringEnabled(bool enabled);
bool isTetheringEnabled();
void addTetheringConnection();
void changeTetheringPassword(const QString &newPassword);
QString getTetheringPassword();
private:
QVector<QByteArray> seen_ssids;
QString adapter; // Path to network manager wifi-device
QDBusConnection bus = QDBusConnection::systemBus();
unsigned int raw_adapter_state; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState
QString connecting_to_network;
QString tethering_ssid;
const QString defaultTetheringPassword = "swagswagcomma";
bool firstScan = true;
QString getAdapter();
bool isWirelessAdapter(const QDBusObjectPath &path);
QString get_ipv4_address();
QList<Network> get_networks();
void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type);
QString activeAp;
void deactivateConnection(const QString &ssid);
QVector<QDBusObjectPath> get_active_connections();
uint get_wifi_device_state();
QByteArray get_property(const QString &network_path, const QString &property);
unsigned int get_ap_strength(const QString &network_path);
SecurityType getSecurityType(const QString &path);
QDBusObjectPath getConnectionPath(const QString &ssid);
void initConnections();
QString getConnectionSsid(const QDBusObjectPath &path);
void setup();
signals:
void wrongPassword(const QString &ssid);
void refreshSignal();
private slots:
void stateChange(unsigned int new_state, unsigned int previous_state, unsigned int change_reason);
void propertyChange(const QString &interface, const QVariantMap &props, const QStringList &invalidated_props);
void deviceAdded(const QDBusObjectPath &path);
void connectionRemoved(const QDBusObjectPath &path);
void newConnection(const QDBusObjectPath &path);
};