65 lines
2.5 KiB
C
65 lines
2.5 KiB
C
#ifndef INCLUDED_DRV_DEVICE_H
|
|||
|
|
#define INCLUDED_DRV_DEVICE_H
|
||
|
|
|
||
|
|
#ifndef INCLUDED_OS_TYPES_H
|
||
|
|
#include <os_types.h>
|
||
|
|
#endif /*INCLUDED_OS_TYPES_H*/
|
||
|
|
|
||
|
|
#ifndef INCLUDED_OS_COMPILER_H
|
||
|
|
#include <os_compiler.h>
|
||
|
|
#endif /*INCLUDED_OS_COMPILER_H*/
|
||
|
|
|
||
|
|
#ifndef INCLUDED_OS_MACROS_H
|
||
|
|
#include <os_macros.h>
|
||
|
|
#endif /*INCLUDED_OS_MACROS_H*/
|
||
|
|
|
||
|
|
|
||
|
|
#ifndef INCLUDED_OS_LIST_H
|
||
|
|
#include <os_list.h>
|
||
|
|
#endif /*INCLUDED_OS_LIST_H*/
|
||
|
|
|
||
|
|
|
||
|
|
/* ------------------------------------------------------------------------------------------------------------------ */
|
||
|
|
/* */
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
void* handle;
|
||
|
|
os_err_t (*init)(void* handle, void* args);
|
||
|
|
os_err_t (*destroy)(void* handle, void* args);
|
||
|
|
os_err_t (*open)(void* handle, void* args);
|
||
|
|
os_err_t (*close)(void* handle, void* args);
|
||
|
|
os_err_t (*read)(void* handle, uint8_t * buf, os_size_t buf_size, os_size_t * rd_size, void* args);
|
||
|
|
os_err_t (*write)(void* handle, const uint8_t * data, os_size_t data_size, os_size_t * wr_size, void* args);
|
||
|
|
void* args;
|
||
|
|
char name[OS_CFG_NAME_MAX];
|
||
|
|
}drv_device_t;
|
||
|
|
|
||
|
|
#define drv_device_init(dev) (dev)->init((dev)->handle, (dev)->args)
|
||
|
|
#define drv_device_destroy(dev) (dev)->destroy((dev)->handle, (dev)->args)
|
||
|
|
#define drv_device_open(dev) (dev)->open((dev)->handle, (dev)->args)
|
||
|
|
#define drv_device_close(dev) (dev)->close((dev)->handle, (dev)->args)
|
||
|
|
#define drv_device_read(dev, buf, buf_sz, rd_sz) (dev)->read((dev)->handle, (uint8_t*)(buf), (os_size_t)(buf_sz), rd_sz, (dev)->args)
|
||
|
|
#define drv_device_write(dev, buf, buf_sz, wr_sz) (dev)->write((dev)->handle, (const uint8_t*)(buf), (os_size_t)(buf_sz), wr_sz, (dev)->args)
|
||
|
|
|
||
|
|
/* ------------------------------------------------------------------------------------------------------------------ */
|
||
|
|
/* */
|
||
|
|
|
||
|
|
void drv_device_system_init(void);
|
||
|
|
|
||
|
|
void drv_device_register(drv_device_t* self,
|
||
|
|
const char* name,
|
||
|
|
void* handle,
|
||
|
|
os_err_t (*init)(void* handle, void* args),
|
||
|
|
os_err_t (*destroy)(void* handle, void* args),
|
||
|
|
os_err_t (*open)(void* handle, void* args),
|
||
|
|
os_err_t (*close)(void* handle, void* args),
|
||
|
|
os_err_t (*read)(void* handle, uint8_t * buf, os_size_t buf_size, os_size_t * rd_size, void* args),
|
||
|
|
os_err_t (*write)(void* handle, const uint8_t * data, os_size_t data_size, os_size_t * wr_size, void* args),
|
||
|
|
void* args);
|
||
|
|
|
||
|
|
void drv_device_unregister(drv_device_t* self);
|
||
|
|
|
||
|
|
drv_device_t* drv_device_find(const char* name);
|
||
|
|
|
||
|
|
#endif /*INCLUDED_DRV_DEVICE_H*/
|