Android—GSensor驱动与HAL/Framework

1、驱动文件RANGE:

(1)

/*
  Range: unit(ug 1g=1 000 000 ug)
  option(2g,4g,8g)
  G would be defined on android HAL
  Precision: bit wide of valid data
  Boundary: Max positive count
  Gravity_step: gravity value indicated by per count
 */
#define FREAD_MASK				0 /* enabled(1<<1) only if reading MSB 8bits*/
#define MMA845X_RANGE			2000000
/* mma8452 */
#define MMA8452_PRECISION       12
#define MMA8452_BOUNDARY        (0x1 << (MMA8452_PRECISION - 1))
#define MMA8452_GRAVITY_STEP    MMA845X_RANGE / MMA8452_BOUNDARY


(2)

result = ((int)high_byte << (MMA8452_PRECISION-8)) | ((int)low_byte >> (16-MMA8452_PRECISION)); //合并数据
if (result < MMA8452_BOUNDARY) //判断符号
    result = result* MMA8452_GRAVITY_STEP;
else
    result = ~( ((~result & (0x7fff>>(16-MMA8452_PRECISION)) ) + 1) * MMA8452_GRAVITY_STEP) + 1;
		


2、HAL层

(1)MMA IOCTL (mma8452.h )
#define MMAIO 0xA1
/* IOCTLs for MMA8452 library */
#define ECS_IOCTL_INIT                  _IO(MMAIO, 0x01)
// #define ECS_IOCTL_RESET                _IO(MMAIO, 0x04)
#define ECS_IOCTL_CLOSE           _IO(MMAIO, 0x02)
#define ECS_IOCTL_START             _IO(MMAIO, 0x03)
// #define ECS_IOCTL_GETDATA               _IOR(MMAIO, 0x08, char[RBUFF_SIZE+1])
/* IOCTLs for APPs */
#define ECS_IOCTL_APP_SET_RATE _IOW(MMAIO, 0x10, char)
(2)(nusensors.h)
#define ACCELERATION_RATIO_ANDROID_TO_HW        (9.80665f / 1000000)
(3)(MmaSensor.c
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值