3 Replies Latest reply on Aug 30, 2018 12:58 AM by ranjithk_81



      Can someone please explain the intention of the CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE event in a Central device?  The below description implies that a service will be "skipped" if it is not in the GATT database, but what is meant by "skipped"


        /** GATT Client - The service (not defined in the GATT database) was found during

      *  the server device discovery. The discovery procedure skips this service.

      *  This event parameter is a structure of the CYBLE_DISC_SRVC128_INFO_T type.



      I have a project modeled after PSoC4 BLE Central Custom Profile w/LED & CapSense - IoT Expert to do a Central with a custom service.  There are three services, Device info, Custom service 1 and customer service 2.  I exported Custom Service 1 and Service 2 from the peripheral project and imported them into the central project BLE component.


      I would expect to get a CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE event for the Device info service, which I do, but I also get a CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE event for both Custom Service 1 and 2 as well, which is unexpected.  Also after connecting etc. I am able to access Custom Service 1 and 2 without any issues so it is unclear what CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE means and how it is to be interpreted and handled.


      Also, how would this event impact a device like the CySmart Dongle where you do not have a prepopulated GATT database on the Central side and are attempting to read out all service and characteristic data to do diagnostic testing etc.









          As per my understanding CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE event is generated when the Client finds services  while discovery which are not defined in the GATT database. Let me check further into this to verify the behavior described by you and get back.


          When it comes to dongle if you do startdiscovery() since these services will not be defined in the GATT Database, all will be skipped.

          So it is preferable to use the  discover all primary services/characteristics APIs.








            Any update on the details here?  Also, for the Start discovery, I'm not sure I understand your comment, as it appears the start calles the discover all primary services:


            I am calling the CyBle_GattcStartDiscovery() API and internally it is calling the CyBle_GattcDiscoverAllPrimaryServices() API so I think I am already doing this.


              1.   Client execute discovery will discover only for services, chars, descriptors…which are selected in customizer (Profile-> gatt client role..).

              If peer devise have some addition services it will skipped during discovery. Event CYBLE_EVT_GATTC_DISC_SKIPPED_SERVICE informs the user that addition services was found and skipped.


              2. Each service which are not defined will trigger this event. Therefore if user doesn't add any service at Client side then this will get triggered.


              I tried with a simple design having a customs service declared on Server and not on Client and this event was triggered.

              And when I defined this service at client side this event was not triggered on the Client side on discovery.