驱动接口API设计的一种方法

来源:互联网 发布:php最新面试题 编辑:程序博客网 时间:2024/05/17 22:22

驱动接口API设计的一种方法

xxx_interface.h

/*! \cond MMM_ID_API*//*! *  \brief *     提供给应用层的xxx命令 */typedef enum{    /*! 打开stub */    XXX_OP_OPEN = 0,    /*! 关闭stub */    XXX_OP_CLOSE,} xxx_cmd_t;extern int stub_mod_cmd(void *, void *, void *, int);/*启动xxx设备*//*int xxx_init(bool need_uninstall_led)*/#define xxx_open(a)  (int)xxx_mod_cmd((void*)(a), (void*)(0), (void*)(0), XXX_OP_OPEN)/*关闭xxx设备*//*int xxx_exit(void)*/#define xxx_close() (int)xxx_mod_cmd((void*)(0), (void*)(0), (void*)(0), XXX_OP_CLOSE)

xxx_entry.h

typedef int (*xxx_func_t)(void *param0, void *param1, void *param2);typedef struct{    xxx_func_t open;    xxx_func_t close;} stub_hal_ops_t;

xxx_entry.c

xxx_hal_ops_t *g_xxx_ops;const xxx_hal_ops_t xxx_ops[] ={    xxx_open,    xxx_close,    NULL,};int32 inner_xxx_open(void* param0, void* param1, void* param2){    int32 ret_val;    g_xxx_ops = xxx_ops;    ret_val = g_xxx_ops->open(param0, param1, param2);    return ret_val;}int xxx_mod_cmd(void* param0, void* param1, void* param2, int cmd){    switch (cmd)    {        case XXX_OP_OPEN:        return inner_xxx_open(param0, param1, param2);        case XXX_OP_CLOSE:        return g_xxx_ops->close(param0, param1, param2);    }    return -1;}
在底层对这两个代码进行实现xxx_openxxx_close
0 0
原创粉丝点击