#ifndef DEVICE_H #define DEVICE_H #include struct device_t; typedef struct device_vtable_t { uint8_t (*read)( void *obj, uint16_t addr ); void (*write)( void *obj, uint16_t addr, uint8_t data ); void (*deinit)( void *obj ); } device_vtable_t; typedef struct device_t { device_vtable_t const *vtable; char *name; } device_t; void device_init( device_t *device, const char *name ); uint8_t device_read( void *obj, uint16_t addr ); void device_write( void *obj, uint16_t addr, uint8_t data ); void device_deinit( void *obj ); #endif