Skip to content

Commit

Permalink
Version 1.1.0 -- added support for AltBeacon format
Browse files Browse the repository at this point in the history
  • Loading branch information
John Murray committed Aug 8, 2014
1 parent 2579dfe commit 3c8b9a7
Show file tree
Hide file tree
Showing 12 changed files with 319 additions and 63 deletions.
1 change: 1 addition & 0 deletions wakemebybeacon/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html).
**Release History**

* **V1.0.0** - Initial release
* **V1.1.0** - Support for AltBeacon format

**Known Issues**

Expand Down
2 changes: 1 addition & 1 deletion wakemebybeacon/WakeMeByBeacon/assets/AboutSheet.qml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Sheet {
verticalAlignment: VerticalAlignment.Fill
Label {
id: lblHeading_version
text: qsTr("V2.0.0")
text: qsTr("V1.1.0")
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
}
Expand Down
26 changes: 22 additions & 4 deletions wakemebybeacon/WakeMeByBeacon/assets/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,33 @@ Page {
logMessage("Headless Service Not Running")
}
}
// void altBeaconEnteredRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &companyCode,
// const QVariant &beaconId, const QVariant &reserved, const QVariant &rssi, const QVariant &loss);

function onBeaconEnteredRange(timeStamp, macAddress, uuid, major, minor, rssi, loss) {
logMessage("Entered: UUID: " + uuid + " Major: " + major + " Minor: " + minor + " Loss: " +loss);
function onIBeaconEnteredRange(timeStamp, macAddress, uuid, major, minor, rssi, loss) {
logMessage("iBeacon entered:\n UUID: " + uuid + "\n Major: " + major + " Minor: " + minor + " Loss: " + loss);
}

function onBeaconExitedRange(timeStamp, macAddress, uuid, major, minor, rssi, loss) {
logMessage("Exited: UUID: " + uuid + " Major: " + major + " Minor: " + minor + " Loss: " +loss);
function onIBeaconExitedRange(timeStamp, macAddress, uuid, major, minor, rssi, loss) {
logMessage("iBeacon exited:\n UUID: " + uuid + "\n Major: " + major + " Minor: " + minor + " Loss: " + loss);
}

function onAltBeaconEnteredRange(timeStamp, macAddress, companyCode, companyName, beaconId, reserved, rssi, loss) {
if (companyName != "") {
logMessage("AltBeacon entered:\n ID: " + beaconId + "\n Company Name: " + companyName + " Reserved: " + reserved + " Loss: " + loss);
} else {
logMessage("AltBeacon entered:\n ID: " + beaconId + "\n Company Code: " + companyCode + " Reserved: " + reserved + " Loss: " + loss);
}
}

function onAltBeaconExitedRange(timeStamp, macAddress, companyCode, companyName, beaconId, reserved, rssi, loss) {
if (companyName != "") {
logMessage("AltBeacon exited:\n ID: " + beaconId + "\n Company Name: " + companyName + " Reserved: " + reserved + " Loss: " + loss);
} else {
logMessage("AltBeacon exited:\n ID: " + beaconId + "\n Company Code: " + companyCode + " Reserved: " + reserved + " Loss: " + loss);
}
}

// ======== Local functions ========

function logMessage(message) {
Expand Down
2 changes: 1 addition & 1 deletion wakemebybeacon/WakeMeByBeacon/bar-descriptor.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
can also be 1-part or 2-part. It is not necessary to have a 3-part value.
An updated version of application must have a versionNumber value higher
than the previous version. Required. -->
<versionNumber>1.0.0</versionNumber>
<versionNumber>1.1.0</versionNumber>

<!-- Fourth digit segment of the package version. First three segments are
taken from the <versionNumber> element. Must be an integer from 0 to 2^16-1 -->
Expand Down
Binary file not shown.
Binary file not shown.
101 changes: 82 additions & 19 deletions wakemebybeacon/WakeMeByBeacon/src/applicationui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,17 @@ ApplicationUI::ApplicationUI()
QObject::connect( this, SIGNAL(startedStateChanged(QVariant)),
_mainPage, SLOT(onStartedStateChanged(QVariant)));

QObject::connect( this, SIGNAL(beaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onBeaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));
QObject::connect( this, SIGNAL(iBeaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onIBeaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));

QObject::connect( this, SIGNAL(beaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onBeaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));
QObject::connect( this, SIGNAL(iBeaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onIBeaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));

QObject::connect( this, SIGNAL(altBeaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onAltBeaconEnteredRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));

QObject::connect( this, SIGNAL(altBeaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)),
_mainPage, SLOT(onAltBeaconExitedRange(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)));

// ============== Hook up signals from QML

Expand Down Expand Up @@ -127,39 +133,86 @@ void ApplicationUI::handleBeaconEvent(const QVariantMap &payload)
{
QString type = payload["TYPE"].toString();

qDebug() << "XXXX Handling BEacon Event: " << type << endl;
qDebug() << "XXXX Handling Beacon Event: " << type << endl;

bool beaconEnterEvent = (type.compare("BEACON-ENTER-RANGE") == 0);
bool beaconExitEvent = (type.compare("BEACON-EXIT-RANGE") == 0);

if ( beaconEnterEvent || beaconExitEvent) {

// Common Beacon attributes
QString beaconClass = qvariant_cast<QString>(payload["CLASS"]);
QDateTime timeStamp = qvariant_cast<QDateTime>(payload["TIME"]);
QString macAddress = qvariant_cast<QString>(payload["MAC"]);
QString uuid = qvariant_cast<QString>(payload["UUID"]);
int major = qvariant_cast<int>(payload["MAJOR"]);
int minor = qvariant_cast<int>(payload["MINOR"]);
int rssi = qvariant_cast<int>(payload["RSSI"]);
int loss = qvariant_cast<int>(payload["LOSS"]);

bool isIBeacon = (beaconClass.compare("IBEACON") == 0);
bool isAltBeacon = (beaconClass.compare("ALTBEACON") == 0);

// iBeacon specific attributes
QString uuid = "";
int major = 0;
int minor = 0;

// AltBeacon specific attributes
QString beaconId = "";
QString companyName = "";
int companyCode = 0;
int reserved = 0;

qDebug() << "XXXX TimeStamp: " << timeStamp << endl;
qDebug() << "XXXX Event: " << type << endl;
qDebug() << "XXXX macAddress: " << macAddress << endl;
qDebug() << "XXXX uuid: " << uuid << endl;
qDebug() << "XXXX major: " << major << endl;
qDebug() << "XXXX minor: " << minor << endl;

if (isIBeacon) {

uuid = qvariant_cast<QString>(payload["UUID"]);
major = qvariant_cast<int>(payload["MAJOR"]);
minor = qvariant_cast<int>(payload["MINOR"]);

qDebug() << "XXXX uuid: " << uuid << endl;
qDebug() << "XXXX major: " << major << endl;
qDebug() << "XXXX minor: " << minor << endl;

} else if(isAltBeacon) {

companyCode = qvariant_cast<int>(payload["COMPANY"]);
companyName = qvariant_cast<QString>(payload["COMPANYNAME"]);
beaconId = qvariant_cast<QString>(payload["ID"]);
reserved = qvariant_cast<int>(payload["RESV"]);

qDebug() << "XXXX companyCode: " << companyCode << endl;
qDebug() << "XXXX companyName: " << companyName << endl;
qDebug() << "XXXX beaconId: " << beaconId << endl;
qDebug() << "XXXX reserved: " << reserved << endl;

} else {
qDebug() << "XXXX Unrecognised Beacon Specification" << endl;
}

qDebug() << "XXXX rssi: " << rssi << endl;
qDebug() << "XXXX loss: " << loss << endl;
qDebug() << "XXXX major: " << major << endl;

if (beaconEnterEvent && monitoringUuid(uuid, major, minor)) {
qDebug() << "XXXX Emiting beaconEnteredRange signal" << endl;
emit beaconEnteredRange(timeStamp, macAddress, uuid, major, minor, rssi, loss);
if (beaconEnterEvent) {
if (isIBeacon && monitoringUuid(uuid, major, minor)) {
qDebug() << "XXXX - iBeacon - Emiting beaconEnteredRange signal" << endl;
emit iBeaconEnteredRange(timeStamp, macAddress, uuid, major, minor, rssi, loss);
}
if (isAltBeacon && monitoringAltBeacon(companyCode, beaconId, reserved)) {
qDebug() << "XXXX - AltBeacon - Emiting beaconEnteredRange signal" << endl;
emit altBeaconEnteredRange(timeStamp, macAddress, companyCode, companyName, beaconId, reserved, rssi, loss);
}
}

if (beaconExitEvent && monitoringUuid(uuid, major, minor)) {
qDebug() << "XXXX Emiting beaconExitedRange signal" << endl;
emit beaconExitedRange(timeStamp, macAddress, uuid, major, minor, rssi, loss);
if (beaconExitEvent) {
if (isIBeacon && monitoringUuid(uuid, major, minor)) {
qDebug() << "XXXX - iBeacon - Emiting beaconExitedRange signal" << endl;
emit iBeaconExitedRange(timeStamp, macAddress, uuid, major, minor, rssi, loss);
}
if (isAltBeacon && monitoringAltBeacon(companyCode, beaconId, reserved)) {
qDebug() << "XXXX - AltBeacon - Emiting beaconExitedRange signal" << endl;
emit altBeaconExitedRange(timeStamp, macAddress, companyCode, companyName, beaconId, reserved, rssi, loss);
}
}
}
}
Expand All @@ -172,6 +225,16 @@ bool ApplicationUI::monitoringUuid(const QString & uuid, int major, int minor)

return true;
}

bool ApplicationUI::monitoringAltBeacon(int companyCode, const QString & beaconId, int reserved)
{
Q_UNUSED(companyCode);
Q_UNUSED(beaconId);
Q_UNUSED(reserved);

return true;
}

void ApplicationUI::onSystemLanguageChanged()
{
QCoreApplication::instance()->removeTranslator(_translator);
Expand Down
9 changes: 7 additions & 2 deletions wakemebybeacon/WakeMeByBeacon/src/applicationui.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,14 @@ class ApplicationUI: public QObject
void message(const QVariant &text);
void scanStateChanged(const QVariant &state);
void startedStateChanged(const QVariant &state);
void beaconEnteredRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &uuid,
void iBeaconEnteredRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &uuid,
const QVariant &major, const QVariant &minor, const QVariant &rssi, const QVariant &loss);
void beaconExitedRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &uuid,
void iBeaconExitedRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &uuid,
const QVariant &major, const QVariant &minor, const QVariant &rssi, const QVariant &loss);
void altBeaconEnteredRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &companyCode, const QVariant &companyName,
const QVariant &beaconId, const QVariant &reserved, const QVariant &rssi, const QVariant &loss);
void altBeaconExitedRange(const QVariant &timeStamp, const QVariant &macAddress, const QVariant &companyCode, const QVariant &companyName,
const QVariant &beaconId, const QVariant &reserved, const QVariant &rssi, const QVariant &loss);

private slots:
void onSystemLanguageChanged();
Expand Down Expand Up @@ -88,6 +92,7 @@ private slots:
void triggerRetryConnection();
void handleBeaconEvent(const QVariantMap &payload);
bool monitoringUuid(const QString & uuid, int major, int minor);
bool monitoringAltBeacon(int companyCode, const QString & beaconId, int reserved);

QTranslator *_translator;
bb::cascades::LocaleHandler *_localeHandler;
Expand Down
6 changes: 3 additions & 3 deletions wakemebybeacon/WakeMeByBeacon/translations/WakeMeByBeacon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</message>
<message>
<location filename="../assets/AboutSheet.qml" line="84"/>
<source>V2.0.0</source>
<source>V1.1.0</source>
<translation type="unfinished"></translation>
</message>
<message>
Expand All @@ -32,13 +32,13 @@
<context>
<name>main</name>
<message>
<location filename="../assets/main.qml" line="97"/>
<location filename="../assets/main.qml" line="115"/>
<source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../assets/main.qml" line="108"/>
<location filename="../assets/main.qml" line="126"/>
<source>Wake Me By Beacon</source>
<translation type="unfinished"></translation>
</message>
Expand Down
Loading

0 comments on commit 3c8b9a7

Please sign in to comment.