servo/tests/html/bluetooth/bluetooth_characteristic_info.html
2016-09-26 20:02:42 +02:00

63 lines
2.7 KiB
HTML

<!DOCTYPE html>
<html>
<title>Characteristic info</title>
<body>
<input id="service" type="text" autofocus placeholder="Bluetooth Service">
<input id="characteristic" type="text" autofocus placeholder="Bluetooth Characteristic">
<button type="button" onclick="onButtonClick()">Get Characteristic Info</button>
<pre id="log"></pre>
<script src="bluetooth_functions.js"></script>
<script>
function onButtonClick() {
clear();
var serviceUuid = document.getElementById('service').value;
var characteristicUuid = document.getElementById('characteristic').value;
if (!serviceUuid || !characteristicUuid) {
return log('All input field must be filled!');
}
if (serviceUuid.startsWith('0x'))
serviceUuid = parseInt(serviceUuid, 16);
if (characteristicUuid.startsWith('0x'))
characteristicUuid = parseInt(characteristicUuid, 16);
log('Requesting Bluetooth Device...');
window.navigator.bluetooth.requestDevice({filters: [{services: [serviceUuid]}]})
.then(device => {
log('Connecting to GATT Server on device...');
return device.gatt.connect();
})
.then(server => {
log('Getting Primary Service...');
return server.getPrimaryService(serviceUuid);
})
.then(service => {
log('Getting Characteristic...');
return service.getCharacteristic(characteristicUuid);
})
.then(characteristic => {
log('Characteristic found!');
log('> Characteristic service: ' + characteristic.service.uuid);
log('> Characteristic UUID: ' + characteristic.uuid);
log('> Broadcast: ' + characteristic.properties.broadcast);
log('> Read: ' + characteristic.properties.read);
log('> Write w/o response: ' + characteristic.properties.writeWithoutResponse);
log('> Write: ' + characteristic.properties.write);
log('> Notify: ' + characteristic.properties.notify);
log('> Indicate: ' + characteristic.properties.indicate);
log('> Signed Write: ' + characteristic.properties.authenticatedSignedWrites);
log('> Queued Write: ' + characteristic.properties.reliableWrite);
log('> Writable Auxiliaries: ' + characteristic.properties.writableAuxiliaries);
return characteristic.readValue();
})
.then(value => {
log('> Characteristic value: ' + asciiToDecimal(value));
})
.catch(err => {
log(err);
});
}
</script>
</body>
</html>