rt-ble

The open source code for RT-BLE

https://github.com/sada45/rt-ble

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

The open source code for RT-BLE

Basic Info
  • Host: GitHub
  • Owner: sada45
  • License: other
  • Language: C
  • Default Branch: main
  • Size: 26.3 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 4 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Contributing License Code of conduct Citation Codeowners Security

README.md

RT-BLE

This is the open source code for the paper accepted by IEEE INFOCOM 2023: RT-BLE: Real-time Multi-Connection Scheduling for Bluetooth Low Energy

This work is based on the RIOT OS and Apache NimBLE. This repository include the RIOT OS and the NimBLE is a third-party package of the RIOT. Our modified NimBLE can be find here. Each modification should have a comment starting with "RT-BLE:".

The main part of the RT-BLE is implemented as a system module name rt_ble. The code is located in sys/rt_ble, header file is located in sys/include/rt_ble.h

We use the Nordic nRF52840DK compatible boards. SEGGER RTT is recommended to be used as the standard output method. The makefile has already modified to use the RTT. We have a simple CMD line tool for RTT log reading and mass flash. The code may be ugly, but really useful. Hope it is helpful for you too :-)

Get started

  1. First, you should install the required tool chains. Normally on Ubuntu, these two commands can install all the requirements. shell sudo apt install build-essential sudo apt install gcc-arm-none-eabi
  2. Then pull this repository (The NimBLE can be automatically downloaded when you first time make any application). After this, enter the rt_ble_evaluation directory.
  3. Each test has two folders, the one ended with _client should be burned to the Central node (Master), and the one ended with _server should be burned to the Peripheral node (Slave). For the first time, you should change the MAC address in main.c to the MAC address of your boards.
  4. The following command can be used to make the application and then you can burn the binary file in ./bin/nrf52840dk/exp_<NAME>_<ROLE>.bin to your boards with official JLink tools or the cmd line tool mentioned above. shell make TARGET=nrf52840dk all -j16

The included tests

|Folder Name|Description| |-----------|-----------| |exp_rtble_*, exp_blex_*, exp_nf_*|This is the basic test to measure the delay of RT-BLE, BLEX and TL-BLE. |exp_rtble_critical_*, exp_blex_critical_*|This is the test to get the worst-case latency during requirement changes (enter or leave the critical mode)| |exp_rtble_moveanchor_*, exp_blex_moveanchor_*|This is the test to get the connection reschedule time for RT-BLE and BLEX| |exp_rtble_cap_*, exp_blex_cap_*|This is the test to get the system capacity of the RT-BLE and BLEX|

For the TL-BLE, we should first measure the average retransmission time $n_f$. The result measured in our experiment setup is:

|Packet Loss Rate (%)|$n_f$| |--------------------|--------------------| |0|1.0| |10|1.1395| |20|1.3239| |30|1.5297| |40|1.7577|

Owner

  • Login: sada45
  • Kind: user

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Dependencies

.github/workflows/check-pr.yml actions
  • RIOT-OS/check-labels-action v1.0.0 composite
  • actions/checkout master composite
.github/workflows/circleci.yml actions
  • larsoner/circleci-artifacts-redirector-action master composite
.github/workflows/labeler.yml actions
  • actions/labeler main composite
.github/workflows/release-test.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • webfactory/ssh-agent v0.4.1 composite
.github/workflows/static-test.yml actions
  • actions/checkout v2 composite
.github/workflows/test-on-iotlab.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • webfactory/ssh-agent v0.4.1 composite
.github/workflows/test-on-ryot.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
.github/workflows/tools-buildtest.yml actions
  • aabadie/riot-action v1 composite
  • actions/checkout master composite
.github/workflows/tools-test.yml actions
  • actions/checkout master composite
  • actions/setup-python v1 composite
