No ACL setup yet! Denying access to everyone.
en:edu:zmitac:s2:aih:lab:nrf52zephyrbleperipheral
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:edu:zmitac:s2:aih:lab:nrf52zephyrbleperipheral [2024/01/13 15:10] – [Adding the possibility of reading the characteristic] ktokarz | en:edu:zmitac:s2:aih:lab:nrf52zephyrbleperipheral [2024/01/13 15:23] (current) – [Adding the possibility of reading the characteristic] ktokarz | ||
|---|---|---|---|
| Line 102: | Line 102: | ||
| * write the callback function that calls bt_gatt_attr_read() (example function in the following code) | * write the callback function that calls bt_gatt_attr_read() (example function in the following code) | ||
| * register callback function within the BT_GATT_CHARACTERISTIC macro using the " | * register callback function within the BT_GATT_CHARACTERISTIC macro using the " | ||
| + | Notice that the temperature data sent in the original example by indications is encoded in the following format, which can be automatically decoded by nRF Connect software. | ||
| + | < | ||
| + | bool temp_in_fahr_units | ||
| + | bool time_stamp_present | ||
| + | bool temp_type_present | ||
| + | ieee_float32_t temp_in_celcius | ||
| + | ieee_float32_t temp_in_fahr | ||
| + | ble_date_time_t time_stamp | ||
| + | uint8_t temp_type | ||
| + | </ | ||
| + | All boolean flags are set to 0 (the first byte which is sent is 0x00), so the only data is the temperature expressed as a 32-bit floating point number encoded as an 8-bit exponent and 24-bit mantissa (ieee_float32_t). | ||
| + | < | ||
| + | In the ieee_float32_t format, the exponent is encoded as a signed 8-bit binary 10-based number. The mantissa is encoded as a signed 24-bit binary number. This format is incompatible with single or double-precision formats used in microprocessors, | ||
| + | </ | ||
| An example of the callback function which simulates the thermometer value can look like this: | An example of the callback function which simulates the thermometer value can look like this: | ||
| < | < | ||
| Line 127: | Line 141: | ||
| } | } | ||
| </ | </ | ||
| - | Notice that the temperature data which is sent in the original example by indications is encoded in the following format: | + | |
| - | < | + | |
| - | bool temp_in_fahr_units | + | |
| - | bool time_stamp_present | + | |
| - | bool temp_type_present | + | |
| - | ieee_float32_t temp_in_celcius | + | |
| - | ieee_float32_t temp_in_fahr | + | |
| - | ble_date_time_t time_stamp | + | |
| - | uint8_t temp_type | + | |
| - | </ | + | |
| - | All boolean flags are set to 0 (the first byte which is sent is 0x00), so the only data is the temperature expressed as a 32-bit floating point number encoded as an 8-bit exponent and 24-bit mantissa (ieee_float32_t). The exponent is encoded as a signed 8-bit binary 10-based number. The mantissa is encoded as a signed 24-bit binary number. This format is incompatible with single or double-precision formats used in microprocessors, | + | |
| ===== Tasks to do during the laboratory ===== | ===== Tasks to do during the laboratory ===== | ||
| - Import the peripheral_ht example. | - Import the peripheral_ht example. | ||
en/edu/zmitac/s2/aih/lab/nrf52zephyrbleperipheral.1705155027.txt.gz · Last modified: by ktokarz
