A battery management controller (202, 802) comprising: analog-to-digital conversion circuitry configured to convert analog signals (214, 216, 222), indicative of a current battery voltage (V N), a current battery current (I N), and a current battery temperature (T N) of a battery, to digital signals; a memory configured to store a remaining-capacity lookup table (aRC (V, I, T)) that comprises a plurality of groups of data, wherein each group of said groups of data includes a voltage, a current, a temperature, and a parameter (aRC, aSoC) associated with a remaining capacity (aRC) that corresponds to said voltage, said current and said temperature; and a processor, coupled to said analog-to-digital conversion circuitry and said memory, and configured to receive a signal (232A, 232B), indicative of a battery current (I BAT), from said analog-to-digital conversion circuitry thereby counting the amount of charges (Q(t)) flowing through said battery, configured to search said remaining-capacity lookup table (aRC (V, I, T)) for a current parameter value (aRC N, aSoC N)corresponding to said current battery voltage (V N), said current battery current (I N), and said current battery temperature (T N) according said digital signals, configured to search said remaining-capacity lookup table (aRC (V, I, T)) for an end-of-discharge parameter value (aRC EOD, aSoC EOD) corresponding to an end-of-discharge voltage (V EOD) indicative for entering an end-of-discharge state to protect the battery from over-discharging, said current battery current (I N), and an end-of-discharge temperature (T EOD), configured to estimate a current full available charge capacity of said battery according to a difference between said current parameter value(aRC N, aSoC N) and said end-of-discharge parameter value (aRC EOD, aSoC EOD), and configured to estimate a current available state of charge (rSOC N) of said battery according to said current full available charge capacity and said amount of charges (Q(t)) flowing through said battery. analog-to-digital conversion circuitry configured to convert analog signals (214, 216, 222), indicative of a current battery voltage (V N), a current battery current (I N), and a current battery temperature (T N) of a battery, to digital signals; a memory configured to store a remaining-capacity lookup table (aRC (V, I, T)) that comprises a plurality of groups of data, wherein each group of said groups of data includes a voltage, a current, a temperature, and a parameter (aRC, aSoC) associated with a remaining capacity (aRC) that corresponds to said voltage, said current and said temperature; and a processor, coupled to said analog-to-digital conversion circuitry and said memory, and configured to receive a signal (232A, 232B), indicative of a battery current (I BAT), from said analog-to-digital conversion circuitry thereby counting the amount of charges (Q(t)) flowing through said battery, configured to search said remaining-capacity lookup table (aRC (V, I, T)) for a current parameter value (aRC N, aSoC N)corresponding to said current battery voltage (V N), said current battery current (I N), and said current battery temperature (T N) according said digital signals, configured to search said remaining-capacity lookup table (aRC (V, I, T)) for an end-of-discharge parameter value (aRC EOD, aSoC EOD) corresponding to an end-of-discharge voltage (V EOD) indicative for entering an end-of-discharge state to protect the battery from over-discharging, said current battery current (I N), and an end-of-discharge temperature (T EOD), configured to estimate a current full available charge capacity of said battery according to a difference between said current parameter value(aRC N, aSoC N) and said end-of-discharge parameter value (aRC EOD, aSoC EOD), and configured to estimate a current available state of charge (rSOC N) of said battery according to said current full available charge capacity and said amount of charges (Q(t)) flowing through said battery.