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

Usage of uuids_complete, uuids_more_available & uuids_solicited

Is there a comprehensive explanation of the usage of uuids_complete, uuids_more_available & uuids_solicited when to use them and how the stack behaves/uses them. I getting bits and pieces by searching through previous questions, but never the whole picture.

The advertising tutorial is out of date, but helpful. Using the HRM example I see that the HRM service is added, plus the Battery & Information service, three services in total.

static ble_uuid_t m_adv_uuids[] = {{BLE_UUID_HEART_RATE_SERVICE, BLE_UUID_TYPE_BLE}, {BLE_UUID_BATTERY_SERVICE, BLE_UUID_TYPE_BLE}, {BLE_UUID_DEVICE_INFORMATION_SERVICE, BLE_UUID_TYPE_BLE}}; /**< Universally unique service identifiers. */

image description

Within advertising_init() m_adv_uuids is assigned to advdata.uuids_complete.p_uuids

advdata.uuids_complete.p_uuids = m_adv_uuids;

And the Master Control Panel showing 3 in total, the same 3 assigned in advertising_init(). When would I want to use uuids_more_available & uuids_solicited and how would the stack make use of these values.

I am conscious that this example is just using 16 bit UUID's.

Once connected I see the following:image description

So once connected where are the other service being added? Generic services (0x1800, 0x1801) are added. I guess the client searches for all services, once connected. Are these two being added by the stack ? & from the application how can they be disabled/enabled if necessary?

Parents
  • So UUID complete vs incomplete - Two Service UUID data types are assigned to each size of Service UUID. One Service UUID data type indicates that the Service UUID list is incomplete and the other indicates the Service UUID list is complete.

    Service solicited - A Peripheral device may send the Service Solicitation data type to invite Central devices that expose one or more of the services specified in the Service Solicitation data to connect.

    Please note that adding services to the list in the Advertisment packet does not add the same services to the attribute table. The attribute table needs to be populated using the GATTS functions. I recommend looking throught the tutorials if you want more details.

  • Been using BlueGiga, on and off, since 2013! but it's a walk in the park, usability wise, compared with Nordic. BlueGiga doco is just as bad :O) but their stack is more abstracted so no need to understand so much detail, but less control. Unfortunately many of the Nordic tutorials, I have looked at, are out of date, hence they less efficient learning tools.

    So when you say "incomplete list" you mean uuids_more_available referencing the spec; you mean values 0x02 (for 16 bit), 0x04 (for 32 bit) & 0x06 (128-bit). The Nordic stack will compose using these value if data if UUID are added to uuids_more_available list?

    I am still confused by Service Solicitation I need todo more work on this.

Reply
  • Been using BlueGiga, on and off, since 2013! but it's a walk in the park, usability wise, compared with Nordic. BlueGiga doco is just as bad :O) but their stack is more abstracted so no need to understand so much detail, but less control. Unfortunately many of the Nordic tutorials, I have looked at, are out of date, hence they less efficient learning tools.

    So when you say "incomplete list" you mean uuids_more_available referencing the spec; you mean values 0x02 (for 16 bit), 0x04 (for 32 bit) & 0x06 (128-bit). The Nordic stack will compose using these value if data if UUID are added to uuids_more_available list?

    I am still confused by Service Solicitation I need todo more work on this.

Children
No Data
Related