summaryrefslogtreecommitdiffstats
path: root/positioning/server/src/Sensor/DeadReckoning_main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'positioning/server/src/Sensor/DeadReckoning_main.cpp')
-rw-r--r--positioning/server/src/Sensor/DeadReckoning_main.cpp966
1 files changed, 526 insertions, 440 deletions
diff --git a/positioning/server/src/Sensor/DeadReckoning_main.cpp b/positioning/server/src/Sensor/DeadReckoning_main.cpp
index 4d7187ac..1d956b72 100644
--- a/positioning/server/src/Sensor/DeadReckoning_main.cpp
+++ b/positioning/server/src/Sensor/DeadReckoning_main.cpp
@@ -1,5 +1,5 @@
/*
- * @copyright Copyright (c) 2016-2019 TOYOTA MOTOR CORPORATION.
+ * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@
* :DeadReckoningRcvMsg() DR Component MSG Receive Processing
******************************************************************************/
-//#include <positioning_hal.h>
+#include <positioning_hal.h>
#include "DeadReckoning_main.h"
@@ -47,7 +47,7 @@ static void DeadReckoningLinkSharedMemory(char *shared_memory_name, void **share
/* Constant */
/*************************************************/
-#define DEAD_RECKONING_BUF_SIZE 5
+#define DEAD_RECKONING_BUF_SIZE 7
#define DR_MASK_WORD_L 0x00FF
#define DR_MASK_WORD_U 0xFF00
@@ -62,18 +62,22 @@ BOOL g_fst_sens_data_get_flg = FALSE;
/* Reception flag for each data */
BOOL g_sens_data_get_sns_cnt_flg = FALSE;
-BOOL g_sens_data_get_gyro_flg = FALSE;
+BOOL g_sens_data_get_gyro_x_flg = FALSE;
+BOOL g_sens_data_get_gyro_y_flg = FALSE;
+BOOL g_sens_data_get_gyro_z_flg = FALSE;
BOOL g_sens_data_get_rev_flg = FALSE;
BOOL g_sens_data_get_spdpulse_flg = FALSE;
BOOL g_sens_data_get_spdpulse_chk_flg = FALSE;
-BOOL g_sens_data_get_gyro_fst_flg = FALSE;
+BOOL g_sens_data_get_gyro_x_fst_flg = FALSE;
+BOOL g_sens_data_get_gyro_y_fst_flg = FALSE;
+BOOL g_sens_data_get_gyro_z_fst_flg = FALSE;
BOOL g_sens_data_get_rev_fst_flg = FALSE;
BOOL g_sens_data_get_spdpulse_fst_flg = FALSE;
BOOL g_sens_data_get_spdpulse_chk_fst_flg = FALSE;
/* Receive data storage buffer */
-/* [0]:SNS_COUNTER [1]:REV [2]:SPEED_PULSE_FLAG [3]:SPEED_PULSE [4]:GYRO */
+/* [0]:SNS_COUNTER [1]:REV [2]:SPEED_PULSE_FLAG [3]:SPEED_PULSE [4]:GYRO_X [5]:GYRO_Y [6]:GYRO_Z */
DEAD_RECKONING_RCVDATA_SENSOR g_sns_buf[DEAD_RECKONING_BUF_SIZE];
DEAD_RECKONING_SAVEDATA_SENSOR_FIRST g_fst_sns_buf;
@@ -101,442 +105,524 @@ int32 DeadReckoningInit(void) { // LCOV_EXCL_START 8: dead code.
******************************************************************************/
void DeadReckoningRcvMsg(const DEAD_RECKONING_RCVDATA *msg, DEAD_RECKONING_LONLAT_INFO *location_info) {
AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-// if ((msg == NULL) || (location_info == NULL)) {
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "msg == NULL\r\n");
-// } else {
-// const SENSOR_MSG_GPSDATA_DAT *rcv_gps_msg = NULL;
-// const VEHICLESENS_DATA_MASTER *rcv_sensor_msg = NULL;
-// const VEHICLESENS_DATA_MASTER_FST *rcv_sensor_msg_fst = NULL;
-//
-// Struct_GpsData send_gps_msg;
-// Struct_SensData send_sensor_msg;
-//
-// /* Initialization */
-// (void)memset(reinterpret_cast<void *>(&send_gps_msg), 0, sizeof(Struct_GpsData));
-// (void)memset(reinterpret_cast<void *>(&send_sensor_msg), 0, sizeof(Struct_SensData));
-//
-// /* Flag is set to FALSE */
-// location_info->calc_called = static_cast<u_int8>(FALSE);
-// location_info->available = static_cast<u_int8>(FALSE);
-//
-// if (CID_DEAD_RECKONING_GPS_DATA == msg->hdr.hdr.cid) {
-// rcv_gps_msg = (const SENSOR_MSG_GPSDATA_DAT *)(&(msg->data[0]));
-// /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
-//
-// /* Receiving GPS Data for DR */
-// switch (rcv_gps_msg->ul_did) {
-// case VEHICLE_DID_GPS_UBLOX_NAV_POSLLH :
-// case VEHICLE_DID_GPS_UBLOX_NAV_STATUS :
-// case VEHICLE_DID_GPS_UBLOX_NAV_TIMEUTC :
-// case VEHICLE_DID_GPS_UBLOX_NAV_VELNED :
-// case VEHICLE_DID_GPS_UBLOX_NAV_DOP :
-// case VEHICLE_DID_GPS_UBLOX_NAV_SVINFO :
-// case VEHICLE_DID_GPS_UBLOX_NAV_CLOCK :
-// {
-// g_gps_data_get_flg = TRUE;
-// break;
-// }
-// default:
-// break;
-// }
-// } else if (CID_DEAD_RECKONING_SENS_DATA == msg->hdr.hdr.cid) {
-// rcv_sensor_msg = (const VEHICLESENS_DATA_MASTER *)(&(msg->data[0]));
-// /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
-//
-// /* Sensor data reception for DR */
-// switch (rcv_sensor_msg->ul_did) {
-// case POSHAL_DID_SNS_COUNTER :
-// {
-// g_sns_buf[0].did = rcv_sensor_msg->ul_did;
-// g_sns_buf[0].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
-// g_sns_buf[0].data[0] = rcv_sensor_msg->uc_data[0];
-// g_sens_data_get_sns_cnt_flg = TRUE;
-// break;
-// }
-// case POSHAL_DID_REV :
-// {
-// g_sns_buf[1].did = rcv_sensor_msg->ul_did;
-// g_sns_buf[1].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
-// (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[1].data[0])),
-// (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
-// g_sens_data_get_rev_flg = TRUE;
-// break;
-// }
-// case POSHAL_DID_SPEED_PULSE_FLAG :
-// {
-// g_sns_buf[2].did = rcv_sensor_msg->ul_did;
-// g_sns_buf[2].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
-// (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[2].data[0])),
-// (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
-// g_sens_data_get_spdpulse_chk_flg = TRUE;
-// break;
-// }
-// case POSHAL_DID_SPEED_PULSE :
-// {
-// g_sns_buf[3].did = rcv_sensor_msg->ul_did;
-// g_sns_buf[3].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
-// (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[3].data[0])),
-// (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
-// g_sens_data_get_spdpulse_flg = TRUE;
-// break;
-// }
-// case POSHAL_DID_GYRO :
-// {
-// g_sns_buf[4].did = rcv_sensor_msg->ul_did;
-// g_sns_buf[4].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
-// (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[4].data[0])),
-// (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
-// g_sens_data_get_gyro_flg = TRUE;
-// break;
-// }
-// default:
-// break;
-// }
-// } else if (CID_DEAD_RECKONING_SENS_FST_DATA == msg->hdr.hdr.cid) {
-// u_int16 rev_data_size;
-//
-// rcv_sensor_msg_fst = (const VEHICLESENS_DATA_MASTER_FST *)(&(msg->data[0]));
-// /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
-// rev_data_size = static_cast<u_int16>(msg->hdr.hdr.msgbodysize - VEHICLESENS_DELIVERY_FSTSNS_HDR_SIZE);
-//
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DID = %08X, rev_data_size = %d ",
-// rcv_sensor_msg_fst->ul_did, rev_data_size);
-//#endif
-//
-// /* Sensor data reception for DR */
-// switch (rcv_sensor_msg_fst->ul_did) {
-// case POSHAL_DID_REV_FST :
-// {
-// (void)memcpy(
-// reinterpret_cast<void *>(&(g_fst_sns_buf.rev_data[g_fst_sns_buf.rev_rcv_size
-// / sizeof(g_fst_sns_buf.rev_data[0])])),
-// (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
-// (size_t)(rev_data_size));
-//
-// g_fst_sns_buf.rev_rcv_size = static_cast<u_int16>(
-// g_fst_sns_buf.rev_rcv_size + rev_data_size);
-//
-// if (g_fst_sns_buf.rev_rcv_size == rcv_sensor_msg_fst->us_size) {
-// g_sens_data_get_rev_fst_flg = TRUE;
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " REV receive flag = TRUE ");
-//#endif
-// }
-// break;
-// }
-// case POSHAL_DID_SPEED_PULSE_FLAG_FST :
-// {
-// (void)memcpy(
-// reinterpret_cast<void *>(&(g_fst_sns_buf.spd_pulse_check_data[g_fst_sns_buf.spd_pulse_check_rcv_size
-// / sizeof(g_fst_sns_buf.spd_pulse_check_data[0])])),
-// (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
-// (size_t)(rev_data_size));
-//
-// g_fst_sns_buf.spd_pulse_check_rcv_size = static_cast<u_int16>(
-// g_fst_sns_buf.spd_pulse_check_rcv_size + rev_data_size);
-//
-// if (g_fst_sns_buf.spd_pulse_check_rcv_size == rcv_sensor_msg_fst->us_size) {
-// g_sens_data_get_spdpulse_chk_fst_flg = TRUE;
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " SPF receive flag = TRUE ");
-//#endif
-// }
-// break;
-// }
-// case POSHAL_DID_SPEED_PULSE_FST :
-// {
-// (void)memcpy(
-// reinterpret_cast<void *>(&(g_fst_sns_buf.spd_pulse_data[g_fst_sns_buf.spd_pulse_rcv_size
-// / sizeof(g_fst_sns_buf.spd_pulse_data[0])])),
-// (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
-// (size_t)(rev_data_size));
-//
-// g_fst_sns_buf.spd_pulse_rcv_size = static_cast<u_int16>(g_fst_sns_buf.spd_pulse_rcv_size + \
-// rev_data_size);
-//
-// if (g_fst_sns_buf.spd_pulse_rcv_size == rcv_sensor_msg_fst->us_size) {
-// g_sens_data_get_spdpulse_fst_flg = TRUE;
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " SP receive flag = TRUE ");
-//#endif
-// }
-// break;
-// }
-// case POSHAL_DID_GYRO_FST :
-// {
-// (void)memcpy(
-// reinterpret_cast<void *>(&(g_fst_sns_buf.gyro_data[g_fst_sns_buf.gyro_rcv_size
-// / sizeof(g_fst_sns_buf.gyro_data[0])])),
-// (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
-// (size_t)(rev_data_size));
-//
-// g_fst_sns_buf.gyro_rcv_size = static_cast<u_int16>(g_fst_sns_buf.gyro_rcv_size + rev_data_size);
-//
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
-// " g_fst_sns_buf.gyro_rcv_size = %d, rcv_sensor_msg_fst->us_size = %d ",
-// g_fst_sns_buf.gyro_rcv_size, rcv_sensor_msg_fst->us_size);
-//#endif
-// if (g_fst_sns_buf.gyro_rcv_size == rcv_sensor_msg_fst->us_size) {
-// g_sens_data_get_gyro_fst_flg = TRUE;
-//#if DEAD_RECKONING_MAIN_DEBUG
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " GYRO receive flag = TRUE ");
-//#endif
-// }
-// break;
-// }
-// default:
-// break;
-// }
-// } else {
-// /* nop */
-// }
-//
-// /* 4 data received? */
-// if ((g_sens_data_get_sns_cnt_flg == TRUE) &&
-// (g_sens_data_get_rev_flg == TRUE) &&
-// (g_sens_data_get_gyro_flg == TRUE) &&
-// (g_sens_data_get_spdpulse_flg == TRUE) &&
-// (g_sens_data_get_spdpulse_chk_flg == TRUE)) {
-// /* Sensor data acquisition flag ON */
-// g_sens_data_get_flg = TRUE;
-//
-// /* Set all flags to FALSE */
-// g_sens_data_get_sns_cnt_flg = FALSE;
-// g_sens_data_get_gyro_flg = FALSE;
-// g_sens_data_get_rev_flg = FALSE;
-// g_sens_data_get_spdpulse_flg = FALSE;
-// g_sens_data_get_spdpulse_chk_flg = FALSE;
-// }
-//
-// /* 4 data received? */
-// if ((g_sens_data_get_rev_fst_flg == TRUE) &&
-// (g_sens_data_get_gyro_fst_flg == TRUE) &&
-// (g_sens_data_get_spdpulse_fst_flg == TRUE) &&
-// (g_sens_data_get_spdpulse_chk_fst_flg == TRUE)) {
-// /* Initial sensor data acquisition flag ON */
-// g_fst_sens_data_get_flg = TRUE;
-//
-// /* Set all flags to FALSE */
-// g_sens_data_get_gyro_fst_flg = FALSE;
-// g_sens_data_get_rev_fst_flg = FALSE;
-// g_sens_data_get_spdpulse_fst_flg = FALSE;
-// g_sens_data_get_spdpulse_chk_fst_flg = FALSE;
-// }
-//
-// DeadReckoningRcvMsgFstSens(msg, location_info, rcv_gps_msg, &send_gps_msg, &send_sensor_msg);
-// }
+ if ((msg == NULL) || (location_info == NULL)) {
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "msg == NULL\r\n");
+ } else {
+ const SENSOR_MSG_GPSDATA_DAT *rcv_gps_msg = NULL;
+ const VEHICLESENS_DATA_MASTER *rcv_sensor_msg = NULL;
+ const VEHICLESENS_DATA_MASTER_FST *rcv_sensor_msg_fst = NULL;
+
+ Struct_GpsData send_gps_msg;
+ Struct_SensData send_sensor_msg;
+
+ /* Initialization */
+ (void)memset(reinterpret_cast<void *>(&send_gps_msg), 0, sizeof(Struct_GpsData));
+ (void)memset(reinterpret_cast<void *>(&send_sensor_msg), 0, sizeof(Struct_SensData));
+
+ /* Flag is set to FALSE */
+ location_info->calc_called = static_cast<u_int8>(FALSE);
+ location_info->available = static_cast<u_int8>(FALSE);
+
+ if (CID_DEAD_RECKONING_GPS_DATA == msg->hdr.hdr.cid) {
+ rcv_gps_msg = (const SENSOR_MSG_GPSDATA_DAT *)(&(msg->data[0]));
+ /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
+
+ /* Receiving GPS Data for DR */
+ switch (rcv_gps_msg->ul_did) {
+ case VEHICLE_DID_GPS_UBLOX_NAV_POSLLH :
+ case VEHICLE_DID_GPS_UBLOX_NAV_STATUS :
+ case VEHICLE_DID_GPS_UBLOX_NAV_TIMEUTC :
+ case VEHICLE_DID_GPS_UBLOX_NAV_VELNED :
+ case VEHICLE_DID_GPS_UBLOX_NAV_DOP :
+ case VEHICLE_DID_GPS_UBLOX_NAV_SVINFO :
+ case VEHICLE_DID_GPS_UBLOX_NAV_CLOCK :
+ {
+ g_gps_data_get_flg = TRUE;
+ break;
+ }
+ default:
+ break;
+ }
+ } else if (CID_DEAD_RECKONING_SENS_DATA == msg->hdr.hdr.cid) {
+ rcv_sensor_msg = (const VEHICLESENS_DATA_MASTER *)(&(msg->data[0]));
+ /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
+
+ /* Sensor data reception for DR */
+ switch (rcv_sensor_msg->ul_did) {
+ case POSHAL_DID_SNS_COUNTER :
+ {
+ g_sns_buf[0].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[0].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ g_sns_buf[0].data[0] = rcv_sensor_msg->uc_data[0];
+ g_sens_data_get_sns_cnt_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_REV :
+ {
+ g_sns_buf[1].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[1].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[1].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_rev_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_SPEED_PULSE_FLAG :
+ {
+ g_sns_buf[2].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[2].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[2].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_spdpulse_chk_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_SPEED_PULSE :
+ {
+ g_sns_buf[3].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[3].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[3].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_spdpulse_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_GYRO_X :
+ {
+ g_sns_buf[4].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[4].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[4].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_gyro_x_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_GYRO_Y :
+ {
+ g_sns_buf[5].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[5].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[5].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_gyro_y_flg = TRUE;
+ break;
+ }
+ case POSHAL_DID_GYRO_Z :
+ {
+ g_sns_buf[6].did = rcv_sensor_msg->ul_did;
+ g_sns_buf[6].size = static_cast<u_int8>(rcv_sensor_msg->us_size);
+ (void)memcpy(reinterpret_cast<void *>(&(g_sns_buf[6].data[0])),
+ (const void *)(&(rcv_sensor_msg->uc_data[0])), (size_t)rcv_sensor_msg->us_size);
+ g_sens_data_get_gyro_z_flg = TRUE;
+ break;
+ }
+ default:
+ break;
+ }
+ } else if (CID_DEAD_RECKONING_SENS_FST_DATA == msg->hdr.hdr.cid) {
+ u_int16 rev_data_size;
+
+ rcv_sensor_msg_fst = (const VEHICLESENS_DATA_MASTER_FST *)(&(msg->data[0]));
+ /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
+ rev_data_size = static_cast<u_int16>(msg->hdr.hdr.msgbodysize - VEHICLESENS_DELIVERY_FSTSNS_HDR_SIZE);
+
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " DID = %08X, rev_data_size = %d ",
+ rcv_sensor_msg_fst->ul_did, rev_data_size);
+#endif
+
+ /* Sensor data reception for DR */
+ switch (rcv_sensor_msg_fst->ul_did) {
+ case POSHAL_DID_REV_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.rev_data[g_fst_sns_buf.rev_rcv_size
+ / sizeof(g_fst_sns_buf.rev_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.rev_rcv_size = static_cast<u_int16>(
+ g_fst_sns_buf.rev_rcv_size + rev_data_size);
+
+ if (g_fst_sns_buf.rev_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_rev_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " REV receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ case POSHAL_DID_SPEED_PULSE_FLAG_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.spd_pulse_check_data[g_fst_sns_buf.spd_pulse_check_rcv_size
+ / sizeof(g_fst_sns_buf.spd_pulse_check_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.spd_pulse_check_rcv_size = static_cast<u_int16>(
+ g_fst_sns_buf.spd_pulse_check_rcv_size + rev_data_size);
+
+ if (g_fst_sns_buf.spd_pulse_check_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_spdpulse_chk_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " SPF receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ case POSHAL_DID_SPEED_PULSE_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.spd_pulse_data[g_fst_sns_buf.spd_pulse_rcv_size
+ / sizeof(g_fst_sns_buf.spd_pulse_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.spd_pulse_rcv_size = static_cast<u_int16>(g_fst_sns_buf.spd_pulse_rcv_size + \
+ rev_data_size);
+
+ if (g_fst_sns_buf.spd_pulse_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_spdpulse_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " SP receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ case POSHAL_DID_GYRO_X_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.gyro_x_data[g_fst_sns_buf.gyro_x_rcv_size
+ / sizeof(g_fst_sns_buf.gyro_x_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.gyro_x_rcv_size = static_cast<u_int16>(g_fst_sns_buf.gyro_x_rcv_size + rev_data_size);
+
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
+ " g_fst_sns_buf.gyro_x_rcv_size = %d, rcv_sensor_msg_fst->us_size = %d ",
+ g_fst_sns_buf.gyro_x_rcv_size, rcv_sensor_msg_fst->us_size);
+#endif
+ if (g_fst_sns_buf.gyro_x_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_gyro_x_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " GYRO_X receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ case POSHAL_DID_GYRO_Y_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.gyro_y_data[g_fst_sns_buf.gyro_y_rcv_size
+ / sizeof(g_fst_sns_buf.gyro_y_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.gyro_y_rcv_size = static_cast<u_int16>(g_fst_sns_buf.gyro_y_rcv_size + rev_data_size);
+
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
+ " g_fst_sns_buf.gyro_y_rcv_size = %d, rcv_sensor_msg_fst->us_size = %d ",
+ g_fst_sns_buf.gyro_y_rcv_size, rcv_sensor_msg_fst->us_size);
+#endif
+ if (g_fst_sns_buf.gyro_y_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_gyro_y_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " GYRO_Y receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ case POSHAL_DID_GYRO_Z_FST :
+ {
+ (void)memcpy(
+ reinterpret_cast<void *>(&(g_fst_sns_buf.gyro_z_data[g_fst_sns_buf.gyro_z_rcv_size
+ / sizeof(g_fst_sns_buf.gyro_z_data[0])])),
+ (const void *)(&(rcv_sensor_msg_fst->uc_data[0])),
+ (size_t)(rev_data_size));
+
+ g_fst_sns_buf.gyro_z_rcv_size = static_cast<u_int16>(g_fst_sns_buf.gyro_z_rcv_size + rev_data_size);
+
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
+ " g_fst_sns_buf.gyro_z_rcv_size = %d, rcv_sensor_msg_fst->us_size = %d ",
+ g_fst_sns_buf.gyro_z_rcv_size, rcv_sensor_msg_fst->us_size);
+#endif
+ if (g_fst_sns_buf.gyro_z_rcv_size == rcv_sensor_msg_fst->us_size) {
+ g_sens_data_get_gyro_z_fst_flg = TRUE;
+#if DEAD_RECKONING_MAIN_DEBUG
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " GYRO_Z receive flag = TRUE ");
+#endif
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ } else {
+ /* nop */
+ }
+
+ /* 4 data received? */
+ if ((g_sens_data_get_sns_cnt_flg == TRUE) &&
+ (g_sens_data_get_rev_flg == TRUE) &&
+ (g_sens_data_get_gyro_x_flg == TRUE) &&
+ (g_sens_data_get_gyro_y_flg == TRUE) &&
+ (g_sens_data_get_gyro_z_flg == TRUE) &&
+ (g_sens_data_get_spdpulse_flg == TRUE) &&
+ (g_sens_data_get_spdpulse_chk_flg == TRUE)) {
+ /* Sensor data acquisition flag ON */
+ g_sens_data_get_flg = TRUE;
+
+ /* Set all flags to FALSE */
+ g_sens_data_get_sns_cnt_flg = FALSE;
+ g_sens_data_get_gyro_x_flg = FALSE;
+ g_sens_data_get_gyro_y_flg = FALSE;
+ g_sens_data_get_gyro_z_flg = FALSE;
+ g_sens_data_get_rev_flg = FALSE;
+ g_sens_data_get_spdpulse_flg = FALSE;
+ g_sens_data_get_spdpulse_chk_flg = FALSE;
+ }
+
+ /* 4 data received? */
+ if ((g_sens_data_get_rev_fst_flg == TRUE) &&
+ (g_sens_data_get_gyro_x_fst_flg == TRUE) &&
+ (g_sens_data_get_gyro_y_fst_flg == TRUE) &&
+ (g_sens_data_get_gyro_z_fst_flg == TRUE) &&
+ (g_sens_data_get_spdpulse_fst_flg == TRUE) &&
+ (g_sens_data_get_spdpulse_chk_fst_flg == TRUE)) {
+ /* Initial sensor data acquisition flag ON */
+ g_fst_sens_data_get_flg = TRUE;
+
+ /* Set all flags to FALSE */
+ g_sens_data_get_gyro_x_fst_flg = FALSE;
+ g_sens_data_get_gyro_y_fst_flg = FALSE;
+ g_sens_data_get_gyro_z_fst_flg = FALSE;
+ g_sens_data_get_rev_fst_flg = FALSE;
+ g_sens_data_get_spdpulse_fst_flg = FALSE;
+ g_sens_data_get_spdpulse_chk_fst_flg = FALSE;
+ }
+
+ DeadReckoningRcvMsgFstSens(msg, location_info, rcv_gps_msg, &send_gps_msg, &send_sensor_msg);
+ }
}
-//void DeadReckoningRcvMsgFstSens(const DEAD_RECKONING_RCVDATA *msg, DEAD_RECKONING_LONLAT_INFO *location_info,
-// const SENSOR_MSG_GPSDATA_DAT *rcv_gps_msg, Struct_GpsData* send_gps_msg,
-// Struct_SensData* send_sensor_msg) {
-// AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-// /* Verifying Debug Log Simulator Mode
-// Perform packet reading here to match some timing.
-// However,,Differ between GPS and SENSOR.
-// */
-// u_int8 fst_sens_send_num = 0U;
-// /* For GPS data */
-// if (g_gps_data_get_flg == TRUE) {
-//#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
-// "DeadReckoningRcvMsg SEND GPS_DATA: DID[0x%08X] DSIZE[%d] MSG_SIZE[%d] SNS_CNT[%d] \r\n",
-// rcv_gps_msg.ulDid, rcv_gps_msg.ucData[4], msg->hdr.hdr.msgbodysize, rcv_gps_msg.ucSnsCnt);
-//#endif
-//
-// if (1) {
-// rcv_gps_msg = (const SENSOR_MSG_GPSDATA_DAT *)(&(msg->data[0]));
-// /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
-//
-// /* Set and pass the data part except header/footer */
-// send_gps_msg->sens_cnt = rcv_gps_msg->uc_sns_cnt;
-// send_gps_msg->sens_cnt_flag = rcv_gps_msg->uc_gps_cnt_flag;
-// send_gps_msg->gps_data_size = rcv_gps_msg->us_size;
-// send_gps_msg->did = rcv_gps_msg->ul_did;
-// send_gps_msg->gps_data = (const void *)(&rcv_gps_msg->uc_data[0]);
-// }
-//
-// /* Providing GPS data to DR_Lib */
-//
-// g_gps_data_get_flg = FALSE;
-//
-// } else if (g_sens_data_get_flg == TRUE) {
-// Struct_DR_DATA rcv_dr_data;
-// DR_CALC_INFO rcv_dr_calc_info;
-// DEADRECKONING_DATA_MASTER send_data_master;
-//
-// if (1) {
-// /* Each data is stored in the data format for transmission. */
-// send_sensor_msg->sens_cnt_flag = 1U;
-// send_sensor_msg->sens_cnt = g_sns_buf[0].data[0];
-// send_sensor_msg->pulse_rev_tbl.reverse_flag = g_sns_buf[1].data[0];
-// send_sensor_msg->pulse_rev_tbl.pulse_flag = g_sns_buf[2].data[0];
-// send_sensor_msg->pulse_rev_tbl.pulse_sum_cyclic = static_cast<u_int16>(
-// ((((u_int16)g_sns_buf[3].data[0] << 0) & DR_MASK_WORD_L) |
-// (((u_int16)g_sns_buf[3].data[1] << 8) & DR_MASK_WORD_U)));
-// /* ToDo */
-// (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_tbl.gyro_data[0])),
-// (const void *)(&(g_sns_buf[4].data[0])), sizeof(u_int16) * NUM_OF_100msData);
-// }
-//
-//#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg SEND SENSOR_COUNTER %d \r\n",
-// send_sensor_msg->sens_cnt);
-//#endif
-//
-// /* When the sensor data are ready, Call the DR-calculation process. */
-// memset(&rcv_dr_data, 0x00, sizeof(rcv_dr_data)); /* Coverity CID:18805 compliant */
-// memset(&rcv_dr_calc_info, 0x00, sizeof(rcv_dr_calc_info)); /* Coverity CID:18806 compliant */
-//
-// location_info->calc_called = static_cast<u_int8>(TRUE);
-// location_info->lonlat.latitude = static_cast<int32>(rcv_dr_data.latitude);
-// location_info->lonlat.longitude = static_cast<int32>(rcv_dr_data.longitude);
-//
-// if (rcv_dr_data.dr_status != static_cast<u_int8>(SENSORLOCATION_DRSTATUS_INVALID)) {
-// location_info->available = static_cast<u_int8>(TRUE);
-// } else {
-// location_info->available = static_cast<u_int8>(FALSE);
-// }
-//
-// /* Changing the order of registration and delivery of the out structure to the data master for DR */
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_SNS_COUNTER;
-// send_data_master.us_size = VEHICLE_DSIZE_DR_SNS_COUNTER;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.positioning_time)), (size_t)VEHICLE_DSIZE_DR_SNS_COUNTER);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_LONGITUDE;
-// send_data_master.us_size = VEHICLE_DSIZE_LONGITUDE;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.longitude)), (size_t)VEHICLE_DSIZE_LONGITUDE);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_LATITUDE;
-// send_data_master.us_size = VEHICLE_DSIZE_LATITUDE;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.latitude)), (size_t)VEHICLE_DSIZE_LATITUDE);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_ALTITUDE;
-// send_data_master.us_size = VEHICLE_DSIZE_ALTITUDE;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.altitude)), (size_t)VEHICLE_DSIZE_ALTITUDE);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_SPEED;
-// send_data_master.us_size = VEHICLE_DSIZE_SPEED;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.rate)), (size_t)VEHICLE_DSIZE_SPEED);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_HEADING;
-// send_data_master.us_size = VEHICLE_DSIZE_HEADING;
-// send_data_master.uc_rcv_flag = 1;
-// send_data_master.dr_status = rcv_dr_data.dr_status;
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// (const void *)(&(rcv_dr_data.heading)), (size_t)VEHICLE_DSIZE_HEADING);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// /* Data master setting,Data delivery(GyroParameter) */
-// /* As it is registered for delivery with DID = VEHICLE_DID_DR_GYRO_SCALE_FACTOR_LEVEL */
-// /* Process in GyroOffset-> GyroScaleFactor-> GyroScelFactorLevel order(Processing order cannot be changed.) */
-// send_data_master.ul_did = VEHICLE_DID_DR_GYRO_OFFSET;
-// send_data_master.us_size = VEHICLE_DSIZE_GYRO_OFFSET;
-// send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
-// send_data_master.dr_status = 0U; /* Not used */
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_offset)), (size_t)send_data_master.us_size);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_GYRO_SCALE_FACTOR;
-// send_data_master.us_size = VEHICLE_DSIZE_GYRO_SCALE_FACTOR;
-// send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
-// send_data_master.dr_status = 0U; /* Not used */
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_scale_factor)),
-// (size_t)send_data_master.us_size);
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_GYRO_SCALE_FACTOR_LEVEL;
-// send_data_master.us_size = VEHICLE_DSIZE_GYRO_SCALE_FACTOR_LEVEL;
-// send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
-// send_data_master.dr_status = 0U; /* Not used */
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_scale_factor_level)),
-// (size_t)(send_data_master.us_size));
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// /* Data master setting,Data delivery(SpeedPulseParameter) */
-// /* As it is registered for delivery with DID = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR_LEVEL */
-// /* Process in SpeedPulseScaleFactor-> SpeedPulseScaleFactorLevel order(Processing order cannot be changed.) */
-// send_data_master.ul_did = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR;
-// send_data_master.us_size = VEHICLE_DSIZE_SPEED_PULSE_SCALE_FACTOR;
-// send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
-// send_data_master.dr_status = 0U; /* Not used */
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// reinterpret_cast<void *>(&(rcv_dr_calc_info.speed_pulse_scale_factor)),
-// (size_t)(send_data_master.us_size));
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// send_data_master.ul_did = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR_LEVEL;
-// send_data_master.us_size = VEHICLE_DSIZE_SPEED_PULSE_SCALE_FACTOR_LEVEL;
-// send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
-// send_data_master.dr_status = 0U; /* Not used */
-// (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
-// reinterpret_cast<void *>(&(rcv_dr_calc_info.speed_pulse_scale_factor_level)),
-// (size_t)(send_data_master.us_size));
-// DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
-//
-// g_sens_data_get_flg = FALSE;
-// } else if (g_fst_sens_data_get_flg == TRUE) {
-//#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg FstSnsData -> DeadReckoningLibrary. \r\n");
-//#endif
-// for (fst_sens_send_num = 0; fst_sens_send_num < g_fst_sns_buf.data_num; fst_sens_send_num++) {
-// /* Each data is stored in the data format for transmission. */
-// send_sensor_msg->sens_cnt_flag = 0U;
-// send_sensor_msg->sens_cnt = 0U;
-// send_sensor_msg->pulse_rev_tbl.reverse_flag = g_fst_sns_buf.rev_data[fst_sens_send_num];
-// send_sensor_msg->pulse_rev_tbl.pulse_flag = g_fst_sns_buf.spd_pulse_check_data[fst_sens_send_num];
-// send_sensor_msg->pulse_rev_tbl.pulse_sum_cyclic = g_fst_sns_buf.spd_pulse_data[fst_sens_send_num];
-// (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_tbl.gyro_data[0])),
-// (const void *)(&(g_fst_sns_buf.gyro_data[fst_sens_send_num * NUM_OF_100msData])),
-// (size_t)((sizeof(g_fst_sns_buf.gyro_data[fst_sens_send_num])) * NUM_OF_100msData));
-//
-//#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg send_sensor_msg.sens_cnt_flag %d \r\n",
-// send_sensor_msg->sens_cnt_flag);
-// FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg SEND SENSOR_COUNTER %d \r\n",
-// send_sensor_msg->sens_cnt);
-//#endif
-//
-// /* Sleep to reduce CPU load */
-// MilliSecSleep(DR_FST_SENS_CALC_SLEEP_TIME);
-//
-// /* When the sensor data are ready, Call the DR-calculation process. */
-// }
-//
-// g_sens_data_get_flg = FALSE;
-//
-// g_fst_sens_data_get_flg = FALSE;
-//
-// } else {
-// /* nop */
-// }
-//}
+void DeadReckoningRcvMsgFstSens(const DEAD_RECKONING_RCVDATA *msg, DEAD_RECKONING_LONLAT_INFO *location_info,
+ const SENSOR_MSG_GPSDATA_DAT *rcv_gps_msg, Struct_GpsData* send_gps_msg,
+ Struct_SensData* send_sensor_msg) {
+ AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
+ /* Verifying Debug Log Simulator Mode
+ Perform packet reading here to match some timing.
+ However,,Differ between GPS and SENSOR.
+ */
+ u_int8 fst_sens_send_num = 0U;
+ /* For GPS data */
+ if (g_gps_data_get_flg == TRUE) {
+#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
+ "DeadReckoningRcvMsg SEND GPS_DATA: DID[0x%08X] DSIZE[%d] MSG_SIZE[%d] SNS_CNT[%d] \r\n",
+ rcv_gps_msg.ulDid, rcv_gps_msg.ucData[4], msg->hdr.hdr.msgbodysize, rcv_gps_msg.ucSnsCnt);
+#endif
+
+ if (1) {
+ rcv_gps_msg = (const SENSOR_MSG_GPSDATA_DAT *)(&(msg->data[0]));
+ /* #QAC confirmation Rule11.4 Use structure for member reference(Cast according to shared memory link IF) */
+
+ /* Set and pass the data part except header/footer */
+ send_gps_msg->sens_cnt = rcv_gps_msg->uc_sns_cnt;
+ send_gps_msg->sens_cnt_flag = rcv_gps_msg->uc_gps_cnt_flag;
+ send_gps_msg->gps_data_size = rcv_gps_msg->us_size;
+ send_gps_msg->did = rcv_gps_msg->ul_did;
+ send_gps_msg->gps_data = (const void *)(&rcv_gps_msg->uc_data[0]);
+ }
+
+ /* Providing GPS data to DR_Lib */
+
+ g_gps_data_get_flg = FALSE;
+
+ } else if (g_sens_data_get_flg == TRUE) {
+ Struct_DR_DATA rcv_dr_data;
+ DR_CALC_INFO rcv_dr_calc_info;
+ DEADRECKONING_DATA_MASTER send_data_master;
+
+ if (1) {
+ /* Each data is stored in the data format for transmission. */
+ send_sensor_msg->sens_cnt_flag = 1U;
+ send_sensor_msg->sens_cnt = g_sns_buf[0].data[0];
+ send_sensor_msg->pulse_rev_tbl.reverse_flag = g_sns_buf[1].data[0];
+ send_sensor_msg->pulse_rev_tbl.pulse_flag = g_sns_buf[2].data[0];
+ send_sensor_msg->pulse_rev_tbl.pulse_sum_cyclic = static_cast<u_int16>(
+ ((((u_int16)g_sns_buf[3].data[0] << 0) & DR_MASK_WORD_L) |
+ (((u_int16)g_sns_buf[3].data[1] << 8) & DR_MASK_WORD_U)));
+ /* ToDo */
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_x_tbl.gyro_data[0])),
+ (const void *)(&(g_sns_buf[4].data[0])), sizeof(u_int16) * NUM_OF_100msData);
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_y_tbl.gyro_data[0])),
+ (const void *)(&(g_sns_buf[5].data[0])), sizeof(u_int16) * NUM_OF_100msData);
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_z_tbl.gyro_data[0])),
+ (const void *)(&(g_sns_buf[6].data[0])), sizeof(u_int16) * NUM_OF_100msData);
+ }
+
+#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg SEND SENSOR_COUNTER %d \r\n",
+ send_sensor_msg->sens_cnt);
+#endif
+
+ /* When the sensor data are ready, Call the DR-calculation process. */
+ memset(&rcv_dr_data, 0x00, sizeof(rcv_dr_data)); /* Coverity CID:18805 compliant */
+ memset(&rcv_dr_calc_info, 0x00, sizeof(rcv_dr_calc_info)); /* Coverity CID:18806 compliant */
+
+ location_info->calc_called = static_cast<u_int8>(TRUE);
+ location_info->lonlat.latitude = static_cast<int32>(rcv_dr_data.latitude);
+ location_info->lonlat.longitude = static_cast<int32>(rcv_dr_data.longitude);
+
+ if (rcv_dr_data.dr_status != static_cast<u_int8>(SENSORLOCATION_DRSTATUS_INVALID)) {
+ location_info->available = static_cast<u_int8>(TRUE);
+ } else {
+ location_info->available = static_cast<u_int8>(FALSE);
+ }
+
+ /* Changing the order of registration and delivery of the out structure to the data master for DR */
+
+ send_data_master.ul_did = VEHICLE_DID_DR_SNS_COUNTER;
+ send_data_master.us_size = VEHICLE_DSIZE_DR_SNS_COUNTER;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.positioning_time)), (size_t)VEHICLE_DSIZE_DR_SNS_COUNTER);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_LONGITUDE;
+ send_data_master.us_size = VEHICLE_DSIZE_LONGITUDE;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.longitude)), (size_t)VEHICLE_DSIZE_LONGITUDE);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_LATITUDE;
+ send_data_master.us_size = VEHICLE_DSIZE_LATITUDE;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.latitude)), (size_t)VEHICLE_DSIZE_LATITUDE);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_ALTITUDE;
+ send_data_master.us_size = VEHICLE_DSIZE_ALTITUDE;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.altitude)), (size_t)VEHICLE_DSIZE_ALTITUDE);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_SPEED;
+ send_data_master.us_size = VEHICLE_DSIZE_SPEED;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.rate)), (size_t)VEHICLE_DSIZE_SPEED);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_HEADING;
+ send_data_master.us_size = VEHICLE_DSIZE_HEADING;
+ send_data_master.uc_rcv_flag = 1;
+ send_data_master.dr_status = rcv_dr_data.dr_status;
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ (const void *)(&(rcv_dr_data.heading)), (size_t)VEHICLE_DSIZE_HEADING);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ /* Data master setting,Data delivery(GyroParameter) */
+ /* As it is registered for delivery with DID = VEHICLE_DID_DR_GYRO_SCALE_FACTOR_LEVEL */
+ /* Process in GyroOffset-> GyroScaleFactor-> GyroScelFactorLevel order(Processing order cannot be changed.) */
+ send_data_master.ul_did = VEHICLE_DID_DR_GYRO_OFFSET;
+ send_data_master.us_size = VEHICLE_DSIZE_GYRO_OFFSET;
+ send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
+ send_data_master.dr_status = 0U; /* Not used */
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_offset)), (size_t)send_data_master.us_size);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_GYRO_SCALE_FACTOR;
+ send_data_master.us_size = VEHICLE_DSIZE_GYRO_SCALE_FACTOR;
+ send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
+ send_data_master.dr_status = 0U; /* Not used */
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_scale_factor)),
+ (size_t)send_data_master.us_size);
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_GYRO_SCALE_FACTOR_LEVEL;
+ send_data_master.us_size = VEHICLE_DSIZE_GYRO_SCALE_FACTOR_LEVEL;
+ send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
+ send_data_master.dr_status = 0U; /* Not used */
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ reinterpret_cast<void *>(&(rcv_dr_calc_info.gyro_scale_factor_level)),
+ (size_t)(send_data_master.us_size));
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ /* Data master setting,Data delivery(SpeedPulseParameter) */
+ /* As it is registered for delivery with DID = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR_LEVEL */
+ /* Process in SpeedPulseScaleFactor-> SpeedPulseScaleFactorLevel order(Processing order cannot be changed.) */
+ send_data_master.ul_did = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR;
+ send_data_master.us_size = VEHICLE_DSIZE_SPEED_PULSE_SCALE_FACTOR;
+ send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
+ send_data_master.dr_status = 0U; /* Not used */
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ reinterpret_cast<void *>(&(rcv_dr_calc_info.speed_pulse_scale_factor)),
+ (size_t)(send_data_master.us_size));
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ send_data_master.ul_did = VEHICLE_DID_DR_SPEED_PULSE_SCALE_FACTOR_LEVEL;
+ send_data_master.us_size = VEHICLE_DSIZE_SPEED_PULSE_SCALE_FACTOR_LEVEL;
+ send_data_master.uc_rcv_flag = DEADRECKONING_RCVFLAG_ON;
+ send_data_master.dr_status = 0U; /* Not used */
+ (void)memcpy(reinterpret_cast<void *>(&(send_data_master.uc_data[0])),
+ reinterpret_cast<void *>(&(rcv_dr_calc_info.speed_pulse_scale_factor_level)),
+ (size_t)(send_data_master.us_size));
+ DeadReckoningSetDataMaster(&send_data_master, (PFUNC_DR_DMASTER_SET_N)DeadReckoningDeliveryProc);
+
+ g_sens_data_get_flg = FALSE;
+ } else if (g_fst_sens_data_get_flg == TRUE) {
+#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg FstSnsData -> DeadReckoningLibrary. \r\n");
+#endif
+ for (fst_sens_send_num = 0; fst_sens_send_num < g_fst_sns_buf.data_num; fst_sens_send_num++) {
+ /* Each data is stored in the data format for transmission. */
+ send_sensor_msg->sens_cnt_flag = 0U;
+ send_sensor_msg->sens_cnt = 0U;
+ send_sensor_msg->pulse_rev_tbl.reverse_flag = g_fst_sns_buf.rev_data[fst_sens_send_num];
+ send_sensor_msg->pulse_rev_tbl.pulse_flag = g_fst_sns_buf.spd_pulse_check_data[fst_sens_send_num];
+ send_sensor_msg->pulse_rev_tbl.pulse_sum_cyclic = g_fst_sns_buf.spd_pulse_data[fst_sens_send_num];
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_x_tbl.gyro_data[0])),
+ (const void *)(&(g_fst_sns_buf.gyro_x_data[fst_sens_send_num * NUM_OF_100msData])),
+ (size_t)((sizeof(g_fst_sns_buf.gyro_x_data[fst_sens_send_num])) * NUM_OF_100msData));
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_y_tbl.gyro_data[0])),
+ (const void *)(&(g_fst_sns_buf.gyro_y_data[fst_sens_send_num * NUM_OF_100msData])),
+ (size_t)((sizeof(g_fst_sns_buf.gyro_y_data[fst_sens_send_num])) * NUM_OF_100msData));
+ (void)memcpy(reinterpret_cast<void *>(&(send_sensor_msg->gyro_z_tbl.gyro_data[0])),
+ (const void *)(&(g_fst_sns_buf.gyro_z_data[fst_sens_send_num * NUM_OF_100msData])),
+ (size_t)((sizeof(g_fst_sns_buf.gyro_z_data[fst_sens_send_num])) * NUM_OF_100msData));
+
+#if (DR_DEBUG == 1) /* PastModel002_DR_VEHICLE */
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg send_sensor_msg.sens_cnt_flag %d \r\n",
+ send_sensor_msg->sens_cnt_flag);
+ FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "DeadReckoningRcvMsg SEND SENSOR_COUNTER %d \r\n",
+ send_sensor_msg->sens_cnt);
+#endif
+
+ /* Sleep to reduce CPU load */
+ MilliSecSleep(DR_FST_SENS_CALC_SLEEP_TIME);
+
+ /* When the sensor data are ready, Call the DR-calculation process. */
+ }
+
+ g_sens_data_get_flg = FALSE;
+
+ g_fst_sens_data_get_flg = FALSE;
+
+ } else {
+ /* nop */
+ }
+}
/*******************************************************************************
* MODULE : DeadReckoningGetDRData