blob: 77f18d00a8793cf175095a6d985bd167167b0f95 [file] [log] [blame]
class OpCodes:
"""USB Control Transfer operation codes"""
setMainFineResistorOffset=0x02 #LVPM Calibration value, 8-bits signed, ohms = 0.05 + 0.0001*offset
setMainCoarseResistorOffset=0x11 #LVPM Calibration value, 8-bits signed, ohms = 0.05 + 0.0001*offset
setUsbFineResistorOffset=0x0D #LVPM Calibration value, 8-bits signed, ohms = 0.05 + 0.0001*offset
setUsbCoarseResistorOffset=0x12 #LVPM Calibration value, 8-bits signed, ohms = 0.05 + 0.0001*offset
setAuxFineResistorOffset=0x0E #LVPM Calibration value, 8-bits signed, ohms = 0.1 + 0.0001*offset
setAuxCoarseResistorOffset=0x13 #LVPM Calibration value, 8-bits signed, ohms = 0.1 + 0.0001*offset
calibrateMainVoltage=0x03 #Internal voltage calibration, affects accuracy of setHVMainVoltage
resetPowerMonitor=0x05 #Reset the PIC. Causes disconnect.
setPowerupTime=0x0C #time in milliseconds that the powerup current limit is in effect.
setTemperatureLimit=0x29 #Temperature limit in Signed Q7.8 format
setUsbPassthroughMode=0x10 #Sets USB Passthrough mode according to value. Off = 0, On = 1, Auto = 2
setMainFineScale = 0x1A #HVPM Calibration value, 32-bits, unsigned
setMainCoarseScale = 0x1B #HVPM Calibration value, 32-bits, unsigned
setUSBFineScale = 0x1C #HVPM Calibration value, 32-bits, unsigned
setUSBCoarseScale = 0x1D #HVPM Calibration value, 32-bits, unsigned
setAuxFineScale = 0x1E #HVPM Calibration value, 32-bits, unsigned
setAuxCoarseScale = 0x1F #HVPM Calibration value, 32-bits, unsigned
setVoltageChannel = 0x23 #Sets voltage channel: Value 00 = Main & USB voltage measurements. Value 01 = Main & Aux voltage measurements
SetPowerUpCurrentLimit = 0x43 #Sets power-up current limit. HV Amps = 15.625*(1.0-powerupCurrentLimit/65535) #LV amps = 8.0*(1.0-powerupCurrentLimit/1023.0)
SetRunCurrentLimit = 0x44 #Sets runtime current limit HV Amps = 15.625*(1.0-powerupCurrentLimit/65535) #LV amps = 8.0*(1.0-powerupCurrentLimit/1023.0)
setMainVoltage = 0x41 # Voltage = value * 1048576
getSerialNumber = 0x42
SetMainFineZeroOffset=0x25 #Zero-level offset
SetMainCoarseZeroOffset = 0x26 #Zero-level offset
SetUSBFineZeroOffset = 0x27 #Zero-level offset
SetUSBCoarseZeroOffset = 0x28 #Zero-level offset
FirmwareVersion = 0xC0 #Read-only, gets the firmware version
ProtocolVersion = 0xC1 #Read-only, gets the Protocol version
HardwareModel = 0x45 #0 = unknown, 1 = LV, 2 = HV
getStartStatus = 0xC4
dacCalLow = 0x88 #2.5V ADC Reference Calibration
dacCalHigh = 0x89 #4.096V ADC Reference Calibration
Stop = 0xFF
class ReturnCodes:
"""Status return codes"""
#TODO: Should really consolidate this with a few other misc values.
ERROR = 0xfffffffE
CURRENT_FIRMWARE_REV = 32
class HardwareModel:
"""Hardware Model Types"""
UNKNOWN = 0
LVPM = 1
HVPM = 2
class Control_Codes:
"""USB Protocol codes."""
USB_IN_PACKET = 0xC0
USB_OUT_PACKET = 0x40
USB_REQUEST_START = 0x02
USB_REQUEST_STOP = 0x03
USB_SET_VALUE = 0x01
USB_REQUEST_RESET_TO_BOOTLOADER = 0xFF
class Conversion:
"""Values used for converting from desktop to the PIC"""
FLOAT_TO_INT = 1048576
class USB_Passthrough:
"""Values for setting or retrieving the USB Passthrough mode."""
Off = 0
On = 1
Auto = 2
class VoltageChannel:
"""Values for setting or retrieving the Voltage Channel."""
Main = 0
USB = 1
Aux = 2
class statusPacket:
"""Values stored in the Power Monitor EEPROM. Each corresponds to an opcode"""
firmwareVersion = 0 #Firmware version number.
protocolVersion = 0 #Protocol version number.
temperature = 0 #Current temperature reading from the board.
serialNumber = 0 #Unit's serial number.
powerupCurrentLimit = 0 #Max current during startup before overcurrent protection circuit activates. LVPM is 0-8A, HVPM is 0-15A.
runtimeCurrentLimit = 0 #Max current during runtime before overcurrent protection circuit activates. LVPM is 0-8A, HVPM is 0-15A.
powerupTime = 0 #Time in ms the powerupcurrent limit will be used.
temperatureLimit = 0 #Temperature limit in Signed Q7.8 format
usbPassthroughMode = 0 # Off = 0, On = 1, Auto = 2
mainFineScale = 0 #HVPM Calibration value, 32-bits, unsigned
mainCoarseScale = 0#HVPM Calibration value, 32-bits, unsigned
usbFineScale = 0#HVPM Calibration value, 32-bits, unsigned
usbCoarseScale = 0#HVPM Calibration value, 32-bits, unsigned
auxFineScale = 0#HVPM Calibration value, 32-bits, unsigned
auxCoarseScale = 0#HVPM Calibration value, 32-bits, unsigned
mainFineZeroOffset = 0 #HVPM-only, Zero-level offset
mainCoarseZeroOffset = 0 #HVPM-only, Zero-level offset
usbFineZeroOffset = 0 #HVPM-only, Zero-level offset
usbCoarseZeroOffset = 0 #HVPM-only, Zero-level offset
hardwareModel = 0 #HVPM-only, Zero-level offset
mainFineResistorOffset = 0 #signed, ohms = 0.05 + 0.0001*offset
mainCoarseResistorOffset = 0 #signed, ohms = 0.05 + 0.0001*offset
usbFineResistorOffset = 0 #signed, ohms = 0.05 + 0.0001*offset
usbCoarseResistorOffset = 0 #signed, ohms = 0.05 + 0.0001*offset
auxFineResistorOffset = 0 #signed, ohms = 0.10 + 0.0001*offset
auxCoarseResistorOffset = 0 #signed, ohms = 0.10 + 0.0001*offset
dacCalLow = 0
dacCalHigh = 0
class BootloaderCommands:
"""Bootloader opcodes. Used when reflashing the Power Monitor"""
ReadVersion = 0x00
ReadFlash = 0x01
WriteFlash = 0x02
EraseFlash = 0x03
ReadEEPROM = 0x04
WriteEEPROM = 0x05
ReadConfig = 0x06
WriteConfig = 0x07
Reset = 0xFF
class BootloaderMemoryRegions:
"""Memory regions of the PIC18F4550"""
Flash = 0x00
IDLocs = 0x20
Config = 0x30
EEPROM = 0xf0
class hexLineType:
"""line types used in the intel hex format. Used when reflashing the Power Monitor."""
Data = 0
EndOfFile = 1
ExtendedSegmentAddress = 2
StartSegmentAddress = 3
ExtendedLinearAddress = 4
StartLinearAddress = 5
class SampleType(object):
"""Corresponds to the sampletype field from a sample packet."""
Measurement = 0x00
ZeroCal = 0x10
invalid = 0x20
refCal = 0x30