My current device Huawei Honor 6 comes with a 3100 mAh battery. I was therefore surprised to see 3C Toolbox Pro report the capacity as 4000 mAh.
I mailed the developer of the app and his reply was on these lines
In Android, one can get the stock hard-coded battery capacity from battery profiles, an hidden API in Android. That’s the one of the 2 sources the app uses.
The other source is in the kernel, usually under /sys/devices/power_supply/battery/charge_full_design
( To know the path on your device, from 3C Toolbox, tap request support from Help and support menu. An email will be generated to the developer having information about your device, including battery_info.txt. This file amongst other things specifies the path of second source )
So, the battery capacity and state of battery as reported in percentage depends on from which of these two sources it is being read and the two sources could hold different values (In my case, it was the stock ROM shipped with wrong capacity in the battery profiles)
This explanation fits in well with battery capacity being reported differently by apps as also mismatched battery readings using an extended battery (Note: These two questions are of '14 vintage and based on the location of battery files as mentioned, I have answered)
I have been scouring the net, various forums, Android Developers etc to get an authoritative source for this rather than a mail communication. This would help me understand better and also answer such questions with a good reference
Can someone point to an authoritative source that supports or offers an alternative explanation ?
Edit: I am looking for generic information , not specific to my device