diff --git a/gr25/model/acu.go b/gr25/model/acu.go index 1ae87edb..6bb7aff8 100644 --- a/gr25/model/acu.go +++ b/gr25/model/acu.go @@ -29,7 +29,7 @@ var ACUStatusOne = mp.Message{ signals := []mp.Signal{} signals = append(signals, mp.Signal{ Name: "accumulator_current", - Value: float64(f.Value) * 0.01 - 327.68, + Value: float64(f.Value)*0.01 - 327.68, RawValue: f.Value, }) return signals @@ -86,7 +86,7 @@ var ACUStatusTwo = mp.Message{ signals := []mp.Signal{} signals = append(signals, mp.Signal{ Name: "min_cell_voltage", - Value: float64(f.Value) * 0.01 + 2, + Value: float64(f.Value)*0.01 + 2, RawValue: f.Value, }) return signals @@ -220,7 +220,7 @@ var ACUConfigOperationalParameters = mp.Message{ signals := []mp.Signal{} signals = append(signals, mp.Signal{ Name: "min_cell_voltage", - Value: float64(f.Value) * 0.01 + 2, + Value: float64(f.Value)*0.01 + 2, RawValue: f.Value, }) return signals @@ -242,7 +242,7 @@ var ACUCellDataOne = mp.Message{ for i := 0; i < 32; i++ { signals = append(signals, mp.Signal{ Name: fmt.Sprintf("cell%d_voltage", i), - Value: float64(f.Bytes[i*2]) * 0.01 + 2, + Value: float64(f.Bytes[i*2])*0.01 + 2, RawValue: int(f.Bytes[i*2]), }) signals = append(signals, mp.Signal{ @@ -260,12 +260,12 @@ var ACUCellDataTwo = mp.Message{ signals := []mp.Signal{} for i := 0; i < 32; i++ { signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_voltage", i + 32), - Value: float64(f.Bytes[i*2]) * 0.01 + 2, + Name: fmt.Sprintf("cell%d_voltage", i+32), + Value: float64(f.Bytes[i*2])*0.01 + 2, RawValue: int(f.Bytes[i*2]), }) signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_temp", i + 32), + Name: fmt.Sprintf("cell%d_temp", i+32), Value: float64(f.Bytes[i*2+1]) * 0.25, RawValue: int(f.Bytes[i*2+1]), }) @@ -279,12 +279,12 @@ var ACUCellDataThree = mp.Message{ signals := []mp.Signal{} for i := 0; i < 32; i++ { signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_voltage", i + 64), - Value: float64(f.Bytes[i*2]) * 0.01 + 2, + Name: fmt.Sprintf("cell%d_voltage", i+64), + Value: float64(f.Bytes[i*2])*0.01 + 2, RawValue: int(f.Bytes[i*2]), }) signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_temp", i + 64), + Name: fmt.Sprintf("cell%d_temp", i+64), Value: float64(f.Bytes[i*2+1]) * 0.25, RawValue: int(f.Bytes[i*2+1]), }) @@ -298,12 +298,12 @@ var ACUCellDataFour = mp.Message{ signals := []mp.Signal{} for i := 0; i < 32; i++ { signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_voltage", i + 96), - Value: float64(f.Bytes[i*2]) * 0.01 + 2, + Name: fmt.Sprintf("cell%d_voltage", i+96), + Value: float64(f.Bytes[i*2])*0.01 + 2, RawValue: int(f.Bytes[i*2]), }) signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_temp", i + 96), + Name: fmt.Sprintf("cell%d_temp", i+96), Value: float64(f.Bytes[i*2+1]) * 0.25, RawValue: int(f.Bytes[i*2+1]), }) @@ -317,16 +317,16 @@ var ACUCellDataFive = mp.Message{ signals := []mp.Signal{} for i := 0; i < 32; i++ { signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_voltage", i + 128), - Value: float64(f.Bytes[i*2]) * 0.01 + 2, + Name: fmt.Sprintf("cell%d_voltage", i+128), + Value: float64(f.Bytes[i*2])*0.01 + 2, RawValue: int(f.Bytes[i*2]), }) signals = append(signals, mp.Signal{ - Name: fmt.Sprintf("cell%d_temp", i + 128), + Name: fmt.Sprintf("cell%d_temp", i+128), Value: float64(f.Bytes[i*2+1]) * 0.25, RawValue: int(f.Bytes[i*2+1]), }) } return signals }), -} \ No newline at end of file +} diff --git a/gr25/model/dc_dc.go b/gr25/model/dc_dc.go index 7958a3cb..f2fde6ff 100644 --- a/gr25/model/dc_dc.go +++ b/gr25/model/dc_dc.go @@ -50,4 +50,4 @@ var DC_DCStatus = mp.Message{ }) return signals }), -} \ No newline at end of file +} diff --git a/gr25/model/ecu.go b/gr25/model/ecu.go index e882317b..9b035262 100644 --- a/gr25/model/ecu.go +++ b/gr25/model/ecu.go @@ -133,4 +133,4 @@ var ECUStatusThree = mp.Message{ }) return signals }), -} \ No newline at end of file +} diff --git a/gr25/model/fan_controller.go b/gr25/model/fan_controller.go new file mode 100644 index 00000000..0a9f3578 --- /dev/null +++ b/gr25/model/fan_controller.go @@ -0,0 +1,46 @@ +package model + +import mp "github.com/gaucho-racing/mapache-go" + +var FanStatus = mp.Message{ + mp.NewField("speed", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "speed", + Value: float64(f.Value), + RawValue: f.Value, + }) + return signals + }), + mp.NewField("input_voltage", 1, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "input_voltage", + Value: float64(f.Value) * 0.1, + RawValue: f.Value, + }) + return signals + }), + mp.NewField("input_current", 1, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "input_current", + Value: float64(f.Value) * 0.1, + RawValue: f.Value, + }) + return signals + }), +} + +// ECU sends this command so `fan_` is ok in the signal name +var FanCommand = mp.Message{ + mp.NewField("fan_command", 1, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "fan_command", + Value: float64(f.Value), + RawValue: f.Value, + }) + return signals + }), +} diff --git a/gr25/model/message.go b/gr25/model/message.go index 68480df4..399cdeda 100644 --- a/gr25/model/message.go +++ b/gr25/model/message.go @@ -18,6 +18,8 @@ var messageMap = map[int]mp.Message{ 0x010: ACUCellDataFour, 0x011: ACUCellDataFive, 0x012: DC_DCStatus, + 0x018: FanStatus, + 0x019: FanCommand, 0x02A: TCMResourceUtil, } diff --git a/gr25/service/message.go b/gr25/service/message.go index 28f93a14..1a4b2a27 100644 --- a/gr25/service/message.go +++ b/gr25/service/message.go @@ -31,7 +31,7 @@ func SubscribeTopics() { if nodeID == "" { utils.SugarLogger.Infof("[MQ] Received invalid node id: %s, ignoring", topic) return - } + } if canID == "ping" { go HandlePing(vehicleID, nodeID, msg.Payload())