Skip to content

michaelvanstraten/bluedroid

 
 

Repository files navigation

Bluedroid Rust wrapper

crates.io build docs.rs crates.io crates.io

This is a Rust wrapper for the Bluedroid Bluetooth stack for ESP32. It allows you to build a GATT server with a declarative API and supports multithreading.

Usage

Declare a characteristic:

  let manufacturer_name_characteristic = Characteristic::new(BleUuid::Uuid16(0x2A29))
        .name("Manufacturer Name String")
        .permissions(AttributePermissions::new().read().write())
        .properties(CharacteristicProperties::new().read().write().notify())
        .max_value_length(20)
        .on_write(|data, param| {
            info!("Received write request: {:?} {:?}", data, param);
        })
        .show_name()
        .set_value("Hello, world!".as_bytes().to_vec())
        .build();

Declare a service:

let device_information_service = Service::new(BleUuid::Uuid16(0x180A))
    .name("Device Information")
    .primary()
    .characteristic(&manufacturer_name_characteristic)
    .build();

Declare a profile and start the server:

let profile = Profile::new(0x0001)
    .name("Device Information")
    .service(&device_information_service)
    .build();

GLOBAL_GATT_SERVER
    .lock()
    .unwrap()
    .profile(profile)
    .device_name("ESP32-GATT-Server")
    .appearance(Appearance::WristWornPulseOximeter)
    .advertise_service(&device_information_service)
    .start();

Features

  • GATT server
    • Advertisement
      • Custom name
      • Custom appearance
    • Multiple applications
    • Services
      • Declaration
      • Advertisement
    • Characteristics
      • Declaration
      • Broadcast
      • Read
        • Static (by stack)
        • Dynamic (by application, with callback)
        • Long
      • Write
        • With response
        • Without response
        • Long
      • Notify
      • Indicate
    • Descriptors
      • Declaration
      • Read
      • Write
    • Encryption
  • GATT client

    There are currently no plans to implement the GATT client API. Contributions are welcome.

  • BR/EDR

    There are currently no plans to implement the Bluetooth Classic API. Contributions are welcome.

About

Bluedroid wrapper for ESP32.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%