Skip to content

Commit 96faa77

Browse files
committed
Changed to conform with PR comments
1 parent 125cdee commit 96faa77

File tree

5 files changed

+22
-17
lines changed

5 files changed

+22
-17
lines changed

libraries/BLE/examples/BLE_Beacon_Scanner/BLE_Beacon_Scanner.ino

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,11 @@ class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
101101
}
102102
if (advertisedDevice.getPayloadLength() >= 22 && payLoad[22] == 0x20)
103103
{
104-
Serial.printf("Found an EddystoneTLM beacon! payload length = %d B; minus 22 = %d\n", advertisedDevice.getPayloadLength(), advertisedDevice.getPayloadLength() - 22);
104+
Serial.println("Found an EddystoneTLM beacon!");
105105
BLEEddystoneTLM eddystoneTLM;
106-
//std::string TLMframe(payLoad[22], advertisedDevice.getPayloadLength() - 22);
107-
//eddystoneTLM.setData(TLMFrame);
108106
eddystoneTLM.setData(std::string((char*)payLoad+22, advertisedDevice.getPayloadLength() - 22));
109107
Serial.printf("Reported battery voltage: %dmV\n", eddystoneTLM.getVolt());
110-
Serial.printf("Reported temperature: %.2f°C (raw data=0x%04X)\n", eddystoneTLM.getFloatTemp(), eddystoneTLM.getTemp());
108+
Serial.printf("Reported temperature: %.2f°C (raw data=0x%04X)\n", eddystoneTLM.getTemp(), eddystoneTLM.getRawTemp());
111109
Serial.printf("Reported advertise count: %d\n", eddystoneTLM.getCount());
112110
Serial.printf("Reported time since last reboot: %ds\n", eddystoneTLM.getTime());
113111
}

libraries/BLE/examples/BLE_EddystoneTLM_Beacon/BLE_EddystoneTLM_Beacon.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void setBeacon()
5151
uint16_t volt = random(2800, 3700); // 3300mV = 3.3V
5252
float tempFloat = random(-3000, 3000) / 100.0f;
5353
Serial.printf("Random temperature is %.2f°C\n", tempFloat);
54-
int temp = EDDYSTONE_TEMP_FLOAT_TO_U16(tempFloat);
54+
int temp = (int)(tempFloat * 256);
5555
Serial.printf("Converted to 8.8 format 0x%04X\n", temp);
5656

5757
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();

libraries/BLE/src/BLEAdvertising.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -443,11 +443,6 @@ void BLEAdvertisementData::setPartialServices(BLEUUID uuid) {
443443
* @brief Set the service data (UUID + data)
444444
* @param [in] uuid The UUID to set with the service data. Size of UUID will be used.
445445
* @param [in] data The data to be associated with the service data advert.
446-
* Data frame:
447-
* | Field || Len | Type | UUID | EddyStone Frame |
448-
* | Offset || 0 | 1 | 2 | 4 |
449-
* | Len || 1 | 1 | 2 | up to 20 |
450-
* | Data || ?? | ?? | 0xAA | 0xFE | ??? |
451446
*/
452447
void BLEAdvertisementData::setServiceData(BLEUUID uuid, std::string data) {
453448
char cdata[2];

libraries/BLE/src/BLEEddystoneTLM.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ uint16_t BLEEddystoneTLM::getVolt() {
4444
return ENDIAN_CHANGE_U16(m_eddystoneData.volt);
4545
} // getVolt
4646

47-
uint16_t BLEEddystoneTLM::getTemp() {
47+
float BLEEddystoneTLM::getTemp() {
48+
return EDDYSTONE_TEMP_U16_TO_FLOAT(m_eddystoneData.temp);
49+
} // getFloatTemp
50+
51+
uint16_t BLEEddystoneTLM::getRawTemp() {
4852
return ENDIAN_CHANGE_U16(m_eddystoneData.temp);
4953
} // getTemp
5054

51-
float BLEEddystoneTLM::getFloatTemp() {
52-
return EDDYSTONE_TEMP_U16_TO_FLOAT(ENDIAN_CHANGE_U16(m_eddystoneData.temp));
53-
} // getFloatTemp
54-
5555
uint32_t BLEEddystoneTLM::getCount() {
5656
return ENDIAN_CHANGE_U32(m_eddystoneData.advCount);
5757
} // getCount
@@ -115,6 +115,18 @@ std::string BLEEddystoneTLM::toString() {
115115
* Example:
116116
* uint8_t *payLoad = advertisedDevice.getPayload();
117117
* eddystoneTLM.setData(std::string((char*)payLoad+22, advertisedDevice.getPayloadLength() - 22));
118+
* Note: the offset 22 works for current implementation of example BLE_EddystoneTLM Beacon.ino, however it is not static and will be reimplemented
119+
* Data frame:
120+
* | Field || Len | Type | UUID | EddyStone TLM |
121+
* | Offset || 0 | 1 | 2 | 4 |
122+
* | Len || 1 B | 1 B | 2 B | 14 B |
123+
* | Data || ?? | ?? | 0xAA | 0xFE | ??? |
124+
*
125+
* EddyStone TLM frame:
126+
* | Field || Type | Version | Batt mV | Beacon temp | Cnt since boot | Time since boot |
127+
* | Offset || 0 | 1 | 2 | 4 | 6 | 10 |
128+
* | Len || 1 B | 1 B | 2 B | 2 B | 4 B | 4 B |
129+
* | Data || 0x20 | ?? | ?? | ?? | ?? | ?? | | | | | | | | |
118130
*/
119131
void BLEEddystoneTLM::setData(std::string data) {
120132
if (data.length() != sizeof(m_eddystoneData)) {

libraries/BLE/src/BLEEddystoneTLM.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ class BLEEddystoneTLM {
2727
BLEUUID getUUID();
2828
uint8_t getVersion();
2929
uint16_t getVolt();
30-
uint16_t getTemp();
31-
float getFloatTemp();
30+
float getTemp();
31+
uint16_t getRawTemp();
3232
uint32_t getCount();
3333
uint32_t getTime();
3434
std::string toString();

0 commit comments

Comments
 (0)