|
|
|
@ -2,36 +2,38 @@ package yabl |
|
|
|
|
|
|
|
|
|
|
|
import "cli-mon/can" |
|
|
|
import "cli-mon/can" |
|
|
|
|
|
|
|
|
|
|
|
func initialize() { |
|
|
|
func (c *converter) initialize() { |
|
|
|
|
|
|
|
c.protocolMap = make(map[key]action) |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_011, i} |
|
|
|
key := key{can.CAN_ID_011, i} |
|
|
|
cpe := &CpuPresentEnergy{UnitId: 1} |
|
|
|
cpe := &CpuPresentEnergy{unit: 1} |
|
|
|
cpuPresentEnergyArray[i] = cpe |
|
|
|
c.cpuPresentEnergyArray[i] = cpe |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 2, setter: cpe.setPowerDirectionMode, name: FPowerDirectionMode}, |
|
|
|
{length: 2, setter: cpe.setPowerDirectionMode, name: FPowerDirectionMode}, |
|
|
|
{length: 10, setter: cpe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
{length: 10, setter: cpe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
{length: 11, setter: cpe.setPresentVoltage, name: FPresentVoltage}, |
|
|
|
{length: 11, setter: cpe.setPresentVoltage, name: FPresentVoltage}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 50, name: PCpuPresentEnergy, object: cpe} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 50, name: PCpuPresentEnergy, object: cpe} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
cpuPeripheryInstance = &CpuPeriphery{UnitId: 0} |
|
|
|
c.cpuPeripheryInstance = &CpuPeriphery{unit: 0} |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 2, setter: cpuPeripheryInstance.setContactorInput, name: FContactorInput}, |
|
|
|
{length: 2, setter: c.cpuPeripheryInstance.setContactorInput, name: FContactorInput}, |
|
|
|
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerInput, name: FCircuitBreakerInput}, |
|
|
|
{length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerInput, name: FCircuitBreakerInput}, |
|
|
|
{length: 2, setter: cpuPeripheryInstance.setCircuitBreakerPowerCBInput, name: FCircuitBreakerPowerCBInput}, |
|
|
|
{length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerPowerCBInput, name: FCircuitBreakerPowerCBInput}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_014, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_014, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PCpuPeriphery, |
|
|
|
name: PCpuPeriphery, |
|
|
|
object: cpuPeripheryInstance, |
|
|
|
object: c.cpuPeripheryInstance, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_015, i} |
|
|
|
key := key{can.CAN_ID_015, i} |
|
|
|
ces := &CpuEnergySettings{UnitId: i} |
|
|
|
ces := &CpuEnergySettings{unit: unit(i)} |
|
|
|
cpuEnergySettingsArray[i] = ces |
|
|
|
c.cpuEnergySettingsArray[i] = ces |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 10, setter: ces.setCurrentMax, name: FCurrentMax}, |
|
|
|
{length: 10, setter: ces.setCurrentMax, name: FCurrentMax}, |
|
|
|
{length: 11, setter: ces.setVoltageMax, name: FVoltageMax}, |
|
|
|
{length: 11, setter: ces.setVoltageMax, name: FVoltageMax}, |
|
|
|
@ -39,68 +41,68 @@ func initialize() { |
|
|
|
{length: 11, setter: ces.setTargetBatteryVoltage, name: FTargetBatteryVoltage}, |
|
|
|
{length: 11, setter: ces.setTargetBatteryVoltage, name: FTargetBatteryVoltage}, |
|
|
|
{length: 11, setter: ces.setTargetGoalVoltage, name: FTargetGoalVoltage}, |
|
|
|
{length: 11, setter: ces.setTargetGoalVoltage, name: FTargetGoalVoltage}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PCpuEnergySettings, object: ces} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PCpuEnergySettings, object: ces} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
cpuErrorsInstance = &CpuErrors{UnitId: 0} |
|
|
|
c.cpuErrorsInstance = &CpuErrors{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: cpuErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: c.cpuErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 4, setter: cpuErrorsInstance.setOtherError, name: FOtherError}, |
|
|
|
{length: 4, setter: c.cpuErrorsInstance.setOtherError, name: FOtherError}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setRedButtonHard, name: FRedButtonHard}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setRedButtonHard, name: FRedButtonHard}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setRedButtonSoft, name: FRedButtonSoft}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setRedButtonSoft, name: FRedButtonSoft}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setModulesGone, name: FModulesGone}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setModulesGone, name: FModulesGone}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighErr, name: FGridVoltageHighErr}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setGridVoltageHighErr, name: FGridVoltageHighErr}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setGridVoltageHighWarn, name: FGridVoltageHighWarn}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setGridVoltageHighWarn, name: FGridVoltageHighWarn}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowWarn, name: FGridVoltageLowWarn}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setGridVoltageLowWarn, name: FGridVoltageLowWarn}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setGridVoltageLowErr, name: FGridVoltageLowErr}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setGridVoltageLowErr, name: FGridVoltageLowErr}, |
|
|
|
{length: 11, setter: cpuErrorsInstance.setGridVoltageLow, name: FGridVoltageLow}, |
|
|
|
{length: 11, setter: c.cpuErrorsInstance.setGridVoltageLow, name: FGridVoltageLow}, |
|
|
|
{length: 11, setter: cpuErrorsInstance.setGridVoltageHigh, name: FGridVoltageHigh}, |
|
|
|
{length: 11, setter: c.cpuErrorsInstance.setGridVoltageHigh, name: FGridVoltageHigh}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setGridVoltageEmpty, name: FGridVoltageEmpty}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setGridVoltageEmpty, name: FGridVoltageEmpty}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setNotReadySecc, name: FNotReadySecc}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setNotReadySecc, name: FNotReadySecc}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setNotReadyPu, name: FNotReadyPu}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setNotReadyPu, name: FNotReadyPu}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setNotReadyContactors, name: FNotReadyContactors}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setNotReadyContactors, name: FNotReadyContactors}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setDebugConvertersEnabled, name: FDebugConvertersEnabled}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setDebugConvertersEnabled, name: FDebugConvertersEnabled}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setContactorInputError, name: FContactorInputError}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setContactorInputError, name: FContactorInputError}, |
|
|
|
{length: 2, setter: cpuErrorsInstance.setNotReadyPeriphery, name: FNotReadyPeriphery}, |
|
|
|
{length: 2, setter: c.cpuErrorsInstance.setNotReadyPeriphery, name: FNotReadyPeriphery}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_016, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_016, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PCpuErrors, |
|
|
|
name: PCpuErrors, |
|
|
|
object: cpuErrorsInstance, |
|
|
|
object: c.cpuErrorsInstance, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
cpuDebugInstance = &CpuDebug{UnitId: 0} |
|
|
|
c.cpuDebugInstance = &CpuDebug{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: cpuDebugInstance.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 2, setter: c.cpuDebugInstance.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 3, setter: cpuDebugInstance.setDebugContactorInputOn, name: FDebugContactorInputOn}, |
|
|
|
{length: 3, setter: c.cpuDebugInstance.setDebugContactorInputOn, name: FDebugContactorInputOn}, |
|
|
|
{length: 3, setter: cpuDebugInstance.setDebugCircuitBreakerOn, name: FDebugCircuitBreakerOn}, |
|
|
|
{length: 3, setter: c.cpuDebugInstance.setDebugCircuitBreakerOn, name: FDebugCircuitBreakerOn}, |
|
|
|
{length: 3, setter: cpuDebugInstance.setDebugRedButtonSoftware, name: FDebugRedButtonSoftware}, |
|
|
|
{length: 3, setter: c.cpuDebugInstance.setDebugRedButtonSoftware, name: FDebugRedButtonSoftware}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_01A, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_01A, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PCpuDebug, |
|
|
|
name: PCpuDebug, |
|
|
|
object: cpuDebugInstance, |
|
|
|
object: c.cpuDebugInstance, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_021, i} |
|
|
|
key := key{can.CAN_ID_021, i} |
|
|
|
ppe := &PuPresentEnergy{UnitId: i} |
|
|
|
ppe := &PuPresentEnergy{unit: unit(i)} |
|
|
|
puPresentEnergyArray[i] = ppe |
|
|
|
c.puPresentEnergyArray[i] = ppe |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 2, setter: ppe.setV2GMode, name: FV2GMode}, |
|
|
|
{length: 2, setter: ppe.setV2GMode, name: FV2GMode}, |
|
|
|
{length: 11, setter: ppe.setVoltageBefore, name: FVoltageBefore}, |
|
|
|
{length: 11, setter: ppe.setVoltageBefore, name: FVoltageBefore}, |
|
|
|
{length: 11, setter: ppe.setVoltageAfter, name: FVoltageAfter}, |
|
|
|
{length: 11, setter: ppe.setVoltageAfter, name: FVoltageAfter}, |
|
|
|
{length: 10, setter: ppe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
{length: 10, setter: ppe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 50, name: PPuPresentEnergy, object: ppe} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 50, name: PPuPresentEnergy, object: ppe} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_022, i} |
|
|
|
key := key{can.CAN_ID_022, i} |
|
|
|
pp := &PuPeriphery{UnitId: i} |
|
|
|
pp := &PuPeriphery{unit: unit(i)} |
|
|
|
puPeripheryArray[i] = pp |
|
|
|
c.puPeripheryArray[i] = pp |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 2, setter: pp.setConnectorInsert, name: FConnectorInsert}, |
|
|
|
{length: 2, setter: pp.setConnectorInsert, name: FConnectorInsert}, |
|
|
|
{length: 2, setter: pp.setContactorOn, name: FContactorOn}, |
|
|
|
{length: 2, setter: pp.setContactorOn, name: FContactorOn}, |
|
|
|
@ -111,13 +113,13 @@ func initialize() { |
|
|
|
{length: 2, setter: pp.setPwmEnabled, name: FPwmEnabled}, |
|
|
|
{length: 2, setter: pp.setPwmEnabled, name: FPwmEnabled}, |
|
|
|
{length: 9, setter: pp.setCpLineVoltage, name: FCpLineVoltage}, |
|
|
|
{length: 9, setter: pp.setCpLineVoltage, name: FCpLineVoltage}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PPuPeriphery, object: pp} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PPuPeriphery, object: pp} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_023, i} |
|
|
|
key := key{can.CAN_ID_023, i} |
|
|
|
pe := &PuErrors{UnitId: 1} |
|
|
|
pe := &PuErrors{unit: 1} |
|
|
|
puErrorsArray[i] = pe |
|
|
|
c.puErrorsArray[i] = pe |
|
|
|
fields := []*field{ |
|
|
|
fields := []*field{ |
|
|
|
{length: 3, setter: pe.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: pe.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 4, setter: pe.setOtherError, name: FOtherError}, |
|
|
|
{length: 4, setter: pe.setOtherError, name: FOtherError}, |
|
|
|
@ -136,96 +138,96 @@ func initialize() { |
|
|
|
{length: 2, setter: pe.setOutputCircuitBreakerEnabled, name: FOutputCircuitBreakerEnabled}, |
|
|
|
{length: 2, setter: pe.setOutputCircuitBreakerEnabled, name: FOutputCircuitBreakerEnabled}, |
|
|
|
{length: 12, setter: pe.setOutputCircuitBreakerEnabledValue, name: FOutputCircuitBreakerEnabledValue}, |
|
|
|
{length: 12, setter: pe.setOutputCircuitBreakerEnabledValue, name: FOutputCircuitBreakerEnabledValue}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PPuErrors, object: pe} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PPuErrors, object: pe} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_02A, i} |
|
|
|
key := key{can.CAN_ID_02A, i} |
|
|
|
pd := &PuDebug{UnitId: i} |
|
|
|
pd := &PuDebug{unit: unit(i)} |
|
|
|
puDebugArray[i] = pd |
|
|
|
c.puDebugArray[i] = pd |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: pd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 2, setter: pd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 3, setter: pd.setDebugContactorOutputOn, name: FDebugContactorOutputOn}, |
|
|
|
{length: 3, setter: pd.setDebugContactorOutputOn, name: FDebugContactorOutputOn}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PPuDebug, object: pd} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PPuDebug, object: pd} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_041, i} |
|
|
|
key := key{can.CAN_ID_041, i} |
|
|
|
ste := &SeccTargetEnergy{UnitId: i} |
|
|
|
ste := &SeccTargetEnergy{unit: unit(i)} |
|
|
|
seccTargetEnergyArray[i] = ste |
|
|
|
c.seccTargetEnergyArray[i] = ste |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: ste.setTargetChargingAllow, name: FTargetChargingAllow}, |
|
|
|
{length: 2, setter: ste.setTargetChargingAllow, name: FTargetChargingAllow}, |
|
|
|
{length: 11, setter: ste.setTargetBatteryVoltage, name: FTargetBatteryVoltage}, |
|
|
|
{length: 11, setter: ste.setTargetBatteryVoltage, name: FTargetBatteryVoltage}, |
|
|
|
{length: 11, setter: ste.setTargetGoalVoltage, name: FTargetGoalVoltage}, |
|
|
|
{length: 11, setter: ste.setTargetGoalVoltage, name: FTargetGoalVoltage}, |
|
|
|
{length: 10, setter: ste.setTargetCurrent, name: FTargetCurrent}, |
|
|
|
{length: 10, setter: ste.setTargetCurrent, name: FTargetCurrent}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PSeccTargetEnergy, object: ste} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PSeccTargetEnergy, object: ste} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(1); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_042, i} |
|
|
|
key := key{can.CAN_ID_042, i} |
|
|
|
se := &SeccErrors{UnitId: i} |
|
|
|
se := &SeccErrors{unit: unit(i)} |
|
|
|
seccErrorsArray[i] = se |
|
|
|
c.seccErrorsArray[i] = se |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: se.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: se.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 2, setter: se.setNotReadyLogic, name: FNotReadyLogic}, |
|
|
|
{length: 2, setter: se.setNotReadyLogic, name: FNotReadyLogic}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PSeccErrors, object: se} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PSeccErrors, object: se} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_046, i} |
|
|
|
key := key{can.CAN_ID_046, i} |
|
|
|
la := &LogicAuth{UnitId: i} |
|
|
|
la := &LogicAuth{unit: unit(i)} |
|
|
|
logicAuthArray[i] = la |
|
|
|
c.logicAuthArray[i] = la |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: la.setAuthMode, name: FAuthMode}, |
|
|
|
{length: 2, setter: la.setAuthMode, name: FAuthMode}, |
|
|
|
{length: 3, setter: la.setAuthState, name: FAuthState}, |
|
|
|
{length: 3, setter: la.setAuthState, name: FAuthState}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PLogicAuth, object: la} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PLogicAuth, object: la} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_047, i} |
|
|
|
key := key{can.CAN_ID_047, i} |
|
|
|
lem := &LogicEnergyMode{UnitId: i} |
|
|
|
lem := &LogicEnergyMode{unit: unit(i)} |
|
|
|
logicEnergyMode[i] = lem |
|
|
|
c.logicEnergyMode[i] = lem |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: lem.setV2gMode, name: FV2gMode}, |
|
|
|
{length: 2, setter: lem.setV2gMode, name: FV2gMode}, |
|
|
|
{length: 10, setter: lem.setCurrentMax, name: FCurrentMax}, |
|
|
|
{length: 10, setter: lem.setCurrentMax, name: FCurrentMax}, |
|
|
|
{length: 11, setter: lem.setVoltageMax, name: FVoltageMax}, |
|
|
|
{length: 11, setter: lem.setVoltageMax, name: FVoltageMax}, |
|
|
|
{length: 14, setter: lem.setPowerMax, name: FPowerMax}, |
|
|
|
{length: 14, setter: lem.setPowerMax, name: FPowerMax}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PLogicEnergyMode, object: lem} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PLogicEnergyMode, object: lem} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
logicErrorsInstance = &LogicErrors{UnitId: 0} |
|
|
|
c.logicErrorsInstance = &LogicErrors{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: logicErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: c.logicErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 2, setter: logicErrorsInstance.setNotReadySettings, name: FNotReadySettings}, |
|
|
|
{length: 2, setter: c.logicErrorsInstance.setNotReadySettings, name: FNotReadySettings}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_048, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_048, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PLogicErrors, |
|
|
|
name: PLogicErrors, |
|
|
|
object: logicErrorsInstance, |
|
|
|
object: c.logicErrorsInstance, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
logicWorkingMode = &LogicWorkingMode{UnitId: 0} |
|
|
|
c.logicWorkingMode = &LogicWorkingMode{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 5, setter: logicWorkingMode.setTargetContactorMode, name: FTargetContactorMode}, |
|
|
|
{length: 5, setter: c.logicWorkingMode.setTargetContactorMode, name: FTargetContactorMode}, |
|
|
|
{length: 2, setter: logicWorkingMode.setAvailability, name: FAvailability}, |
|
|
|
{length: 2, setter: c.logicWorkingMode.setAvailability, name: FAvailability}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_049, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_049, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PLogicWorkingMode, |
|
|
|
name: PLogicWorkingMode, |
|
|
|
object: logicWorkingMode, |
|
|
|
object: c.logicWorkingMode, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i < CONTACTOR_MAX; i++ { |
|
|
|
for i := uint(0); i < CONTACTOR_MAX; i++ { |
|
|
|
key := key{can.CAN_ID_071, i} |
|
|
|
key := key{can.CAN_ID_071, i} |
|
|
|
cis := &ContactorInternalState{UnitId: i} |
|
|
|
cis := &ContactorInternalState{unit: unit(i)} |
|
|
|
contactorInternalStateArray[i] = cis |
|
|
|
c.contactorInternalStateArray[i] = cis |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: cis.setContactorReady, name: FContactorReady}, |
|
|
|
{length: 3, setter: cis.setContactorReady, name: FContactorReady}, |
|
|
|
{length: 2, setter: cis.setContactorOn, name: FContactorOn}, |
|
|
|
{length: 2, setter: cis.setContactorOn, name: FContactorOn}, |
|
|
|
@ -233,54 +235,54 @@ func initialize() { |
|
|
|
{length: 2, setter: cis.setIsolated, name: FIsolated}, |
|
|
|
{length: 2, setter: cis.setIsolated, name: FIsolated}, |
|
|
|
{length: 2, setter: cis.setDebugEnabled, name: FDebugEnabled}, |
|
|
|
{length: 2, setter: cis.setDebugEnabled, name: FDebugEnabled}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PContactorInternalState, object: cis} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PContactorInternalState, object: cis} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
contactorInternalErrorsInstance = &ContactorInternalErrors{UnitId: 0} |
|
|
|
c.contactorInternalErrorsInstance = &ContactorInternalErrors{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: contactorInternalErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: c.contactorInternalErrorsInstance.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 4, setter: contactorInternalErrorsInstance.setOtherError, name: FOtherError}, |
|
|
|
{length: 4, setter: c.contactorInternalErrorsInstance.setOtherError, name: FOtherError}, |
|
|
|
{length: 3, setter: contactorInternalErrorsInstance.setContactorGroupChanged, name: FContactorGroupChanged}, |
|
|
|
{length: 3, setter: c.contactorInternalErrorsInstance.setContactorGroupChanged, name: FContactorGroupChanged}, |
|
|
|
{length: 4, setter: contactorInternalErrorsInstance.setUnexpectedFormation, name: FUnexpectedFormation}, |
|
|
|
{length: 4, setter: c.contactorInternalErrorsInstance.setUnexpectedFormation, name: FUnexpectedFormation}, |
|
|
|
{length: 2, setter: contactorInternalErrorsInstance.setCpuNotReady, name: FCpuNotReady}, |
|
|
|
{length: 2, setter: c.contactorInternalErrorsInstance.setCpuNotReady, name: FCpuNotReady}, |
|
|
|
{length: 2, setter: contactorInternalErrorsInstance.setPuNotReady, name: FPuNotReady}, |
|
|
|
{length: 2, setter: c.contactorInternalErrorsInstance.setPuNotReady, name: FPuNotReady}, |
|
|
|
{length: 2, setter: contactorInternalErrorsInstance.setDebug, name: FDebug}, |
|
|
|
{length: 2, setter: c.contactorInternalErrorsInstance.setDebug, name: FDebug}, |
|
|
|
{length: 5, setter: contactorInternalErrorsInstance.setPresentContactorMode, name: FPresentContactorMode}, |
|
|
|
{length: 5, setter: c.contactorInternalErrorsInstance.setPresentContactorMode, name: FPresentContactorMode}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_073, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_073, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PContactorInternalErrors, |
|
|
|
name: PContactorInternalErrors, |
|
|
|
object: contactorInternalErrorsInstance, |
|
|
|
object: c.contactorInternalErrorsInstance, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
contactorsInternalForce = &ContactorsInternalForce{UnitId: 0} |
|
|
|
c.contactorsInternalForce = &ContactorsInternalForce{unit: 0} |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: contactorsInternalForce.setForceModeEnabled, name: FForceModeEnabled}, |
|
|
|
{length: 2, setter: c.contactorsInternalForce.setForceModeEnabled, name: FForceModeEnabled}, |
|
|
|
{length: 4, setter: contactorsInternalForce.setForceModeValue, name: FForceModeValue}, |
|
|
|
{length: 4, setter: c.contactorsInternalForce.setForceModeValue, name: FForceModeValue}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key{can.CAN_ID_074, 0}] = action{ |
|
|
|
c.protocolMap[key{can.CAN_ID_074, 0}] = action{ |
|
|
|
fields: fields, |
|
|
|
fields: fields, |
|
|
|
interval: 1000, |
|
|
|
interval: 1000, |
|
|
|
name: PContactorsInternalForce, |
|
|
|
name: PContactorsInternalForce, |
|
|
|
object: contactorsInternalForce, |
|
|
|
object: c.contactorsInternalForce, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i < CONTACTOR_MAX; i++ { |
|
|
|
for i := uint(0); i < CONTACTOR_MAX; i++ { |
|
|
|
key := key{can.CAN_ID_075, i} |
|
|
|
key := key{can.CAN_ID_075, i} |
|
|
|
cid := &ContactorInternalDebug{UnitId: i} |
|
|
|
cid := &ContactorInternalDebug{unit: unit(i)} |
|
|
|
contactorInternalDebugArray[i] = cid |
|
|
|
c.contactorInternalDebugArray[i] = cid |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: cid.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 2, setter: cid.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 3, setter: cid.setDebugContactorOn, name: FDebugContactorOn}, |
|
|
|
{length: 3, setter: cid.setDebugContactorOn, name: FDebugContactorOn}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PContactorInternalDebug, object: cid} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PContactorInternalDebug, object: cid} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_067, i} |
|
|
|
key := key{can.CAN_ID_067, i} |
|
|
|
ps := &PeripheryState{UnitId: i} |
|
|
|
ps := &PeripheryState{unit: unit(i)} |
|
|
|
peripheryStateArray[i] = ps |
|
|
|
c.peripheryStateArray[i] = ps |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: ps.setOtherErrorSeverity, name: FOtherErrorSeverity}, |
|
|
|
{length: 3, setter: ps.setOtherErrorSeverity, name: FOtherErrorSeverity}, |
|
|
|
{length: 4, setter: ps.setOtherError, name: FOtherError}, |
|
|
|
{length: 4, setter: ps.setOtherError, name: FOtherError}, |
|
|
|
@ -305,13 +307,13 @@ func initialize() { |
|
|
|
{length: 2, setter: ps.setErrorContactorsInternalCircuitBreaker, name: FErrorContactorsInternalCircuitBreaker}, |
|
|
|
{length: 2, setter: ps.setErrorContactorsInternalCircuitBreaker, name: FErrorContactorsInternalCircuitBreaker}, |
|
|
|
{length: 2, setter: ps.setErrorPlcCircuitBreaker, name: FErrorPlcCircuitBreaker}, |
|
|
|
{length: 2, setter: ps.setErrorPlcCircuitBreaker, name: FErrorPlcCircuitBreaker}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PPeripheryState, object: ps} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PPeripheryState, object: ps} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_068, i} |
|
|
|
key := key{can.CAN_ID_068, i} |
|
|
|
pi := &PeripheryInfo{UnitId: i} |
|
|
|
pi := &PeripheryInfo{unit: unit(i)} |
|
|
|
peripheryInfoArray[i] = pi |
|
|
|
c.peripheryInfoArray[i] = pi |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: pi.setInfoDoorOpen, name: FInfoDoorOpen}, |
|
|
|
{length: 2, setter: pi.setInfoDoorOpen, name: FInfoDoorOpen}, |
|
|
|
{length: 8, setter: pi.setTempAirIn, name: FTempAirIn}, |
|
|
|
{length: 8, setter: pi.setTempAirIn, name: FTempAirIn}, |
|
|
|
@ -319,39 +321,39 @@ func initialize() { |
|
|
|
{length: 2, setter: pi.setStateShsnFan, name: FStateShsnFan}, |
|
|
|
{length: 2, setter: pi.setStateShsnFan, name: FStateShsnFan}, |
|
|
|
{length: 2, setter: pi.setStateShptFan, name: FStateShptFan}, |
|
|
|
{length: 2, setter: pi.setStateShptFan, name: FStateShptFan}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 5000, name: PPeripheryInfo, object: pi} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 5000, name: PPeripheryInfo, object: pi} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
for i := uint(0); i <= CONNECTOR_COUNT; i++ { |
|
|
|
key := key{can.CAN_ID_06C, i} |
|
|
|
key := key{can.CAN_ID_06C, i} |
|
|
|
pd := &PeripheryDebug{UnitId: i} |
|
|
|
pd := &PeripheryDebug{unit: unit(i)} |
|
|
|
peripheryDebugArray[i] = pd |
|
|
|
c.peripheryDebugArray[i] = pd |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: pd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 2, setter: pd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 3, setter: pd.setDebugShsnFan, name: FDebugShsnFan}, |
|
|
|
{length: 3, setter: pd.setDebugShsnFan, name: FDebugShsnFan}, |
|
|
|
{length: 3, setter: pd.setDebugShptFan, name: FDebugShptFan}, |
|
|
|
{length: 3, setter: pd.setDebugShptFan, name: FDebugShptFan}, |
|
|
|
{length: 3, setter: pd.setDebugIoBoardTestLamp, name: FDebugIoBoardTestLamp}, |
|
|
|
{length: 3, setter: pd.setDebugIoBoardTestLamp, name: FDebugIoBoardTestLamp}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PPeripheryDebug, object: pd} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PPeripheryDebug, object: pd} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i < CONVERTERS_MAX; i++ { |
|
|
|
for i := uint(1); i < CONVERTERS_MAX; i++ { |
|
|
|
key := key{can.CAN_ID_061, i} |
|
|
|
key := key{can.CAN_ID_061, i} |
|
|
|
cpe := &ConverterPresentEnergy{UnitId: i} |
|
|
|
cpe := &ConverterPresentEnergy{unit: unit(i)} |
|
|
|
converterPresentEnergyArray[i] = cpe |
|
|
|
c.converterPresentEnergyArray[i] = cpe |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: cpe.setV2gMode, name: FV2gMode}, |
|
|
|
{length: 2, setter: cpe.setV2gMode, name: FV2gMode}, |
|
|
|
{length: 11, setter: cpe.setPresentVoltage, name: FPresentVoltage}, |
|
|
|
{length: 11, setter: cpe.setPresentVoltage, name: FPresentVoltage}, |
|
|
|
{length: 10, setter: cpe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
{length: 10, setter: cpe.setPresentCurrent, name: FPresentCurrent}, |
|
|
|
{length: 8, setter: cpe.setConnectedOut, name: FConnectedOut}, |
|
|
|
{length: 8, setter: cpe.setConnectedOut, name: FConnectedOut}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 500, name: PConverterPresentEnergy, object: cpe} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 500, name: PConverterPresentEnergy, object: cpe} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(1); i < CONVERTERS_MAX; i++ { |
|
|
|
for i := uint(1); i < CONVERTERS_MAX; i++ { |
|
|
|
key := key{can.CAN_ID_062, i} |
|
|
|
key := key{can.CAN_ID_062, i} |
|
|
|
ce := &ConverterErrors{UnitId: i} |
|
|
|
ce := &ConverterErrors{unit: unit(i)} |
|
|
|
converterErrorsArray[i] = ce |
|
|
|
c.converterErrorsArray[i] = ce |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 3, setter: ce.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 3, setter: ce.setBoardReady, name: FBoardReady}, |
|
|
|
{length: 4, setter: ce.setOtherError, name: FOtherError}, |
|
|
|
{length: 4, setter: ce.setOtherError, name: FOtherError}, |
|
|
|
@ -371,24 +373,24 @@ func initialize() { |
|
|
|
{length: 2, setter: ce.setDebugConvEnabled, name: FDebugConvEnabled}, |
|
|
|
{length: 2, setter: ce.setDebugConvEnabled, name: FDebugConvEnabled}, |
|
|
|
{length: 2, setter: ce.setDebugConvDisabled, name: FDebugConvDisabled}, |
|
|
|
{length: 2, setter: ce.setDebugConvDisabled, name: FDebugConvDisabled}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PConverterErrors, object: ce} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PConverterErrors, object: ce} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for i := uint(0); i < CONVERTERS_MAX; i++ { |
|
|
|
for i := uint(0); i < CONVERTERS_MAX; i++ { |
|
|
|
key := key{can.CAN_ID_065, i} |
|
|
|
key := key{can.CAN_ID_065, i} |
|
|
|
cd := &ConverterDebug{UnitId: i} |
|
|
|
cd := &ConverterDebug{unit: unit(i)} |
|
|
|
converterDebugArray[i] = cd |
|
|
|
c.converterDebugArray[i] = cd |
|
|
|
fields = []*field{ |
|
|
|
fields = []*field{ |
|
|
|
{length: 2, setter: cd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 2, setter: cd.setDebugModeOn, name: FDebugModeOn}, |
|
|
|
{length: 3, setter: cd.setDebugEnergyOn, name: FDebugEnergyOn}, |
|
|
|
{length: 3, setter: cd.setDebugEnergyOn, name: FDebugEnergyOn}, |
|
|
|
{length: 11, setter: cd.setDebugTargetVoltage, name: FDebugTargetVoltage}, |
|
|
|
{length: 11, setter: cd.setDebugTargetVoltage, name: FDebugTargetVoltage}, |
|
|
|
{length: 10, setter: cd.setDebugTargetCurrent, name: FDebugTargetCurrent}, |
|
|
|
{length: 10, setter: cd.setDebugTargetCurrent, name: FDebugTargetCurrent}, |
|
|
|
} |
|
|
|
} |
|
|
|
protocolMap[key] = action{fields: fields, interval: 1000, name: PConverterDebug, object: cd} |
|
|
|
c.protocolMap[key] = action{fields: fields, interval: 1000, name: PConverterDebug, object: cd} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// set "null" values
|
|
|
|
// set "null" values
|
|
|
|
for _, element := range protocolMap { |
|
|
|
for _, element := range c.protocolMap { |
|
|
|
var from uint8 = 0 |
|
|
|
var from uint8 = 0 |
|
|
|
for _, f := range element.fields { |
|
|
|
for _, f := range element.fields { |
|
|
|
var mask uint64 = ^(ALL_BITS << f.length) |
|
|
|
var mask uint64 = ^(ALL_BITS << f.length) |
|
|
|
|