# Todo List

page Main Page
  - Finalize master-slave communication protocol
  - Implement discharge mode

Global Battery_struct::ChargeInhibit
  Changed by master?

Global ADC_Init
  Odd offset measurement for ADC3_G20_OS? It is never used anyway.

Global ADC_ISR
  IIN (#7 in sequence) is never used.

Global ADC_ISR
  Signed is never set. Signed measurements of IBAT will halve the measuring sensitivity, and is therefore not favourable. At the moment, great currents (f.ex. if something happens with the battery) will be interpreted as negative, which might cause unfavourable behaviour during charging (depending on what PWM behaviour is defined), f.ex. ConstantCurrent() will keep increasing the PWM output. This results in an PWM controller error being flagged and the program going into error-state and eventually reinitializing.

Global BatteryDataRefresh
  Updating BattData with these data. Specs needed.

Global BatteryStatusRefresh
  If ABORT_IF_PWM_MAX is defined this last check battery presence check is redundant since charging will be aborted due to low current at max duty cycle. That is preferrable since the charge current reading is not 100% proof.

Global HaltNow
  "Priorities" of standard error checks OK?

Global main
  The variable inp is passed to all state functions, but is not used for anything yet. Remove?

Global Discharge
  Run on batteries, if battery voltage high enough.

Global Discharge
  Jump here when mains voltage drops below threshold

Global SPI_Init
  Timer should reset SPI protocol on timeout

Global USI_OVF_ISR
  Variable writing not implemented yet.

Global USI_OVF_ISR
  EEPROM/SRAM flag doesn't really do anything with this implementation.