> > What is going on here? I thought the value is already in two's > > complement... Is the above equivalent of > > > > if (value < 0) > > value = -value; > > > > ? If so, why? If not, can you add a comment? > > Right, then, will use this instead: > > static int get_battery_current(void) > { > s16 value; > > value = (ec_read(REG_BAT_CURRENT_HIGH) << 8) | > (ec_read(REG_BAT_CURRENT_LOW)); > > return abs(value); > } That's certainly better. But... why not return signed value? Current flowing from the battery is certainly very different from current flowing into it... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html