This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52840 - How to assign DEVICEID to System ID characteristic

Hi everyone,

I want to assign the DEVICEID to System ID characteristic (which is under Device Information Service). DEVICEID is a 64bit and I found that I could assign this values on manufacturer_id variable which is 64bit as well. The problem is that the from my understanding the System ID characteristic has an 8byte value from which the first 5bytes are assigned to manufacturer_id and the last three to organizationally_unique_id.

/**@brief System ID parameters */
typedef struct
{
    uint64_t manufacturer_id;                                   /**< Manufacturer ID. Only 5 LSOs shall be used. */
    uint32_t organizationally_unique_id;                        /**< Organizationally unique ID. Only 3 LSOs shall be used. */
} ble_dis_sys_id_t;

So my questions are:

1. Why manufacturer_id variable is of type uint64_t if only 5 bytes shall be used?

2. How could I assign DEVICEID on System ID characteristic? Is there any other special characteristic that I could assign the DEVICEID?

3. Is it wise to asign the first 5bytes of DEVICEID to manufacturer_id and the last three bytes of DEVICEID to organizationally_unique_id

Thanks in advance

Nick

Parents
  • That is because the System ID in the DIS stems from the IEEE 11073 set of standards for medical devices. The most significant 24 bits are assigned to an organization by IEEE (Euros or $$ or some monetary compensation likely required) and the rest are for the organization to use as needed. The System ID was to uniquely identify the medical device and plays an integral part in the 11073 exchange protocols (notably 20601). That being said, I see few who use it for that purpose. Most ignore it when using proprietary protocols. If you are following one of the standard health device protocols, an incorrect value could be misinterpreted downstream. But in the end it is a 64-bit number. In the future, the UDI is likely to replace its identifier purpose, but it will still have a meaning in the 20601 exchange protocol (which is not relevant in BTLE).

  • Thank you for your answer brianreinhold,

    My application has nothing to do with medical devices and health device protocols. So I assume that is safe to use the  System ID for downstreaming the UDI..

    In general is there any characteristic in GATT services that is ιntented for the Unique Device Identifier?

    Nick

  • I have heard rumors that the UDI is to be added to the DIS. But that being said, its probably fine to use the system ID for whatever purpose your implementation needs it for. I assume that it is proprietary so there are no requirements on the DIS entries. If I were implementing a proprietary device and needed a 64 bit identifier for my device, that's where I would put it. After all, only my proprietary collectors would understand it!

Reply
  • I have heard rumors that the UDI is to be added to the DIS. But that being said, its probably fine to use the system ID for whatever purpose your implementation needs it for. I assume that it is proprietary so there are no requirements on the DIS entries. If I were implementing a proprietary device and needed a 64 bit identifier for my device, that's where I would put it. After all, only my proprietary collectors would understand it!

Children
Related