Add advertise parameter
This commit is contained in:
parent
9d5ab1bf0a
commit
f4b6003664
@ -4,7 +4,7 @@ Documentation=https://github.com/guh/nymea-networkmanager
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/nymea-networkmanager -d
|
ExecStart=/usr/bin/nymea-networkmanager -a nymea -p nymea-box
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
StandardError=journal
|
StandardError=journal
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|||||||
@ -72,19 +72,19 @@ QLowEnergyServiceData BluetoothServer::deviceInformationServiceData()
|
|||||||
modelNumberCharData.setProperties(QLowEnergyCharacteristic::Read);
|
modelNumberCharData.setProperties(QLowEnergyCharacteristic::Read);
|
||||||
serviceData.addCharacteristic(modelNumberCharData);
|
serviceData.addCharacteristic(modelNumberCharData);
|
||||||
|
|
||||||
// Firmware revision string 0x2a26
|
// // Firmware revision string 0x2a26
|
||||||
QLowEnergyCharacteristicData firmwareRevisionCharData;
|
// QLowEnergyCharacteristicData firmwareRevisionCharData;
|
||||||
firmwareRevisionCharData.setUuid(QBluetoothUuid::FirmwareRevisionString);
|
// firmwareRevisionCharData.setUuid(QBluetoothUuid::FirmwareRevisionString);
|
||||||
firmwareRevisionCharData.setValue(QString("1.0.0").toUtf8());
|
// firmwareRevisionCharData.setValue(QString("1.0.0").toUtf8());
|
||||||
firmwareRevisionCharData.setProperties(QLowEnergyCharacteristic::Read);
|
// firmwareRevisionCharData.setProperties(QLowEnergyCharacteristic::Read);
|
||||||
serviceData.addCharacteristic(firmwareRevisionCharData);
|
// serviceData.addCharacteristic(firmwareRevisionCharData);
|
||||||
|
|
||||||
// Hardware revision string 0x2a27
|
// // Hardware revision string 0x2a27
|
||||||
QLowEnergyCharacteristicData hardwareRevisionCharData;
|
// QLowEnergyCharacteristicData hardwareRevisionCharData;
|
||||||
hardwareRevisionCharData.setUuid(QBluetoothUuid::HardwareRevisionString);
|
// hardwareRevisionCharData.setUuid(QBluetoothUuid::HardwareRevisionString);
|
||||||
hardwareRevisionCharData.setValue(QString("1.0.0").toUtf8());
|
// hardwareRevisionCharData.setValue(QString("1.0.0").toUtf8());
|
||||||
hardwareRevisionCharData.setProperties(QLowEnergyCharacteristic::Read);
|
// hardwareRevisionCharData.setProperties(QLowEnergyCharacteristic::Read);
|
||||||
serviceData.addCharacteristic(hardwareRevisionCharData);
|
// serviceData.addCharacteristic(hardwareRevisionCharData);
|
||||||
|
|
||||||
// Software revision string 0x2a28
|
// Software revision string 0x2a28
|
||||||
QLowEnergyCharacteristicData softwareRevisionCharData;
|
QLowEnergyCharacteristicData softwareRevisionCharData;
|
||||||
@ -112,7 +112,7 @@ QLowEnergyServiceData BluetoothServer::genericAccessServiceData()
|
|||||||
// Device name 0x2a00
|
// Device name 0x2a00
|
||||||
QLowEnergyCharacteristicData nameCharData;
|
QLowEnergyCharacteristicData nameCharData;
|
||||||
nameCharData.setUuid(QBluetoothUuid::DeviceName);
|
nameCharData.setUuid(QBluetoothUuid::DeviceName);
|
||||||
nameCharData.setValue(QString("nymea-networkmanager").toUtf8());
|
nameCharData.setValue(QCoreApplication::applicationName().toUtf8());
|
||||||
nameCharData.setProperties(QLowEnergyCharacteristic::Read);
|
nameCharData.setProperties(QLowEnergyCharacteristic::Read);
|
||||||
serviceData.addCharacteristic(nameCharData);
|
serviceData.addCharacteristic(nameCharData);
|
||||||
|
|
||||||
@ -367,6 +367,7 @@ void BluetoothServer::start(WirelessNetworkDevice *wirelessDevice)
|
|||||||
advertisingData.setDiscoverability(QLowEnergyAdvertisingData::DiscoverabilityGeneral);
|
advertisingData.setDiscoverability(QLowEnergyAdvertisingData::DiscoverabilityGeneral);
|
||||||
advertisingData.setIncludePowerLevel(true);
|
advertisingData.setIncludePowerLevel(true);
|
||||||
advertisingData.setLocalName("nymea");
|
advertisingData.setLocalName("nymea");
|
||||||
|
|
||||||
// TODO: set guh manufacturer SIG data
|
// TODO: set guh manufacturer SIG data
|
||||||
|
|
||||||
// Note: start advertising in 100 ms interval, this makes the device better discoverable on certain phones
|
// Note: start advertising in 100 ms interval, this makes the device better discoverable on certain phones
|
||||||
|
|||||||
@ -55,6 +55,32 @@ NymeadService *Core::nymeaService() const
|
|||||||
return m_nymeaService;
|
return m_nymeaService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Core::advertiseName() const
|
||||||
|
{
|
||||||
|
return m_advertiseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::setAdvertiseName(const QString &name)
|
||||||
|
{
|
||||||
|
m_advertiseName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Core::platformName() const
|
||||||
|
{
|
||||||
|
return m_platformName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::setPlatformName(const QString &name)
|
||||||
|
{
|
||||||
|
m_platformName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::run()
|
||||||
|
{
|
||||||
|
// Start the networkmanager service
|
||||||
|
m_networkManager->start();
|
||||||
|
}
|
||||||
|
|
||||||
Core::Core(QObject *parent) :
|
Core::Core(QObject *parent) :
|
||||||
QObject(parent)
|
QObject(parent)
|
||||||
{
|
{
|
||||||
@ -68,10 +94,7 @@ Core::Core(QObject *parent) :
|
|||||||
|
|
||||||
m_nymeaService = new NymeadService(false, this);
|
m_nymeaService = new NymeadService(false, this);
|
||||||
|
|
||||||
// Start the networkmanager service
|
|
||||||
if (!m_networkManager->start()) {
|
|
||||||
qCWarning(dcApplication()) << "Could not start network manager. The service is not available. Make sure the network-manager is installed and running.";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::~Core()
|
Core::~Core()
|
||||||
@ -118,6 +141,9 @@ void Core::startService()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_bluetoothServer->running())
|
||||||
|
return;
|
||||||
|
|
||||||
// Disable bluetooth on nymea in order to not crash with client connections
|
// Disable bluetooth on nymea in order to not crash with client connections
|
||||||
m_nymeaService->enableBluetooth(false);
|
m_nymeaService->enableBluetooth(false);
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,14 @@ public:
|
|||||||
BluetoothServer *bluetoothServer() const;
|
BluetoothServer *bluetoothServer() const;
|
||||||
NymeadService *nymeaService() const;
|
NymeadService *nymeaService() const;
|
||||||
|
|
||||||
|
QString advertiseName() const;
|
||||||
|
void setAdvertiseName(const QString &name);
|
||||||
|
|
||||||
|
QString platformName() const;
|
||||||
|
void setPlatformName(const QString &name);
|
||||||
|
|
||||||
|
void run();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit Core(QObject *parent = nullptr);
|
explicit Core(QObject *parent = nullptr);
|
||||||
~Core();
|
~Core();
|
||||||
@ -49,6 +57,9 @@ private:
|
|||||||
BluetoothServer *m_bluetoothServer = nullptr;
|
BluetoothServer *m_bluetoothServer = nullptr;
|
||||||
NymeadService *m_nymeaService = nullptr;
|
NymeadService *m_nymeaService = nullptr;
|
||||||
|
|
||||||
|
QString m_advertiseName;
|
||||||
|
QString m_platformName;
|
||||||
|
|
||||||
void evaluateNetworkManagerState(const NetworkManager::NetworkManagerState &state);
|
void evaluateNetworkManagerState(const NetworkManager::NetworkManagerState &state);
|
||||||
|
|
||||||
void startService();
|
void startService();
|
||||||
|
|||||||
@ -80,7 +80,7 @@ int main(int argc, char *argv[])
|
|||||||
Application application(argc, argv);
|
Application application(argc, argv);
|
||||||
application.setApplicationName("nymea-networkmanager");
|
application.setApplicationName("nymea-networkmanager");
|
||||||
application.setOrganizationName("nymea");
|
application.setOrganizationName("nymea");
|
||||||
application.setApplicationVersion("0.0.1");
|
application.setApplicationVersion("0.0.2");
|
||||||
|
|
||||||
// Command line parser
|
// Command line parser
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
@ -90,6 +90,15 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
QCommandLineOption debugOption(QStringList() << "d" << "debug", "Enable more debug output.");
|
QCommandLineOption debugOption(QStringList() << "d" << "debug", "Enable more debug output.");
|
||||||
parser.addOption(debugOption);
|
parser.addOption(debugOption);
|
||||||
|
|
||||||
|
QCommandLineOption advertiseNameOption(QStringList() << "a" << "advertise-name", "The name of the bluetooth server. Default \"nymea\".", "NAME");
|
||||||
|
advertiseNameOption.setDefaultValue("nymea");
|
||||||
|
parser.addOption(advertiseNameOption);
|
||||||
|
|
||||||
|
QCommandLineOption platformNameOption(QStringList() << "p" << "platform-name", "The name of the platform this daemon is running. Default \"nymea-box\".", "NAME");
|
||||||
|
platformNameOption.setDefaultValue("nymea-box");
|
||||||
|
parser.addOption(platformNameOption);
|
||||||
|
|
||||||
parser.process(application);
|
parser.process(application);
|
||||||
|
|
||||||
// Enable debug categories
|
// Enable debug categories
|
||||||
@ -103,9 +112,13 @@ int main(int argc, char *argv[])
|
|||||||
qCDebug(dcApplication()) << "=====================================";
|
qCDebug(dcApplication()) << "=====================================";
|
||||||
qCDebug(dcApplication()) << "Starting nymea-networkmanager" << application.applicationVersion();
|
qCDebug(dcApplication()) << "Starting nymea-networkmanager" << application.applicationVersion();
|
||||||
qCDebug(dcApplication()) << "=====================================";
|
qCDebug(dcApplication()) << "=====================================";
|
||||||
|
qCDebug(dcApplication()) << "Advertising name:" << parser.value(advertiseNameOption);
|
||||||
|
qCDebug(dcApplication()) << "Platform name:" << parser.value(platformNameOption);
|
||||||
|
|
||||||
// Start core
|
// Start core
|
||||||
Core::instance();
|
Core::instance()->setAdvertiseName(parser.value(advertiseNameOption));
|
||||||
|
Core::instance()->setPlatformName(parser.value(platformNameOption));
|
||||||
|
Core::instance()->run();
|
||||||
|
|
||||||
return application.exec();
|
return application.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user