Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Jan 29th, 2010 | Syntax: None | Size: 2.28 KB | Hits: 21 | Expires: Never
Copy text to clipboard
  1. --- /home/markus/linux-on-qualcomm-s-msm-android-hardware/sensors/sensors.c     2010-01-21 20:17:05.000000000 +0100
  2. +++ sensors.c   2010-01-29 10:03:31.000000000 +0100
  3.  -141,14 +141,26 @@
  4.                         fd = -1;
  5.                 }
  6.         }
  7. +       closedir(dir);
  8.         if(fd==-1) {
  9.                 int status;
  10. -               char buf[5];
  11. +               char buf[5] = {0x14,0,0,0,0};
  12. +               int retries=10;
  13. +
  14.                 fd=open("/dev/bma150", O_RDONLY);
  15. -               if(fd==-1)
  16. +               if (fd < 0) {
  17. +                       LOGD("bma_open: bma150 open FAILED");
  18.                         return fd;
  19. -               buf[0]=0x14;
  20. +               }
  21.                 bma150=1;
  22. +
  23. +               status = ioctl(fd, BMA_IOCTL_INIT, buf);
  24. +               status = ioctl(fd, BMA_IOCTL_READ, buf);
  25. +               if (status < 0) {
  26. +                        LOGE("bma_open: failed to write bwidth range: %d", status);
  27. +                       return status;
  28. +               }
  29. +
  30.                 // 2G = -2G .. 2G
  31.                 // 4G = -4G .. 4G
  32.                 // 8G = -8G .. 8G
  33.  -159,8 +171,12 @@
  34.                         LOGE("bma_open: failed to write bwidth range: %d", status);
  35.                         return status;
  36.                 }
  37. +               axis_order[0]=-1;
  38. +               axis_order[1]=2;
  39. +               axis_order[2]=-3;
  40. +
  41. +               parse_axis_order();
  42.         }
  43. -       closedir(dir);
  44.         return fd;
  45.  }
  46.  
  47.  -196,7 +212,7 @@
  48.         enabled=!!( ( activated&(1<<SENSOR_TYPE_ACCELEROMETER)) |
  49.                         (activated&(1<<SENSOR_TYPE_ORIENTATION)));
  50.         if(bma150) {
  51. -               char buf[8];
  52. +               char buf[8] = {0, 0, 0, 0, 0, 0, 0, 0};;
  53.                 int status;
  54.                 int mode;
  55.                 int retries=20;
  56.  -314,6 +330,7 @@
  57.  #define MS2 100.0//To be finely calibrated
  58.  double oldx=0,oldy=0,oldz=0,rawx=0,rawy=0,rawz=0;
  59.  int state=0;
  60. +int errcnt=0;
  61.  int data_poll(struct sensors_data_device_t *dev, sensors_data_t* data) {
  62.         struct input_event event;
  63.         int ret;
  64.  -387,6 +404,23 @@
  65.                         status = ioctl(sFD, BMA_IOCTL_READ_ACCELERATION, accel);
  66.                 } while( status < 0 && retries-- > 0 );
  67.  
  68. +               if (status < 0) {
  69. +                       LOGE("Error polling for data after %d retries: %d, fd=%d", retries, status, sFD);
  70. +                       if(!errcnt) {
  71. +                               errcnt=1;
  72. +                               close(sFD);
  73. +                               sFD=-1;
  74. +                               return 0;
  75. +                       }
  76. +                       else {
  77. +                               PR_LN();
  78. +                               return -1;
  79. +                       }
  80. +               } else {
  81. +                       errcnt=0;
  82. +                       LOGE("bma_open: BUFFER: %d:%d:%d", accel[0], accel[1], accel[2]);
  83. +               }
  84. +
  85.                 dat[0]=accel[0]*gFactor;
  86.                 dat[1]=accel[1]*gFactor;
  87.                 dat[2]=accel[2]*gFactor;
  88.  -488,6 +522,8 @@
  89.                 dev[0].poll=data_poll;
  90.                 if(sFD<0)
  91.                         sFD=open_input();
  92. +               if(sFD<0)
  93. +                       return -1;
  94.  #ifdef DEBUG
  95.                 LOGE("evdev_open hw data returning ok");
  96.  #endif