#pragma once #include #include extern struct avl_tree device_types; typedef struct _device_type device_type_t; typedef struct _device { struct avl_node node; const device_type_t *type; } device_t; struct _device_type { struct avl_node node; device_t * (*process_config)(const char *name, struct json_object *config); void (*free)(device_t *device); void (*init)(device_t *device); void (*update)(device_t *device); void (*release)(device_t *device); }; void register_device_type(const char *name, device_type_t *device_type); const device_type_t * get_device_type(const char *name);