I'm running into an odd problem... I'm using a nRF52832 development kit and pc-ble-driver-py to write tests against our custom services and characteristics, and I just hit a problem that I cannot figure out.
For some reason, 1 service and its characteristics are getting their uuid type set to 3, but the maximum value the uuid type can be is 2.
I'm basing the BLE interaction from the heart_rate_collector.py example. This is the function that looks an advertiser with the specified MAC address, connects to it (if found), and discovers the services and characteristics.
def connect_and_discover(self, mac_addr):
self.mac_addr = mac_addr
scan_duration = 5
params = BLEGapScanParams(interval_ms=200, window_ms=150, timeout_s=scan_duration)
self.adapter.driver.ble_gap_scan_start(scan_params=params)
try:
self.conn_handle = self.conn_q.get(timeout=scan_duration)
print('starting discovery')
self.adapter.service_discovery(self.conn_handle)
self.services = self.adapter.db_conns[self.conn_handle].services
return self.conn_handle
except Empty:
print(f"No advertiser with addr {mac_addr} found.")
return None
I set a breakpoint after the call to self.adapter.service_discovery(self.conn_handle), and drilled into the list of services in the db_conns list. The very last service and all of its characteristics have the base.type set to 3.

Why would the softdevice set the type to a value other than 0, 1, or 2?