BlueBeacon Configuration GATT firmware v.6.x
The following guide describes in detail the Configuration GATT related to the BlueBeacon beacons.
BlueUp Advertising Packet
Byte Index | BLE Advertisement | Value |
---|---|---|
0 | AD_LEN | 2 |
1 | AD_TYPE_FLAGS | 0x01 |
2 | FLAGS | 0x06 |
3 | AD_LEN | 4 |
4 | AD_TYPE_SERVICE_DATA | 0x16 |
5 | SERVICE_UUID [BATTERY_SERVICE] | 0x0F |
6 | 0x18 | |
7 | BATTERY_LEVEL | - |
8 | AD_LEN | 4 |
9 | AD_TYPE_SERVICE_DATA | 0x16 |
10 | SERVICE_UUID [BLUEUP_SERVICE] | 0x00 |
11 | 0x88 | |
12 | BLUEUP_FLAGS | - (see BlueUp proprietary flags) |
13 | AD_LEN | 17 |
14 | AD_TYPE_COMPLETE_NAME | 0x09 |
15 | BlueUp-[MN]-[SN] | 0x42 [ASCII: ‘B’] |
16 | 0x6C [ASCII: ‘l’] | |
17 | 0x75 [ASCII: ‘u’] | |
18 | 0x65 [ASCII: ‘e’] | |
19 | 0x55 [ASCII: ‘U’] | |
20 | 0x70 [ASCII: ‘p’] | |
21 | 0x2D [ASCII: ‘-’] | |
22 | - (see Model Number) | |
23 | - (see Model Number) | |
24 | 0x2D [ASCII: ‘-’] | |
25 | - (Serial Number: digit 1) | |
26 | - (Serial Number: digit 2) | |
27 | - (Serial Number: digit 3) | |
28 | - (Serial Number: digit 4) | |
29 | - (Serial Number: digit 5) | |
30 | - (Serial Number: digit 6) |
BlueUp proprietary flags
Bit | Flag value |
---|---|
7 [MSB] | ALARM_ACTIVE |
6 | ALARM_SUPPORTED |
5 | RFU |
4 | SAFETY_FRAME_ACTIVE |
3 | SENSOR_FRAME_ACTIVE |
2 | QUUPPA_FRAME_ACTIVE |
1 | IBEACON_FRAME_ACTIVE |
0 [LSB] | EDDYSTONE_FRAME_ACTIVE |
Model Number
Model Name | Model Number |
---|---|
MINI | 01 |
MAXI | 02 |
USB | 03 |
FORTE/FORTE+ | 04 |
TAG | 05 |
BOARD | 06 |
CARD | 08 |
BADGE-HOLDER | 08 |
ULTRA | 09 |
SAFEX/SAFEX-LITE | 10 |
BANGLE | 11 |
BRICK | 12 |
TAGX | 20 |
BlueUp Configuration Service
As for the Firmware v.5.x, the BlueBeacon implements the BlueUp Configuration Service.
The Configuration Service is based on the Eddystone Configuration GATT Service with some custom characteristics described below.
BlueUp Configuration Service |
---|
A3C88800-8ED3-4BDF-8A39-A01BEBEDE295 |
Firmware v.6.x implements an enlarged subset of the characteristics that are implemented in v.5.x.
The implemented characteristics of the BlueUp Configuration Service are the following:
Characteristic UUID | Characteristic Short Name | Characteristic Description |
---|---|---|
8801 | Firmware Command (v6.2) | Sending custom commands |
8802 | Current Time | Beacon clock configuration |
8803 | Clock Advertising (Start Time) | Start Advertising time configuration |
8804 | Clock Advertising (End Time) | End Advertising time configuration |
8805 | Anonymous Mode | Anonymous mode configuration |
8806 | Accelerometer Configuration | Accelerometer features configuration |
8807 | Active Slot | Selection of the Slot to be configured |
8808 | Advertising Interval | Slot Advertising interval configuration |
8809 | Radio Tx Power | Slot Transmission Power configuration |
880A | Advertised Tx Power | Slot Calibrated Transmission Power configuration |
880B | RW Adv Slot Data | BlueUp proprietary slot configuration |
880C | Button Configuration | Button features configuration |
880D | GPIO Configuration | Beacon I/O configuration and drive |
880E | Alarm Configuration | Alarm configuration and Alarm trigger on the beacon |
880F | Hardware Capabilities | Report of the hardware characteristics |
Firmware Command (0x8801)
Features used to send custom commands/data to the beacon.
Size (Byte) | Range | Format |
---|---|---|
Variable [1-16] | N/A | [Command_ID, Command_Data] |
As for the Firmware v.6.2, the supported commands are:
Command | Command Data | Description |
---|---|---|
FW_COMMAND_REBOOT_DFU (0xF1) | None | |
FW_COMMAND_SCD41_PERFORM_FRC (0xF4) | UINT16-BE | Command to perform the Forced Calibration of the SCD41 sensor (if present). The UINT16-BE value passed as a parameter corresponds to the CO2 target. |
FW_COMMAND_SCD41_STATUS (0xF5) | None | Command to read the status of the SCD41 sensor (if present). Status is sent via notification on this same feature. |
FW_COMMAND_SD_PARAMS (0xF6) | None [READ SD_PARAMS] | Command to read the advertising parameters of SD. The parameters are sent as a notification on this same feature. The data sent on the notification is as follows: [0]: FW_COMMAND_SD_PARAMS (0xF6)[1]: SD_ADV_TX_POWER [2,3] : SD_ADV_INTERVAL (UINT16-BE) |
1 byte (TX_POWER) + 2 bytes UINT16-BE (ADV_INTRVL) [WRITE SD_PARAMS] | SD advertising parameter configuration command. The write command must have the following format: [0]: FW_COMMAND_SD_PARAMS (0xF6)[1]: SD_ADV_TX_POWER [2,3] : SD_ADV_INTERVAL (UINT16-BE)The configured parameters will be reported via notification on this same feature in the same format used for the READ_SD_PARAMS command. |
Current Time (0x8802)
Configures the current time of the beacons internal system.
The current time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].
Size (Byte) | Range | Format |
---|---|---|
4 | [0, 86399] | Little-Endian |
Clock Advertising – Start Time (0x8803)
Configures the start time of the advertising procedure.
The start time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].
Size (Byte) | Range | Format |
---|---|---|
4 | [0, 86399] | Little-Endian |
Clock Advertising – End Time (0x8804)
Configures the end time of the advertising procedure.
The end time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].
Size (Byte) | Range | Format |
---|---|---|
4 | [0, 86399] | Little-Endian |
Anonymous Mode (0x8805)
Configures the operation in Anonymous mode. When configured to operate in Anonymous mode, the firmware stops sending BlueUp proprietary packet. In Anonymous mode the beacon behaves as a pure beacon, without transmitting any proprietary information. However, in Anonymous mode the beacon will no longer be connectable or visible through the BlueBeacon Manager app. Therefore, a reconfiguration of the beacon has to be performed after a hard-reset of the device.
Size (Byte) | Range | Format |
---|---|---|
1 | N/A | N/A |
Accelerometer Configuration (0x8806)
Configures the beacons accelerometer functionalities. All the BlueUp beacons, even those that do not have the accelerometer, implement 8806 accelerometer configuration characteristic. When reading, the possible values of the characteristic are the following:
Value | Accelerometer Functionality |
---|---|
0x0F | Accelerometer not mounted |
0x00 | Accelerometer disabled |
0x01 | Horizontal-To-Sleep |
0x02 | Horizontal-To-Unset |
0x03 | Advertising-On-Shake |
0x04 | Advertising-On-Move (High-Sense) |
0x05 | Advertising-On-Move (Mid-Sense) |
0x06 | Advertising-On-Move (Low-Sense) |
0x07 | Continuous Sampling |
In BlueBeacon beacons with firmware v.5.x, but without the accelerometer, the reading of the 8806 characteristic returned the value 0x00 (disabled). This behavior was not flexible enough (some beacons could be assembled with or without the accelerometer), for this reason for beacons having firmware v.6.x, if the beacon does not have the accelerometer, the 8806 characteristic returns the value 0x0F (not mounted).
When writing, 0x0F value is not allowed, therefore when trying to write this value on the characteristic, the WRITE_NOT_PERMITTED error will be returned.
In firmware v6.0 and v6.1 the accelerometer was configured using a single byte (called ACCEL_MODE), however, starting from firmware v6.2, the 8806 feature has been made variable length and the following modes have been added:
Value | Accelerometer Functionality |
---|---|
0x11 | Position Detection |
0x12 | Motion Detection |
0x13 | FreeFall Detection |
0x14 | Continuous Sampling v2 |
These modes (which have the most significant NIB set to a value of 1), are operating modes that require the configuration of additional parameters.
The accelerometer configuration parameters are encoded on an array of up to 8 bytes, as follows:
Index | Parameter |
---|---|
0 | Accelerometer Scale 0: ±2G 1: ±4G 2: ±8G 3: ±16G |
1 | Accelerometer ODR 0: PowerDown 1: 1Hz 2: 10Hz3: 25Hz 3: 50Hz 4: 100Hz 5: 200Hz 6: 400Hz |
2 | Accelerometer Axis (1 « 0): Enable X axis (1 « 1): Enable Y axis (1 « 2): Enable Z axis |
3 | Accelerometer ACT_THS Activity threshold on INT2, range [0 - 127] |
4 | Accelerometer ACT_DURActivity duration threshold, range [0 - 255] |
5 | Accelerometer FreeFall_THS FreeFall threshold on INT1, range [0 - 127] |
6 | Accelerometer FreeFall_DUR FreeFall duration threshold on INT1, range [0 - 255] |
7 | Accelerometer FreeFall TimeoutsMSN (Most Significant NIB): FreeFall Debounce Time (s)LSN (Least Significant NIB): FreeFall Delay Time (s) |
Not all new modes require configuration of all parameters, the parameters that require configuration for each mode are the following:
Value | Accelerometer functionality | Parameters |
---|---|---|
0x11 | Position Detection | - Scale - ODR- Axis- ACT_THS- ACT_DUR |
0x12 | Motion Detection | - Scale - ODR- Axis- ACT_THS- ACT_DUR |
0x13 | FreeFall Detection | - Scale - ODR- Axis- ACT_THS- ACT_DUR- FF_THS- FF_DUR- FF_TIMERS |
0x14 | Continuous Sampling v2 | - Scale - ODR- Axis |
If e.g., you want to configure the accelerometer in Motion Detection mode with Scale = ±2G, ODR = 10Hz, Axis = XYZ, Activity Threshold = 25, Activity Duration = 5, you will have to write the following array on characteristic 8806:
- [0] : 0x12 (Movement Detection)
- [1] : 0x00 (Scale = ±2G)
- [2] : 0x02 (ODR = 10Hz)
- [3] : 0x07 (Axis = XYZ)
- [4] : 0x19 (ACT_THS = 25)
- [5] : 0x05 (ACT_DUR = 5)
Size (Byte) | Range | Format |
---|---|---|
[1, 9] | N/A | N/A |
Active Slot (0x8807)
As for Eddystone Configuration Service, selects the slot to configure.
Size (Byte) | Range | Format |
---|---|---|
1 | [0, 3] | N/A |
Advertising Interval (0x8808)
As for Eddystone Configuration Service, configures the advertising interval for the selected slot.
Size (Byte) | Range | Format |
---|---|---|
1 | [100, 5000] | Big-Endian |
Radio Tx Power (0x8809)
As for Eddystone Configuration Service, configures the advertising power for the selected slot.
Size (Byte) | Range | Format |
---|---|---|
1 | Possible values [-40, -20, -16, -12, -8, -4, 0, 4] | N/A |
Advertised Tx Power (0x880A)
As for Eddystone Configuration Service, configures the calibrated power for the selected slot. The -128 (0x80) value represents the default value (AUTO) using which the firmware performs the auto-tuning of the calibrated power, based on the Transmitted power and on the factory calibrated power.
Size (Byte) | Range | Format |
---|---|---|
1 | [-127, 127] | N/A |
RW Adv Slot Data (0x880B)
As for Eddystone Configuration Service, configures data related to the selected slot. The BlueUp proprietary slots are:
- iBeacon
- Quuppa
- Sensor
- Safety (starting from FW v.6.2)
iBeacon Slot
Reading iBeacon slot:
Index | Value | Size | Format |
---|---|---|---|
0 | iBeacon Frame Type (0xC0) | 1 | N/A |
1-2 | iBeacon Beacon Type | 2 | N/A |
3-18 | iBeacon UUID | 16 | N/A |
19-20 | iBeacon Major | 2 | Big-Endian |
21-22 | iBeacon Minor | 2 | Big-Endian |
23 | iBeacon Calibrated RSSI | 1 | N/A |
Writing iBeacon slot:
Index | Value | Size | Format |
---|---|---|---|
0 | iBeacon Frame Type (0xC0) | 1 | N/A |
1-16 | iBeacon UUID | 16 | N/A |
17-18 | iBeacon Major | 2 | Big-Endian |
19-20 | iBeacon Minor | 2 | Big-Endian |
Quuppa Slot
Reading Quuppa slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Quuppa Frame Type (0xC0) | 1 | N/A |
1 | Quuppa Packet ID | 1 | N/A |
2 | Quuppa Device Type | 1 | N/A |
3 | Quuppa Header | 1 | N/A |
4-9 | Quuppa Tag ID | 6 | N/A |
10 | Quuppa CRC | 1 | N/A |
11-.. | Quuppa DF Field | 14 | N/A |
Writing Quuppa slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Quuppa Frame Type (0xC0) | 1 | N/A |
1 | Quuppa Header | 1 | N/A |
2-7 | Quuppa Tag ID | 6 | N/A |
If Quuppa Header has TAG_ID_TYPE set to:
- TAG_ID_TYPE_NOT_USED: the firmware will overwrite Quuppa Tag ID with 0x00 array;
- TAG_ID_TYPE_SW: Quuppa Tag ID will be configured according to [2, 7] bytes;
- TAG_ID_TYPE_MAC: the firmware will overwrite Quuppa Tag ID with the MAC Address of the SoC;
- TAG_ID_TYPE_RFU: the firmware will overwrite Quuppa Tag ID with 0x00 array.
Sensor Slot V1
Reading Sensor slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Sensor Frame Type (0xC2) | 1 | N/A |
1-2 | Temperature UUID | 2 | Little-Endian |
2-3 | Temperature | 2 | Little-Endian (signed) |
4-5 | Humidity UUID | 2 | Little-Endian |
6-7 | Humidity (unsigned) | 2 | Little-Endian |
8-9 | Pressure UUID | 2 | Little-Endian (unsigned) |
10-13 | Pressure | 4 | Little-Endian |
14-15 | Accelerometer UUID | 2 | Little-Endian |
16-17 | Accelerometer X | 2 | Little-Endian (signed) |
18-19 | Accelerometer Y | 2 | Little-Endian (signed) |
20-21 | Accelerometer Z | 2 | Little-Endian (signed) |
Writing Sensor slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Sensor Frame Type (0xC2) | 1 | N/A |
Sensor Slot V2
Reading Sensor slot V2:
Index | Value | Size | Format |
---|---|---|---|
0 | Sensor Frame Type (0xC2) | 1 | N/A |
1 | Sensor Frame Version (0x02) | 1 | N/A |
2-3 | Sensor Measure Interval | 2 | Big-Endian (unsigned) |
Writing Sensor slot V2:
Index | Value | Size | Format |
---|---|---|---|
0 | Sensor Frame Type (0xC2) | 1 | N/A |
1 | Sensor Frame Version (0x02) | 1 | N/A |
2-3 | Sensor Measure Interval | 2 | Big-Endian (unsigned) |
Safety Slot
Reading / Writing Safety slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Safety Frame Type (0xC3) | 1 | N/A |
1-16 | Safety UUID | 1 | N/A |
17-18 | Safety Major | 1 | Big-Endian |
19 | Safety Triggers | 1 | N/A |
20 | Safety Advertising Params | 1 | N/A |
21 | Safety Triggers Duration | 1 | N/A |
22 | Safety Movement ACT_THS | 1 | N/A |
23 | Safety Movement ACT_DUR | 1 | N/A |
24 | Safety FreeFall THS | 1 | N/A |
25 | Safety FreeFall DUR | 1 | N/A |
26 | Safety FreeFall TIMES | 1 | N/A |
Safety Triggers
Encodes a bitmask of the possible triggers that the beacon is able to manage.
BIT 7- BIT 6 - BIT 5 - BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
---|---|---|---|---|
RFU | AccelerometerFreeFall | AccelerometerMovement | ButtonLongPress | ButtonShortPress |
Safety Advertising Params
Encodes the advertising parameters for the case when the beacon detects one or more triggers.
BIT 7- BIT 6 - BIT 5 - BIT 4 - BIT 3 | BIT 2 - BIT 1 - BIT 0 |
---|---|
Triggered Advertising Interval | Triggered Radio Tx Power |
Triggered Advertising Interval
Is the Advertising Interval configured on the beacon when one of the enabled triggers is detected. This interval is encoded on 5 bits, with [0, 15] range, and represents the index of the Advertising interval inside the array of possible Advertising Intervals:
[100ms, 150ms, 200ms, 250ms, 300ms, 400ms, 500ms, 600ms, 700ms, 800ms, 900ms, 1s]
Triggered Radio Tx Power
Is the Radio TX Power configured on the beacon when one of the enabled triggers is detected. This TX Power is encoded on 4 bits, with [0, 7] range, and represents the index of the TX Power inside the array of possible Radio TX Powers:
[-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, 4dBm]
Safety Triggers Duration
It is the minimum duration in seconds for each trigger (in the Safety advertising packet), range [1, 255].
Safety Movement ACT_THS
It is the activation threshold for the movement trigger, range [0, 127].
Safety Movement ACT_DUR
Represents the duration of the movement under the ACT_THR threshold to interrupt the movement trigger on the beacon. The range is [1, 255], but it is set to 1 in the configurations app, and is used Trigger Duration to interrupt the movement trigger from the advertising packet.
Safety FreeFall THS
Represents the activation threshold for the freefall trigger, range [0 127].
Safety FreeFall DUR
Represents the duration of the trigger under the Freefall Threshold, range [0, 255].
Safety FreeFall TIMES
Encodes the timing parameters for the FreeFall Detection algorithm.
BIT 7- BIT 6 - BIT 5 - BIT 4 | BIT 3 - BIT 2 - BIT 1 - BIT 0 |
---|---|
FreeFall Debounce Time | FreeFall Delay Time |
FreeFall Debounce Time
Represents the debounce time in seconds in the FreeFall Detection algorithm.
FreeFall Delay Time
Represents the delay time in seconds in the FreeFall Detection algorithm.
Notes:
The configuration of the Safety slot disables automatically all the other configured slots on the beacon (both Eddystone and BlueUp proprietary), because the Safety slot cannot be used combined with the others. The writing of the slot automatically configures the accelerometer. If the triggers that use accelerometer are enabled, the firmware automatically configures the accelerometer in Movement Detection or Freefall Detection mode, based on the enabled triggers. In both Movement and FreeFall Detection modes the accelerometer is configured using the following parameters:
- Scale: ±2G
- ODR: 25Hz
- Axis: XYZ
When using the Safety slot, the beacon advertises iBeacon frames, in which the two bytes of the Minor Number are used in a custom manner by the firmware to transmit the following data:
15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
BATT | RFU | RFU | RFU | RFU | FF | MV | BL | BS |
The upper byte of the Minor Number contains a representation of the voltage value (in mV) of the battery. The voltage value is obtained as:
The lower byte of the Minor Number contains a series of flags that represent the triggers detected by the beacon:
- BS: trigger caused by (short) pressing of the button
- BL: trigger caused by (long) pressing the button
- MV: trigger caused by beacon movement
- FF: trigger caused by a beacon FreeFall event
- RFU: Reserved for Future Use
Example Minor Number = 33028 = 0x8104
15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
0x81 (129) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Battery Level: $$mV = (129 \cdot 10) + 1700 = 2990$$
Triggers:
- BS = 0
- BL = 0
- MV = 1
- FF = 0
iBeacon/Battery Slot
The iBeacon/Battery slot is identical to an iBeacon slot, except that he firmware replaces the MSB byte of the Minor Number with the coded battery level as in the case of the Safety slot:
$$mV = (BATT \cdot 10) + 1700$$
Reading iBeacon/Battery slot:
Index | Value | Size | Format |
---|---|---|---|
0 | iBeacon Frame Type (0xC4) | 1 | N/A |
1-2 | iBeacon Beacon Type | 2 | N/A |
3-18 | iBeacon UUID | 16 | N/A |
19-20 | iBeacon Major | 2 | Big-Endian |
21-22 | iBeacon Minor | 2 | Big-Endian |
23 | iBeacon Calibrated RSSI | 1 | N/A |
Writing iBeacon/Battery slot:
Index | Value | Size | Format |
---|---|---|---|
0 | iBeacon Frame Type (0xC4) | 1 | N/A |
1-16 | iBeacon UUID | 16 | N/A |
17-18 | iBeacon Major | 2 | Big-Endian |
19-20 | iBeacon Minor | 2 | Big-Endian |
Safety Slot V2
Reading / Writing Safety slot:
Index | Value | Size | Format |
---|---|---|---|
0 | Safety Frame Type (0xC5) | 1 | N/A |
1 | Safety Frame Version | 1 | N/A |
2-17 | Safety UUID | 2 | N/A |
18-19 | Safety Major | 2 | Big-Endian |
20 | Safety Flags 1 | 1 | N/A |
21 | Safety Flags 2 | 1 | N/A |
22 | Safety Advertising Params | 1 | N/A |
23 | Safety Triggers Duration | 1 | N/A |
24 | Safety Movement Threshold | 1 | N/A |
25 | Safety Movement Duration | 1 | N/A |
26 | Safety AdvancedAccel Param1 | 1 | N/A |
27 | Safety AdvancedAccel Param2 | 1 | N/A |
[] | ... | ||
N-2 | Safety Mandown Debounce sec. | 1 | N/A |
N-1 | Safety Mandown Stationary sec. | 1 | N/A |
N | Safety Mandown Alert sec. | 1 | N/A |
Safety Flags 1
Encodes the bitmask of possible triggers that the beacon is able to manage.
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
---|---|---|---|---|---|---|---|
Accelerometer Mandown | Accelerometer Shock | Accelerometer Position | Accelerometer FreeFall | Accelerometer Movement | Button LongPress | Button ShortPress |
Note: Shock, Position and FreeFall can be enabled only one at a time.
Safety Advertising Params
Encodes the advertising parameters for the case when the beacon detects one or more triggers.
BIT 7- BIT 6 - BIT 5 - BIT 4 - BIT 3 | BIT 2 - BIT 1 - BIT 0 |
---|---|
Triggered Advertising Interval | Triggered Radio Tx Power |
Triggered Advertising Interval
Is the Advertising Interval configured on the beacon when one of the enabled triggers is detected. This interval is encoded on 5 bits, with [0, 15] range, and represents the index of the Advertising interval inside the array of possible Advertising Intervals:
[100ms, 150ms, 200ms, 250ms, 300ms, 400ms, 500ms, 600ms, 700ms, 800ms, 900ms, 1s]
Triggered Radio Tx Power
Is the Radio TX Power configured on the beacon when one of the enabled triggers is detected. This TX Power is encoded on 4 bits, with [0, 7] range, and represents the index of the TX Power inside the array of possible Radio TX Powers:
[-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, 4dBm]
Safety Triggers Duration
Is the minimum duration in seconds for each trigger (in the Safety advertising packet), range [1, 255].
Safety Movement Threshold
Is the threshold for the movement trigger activation, range [0, 127].
Safety Movement Duration
Represents the duration of the movement such to be detected as movement. The range is [0, 255]. When set to 0 the movement or stationarity is updated immediately. While when MOV_DOR us grater that 0 the movement or stationarity is updated after the device is moving or still for MOV_DUR time.
Safety Position Angle
represents the activation threshold in degrees for the position trigger, range [1, 90].
Safety Position Duration
Represents the duration of the time spent in a position, range [0, 255]. If set to 0 the position change is updated immediately, while when set greater than 0 the position change is updated after the device remains in that position for the configured time duration.
Safety FreeFall Height (cm)
Represents the minimum height that allows to detect the freefall event in cm, range [50, 255].
Safety FreeFall Sensitivity
Configures the sensitivity of detection of the FreeFall event, range [1, 10]. The freefall event is classified as such when there are a certain number of accelerometer samples that have (x,y,z) simultaneously very close to 0. The number of samples is calculated based on the fall height, while the band/threshold around 0 is determined based on the sensitivity parameter.
$$FF THR_{mg} = sensitivity \cdot 50 $$ $$FF THR_{units} = FF THR_{mg} / 16 $$ $$FFTIME_{sec} = \sqrt{2 \cdot h \cdot G}=\sqrt{2\cdot \dfrac{h_{cm}}{100} \cdot G}$$ $$FF TIME_{units} = \lfloor FF TIME_{sec} \cdot 25 \rfloor -1$$
Safety Shock Intensity
Represents the shock event threshold, range [1, 10], where 1 is a light shock and 10 is very violent shock.
$$SHOCK THR_{mg} = 1500 + intensity \cdot 50 $$ $$SHOCK THR_{units} = SHOCK THR_{mg} / 16 $$
Safety FreeFall TIMES
Encodes the timing parameters for the FreeFall Detection algorithm.
BIT 7- BIT 6 - BIT 5 - BIT 4 | BIT 3 - BIT 2 - BIT 1 - BIT 0 |
---|---|
FreeFall Debounce Time | FreeFall Delay Time |
FreeFall Debounce Time
Represents the debounce time in seconds in the FreeFall Detection algorithm.
FreeFall Delay Time
Represents the delay time in seconds in the FreeFall Detection algorithm.
Notes:
The configuration of the Safety slot disables automatically all the other configured slots on the beacon (both Eddystone and BlueUp proprietary), because the Safety slot cannot be used combined with the others. The writing of the slot automatically configures the accelerometer. If the triggers that use accelerometer are enabled, the firmware automatically configures the accelerometer in Movement Detection or Freefall Detection mode, based on the enabled triggers. In both Movement and FreeFall Detection modes the accelerometer is configured using the following parameters:
- Scale: ±2G
- ODR: 25Hz
- Axis: XYZ
When using the Safety slot, the beacon advertises iBeacon frames, in which the two bytes of the Minor Number are used in a custom manner by the firmware to transmit the following data:
15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
BATT | RFU | RFU | RFU | RFU | FF | MV | BL | BS |
The upper byte of the Minor Number contains a representation of the voltage value (in mV) of the battery. The voltage value is obtained as:
$$mV = (BATT \cdot 10) + 1700$$
The lower byte of the Minor Number contains a series of flags that represent the triggers detected by the beacon:
- BS: trigger caused by (short) pressing of the button
- BL: trigger caused by (long) pressing the button
- MV: trigger caused by beacon movement
- FF: trigger caused by a beacon FreeFall event
- RFU: Reserved for Future Use
Example Minor Number = 33028 = 0x8104
15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
0x81 (129) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Battery Level: $$mV = (129 \cdot 10) + 1700 = 2990$$
Triggers:
- BS = 0
- BL = 0
- MV = 1
- FF = 0
Button Configuration (0x880C)
Configures the button functionalities of the beacon (only one button managed).
Size (Byte) | Range | Format |
---|---|---|
1 | N/A | N/A |
The button configuration is divided in :
- Short-Press Configuration
- Long-Press Configuration
At present, the following button functionalities are implemented:
- Disabled
- Reboot The beacon reboots the firmware.
- Factory Reset The beacon clears the flash memory, restoring the factory configuration.
- Advertising Toggle (On/Off) The beacon enables or interrupts the BLE advertising.
- Advertising on Push (from FW v.6.11) The Advertising is enabled when the button is kept pushed.
- Advertising 5 seconds (from FW v.6.11) The beacon enables advertising for 5 seconds.
- Advertising 10 seconds (from FW v.6.11) The beacon enables advertising for 10 seconds.
- Advertising 30 seconds (from FW v.6.11) The beacon enables advertising for 30 seconds.
The format of the characteristic is:
BIT 7 - BIT 6 - BIT 5 - BIT 4 | BIT 3 - BIT 2 - BIT 1 - BIT 0 |
---|---|
Long-Press Configuration | Short-Press Configuration |
Possible values:
Functionality | Value |
---|---|
Disabled | 0 |
Reboot | 1 |
Factory Reset | 2 |
Advertising Toggle | 3 |
Advertising on Push | 4 |
Advertising 5 seconds | 5 |
Advertising 10 seconds | 6 |
Advertising 30 seconds | 7 |
If the beacon does not have the button mounted, the read of the characteristic will return 0xFF and the writing of any value will not be allowed.
GPIO Configuration (0x880D)
Configures the I/O functionalities of the beacon (at the moment up to 14 GPIOs are managed).
Size (Byte) | Range | Format |
---|---|---|
1 | N/A | N/A |
Every GPIO can be configured in the following modes:
GPIO Mode | Value | Description |
---|---|---|
NOT_USED / DISCONNECTED | 0 | GPIO used as INPUT not connected |
OUTPUT | 1 | GPIO used as OUTPUT Standard-Drive |
OUTPUT_HIDRIVE | 2 | GPIO used as OUTPUT High-Drive |
INPUT_NOPULL | 3 | GPIO used as INPUT |
INPUT_PULLUP | 4 | GPIO used as INPUT with Pull-Up |
INPUT_PULLDOWN | 5 | GPIO used as INPUT with Pull-Down |
The configuration of each GPIO is managed by 1 byte:
BIT 7 | BIT 6 - BIT 5 - BIT 4 | BIT 3 - BIT 2 - BIT 1 - BIT 0 |
---|---|---|
Value | Mode | index (0 - 14) 0x0F = All GPIOs |
Reading: when reading, the characteristic will return a number of bytes equal to the number of GPIO present on the beacon. Each byte represents the GPIO configuration, as in the table above.
Writing: it is possible to write one or more bytes. Each byte has to be represented following the format in the table above.
Alarm Configuration (0x880E)
Sets an alarm on the beacon. An alarm consist of repeating power-ons of Led / Buzzer / Vibration (individually selectable), for a configurable time interval (or until disconnection).
Size (Byte) | Range | Format |
---|---|---|
4 | N/A | N/A |
This characteristic is only writable. Each writing has to have a fixed 4 bytes length. Each writing has to have the following format:
BYTE 0 | BYTE 1 | BYTE 2 - BYTE 3 |
---|---|---|
ALARM_EN | ALARM_ID | ALARM_TIME |
ALARM_EN
A bitmask to enable or disable the alarm peripherals (Led / Buzzer / Vibration). 0x00 value is equivalent to Alarm Disable.
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
---|---|---|---|---|---|---|---|
LED5_EN | LED4_EN | LED3_EN | LED2_EN | LED1_EN | LED0_EN | VIBR_EN | BUZZ_EN |
ALARM_ID
An alarm identifier. The flowing alarms are configurable:
Alarm ID | Description | Sequence ● ON / ○ OFF |
---|---|---|
0 | Fast signaling | ● 100ms / ○ 100ms |
1 | Mid signaling | ● 250ms / ○ 250ms |
2 | Slow signaling | ● 500ms / ○ 500ms |
3 | 1 step signaling | ● 75ms / ○ 500ms |
4 | 2 step signaling | ● 75ms / ○ 150ms / ● 75ms / ○ 500ms |
5 | 3 step signaling | ● 75ms / ○ 150ms / ● 75ms / ○ 150ms / ● 75ms / ○ 500ms |
6 | 5 step signaling | ● 75ms / ○ 150ms / ● 75ms / ○ 150ms / ● 75ms / ○ 150ms / ● 75ms / ○ 150ms / ● 75ms / ○ 500ms |
7 | Continuous fast signaling | ● 100ms / ○ 0ms4kHz / 2kHz |
8 | Continuous mid signaling | ● 250ms / ○ 0ms4kHz / 2kHz |
ALARM_TIME
Time interval of the alarm duration (Big Endian format). If 0 the alarm stops when disconnecting. If 0xFFFF the alarm stops when manually disabled, through a writing on the characteristic (ALARM_EN = 0x00). Any other value is considered as a time interval in seconds during which the alarm remains active.
HW Capabilities (0x880F)
Reports the hardware characteristics (the peripherals available on the board).
Size (Byte) | Range | Format |
---|---|---|
4 | N/A | Bitmask |
This characteristic is read-only.
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
---|---|---|---|---|---|---|---|
CO2 SENSOR | HUM SENSOR | TEMP SENSOR | VIBRATION | BUZZER | LEDS | BUTTON | ACCEL |