* AdvertDataHelpers: prospective changes to first byte bit-field
This commit is contained in:
@@ -8,8 +8,6 @@
|
|||||||
memcpy(&app_data[i], &_lat, 4); i += 4;
|
memcpy(&app_data[i], &_lat, 4); i += 4;
|
||||||
memcpy(&app_data[i], &_lon, 4); i += 4;
|
memcpy(&app_data[i], &_lon, 4); i += 4;
|
||||||
}
|
}
|
||||||
// TODO: BATTERY encoding
|
|
||||||
// TODO: TEMPERATURE encoding
|
|
||||||
if (_name && *_name != 0) {
|
if (_name && *_name != 0) {
|
||||||
app_data[0] |= ADV_NAME_MASK;
|
app_data[0] |= ADV_NAME_MASK;
|
||||||
const char* sp = _name;
|
const char* sp = _name;
|
||||||
@@ -31,12 +29,6 @@
|
|||||||
memcpy(&_lat, &app_data[i], 4); i += 4;
|
memcpy(&_lat, &app_data[i], 4); i += 4;
|
||||||
memcpy(&_lon, &app_data[i], 4); i += 4;
|
memcpy(&_lon, &app_data[i], 4); i += 4;
|
||||||
}
|
}
|
||||||
if (_flags & ADV_BATTERY_MASK) {
|
|
||||||
/* TODO: somewhere to store battery volts? */ i += 2;
|
|
||||||
}
|
|
||||||
if (_flags & ADV_TEMPERATURE_MASK) {
|
|
||||||
/* TODO: somewhere to store temperature? */ i += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (app_data_len >= i) {
|
if (app_data_len >= i) {
|
||||||
int nlen = 0;
|
int nlen = 0;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
//FUTURE: 4..15
|
//FUTURE: 4..15
|
||||||
|
|
||||||
#define ADV_LATLON_MASK 0x10
|
#define ADV_LATLON_MASK 0x10
|
||||||
#define ADV_BATTERY_MASK 0x20
|
#define ADV_FEAT1_MASK 0x20 // FUTURE
|
||||||
#define ADV_TEMPERATURE_MASK 0x40
|
#define ADV_FEAT2_MASK 0x40 // FUTURE
|
||||||
#define ADV_NAME_MASK 0x80
|
#define ADV_NAME_MASK 0x80
|
||||||
|
|
||||||
class AdvertDataBuilder {
|
class AdvertDataBuilder {
|
||||||
@@ -25,6 +25,9 @@ public:
|
|||||||
AdvertDataBuilder(uint8_t adv_type, const char* name, double lat, double lon) :
|
AdvertDataBuilder(uint8_t adv_type, const char* name, double lat, double lon) :
|
||||||
_type(adv_type), _name(name), _lat(lat * 1E6), _lon(lon * 1E6) { }
|
_type(adv_type), _name(name), _lat(lat * 1E6), _lon(lon * 1E6) { }
|
||||||
|
|
||||||
|
void setFeat1(bool enabled) { if (enabled) _type |= ADV_FEAT1_MASK; else _type &= ~ADV_FEAT1_MASK; }
|
||||||
|
void setFeat2(bool enabled) { if (enabled) _type |= ADV_FEAT2_MASK; else _type &= ~ADV_FEAT2_MASK; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief encode the given advertisement data.
|
* \brief encode the given advertisement data.
|
||||||
* \param app_data dest array, must be MAX_ADVERT_DATA_SIZE
|
* \param app_data dest array, must be MAX_ADVERT_DATA_SIZE
|
||||||
@@ -43,6 +46,8 @@ public:
|
|||||||
|
|
||||||
bool isValid() const { return _valid; }
|
bool isValid() const { return _valid; }
|
||||||
uint8_t getType() const { return _flags & 0x0F; }
|
uint8_t getType() const { return _flags & 0x0F; }
|
||||||
|
bool hasFeat1() const { return (_flags & ADV_FEAT1_MASK) != 0; }
|
||||||
|
bool hasFeat2() const { return (_flags & ADV_FEAT2_MASK) != 0; }
|
||||||
|
|
||||||
bool hasName() const { return _name[0] != 0; }
|
bool hasName() const { return _name[0] != 0; }
|
||||||
const char* getName() const { return _name; }
|
const char* getName() const { return _name; }
|
||||||
|
|||||||
Reference in New Issue
Block a user