205 #define DISCOVERY_FIND_ADAPTER(ID, ADAPTER) do { \
207 TAILQ_FOREACH((ADAPTER), &(ID)->hpd->configuration->adapters, HPD_TAILQ_FIELD) \
208 if (strcmp((ADAPTER)->id, (ID)->aid) == 0) break; \
209 if (!(ADAPTER)) return HPD_E_NOT_FOUND; \
212 #define DISCOVERY_FIND_DEVICE(ID, DEVICE) do { \
213 hpd_adapter_t *a = NULL; \
214 DISCOVERY_FIND_ADAPTER(&(ID)->adapter, a); \
216 TAILQ_FOREACH((DEVICE), a->devices, HPD_TAILQ_FIELD) \
217 if (strcmp((DEVICE)->id, (ID)->did) == 0) break; \
218 if (!(DEVICE)) return HPD_E_NOT_FOUND; \
221 #define DISCOVERY_FIND_SERVICE(ID, SERVICE) do { \
222 hpd_device_t *d = NULL; \
223 DISCOVERY_FIND_DEVICE(&(ID)->device, d); \
225 TAILQ_FOREACH((SERVICE), d->services, HPD_TAILQ_FIELD) \
226 if (strcmp((SERVICE)->id, (ID)->sid) == 0) break; \
227 if (!(SERVICE)) return HPD_E_NOT_FOUND; \
230 #define DISCOVERY_FIND_PARAMETER(ID, PARAMETER) do { \
231 hpd_service_t *s = NULL; \
232 DISCOVERY_FIND_SERVICE(&(ID)->service, s); \
233 (PARAMETER) = NULL; \
234 TAILQ_FOREACH((PARAMETER), s->parameters, HPD_TAILQ_FIELD) \
235 if (strcmp((PARAMETER)->id, (ID)->pid) == 0) break; \
236 if (!(PARAMETER)) return HPD_E_NOT_FOUND; \
hpd_error_t discovery_copy_did(hpd_device_id_t **dst, const hpd_device_id_t *src)
hpd_error_t discovery_copy_sid(hpd_service_id_t **dst, const hpd_service_id_t *src)
hpd_error_t discovery_get_parameter_hpd(const hpd_parameter_id_t *pid, hpd_t **hpd)
hpd_error_t discovery_get_parameter_adapter(const hpd_parameter_id_t *pid, hpd_adapter_id_t **aid)
#define HPD_STR_CPY(DST, SRC)
hpd_error_t discovery_find_service(const hpd_service_id_t *id, hpd_service_t **service)
#define LOG_RETURN_E_ALLOC()
hpd_error_t discovery_set_did(hpd_device_id_t *id, hpd_t *hpd, const char *aid, const char *did)
HPD_E_ALLOC: id might be partially updated.
hpd_error_t discovery_get_device_hpd(const hpd_device_id_t *did, hpd_t **hpd)
#define DISCOVERY_FIND_SERVICE(ID, SERVICE)
hpd_error_t discovery_alloc_pid(hpd_parameter_id_t **id, hpd_t *hpd, const char *aid, const char *did, const char *sid, const char *pid)
hpd_error_t discovery_get_service_adapter(const hpd_service_id_t *sid, hpd_adapter_id_t **aid)
hpd_error_t discovery_free_sid(hpd_service_id_t *id)
hpd_error_t discovery_get_service_hpd(const hpd_service_id_t *sid, hpd_t **hpd)
#define HPD_CALLOC(PTR, NUM, CAST)
Allocates and zeros a structure.
#define DISCOVERY_FIND_ADAPTER(ID, ADAPTER)
hpd_error_t discovery_copy_pid(hpd_parameter_id_t **dst, const hpd_parameter_id_t *src)
hpd_error_t discovery_free_aid(hpd_adapter_id_t *id)
hpd_error_t discovery_set_sid(hpd_service_id_t *id, hpd_t *hpd, const char *aid, const char *did, const char *sid)
HPD_E_ALLOC: id might be partially updated.
hpd_error_t discovery_find_device(const hpd_device_id_t *id, hpd_device_t **device)
#define DISCOVERY_FIND_DEVICE(ID, DEVICE)
enum hpd_error hpd_error_t
hpd_error_t discovery_get_parameter_device(const hpd_parameter_id_t *pid, hpd_device_id_t **did)
hpd_error_t discovery_set_aid(hpd_adapter_id_t *id, hpd_t *hpd, const char *aid)
HPD_E_ALLOC: id might be partially updated.
hpd_error_t discovery_find_adapter(const hpd_adapter_id_t *id, hpd_adapter_t **adapter)
hpd_error_t discovery_free_did(hpd_device_id_t *id)
hpd_error_t discovery_copy_aid(hpd_adapter_id_t **dst, const hpd_adapter_id_t *src)
hpd_error_t discovery_free_pid(hpd_parameter_id_t *id)
hpd_error_t discovery_get_adapter_hpd(const hpd_adapter_id_t *aid, hpd_t **hpd)
#define DISCOVERY_FIND_PARAMETER(ID, PARAMETER)
hpd_error_t discovery_alloc_sid(hpd_service_id_t **id, hpd_t *hpd, const char *aid, const char *did, const char *sid)
hpd_error_t discovery_find_parameter(const hpd_parameter_id_t *id, hpd_parameter_t **parameter)
hpd_error_t discovery_get_device_adapter(const hpd_device_id_t *did, hpd_adapter_id_t **aid)
hpd_error_t discovery_alloc_aid(hpd_adapter_id_t **id, hpd_t *hpd, const char *aid)
hpd_error_t discovery_alloc_did(hpd_device_id_t **id, hpd_t *hpd, const char *aid, const char *did)
hpd_error_t discovery_get_service_device(const hpd_service_id_t *sid, hpd_device_id_t **did)
hpd_error_t discovery_get_parameter_service(const hpd_parameter_id_t *pid, hpd_service_id_t **sid)
hpd_error_t discovery_set_pid(hpd_parameter_id_t *id, hpd_t *hpd, const char *aid, const char *did, const char *sid, const char *pid)
HPD_E_ALLOC: id might be partially updated.