Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955635
  • 博文数量: 376
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-13 08:42
文章分类

全部博文(376)

文章存档

2014年(11)

2013年(88)

2012年(260)

2011年(17)

分类: LINUX

2013-09-24 17:09:09

原文地址:battery capacity check 作者:linux_hope

电池电量与电压映射关系的建立
   
unsigned int const  bat_capacity_table[TABLE_SIZE][2]=
{
  {4150, 100}, {4100, 96},
  {4050, 92}, {4020, 88},
  {3980, 83}, {3950, 79},
  {3920, 75}, {3900, 71},
  {3860, 67}, {3830, 63},
  {3810, 58}, {3770, 50},
  {3750, 42}, {3720, 33},
  {3700, 25}, {3640, 17},
  {3580, 8}, {3000, 0},
}   
 
unsigned int charger_check_voltage(uint16 bat_voltage)
{
   uint16 voltage_level = 0;
   uint16 index = 0;
 
   for(index = 0;index < TABLE_SIZE - 1;index++)
   {
      if(bat_voltage <= bat_capacity_table[index][0] &&
          (bat_voltage > bat_capacity_table[index+1][0]))
       {
            voltage_level = bat_capacity_table[index+1][1]+
                (bat_voltage-bat_capacity_table[index+1][0])/
                (bat_capacity_table[index][0]-bat_capacity_table[index+1][0])*
                (bat_capacity_table[index][1]-bat_capacity_table[index+1][1]);
            break;
        }
   }
   if(bat_voltage <= bat_capacity_table[TABLE_SIZE-1][0])
   {
        voltage_level = bat_capacity_table[TABLE_SIZE-1][0]);
    }
   
   if(bat_voltage >= bat_capacity_table[0][0])
   {
        voltage_level = bat_capacity_table[0][0]);
    }
    return voltage_level;
}
 
阅读(791) | 评论(0) | 转发(0) |
0

上一篇:linux 电池驱动

下一篇:内核通知机制

给主人留下些什么吧!~~