summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2016-01-14 18:15:02 +0100
committerHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2016-01-14 18:15:02 +0100
commit8895a4eb87d4abe1e44f1ecca440bbc7a99c3f6a (patch)
treeff724b306be0657fc2e36156d9ee774425b27d9b
parent3e8f2ad9e8b87b3bedf14507a8a836d6d58654c9 (diff)
downloadpositioning-GT3039_wheelAPI_2.tar.gz
Change Wheel API according TomTom proposal: minor API fix + PoC adaptationGT3039_wheelAPI_2
-rw-r--r--gnss-service/src/gnss-use-gpsd.c8
-rwxr-xr-xlog-replayer/doc/LogFileFormat.v4.00.docbin364544 -> 373760 bytes
-rw-r--r--log-replayer/logs/20100411_Geko_Regensburg_short.log12
-rw-r--r--log-replayer/logs/nmea/nmea2gvl.py28
-rw-r--r--log-replayer/src/log-replayer.c15
-rw-r--r--sensors-service/api/wheel.h4
-rw-r--r--sensors-service/src/sns-use-replayer.c48
-rw-r--r--sensors-service/test/sensors-service-client.c8
8 files changed, 64 insertions, 59 deletions
diff --git a/gnss-service/src/gnss-use-gpsd.c b/gnss-service/src/gnss-use-gpsd.c
index 299f983..19876ac 100644
--- a/gnss-service/src/gnss-use-gpsd.c
+++ b/gnss-service/src/gnss-use-gpsd.c
@@ -88,7 +88,7 @@ void gnssGetVersion(int *major, int *minor, int *micro)
}
}
-bool gnssSetGNSSSystems(uint32_t activate_systems)
+bool gnssSetGNSSSystems(uint32_t activateSystems)
{
return false; //satellite system configuration request not supported by gpsd
}
@@ -264,9 +264,9 @@ bool extractPosition(struct gps_data_t* pGpsData, TGNSSPosition* pPosition)
//hardcoded values for standard GPS receiver
pPosition->fixTypeBits = GNSS_FIX_TYPE_SINGLE_FREQUENCY;
pPosition->validityBits |= GNSS_POSITION_TYPE_VALID;
- pPosition->activated_systems = GNSS_SYSTEM_GPS;
+ pPosition->activatedSystems = GNSS_SYSTEM_GPS;
pPosition->validityBits |= GNSS_POSITION_ASYS_VALID;
- pPosition->used_systems = GNSS_SYSTEM_GPS;
+ pPosition->usedSystems = GNSS_SYSTEM_GPS;
pPosition->validityBits |= GNSS_POSITION_USYS_VALID;
if (positionAvailable || velocityAvailable || fixStatusChanged || satellitesChanged)
@@ -358,7 +358,7 @@ void *listen( void *ptr )
{
if(gps_read(&gpsdata))
{
- TGNSSPosition position = = { 0 };
+ TGNSSPosition position = { 0 };
if(!extractPosition(&gpsdata,&position))
{
LOG_ERROR_MSG(gContext,"error extracting position data");
diff --git a/log-replayer/doc/LogFileFormat.v4.00.doc b/log-replayer/doc/LogFileFormat.v4.00.doc
index a0d0029..70c35e1 100755
--- a/log-replayer/doc/LogFileFormat.v4.00.doc
+++ b/log-replayer/doc/LogFileFormat.v4.00.doc
Binary files differ
diff --git a/log-replayer/logs/20100411_Geko_Regensburg_short.log b/log-replayer/logs/20100411_Geko_Regensburg_short.log
index 4e6b5a7..8ca7840 100644
--- a/log-replayer/logs/20100411_Geko_Regensburg_short.log
+++ b/log-replayer/logs/20100411_Geko_Regensburg_short.log
@@ -28,9 +28,9 @@
061074000,01$GVGNSSAT,061074000,1,27,272,36,49,0X00,0X1F
061074000,00$GVGNSSAT,061074000,1,28,068,56,49,0X00,0X1F
#SNS 'derived' from GPS
-061074000,0$GVSNSVEHSP,061074000,0.51,0X01
-061074000,0$GVSNSGYRO,061074000,-38.75,0,0,0,0X01
-061074000,0$GVSNSWHTK,061074000,7,103,8,000,0,0,0,0
+061074000,0$GVSNSVSP,061074000,0.51,0X01
+061074000,0$GVSNSGYR,061074000,-38.75,0,0,0,0X01
+061074000,0$GVSNSWHE,061074000,103,000,0,0,0,0,0,0,0X0001,0X030,0,0,0
#$GPRMC,165756,A,4901.5931,N,01203.9114,E,4.4,270.1,110410,1.6,E,A*14
#$GPGGA,165756,4901.5931,N,01203.9114,E,1,07,1.3,338.2,M,46.6,M,,*40
#$GPGSV,3,1,12,02,19,043,00,05,20,199,00,08,29,072,42,10,04,181,00*7E
@@ -52,7 +52,7 @@
061076000,01$GVGNSSAT,061076000,1,27,272,36,49,0X00,0X1F
061076000,00$GVGNSSAT,061076000,1,28,068,56,47,0X00,0X1F
#SNS 'derived' from GPS
-061076000,0$GVSNSVEHSP,061076000,2.26,0X01
-061076000,0$GVSNSGYRO,061076000,-30.35,0,0,0,0X01
-061076000,0$GVSNSWHTK,061076000,7,266,8,185,0,0,0,0
+061076000,0$GVSNSVSP,061076000,2.26,0X01
+061076000,0$GVSNSGYR,061076000,-30.35,0,0,0,0X01
+061076000,0$GVSNSWHE,061076000,266,185,0,0,0,0,0,0,0X0001,0X030,0,0,0
diff --git a/log-replayer/logs/nmea/nmea2gvl.py b/log-replayer/logs/nmea/nmea2gvl.py
index e926090..ef2eff9 100644
--- a/log-replayer/logs/nmea/nmea2gvl.py
+++ b/log-replayer/logs/nmea/nmea2gvl.py
@@ -759,10 +759,10 @@ def writeGVGNSSAT (file, gsv_arr, timestamp):
# Function definitions to write GENIVI Positioning Log - SNS part
##################################################################
-#write GVSNSVEHSP: Vehicle Speed
-def writeGVSNSVEHSP (file, rmc, timestamp):
+#write GVSNSVSP: Vehicle Speed
+def writeGVSNSVSP (file, rmc, timestamp):
valid = 0
- file.write("{0:09d},0$GVSNSVEHSP,{0:09d},".format(timestamp))
+ file.write("{0:09d},0$GVSNSVSP,{0:09d},".format(timestamp))
if rmc["speed"] is not None:
valid |= 0x01
file.write("{0:.2f},".format(rmc["speed"]))
@@ -771,10 +771,10 @@ def writeGVSNSVEHSP (file, rmc, timestamp):
file.write("0X{0:02X}".format(valid))
file.write("\n")
-#write GVSNSGYRO: Gyroscope Data
-def writeGVSNSGYRO (file, rmc, prev_rmc, timestamp, prev_timestamp):
+#write GVSNSGYR: Gyroscope Data
+def writeGVSNSGYR (file, rmc, prev_rmc, timestamp, prev_timestamp):
valid = 0
- file.write("{0:09d},0$GVSNSGYRO,{0:09d},".format(timestamp))
+ file.write("{0:09d},0$GVSNSGYR,{0:09d},".format(timestamp))
#yaw rate is delta_heading / delta_time
if (rmc["course"] is not None) and (prev_rmc["course"] is not None) and (timestamp > prev_timestamp):
valid |= 0x01
@@ -796,10 +796,10 @@ def writeGVSNSGYRO (file, rmc, prev_rmc, timestamp, prev_timestamp):
file.write("0X{0:02X}".format(valid))
file.write("\n")
-#write GVSNSWHTK: Wheel tick data Data (omly rear right and left wheels)
-def writeGVSNSWHTK (file, rmc, prev_rmc, timestamp, prev_timestamp):
+#write GVSNSWHE: Wheel tick data Data (only rear right and left wheels)
+def writeGVSNSWHE (file, rmc, prev_rmc, timestamp, prev_timestamp):
#this is the only sentence without valid bits
- file.write("{0:09d},0$GVSNSWHTK,{0:09d},".format(timestamp))
+ file.write("{0:09d},0$GVSNSWHE,{0:09d},".format(timestamp))
#yaw rate is delta_heading / delta_time
if (rmc["speed"] is not None) and (rmc["course"] is not None) and (prev_rmc["course"] is not None) and (timestamp > prev_timestamp):
delta_heading = - (rmc["course"] - prev_rmc["course"]) #course is clockwise, yaw rate is counter clock wise
@@ -820,7 +820,7 @@ def writeGVSNSWHTK (file, rmc, prev_rmc, timestamp, prev_timestamp):
ticks_left_int = int(ticks_left)
ticks_right_int = int(ticks_right)
#TODO: store the non-integer fractions for the next update
- file.write("7,{0:03d},8,{1:03d},".format(ticks_left_int, ticks_right_int))
+ file.write("{0:03d},{1:03d},0,0,0,0,0,0,0X0001,0X03".format(ticks_left_int, ticks_right_int))
else:
file.write("0,")
#front left wheel is not available
@@ -830,7 +830,7 @@ def writeGVSNSWHTK (file, rmc, prev_rmc, timestamp, prev_timestamp):
file.write("\n")
#debug
if c_debug and (rmc["speed"] is not None) and (rmc["course"] is not None) and (prev_rmc["course"] is not None) and (timestamp > prev_timestamp):
- file.write("#writeGVSNSWHTK: delta_time:{0:f} delta_heading:{1:f} delta_heading_rad:{2:f} DPP:{3:f} avg_ticks:{4:f} delta_ticks:{5:f}\n".format(delta_time, delta_heading, delta_heading_rad, DPP, avg_ticks, delta_ticks))
+ file.write("#writeGVSNSWHE: delta_time:{0:f} delta_heading:{1:f} delta_heading_rad:{2:f} DPP:{3:f} avg_ticks:{4:f} delta_ticks:{5:f}\n".format(delta_time, delta_heading, delta_heading_rad, DPP, avg_ticks, delta_ticks))
@@ -974,9 +974,9 @@ for line in fi:
#write SNS data if requested
if c_SNS:
fo.write("#SNS 'derived' from GPS\n")
- writeGVSNSVEHSP (fo, g_rmc, g_timestamp)
- writeGVSNSGYRO (fo, g_rmc, g_prev_rmc, g_timestamp, g_prev_timestamp)
- writeGVSNSWHTK (fo, g_rmc, g_prev_rmc, g_timestamp, g_prev_timestamp)
+ writeGVSNSVSP (fo, g_rmc, g_timestamp)
+ writeGVSNSGYR (fo, g_rmc, g_prev_rmc, g_timestamp, g_prev_timestamp)
+ writeGVSNSWHE (fo, g_rmc, g_prev_rmc, g_timestamp, g_prev_timestamp)
#clear buffers, but not g_timestamp
g_prev_rmc = g_rmc.copy()
diff --git a/log-replayer/src/log-replayer.c b/log-replayer/src/log-replayer.c
index c5afd51..9628f76 100644
--- a/log-replayer/src/log-replayer.c
+++ b/log-replayer/src/log-replayer.c
@@ -198,8 +198,9 @@ int main(int argc, char* argv[])
sscanf(buf, "%*[^'$']$%[^',']", msgId);
//GNSS: list of supported message IDs
- char* gnssstr = "GVGNSP,GVGNSC,GVGNSAC,GVGNSSAT";
- if(strstr(gnssstr, msgId) != NULL)
+ //char* gnssstr = "GVGNSP,GVGNSC,GVGNSAC,GVGNSSAT";
+ char* gnssprefix = "GVGNS";
+ if(strncmp (gnssprefix, msgId, strlen(gnssprefix)) == 0)
{
LOG_DEBUG(gContext,"Sending Packet to %s:%d",ipaddr,PORT1);
LOG_DEBUG(gContext,"MsgID:%s", msgId);
@@ -216,8 +217,9 @@ int main(int argc, char* argv[])
//SNS: list of supported message IDs
//char* snsstr = "GVVEHSP,GVGYRO,GVGYROCONF,GVDRVDIR,GVODO,GVWHTK,GVWHTKCONF";
- char* snsstr = "GVSNSVEHSP,GVSNSGYRO,GVSNSWHTK"; //subset currently supported for new log format
- if(strstr(snsstr, msgId) != NULL)
+ //char* snsstr = "GVSNSVEHSP,GVSNSGYRO,GVSNSWHTK"; //subset currently supported for new log format
+ char* snsprefix = "GVSNS";
+ if(strncmp (snsprefix, msgId, strlen(snsprefix)) == 0)
{
LOG_DEBUG(gContext,"Sending Packet to %s:%d",ipaddr,PORT2);
LOG_DEBUG(gContext,"MsgID:%s", msgId);
@@ -232,8 +234,9 @@ int main(int argc, char* argv[])
}
}
//VHL: list of supported message IDs
- char* vhlstr = "GVVEHVER,GVVEHENGSPEED,GVVEHFUELLEVEL,GVVEHFUELCONS,GVVEHTOTALODO";
- if(strstr(vhlstr, msgId) != NULL)
+ //char* vhlstr = "GVVEHVER,GVVEHENGSPEED,GVVEHFUELLEVEL,GVVEHFUELCONS,GVVEHTOTALODO";
+ char* vehprefix = "GVVEH";
+ if(strncmp (vehprefix, msgId, strlen(vehprefix)) == 0)
{
LOG_DEBUG(gContext,"Sending Packet to %s:%d",ipaddr,PORT3);
LOG_DEBUG(gContext,"MsgID:%s", msgId);
diff --git a/sensors-service/api/wheel.h b/sensors-service/api/wheel.h
index d5b23f7..6927d65 100644
--- a/sensors-service/api/wheel.h
+++ b/sensors-service/api/wheel.h
@@ -153,7 +153,7 @@ typedef enum {
typedef enum {
WHEEL_CONFIG_DRIVEN = 0x00000001, /**< The wheel is driven by the powertrain.
It may thus be affected by additional wheel slip. */
- WHEEL_CONFIG_STEERED = 0x00000002 /**< The wheel may be turned by the steering.
+ WHEEL_CONFIG_STEERED = 0x00000002, /**< The wheel may be turned by the steering.
This is typically the case only for wheels on the front axle.
But for some vehicles also wheels on other axles are permanently or temporarily steered. */
WHEEL_CONFIG_DIFF_LOCK = 0x00000004 /**< The differential lock for this wheel is activated. */
@@ -228,7 +228,7 @@ typedef struct {
* The index of configuration data for an individual wheel in the array is fixed during the runtime of the system.
* Unused fields, i.e. those for which wheelUnit is WHEEL_UNIT_NONE will be at the tail of the array.
*/
-typedef TWheelConfiguration[WHEEL_MAX] TWheelConfigurationArray;
+typedef TWheelConfiguration TWheelConfigurationArray[WHEEL_MAX];
/**
* Wheel rotation data information for multiple wheels.
diff --git a/sensors-service/src/sns-use-replayer.c b/sensors-service/src/sns-use-replayer.c
index 9cd6ed9..ea289ac 100644
--- a/sensors-service/src/sns-use-replayer.c
+++ b/sensors-service/src/sns-use-replayer.c
@@ -154,7 +154,7 @@ bool snsVehicleDataDestroy()
return iVehicleDataDestroy();
}
-bool processGVSNSWHTK(char* data)
+bool processGVSNSWHE(char* data)
{
//parse data like: 061076000,0$GVSNSWHTK,061076000,7,266,8,185,0,0,0,0
@@ -174,17 +174,19 @@ bool processGVSNSWHTK(char* data)
return false;
}
-/* TODO adapt to new TWheelData
- n = sscanf(data, "%llu,%hu$GVSNSWHTK,%llu,%u,%u,%u,%u,%u,%u,%u,%u", &timestamp, &countdown, &whtk.timestamp
- ,&whtk.elements[0].wheeltickIdentifier, &whtk.elements[0].wheeltickCounter
- ,&whtk.elements[1].wheeltickIdentifier, &whtk.elements[1].wheeltickCounter
- ,&whtk.elements[2].wheeltickIdentifier, &whtk.elements[2].wheeltickCounter
- ,&whtk.elements[3].wheeltickIdentifier, &whtk.elements[3].wheeltickCounter
+ n = sscanf(data, "%llu,%hu$GVSNSWHE,%llu,%f,%f,%f,%f,%f,%f,%f,%f,%x,%x",
+ &timestamp, &countdown, &whtk.timestamp
+ ,&whtk.data[0], &whtk.data[1]
+ ,&whtk.data[2], &whtk.data[3]
+ ,&whtk.data[4], &whtk.data[5]
+ ,&whtk.data[6], &whtk.data[7]
+ ,&whtk.statusBits
+ ,&whtk.validityBits
);
-*/
+
if (n <= 0)
{
- LOG_ERROR_MSG(gContext,"replayer: processGVSNSWHTK failed!");
+ LOG_ERROR_MSG(gContext,"replayer: processGVSNSWHE failed!");
return false;
}
@@ -224,9 +226,9 @@ bool processGVSNSWHTK(char* data)
return true;
}
-static bool processGVSNSGYRO(char* data)
+static bool processGVSNSGYR(char* data)
{
- //parse data like: 061074000,0$GVSNSGYRO,061074000,-38.75,0,0,0,0X01
+ //parse data like: 061074000,0$GVSNSGYR,061074000,-38.75,0,0,0,0X01
//storage for buffered data
static TGyroscopeData buf_gyro[MAX_BUF_MSG];
@@ -244,11 +246,11 @@ static bool processGVSNSGYRO(char* data)
return false;
}
- n = sscanf(data, "%llu,%hu$GVSNSGYRO,%llu,%f,%f,%f,%f,%x", &timestamp, &countdown, &gyro.timestamp, &gyro.yawRate, &gyro.pitchRate, &gyro.rollRate, &gyro.temperature, &gyro.validityBits);
+ n = sscanf(data, "%llu,%hu$GVSNSGYR,%llu,%f,%f,%f,%f,%x", &timestamp, &countdown, &gyro.timestamp, &gyro.yawRate, &gyro.pitchRate, &gyro.rollRate, &gyro.temperature, &gyro.validityBits);
if (n <= 0)
{
- LOG_ERROR_MSG(gContext,"replayer: processGVSNSGYRO failed!");
+ LOG_ERROR_MSG(gContext,"replayer: processGVSNSGYR failed!");
return false;
}
@@ -290,9 +292,9 @@ static bool processGVSNSGYRO(char* data)
-static bool processGVSNSVEHSP(char* data)
+static bool processGVSNSVSP(char* data)
{
- //parse data like: 061074000,0$GVSNSVEHSP,061074000,0.51,0X01
+ //parse data like: 061074000,0$GVSNSVSP,061074000,0.51,0X01
//storage for buffered data
static TVehicleSpeedData buf_vehsp[MAX_BUF_MSG];
@@ -310,11 +312,11 @@ static bool processGVSNSVEHSP(char* data)
return false;
}
- n = sscanf(data, "%llu,%hu$GVSNSVEHSP,%llu,%f,%x", &timestamp, &countdown, &vehsp.timestamp, &vehsp.vehicleSpeed, &vehsp.validityBits);
+ n = sscanf(data, "%llu,%hu$GVSNSVSP,%llu,%f,%x", &timestamp, &countdown, &vehsp.timestamp, &vehsp.vehicleSpeed, &vehsp.validityBits);
if (n <= 0)
{
- LOG_ERROR_MSG(gContext,"replayer: processGVSNSVEHSP failed!");
+ LOG_ERROR_MSG(gContext,"replayer: processGVSNSVSP failed!");
return false;
}
@@ -428,17 +430,17 @@ void *listenForMessages( void *ptr )
LOG_DEBUG_MSG(gContext,"------------------------------------------------");
- if(strcmp("GVSNSGYRO", msgId) == 0)
+ if(strcmp("GVSNSGYR", msgId) == 0)
{
- processGVSNSGYRO(buf);
+ processGVSNSGYR(buf);
}
- else if(strcmp("GVSNSWHTK", msgId) == 0)
+ else if(strcmp("GVSNSWHE", msgId) == 0)
{
- processGVSNSWHTK(buf);
+ processGVSNSWHE(buf);
}
- else if(strcmp("GVSNSVEHSP", msgId) == 0)
+ else if(strcmp("GVSNSVSP", msgId) == 0)
{
- processGVSNSVEHSP(buf);
+ processGVSNSVSP(buf);
}
}
}
diff --git a/sensors-service/test/sensors-service-client.c b/sensors-service/test/sensors-service-client.c
index bb575dc..76f5cc8 100644
--- a/sensors-service/test/sensors-service-client.c
+++ b/sensors-service/test/sensors-service-client.c
@@ -65,10 +65,10 @@ static void cbWheel(const TWheelData wheelData[], uint16_t numElements)
}
LOG_INFO_MSG(gCtx,"Wheel Update");
- LOG_INFO(gCtx,"wheel1=%f", wheelData[0].wheel1);
- LOG_INFO(gCtx,"wheel2=%f", wheelData[0].wheel2);
- LOG_INFO(gCtx,"wheel3=%f", wheelData[0].wheel3);
- LOG_INFO(gCtx,"wheel4=%f", wheelData[0].wheel4);
+ LOG_INFO(gCtx,"data[0]=%.1f", wheelData[0].data[0]);
+ LOG_INFO(gCtx,"data[1]=%.1f", wheelData[0].data[1]);
+ LOG_INFO(gCtx,"data[2]=%.1f", wheelData[0].data[2]);
+ LOG_INFO(gCtx,"data[3]=%.1f", wheelData[0].data[3]);
}