Current directory :
Root directory

Tree directory :
ilya.muromec@jabber.ru
  Filter :
  Language :  
 
 
#include "unistd.h"
#include <linux/power_ic.h>
#include <linux/moto_accy.h>
#include <sys/ioctl.h>
#include <fcntl.h>
 
 
typedef struct 
{
  int time;
  int timeout;
  int direction;
  int bat;
  int cur;
} BAT_INFO;
 
typedef struct
{
  int channel;
  int result;
} CHANNEL_REQUEST;
 
 
int main(int argc, char *argv[])
{
  int fd;
  int ret;
  BAT_INFO info;
  CHANNEL_REQUEST ch; 
  info.time = 0;
 
  int n;
 
 
  unsigned char charger = 0;
  unsigned char temp = 0;
 
 
 
  if (argc < 2) {
    printf ("Usage: %s -t[emperature] or-b[attary] or -c[charger] or -a[ttached cables]\n",argv[0]);
    return 1;
  }
 
  fd = open("/dev/power_ic",O_RDWR);
  switch (argv[1][1]){
    // battary
    case 'b':
      ret = ioctl (fd,POWER_IC_IOCTL_ATOD_BATT_AND_CURR,&info);
      printf("battary: %d\n", info.bat);
      break;
 
    // charger 
    case 'c':
 
      if (argc == 3) {
        int voltage = atoi(argv[2]) ;
        int mode;
 
        ret = ioctl (fd, POWER_IC_IOCTL_CHARGER_SET_CHARGE_CURRENT, mode);
        printf("set charge current %d: %d\n", voltage,ret);
 
 
      } else {
        for (n=0; n<10; n++){
          ch.channel = 3;
          ioctl (fd,POWER_IC_IOCTL_ATOD_SINGLE_CHANNEL, &ch);
          charger += ch.result >> 2;
 
         }
        printf("charger: %d\n", charger/10);
        break;
      }
 
    // temp
    case 't':
 
      ch.channel = 4;
      for (n=0; n<10; n++){
        ioctl (fd,POWER_IC_IOCTL_ATOD_SINGLE_CHANNEL, &ch);
        temp    +=  (ch.result >> 2);
 
 
      }
      printf("temp: %d\n", temp/10);
      break;
    case 'a':
      close(fd);
      fd = open("/dev/accy",O_RDWR);
 
      unsigned long int devs;
      int ret;
      char* devinfo[] = 
       {
        "none",
        "invalid",
        "not supported",
        "charger mid",
        "charger mix mpx",
        "charger fast",
        "charger fast mpx",
        "charger fast 3g",
        "carkit mid",
        "carkit fast",
        "carkit smart",
        "usb cable",
        "regression cable",
        "factory cable",
        "mono headset",
        "stereo headset",
        "emu mono headset",
        "emu stereo headset"};
 
      ioctl(fd, MOTO_ACCY_IOCTL_GET_ALL_DEVICES, &devs);
      while (devs){
        ret = generic_ffs((devs)) - 1;
        printf("%d:%s\n", ret,devinfo[ret]);
        devs &= ~(1 << (ret));
 
 
      }
 
      break;
    }
 
  return 0;
}
 
VIP: No | Used: 83M/101M | 0.045 sec / GZIP-2