Merge PR #48: Add option to enfoce the full name instead of adding the Service UUID

This commit is contained in:
Jenkins nymea 2021-04-16 23:38:02 +02:00
commit c4e1e36e48
5 changed files with 31 additions and 13 deletions

View File

@ -92,10 +92,17 @@ this repository and it will be installed to /etc/nymea-networkmanager.conf with
-h, --help Displays this help. -h, --help Displays this help.
-v, --version Displays version information. -v, --version Displays version information.
-d, --debug Enable more debug output. -d, --debug Enable more debug output.
-a, --advertise-name <NAME> The name of the bluetooth server. Default "BT -a, --advertise-name <NAME> The name of the bluetooth server. Default
WLAN setup". "BT-WiFi". NOTE: The length is limited to 8
characters.
-f, --force-name Enforce the full name to be used even if it is
longer than 8 characters. IMPORTANT: This will
displace the Service UUID in the discovery data
which implies that client applications cannot
discover the wifi setup service on this device
any more.
-p, --platform-name <NAME> The name of the platform this daemon is running. -p, --platform-name <NAME> The name of the platform this daemon is running.
Default "nymea-box". Default "nymea".
-g, --gpio <GPIO> The GPIO sysfs number for the button GPIO. This -g, --gpio <GPIO> The GPIO sysfs number for the button GPIO. This
parameter is only needed for the "button" mode. parameter is only needed for the "button" mode.
-t, --timeout <SECONDS> The timeout of the bluetooth server. Minimum -t, --timeout <SECONDS> The timeout of the bluetooth server. Minimum
@ -104,8 +111,7 @@ this repository and it will be installed to /etc/nymea-networkmanager.conf with
once, always, button, start). Default is once, always, button, start). Default is
"offline". "offline".
-b, --dbus-type <DBUSTYPE> If given, a DBus interface will be exposed on -b, --dbus-type <DBUSTYPE> If given, a DBus interface will be exposed on
the chosen DBus bus type (session, system) the chosen DBus bus type (session, system)
# Bluetooth GATT profile # Bluetooth GATT profile

2
debian/control vendored
View File

@ -10,7 +10,7 @@ Build-Depends: debhelper (>= 9.0.0),
qtbase5-dev-tools, qtbase5-dev-tools,
libqt5bluetooth5, libqt5bluetooth5,
qtconnectivity5-dev, qtconnectivity5-dev,
libnymea-networkmanager-dev (>= 0.4.0), libnymea-networkmanager-dev (>= 0.5.0),
libnymea-gpio-dev libnymea-gpio-dev
Standards-Version: 3.9.7 Standards-Version: 3.9.7

View File

@ -65,9 +65,10 @@ QString Core::advertiseName() const
return m_advertiseName; return m_advertiseName;
} }
void Core::setAdvertiseName(const QString &name) void Core::setAdvertiseName(const QString &name, bool forceFullName)
{ {
m_advertiseName = name; m_advertiseName = name;
m_forceFullName = forceFullName;
} }
QString Core::platformName() const QString Core::platformName() const
@ -207,7 +208,7 @@ void Core::startService()
m_nymeaService->enableBluetooth(false); m_nymeaService->enableBluetooth(false);
// Start the bluetooth server for this wireless device // Start the bluetooth server for this wireless device
m_bluetoothServer->setAdvertiseName(m_advertiseName); m_bluetoothServer->setAdvertiseName(m_advertiseName, m_forceFullName);
m_bluetoothServer->setModelName(m_platformName); m_bluetoothServer->setModelName(m_platformName);
m_bluetoothServer->setSoftwareVersion(VERSION_STRING); m_bluetoothServer->setSoftwareVersion(VERSION_STRING);
m_bluetoothServer->start(); m_bluetoothServer->start();

View File

