微雪A20 配置 红外遥控器

1,文件位置: lihee/linux-3.4/drivers/input/keyboard/sun7i-ir.c
     第一步:修改c代码
         static int ir_code_valid(unsigned long code)
         {
                 unsigned long tmp1, tmp2;
                //添加代码
                printk(KERN_DEBUG "IR_CODE0x%x\n",code);

               #ifdef IR_CHECK_ADDR_CODE

2,编译驱动 并烧写到微雪A20板上面(这步微雪官方文档上有,略过)

      我的遥控器下图     ,我的微雪A20如下图

            

        

3,在板上焊接红外接受头,并用红外遥控器对准红外接受头按几次

      在shell 中进入 android  ,输入adb shell

       在shell中输入dmesg -n -8|grep IR_CODE

        

        可以打印出来的信息有0xffffffff,0xec13bf00,0xee11bf00,0x0 ,其中0xffffffff应是       干扰信号,系统会自动过滤,只剩两个 0xee11bf00,0xec13bf00 (我按了两个键,分别按两次),看到重复的部分了没有,bf00 ,那么0xbf00 就应该是遥控器的用户码了。前面几位是按键的地址码。


4,接下来更改三个地方:

            (1)、直接屏蔽lihee/linux-3.4/drivers/input/keyboard/ir-keymap.h中的
                  #define IR_CHECK_ADDR_CODE

            (2)、但为了防止其它遥控器干扰,还是需要修改该文件中的

                       (下面括号中的数值)

                       #define IR_ADDR_CODE  (0xbf00)

             (3)修改lihee/linux-3.4/drivers/input/keyboard/sun7i-ir.c 中

                    static int   ir_code_valid(unsigned long code) 函数的红色的地方改为用户码
                    if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_addr_code", &ir_addr_code)){
                                            pr_err("%s: ir_addr_code script_get_item error. \n",__func__ );
                                            ir_addr_code = 0xbf00;

5,记录你要用到按键值由于我只用到了上下左右,确定,音量+,音量-,返回键,

      所需 要分别记录它们的键值,我分别记录了下来,就是按照第三步的方法按一下

     , 查看一下,记录下来以后用。

电源:0xff00bf00
静音:0x fe01bf00
上0x ec13bf00
下0x eb14bf00
右0x ed12bf00
左0x ee11bf00
确定:0x ef10bf00
退出0x ea15bf00
菜单0x e916bf00
音量+0x b748bf00
音量-0x b649bf00
红0x b34cbf00
绿0x b24dbf00
1:0x fd02bf00
2:0x fc03bf00
3:0x fb04bf00
4:0x fa05bf00
5:0x f906bf00
6:0x f807bf00
7:0x f708bf00
8:0x f609bf00
9:0x f50abf00

     举个例子:

      例如:某键发送码:ed 12       (注意 ,是我的上下左右中 右键)


          1. Driver 中的处理:

             在中端处理程序中,Driver得到码值: ir_code. 并利用ir_keycodes列表中

            的对应 项作为发给Input子系统的KeyCode。

               input_report_key(ir_dev,ir_keycodes[(ir_code>>16)&0xff],0);

                input_sync(ir_dev);

            所以:按键 ed 12. 则发送: ir_keycodes[0x12] . 这个值为18.

             也就是说:它向Input子系统中发送的KeyCode= 18。

6,改写 键值表 sun7i-ir.kl 。位于源码目录包

           android/device/softwinner/sugar-cubieboard2/sun7i-ir.kl

   我改写的

         

         其他的没用就注释掉了,保存,编译。

7,生成andrioid 固件,并烧写进开发板中。这是你的遥控器就能使用啦!



参考博客:

      1,http://www.cubie.cc/forum.php?mod=viewthread&tid=3162&highlight=%E7%BA%A2%E5%A4%96

      2,http://blog.sina.com.cn/s/blog_602f87700101he9v.html   






正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下边有“点赞”二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!



  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值