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} } }