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
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
Metadata Files
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
- 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 - Then pull this repository (The NimBLE can be automatically downloaded when you first time make any application). After this, enter the
rt_ble_evaluationdirectory. - Each test has two folders, the one ended with
_clientshould be burned to the Central node (Master), and the one ended with_servershould be burned to the Peripheral node (Slave). For the first time, you should change the MAC address inmain.cto the MAC address of your boards. - The following command can be used to make the application and then you can burn the binary file in
./bin/nrf52840dk/exp_<NAME>_<ROLE>.binto 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
- Repositories: 1
- Profile: https://github.com/sada45
GitHub Events
Total
- Watch event: 1
Last Year
- Watch event: 1
Dependencies
- RIOT-OS/check-labels-action v1.0.0 composite
- actions/checkout master composite
- larsoner/circleci-artifacts-redirector-action master composite
- actions/labeler main composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/upload-artifact v2 composite
- webfactory/ssh-agent v0.4.1 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/upload-artifact v2 composite
- webfactory/ssh-agent v0.4.1 composite
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- aabadie/riot-action v1 composite
- actions/checkout master composite
- actions/checkout master composite
- actions/setup-python v1 composite
- 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
- 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
- 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
- jinja2 *
- openpyxl *