Small CLI monitoring tool to decode proprietary [...] protocol and display info in human readable representation
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.
ycli-mon/yabl/init.go

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