examples/rust-gcoap/Cargo.lock cargo
  • aho-corasick 0.7.18
  • atomic-polyfill 0.1.8
  • atty 0.2.14
  • autocfg 1.1.0
  • bare-metal 0.2.5
  • bare-metal 1.0.0
  • bindgen 0.60.1
  • bit_field 0.10.1
  • bitfield 0.13.2
  • bitflags 1.3.2
  • build_const 0.2.2
  • byteorder 1.4.3
  • c2rust-asm-casts 0.2.0
  • c2rust-bitfields 0.3.0
  • c2rust-bitfields-derive 0.2.1
  • cexpr 0.6.0
  • cfg-if 1.0.0
  • clang-sys 1.3.3
  • clap 3.1.18
  • clap_lex 0.2.0
  • coap-handler 0.1.3
  • coap-handler-implementations 0.3.3
  • coap-message 0.2.2
  • coap-numbers 0.1.2
  • cortex-m 0.7.5
  • crc 1.8.1
  • critical-section 0.2.7
  • cstr_core 0.2.5
  • cty 0.2.2
  • either 1.6.1
  • embedded-graphics 0.6.2
  • embedded-hal 0.2.7
  • env_logger 0.9.0
  • glob 0.3.0
  • half 1.8.2
  • hash32 0.2.1
  • hashbrown 0.11.2
  • heapless 0.7.13
  • hermit-abi 0.1.19
  • hex 0.4.3
  • humantime 2.1.0
  • indexmap 1.8.2
  • itoa 1.0.2
  • lazy_static 1.4.0
  • lazycell 1.3.0
  • libc 0.2.126
  • libloading 0.7.3
  • lock_api 0.4.7
  • log 0.4.17
  • memchr 2.5.0
  • minicbor 0.15.0
  • minicbor-derive 0.9.0
  • minimal-lexical 0.2.1
  • mutex-trait 0.2.0
  • nb 0.1.3
  • nb 1.0.0
  • nom 7.1.1
  • num-traits 0.2.15
  • os_str_bytes 6.1.0
  • peeking_take_while 0.1.2
  • pin-utils 0.1.0
  • proc-macro2 1.0.39
  • quote 1.0.18
  • regex 1.5.6
  • regex-syntax 0.6.26
  • riscv 0.7.0
  • riscv-target 0.1.2
  • rustc-hash 1.1.0
  • rustc_version 0.2.3
  • rustc_version 0.4.0
  • ryu 1.0.10
  • scopeguard 1.1.0
  • semver 0.9.0
  • semver 1.0.9
  • semver-parser 0.7.0
  • serde 1.0.137
  • serde_bytes 0.10.5
  • serde_cbor 0.11.2
  • serde_derive 1.0.137
  • serde_json 1.0.81
  • shlex 0.1.1
  • shlex 1.1.0
  • spin 0.9.3
  • stable_deref_trait 1.2.0
  • strsim 0.10.0
  • syn 1.0.96
  • termcolor 1.1.3
  • textwrap 0.15.0
  • unicode-ident 1.0.0
  • vcell 0.1.3
  • void 1.0.2
  • volatile-register 0.2.1
  • which 4.2.5
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-util 0.1.5
  • winapi-x86_64-pc-windows-gnu 0.4.0
  • windowed-infinity 0.1.1
examples/rust-gcoap/Cargo.toml cargo
examples/rust-hello-world/Cargo.lock cargo
  • aho-corasick 0.7.18
  • atomic-polyfill 0.1.8
  • atty 0.2.14
  • autocfg 1.1.0
  • bare-metal 0.2.5
  • bare-metal 1.0.0
  • bindgen 0.60.1
  • bit_field 0.10.1
  • bitfield 0.13.2
  • bitflags 1.3.2
  • byteorder 1.4.3
  • c2rust-asm-casts 0.2.0
  • c2rust-bitfields 0.3.0
  • c2rust-bitfields-derive 0.2.1
  • cexpr 0.6.0
  • cfg-if 1.0.0
  • clang-sys 1.3.3
  • clap 3.1.18
  • clap_lex 0.2.0
  • cortex-m 0.7.5
  • critical-section 0.2.7
  • cstr_core 0.2.5
  • cty 0.2.2
  • either 1.6.1
  • embedded-graphics 0.6.2
  • embedded-hal 0.2.7
  • env_logger 0.9.0
  • glob 0.3.0
  • hash32 0.2.1
  • hashbrown 0.11.2
  • heapless 0.7.13
  • hermit-abi 0.1.19
  • hex 0.4.3
  • humantime 2.1.0
  • indexmap 1.8.2
  • itoa 1.0.2
  • lazy_static 1.4.0
  • lazycell 1.3.0
  • libc 0.2.126
  • libloading 0.7.3
  • lock_api 0.4.7
  • log 0.4.17
  • memchr 2.5.0
  • minimal-lexical 0.2.1
  • mutex-trait 0.2.0
  • nb 0.1.3
  • nb 1.0.0
  • nom 7.1.1
  • num-traits 0.2.15
  • os_str_bytes 6.1.0
  • peeking_take_while 0.1.2
  • pin-utils 0.1.0
  • proc-macro2 1.0.39
  • quote 1.0.18
  • regex 1.5.6
  • regex-syntax 0.6.26
  • riscv 0.7.0
  • riscv-target 0.1.2
  • rustc-hash 1.1.0
  • rustc_version 0.2.3
  • rustc_version 0.4.0
  • ryu 1.0.10
  • scopeguard 1.1.0
  • semver 0.9.0
  • semver 1.0.9
  • semver-parser 0.7.0
  • serde 1.0.137
  • serde_derive 1.0.137
  • serde_json 1.0.81
  • shlex 0.1.1
  • shlex 1.1.0
  • spin 0.9.3
  • stable_deref_trait 1.2.0
  • strsim 0.10.0
  • syn 1.0.96
  • termcolor 1.1.3
  • textwrap 0.15.0
  • unicode-ident 1.0.0
  • vcell 0.1.3
  • void 1.0.2
  • volatile-register 0.2.1
  • which 4.2.5
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-util 0.1.5
  • winapi-x86_64-pc-windows-gnu 0.4.0
