* ServiceSearchRequest/ServiceSearchResponse: list of UUIDs to be matched by service record -> list of service record handles
* ServiceAttributeRequest/ServiceAttributeResponse: get list of attributes for a given service record handle
* Service SearchAttributeRequest/SearchAtrributeResponse: for all service records that match ServiceSearchPattern: return list of attributes that match AttributeIDList
* Transaction ID of response = ID of request
* param lengh in bytes
* Continuation state parameter: send to client to denote further data (max 16 bytes)
* To get RFCOMM channel, we use SDP_ServiceSearchAttributeRequest(RFCOMM service, RFCOMM type)
Implementation:
* DataElement creation API - no extra memory
* helper functions:
* attribute ID in AttributeIDList
* get attributes specified by AttributeIDList
* service record contains UUID
* does service search pattern matches record
* get attribute value (DE) for attribute ID
* create service record handle (incl. ServiceRecordHandle management)
* visitor pattern for DES traversal
* call handler on every element: int handle_element(uint8_t element, void *context) - done?
* Dispatch packets for protocols implemented by BTdaemon
* add packet_handler to l2cap_service_t and l2cap_channel_t