New UI lib, OOP refactoring, new frames added #1
+281
@@ -0,0 +1,281 @@
|
||||
package yabl
|
||||
|
||||
const (
|
||||
CONVERTERS_MAX = 18 + 1
|
||||
CONTACTOR_MAX = 18 + 1
|
||||
CONNECTOR_COUNT = 6
|
||||
CONNECTOR_MAX = CONNECTOR_COUNT + 1
|
||||
ALL_BITS = 0xFFFFFFFFFFFFFFFF
|
||||
UNIT_ID_OFFSET = 12
|
||||
UNIT_ID_MASK = 0b111111111111 << UNIT_ID_OFFSET
|
||||
ACTION_ID_MASK = 0b111111111111
|
||||
BOARD_READY_OK BoardReadyType = 0
|
||||
BOARD_READY_INFO BoardReadyType = 1
|
||||
BOARD_READY_WARNING BoardReadyType = 2
|
||||
BOARD_READY_DEBUG BoardReadyType = 3
|
||||
BOARD_READY_DEP_ERROR BoardReadyType = 4
|
||||
BOARD_READY_ERROR BoardReadyType = 5
|
||||
BOARD_READY_CRITICAL BoardReadyType = 6
|
||||
OFF BooleanType = 0
|
||||
ON BooleanType = 1
|
||||
NO_ERROR ErrorType = 0
|
||||
ERROR ErrorType = 1
|
||||
OTHER_NO_ERROR ContactorInternalOtherErrorType = 0
|
||||
NO_PENDING_CHANGES ContactorGroupChangedType = 0
|
||||
INITIALIZED_CHANGE ContactorGroupChangedType = 1
|
||||
CHANGE_IN_PROGRESS ContactorGroupChangedType = 2
|
||||
V2G_MODE_G2V V2GModeType = 0
|
||||
V2G_MODE_V2G V2GModeType = 1
|
||||
V2G_MODE_INV V2GModeType = 2
|
||||
NOT_ENABLE CpLineLevelType = 0
|
||||
TWELVE CpLineLevelType = 1
|
||||
NINE CpLineLevelType = 2
|
||||
SIX CpLineLevelType = 3
|
||||
THREE CpLineLevelType = 4
|
||||
MINUS_TWELVE CpLineLevelType = 5
|
||||
ISOLATION_STATE_UNKNOWN IsolationStateType = 0
|
||||
ONGOING IsolationStateType = 1
|
||||
PASSED IsolationStateType = 2
|
||||
WARNING IsolationStateType = 3
|
||||
FAILED IsolationStateType = 4
|
||||
AUTH AuthModeType = 0
|
||||
PNC AuthModeType = 1
|
||||
AUTH_STATE_UNKNOWN AuthStateType = 0
|
||||
AUTH_STATE_ALLOW AuthStateType = 1
|
||||
AUTH_STATE_DENY AuthStateType = 2
|
||||
CONTACTOR_NO_MODE ContactorModeType = 0
|
||||
CONTACTOR_TRANSACTION_PROCESS ContactorModeType = 1
|
||||
CONTACTOR_CUSTOM_MODE ContactorModeType = 2
|
||||
CONTACTOR_ONLY_ONE_OUT_MODE ContactorModeType = 3
|
||||
CONTACTOR_ONE_TO_ONE_OUT_MODE ContactorModeType = 4
|
||||
CONTACTOR_SIMPLE_DYNAMIC_MODE ContactorModeType = 5
|
||||
DEBUG_SWITCH_MODE_AUTO DebugSwitchModeType = 0
|
||||
DEBUG_SWITCH_MODE_OFF DebugSwitchModeType = 1
|
||||
DEBUG_SWITCH_MODE_ON DebugSwitchModeType = 2
|
||||
DEBUG_SWITCH_MODE_PERMANENT_OFF DebugSwitchModeType = 4
|
||||
DEBUG_SWITCH_MODE_PERMANENT_ON DebugSwitchModeType = 5
|
||||
|
||||
PCpuPresentEnergy PName = "CpuPresentEnergy"
|
||||
PCpuPeriphery PName = "CpuPeriphery"
|
||||
PCpuEnergySettings PName = "CpuEnergySettings"
|
||||
PCpuErrors PName = "CpuErrors"
|
||||
PCpuDebug PName = "CpuDebug"
|
||||
PPuPresentEnergy PName = "PuPresentEnergy"
|
||||
PPuPeriphery PName = "PuPeriphery"
|
||||
PPuErrors PName = "PuErrors"
|
||||
PPuDebug PName = "PuDebug"
|
||||
PSeccTargetEnergy PName = "SeccTargetEnergy"
|
||||
PSeccErrors PName = "SeccErrors"
|
||||
PLogicAuth PName = "LogicAuth"
|
||||
PLogicEnergyMode PName = "LogicEnergyMode"
|
||||
PLogicErrors PName = "LogicErrors"
|
||||
PLogicWorkingMode PName = "LogicWorkingMode"
|
||||
PContactorInternalState PName = "ContactorInternalState"
|
||||
PContactorInternalErrors PName = "ContactorInternalErrors"
|
||||
PContactorsInternalForce PName = "ContactorsInternalForce"
|
||||
PContactorInternalDebug PName = "ContactorInternalDebug"
|
||||
PPeripheryState PName = "PeripheryState"
|
||||
PPeripheryInfo PName = "PeripheryInfo"
|
||||
PPeripheryDebug PName = "PeripheryDebug"
|
||||
PConverterPresentEnergy PName = "ConverterPresentEnergy"
|
||||
PConverterErrors PName = "ConverterErrors"
|
||||
PConverterDebug PName = "ConverterDebug"
|
||||
|
||||
FContactorReady FName = "FContactorReady"
|
||||
FContactorOn FName = "ContactorOn"
|
||||
FUnexpectedState FName = "UnexpectedState"
|
||||
FIsolated FName = "Isolated"
|
||||
FDebugEnabled FName = "DebugEnabled"
|
||||
|
||||
FBoardReady FName = "BoardReady"
|
||||
FOtherError FName = "OtherError"
|
||||
FContactorGroupChanged FName = "ContactorGroupChanged"
|
||||
FUnexpectedFormation FName = "UnexpectedFormation"
|
||||
FCpuNotReady FName = "CpuNotReady"
|
||||
FPuNotReady FName = "PuNotReady"
|
||||
FDebug FName = "Debug"
|
||||
FPresentContactorMode FName = "PresentContactorMode"
|
||||
|
||||
FForceModeEnabled FName = "ForceModeEnabled"
|
||||
FForceModeValue FName = "ForceModeValue"
|
||||
|
||||
FDebugModeOn FName = "DebugModeOn"
|
||||
FDebugContactorOn FName = "DebugContactorOn"
|
||||
|
||||
FV2GMode FName = "V2GMode"
|
||||
FVoltageBefore FName = "VoltageBefore"
|
||||
FVoltageAfter FName = "VoltageAfter"
|
||||
FPresentCurrent FName = "PresentCurrent"
|
||||
|
||||
FConnectorInsert FName = "ConnectorInsert"
|
||||
|
||||
// FContactorOn FName = "ContactorOn"
|
||||
|
||||
FConnectorLocked FName = "ConnectorLocked"
|
||||
FCpLineLevel FName = "CpLineLevel"
|
||||
FIsolationState FName = "IsolationState"
|
||||
FChargingAllowed FName = "ChargingAllowed"
|
||||
FPwmEnabled FName = "PwmEnabled"
|
||||
FCpLineVoltage FName = "CpLineVoltage"
|
||||
|
||||
FAuthMode FName = "AuthMode"
|
||||
FAuthState FName = "AuthState"
|
||||
|
||||
FV2gMode FName = "V2gMode"
|
||||
FCurrentMax FName = "CurrentMax"
|
||||
FVoltageMax FName = "VoltageMax"
|
||||
FPowerMax FName = "PowerMax"
|
||||
|
||||
// FBoardReady FName = "BoardReady"
|
||||
|
||||
FNotReadySettings FName = "NotReadySettings"
|
||||
|
||||
FTargetContactorMode FName = "TargetContactorMode"
|
||||
FAvailability FName = "Availability"
|
||||
|
||||
FPowerDirectionMode FName = "PowerDirectionMode"
|
||||
|
||||
// FPresentCurrent FName = "PresentCurrent"
|
||||
|
||||
FPresentVoltage FName = "PresentVoltage"
|
||||
|
||||
FContactorInput FName = "ContactorInput"
|
||||
FCircuitBreakerInput FName = "CircuitBreakerInput"
|
||||
FCircuitBreakerPowerCBInput FName = "CircuitBreakerPowerCBInput"
|
||||
|
||||
// FCurrentMax FName = "CurrentMax"
|
||||
// FVoltageMax FName = "VoltageMax"
|
||||
// FPowerMax FName = "PowerMax"
|
||||
|
||||
FTargetBatteryVoltage FName = "TargetBatteryVoltage"
|
||||
FTargetGoalVoltage FName = "TargetGoalVoltage"
|
||||
|
||||
// FBoardReady FName = "BoardReady"
|
||||
// FOtherError FName = "OtherError"
|
||||
|
||||
FRedButtonHard FName = "RedButtonHard"
|
||||
FRedButtonSoft FName = "RedButtonSoft"
|
||||
FModulesGone FName = "ModulesGone"
|
||||
FGridVoltageHighErr FName = "GridVoltageHighErr"
|
||||
FGridVoltageHighWarn FName = "GridVoltageHighWarn"
|
||||
FGridVoltageLowWarn FName = "GridVoltageLowWarn"
|
||||
FGridVoltageLowErr FName = "GridVoltageLowErr"
|
||||
FGridVoltageLow FName = "GridVoltageLow"
|
||||
FGridVoltageHigh FName = "GridVoltageHigh"
|
||||
FGridVoltageEmpty FName = "GridVoltageEmpty"
|
||||
FNotReadySecc FName = "NotReadySecc"
|
||||
FNotReadyPu FName = "NotReadyPu"
|
||||
FNotReadyContactors FName = "NotReadyContactors"
|
||||
FDebugConvertersEnabled FName = "DebugConvertersEnabled"
|
||||
FContactorInputError FName = "ContactorInputError"
|
||||
FNotReadyPeriphery FName = "NotReadyPeriphery"
|
||||
|
||||
// FDebugModeOn FName = "DebugModeOn"
|
||||
|
||||
FDebugContactorInputOn FName = "DebugContactorInputOn"
|
||||
FDebugCircuitBreakerOn FName = "DebugCircuitBreakerOn"
|
||||
FDebugRedButtonSoftware FName = "DebugRedButtonSoftware"
|
||||
|
||||
// FBoardReady FName = "BoardReady"
|
||||
// FOtherError FName = "OtherError"
|
||||
|
||||
FIncorrectVoltage FName = "IncorrectVoltage"
|
||||
FIncorrectVoltageValue FName = "IncorrectVoltageValue"
|
||||
FIncorrectCurrent FName = "IncorrectCurrent"
|
||||
FIncorrectCurrentValue FName = "IncorrectCurrentValue"
|
||||
FIsolationBroken FName = "IsolationBroken"
|
||||
FCpLineBroken FName = "CpLineBroken"
|
||||
FCpLineGap69 FName = "CpLineGap69"
|
||||
FCableReady FName = "CableReady"
|
||||
FNotReadyCpu FName = "NotReadyCpu"
|
||||
|
||||
// FNotReadySecc FName = "NotReadySecc"
|
||||
|
||||
FContactorOutputError FName = "ContactorOutputError"
|
||||
FDebugContactorOutputEnabled FName = "DebugContactorOutputEnabled"
|
||||
FOutputCircuitBreakerEnabled FName = "OutputCircuitBreakerEnabled"
|
||||
FOutputCircuitBreakerEnabledValue FName = "OutputCircuitBreakerEnabledValue"
|
||||
|
||||
// FDebugModeOn FName = "DebugModeOn"
|
||||
|
||||
FDebugContactorOutputOn FName = "DebugContactorOutputOn"
|
||||
|
||||
FTargetChargingAllow FName = "TargetChargingAllow"
|
||||
|
||||
// FTargetBatteryVoltage FName = "TargetBatteryVoltage"
|
||||
// FTargetGoalVoltage FName = "TargetGoalVoltage"
|
||||
|
||||
FTargetCurrent FName = "TargetCurrent"
|
||||
|
||||
// FBoardReady FName = "BoardReady"
|
||||
|
||||
FNotReadyLogic FName = "NotReadyLogic"
|
||||
|
||||
FOtherErrorSeverity FName = "OtherErrorSeverity"
|
||||
|
||||
// FOtherError FName = "OtherError"
|
||||
|
||||
FErrorShakeSensor FName = "ErrorShakeSensor"
|
||||
FErrorCoolingGroup FName = "ErrorCoolingGroup"
|
||||
FPeripheryErrorCoolingGroup FName = "PeripheryErrorCoolingGroup"
|
||||
FErrorFireEmergency FName = "ErrorFireEmergency"
|
||||
FErrorFireEmergencyRun FName = "ErrorFireEmergencyRun"
|
||||
FErrorFireEmergencyControl FName = "ErrorFireEmergencyControl"
|
||||
FErrorOvervoltageIn FName = "ErrorOvervoltageIn"
|
||||
FPeripheryErrorPowerSupply FName = "PeripheryErrorPowerSupply"
|
||||
FErrorFan FName = "ErrorFan"
|
||||
FErrorOvervoltageOut FName = "ErrorOvervoltageOut"
|
||||
FErrorStateRemoteMode FName = "ErrorStateRemoteMode"
|
||||
FDebugShsnFanEnabled FName = "DebugShsnFanEnabled"
|
||||
FDebugShptFanEnabled FName = "DebugShptFanEnabled"
|
||||
FDebugIoBoardTestLampEnabled FName = "DebugIoBoardTestLampEnabled"
|
||||
FErrorFireEmergencyCircuitBreaker FName = "ErrorFireEmergencyCircuitBreaker"
|
||||
FErrorExtLightCircuitBreaker FName = "ErrorExtLightCircuitBreaker"
|
||||
FErrorIndicationCircuitBreaker FName = "ErrorIndicationCircuitBreaker"
|
||||
FErrorLowVoltagePowerCircuitBreaker FName = "ErrorLowVoltagePowerCircuitBreaker"
|
||||
FErrorContactorsInternalCircuitBreaker FName = "ErrorContactorsInternalCircuitBreaker"
|
||||
FErrorPlcCircuitBreaker FName = "ErrorPlcCircuitBreaker"
|
||||
|
||||
FInfoDoorOpen FName = "InfoDoorOpen"
|
||||
FTempAirIn FName = "TempAirIn"
|
||||
FTempAirOut FName = "TempAirOut"
|
||||
FStateShsnFan FName = "StateShsnFan"
|
||||
FStateShptFan FName = "StateShptFan"
|
||||
|
||||
// FDebugModeOn FName = "DebugModeOn"
|
||||
|
||||
FDebugShsnFan FName = "DebugShsnFan"
|
||||
FDebugShptFan FName = "DebugShptFan"
|
||||
FDebugIoBoardTestLamp FName = "DebugIoBoardTestLamp"
|
||||
|
||||
// FV2gMode FName = "V2gMode"
|
||||
// FPresentVoltage FName = "PresentVoltage"
|
||||
// FPresentCurrent FName = "PresentCurrent"
|
||||
|
||||
FConnectedOut FName = "ConnectedOut"
|
||||
|
||||
// FBoardReady FName = "BoardReady"
|
||||
// FOtherError FName = "OtherError"
|
||||
|
||||
FNotConnectedOut FName = "NotConnectedOut"
|
||||
FNoCommunicationConverter FName = "NoCommunicationConverter"
|
||||
FNoCommunicationPuConverter FName = "NoCommunicationPuConverter"
|
||||
FInputGridVoltageHigh FName = "InputGridVoltageHigh"
|
||||
FInputGridVoltageLow FName = "InputGridVoltageLow"
|
||||
FOutputGridVoltageHigh FName = "OutputGridVoltageHigh"
|
||||
FOutputGridVoltageLow FName = "OutputGridVoltageLow"
|
||||
FInputGridVoltage FName = "InputGridVoltage"
|
||||
FOutputGridVoltage FName = "OutputGridVoltage"
|
||||
FShortCircuit FName = "ShortCircuit"
|
||||
FOverHeat FName = "OverHeat"
|
||||
FFanBroken FName = "FanBroken"
|
||||
FOtherHardwareError FName = "OtherHardwareError"
|
||||
FDebugConvEnabled FName = "DebugConvEnabled"
|
||||
FDebugConvDisabled FName = "DebugConvDisabled"
|
||||
|
||||
// FDebugModeOn FName = "DebugModeOn"
|
||||
|
||||
FDebugEnergyOn FName = "DebugEnergyOn"
|
||||
FDebugTargetVoltage FName = "DebugTargetVoltage"
|
||||
FDebugTargetCurrent FName = "DebugTargetCurrent"
|
||||
)
|
||||
+354
@@ -0,0 +1,354 @@
|
||||
package yabl
|
||||
|
||||
import "cli-mon/can"
|
||||
|
||||
func init() {
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_011, uint(i)}
|
||||
cpe := CpuPresentEnergy{}
|
||||
cpuPresentEnergyArray[i] = &cpe
|
||||
fields := []field{
|
||||
{length: 2, setter: cpe.setPowerDirectionMode},
|
||||
{length: 10, setter: cpe.setPresentCurrent},
|
||||
{length: 11, setter: cpe.setPresentVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 50, name: PCpuPresentEnergy}
|
||||
}
|
||||
|
||||
cpuPeripheryInstance = &CpuPeriphery{}
|
||||
fields := []field{
|
||||
{length: 2, setter: cpuPeripheryInstance.setContactorInput},
|
||||
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerInput},
|
||||
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerPowerCBInput},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_014, 0}] = parameters{fields: fields, interval: 1000, name: PCpuPeriphery}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_015, uint(i)}
|
||||
ces := CpuEnergySettings{}
|
||||
cpuEnergySettingsArray[i] = &ces
|
||||
fields := []field{
|
||||
{length: 10, setter: ces.setCurrentMax},
|
||||
{length: 11, setter: ces.setVoltageMax},
|
||||
{length: 14, setter: ces.setPowerMax},
|
||||
{length: 11, setter: ces.setTargetBatteryVoltage},
|
||||
{length: 11, setter: ces.setTargetGoalVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PCpuEnergySettings}
|
||||
}
|
||||
|
||||
cpuErrorsInstance = &CpuErrors{}
|
||||
fields = []field{
|
||||
{length: 3, setter: cpuErrorsInstance.setBoardReady},
|
||||
{length: 4, setter: cpuErrorsInstance.setOtherError},
|
||||
{length: 2, setter: cpuErrorsInstance.setRedButtonHard},
|
||||
{length: 2, setter: cpuErrorsInstance.setRedButtonSoft},
|
||||
{length: 2, setter: cpuErrorsInstance.setModulesGone},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighErr},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighWarn},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowWarn},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowErr},
|
||||
{length: 11, setter: cpuErrorsInstance.setGridVoltageLow},
|
||||
{length: 11, setter: cpuErrorsInstance.setGridVoltageHigh},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageEmpty},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadySecc},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyPu},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyContactors},
|
||||
{length: 2, setter: cpuErrorsInstance.setDebugConvertersEnabled},
|
||||
{length: 2, setter: cpuErrorsInstance.setContactorInputError},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyPeriphery},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_016, 0}] = parameters{fields: fields, interval: 1000, name: PCpuErrors}
|
||||
|
||||
cpuDebugInstance = &CpuDebug{}
|
||||
fields = []field{
|
||||
{length: 2, setter: cpuDebugInstance.setDebugModeOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugContactorInputOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugCircuitBreakerOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugRedButtonSoftware},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_01A, 0}] = parameters{fields: fields, interval: 1000, name: PCpuDebug}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_021, uint(i)}
|
||||
ppe := PuPresentEnergy{}
|
||||
puPresentEnergyArray[i] = &ppe
|
||||
fields := []field{
|
||||
{length: 2, setter: ppe.setV2GMode},
|
||||
{length: 11, setter: ppe.setVoltageBefore},
|
||||
{length: 11, setter: ppe.setVoltageAfter},
|
||||
{length: 10, setter: ppe.setPresentCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 50, name: PPuPresentEnergy}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_022, uint(i)}
|
||||
pp := PuPeriphery{}
|
||||
puPeripheryArray[i] = &pp
|
||||
fields := []field{
|
||||
{length: 2, setter: pp.setConnectorInsert},
|
||||
{length: 2, setter: pp.setContactorOn},
|
||||
{length: 2, setter: pp.setConnectorLocked},
|
||||
{length: 3, setter: pp.setCpLineLevel},
|
||||
{length: 3, setter: pp.setIsolationState},
|
||||
{length: 2, setter: pp.setChargingAllowed},
|
||||
{length: 2, setter: pp.setPwmEnabled},
|
||||
{length: 9, setter: pp.setCpLineVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PPuPeriphery}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_023, uint(i)}
|
||||
pe := PuErrors{}
|
||||
puErrorsArray[i] = &pe
|
||||
fields := []field{
|
||||
{length: 3, setter: pe.setBoardReady},
|
||||
{length: 4, setter: pe.setOtherError},
|
||||
{length: 2, setter: pe.setIncorrectVoltage},
|
||||
{length: 11, setter: pe.setIncorrectVoltageValue},
|
||||
{length: 2, setter: pe.setIncorrectCurrent},
|
||||
{length: 10, setter: pe.setIncorrectCurrentValue},
|
||||
{length: 2, setter: pe.setIsolationBroken},
|
||||
{length: 2, setter: pe.setCpLineBroken},
|
||||
{length: 2, setter: pe.setCpLineGap69},
|
||||
{length: 3, setter: pe.setCableReady},
|
||||
{length: 2, setter: pe.setNotReadyCpu},
|
||||
{length: 2, setter: pe.setNotReadySecc},
|
||||
{length: 2, setter: pe.setContactorOutputError},
|
||||
{length: 2, setter: pe.setDebugContactorOutputEnabled},
|
||||
{length: 2, setter: pe.setOutputCircuitBreakerEnabled},
|
||||
{length: 12, setter: pe.setOutputCircuitBreakerEnabledValue},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PPuErrors}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_02A, uint(i)}
|
||||
pd := PuDebug{}
|
||||
puDebugArray[i] = &pd
|
||||
fields = []field{
|
||||
{length: 2, setter: pd.setDebugModeOn},
|
||||
{length: 3, setter: pd.setDebugContactorOutputOn},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PPuDebug}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_041, uint(i)}
|
||||
ste := SeccTargetEnergy{}
|
||||
seccTargetEnergyArray[i] = &ste
|
||||
fields = []field{
|
||||
{length: 2, setter: ste.setTargetChargingAllow},
|
||||
{length: 11, setter: ste.setTargetBatteryVoltage},
|
||||
{length: 11, setter: ste.setTargetGoalVoltage},
|
||||
{length: 10, setter: ste.setTargetCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PSeccTargetEnergy}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_042, uint(i)}
|
||||
se := SeccErrors{}
|
||||
seccErrorsArray[i] = &se
|
||||
fields = []field{
|
||||
{length: 3, setter: se.setBoardReady},
|
||||
{length: 2, setter: se.setNotReadyLogic},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PSeccErrors}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_046, uint(i)}
|
||||
la := LogicAuth{}
|
||||
logicAuthArray[i] = &la
|
||||
fields = []field{
|
||||
{length: 2, setter: la.setAuthMode},
|
||||
{length: 3, setter: la.setAuthState},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PLogicAuth}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_047, uint(i)}
|
||||
la := LogicEnergyMode{}
|
||||
logicEnergyMode[i] = &la
|
||||
fields = []field{
|
||||
{length: 2, setter: la.setV2gMode},
|
||||
{length: 10, setter: la.setCurrentMax},
|
||||
{length: 11, setter: la.setVoltageMax},
|
||||
{length: 14, setter: la.setPowerMax},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PLogicEnergyMode}
|
||||
}
|
||||
|
||||
logicErrorsInstance = &LogicErrors{}
|
||||
fields = []field{
|
||||
{length: 3, setter: logicErrorsInstance.setBoardReady},
|
||||
{length: 2, setter: logicErrorsInstance.setNotReadySettings},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_048, 0}] = parameters{fields: fields, interval: 1000, name: PLogicErrors}
|
||||
|
||||
logicWorkingMode = &LogicWorkingMode{}
|
||||
fields = []field{
|
||||
{length: 5, setter: logicWorkingMode.setTargetContactorMode},
|
||||
{length: 2, setter: logicWorkingMode.setAvailability},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_049, 0}] = parameters{fields: fields, interval: 1000, name: PLogicWorkingMode}
|
||||
|
||||
for i := 0; i <= CONTACTOR_MAX; i++ {
|
||||
key := key{can.CAN_ID_071, uint(i)}
|
||||
cis := ContactorInternalState{}
|
||||
contactorInternalStateArray[i] = &cis
|
||||
fields = []field{
|
||||
{length: 3, setter: cis.setContactorReady},
|
||||
{length: 2, setter: cis.setContactorOn},
|
||||
{length: 2, setter: cis.setUnexpectedState},
|
||||
{length: 2, setter: cis.setIsolated},
|
||||
{length: 2, setter: cis.setDebugEnabled},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PContactorInternalState}
|
||||
}
|
||||
|
||||
contactorInternalErrorsInstance = &ContactorInternalErrors{}
|
||||
fields = []field{
|
||||
{length: 3, setter: contactorInternalErrorsInstance.setBoardReady},
|
||||
{length: 4, setter: contactorInternalErrorsInstance.setOtherError},
|
||||
{length: 3, setter: contactorInternalErrorsInstance.setContactorGroupChanged},
|
||||
{length: 4, setter: contactorInternalErrorsInstance.setUnexpectedFormation},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setCpuNotReady},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setPuNotReady},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setDebug},
|
||||
{length: 5, setter: contactorInternalErrorsInstance.setPresentContactorMode},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_073, 0}] = parameters{fields: fields, interval: 1000, name: PContactorInternalErrors}
|
||||
|
||||
contactorsInternalForce = &ContactorsInternalForce{}
|
||||
fields = []field{
|
||||
{length: 2, setter: contactorsInternalForce.setForceModeEnabled},
|
||||
{length: 4, setter: contactorsInternalForce.setForceModeValue},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_074, 0}] = parameters{fields: fields, interval: 1000, name: PContactorsInternalForce}
|
||||
|
||||
for i := 0; i <= CONTACTOR_MAX; i++ {
|
||||
key := key{can.CAN_ID_075, uint(i)}
|
||||
cid := ContactorInternalDebug{}
|
||||
contactorInternalDebugArray[i] = &cid
|
||||
fields = []field{
|
||||
{length: 2, setter: cid.setDebugModeOn},
|
||||
{length: 3, setter: cid.setDebugContactorOn},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PContactorInternalDebug}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_067, uint(i)}
|
||||
ps := PeripheryState{}
|
||||
peripheryStateArray[i] = &ps
|
||||
fields = []field{
|
||||
{length: 3, setter: ps.setOtherErrorSeverity},
|
||||
{length: 4, setter: ps.setOtherError},
|
||||
{length: 2, setter: ps.setErrorShakeSensor},
|
||||
{length: 2, setter: ps.setErrorCoolingGroup},
|
||||
{length: 2, setter: ps.setPeripheryErrorCoolingGroup},
|
||||
{length: 2, setter: ps.setErrorFireEmergency},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyRun},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyControl},
|
||||
{length: 2, setter: ps.setErrorOvervoltageIn},
|
||||
{length: 2, setter: ps.setPeripheryErrorPowerSupply},
|
||||
{length: 2, setter: ps.setErrorFan},
|
||||
{length: 2, setter: ps.setErrorOvervoltageOut},
|
||||
{length: 2, setter: ps.setErrorStateRemoteMode},
|
||||
{length: 2, setter: ps.setDebugShsnFanEnabled},
|
||||
{length: 2, setter: ps.setDebugShptFanEnabled},
|
||||
{length: 2, setter: ps.setDebugIoBoardTestLampEnabled},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorExtLightCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorIndicationCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorLowVoltagePowerCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorContactorsInternalCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorPlcCircuitBreaker},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PPeripheryState}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_068, uint(i)}
|
||||
pi := PeripheryInfo{}
|
||||
peripheryInfoArray[i] = &pi
|
||||
fields = []field{
|
||||
{length: 2, setter: pi.setInfoDoorOpen},
|
||||
{length: 8, setter: pi.setTempAirIn},
|
||||
{length: 8, setter: pi.setTempAirOut},
|
||||
{length: 2, setter: pi.setStateShsnFan},
|
||||
{length: 2, setter: pi.setStateShptFan},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 5000, name: PPeripheryInfo}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_06C, uint(i)}
|
||||
pd := PeripheryDebug{}
|
||||
peripheryDebugArray[i] = &pd
|
||||
fields = []field{
|
||||
{length: 2, setter: pd.setDebugModeOn},
|
||||
{length: 3, setter: pd.setDebugShsnFan},
|
||||
{length: 3, setter: pd.setDebugShptFan},
|
||||
{length: 3, setter: pd.setDebugIoBoardTestLamp},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PPeripheryDebug}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_061, uint(i)}
|
||||
cpe := ConverterPresentEnergy{}
|
||||
converterPresentEnergyArray[i] = &cpe
|
||||
fields = []field{
|
||||
{length: 2, setter: cpe.setV2gMode},
|
||||
{length: 11, setter: cpe.setPresentVoltage},
|
||||
{length: 10, setter: cpe.setPresentCurrent},
|
||||
{length: 8, setter: cpe.setConnectedOut},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 500, name: PConverterPresentEnergy}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_062, uint(i)}
|
||||
ce := ConverterErrors{}
|
||||
converterErrorsArray[i] = &ce
|
||||
fields = []field{
|
||||
{length: 3, setter: ce.setBoardReady},
|
||||
{length: 4, setter: ce.setOtherError},
|
||||
{length: 2, setter: ce.setNotConnectedOut},
|
||||
{length: 2, setter: ce.setNoCommunicationConverter},
|
||||
{length: 2, setter: ce.setNoCommunicationPuConverter},
|
||||
{length: 2, setter: ce.setInputGridVoltageHigh},
|
||||
{length: 2, setter: ce.setInputGridVoltageLow},
|
||||
{length: 2, setter: ce.setOutputGridVoltageHigh},
|
||||
{length: 2, setter: ce.setOutputGridVoltageLow},
|
||||
{length: 11, setter: ce.setInputGridVoltage},
|
||||
{length: 11, setter: ce.setOutputGridVoltage},
|
||||
{length: 2, setter: ce.setShortCircuit},
|
||||
{length: 2, setter: ce.setOverHeat},
|
||||
{length: 2, setter: ce.setFanBroken},
|
||||
{length: 2, setter: ce.setOtherHardwareError},
|
||||
{length: 2, setter: ce.setDebugConvEnabled},
|
||||
{length: 2, setter: ce.setDebugConvDisabled},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PConverterErrors}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_065, uint(i)}
|
||||
cd := ConverterDebug{}
|
||||
converterDebugArray[i] = &cd
|
||||
fields = []field{
|
||||
{length: 3, setter: cd.setDebugModeOn},
|
||||
{length: 4, setter: cd.setDebugEnergyOn},
|
||||
{length: 2, setter: cd.setDebugTargetVoltage},
|
||||
{length: 2, setter: cd.setDebugTargetCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000, name: PConverterDebug}
|
||||
}
|
||||
}
|
||||
+7
-661
@@ -6,318 +6,10 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
CONVERTERS_MAX = 18 + 1
|
||||
CONTACTOR_MAX = 18 + 1
|
||||
CONNECTOR_COUNT = 6
|
||||
CONNECTOR_MAX = CONNECTOR_COUNT + 1
|
||||
ALL_BITS = 0xFFFFFFFFFFFFFFFF
|
||||
UNIT_ID_OFFSET = 12
|
||||
UNIT_ID_MASK = 0b111111111111 << UNIT_ID_OFFSET
|
||||
ACTION_ID_MASK = 0b111111111111
|
||||
BOARD_READY_OK BoardReadyType = 0
|
||||
BOARD_READY_INFO BoardReadyType = 1
|
||||
BOARD_READY_WARNING BoardReadyType = 2
|
||||
BOARD_READY_DEBUG BoardReadyType = 3
|
||||
BOARD_READY_DEP_ERROR BoardReadyType = 4
|
||||
BOARD_READY_ERROR BoardReadyType = 5
|
||||
BOARD_READY_CRITICAL BoardReadyType = 6
|
||||
OFF BooleanType = 0
|
||||
ON BooleanType = 1
|
||||
NO_ERROR ErrorType = 0
|
||||
ERROR ErrorType = 1
|
||||
OTHER_NO_ERROR ContactorInternalOtherErrorType = 0
|
||||
NO_PENDING_CHANGES ContactorGroupChangedType = 0
|
||||
INITIALIZED_CHANGE ContactorGroupChangedType = 1
|
||||
CHANGE_IN_PROGRESS ContactorGroupChangedType = 2
|
||||
V2G_MODE_G2V V2GModeType = 0
|
||||
V2G_MODE_V2G V2GModeType = 1
|
||||
V2G_MODE_INV V2GModeType = 2
|
||||
NOT_ENABLE CpLineLevelType = 0
|
||||
TWELVE CpLineLevelType = 1
|
||||
NINE CpLineLevelType = 2
|
||||
SIX CpLineLevelType = 3
|
||||
THREE CpLineLevelType = 4
|
||||
MINUS_TWELVE CpLineLevelType = 5
|
||||
ISOLATION_STATE_UNKNOWN IsolationStateType = 0
|
||||
ONGOING IsolationStateType = 1
|
||||
PASSED IsolationStateType = 2
|
||||
WARNING IsolationStateType = 3
|
||||
FAILED IsolationStateType = 4
|
||||
AUTH AuthModeType = 0
|
||||
PNC AuthModeType = 1
|
||||
AUTH_STATE_UNKNOWN AuthStateType = 0
|
||||
AUTH_STATE_ALLOW AuthStateType = 1
|
||||
AUTH_STATE_DENY AuthStateType = 2
|
||||
CONTACTOR_NO_MODE ContactorModeType = 0
|
||||
CONTACTOR_TRANSACTION_PROCESS ContactorModeType = 1
|
||||
CONTACTOR_CUSTOM_MODE ContactorModeType = 2
|
||||
CONTACTOR_ONLY_ONE_OUT_MODE ContactorModeType = 3
|
||||
CONTACTOR_ONE_TO_ONE_OUT_MODE ContactorModeType = 4
|
||||
CONTACTOR_SIMPLE_DYNAMIC_MODE ContactorModeType = 5
|
||||
DEBUG_SWITCH_MODE_AUTO DebugSwitchModeType = 0
|
||||
DEBUG_SWITCH_MODE_OFF DebugSwitchModeType = 1
|
||||
DEBUG_SWITCH_MODE_ON DebugSwitchModeType = 2
|
||||
DEBUG_SWITCH_MODE_PERMANENT_OFF DebugSwitchModeType = 4
|
||||
DEBUG_SWITCH_MODE_PERMANENT_ON DebugSwitchModeType = 5
|
||||
)
|
||||
|
||||
type Packet interface {
|
||||
GetUnitId() uint
|
||||
}
|
||||
|
||||
type ContactorInternalState struct {
|
||||
UnitId uint
|
||||
ContactorReady BoardReadyType
|
||||
ContactorOn BooleanType
|
||||
UnexpectedState ErrorType
|
||||
Isolated ErrorType
|
||||
DebugEnabled BooleanType
|
||||
}
|
||||
|
||||
type ContactorInternalErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError ContactorInternalOtherErrorType
|
||||
ContactorGroupChanged ContactorGroupChangedType
|
||||
UnexpectedFormation ContactorInternalOtherErrorType
|
||||
CpuNotReady ErrorType
|
||||
PuNotReady ErrorType
|
||||
Debug BooleanType
|
||||
PresentContactorMode ContactorModeType
|
||||
}
|
||||
|
||||
type ContactorsInternalForce struct {
|
||||
UnitId uint
|
||||
ForceModeEnabled BooleanType
|
||||
ForceModeValue ForceModeType
|
||||
}
|
||||
|
||||
type ContactorInternalDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorOn DebugSwitchModeType
|
||||
}
|
||||
|
||||
type PuPresentEnergy struct {
|
||||
UnitId uint
|
||||
V2GMode V2GModeType
|
||||
VoltageBefore Voltage11BitType
|
||||
VoltageAfter Voltage11BitType
|
||||
PresentCurrent Current10BitType
|
||||
}
|
||||
|
||||
type PuPeriphery struct {
|
||||
UnitId uint
|
||||
ConnectorInsert BooleanType
|
||||
ContactorOn BooleanType
|
||||
ConnectorLocked BooleanType
|
||||
CpLineLevel CpLineLevelType
|
||||
IsolationState IsolationStateType
|
||||
ChargingAllowed BooleanType
|
||||
PwmEnabled BooleanType
|
||||
CpLineVoltage Voltage9BitType
|
||||
}
|
||||
|
||||
type LogicAuth struct {
|
||||
UnitId uint
|
||||
AuthMode AuthModeType
|
||||
AuthState AuthStateType
|
||||
}
|
||||
|
||||
type LogicEnergyMode struct {
|
||||
UnitId uint
|
||||
V2gMode V2GModeType
|
||||
CurrentMax Current10BitType
|
||||
VoltageMax Voltage11BitType
|
||||
PowerMax Power14BitType
|
||||
}
|
||||
|
||||
type LogicErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
NotReadySettings ErrorType
|
||||
}
|
||||
|
||||
type LogicWorkingMode struct {
|
||||
UnitId uint
|
||||
TargetContactorMode ContactorModeType
|
||||
Availability BooleanType
|
||||
}
|
||||
|
||||
type CpuPresentEnergy struct {
|
||||
UnitId uint
|
||||
PowerDirectionMode V2GModeType
|
||||
PresentCurrent Current10BitType
|
||||
PresentVoltage Voltage11BitType
|
||||
}
|
||||
|
||||
type CpuPeriphery struct {
|
||||
UnitId uint
|
||||
ContactorInput BooleanType
|
||||
CircuitBreakerInput BooleanType
|
||||
CircuitBreakerPowerCBInput BooleanType
|
||||
}
|
||||
|
||||
type CpuEnergySettings struct {
|
||||
UnitId uint
|
||||
CurrentMax Current10BitType
|
||||
VoltageMax Voltage11BitType
|
||||
PowerMax Power14BitType
|
||||
TargetBatteryVoltage Voltage11BitType
|
||||
TargetGoalVoltage Voltage11BitType
|
||||
}
|
||||
|
||||
type CpuErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
RedButtonHard ErrorType
|
||||
RedButtonSoft ErrorType
|
||||
ModulesGone ErrorType
|
||||
GridVoltageHighErr ErrorType
|
||||
GridVoltageHighWarn ErrorType
|
||||
GridVoltageLowWarn ErrorType
|
||||
GridVoltageLowErr ErrorType
|
||||
GridVoltageLow Voltage11BitType
|
||||
GridVoltageHigh Voltage11BitType
|
||||
GridVoltageEmpty ErrorType
|
||||
NotReadySecc ErrorType
|
||||
NotReadyPu ErrorType
|
||||
NotReadyContactors ErrorType
|
||||
DebugConvertersEnabled ErrorType
|
||||
ContactorInputError ErrorType
|
||||
NotReadyPeriphery ErrorType
|
||||
}
|
||||
|
||||
type CpuDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorInputOn DebugSwitchModeType
|
||||
DebugCircuitBreakerOn DebugSwitchModeType
|
||||
DebugRedButtonSoftware DebugSwitchModeType
|
||||
}
|
||||
|
||||
type PuErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
IncorrectVoltage ErrorType
|
||||
IncorrectVoltageValue Voltage11BitType
|
||||
IncorrectCurrent ErrorType
|
||||
IncorrectCurrentValue Current10BitType
|
||||
IsolationBroken ErrorType
|
||||
CpLineBroken ErrorType
|
||||
CpLineGap69 ErrorType
|
||||
CableReady BoardReadyType
|
||||
NotReadyCpu ErrorType
|
||||
NotReadySecc ErrorType
|
||||
ContactorOutputError ErrorType
|
||||
DebugContactorOutputEnabled BooleanType
|
||||
OutputCircuitBreakerEnabled ErrorType
|
||||
OutputCircuitBreakerEnabledValue SignedVoltage12bitType
|
||||
}
|
||||
|
||||
type PuDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorOutputOn DebugSwitchModeType
|
||||
}
|
||||
|
||||
type SeccTargetEnergy struct {
|
||||
UnitId uint
|
||||
TargetChargingAllow BooleanType
|
||||
TargetBatteryVoltage Voltage11BitType
|
||||
TargetGoalVoltage Voltage11BitType
|
||||
TargetCurrent Current10BitType
|
||||
}
|
||||
|
||||
type SeccErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
NotReadyLogic ErrorType
|
||||
}
|
||||
|
||||
type PeripheryState struct {
|
||||
UnitId uint
|
||||
OtherErrorSeverity BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
ErrorShakeSensor ErrorType
|
||||
ErrorCoolingGroup ErrorType
|
||||
PeripheryErrorCoolingGroup ErrorType
|
||||
ErrorFireEmergency ErrorType
|
||||
ErrorFireEmergencyRun ErrorType
|
||||
ErrorFireEmergencyControl ErrorType
|
||||
ErrorOvervoltageIn ErrorType
|
||||
PeripheryErrorPowerSupply ErrorType
|
||||
ErrorFan ErrorType
|
||||
ErrorOvervoltageOut ErrorType
|
||||
ErrorStateRemoteMode ErrorType
|
||||
DebugShsnFanEnabled BooleanType
|
||||
DebugShptFanEnabled BooleanType
|
||||
DebugIoBoardTestLampEnabled BooleanType
|
||||
ErrorFireEmergencyCircuitBreaker ErrorType
|
||||
ErrorExtLightCircuitBreaker ErrorType
|
||||
ErrorIndicationCircuitBreaker ErrorType
|
||||
ErrorLowVoltagePowerCircuitBreaker ErrorType
|
||||
ErrorContactorsInternalCircuitBreaker ErrorType
|
||||
ErrorPlcCircuitBreaker ErrorType
|
||||
}
|
||||
|
||||
type PeripheryInfo struct {
|
||||
UnitId uint
|
||||
InfoDoorOpen BooleanType
|
||||
TempAirIn SignedAirTemp8BitType
|
||||
TempAirOut SignedAirTemp8BitType
|
||||
StateShsnFan BooleanType
|
||||
StateShptFan BooleanType
|
||||
}
|
||||
|
||||
type PeripheryDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugShsnFan DebugSwitchModeType
|
||||
DebugShptFan DebugSwitchModeType
|
||||
DebugIoBoardTestLamp DebugSwitchModeType
|
||||
}
|
||||
|
||||
type ConverterPresentEnergy struct {
|
||||
UnitId uint
|
||||
V2gMode V2GModeType
|
||||
PresentVoltage Voltage11BitType
|
||||
PresentCurrent Current10BitType
|
||||
ConnectedOut ConnectedOut8bitType
|
||||
}
|
||||
|
||||
type ConverterErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
NotConnectedOut ErrorType
|
||||
NoCommunicationConverter ErrorType
|
||||
NoCommunicationPuConverter ErrorType
|
||||
InputGridVoltageHigh ErrorType
|
||||
InputGridVoltageLow ErrorType
|
||||
OutputGridVoltageHigh ErrorType
|
||||
OutputGridVoltageLow ErrorType
|
||||
InputGridVoltage Voltage11BitType
|
||||
OutputGridVoltage Voltage11BitType
|
||||
ShortCircuit ErrorType
|
||||
OverHeat ErrorType
|
||||
FanBroken ErrorType
|
||||
OtherHardwareError ErrorType
|
||||
DebugConvEnabled BooleanType
|
||||
DebugConvDisabled BooleanType
|
||||
}
|
||||
|
||||
type ConverterDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugEnergyOn DebugSwitchModeType
|
||||
DebugTargetVoltage Voltage11BitType
|
||||
DebugTargetCurrent Current10BitType
|
||||
}
|
||||
|
||||
type SignedAirTemp8BitType int
|
||||
type ConnectedOut8bitType uint
|
||||
type ForceModeType uint
|
||||
@@ -340,16 +32,21 @@ type CpLineLevelType uint
|
||||
type IsolationStateType uint
|
||||
type Voltage9BitType float32
|
||||
|
||||
type PName string
|
||||
type FName string
|
||||
|
||||
type parameters struct {
|
||||
fields []content
|
||||
fields []field
|
||||
interval uint
|
||||
name PName
|
||||
}
|
||||
|
||||
type content struct {
|
||||
type field struct {
|
||||
length uint8
|
||||
setter func(uint64 uint64)
|
||||
value uint64
|
||||
last time.Time
|
||||
name FName
|
||||
}
|
||||
|
||||
type key struct {
|
||||
@@ -383,357 +80,6 @@ var converterPresentEnergyArray [CONVERTERS_MAX]*ConverterPresentEnergy
|
||||
var converterErrorsArray [CONVERTERS_MAX]*ConverterErrors
|
||||
var converterDebugArray [CONVERTERS_MAX]*ConverterDebug
|
||||
|
||||
func init() {
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_011, uint(i)}
|
||||
cpe := CpuPresentEnergy{}
|
||||
cpuPresentEnergyArray[i] = &cpe
|
||||
fields := []content{
|
||||
{length: 2, setter: cpe.setPowerDirectionMode},
|
||||
{length: 10, setter: cpe.setPresentCurrent},
|
||||
{length: 11, setter: cpe.setPresentVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 50}
|
||||
}
|
||||
|
||||
cpuPeripheryInstance = &CpuPeriphery{}
|
||||
fields := []content{
|
||||
{length: 2, setter: cpuPeripheryInstance.setContactorInput},
|
||||
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerInput},
|
||||
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerPowerCBInput},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_014, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_015, uint(i)}
|
||||
ces := CpuEnergySettings{}
|
||||
cpuEnergySettingsArray[i] = &ces
|
||||
fields := []content{
|
||||
{length: 10, setter: ces.setCurrentMax},
|
||||
{length: 11, setter: ces.setVoltageMax},
|
||||
{length: 14, setter: ces.setPowerMax},
|
||||
{length: 11, setter: ces.setTargetBatteryVoltage},
|
||||
{length: 11, setter: ces.setTargetGoalVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
cpuErrorsInstance = &CpuErrors{}
|
||||
fields = []content{
|
||||
{length: 3, setter: cpuErrorsInstance.setBoardReady},
|
||||
{length: 4, setter: cpuErrorsInstance.setOtherError},
|
||||
{length: 2, setter: cpuErrorsInstance.setRedButtonHard},
|
||||
{length: 2, setter: cpuErrorsInstance.setRedButtonSoft},
|
||||
{length: 2, setter: cpuErrorsInstance.setModulesGone},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighErr},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighWarn},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowWarn},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowErr},
|
||||
{length: 11, setter: cpuErrorsInstance.setGridVoltageLow},
|
||||
{length: 11, setter: cpuErrorsInstance.setGridVoltageHigh},
|
||||
{length: 2, setter: cpuErrorsInstance.setGridVoltageEmpty},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadySecc},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyPu},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyContactors},
|
||||
{length: 2, setter: cpuErrorsInstance.setDebugConvertersEnabled},
|
||||
{length: 2, setter: cpuErrorsInstance.setContactorInputError},
|
||||
{length: 2, setter: cpuErrorsInstance.setNotReadyPeriphery},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_016, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
cpuDebugInstance = &CpuDebug{}
|
||||
fields = []content{
|
||||
{length: 2, setter: cpuDebugInstance.setDebugModeOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugContactorInputOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugCircuitBreakerOn},
|
||||
{length: 3, setter: cpuDebugInstance.setDebugRedButtonSoftware},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_01A, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_021, uint(i)}
|
||||
ppe := PuPresentEnergy{}
|
||||
puPresentEnergyArray[i] = &ppe
|
||||
fields := []content{
|
||||
{length: 2, setter: ppe.setV2GMode},
|
||||
{length: 11, setter: ppe.setVoltageBefore},
|
||||
{length: 11, setter: ppe.setVoltageAfter},
|
||||
{length: 10, setter: ppe.setPresentCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 50}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_022, uint(i)}
|
||||
pp := PuPeriphery{}
|
||||
puPeripheryArray[i] = &pp
|
||||
fields := []content{
|
||||
{length: 2, setter: pp.setConnectorInsert},
|
||||
{length: 2, setter: pp.setContactorOn},
|
||||
{length: 2, setter: pp.setConnectorLocked},
|
||||
{length: 3, setter: pp.setCpLineLevel},
|
||||
{length: 3, setter: pp.setIsolationState},
|
||||
{length: 2, setter: pp.setChargingAllowed},
|
||||
{length: 2, setter: pp.setPwmEnabled},
|
||||
{length: 9, setter: pp.setCpLineVoltage},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_023, uint(i)}
|
||||
pe := PuErrors{}
|
||||
puErrorsArray[i] = &pe
|
||||
fields := []content{
|
||||
{length: 3, setter: pe.setBoardReady},
|
||||
{length: 4, setter: pe.setOtherError},
|
||||
{length: 2, setter: pe.setIncorrectVoltage},
|
||||
{length: 11, setter: pe.setIncorrectVoltageValue},
|
||||
{length: 2, setter: pe.setIncorrectCurrent},
|
||||
{length: 10, setter: pe.setIncorrectCurrentValue},
|
||||
{length: 2, setter: pe.setIsolationBroken},
|
||||
{length: 2, setter: pe.setCpLineBroken},
|
||||
{length: 2, setter: pe.setCpLineGap69},
|
||||
{length: 3, setter: pe.setCableReady},
|
||||
{length: 2, setter: pe.setNotReadyCpu},
|
||||
{length: 2, setter: pe.setNotReadySecc},
|
||||
{length: 2, setter: pe.setContactorOutputError},
|
||||
{length: 2, setter: pe.setDebugContactorOutputEnabled},
|
||||
{length: 2, setter: pe.setOutputCircuitBreakerEnabled},
|
||||
{length: 12, setter: pe.setOutputCircuitBreakerEnabledValue},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_02A, uint(i)}
|
||||
pd := PuDebug{}
|
||||
puDebugArray[i] = &pd
|
||||
fields = []content{
|
||||
{length: 2, setter: pd.setDebugModeOn},
|
||||
{length: 3, setter: pd.setDebugContactorOutputOn},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_041, uint(i)}
|
||||
ste := SeccTargetEnergy{}
|
||||
seccTargetEnergyArray[i] = &ste
|
||||
fields = []content{
|
||||
{length: 2, setter: ste.setTargetChargingAllow},
|
||||
{length: 11, setter: ste.setTargetBatteryVoltage},
|
||||
{length: 11, setter: ste.setTargetGoalVoltage},
|
||||
{length: 10, setter: ste.setTargetCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_042, uint(i)}
|
||||
se := SeccErrors{}
|
||||
seccErrorsArray[i] = &se
|
||||
fields = []content{
|
||||
{length: 3, setter: se.setBoardReady},
|
||||
{length: 2, setter: se.setNotReadyLogic},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_046, uint(i)}
|
||||
la := LogicAuth{}
|
||||
logicAuthArray[i] = &la
|
||||
fields = []content{
|
||||
{length: 2, setter: la.setAuthMode},
|
||||
{length: 3, setter: la.setAuthState},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_047, uint(i)}
|
||||
la := LogicEnergyMode{}
|
||||
logicEnergyMode[i] = &la
|
||||
fields = []content{
|
||||
{length: 2, setter: la.setV2gMode},
|
||||
{length: 10, setter: la.setCurrentMax},
|
||||
{length: 11, setter: la.setVoltageMax},
|
||||
{length: 14, setter: la.setPowerMax},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
logicErrorsInstance = &LogicErrors{}
|
||||
fields = []content{
|
||||
{length: 3, setter: logicErrorsInstance.setBoardReady},
|
||||
{length: 2, setter: logicErrorsInstance.setNotReadySettings},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_048, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
logicWorkingMode = &LogicWorkingMode{}
|
||||
fields = []content{
|
||||
{length: 5, setter: logicWorkingMode.setTargetContactorMode},
|
||||
{length: 2, setter: logicWorkingMode.setAvailability},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_049, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
for i := 0; i <= CONTACTOR_MAX; i++ {
|
||||
key := key{can.CAN_ID_071, uint(i)}
|
||||
cis := ContactorInternalState{}
|
||||
contactorInternalStateArray[i] = &cis
|
||||
fields = []content{
|
||||
{length: 3, setter: cis.setContactorReady},
|
||||
{length: 2, setter: cis.setContactorOn},
|
||||
{length: 2, setter: cis.setUnexpectedState},
|
||||
{length: 2, setter: cis.setIsolated},
|
||||
{length: 2, setter: cis.setDebugEnabled},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
contactorInternalErrorsInstance = &ContactorInternalErrors{}
|
||||
fields = []content{
|
||||
{length: 3, setter: contactorInternalErrorsInstance.setBoardReady},
|
||||
{length: 4, setter: contactorInternalErrorsInstance.setOtherError},
|
||||
{length: 3, setter: contactorInternalErrorsInstance.setContactorGroupChanged},
|
||||
{length: 4, setter: contactorInternalErrorsInstance.setUnexpectedFormation},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setCpuNotReady},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setPuNotReady},
|
||||
{length: 2, setter: contactorInternalErrorsInstance.setDebug},
|
||||
{length: 5, setter: contactorInternalErrorsInstance.setPresentContactorMode},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_073, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
contactorsInternalForce = &ContactorsInternalForce{}
|
||||
fields = []content{
|
||||
{length: 2, setter: contactorsInternalForce.setForceModeEnabled},
|
||||
{length: 4, setter: contactorsInternalForce.setForceModeValue},
|
||||
}
|
||||
protocolMap[key{can.CAN_ID_074, 0}] = parameters{fields: fields, interval: 1000}
|
||||
|
||||
for i := 0; i <= CONTACTOR_MAX; i++ {
|
||||
key := key{can.CAN_ID_075, uint(i)}
|
||||
cid := ContactorInternalDebug{}
|
||||
contactorInternalDebugArray[i] = &cid
|
||||
fields = []content{
|
||||
{length: 2, setter: cid.setDebugModeOn},
|
||||
{length: 3, setter: cid.setDebugContactorOn},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_067, uint(i)}
|
||||
ps := PeripheryState{}
|
||||
peripheryStateArray[i] = &ps
|
||||
fields = []content{
|
||||
{length: 3, setter: ps.setOtherErrorSeverity},
|
||||
{length: 4, setter: ps.setOtherError},
|
||||
{length: 2, setter: ps.setErrorShakeSensor},
|
||||
{length: 2, setter: ps.setErrorCoolingGroup},
|
||||
{length: 2, setter: ps.setPeripheryErrorCoolingGroup},
|
||||
{length: 2, setter: ps.setErrorFireEmergency},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyRun},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyControl},
|
||||
{length: 2, setter: ps.setErrorOvervoltageIn},
|
||||
{length: 2, setter: ps.setPeripheryErrorPowerSupply},
|
||||
{length: 2, setter: ps.setErrorFan},
|
||||
{length: 2, setter: ps.setErrorOvervoltageOut},
|
||||
{length: 2, setter: ps.setErrorStateRemoteMode},
|
||||
{length: 2, setter: ps.setDebugShsnFanEnabled},
|
||||
{length: 2, setter: ps.setDebugShptFanEnabled},
|
||||
{length: 2, setter: ps.setDebugIoBoardTestLampEnabled},
|
||||
{length: 2, setter: ps.setErrorFireEmergencyCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorExtLightCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorIndicationCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorLowVoltagePowerCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorContactorsInternalCircuitBreaker},
|
||||
{length: 2, setter: ps.setErrorPlcCircuitBreaker},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_068, uint(i)}
|
||||
pi := PeripheryInfo{}
|
||||
peripheryInfoArray[i] = &pi
|
||||
fields = []content{
|
||||
{length: 2, setter: pi.setInfoDoorOpen},
|
||||
{length: 8, setter: pi.setTempAirIn},
|
||||
{length: 8, setter: pi.setTempAirOut},
|
||||
{length: 2, setter: pi.setStateShsnFan},
|
||||
{length: 2, setter: pi.setStateShptFan},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 5000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONNECTOR_COUNT; i++ {
|
||||
key := key{can.CAN_ID_06C, uint(i)}
|
||||
pd := PeripheryDebug{}
|
||||
peripheryDebugArray[i] = &pd
|
||||
fields = []content{
|
||||
{length: 2, setter: pd.setDebugModeOn},
|
||||
{length: 3, setter: pd.setDebugShsnFan},
|
||||
{length: 3, setter: pd.setDebugShptFan},
|
||||
{length: 3, setter: pd.setDebugIoBoardTestLamp},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_061, uint(i)}
|
||||
cpe := ConverterPresentEnergy{}
|
||||
converterPresentEnergyArray[i] = &cpe
|
||||
fields = []content{
|
||||
{length: 2, setter: cpe.setV2gMode},
|
||||
{length: 11, setter: cpe.setPresentVoltage},
|
||||
{length: 10, setter: cpe.setPresentCurrent},
|
||||
{length: 8, setter: cpe.setConnectedOut},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 500}
|
||||
}
|
||||
|
||||
for i := 1; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_062, uint(i)}
|
||||
ce := ConverterErrors{}
|
||||
converterErrorsArray[i] = &ce
|
||||
fields = []content{
|
||||
{length: 3, setter: ce.setBoardReady},
|
||||
{length: 4, setter: ce.setOtherError},
|
||||
{length: 2, setter: ce.setNotConnectedOut},
|
||||
{length: 2, setter: ce.setNoCommunicationConverter},
|
||||
{length: 2, setter: ce.setNoCommunicationPuConverter},
|
||||
{length: 2, setter: ce.setInputGridVoltageHigh},
|
||||
{length: 2, setter: ce.setInputGridVoltageLow},
|
||||
{length: 2, setter: ce.setOutputGridVoltageHigh},
|
||||
{length: 2, setter: ce.setOutputGridVoltageLow},
|
||||
{length: 11, setter: ce.setInputGridVoltage},
|
||||
{length: 11, setter: ce.setOutputGridVoltage},
|
||||
{length: 2, setter: ce.setShortCircuit},
|
||||
{length: 2, setter: ce.setOverHeat},
|
||||
{length: 2, setter: ce.setFanBroken},
|
||||
{length: 2, setter: ce.setOtherHardwareError},
|
||||
{length: 2, setter: ce.setDebugConvEnabled},
|
||||
{length: 2, setter: ce.setDebugConvDisabled},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
|
||||
for i := 0; i <= CONVERTERS_MAX; i++ {
|
||||
key := key{can.CAN_ID_065, uint(i)}
|
||||
cd := ConverterDebug{}
|
||||
converterDebugArray[i] = &cd
|
||||
fields = []content{
|
||||
{length: 3, setter: cd.setDebugModeOn},
|
||||
{length: 4, setter: cd.setDebugEnergyOn},
|
||||
{length: 2, setter: cd.setDebugTargetVoltage},
|
||||
{length: 2, setter: cd.setDebugTargetCurrent},
|
||||
}
|
||||
protocolMap[key] = parameters{fields: fields, interval: 1000}
|
||||
}
|
||||
}
|
||||
|
||||
func StartProtocolParsing(frames <-chan *can.CanFrame) <-chan Packet {
|
||||
result := make(chan Packet)
|
||||
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
package yabl
|
||||
|
||||
import (
|
||||
"cli-mon/can"
|
||||
"log"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type parameters struct {
|
||||
fields []content
|
||||
interval uint
|
||||
}
|
||||
|
||||
type content struct {
|
||||
length uint8
|
||||
setter func(uint64 uint64)
|
||||
last time.Time
|
||||
}
|
||||
|
||||
func TestStartProtocolParsing(t *testing.T) {
|
||||
|
||||
var cis = ContactorInternalState{}
|
||||
|
||||
var cisMsg = parameters{fields: []content{
|
||||
{length: 3, setter: cis.setContactorReady},
|
||||
{length: 2, setter: cis.setContactorOn},
|
||||
{length: 2, setter: cis.setUnexpectedState},
|
||||
{length: 2, setter: cis.setIsolated},
|
||||
{length: 2, setter: cis.setDebugEnabled},
|
||||
}}
|
||||
|
||||
var messages = map[uint]parameters{
|
||||
can.CAN_ID_071: cisMsg,
|
||||
}
|
||||
|
||||
// try to use
|
||||
var values = messages[can.CAN_ID_071]
|
||||
for num, item := range values.fields {
|
||||
item.setter(uint64(num))
|
||||
|
||||
log.Println(cis)
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -97,7 +97,7 @@ func (t *PuPeriphery) setPwmEnabled(val uint64) {
|
||||
}
|
||||
|
||||
func (t *PuPeriphery) setCpLineVoltage(val uint64) {
|
||||
t.CpLineVoltage = Voltage9BitType(val)/10 - 15
|
||||
t.CpLineVoltage = Voltage9BitType(val)*0.1 - 15
|
||||
}
|
||||
|
||||
func (t *LogicAuth) setAuthMode(val uint64) {
|
||||
|
||||
+253
@@ -0,0 +1,253 @@
|
||||
package yabl
|
||||
|
||||
type ContactorInternalState struct {
|
||||
UnitId uint
|
||||
ContactorReady BoardReadyType
|
||||
ContactorOn BooleanType
|
||||
UnexpectedState ErrorType
|
||||
Isolated ErrorType
|
||||
DebugEnabled BooleanType
|
||||
}
|
||||
|
||||
type ContactorInternalErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError ContactorInternalOtherErrorType
|
||||
ContactorGroupChanged ContactorGroupChangedType
|
||||
UnexpectedFormation ContactorInternalOtherErrorType
|
||||
CpuNotReady ErrorType
|
||||
PuNotReady ErrorType
|
||||
Debug BooleanType
|
||||
PresentContactorMode ContactorModeType
|
||||
}
|
||||
|
||||
type ContactorsInternalForce struct {
|
||||
UnitId uint
|
||||
ForceModeEnabled BooleanType
|
||||
ForceModeValue ForceModeType
|
||||
}
|
||||
|
||||
type ContactorInternalDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorOn DebugSwitchModeType
|
||||
}
|
||||
|
||||
type PuPresentEnergy struct {
|
||||
UnitId uint
|
||||
V2GMode V2GModeType
|
||||
VoltageBefore Voltage11BitType
|
||||
VoltageAfter Voltage11BitType
|
||||
PresentCurrent Current10BitType
|
||||
}
|
||||
|
||||
type PuPeriphery struct {
|
||||
UnitId uint
|
||||
ConnectorInsert BooleanType
|
||||
ContactorOn BooleanType
|
||||
ConnectorLocked BooleanType
|
||||
CpLineLevel CpLineLevelType
|
||||
IsolationState IsolationStateType
|
||||
ChargingAllowed BooleanType
|
||||
PwmEnabled BooleanType
|
||||
CpLineVoltage Voltage9BitType
|
||||
}
|
||||
|
||||
type LogicAuth struct {
|
||||
UnitId uint
|
||||
AuthMode AuthModeType
|
||||
AuthState AuthStateType
|
||||
}
|
||||
|
||||
type LogicEnergyMode struct {
|
||||
UnitId uint
|
||||
V2gMode V2GModeType
|
||||
CurrentMax Current10BitType
|
||||
VoltageMax Voltage11BitType
|
||||
PowerMax Power14BitType
|
||||
}
|
||||
|
||||
type LogicErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
NotReadySettings ErrorType
|
||||
}
|
||||
|
||||
type LogicWorkingMode struct {
|
||||
UnitId uint
|
||||
TargetContactorMode ContactorModeType
|
||||
Availability BooleanType
|
||||
}
|
||||
|
||||
type CpuPresentEnergy struct {
|
||||
UnitId uint
|
||||
PowerDirectionMode V2GModeType
|
||||
PresentCurrent Current10BitType
|
||||
PresentVoltage Voltage11BitType
|
||||
}
|
||||
|
||||
type CpuPeriphery struct {
|
||||
UnitId uint
|
||||
ContactorInput BooleanType
|
||||
CircuitBreakerInput BooleanType
|
||||
CircuitBreakerPowerCBInput BooleanType
|
||||
}
|
||||
|
||||
type CpuEnergySettings struct {
|
||||
UnitId uint
|
||||
CurrentMax Current10BitType
|
||||
VoltageMax Voltage11BitType
|
||||
PowerMax Power14BitType
|
||||
TargetBatteryVoltage Voltage11BitType
|
||||
TargetGoalVoltage Voltage11BitType
|
||||
}
|
||||
|
||||
type CpuErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
RedButtonHard ErrorType
|
||||
RedButtonSoft ErrorType
|
||||
ModulesGone ErrorType
|
||||
GridVoltageHighErr ErrorType
|
||||
GridVoltageHighWarn ErrorType
|
||||
GridVoltageLowWarn ErrorType
|
||||
GridVoltageLowErr ErrorType
|
||||
GridVoltageLow Voltage11BitType
|
||||
GridVoltageHigh Voltage11BitType
|
||||
GridVoltageEmpty ErrorType
|
||||
NotReadySecc ErrorType
|
||||
NotReadyPu ErrorType
|
||||
NotReadyContactors ErrorType
|
||||
DebugConvertersEnabled ErrorType
|
||||
ContactorInputError ErrorType
|
||||
NotReadyPeriphery ErrorType
|
||||
}
|
||||
|
||||
type CpuDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorInputOn DebugSwitchModeType
|
||||
DebugCircuitBreakerOn DebugSwitchModeType
|
||||
DebugRedButtonSoftware DebugSwitchModeType
|
||||
}
|
||||
|
||||
type PuErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
IncorrectVoltage ErrorType
|
||||
IncorrectVoltageValue Voltage11BitType
|
||||
IncorrectCurrent ErrorType
|
||||
IncorrectCurrentValue Current10BitType
|
||||
IsolationBroken ErrorType
|
||||
CpLineBroken ErrorType
|
||||
CpLineGap69 ErrorType
|
||||
CableReady BoardReadyType
|
||||
NotReadyCpu ErrorType
|
||||
NotReadySecc ErrorType
|
||||
ContactorOutputError ErrorType
|
||||
DebugContactorOutputEnabled BooleanType
|
||||
OutputCircuitBreakerEnabled ErrorType
|
||||
OutputCircuitBreakerEnabledValue SignedVoltage12bitType
|
||||
}
|
||||
|
||||
type PuDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugContactorOutputOn DebugSwitchModeType
|
||||
}
|
||||
|
||||
type SeccTargetEnergy struct {
|
||||
UnitId uint
|
||||
TargetChargingAllow BooleanType
|
||||
TargetBatteryVoltage Voltage11BitType
|
||||
TargetGoalVoltage Voltage11BitType
|
||||
TargetCurrent Current10BitType
|
||||
}
|
||||
|
||||
type SeccErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
NotReadyLogic ErrorType
|
||||
}
|
||||
|
||||
type PeripheryState struct {
|
||||
UnitId uint
|
||||
OtherErrorSeverity BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
ErrorShakeSensor ErrorType
|
||||
ErrorCoolingGroup ErrorType
|
||||
PeripheryErrorCoolingGroup ErrorType
|
||||
ErrorFireEmergency ErrorType
|
||||
ErrorFireEmergencyRun ErrorType
|
||||
ErrorFireEmergencyControl ErrorType
|
||||
ErrorOvervoltageIn ErrorType
|
||||
PeripheryErrorPowerSupply ErrorType
|
||||
ErrorFan ErrorType
|
||||
ErrorOvervoltageOut ErrorType
|
||||
ErrorStateRemoteMode ErrorType
|
||||
DebugShsnFanEnabled BooleanType
|
||||
DebugShptFanEnabled BooleanType
|
||||
DebugIoBoardTestLampEnabled BooleanType
|
||||
ErrorFireEmergencyCircuitBreaker ErrorType
|
||||
ErrorExtLightCircuitBreaker ErrorType
|
||||
ErrorIndicationCircuitBreaker ErrorType
|
||||
ErrorLowVoltagePowerCircuitBreaker ErrorType
|
||||
ErrorContactorsInternalCircuitBreaker ErrorType
|
||||
ErrorPlcCircuitBreaker ErrorType
|
||||
}
|
||||
|
||||
type PeripheryInfo struct {
|
||||
UnitId uint
|
||||
InfoDoorOpen BooleanType
|
||||
TempAirIn SignedAirTemp8BitType
|
||||
TempAirOut SignedAirTemp8BitType
|
||||
StateShsnFan BooleanType
|
||||
StateShptFan BooleanType
|
||||
}
|
||||
|
||||
type PeripheryDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugShsnFan DebugSwitchModeType
|
||||
DebugShptFan DebugSwitchModeType
|
||||
DebugIoBoardTestLamp DebugSwitchModeType
|
||||
}
|
||||
|
||||
type ConverterPresentEnergy struct {
|
||||
UnitId uint
|
||||
V2gMode V2GModeType
|
||||
PresentVoltage Voltage11BitType
|
||||
PresentCurrent Current10BitType
|
||||
ConnectedOut ConnectedOut8bitType
|
||||
}
|
||||
|
||||
type ConverterErrors struct {
|
||||
UnitId uint
|
||||
BoardReady BoardReadyType
|
||||
OtherError OtherError4BitType
|
||||
NotConnectedOut ErrorType
|
||||
NoCommunicationConverter ErrorType
|
||||
NoCommunicationPuConverter ErrorType
|
||||
InputGridVoltageHigh ErrorType
|
||||
InputGridVoltageLow ErrorType
|
||||
OutputGridVoltageHigh ErrorType
|
||||
OutputGridVoltageLow ErrorType
|
||||
InputGridVoltage Voltage11BitType
|
||||
OutputGridVoltage Voltage11BitType
|
||||
ShortCircuit ErrorType
|
||||
OverHeat ErrorType
|
||||
FanBroken ErrorType
|
||||
OtherHardwareError ErrorType
|
||||
DebugConvEnabled BooleanType
|
||||
DebugConvDisabled BooleanType
|
||||
}
|
||||
|
||||
type ConverterDebug struct {
|
||||
UnitId uint
|
||||
DebugModeOn BooleanType
|
||||
DebugEnergyOn DebugSwitchModeType
|
||||
DebugTargetVoltage Voltage11BitType
|
||||
DebugTargetCurrent Current10BitType
|
||||
}
|
||||
Reference in New Issue
Block a user