examples/rust-hello-world/Cargo.toml cargo
tests/rust_minimal/Cargo.lock cargo
  • aho-corasick 0.7.18
  • atomic-polyfill 0.1.8
  • atty 0.2.14
  • autocfg 1.1.0
  • bare-metal 0.2.5
  • bare-metal 1.0.0
  • bindgen 0.60.1
  • bit_field 0.10.1
  • bitfield 0.13.2
  • bitflags 1.3.2
  • byteorder 1.4.3
  • c2rust-asm-casts 0.2.0
  • c2rust-bitfields 0.3.0
  • c2rust-bitfields-derive 0.2.1
  • cexpr 0.6.0
  • cfg-if 1.0.0
  • clang-sys 1.3.3
  • clap 3.1.18
  • clap_lex 0.2.0
  • cortex-m 0.7.5
  • critical-section 0.2.7
  • cstr_core 0.2.5
  • cty 0.2.2
  • either 1.6.1
  • embedded-graphics 0.6.2
  • embedded-hal 0.2.7
  • env_logger 0.9.0
  • glob 0.3.0
  • hash32 0.2.1
  • hashbrown 0.11.2
  • heapless 0.7.13
  • hermit-abi 0.1.19
  • hex 0.4.3
  • humantime 2.1.0
  • indexmap 1.8.2
  • itoa 1.0.2
  • lazy_static 1.4.0
  • lazycell 1.3.0
  • libc 0.2.126
  • libloading 0.7.3
  • lock_api 0.4.7
  • log 0.4.17
  • memchr 2.5.0
  • minimal-lexical 0.2.1
  • mutex-trait 0.2.0
  • nb 0.1.3
  • nb 1.0.0
  • nom 7.1.1
  • num-traits 0.2.15
  • os_str_bytes 6.1.0
  • peeking_take_while 0.1.2
  • pin-utils 0.1.0
  • proc-macro2 1.0.39
  • quote 1.0.18
  • regex 1.5.6
  • regex-syntax 0.6.26
  • riscv 0.7.0
  • riscv-target 0.1.2
  • rustc-hash 1.1.0
  • rustc_version 0.2.3
  • rustc_version 0.4.0
  • ryu 1.0.10
  • scopeguard 1.1.0
  • semver 0.9.0
  • semver 1.0.9
  • semver-parser 0.7.0
  • serde 1.0.137
  • serde_derive 1.0.137
  • serde_json 1.0.81
  • shlex 0.1.1
  • shlex 1.1.0
  • spin 0.9.3
  • stable_deref_trait 1.2.0
  • strsim 0.10.0
  • syn 1.0.96
  • termcolor 1.1.3
  • textwrap 0.15.0
  • unicode-ident 1.0.0
  • vcell 0.1.3
  • void 1.0.2
  • volatile-register 0.2.1
  • which 4.2.5
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-util 0.1.5
  • winapi-x86_64-pc-windows-gnu 0.4.0
tests/rust_minimal/Cargo.toml cargo
cpu/stm32/dist/kconfig/requirements.txt pypi
  • jinja2 *
  • openpyxl *