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.

  • If you are new to bluetooth it would make sense to go through all our bluetooth tutorials. The stack doesn't really do much with the advertisement package. It just does a simple check to see if it's valid and starts adveritising. So it is up to the application to configure the string that is advertised. This should reflect the capabilities of the advertiser and make it easy for the scanner to identify the advertiser. You can advertise a complete or a incomplete list of the services your device supports depending on what you have space for in the advertisement package. The complete and incomplete list uses different advertisement types to tell the scanner whether the list is complete or not.

Reply
  • If you are new to bluetooth it would make sense to go through all our bluetooth tutorials. The stack doesn't really do much with the advertisement package. It just does a simple check to see if it's valid and starts adveritising. So it is up to the application to configure the string that is advertised. This should reflect the capabilities of the advertiser and make it easy for the scanner to identify the advertiser. You can advertise a complete or a incomplete list of the services your device supports depending on what you have space for in the advertisement package. The complete and incomplete list uses different advertisement types to tell the scanner whether the list is complete or not.

Children
No Data
Related