You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
13 KiB
354 lines
13 KiB
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}
|
|
}
|
|
}
|
|
|