From 65804c9172b2d4c33f9cde2c867946dfc966d2b0 Mon Sep 17 00:00:00 2001 From: Ake Hedman Date: Thu, 21 Nov 2024 17:37:58 +0100 Subject: [PATCH] Added missing BLE frame format --- _sidebar.md | 1 + images/adv-channel-pdu.png | Bin 0 -> 10403 bytes images/packet-format-top-level.png | Bin 0 -> 30652 bytes variables.xml | 4 ++-- vscp_over_bt_ble.md | 30 +++++++++++++++++++++++++++++ vscp_specification_history.md | 3 ++- 6 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 images/adv-channel-pdu.png create mode 100644 images/packet-format-top-level.png create mode 100644 vscp_over_bt_ble.md diff --git a/_sidebar.md b/_sidebar.md index f5a30e7..d901d13 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -27,6 +27,7 @@ * [VSCP over CAN (CAN4VSCP)](./vscp_over_can_can4vscp.md) * [VSCP over a serial channel (RS-232)](./vscp_over_a_serial_channel_rs-232.md) * [VSCP Level I over RS-485/RS-422](./vscp_level_i_over_rs-485_rs-422.md) + * [VSCP over Bluetooth BLE](./vscp_over_bt_ble.md) * [VSCP over Bluetooth mesh](./vscp_over_bt_mesh.md) * [VSCP over IEEE 802.15.4](./vscp_over_ieee_802.15.4.md) * [VSCP Droplet model](./vscp_droplet_model.md) diff --git a/images/adv-channel-pdu.png b/images/adv-channel-pdu.png new file mode 100644 index 0000000000000000000000000000000000000000..3df7557c37726c8179810e748f17da621d54f87f GIT binary patch literal 10403 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 IN - 2024-11-05 22:00:01 - 1.14.17 + 2024-11-21 17:37:21 + 1.14.18 diff --git a/vscp_over_bt_ble.md b/vscp_over_bt_ble.md new file mode 100644 index 0000000..4d1679b --- /dev/null +++ b/vscp_over_bt_ble.md @@ -0,0 +1,30 @@ +# VSCP over BLE + +The general BLE frame format is as follows + +![VSCP Bluetooth](https://developerhelp.microchip.com/xwiki/bin/download/applications/ble/introduction/bluetooth-architecture/bluetooth-controller-layer/bluetooth-link-layer/Packet-Types/WebHome/packet-format-top-level.png?width=600&height=210&rev=1.1) + +## Advertising format + +The general BLE advertising format is as follows + +![BLE Advertising](https://developerhelp.microchip.com/xwiki/bin/download/applications/ble/introduction/bluetooth-architecture/bluetooth-controller-layer/bluetooth-link-layer/Packet-Types/WebHome/adv-channel-pdu.png?width=450&height=183&rev=1.1) + + +The VSCP advertising payload format is as follows + + +| Description | Size | Note | +| --- | --- | --- | +| head | 8-bit | | +| timestamp | 32 bit | Microsecond timestamp +| vscp-class | 32-bits | VSCP class | +| vscp-type | 32 bits | VSCP type | +| data | max = 37 - 13 = 24 | VSCP data | + + * GUID is constructed from BLE MAC, prefix _FF:FF:FF:FF:FF:FF:FF:F8:YY:YY:YY:YY:YY:YY:XX:XX_ where _YY:YY:YY:YY:YY:YY_ is the BLE MAC and _XX:XX_ is the nodeid. + * obid is set by receiver, zero if not used. + * time is set by receiver + + +[filename](./bottom_copyright.md ':include') \ No newline at end of file diff --git a/vscp_specification_history.md b/vscp_specification_history.md index 7f7529d..b3a1b1e 100644 --- a/vscp_specification_history.md +++ b/vscp_specification_history.md @@ -2,7 +2,8 @@ | Date | By | Description | | ---------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |2024-11-05| AKHE | Fixed VSCP2_TYPE_PROTOCOL_WRITE_REGISTER_DIRECT | +|2024-11-21| AKHE | Added missing BLE transport frame format | +|2024-11-05| AKHE | Fixed VSCP2_TYPE_PROTOCOL_WRITE_REGISTER_DIRECT | |2024-10-30| AKHE | Added "uf2" (RP2040 etc) as a valid firmware format. | |2024-10-23| AKHE | Added GigaDevice Semiconductor, Raspbery Pi, EspressIf manufacturer codes. | |2024-10-09| AKHE | Added info about possibility to skip JSON/XML fields in MQTT events. |