From 281d11cee56db851af4bd816008d2ffb8d1acb59 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 10 Jun 2025 21:43:46 -0700 Subject: [PATCH 1/3] added dgps to mapache --- gr25/model/gps.go | 124 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/gr25/model/gps.go b/gr25/model/gps.go index 3fc85af3..301daf20 100644 --- a/gr25/model/gps.go +++ b/gr25/model/gps.go @@ -29,7 +29,7 @@ var GPSLongitude = mp.Message{ } var GPSAltitude = mp.Message{ - mp.NewField("gps_altitude", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("gps_altitude", 8, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ Name: "gps_altitude", @@ -39,3 +39,125 @@ var GPSAltitude = mp.Message{ return signals }), } + +var GPSPx = mp.Message{ + mp.NewField("X_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "x_theta", + Value: int16(f.Value) * 0.001, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("X_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "x_acc", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "status", + Value: int32(f.Value), + RawValue: int32(f.Value), + }) + return signals + }), + +} + +var GPSQy = mp.Message{ + mp.NewField("Y_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "y_theta", + Value: int16(f.Value) * 0.001, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("Y_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "y_acc", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "status", + Value: int32(f.Value), + RawValue: int32(f.Value), + }) + return signals + }), + +} + +var GPSRz = mp.Message{ + mp.NewField("Z_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "z_theta", + Value: int16(f.Value) * 0.001, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("Z_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "z_acc", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "status", + Value: int32(f.Value), + RawValue: int32(f.Value), + }) + return signals + }), +} + +var UVW = mp.Message{ + mp.NewField("DGPS_u", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "dgps_u", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("DGPS_v", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "dgps_v", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), + mp.NewField("DGPS_w", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + signals := []mp.Signal{} + signals = append(signals, mp.Signal{ + Name: "dgps_w", + Value: int16(f.Value) * 0.01, + RawValue: int16(f.Value), + }) + return signals + }), +} From c8b7144a2b4cf09620bba59ba0a49e3b9a7daada Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 10 Jun 2025 21:48:10 -0700 Subject: [PATCH 2/3] modifed messages.go to add gps ids --- gr25/model/gps.go | 2 +- gr25/model/message.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gr25/model/gps.go b/gr25/model/gps.go index 301daf20..7922f197 100644 --- a/gr25/model/gps.go +++ b/gr25/model/gps.go @@ -132,7 +132,7 @@ var GPSRz = mp.Message{ }), } -var UVW = mp.Message{ +var DGPS_UVW = mp.Message{ mp.NewField("DGPS_u", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ diff --git a/gr25/model/message.go b/gr25/model/message.go index 36a9c4e6..5d338d0e 100644 --- a/gr25/model/message.go +++ b/gr25/model/message.go @@ -30,6 +30,13 @@ var messageMap = map[int]mp.Message{ 0x02A: TCMResourceUtil, 0x02B: DashWarningFlags, 0x02E: ECUPedals, + 0x030: DGPS_UVW, + 0x031: GPSLatitude, + 0x032: GPSLongitude, + 0x033: GPSAltitude, + 0x034: GPSPx, + 0x035: GPSPy, + 0x036: GPSPz, } func GetMessage(id int) mp.Message { From 29d1f9f3de78795f4a5a3b495b94c4ea5ac06d41 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 10 Jun 2025 22:00:10 -0700 Subject: [PATCH 3/3] fixed type casting --- gr25/model/gps.go | 98 +++++++++++++++++++++---------------------- gr25/model/message.go | 6 +-- 2 files changed, 51 insertions(+), 53 deletions(-) diff --git a/gr25/model/gps.go b/gr25/model/gps.go index 7922f197..b6fc3faa 100644 --- a/gr25/model/gps.go +++ b/gr25/model/gps.go @@ -41,122 +41,120 @@ var GPSAltitude = mp.Message{ } var GPSPx = mp.Message{ - mp.NewField("X_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("X_Theta", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "x_theta", - Value: int16(f.Value) * 0.001, - RawValue: int16(f.Value), + Name: "x_theta", + Value: (float64(f.Value) * 0.01), + RawValue: f.Value, }) return signals - }), - mp.NewField("X_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + }), + mp.NewField("X_Acc", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "x_acc", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "x_acc", + Value: (float64(f.Value) * 0.01), + RawValue: f.Value, }) return signals }), mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "status", - Value: int32(f.Value), - RawValue: int32(f.Value), + Name: "status", + Value: float64(f.Value), + RawValue: f.Value, }) return signals }), - } var GPSQy = mp.Message{ - mp.NewField("Y_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("Y_Theta", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "y_theta", - Value: int16(f.Value) * 0.001, - RawValue: int16(f.Value), + Name: "y_theta", + Value: float64(f.Value) * 0.001, + RawValue: f.Value, }) return signals - }), - mp.NewField("Y_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + }), + mp.NewField("Y_Acc", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "y_acc", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "y_acc", + Value: float64(f.Value) * 0.01, + RawValue: f.Value, }) return signals }), mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "status", - Value: int32(f.Value), - RawValue: int32(f.Value), + Name: "status", + Value: float64(f.Value), + RawValue: f.Value, }) return signals }), - } var GPSRz = mp.Message{ - mp.NewField("Z_Theta", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("Z_Theta", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "z_theta", - Value: int16(f.Value) * 0.001, - RawValue: int16(f.Value), + Name: "z_theta", + Value: float64(f.Value) * 0.001, + RawValue: f.Value, }) return signals - }), - mp.NewField("Z_Acc", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + }), + mp.NewField("Z_Acc", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "z_acc", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "z_acc", + Value: float64(f.Value) * 0.01, + RawValue: f.Value, }) return signals }), mp.NewField("Status", 4, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "status", - Value: int32(f.Value), - RawValue: int32(f.Value), + Name: "status", + Value: float64(f.Value), + RawValue: f.Value, }) return signals }), } var DGPS_UVW = mp.Message{ - mp.NewField("DGPS_u", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("DGPS_u", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "dgps_u", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "dgps_u", + Value: float64(f.Value) * 0.01, + RawValue: f.Value, }) return signals }), - mp.NewField("DGPS_v", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("DGPS_v", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "dgps_v", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "dgps_v", + Value: float64(f.Value) * 0.01, + RawValue: f.Value, }) return signals }), - mp.NewField("DGPS_w", 2, mp.Unsigned, mp.LittleEndian, func(f mp.Field) []mp.Signal { + mp.NewField("DGPS_w", 2, mp.Signed, mp.LittleEndian, func(f mp.Field) []mp.Signal { signals := []mp.Signal{} signals = append(signals, mp.Signal{ - Name: "dgps_w", - Value: int16(f.Value) * 0.01, - RawValue: int16(f.Value), + Name: "dgps_w", + Value: float64(f.Value) * 0.01, + RawValue: f.Value, }) return signals }), diff --git a/gr25/model/message.go b/gr25/model/message.go index 5d338d0e..3b9726b7 100644 --- a/gr25/model/message.go +++ b/gr25/model/message.go @@ -30,13 +30,13 @@ var messageMap = map[int]mp.Message{ 0x02A: TCMResourceUtil, 0x02B: DashWarningFlags, 0x02E: ECUPedals, - 0x030: DGPS_UVW, + 0x030: DGPS_UVW, 0x031: GPSLatitude, 0x032: GPSLongitude, 0x033: GPSAltitude, 0x034: GPSPx, - 0x035: GPSPy, - 0x036: GPSPz, + 0x035: GPSQy, + 0x036: GPSRz, } func GetMessage(id int) mp.Message {