BLE multiple characteristics in a service
I seem to be having trouble getting more than one characteristic working inside of a BLE service. The below simple example is based on what is shown in the class documentation. There is not much more to help understand programming a BLE peripheral with Micropython on the wipy2/lopy boards.
As mentioned in an email to support and in another post. I will be willing to pay for prompt support and resolution of this.
Any help would be appreciated.
>>> from network import Bluetooth >>> ble = Bluetooth() BTDM CONTROLLER VERSION: 010101 btip start copy .data from 4000d890 to 3ffae6e0, len 00001830 set .bss 0x0 from 3ffb8000 to 3ffbff70, len 00007f70 BTDM ROM VERSION 0101 BD_ADDR: 24:0A:C4:00:6B:EC NVDS MAGIC FAILED RF Init OK with coex >>> ble.advertise(True) >>> ble.set_advertisement(name='bleep', service_uuid=b'1234567890123456', manufacturer_data=None, service_data=None) >>> serv = ble.service(uuid=b'1234567890123456', isprimary=True) >>> char1 = serv.characteristic(uuid=b'2234567890123456', value=1) >>> char2 = serv.characteristic(uuid=b'3234567890123456', value=2)
Thanks for the prompt help. This makes sense, just wish the documentation was better at describing typical use cases, especially when there is frequent firmware updates.
serv = ble.service(uuid=b'1234567890123456', isprimary=True)
You need to use the nbr_chars parameter when you create a service.
For your example, with two characteristics, that would be:
serv = ble.service(uuid=b'1234567890123456', isprimary=True,nbr_chars=2)
This was added in 1.5.0.b1