Adaptive State of Charge Estimation For Battery Packs