展讯的8825平台 在TP上实现距离传感器的功能

需求:某些客户为了节约成本吧,将距离传感器拿掉,相应的功能用TP触摸屏来模拟实现。流程图如下
 

移植原理:去掉手机上的感光Sensor,用TP来模拟实现感光sensor在通话时亮屏和灭屏的功能。
当然了TP本身是需要支持相应的功能的。可以联系模组厂进行调试,导入firmware,然后才在代码中进行相应的修改。
1. 首先在目录/sys/bus/i2c/devices下添加相应的I2C设备,在ProximitySensor.cpp中添加:
//the below characters is the origin codes,modified to make the JNI work corretly
#define ENALBE_PS_SENSOR  "/sys/bus/i2c/devices/i2c-2/2-0038/enable_ps_sensor"
 
2. 在sensor.cpp中取代感光sensor
修改原则是用模拟距离传感器的代码替换原先感光sensor的代码。
在sensor列表中添加支持模拟距离传感器的模块代码,以敦太的ft5306为例。
static const struct sensor_t sSensorList[] ={
。。。 
 
。。。};
接下来是声明,替换感光sensor的相关部分。
 
 
 
3. 加入编译选项,在Android.mk.3rdparty
     sensors.cpp  \
4. 在tp驱动里加入代码
先在代码里声明个宏开关吧
#define TP_PROXIMITY_SENSOR
在结构体中添加必要的成员变量
struct pixcir_i2c_ts_data {
 struct i2c_client *client;
 struct input_dev *input;
 struct ts_event  event;
 //const struct pixcir_ts_platform_data *chip;
 bool exiting;
#ifdef TP_PROXIMITY_SENSOR
 //struct mutex update_lock;
 //struct delayed_work dwork; /* for PS interrupt */
 struct input_dev *input_dev_ps;

 unsigned int enable;
 unsigned int control;

 /* control flag from HAL */
 unsigned int enable_ps_sensor;

 unsigned int ps_detection;  /* 0 = near-to-far; 1 = far-to-near */
 //unsigned int ps_data;   /* to store PS data */
#endif
};
创建sysfs接口,用于hal层调用
static DEVICE_ATTR(enable_ps_sensor, S_IWUGO | S_IRUGO,
       ft5306_show_enable_ps_sensor, ft5306_store_enable_ps_sensor);

static struct attribute *ft5306_attributes[] = {
 &dev_attr_enable_ps_sensor.attr,
 NULL
};
当你想要实现的接口名字是enable_ps_sensor的时候,需要实现结构体struct attribute *dev_attrs[]
其中成员变量的名字必须是&dev_attr_enable_ps_sensor.attr,然后再封装
static const struct attribute_group ft5306_attr_group = {
 .attrs = ft5306_attributes,
};
最后就可以创建接口了,这个是在probe里面创建的哦
#ifdef TP_PROXIMITY_SENSOR
 error = sysfs_create_group(&client->dev.kobj, &ft5306_attr_group); 
 if (error)
  input_unre

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值