So far I've managed to send and receive the following correctly (I'm injecting constant values via an Arduino with a CAN bus so that I know what values I SHOULD be seeing in TS on the GPS digital gauges):
Code: Select all
1. GPS Latitude
Northern hemisphere (ie. +ve values) work
Southern hemisphere (ie. -ve values) don't (eg. -271234567 is reported as -23abcdefg, where abcdefg are digits I don't have in front of me right now)
2. GPS Longitude
East and West hemispheres both work
3. GPS Altitude
4. GPS Speed
Note: The Race Tecnology CAN GPS Speed message contains 2D and 3D values; TS uses the 3D value.
I've failed to send GPS Heading data so far.
Race Technology defines 2 GPS Heading messages, RT_GPS_Heading_Gradient1 and RT_GPS_Heading_Gradient2.
I'm sending both of these messages via the CAN bus but don't see any heading updates on TS.
I have the following questions:
1. Is the Race Technology GPS Heading supported and, if so, which message is used by TS, RT_GPS_Heading_Gradient1 or RT_GPS_Heading_Gradient2?
2. Have Southern hemisphere Race Technology GPS Latitudes been tested in TunerStudio, mine are reported incorrectly? (my Southern Hemisphere values aren't correct - I AM sending all multi-byte values in Race Technology's "Little Endian" format and the Northern values are correct so it's not a byte-ordering issue)
3. It seems that TS is ignoring the validity fields in the CAN messages - is this correct?
4. Does TS use the accuracy fields in the CAN messages at all? (it appears not to)
5. Can TS make use of GPS time? (would be nice to have an option to allow it to set the MS time)
FYI: I've included extracts from Race Technology CAN data for the Position, Altitude and Heading below that I'm using to define the GPS CAN messages I'm sending so that you can see what I'm working with.
From http://www.race-technology.com/wiki/ind ... TGPSPosLLH:
Code: Select all
GPSMessages / 3RTGPSPosLLH
RT_GPS_Pos_LLH GPS accuracy and latitude
RT_GPS_Pos_LLH_1: 140, 2 (0x8C0220 + unit id) (0x302)
----
Byte 0: Validity
Byte 1: Accuracy Latitude
Byte 2: Accuracy Longitude
Byte 3: Accuracy Altitude
Bytes 4-7: Latitude (degrees)
----
Latitude resolution is degrees * 1e-7.
The validity byte is used for the data packets in this message *and* in RT_GPS_Pos_LLH_2.
Accuracy value have a resolution of 0.1m. The accuracy figures are a 1 sigma estimate of the accuracy for the position
Code: Select all
GPSMessages / 4RTGPSPosLLH2
RT_GPS_Pos_LLH_2 GPS Longitude and altitude
RT_GPS_Pos_LLH_2: 140, 3 (0x8C0320 + unit id) (0x303)
----
Bytes 0-3: Longitude (degrees)
Bytes 4-7: Altitude (m)
----
Longitude resolution is degrees * 1e-7.
Altitude resolution is m/1000.
Validity is provided by RT_GPS_Pos_LLH_1.
Code: Select all
GPSMessages / 12RTGPSHeadingGradient1
RT_GPS_Heading_Gradient1 Heading and gradient 1
RT_GPS_Heading_Gradient: 140, 21 (0x8C1520 + unit id) (0x315)
----
Byte 0: Validity
Byte 1: Accuracy Heading
Bytes 2-3: GPS Heading (-180 – 180 degrees)
Byte 4: Accuracy Gradient
Bytes 5-7: GPS Gradient
----
Resolution of heading and gradient is degrees/100
Code: Select all
GPSMessages / 13RTGPSHeadingGradient2
RT_GPS_Heading_Gradient2 Heading and gradient 2
RT_GPS_Heading_Gradient: 140, 21 (0x8C1620 + unit id) (0x316)
----
Byte 0: Validity
Byte 1: Accuracy Heading
Bytes 2-3: GPS Heading (0-360 degrees)
Byte 4: Accuracy Gradient
Bytes 5-7: GPS Gradient
----
Resolution of heading and gradient is degrees/100
Code: Select all
BO_ 2156659236 RT_DL1MK3_GPS_Pos_LLH_1: 8 Vector__XXX
SG_ GPS_Pos_LLH_Latitude : 32|32@1- (1E-007,0) [-90|90] "degrees" Vector__XXX
SG_ Accuracy_GPS_Pos_LLH_Altitude : 24|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ Accuracy_GPS_Pos_LLH_Longitude : 16|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ Accuracy_GPS_Pos_LLH_Latitude : 8|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ Validity_GPS_Pos_LLH_Altitude : 2|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Validity_GPS_Pos_LLH_Longitude : 1|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Validity_GPS_Pos_LLH_Latitude : 0|1@1+ (1,0) [0|1] "" Vector__XXX
BO_ 2156659492 RT_DL1MK3_GPS_Pos_LLH_2: 8 Vector__XXX
SG_ GPS_Pos_LLH_Altitude : 32|32@1- (0.001,0) [-1000|100000] "m" Vector__XXX
SG_ GPS_Pos_LLH_Longitude : 0|32@1- (1E-007,0) [-180|180] "degrees" Vector__XXX
BO_ 2156794914 RT_SB_INS_Heading_Gradient: 8 Vector__XXX
SG_ INS_Gradient : 40|16@1- (0.01,0) [-90|90] "degrees" Vector__XXX
SG_ Accuracy_INS_Gradient : 32|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ INS_Heading : 16|16@1- (0.01,0) [-180|180] "degrees" Vector__XXX
SG_ Accuracy_INS_Heading : 8|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ Validity_INS_Gradient : 1|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Validity_INS_Heading : 0|1@1+ (1,0) [0|1] "" Vector__XXX
BO_ 2156795170 RT_SB_INS_Heading_Gradient_2: 8 Vector__XXX
SG_ INS_Gradient : 40|16@1- (0.01,0) [-90|90] "degrees" Vector__XXX
SG_ Accuracy_INS_Gradient : 32|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ INS_Heading_2 : 16|16@1+ (0.01,0) [0|360] "degrees" Vector__XXX
SG_ Accuracy_INS_Heading : 8|8@1+ (1,0) [0|255] "" Vector__XXX
SG_ Validity_INS_Gradient : 1|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Validity_INS_Heading : 0|1@1+ (1,0) [0|1] "" Vector__XXX