vibrator振荡器调试&&按键LED亮度调节

vibrator振荡器调试

一、问题:软键振动太小

1)改变振动时间和频率:

如下网址所示http://blog.sina.com.cn/s/blog_60ffec970100ejow.html

程序起动后等待3秒后,振动1秒,再等待2秒后,振动5秒,再等待3秒后,振动1秒
(路径:\packages\apps\Phone\src\com\android\phone\HapticFeedback.java)

    long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}; // OFF/ON/OFF/ON…

这个时间所决定,为上层控制。

2) 改变振动强度为vibrator.c下的

#define VIBRATOR_STABLE_LEVEL (2)//此处改为8

 

二、trace(\kernel\arch\arm\mach-sc8810\vibrator.c):

<4>[   91.643000] DO_DEBUG-------------->func=vibrator_timer_func
<4>[   91.643000] DO_DEBUG-------------->func=update_vibrator
<4>[   91.643000] DO_DEBUG-------------->func=set_vibrator,on=0
<4>[   92.257000] eic_handler
<4>[   92.257000] eic_handler
<4>[   92.350000] DO_DEBUG-------------->func=vibrator_enable
<4>[   92.351000] DO_DEBUG-------------->func=update_vibrator
<4>[   92.351000] DO_DEBUG-------------->func=set_vibrator,on=0

以上分为两种调用,前者定时器时间到了调用vibrator_timer_func
后者为上层通过

static struct timed_output_dev sprd_vibrator = { 
    .name = "vibrator",
    .get_time = vibrator_get_time,
    .enable = vibrator_enable,
};
调用vibrator_enable

 

三、分析:
1)void __init sprd_init_vibrator(void)
{
    INIT_WORK(&vibrator_work, update_vibrator);//初始化队伍,后期通过INIT_WORK()

                                                                             //调用update_vibrator

 

 

    hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);//初始化高精度定时器
    vibe_timer.function = vibrator_timer_func;        //时间到了会调用此函数

}

2)上层通过struct timed_output_dev sprd_vibrator接口调用vibrator_enable时初始化定时器,

结果就如上面trace时两种结果。

其中两者都通过schedule_work(&vibrator_work);使工作队列中的函数update_vibrator()工作

 

 

 

按键LED亮度调节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值