diff --git a/scripts/examples/10-Bluetooth/ble_temperature.py b/scripts/examples/10-Bluetooth/ble_temperature.py deleted file mode 100644 index 6c886c974..000000000 --- a/scripts/examples/10-Bluetooth/ble_temperature.py +++ /dev/null @@ -1,102 +0,0 @@ -# This work is licensed under the MIT license. -# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved. -# https://github.com/openmv/openmv/blob/master/LICENSE -# -# This example demonstrates a simple temperature sensor peripheral. -# -# The sensor's local value updates every second, and it will notify -# any connected central every 10 seconds. - -import bluetooth -import random -import struct -import time -from ble_advertising import advertising_payload -from machine import LED -from micropython import const - -_IRQ_CENTRAL_CONNECT = const(1) -_IRQ_CENTRAL_DISCONNECT = const(2) -_IRQ_GATTS_INDICATE_DONE = const(20) - -_FLAG_READ = const(0x0002) -_FLAG_NOTIFY = const(0x0010) -_FLAG_INDICATE = const(0x0020) - -# org.bluetooth.service.environmental_sensing -_ENV_SENSE_UUID = bluetooth.UUID(0x181A) -# org.bluetooth.characteristic.temperature -_TEMP_CHAR = ( - bluetooth.UUID(0x2A6E), - _FLAG_READ | _FLAG_NOTIFY | _FLAG_INDICATE, -) -_ENV_SENSE_SERVICE = ( - _ENV_SENSE_UUID, - (_TEMP_CHAR,), -) - -# org.bluetooth.characteristic.gap.appearance.xml -_ADV_APPEARANCE_GENERIC_THERMOMETER = const(768) - - -class BLETemperature: - def __init__(self, ble, name="mpy-temp"): - self._ble = ble - self._ble.active(True) - self._ble.irq(self._irq) - ((self._handle,),) = self._ble.gatts_register_services((_ENV_SENSE_SERVICE,)) - self._connections = set() - self._payload = advertising_payload( - name=name, - services=[_ENV_SENSE_UUID], - appearance=_ADV_APPEARANCE_GENERIC_THERMOMETER, - ) - self._advertise() - self.led = LED("LED_BLUE") - - def _irq(self, event, data): - # Track connections so we can send notifications. - if event == _IRQ_CENTRAL_CONNECT: - conn_handle, _, _ = data - self._connections.add(conn_handle) - self.led.on() - elif event == _IRQ_CENTRAL_DISCONNECT: - conn_handle, _, _ = data - self._connections.remove(conn_handle) - # Start advertising again to allow a new connection. - self._advertise() - self.led.off() - elif event == _IRQ_GATTS_INDICATE_DONE: - conn_handle, value_handle, status = data - - def set_temperature(self, temp_deg_c, notify=False, indicate=False): - # Data is sint16 in degrees Celsius with a resolution of 0.01 degrees Celsius. - # Write the local value, ready for a central to read. - self._ble.gatts_write(self._handle, struct.pack("