"The controller 50 may be a microprocessor or other circuit to control charging and discharging of the battery pack 10, and also provides safety and control functions including communication, identification, status, diagnostic, logging and switching." . . . .