@ -65,7 +65,7 @@ public:
void setMode(Mode mode); void setMode(Mode mode);
QString advertiseName() const; QString advertiseName() const;
void setAdvertiseName(const QString &name); void setAdvertiseName(const QString &name, bool forceFullName = false);
QString platformName() const; QString platformName() const;
void setPlatformName(const QString &name); void setPlatformName(const QString &name);
@ -89,6 +89,7 @@ private:
Mode m_mode = ModeOffline; Mode m_mode = ModeOffline;
QString m_advertiseName; QString m_advertiseName;
bool m_forceFullName = false;
QString m_platformName; QString m_platformName;
int m_advertisingTimeout = 60; int m_advertisingTimeout = 60;

View File

@ -93,8 +93,9 @@ int main(int argc, char *argv[])
Core::Mode mode = Core::ModeOffline; Core::Mode mode = Core::ModeOffline;
int timeout = 60; int timeout = 60;
int buttonGpio = -1; int buttonGpio = -1;
QString advertiseName = "BT WLAN setup"; QString advertiseName = "BT-WiFi";
QString platformName = "nymea-box"; bool forceFullName = false;
QString platformName = "nymea";
QString dbusBusType; QString dbusBusType;
Application application(argc, argv); Application application(argc, argv);
@ -121,10 +122,13 @@ 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", QString("The name of the bluetooth server. Default \"%1\".").arg(advertiseName), "NAME"); QCommandLineOption advertiseNameOption(QStringList() << "a" << "advertise-name", QString("The name of the bluetooth server. Default \"%1\". NOTE: The length is limited to 8 characters.").arg(advertiseName), "NAME");
advertiseNameOption.setDefaultValue(advertiseName); advertiseNameOption.setDefaultValue(advertiseName);
parser.addOption(advertiseNameOption); parser.addOption(advertiseNameOption);
QCommandLineOption forceFullNameOption(QStringList() << "f" << "force-name", QString("Enforce the full name to be used even if it is longer than 8 characters. IMPORTANT: This will displace the Service UUID in the discovery data which implies that client applications cannot discover the wifi setup service on this device any more."));
parser.addOption(forceFullNameOption);
QCommandLineOption platformNameOption(QStringList() << "p" << "platform-name", QString("The name of the platform this daemon is running. Default \"%1\".").arg(platformName), "NAME"); QCommandLineOption platformNameOption(QStringList() << "p" << "platform-name", QString("The name of the platform this daemon is running. Default \"%1\".").arg(platformName), "NAME");
platformNameOption.setDefaultValue(platformName); platformNameOption.setDefaultValue(platformName);
parser.addOption(platformNameOption); parser.addOption(platformNameOption);
@ -191,6 +195,9 @@ int main(int argc, char *argv[])
if (settings.contains("AdvertiseName")) { if (settings.contains("AdvertiseName")) {
advertiseName = settings.value("AdvertiseName").toString(); advertiseName = settings.value("AdvertiseName").toString();
} }
if (settings.contains("ForceFullName")) {
forceFullName = settings.value("ForceFullName").toBool();
}
if (settings.contains("PlatformName")) { if (settings.contains("PlatformName")) {
platformName = settings.value("PlatformName").toString(); platformName = settings.value("PlatformName").toString();
} }
@ -222,6 +229,9 @@ int main(int argc, char *argv[])
if (parser.isSet(advertiseNameOption)) { if (parser.isSet(advertiseNameOption)) {
advertiseName = parser.value(advertiseNameOption); advertiseName = parser.value(advertiseNameOption);
} }
if (parser.isSet(forceFullNameOption)) {
forceFullName = true;
}
if (parser.isSet(platformNameOption)) { if (parser.isSet(platformNameOption)) {
platformName = parser.value(platformNameOption); platformName = parser.value(platformNameOption);
} }
@ -274,7 +284,7 @@ int main(int argc, char *argv[])
Core core(&application); Core core(&application);
core.setMode(mode); core.setMode(mode);
core.setAdvertisingTimeout(timeout); core.setAdvertisingTimeout(timeout);
core.setAdvertiseName(advertiseName); core.setAdvertiseName(advertiseName, forceFullName);
core.setPlatformName(platformName); core.setPlatformName(platformName);
core.addGPioButton(buttonGpio); core.addGPioButton(buttonGpio);
if (dbusBusType == "system") { if (dbusBusType == "system") {