Web Bluetooth / Exclusion Filters (Async Await) Sample

Available in Chrome 114+ | View on GitHub | Browse Samples

The Web Bluetooth API lets websites discover and communicate with devices over the Bluetooth 4 wireless standard using the Generic Attribute Profile (GATT). It is currently partially implemented in Android M, Chrome OS, Mac, and Windows 10.

This sample illustrates the use of the Web Bluetooth API to retrieve basic device information from a nearby Bluetooth Low Energy Device featuring basic exclusion filters. You may want to check out the Exclusion Filters sample.

Filters:
Exclusion filters:

Live Output


JavaScript Snippet

async function onButtonClick() {
  let filters = populateFiltersById('filters');
  let exclusionFilters = populateFiltersById('exclusionFilters');
  let options = { filters, exclusionFilters };

  try {
    log('Requesting Bluetooth Device...');
    log('with ' + JSON.stringify(options));
    const device = await navigator.bluetooth.requestDevice(options);

    log('> Name:             ' + device.name);
    log('> Id:               ' + device.id);
    log('> Connected:        ' + device.gatt.connected);
  } catch(error)  {
    log('Argh! ' + error);
  }
}

/* Utils */

function populateFiltersById(id) {
  let filters = [];
  
  let filterService = document.querySelector(`#${id} .service`).value;
  if (filterService.startsWith('0x')) {
    filterService = parseInt(filterService);
  }
  if (filterService) {
    filters.push({services: [filterService]});
  }

  let filterName = document.querySelector(`#${id} .name`).value;
  if (filterName) {
    filters.push({name: filterName});
  }

  let filterNamePrefix = document.querySelector(`#${id} .namePrefix`).value;
  if (filterNamePrefix) {
    filters.push({namePrefix: filterNamePrefix});
  }

  return filters;
}