ap3216c.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/device/driver.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/device/class.h>
/*
GET_AP3216是一个ioctl命令,用于从设备中获取AP3216数据。_IOR宏用于创建一个读取命令,'G'表
示命令的类型,1表示命令的序号,int表示命令的参数类型。
GET_CMD_SIZE(cmd)是一个宏函数,用于获取ioctl命令的参数大小。该宏使用了位操作,将命令右移
16位后与0x3fff进行按位与操作,从而得到参数的大小。
AP3216C_ADDR是AP3216C传感器的地址,用于在I2C总线上唯一标识设备。
AP3216CRD_ADDR是用于读取AP3216C传感器数据的寄存器地址。
CNAME是设备的名称,用于在设备驱动程序中标识设备。
*/
#define GET_AP3216 _IOR('G', 1, int)
#define GET_CMD_SIZE(cmd) ((cmd >> 16) & 0x3fff)
#define AP3216C_ADDR 0x00
#define AP3216CRD_ADDR 0x0c
#define CNAME "ap3216c"
/*
cdev是指向struct cdev的指针,用于表示字符设备对象。
major是主设备号,用于唯一标识设备驱动程序所使用的字符设备。
minor是次设