summaryrefslogtreecommitdiffstats
path: root/communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp')
-rw-r--r--communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp713
1 files changed, 0 insertions, 713 deletions
diff --git a/communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp b/communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp
deleted file mode 100644
index 2858c196..00000000
--- a/communication/server/src/CAN/Transmission/CAN_TransmissionData.cpp
+++ /dev/null
@@ -1,713 +0,0 @@
-/*
- * @copyright Copyright (c) 2016-2019 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*******************************************************************************
- * FILE :CAN_TransmissionData.cpp
- * SYSTEM :_CWORD107_
- * SUBSYSTEM :EXL process
- * PROGRAM :CAN Thread CAN Data Transmission Management Processing
- * Module configuration :CANTransmissionDataInit( ) CANDataTransmission management data initialization processing
- * CANFreqTransEntryCheck( ) CANDataPeriodic transmission management table registration destination confirmation processing
- * CANFreqTransEntry() CANDataRegular transmission management table registration processing
- * CANFreqTransDataGet( ) Periodic transmission data acquisition processing
- * CANFreqTransCanidEntryCheck( ) CANDataPeriodic transmission control table registration status checking process (CAN ID retrieval)
- * CANFreqTransIdEntryCheck( ) Periodic transmission management table send destination ID confirmation processing
- * CANFreqTransStop( ) CANDataPeriodic transmission stop processing
- * CANFreqTransIndexEntryCheck( ) CANDataPeriodic transmission control table registration status checking process (INDEX retrieval)
- * CAN1TimeTransEntryCheck( ) CANDataConfirmation processing of the registration destination of the transmission result management table
- * CAN1TimeTransEntry( ) CANDataOne-time transmission result management table registration processing
- * CANTxRsltEntryCheck( ) CANDataTransmission result management table registration status confirmation processing
- * CANTxRsltDataGet( ) Transmission result data acquisition processing
- * CANTxRsltFin( ) CANDataTransmission result notification completion processing
- ******************************************************************************/
-#include "CAN_TransmissionData.h"
-#include <string.h> // NOLINT(build/include)
-#include <other_service/strlcpy.h>
-#include <map>
-#include "CAN_Thread.h"
-#include "CAN_TxMsg.h"
-#include "communication_communicationlog.h"
-
-using std::map;
-
-/*************************************************/
-/* Global variable */
-/*************************************************/
-static CAN_FREQ_TRANSMISSION_DAT g_gst_freq_trans_dat[CAN_FREQ_TRSNSMISSION_LIST_NUM]; /* Periodic transmission management table */
- /* One-time transmission result management table */
-static CAN_1TIME_TXRSLT_DAT g_gst1_time_trans_rslt_dat[CAN_1TIME_TRSNSMISSION_RSLT_NUM]; //NOLINT (readability/naming)
- /* _CWORD29_ send result control table */
-static CAN__CWORD29__TXRSLT_DAT g_gst__CWORD29__trans_rslt_dat[CAN__CWORD29__TRSNSMISSION_RSLT_NUM]; //NOLINT (readability/naming)
-map<CANID, CAN_TRANS_START_TABLE_VAL *> g_map_trans_data; /* CAN Data management table */
-std::multimap<CANID, CAN_TRANS_START_TABLE_VAL *> mapSubIDTransData; /* CAN SubID Data management table */
-static CAN_INIT_TABLE Can_TransInitData_19PF[] = {
- /*
- * Note.
- * This feature needs to be defined by the vendor.
- */
- { (CANID)0x0000, (uint8_t)1, { 0x00 } }
-};
-
-/*******************************************************************************
- * MODULE : :CANTransmissionDataInit
- * ABSTRACT : CANDataTransmission management data initialization processing
- * FUNCTION : CANDataInitializing Transmission Management Data
- * ARGUMENT : void
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANTransmissionDataInit(void) {
- int32_t i; /* Generic counters */
- int32_t cntMaxData;
-
- (void)memset(reinterpret_cast<void *>(&g_gst_freq_trans_dat), (int32_t)0, (size_t)sizeof(g_gst_freq_trans_dat));
- /* Periodic transmission management table */
- (void)memset(reinterpret_cast<void *>(&g_gst1_time_trans_rslt_dat),
- (int32_t)0, (size_t)sizeof(g_gst1_time_trans_rslt_dat));
- /* One-time transmission result management table */
- /* Fill the resource ID of the transmission result management table with an unused code */
- for (i = 0; i < (int32_t)CAN_1TIME_TRSNSMISSION_RSLT_NUM; i++) {
- g_gst1_time_trans_rslt_dat[i].uc_rid = (uint8_t)CAN_RID_NOTUSE_CODE;
- }
-
- (void)memset(reinterpret_cast<void *>(&g_gst__CWORD29__trans_rslt_dat),
- (int32_t)0, (size_t)sizeof(g_gst__CWORD29__trans_rslt_dat));
- /* _CWORD29_ send result control table */
- /* Fill the resource ID of the Phase send result management table with an unused resource ID */
- for (i = 0; i < (int32_t)CAN__CWORD29__TRSNSMISSION_RSLT_NUM; i++) {
- g_gst__CWORD29__trans_rslt_dat[i].uc_rid = (uint8_t)CAN_RID_NOTUSE_CODE;
- }
-
- /* Initialize Transmission data management table */
- cntMaxData = (int32_t)(sizeof(Can_TransInitData_19PF) / sizeof(Can_TransInitData_19PF[0]));
- for (i = 0; i < cntMaxData; i++) {
- g_map_trans_data[ Can_TransInitData_19PF[i].canid ] = &Can_TransInitData_19PF[i].val;
- }
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransEntryCheck
- * ABSTRACT : CANDataPeriodic transmission management table registration destination confirmation processing
- * FUNCTION : CANDataReturns whether or not the periodic transmission management table can be registered and the index.
- * ARGUMENT : can_id : CAN ID
- * *puc_index : Index (pointer output)
- * NOTE : Can be overwritten with the same CAN ID
- * RETURN : TRUE : Can be registered
- * FALSE : Cannot be stored
- ******************************************************************************/
-BOOL CANFreqTransEntryCheck(CANID can_id, uint8_t *puc_index) {
- BOOL ret = FALSE; /* Return value of this function */
- int32_t i; /* Generic counters */
-
- /* Can be overwritten by the same CAN ID detection */
- for (i = 0; i < (int32_t)CAN_FREQ_TRSNSMISSION_LIST_NUM; i++) {
- if (g_gst_freq_trans_dat[i].st_can_data.can_id == can_id) {
- ret = TRUE; /* Can be registered */
- *puc_index = (uint8_t)i; /* Index acquisition */
- break;
- }
- }
-
- if (FALSE == ret) {
- /* If the same CAN ID is not found, free space is checked. */
- for (i = 0; i < (int32_t)CAN_FREQ_TRSNSMISSION_LIST_NUM; i++) {
- if ((uint16_t)0 == g_gst_freq_trans_dat[i].us_freq) {
- ret = TRUE; /* Can be registered */
- *puc_index = (uint8_t)i; /* Index acquisition */
- break;
- }
- }
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransEntry
- * ABSTRACT : CANDataRegular transmission management table registration processing
- * FUNCTION : CANDataRegister in the periodic transmission management table
- * ARGUMENT : uc_index : Indexed
- * *pst_msg_data : Receive message data section reference pointer
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANFreqTransEntry(uint8_t uc_index, const CAN_TRANSMISSION_START_MSG_DAT *pst_msg_data) {
- strlcpy(g_gst_freq_trans_dat[uc_index].notify_name, pst_msg_data->notifyName,
- sizeof(g_gst_freq_trans_dat[uc_index].notify_name));
- g_gst_freq_trans_dat[uc_index].us_freq = pst_msg_data->usFreq; /* Periodic transmission period (in 100ms) */
- g_gst_freq_trans_dat[uc_index].uc_rid = pst_msg_data->ucRid; /* Resources ID */
- if ((uint8_t)CAN_RID_NOTUSE_CODE == pst_msg_data->ucRid) {
- g_gst_freq_trans_dat[uc_index].uc_resp_num = 0; /* Notification of transmission results is not required. */
- } else {
- g_gst_freq_trans_dat[uc_index].uc_resp_num = (uint8_t)CAN_FREQ_TXRSLT_NUM; /* Number of transmission result notifications (number of remaining notifications) */
- }
- g_gst_freq_trans_dat[uc_index].st_can_data = pst_msg_data->stCandata; /* Transmitted data */
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransDataGet
- * ABSTRACT : Periodic transmission data acquisition processing
- * FUNCTION : CANDataRetrieves data for the specified index from the periodic transmission management table
- * ARGUMENT : uc_index : Indexed
- * *pst_data : Periodic transmission data
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANFreqTransDataGet(uint8_t uc_index, CAN_FREQ_TRANSMISSION_DAT *pst_data) {
- *pst_data = g_gst_freq_trans_dat[uc_index]; /* Copy to Output Pointer */
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransCanidEntryCheck
- * ABSTRACT : CANDataPeriodic transmission control table registration status checking process (CAN ID retrieval)
- * FUNCTION : CANDataCheck the registration status of the periodic transmission management table
- * ARGUMENT : uc_index : Indexed
- * : can_id : CAN ID
- * NOTE :
- * RETURN : TRUE : Registered
- * FALSE : No registration
- ******************************************************************************/
-BOOL CANFreqTransCanidEntryCheck(uint8_t uc_index, CANID can_id) {
- BOOL ret = FALSE; /* Return value of this function */
-
- if ((uint16_t)0 != g_gst_freq_trans_dat[uc_index].us_freq) {
- if (can_id == g_gst_freq_trans_dat[uc_index].st_can_data.can_id) {
- ret = TRUE; /* Registered */
- }
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransIdEntryCheck
- * ABSTRACT : Periodic transmission management table send destination ID confirmation processing
- * FUNCTION : CANDataCheck the destination ID in the periodic transmission management table
- * ARGUMENT : uc_index : Indexed
- * : notifyId : Transfer to: ID
- * NOTE :
- * RETURN : TRUE : Match
- * FALSE : Mismatched
- ******************************************************************************/
-BOOL CANFreqTransIdEntryCheck(uint8_t uc_index, PCSTR notify_name) {
- BOOL ret = FALSE; /* Return value of this function */
-
- if (strcmp(notify_name, g_gst_freq_trans_dat[uc_index].notify_name) == 0) {
- ret = TRUE; /* Match */
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransStop
- * ABSTRACT : CANDataPeriodic transmission stop processing
- * FUNCTION : CANDataClears the data of the specified index in the periodic transmission management table.
- * ARGUMENT : uc_index : Indexed
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANFreqTransStop(uint8_t uc_index) {
- CAN_FREQ_TRANSMISSION_DAT *pst; /* Structure pointer */
-
- pst = &g_gst_freq_trans_dat[uc_index];
- memset(reinterpret_cast<void *>(pst), 0x00, (size_t)sizeof(CAN_FREQ_TRANSMISSION_DAT));
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANFreqTransIndexEntryCheck
- * ABSTRACT : CANDataPeriodic transmission control table registration status checking process (INDEX retrieval)
- * FUNCTION : CANDataCheck the registration status of the specified index in the periodic transmission management table
- * ARGUMENT : uc_index : Indexed
- * NOTE :
- * RETURN : TRUE : Registered
- * FALSE : No registration
- ******************************************************************************/
-BOOL CANFreqTransIndexEntryCheck(uint8_t uc_index) {
- BOOL ret = FALSE; /* Return value of this function */
-
- if ((uint16_t)0 != g_gst_freq_trans_dat[uc_index].us_freq) { // LCOV_EXCL_BR_LINE 6:Double check code. in CANFreqTransEntryCheck //NOLINT (readability/naming)
- ret = TRUE; /* Registered */
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CAN1TimeTransEntryCheck
- * ABSTRACT : CANDataConfirmation processing of the registration destination of the transmission result management table
- * FUNCTION : CANDataWhether or not registration of the transmission results management table can be performed once, and the index is returned.
- * ARGUMENT : *puc_index : Index (pointer output)
- * NOTE :
- * RETURN : TRUE : Can be registered
- * FALSE : Cannot be stored
- ******************************************************************************/
-BOOL CAN1TimeTransEntryCheck(uint8_t *puc_index) {
- BOOL ret = FALSE; /* Return value of this function */
- int32_t i; /* Generic counters */
-
- for (i = 0; i < (int32_t)CAN_1TIME_TRSNSMISSION_RSLT_NUM; i++) {
- if ((uint8_t)CAN_RID_NOTUSE_CODE == g_gst1_time_trans_rslt_dat[i].uc_rid) {
- /* If the resource ID is an unused code, it is not registered. */
- ret = TRUE; /* Can be registered */
- *puc_index = (uint8_t)i;
- break;
- }
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CAN_CWORD29_TransEntryCheck
- * ABSTRACT : CAN_CWORD29_ transmission-result-management-table-registration-destination-confirmation-processing
- * FUNCTION : Returns whether or not the CAN_CWORD29_ send results control table can be registered and indexes.
- * ARGUMENT : *puc_index : Index (pointer output)
- * NOTE :
- * RETURN : TRUE : Can be registered
- * FALSE : Cannot be stored
- ******************************************************************************/
-BOOL CAN_CWORD29_TransEntryCheck(uint8_t *puc_index) {
- BOOL ret = FALSE; /* Return value of this function */
- int32_t i; /* Generic counters */
-
- for (i = 0; i < (int32_t)CAN__CWORD29__TRSNSMISSION_RSLT_NUM; i++) {
- if ((uint8_t)CAN_RID_NOTUSE_CODE == g_gst__CWORD29__trans_rslt_dat[i].uc_rid) {
- /* If the resource ID is an unused code, it is not registered. */
- ret = TRUE; /* Can be registered */
- *puc_index = (uint8_t)i;
- break;
- }
- }
-
- return (ret);
-}
-
-/*******************************************************************************
- * MODULE : CAN1TimeTransEntry
- * ABSTRACT : CANDataOne-time transmission result management table registration processing
- * FUNCTION : CANDataRegister in the transmission results management table once
- * ARGUMENT : uc_index : Index to register
- * *pst_msg_data : Receive message data section reference pointer
- * NOTE :
- * RETURN : EFrameworkunifiedStatus
- * eFrameworkunifiedStatusOK : Success
- * eFrameworkunifiedStatusInvldParam : uc_index is invalid
- ******************************************************************************/
-EFrameworkunifiedStatus CAN1TimeTransEntry(uint8_t uc_index, const CAN_TRANSMISSION_START_MSG_DAT *pst_msg_data) {
- EFrameworkunifiedStatus e_status = eFrameworkunifiedStatusOK;
- /* Register one transmission result management table */
- if (CAN_1TIME_TRSNSMISSION_RSLT_NUM > uc_index) { // LCOV_EXCL_BR_LINE 6:Double check code. in CAN1TimeTransEntryCheck //NOLINT (readability/naming)
- strlcpy(g_gst1_time_trans_rslt_dat[uc_index].notify_name, pst_msg_data->notifyName,
- sizeof(g_gst1_time_trans_rslt_dat[uc_index].notify_name));
- g_gst1_time_trans_rslt_dat[uc_index].ul_canid = pst_msg_data->stCandata.can_id;
- g_gst1_time_trans_rslt_dat[uc_index].uc_rid = pst_msg_data->ucRid;
- } else {
- e_status = eFrameworkunifiedStatusInvldParam;
- }
- return e_status;
-}
-
-/*******************************************************************************
- * MODULE : CAN_CWORD29_TransEntry
- * ABSTRACT : CAN_CWORD29_ transmission-result-management-table-registration-process
- * FUNCTION : Register in the CAN_CWORD29_ transmission result management table
- * ARGUMENT : uc_index : Index to register
- * *pst_msg_data : Receive message data section reference pointer
- * NOTE :
- * RETURN : EFrameworkunifiedStatus
- * eFrameworkunifiedStatusOK : Success
- * eFrameworkunifiedStatusInvldParam : uc_index is invalid
- ******************************************************************************/
-EFrameworkunifiedStatus CAN_CWORD29_TransEntry(uint8_t uc_index, const CAN__CWORD29__TRANS_MSG *pst_msg_data) {
- EFrameworkunifiedStatus e_status = eFrameworkunifiedStatusOK;
- /* Register _CWORD29_ send result control table */
- if (CAN__CWORD29__TRSNSMISSION_RSLT_NUM > uc_index) {
- strlcpy(g_gst__CWORD29__trans_rslt_dat[uc_index].notify_name, pst_msg_data->notifyName,
- sizeof(g_gst__CWORD29__trans_rslt_dat[uc_index].notify_name));
- g_gst__CWORD29__trans_rslt_dat[uc_index].opc = pst_msg_data->opc;
- g_gst__CWORD29__trans_rslt_dat[uc_index].uc_rid = pst_msg_data->ucRid;
- } else {
- e_status = eFrameworkunifiedStatusInvldParam;
- }
- return e_status;
-}
-
-/*******************************************************************************
- * MODULE : CANTxRsltEntryCheck
- * ABSTRACT : CANDataTransmission result management table registration status confirmation processing
- * FUNCTION : Periodic transmission, one transmission, result control for specified indexes
- * Check the registration status of the table
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * NOTE :
- * RETURN : TRUE : Registered
- * FALSE : No registration
- ******************************************************************************/
-BOOL CANTxRsltEntryCheck(uint8_t uc_can_rid) { // LCOV_EXCL_START 8:this IF is called in CANIcrSndStsProcess, which will not be called // NOLINT (whitespace/line_length)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BOOL ret = FALSE; /* Return value of this function */
- uint8_t uc_index; /* Indexed */
- /*** Periodic transmission ***/
- if ((uint8_t)CAN_TXRSLT_CANRID_1TIME_START > uc_can_rid) {
- uc_index = uc_can_rid;
- /* Checking for User unset code */
- if ((uint8_t)CAN_RID_NOTUSE_CODE != g_gst_freq_trans_dat[uc_index].uc_rid) {
- if ((uint8_t)0 != g_gst_freq_trans_dat[uc_index].uc_resp_num) {
- ret = TRUE; /* Registered */
- }
- }
- } else if ((uint8_t)CAN_TXRSLT_CANRID__CWORD29__START > uc_can_rid) { /*** One-time transmission ***/
- uc_index = (uint8_t)((uint32_t)uc_can_rid - CAN_TXRSLT_CANRID_1TIME_START);
- if ((uint8_t)CAN_RID_NOTUSE_CODE != g_gst1_time_trans_rslt_dat[uc_index].uc_rid) {
- /* Checking for User unset code */
- ret = TRUE; /* Registered */
- }
- }
-
- return (ret);
-}
-// LCOV_EXCL_STOP 8
-
-/*******************************************************************************
- * MODULE : CANTxRsltDataGet
- * ABSTRACT : Transmission result data acquisition processing
- * FUNCTION : Retrieves the send result data for the specified index
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * *pst_data : Transmission result data (pointer output)
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANTxRsltDataGet(uint8_t uc_can_rid, CAN_1TIME_TXRSLT_DAT *pst_data) {
- uint8_t uc_index; /* Indexed */
-
- if ((uint8_t)CAN_TXRSLT_CANRID_1TIME_START > uc_can_rid) { /*** Periodic transmission ***/
- uc_index = uc_can_rid;
- strlcpy(pst_data->notify_name, g_gst_freq_trans_dat[uc_index].notify_name, sizeof(pst_data->notify_name));
- pst_data->ul_canid = g_gst_freq_trans_dat[uc_index].st_can_data.can_id;
- pst_data->uc_rid = g_gst_freq_trans_dat[uc_index].uc_rid;
-
- } else if ((uint8_t)CAN_TXRSLT_CANRID__CWORD29__START > uc_can_rid) { /*** One-time transmission ***/
- uc_index = (uint8_t)((uint32_t)uc_can_rid - CAN_TXRSLT_CANRID_1TIME_START);
- strlcpy(pst_data->notify_name, g_gst1_time_trans_rslt_dat[uc_index].notify_name, sizeof(pst_data->notify_name));
- pst_data->ul_canid = g_gst1_time_trans_rslt_dat[uc_index].ul_canid;
- pst_data->uc_rid = g_gst1_time_trans_rslt_dat[uc_index].uc_rid;
-
- }
- return;
-}
-
-/*******************************************************************************
- * MODULE : CAN_CWORD29_TxRsltDataGet
- * ABSTRACT : Acquisition of _CWORD29_ Transmission Result Data
- * FUNCTION : Retrieves the _CWORD29_ send results for the specified indexes
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * *pst_data : Transmission result data (pointer output)
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CAN_CWORD29_TxRsltDataGet(const uint8_t uc_can_rid, CAN__CWORD29__TXRSLT_DAT* const pst_data) {
- uint32_t ul_index; /* Indexed */
-
- if (reinterpret_cast<CAN__CWORD29__TXRSLT_DAT *>(NULL) == pst_data) {
- return;
- }
-
- if (static_cast<uint32_t>(CAN_TXRSLT_CANRID__CWORD29__START) > uc_can_rid) {
- return;
- }
-
- ul_index = uc_can_rid - static_cast<uint32_t>(CAN_TXRSLT_CANRID__CWORD29__START);
- if (static_cast<uint32_t>(CAN__CWORD29__TRSNSMISSION_RSLT_NUM) <= ul_index) {
- return;
- }
-
- strlcpy(reinterpret_cast<char *>(pst_data->notify_name),
- reinterpret_cast<const char *>(g_gst__CWORD29__trans_rslt_dat[ul_index].notify_name), MAX_NAME_SIZE_APP);
- pst_data->opc = g_gst__CWORD29__trans_rslt_dat[ul_index].opc;
- pst_data->uc_rid = g_gst__CWORD29__trans_rslt_dat[ul_index].uc_rid;
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANTxRsltFin
- * ABSTRACT : CANDataTransmission result notification completion processing
- * FUNCTION : Determine and clear the registration of the specified index.
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CANTxRsltFin(uint8_t uc_can_rid) {
- uint8_t uc_index; /* Indexed */
-
- if ((uint8_t)CAN_TXRSLT_CANRID_1TIME_START > uc_can_rid) { /*** Periodic transmission ***/
- uc_index = uc_can_rid;
- if (g_gst_freq_trans_dat[uc_index].uc_resp_num > (uint8_t)0) {
- g_gst_freq_trans_dat[uc_index].uc_resp_num--; /* Decrement the number of transmission result notifications */
- if ((uint8_t)0 == g_gst_freq_trans_dat[uc_index].uc_resp_num) {
- g_gst_freq_trans_dat[uc_index].uc_rid = 0;
- }
- }
- } else if ((uint8_t)CAN_TXRSLT_CANRID__CWORD29__START > uc_can_rid) { /*** One-time transmission ***/
- uc_index = (uint8_t)((uint32_t)uc_can_rid - CAN_TXRSLT_CANRID_1TIME_START);
- memset(g_gst1_time_trans_rslt_dat[uc_index].notify_name, 0x00,
- sizeof(g_gst1_time_trans_rslt_dat[uc_index].notify_name));
- g_gst1_time_trans_rslt_dat[uc_index].ul_canid = 0;
- g_gst1_time_trans_rslt_dat[uc_index].uc_rid = (uint8_t)CAN_RID_NOTUSE_CODE;
- /* Enter the User unset code */
- }
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CAN_CWORD29_TxRsltFin
- * ABSTRACT : _CWORD29_ transmission result notification completion process
- * FUNCTION : Clearing and clearing _CWORD29_ registrations of specified indexes
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * NOTE :
- * RETURN : void
- ******************************************************************************/
-void CAN_CWORD29_TxRsltFin(const uint8_t uc_can_rid) {
- uint32_t ul_index; /* Indexed */
-
- if (static_cast<uint32_t>(CAN_TXRSLT_CANRID__CWORD29__START) > uc_can_rid) {
- return;
- }
-
- ul_index = uc_can_rid - static_cast<uint32_t>(CAN_TXRSLT_CANRID__CWORD29__START);
- if (static_cast<uint32_t>(CAN__CWORD29__TRSNSMISSION_RSLT_NUM) <= ul_index) {
- return;
- }
-
- memset(reinterpret_cast<void *>(g_gst__CWORD29__trans_rslt_dat[ul_index].notify_name), 0x00,
- MAX_NAME_SIZE_APP);
- g_gst__CWORD29__trans_rslt_dat[ul_index].opc = 0;
-
- /* Enter the User unset code */
- g_gst__CWORD29__trans_rslt_dat[ul_index].uc_rid = (uint8_t)CAN_RID_NOTUSE_CODE;
-
- return;
-}
-
-/*******************************************************************************
- * MODULE : CANTxRsltSndCheck
- * ABSTRACT : CANDataTransmission result notification determination processing
- * FUNCTION : CANDataDetermine whether to perform transmission result notification
- * ARGUMENT : uc_can_rid : CAN RID (Resource-ID managed by the CAN thread)
- * ul_sts : Received transmission result status
- * NOTE :
- * RETURN : TRUE : Transmission result notification required
- * FALSE : No need to send result notification
- ******************************************************************************/
-BOOL CANTxRsltSndCheck(uint8_t uc_can_rid, uint32_t ul_sts) { // LCOV_EXCL_START 8:this IF is called in CANIcrSndStsProcess, which will not be called // NOLINT (whitespace/line_length)
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- BOOL ret = FALSE; /* Return value of this function */
- /*** Periodic transmission ***/
- if ((uint8_t)CAN_TXRSLT_CANRID_1TIME_START > uc_can_rid) {
- /* Always send result notification */
- ret = TRUE;
- } else if ((uint8_t)CAN_TXRSLT_CANRID__CWORD29__START > uc_can_rid) {/*** One-time transmission ***/
- /* Always send result notification */
- ret = TRUE;
- }
-
- return (ret);
-}
-// LCOV_EXCL_STOP 8
-
-/*******************************************************************************
- * MODULE : CANCycleTransBufferOut
- * ABSTRACT : CAN periodic transmission table log output processing
- * FUNCTION : Output the CAN periodic transmission table log
- * ARGUMENT : FILE *fp_log : File pointer of the log output file
- * NOTE :
- * RETURN :
- ******************************************************************************/
-void CANCycleTransBufferOut(FILE *fp_log) { // LCOV_EXCL_START 8: for dead code
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- int32_t usage_rate;
- uint16_t i;
- uint16_t data_cnt = 0;
-
- if (NULL != fp_log) {
- /* CAN periodic transmission table output */
- (void)fprintf(fp_log, "CAN CycleTrans Buffer \n");
- (void)fprintf(fp_log, "CanID: Freq: SndId: Rid: DLC:\n");
- for (i = 0; i < (uint16_t)CAN_FREQ_TRSNSMISSION_LIST_NUM; i++) {
- /* Data Registration Max */
- if ((uint16_t)0 != g_gst_freq_trans_dat[i].us_freq) {
- (void)fprintf(fp_log, "%08x %04x %s %04x %04x\n",
- g_gst_freq_trans_dat[i].st_can_data.can_id,
- g_gst_freq_trans_dat[i].us_freq,
- g_gst_freq_trans_dat[i].notify_name,
- g_gst_freq_trans_dat[i].uc_rid,
- g_gst_freq_trans_dat[i].st_can_data.dlc);
- data_cnt++;
- }
- }
- usage_rate = (((int32_t)data_cnt * 100) / CAN_FREQ_TRSNSMISSION_LIST_NUM);
- (void)fprintf(fp_log, "BUFFER_Use: %04d BUFFER_Max: %04d Usage_Rate: %04d \n",
- data_cnt, CAN_FREQ_TRSNSMISSION_LIST_NUM, usage_rate);
- if (usage_rate >= CAN_USAGE_RATE_THRESHOLD) {
- (void)fprintf(fp_log, "Warning: Buffer utilization exceeds a threshold.\n");
- }
- }
-}
-// LCOV_EXCL_STOP
-
-/*!-----------------------------------------------------------------------------
- * @~english
- * @brief Merge and Update CAN Data
- *
- * @~english
- * @return Return value
- * @retval <TURE> OK
- * @retval <FALSE> Failure
- *
- * @~english
- * @param[in] <rcv_msg> Start transmission message structure
- */
-BOOL CANTransDataEntry(CAN_TRANS_START_MSG_DAT *rcv_msg) {
- CAN_TRANS_START_TABLE_VAL *tmp_trans_data;
- uint8_t mrg_data[CAN_TXDATA_SIZE] = {};
- CAN_DATA_BIT *mem_data;
- int i;
- BOOL ret = TRUE;
-
- ret = CANEntryTransCanidCheck(rcv_msg->id);
- if (FALSE == ret) {
- goto exit;
- }
-
- /* Get transmission data of corresponding CAN ID */
- tmp_trans_data = g_map_trans_data[rcv_msg->id];
- mem_data = &tmp_trans_data->dat;
-
- /* Merge transmission data */
- for (i = 0; i < tmp_trans_data->dlc; i++) {
- uint8_t mask = rcv_msg->mask.dat[i];
- uint8_t bit = rcv_msg->dat.dat[i];
-
- mrg_data[i] = mask & bit;
- mem_data->dat[i] = (uint8_t)((uint8_t)(mem_data->dat[i]) & (uint8_t)(~mask));
- mem_data->dat[i] |= mrg_data[i];
- }
-
- /* Update Transmission data management table */
- tmp_trans_data->dat = *mem_data;
-
-exit:
- return ret;
-}
-
-/*!-----------------------------------------------------------------------------
- * @~english
-* @brief Transmission CAN Data(SubID) with Marge and Update Data
- *
- * @~english
- * @return Return value
- * @retval <TURE> OK
- * @retval <FALSE> Failure
- *
- * @~english
- * @param[in] <rcvMsg> Start transmission message structure
- *----------------------------------------------------------------------------*/
-BOOL CAN_SubIDTransStartTxMsg(HANDLE h_app, CAN_TRANS_START_MSG_DAT *rcvMsg)
-{
- CAN_TRANS_START_TABLE_VAL *transData;
- CAN_DATA_BIT *memData;
-
- std::multimap<CANID, CAN_TRANS_START_TABLE_VAL *>::iterator it;
- // Find CANID Matching
- for (it = mapSubIDTransData.find(rcvMsg->id); it != mapSubIDTransData.end(); it++)
- {
- transData = it->second;
-
- // SubID matches
- if (transData->dat.dat[0] == (rcvMsg->dat.dat[0] & rcvMsg->mask.dat[0])) {
- // CANData(The 1byte eye is fixed to the SubID, so it should not be changed.)
- memData = &transData->dat;
- for (int i = 1; i < transData->dlc; i++) {
- memData->dat[i] &= ~rcvMsg->mask.dat[i];
- memData->dat[i] |= (rcvMsg->mask.dat[i] & rcvMsg->dat.dat[i]);
- }
- // CANDataSend
- return CANTransStartTxMsgCore(h_app, rcvMsg->id, transData->dlc, &transData->dat);
- }
- }
-
- // No matching CAN ID-SubID
- return FALSE;
-}
-
-/*!-----------------------------------------------------------------------------
- * @~english
- * @brief Get Transmission data
- *
- * @~english
- * @return Return value
- * @retval <TRUE> Transmission success
- * @retval <FALSE> Transmission failed
- *
- * @~english
- * @param[in] <id> CAN ID
- */
-BOOL CANTransStartTxMsg(HANDLE h_app, CANID id) {
- map<CANID, CAN_TRANS_START_TABLE_VAL *>::iterator it;
- CAN_TRANS_START_TABLE_VAL *trans_data;
-
- /* Get transmission data of corresponding CAN ID */
- it = g_map_trans_data.find(id);
- if (it == g_map_trans_data.end()) {
- return FALSE;
- }
- trans_data = it->second;
-
- /* Transmission CAN Data */
- return CANTransStartTxMsgCore(h_app, id, trans_data->dlc, &trans_data->dat);
-}
-
-/*!-----------------------------------------------------------------------------
- * @~english
- * @brief Check invalid CAN ID
- *
- * @~english
- * @return Return value
- * @retval <TURE> OK
- * @retval <FALSE> Invalid CAN ID
- *
- * @~english
- * @param[in] <id> CAN ID
- */
-BOOL CANEntryTransCanidCheck(CANID id) {
- map<CANID, CAN_TRANS_START_TABLE_VAL *>::iterator it;
-
- /* Get transmission data of corresponding CAN ID */
- it = g_map_trans_data.find(id);
- if (it == g_map_trans_data.end()) {
- return FALSE;
- }
-
- return TRUE;
-} // LCOV_EXCL_BR_LINE 10:THE_END_LINE_OF_THE_FILE