打印

一个设备接口实例

[复制链接]
650|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2021-11-29 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

device.h:
#ifndef __DEVICE_H__
#define __DEVICE_H__

#ifndef NULL
#define NULL ((void *)0)
#endif

typedef int (*on_recv_fun)(void *);

typedef struct {
        on_recv_fun on_recv;
}device_methods_t;


typedef struct {
        void *pdev;
        device_methods_t* methods;
}device_interface_t;


int register_dev(const char* name, device_interface_t devi);


#endif

使用特权

评论回复

相关帖子

沙发
keer_zu|  楼主 | 2021-11-29 20:17 | 只看该作者
device.c:

#include <stdio.h>
#include <string.h>
#include "device.h"

device_interface_t g_device;

int register_dev(const char* name, device_interface_t *devi)
{
        if(devi == NULL) {
                printf("%d: devi is NULL!\n",__LINE__ + 1);
                return -__LINE__;
        }
       
        if(name == NULL || devi->methods == NULL || devi->pdev == NULL) {
                printf("%d: name or methods or pdev is NULL!\n",__LINE__ + 1);
                return -__LINE__;
        }

        g_device.methods = devi->methods;
        g_device.pdev = devi->pdev;
       
        return 0;
}




使用特权

评论回复
板凳
keer_zu|  楼主 | 2021-11-29 20:42 | 只看该作者

dev_485.c:

#include <stdio.h>
#include "dev_485.h"

static int on_485_recv(void *param)
{
        if(param ==NULL){
                printf("%d: param NULL!\n",__LINE__ + 1);
                return -__LINE__;
        }
        
        return 0;
}


device_methods_t dev_485_methords = {
        .on_recv = on_485_recv
};

device_485_t g_dev_485;



int dev_485_init(void)
{
        device_interface_t devi = {
                .pdev = &g_dev_485,
                .methods = &dev_485_methords
        };

        int ret = register_dev("485",&devi);
        
        return ret;
}


使用特权

评论回复
地板
keer_zu|  楼主 | 2021-11-29 20:44 | 只看该作者
dev_485.h:

#ifndef __DEV_485_H__
#define __DEV_485_H__

#include "device.h"

typedef struct {
        char *name;
}device_485_t;


int dev_485_init(void);


#endif


使用特权

评论回复
5
qin552011373| | 2021-11-30 09:29 | 只看该作者
这些都是楼主自己项目里面自己写的吗?

使用特权

评论回复
6
keer_zu|  楼主 | 2021-11-30 10:39 | 只看该作者
qin552011373 发表于 2021-11-30 09:29
这些都是楼主自己项目里面自己写的吗?

上面的代码是我昨天下午刚写的,用在当前项目中的

使用特权

评论回复
7
qin552011373| | 2021-12-1 11:17 | 只看该作者
keer_zu 发表于 2021-11-30 10:39
上面的代码是我昨天下午刚写的,用在当前项目中的

不问的话还以为你从网上搞的,主要是速度太快了

使用特权

评论回复
8
keer_zu|  楼主 | 2021-12-2 10:14 | 只看该作者
qin552011373 发表于 2021-12-1 11:17
不问的话还以为你从网上搞的,主要是速度太快了

之前的讲解和文件系统的例子是从别的地方拷贝的,这个例子是自己写的。

使用特权

评论回复
9
qin552011373| | 2021-12-2 14:04 | 只看该作者
keer_zu 发表于 2021-12-2 10:14
之前的讲解和文件系统的例子是从别的地方拷贝的,这个例子是自己写的。 ...

我以为全部自己手写的,不过也很快了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1314

主题

12271

帖子

53

粉丝