diff options
Diffstat (limited to 'video_in_hal/vehicleservice/positioning_base_library/library/src/_pbTimer.cpp')
-rwxr-xr-x | video_in_hal/vehicleservice/positioning_base_library/library/src/_pbTimer.cpp | 1115 |
1 files changed, 0 insertions, 1115 deletions
diff --git a/video_in_hal/vehicleservice/positioning_base_library/library/src/_pbTimer.cpp b/video_in_hal/vehicleservice/positioning_base_library/library/src/_pbTimer.cpp deleted file mode 100755 index f36711f..0000000 --- a/video_in_hal/vehicleservice/positioning_base_library/library/src/_pbTimer.cpp +++ /dev/null @@ -1,1115 +0,0 @@ -/* - * @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. - * 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 - * _pbTimer.cpp - */ -/*---------------------------------------------------------------------------------* - * Include Files * - *---------------------------------------------------------------------------------*/ -#include <native_service/frameworkunified_framework_if.h> - -#include <native_service/ns_message_center_if.h> - -#include <vehicle_service/positioning_base_library.h> -#include "TimerEntryDrv_If.h" -#include "DEV_TimerEntryDrv_if.h" - -#include <native_service/ns_timer_if.h> -#include "WPF_STD_private.h" - - -/*---------------------------------------------------------------------------------* - * Define * - *---------------------------------------------------------------------------------*/ -#define MAX_CTRL_TIMER_NUM (8) - -#define CID_TIMER_1 (0x1000) -#define CID_TIMER_2 (0x1001) -#define CID_TIMER_3 (0x1002) -#define CID_TIMER_4 (0x1003) -#define CID_TIMER_5 (0x1004) -#define CID_TIMER_6 (0x1005) -#define CID_TIMER_7 (0x1006) -#define CID_TIMER_8 (0x1007) - -#define TIMER_MAKE_DEFAULT_MESSAGE(x) \ - (x)->Header.signo = 0; \ - (x)->Header.hdr.sndpno = 0; \ - (x)->Header.hdr.respno = 0; \ - (x)->Header.hdr.cid = CID_TIMER_TOUT; \ - (x)->Header.hdr.msgbodysize = \ - static_cast<uint16_t>(sizeof(TimerToutMsg) - sizeof(T_APIMSG_MSGBUF_HEADER)); \ - (x)->Header.hdr.rid = 0; \ - (x)->Header.hdr.reserve = 0; \ - (x)->TimerSeq = 0; - -/*---------------------------------------------------------------------------------* - * Structure * - *---------------------------------------------------------------------------------*/ -/*! - @brief Timer control information -*/ -typedef struct { - CID cid; /**< Command ID */ - HANDLE h_timer; /**< Timer handle */ - TimerToutMsg msg_buf; /**< Message buffer */ - uint16_t size; /**< Message size */ - PNO pno; /**< Process number */ - uint16_t seq_no; /**< Timer Sequence Number */ - uint8_t type; /**< Timer type */ - uint32_t time_out; /**< Timeout */ -} TIMER_CTRL_INFO; - -/*---------------------------------------------------------------------------------* - * Local Function Prototype * - *---------------------------------------------------------------------------------*/ -/* Timer control table manipulation functions */ -static void TimerSetCidOfCtrlTbl(u_int32 idx, CID cid); /* Set timer CID */ -static CID TimerGetCidOfCtrlTbl(u_int32 idx); /* Get timer CID */ -static void TimerSetPnoOfCtrlTbl(u_int32 idx, PNO pno); /* Set PNO */ -static PNO TimerGetPnoOfCtrlTbl(u_int32 idx); /* Get PNO */ -static void TimerSetSizeOfCtrlTbl(u_int32 idx, u_int16 size); /* Set message size */ -static TimerToutMsg* TimerGetMsgBufOfCtrlTbl(u_int32 idx); /* Get message buffer */ -static void TimerSetTimerHandleOfCtrlTbl(u_int32 idx, HANDLE handle); /* Set timer handle */ -static HANDLE TimerGetTimerHandleOfCtrlTbl(u_int32 idx); /* Get timer handle */ -static void TimerSetTypeOfCtrlTbl(u_int32 idx, u_int8 type); /* Set timer type */ -static u_int8 TimerGetTypeOfCtrlTbl(u_int32 idx); /* Get timer type */ -static void TimerSetSeqNoOfCtrlTbl(u_int32 idx, u_int16 seq_no); /* Set timer Sequence Number */ -static u_int16 TimerGetSeqNoOfCtrlTbl(u_int32 idx); /* Get timer sequence number */ -static void TimerSetTimeOutOfCtrlTbl(u_int32 idx, u_int32 time_out); /* Set timeout */ -static u_int32 TimerGetTimeOutOfCtrlTbl(u_int32 idx); /* Get timeout */ -static u_int32 TimerSearchEmptyOfCtrlTbl(void); /* Search unused area */ -static u_int32 TimerSearchTimerOfCtrlTbl(PNO snd_pno, u_int16 timer_seq, u_int8 time_type); /* Search specified timer */ -static void TimerClearSettingOfCtrlTbl(u_int32 idx); /* Clear timer information */ - -/* Mutex handling Functions for accessing Timer Control Table */ -static void TimerCreateMutex(void); /* Create Mutex */ -static void TimerDeleteMutex(void); /* Delete Mutex */ -static void TimerLockMutex(void); /* Get Mutex */ -static void TimerUnlockMutex(void); /* Release Mutex */ - -/* Callback function resources */ -static EFrameworkunifiedStatus TimerCallback1(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback2(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback3(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback4(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback5(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback6(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback7(HANDLE h_app); -static EFrameworkunifiedStatus TimerCallback8(HANDLE h_app); - -static void TimerCallbackComProc(const uint8_t id); - -/*---------------------------------------------------------------------------------* - * Grobal Values * - *---------------------------------------------------------------------------------*/ -/** - Timer control table - Note : Access to this instance shall be made through the operation module. -*/ -static TIMER_CTRL_INFO g_timer_ctrl_tbl[MAX_CTRL_TIMER_NUM]; // NOLINT(readability/nolint) global class instance - -/** Timer control table lock Mutex handle */ -static HANDLE g_h_mtx = NULL; - -/** Timer event destination handle */ -static HANDLE g_h_service; - - -/** Dispatcher Registration Callback Table */ -static const FrameworkunifiedProtocolCallbackHandler kTimerPcbhs[] = { - {CID_TIMER_1, &TimerCallback1 }, - {CID_TIMER_2, &TimerCallback2 }, - {CID_TIMER_3, &TimerCallback3 }, - {CID_TIMER_4, &TimerCallback4 }, - {CID_TIMER_5, &TimerCallback5 }, - {CID_TIMER_6, &TimerCallback6 }, - {CID_TIMER_7, &TimerCallback7 }, - {CID_TIMER_8, &TimerCallback8 }, -}; // LCOV_EXCL_BR_LINE 11:unexpected branch - -/*---------------------------------------------------------------------------------* - * Function * - *---------------------------------------------------------------------------------*/ -/** - * @brief - * Timer function initialization - * - * @return RET_NORMAL Normal completion - * @return RET_ERROR ABEND - */ -RET_API TimerInit(HANDLE h_app) { - RET_API ret_api = RET_NORMAL; - u_int32 idx; - HANDLE h_timer; - EFrameworkunifiedStatus estatus; - NSTimerInfo timer_info; - HANDLE* p_h_service = &g_h_service; - - if (h_app == NULL) { // LCOV_EXCL_BR_LINE 6: h_app cannot be Null - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argument ERROR!! [h_app=%p]", h_app); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - ret_api = RET_ERROR; // LCOV_EXCL_LINE 6: h_app cannot be Null - } else { - memset(&timer_info, 0x00, sizeof(timer_info)); - - /* Create Mutex */ - TimerCreateMutex(); // LCOV_EXCL_BR_LINE 200: no branch - - /* Register callback function for timer control */ - // LCOV_EXCL_BR_LINE 4: nsfw error - estatus = FrameworkunifiedAttachCallbacksToDispatcher(h_app, "NS_ANY_SRC", kTimerPcbhs, _countof(kTimerPcbhs)); // LCOV_EXCL_BR_LINE 4: nsfw error // NOLINT(whitespace/line_length) - if (estatus != eFrameworkunifiedStatusOK) { // LCOV_EXCL_BR_LINE 4: nsfw error - /* When registration fails */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, \ - "FrameworkunifiedAttachCallbacksToDispatcher ERROR [status:%d]", estatus); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - ret_api = RET_ERROR; // LCOV_EXCL_LINE 4: nsfw error - } - - /* Initialization of timer control table */ - for (idx = 0; idx < MAX_CTRL_TIMER_NUM; idx++) { - TimerSetCidOfCtrlTbl(idx, static_cast<CID>(kTimerPcbhs[idx].iCmd)); /* Set timer control CID */ // LCOV_EXCL_BR_LINE 200: no branch // NOLINT(whitespace/line_length) - - /* Initialize timeout */ - TimerSetTimeOutOfCtrlTbl(idx, 0); // LCOV_EXCL_BR_LINE 200: no branch - - *p_h_service = McOpenSender("Positioning"); /* Be intended for use only in Positioning */ // LCOV_EXCL_BR_LINE 4: nsfw error // NOLINT(whitespace/line_length) - - /* Create Timer Resource */ - timer_info.iCmd = TimerGetCidOfCtrlTbl(idx); /* Only CID needs to be set. */ // LCOV_EXCL_BR_LINE 200: no branch - h_timer = NS_TimerCreate(timer_info, CALLBACK_MESSAGE, (HANDLE)*p_h_service); // LCOV_EXCL_BR_LINE 4: nsfw error // NOLINT(whitespace/line_length) - if (h_timer == NULL) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - /* When an error occurs */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, \ - "NS_TimerCreate ERROR [h_timer:%p, hService:%p]", h_timer, *p_h_service); - ret_api = RET_ERROR; - // LCOV_EXCL_STOP - } else { - /* If successful */ - /* Set Handle information */ - TimerSetTimerHandleOfCtrlTbl(idx, h_timer); // LCOV_EXCL_BR_LINE 200: no branch - } - } - } - - return ret_api; -} - -/** - * @brief - * Terminate timer function - * - * @return Normal completion - */ -RET_API TimerTerm(void) { // LCOV_EXCL_START 8:dead code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - RET_API ret_api = RET_NORMAL; - u_int32 idx; - HANDLE h_timer; - EFrameworkunifiedStatus estatus; - HANDLE* p_h_service = &g_h_service; - - /* If a control Mutex has not been created, it is determined that the Timer function has not been initialized (non Positioning processes) and the process terminates with an error. */ - if (g_h_mtx == NULL) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "g_h_mtx is NULL!!"); - ret_api = RET_ERROR; - } else { - /* Delete timer control information */ - for (idx = 0; idx < MAX_CTRL_TIMER_NUM; idx++) { - h_timer = TimerGetTimerHandleOfCtrlTbl(idx); - if (h_timer != NULL) { - /* Delete timer */ - estatus = NS_TimerDelete(h_timer); - if (estatus != eFrameworkunifiedStatusOK) { - /* When an error occurs */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, \ - "NS_TimerDelete ERROR [estatus:%d, h_timer:%p]", estatus, h_timer); - } - TimerSetTimerHandleOfCtrlTbl(idx, NULL); - } - - TimerClearSettingOfCtrlTbl(idx); - } - - /* Mutex deletion */ - TimerDeleteMutex(); - } - - /* Delete transmission handle */ - estatus = McClose(*p_h_service); - if (estatus != eFrameworkunifiedStatusOK) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "McClose ERROR [estatus:%d, hService:%p]", \ - estatus, *p_h_service); - } - - return ret_api; -} -// LCOV_EXCL_STOP - -/** - * @brief - * Fixed period/asynchronous timer start instruction - * - * @param[in] snd_pno Requesting process number - * @param[in] timer_seq Timer sequence number - * @param[in] TimerType Timer type - * @param[in] time_out Timeout value [10ms] - * - * @return RET_NORMAL Normal completion<br> - * RET_ERROR Message transmission error<br> - * RET_ERRPARAM Parameter error - */ -RET_API _pb_ReqTimerStart(PNO snd_pno, u_int16 timer_seq, // NOLINT(readability/nolint) WPF_SYSAPI.h API - u_int8 time_type, u_int32 time_out) { - RET_API ret_api = RET_NORMAL; /* Return value of this module */ - u_int32 idx; - TimerToutMsg *p_msg; - EFrameworkunifiedStatus estatus; - HANDLE h_timer; - NSTimerInfo timer_info; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - /* If a control Mutex has not been created, it is determined that the Timer function has not been initialized (non Positioning processes) and the process terminates with an error. */ - if (g_h_mtx == NULL) { // LCOV_EXCL_BR_LINE 6: g_h_mtx cannot be null - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "g_h_mtx is NULL!!"); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - ret_api = RET_ERROR; // LCOV_EXCL_LINE 6: g_h_mtx cannot be null - } else { - /* Parameter study */ - if ((time_type != TIMER_TYPE_SYN) && (time_type != TIMER_TYPE_USN)) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argument ERROR [time_type:%d]", time_type); - ret_api = RET_ERRPARAM; /* Timer type error */ - } - - if (time_out == 0) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argument ERROR [time_out:%d]", time_out); - ret_api = RET_ERRPARAM; /* Timer setting value error */ - } - - /* When a timer of the same process number, sequence number, or type is already registered, creation of the timer is not allowed. */ - idx = TimerSearchTimerOfCtrlTbl(snd_pno, timer_seq, time_type); - if (idx != MAX_CTRL_TIMER_NUM) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "TimerSearchTimerOfCtrlTbl ERROR!! " \ - "[snd_pno:%d, timer_seq:%d, TimeType:%d]", snd_pno, timer_seq, time_type); - ret_api = RET_ERRPARAM; /* Invalid timer value */ - } - - /* Parameter normal */ - if (ret_api == RET_NORMAL) { - TimerLockMutex(); /* Get Mutex */ - - /* Get free space in timer control table */ - idx = TimerSearchEmptyOfCtrlTbl(); // LCOV_EXCL_BR_LINE 200: no branch - if (idx == MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 200: idx can not be MAX_CTRL_TIMER_NUM - // LCOV_EXCL_START 200: idx can not be MAX_CTRL_TIMER_NUM - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - /* When there is no free space */ - /* Be impossible by design */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "TimerSearchEmptyCtrlTbl ERROR!! " \ - "[idx = %d]", idx); - _pb_Exit(); - /* don't arrive here. */ - // LCOV_EXCL_STOP - } - - /* Get message buffer address */ - p_msg = TimerGetMsgBufOfCtrlTbl(idx); - - TIMER_MAKE_DEFAULT_MESSAGE(p_msg); /* Set message data to be send */ - p_msg->TimerSeq = timer_seq; /* Timer sequence number */ - - /* Set callback function information in timer control table */ - TimerSetPnoOfCtrlTbl(idx, snd_pno); // LCOV_EXCL_BR_LINE 200: no branch - TimerSetSizeOfCtrlTbl(idx, sizeof(TimerToutMsg)); // LCOV_EXCL_BR_LINE 200: no branch - TimerSetTypeOfCtrlTbl(idx, time_type); // LCOV_EXCL_BR_LINE 200: no branch - TimerSetSeqNoOfCtrlTbl(idx, timer_seq); // LCOV_EXCL_BR_LINE 200: no branch - TimerSetTimeOutOfCtrlTbl(idx, time_out); // LCOV_EXCL_BR_LINE 200: no branch - - /* Set timer value */ - timer_info.t_sec = (uint32_t)((10 * time_out) / 1000); - /* Coverity CID: 21979 compliant */ - timer_info.t_nsec = ((10 * (uint64_t)time_out) - ((uint64_t)(timer_info.t_sec) * 1000)) * 1000 * 1000; - timer_info.iCmd = TimerGetCidOfCtrlTbl(idx); - timer_info.rpt_sec = 0; - timer_info.rpt_nsec = 0; - if (time_type == TIMER_TYPE_SYN) { - timer_info.rpt_sec = timer_info.t_sec; - timer_info.rpt_nsec = timer_info.t_nsec; - } - - h_timer = TimerGetTimerHandleOfCtrlTbl(idx); - - /* Start timer */ - estatus = NS_TimerSetTime(h_timer, timer_info); // LCOV_EXCL_BR_LINE 4: nsfw error - if ((h_timer == NULL) || (estatus != eFrameworkunifiedStatusOK)) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - /* When an error occurs */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "NS_TimerSetTime ERROR " \ - "[estatus:%d, h_timer:%p]", estatus, h_timer); - - TimerClearSettingOfCtrlTbl(idx); /* Clear timer information */ - ret_api = RET_ERROR; - // LCOV_EXCL_STOP - } else { - /* If successful */ - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "### TIMER TABLE INFORMATION # " \ - "(++) idx:%d cid:%d h_timer:%p pno:%d seq_no:%d type:%d time_out:%d", \ - idx, g_timer_ctrl_tbl[idx].cid, g_timer_ctrl_tbl[idx].h_timer, g_timer_ctrl_tbl[idx].pno, \ - g_timer_ctrl_tbl[idx].seq_no, g_timer_ctrl_tbl[idx].type, g_timer_ctrl_tbl[idx].time_out); - } - - TimerUnlockMutex(); /* Release Mutex */ // LCOV_EXCL_BR_LINE 200: no branch - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return ret_api; -} - -/** - * @brief - * Timer stop instruction - * - * @param[in] snd_pno Requesting process number - * @param[in] timer_seq Timer sequence number - * @param[in] time_r_type Timer type<br> - * TIMER_TYPE_SYN Fixed-period timer<br> - * TIMER_TYPE_USN Asynchronous timer<br> - * TIMER_TYPE_ALM Alerm with specified time <br> - * - * @return RET_NORMAL Normal completion<br> - * RET_ERROR Message transmission error<br> - * RET_ERRPARAM Parameter error - */ -RET_API _pb_TimerStop(PNO snd_pno, u_int16 timer_seq, // NOLINT(readability/nolint) WPF_SYSAPI.h API - u_int8 time_type) { - RET_API ret_api = RET_NORMAL; /* Return value of this module */ - u_int32 idx; - EFrameworkunifiedStatus estatus; - HANDLE h_timer; - const NSTimerInfo timer_info = {0}; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - /* If a control Mutex has not been created, it is determined that the Timer function has not been initialized (non Positioning processes) and the process terminates with an error. */ - if (g_h_mtx == NULL) { // LCOV_EXCL_BR_LINE 6: g_h_mtx cannot be NULL - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "g_h_mtx is NULL!!"); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - ret_api = RET_ERROR; // LCOV_EXCL_LINE 6: g_h_mtx cannot be NULL - } else { - TimerLockMutex(); /* Get Mutex */ // LCOV_EXCL_BR_LINE 200: no branch - - idx = TimerSearchTimerOfCtrlTbl(snd_pno, timer_seq, time_type); - if (idx == MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 200: idx can not be MAX_CTRL_TIMER_NUM - /* When the specified timer is not set */ - /* nop */ - } else { - h_timer = TimerGetTimerHandleOfCtrlTbl(idx); - - /* Stop timer */ - estatus = NS_TimerSetTime(h_timer, timer_info); // LCOV_EXCL_BR_LINE 4: nsfw error - if (estatus != eFrameworkunifiedStatusOK) { // LCOV_EXCL_BR_LINE 4: nsfw error - // LCOV_EXCL_START 4: nsfw error - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - /* When deletion fails */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "NS_TimerSetTime ERROR " \ - "[estatus:%d, h_timer:%p]", estatus, h_timer); - ret_api = RET_ERROR; - // LCOV_EXCL_STOP - } else { - /* If successful */ - /* Clear timer information */ - TimerClearSettingOfCtrlTbl(idx); // LCOV_EXCL_BR_LINE 200: no branch - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "### TIMER TABLE INFORMATION # " \ - "(--) idx:%d cid:%d h_timer:%p pno:%d seq_no:%d type:%d time_out:%d", \ - idx, g_timer_ctrl_tbl[idx].cid, g_timer_ctrl_tbl[idx].h_timer, g_timer_ctrl_tbl[idx].pno, \ - g_timer_ctrl_tbl[idx].seq_no, g_timer_ctrl_tbl[idx].type, g_timer_ctrl_tbl[idx].time_out); - } - } - - TimerUnlockMutex(); /* Release Mutex */ // LCOV_EXCL_BR_LINE 200: no branch - } - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return ret_api; -} - -/*---------------------------------------------------------------------------------* - * Local Function * - *---------------------------------------------------------------------------------*/ -/** - * @brief - * Timer CID setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Control table accessor - * @param[in] cid Command ID - */ -static void TimerSetCidOfCtrlTbl(u_int32 idx, CID cid) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].cid = cid; - } - - return; -} - -/** - * @brief - * Timer CID acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * - * @return Command ID - */ -static CID TimerGetCidOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].cid; -} - -/** - * @brief - * PNO setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * @param[in] pno Process number - */ -static void TimerSetPnoOfCtrlTbl(u_int32 idx, PNO pno) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR " \ - "[idx:%d, pno:%d]", idx, pno); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].pno = pno; - } - - return; -} - -/** - * @brief - * PNO acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * - * @return Process number - */ -static PNO TimerGetPnoOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].pno; -} - -/** - * @brief - * Message size setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * @param[in] size Message size - */ -static void TimerSetSizeOfCtrlTbl(u_int32 idx, u_int16 size) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR " \ - "[idx:%d, size:%d]", idx, size); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].size = size; - } - - return; -} - -/** - * @brief - * Message buffer acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * - * @return Pointer to message storage area - */ -static TimerToutMsg* TimerGetMsgBufOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return &(g_timer_ctrl_tbl[idx].msg_buf); -} - -/** - * @brief - * Timer handle setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * @param[in] handle Timer handle - */ -static void TimerSetTimerHandleOfCtrlTbl(u_int32 idx, HANDLE handle) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR " \ - "[idx:%d, handle:%p]", idx, handle); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].h_timer = handle; - } - - return; -} - -/** - * @brief - * Timer handle acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * - * @return Timer handle - */ -static HANDLE TimerGetTimerHandleOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].h_timer; -} - -/** - * @brief - * Timer type setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * @param[in] type Timer type - */ -static void TimerSetTypeOfCtrlTbl(u_int32 idx, u_int8 type) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR " \ - "[idx:%d, type:%d]", idx, type); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].type = type; - } - - return; -} - -/** - * @brief - * Timer type acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * - * @return Timer handle - */ -static u_int8 TimerGetTypeOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].type; -} - -/** - * @brief - * Timer sequence number setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - * @param[in] seq_no Timer Sequence Number - */ -static void TimerSetSeqNoOfCtrlTbl(u_int32 idx, u_int16 seq_no) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR " \ - "[idx:%d, seq_no:%d]", idx, seq_no); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].seq_no = seq_no; - } - - return; -} - -/** - * @brief - * Timer sequence number acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table accessor - */ -static u_int16 TimerGetSeqNoOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].seq_no; -} - -/** - * @brief - * Timeout setting (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table access Index - * @param[in] time_out Timeout - */ -static void TimerSetTimeOutOfCtrlTbl(u_int32 idx, u_int32 time_out) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d, " \ - "time_out:%d]", idx, time_out); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6: idx cannot greater - /* don't arrive here. */ - } else { - g_timer_ctrl_tbl[idx].time_out = time_out; - } - - return; -} - -/** - * @brief - * Timeout acquisition (Timer control table) - * - * If an invalid value is specified for an argument, the system assumes that it is a design problem and calls _pb_Exit(). - * - * @param[in] idx Timer control table access Index - * - * @return Timeout value - */ -static u_int32 TimerGetTimeOutOfCtrlTbl(u_int32 idx) { - /* check index */ - if (idx >= MAX_CTRL_TIMER_NUM) { // LCOV_EXCL_BR_LINE 6: idx cannot greater - /* forbidden */ - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Argment ERROR [idx:%d]", idx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 6:idx cannot greater - /* don't arrive here. */ - } - - return g_timer_ctrl_tbl[idx].time_out; -} - -/** - * @brief - * Retreaval of unused area in the timer control table (Timer control table) - * - * Return the lowest-numbered index for accessing unused space in the Timer control table. - * If the mutex is not registered, the maximum timer management value (MAX_CTRL_MUTEX_NUM) - * is returned. - * - * @return Table accessor - */ -static u_int32 TimerSearchEmptyOfCtrlTbl(void) { - u_int32 idx; - u_int32 time_out; - - for (idx = 0; idx < MAX_CTRL_TIMER_NUM; idx++) { - time_out = TimerGetTimeOutOfCtrlTbl(idx); - - /* For unused space */ - if (time_out == 0) { - break; - } - } - - return idx; -} - -/** - * @brief - * Retrieval of specified timer for in the timer control table (Timer control table) - * - * Retrieve whether the specified timer is already registered in the timer control table. - * If it is registered, the access index is returned. If it is not registered, - * Return the maximum value of timer management (MAX_CTRL_TIMER_NUM). - * - * @param[in] snd_pno Process number - * @param[in] TimerSeq Timer sequence number - * @param[in] TimeType Timer type - * - * @return Index for access(If it is registered)<br> - * Maximum mutex management value (Not registered) - */ -static u_int32 TimerSearchTimerOfCtrlTbl(PNO snd_pno, u_int16 TimerSeq, u_int8 TimeType) { - u_int32 idx; - PNO pno; - u_int16 seq_no; - u_int8 type; - - for (idx = 0; idx < MAX_CTRL_TIMER_NUM; idx++) { - pno = TimerGetPnoOfCtrlTbl(idx); - seq_no = TimerGetSeqNoOfCtrlTbl(idx); - type = TimerGetTypeOfCtrlTbl(idx); - - /* If there is a match */ - if ((pno == snd_pno) && (seq_no == TimerSeq) && (type == TimeType)) { - break; - } - } - - return idx; -} - -/** - * @brief - * Clear timer setting information - * - * @param[in] idx Timer control table accessor - */ -static void TimerClearSettingOfCtrlTbl(u_int32 idx) { - void *p_msg; - - /* Delete timer information */ - TimerSetPnoOfCtrlTbl(idx, 0); - TimerSetSizeOfCtrlTbl(idx, 0); - TimerSetTypeOfCtrlTbl(idx, 0); - TimerSetSeqNoOfCtrlTbl(idx, 0); - TimerSetTimeOutOfCtrlTbl(idx, 0); - p_msg = TimerGetMsgBufOfCtrlTbl(idx); - memset(p_msg, 0x00, sizeof(TimerToutMsg)); - - return; -} - -/** - * @brief - * Create Mutex for accessing the timer control table - */ -static void TimerCreateMutex(void) { - g_h_mtx = _pb_CreateMutex(NULL, 0, "Timer_Mutex"); - if (g_h_mtx == NULL) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "_pb_CreateMutex ERROR " \ - "[g_h_mtx:%p]", g_h_mtx); - _pb_Exit(); - /* don't arrive here. */ - } - - return; -} - -/** - * @brief - * Delete Mutex for accessing timer control table - */ -static void TimerDeleteMutex(void) { // LCOV_EXCL_START 8:dead code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - DWORD ret; - - ret = PbDeleteMutex(g_h_mtx); - if (ret != WAIT_OBJECT_0) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "PbDeleteMutex ERROR " \ - "[ret:%lu, g_h_mtx:%p]", ret, g_h_mtx); - _pb_Exit(); - /* don't arrive here. */ - } - - return; -} -// LCOV_EXCL_STOP - -/** - * @brief - * Get Mutex for accessing timer control table - */ -static void TimerLockMutex(void) { - DWORD ret; - - ret = PbMutexLock(g_h_mtx, INFINITE); // LCOV_EXCL_BR_LINE 200: lock will not failed - if (ret != WAIT_OBJECT_0) { // LCOV_EXCL_BR_LINE 200: lock will not failed - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "PbMutexLock ERROR " \ - "[ret:%lu, g_h_mtx:%p]", ret, g_h_mtx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 200: lock will not failed - /* don't arrive here. */ - } - - return; -} - -/** - * @brief - * Release Mutex for accessing timer control table - */ -static void TimerUnlockMutex(void) { - BOOL ret; - - ret = PbMutexUnlock(g_h_mtx); // LCOV_EXCL_BR_LINE 200: unlock will not failed - if (ret != TRUE) { // LCOV_EXCL_BR_LINE 200: unlock will not failed - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "PbMutexUnlock ERROR " \ - "[ret:%d, g_h_mtx:%p]", ret, g_h_mtx); - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - _pb_Exit(); // LCOV_EXCL_LINE 200: unlock will not failed - /* don't arrive here. */ - } - - return; -} - -/** - * @brief - * Timer Expiration Callback Functions - * - * For setting the timer creation function (NS_TimerCreate)<br> - * TimerCallback1 ... TimerCallback8 - * - * @param[in] h_app Application handle - * - * @return eFrameworkunifiedStatusOK Normal completion - */ -static EFrameworkunifiedStatus TimerCallback1(HANDLE h_app) { - static const u_int8 ID = 0; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback2(HANDLE h_app) { - static const u_int8 ID = 1; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback3(HANDLE h_app) { - static const u_int8 ID = 2; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback4(HANDLE h_app) { - static const u_int8 ID = 3; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback5(HANDLE h_app) { - static const u_int8 ID = 4; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback6(HANDLE h_app) { - static const u_int8 ID = 5; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback7(HANDLE h_app) { - static const u_int8 ID = 6; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static EFrameworkunifiedStatus TimerCallback8(HANDLE h_app) { - static const u_int8 ID = 7; - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "+"); - - TimerCallbackComProc(ID); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "-"); - - return eFrameworkunifiedStatusOK; -} - -static void TimerCallbackComProc(const uint8_t id) { - uint8_t type; - - TimerLockMutex(); /* Get Mutex */ - - /* Message is sent to the thread specified when the timer is created. */ - (void)_pb_SndMsg(g_timer_ctrl_tbl[id].pno, g_timer_ctrl_tbl[id].size, &(g_timer_ctrl_tbl[id].msg_buf), 0); - - type = TimerGetTypeOfCtrlTbl(id); - if (type == TIMER_TYPE_USN) { - /* One-shot timer */ - /* Clear timer information */ - TimerClearSettingOfCtrlTbl(id); - - FRAMEWORKUNIFIEDLOG(ZONE_20, __FUNCTION__, "### TIMER TABLE INFORMATION # " \ - "(--) idx:%d cid:%d h_timer:%p pno:%d seq_no:%d type:%d time_out:%d", \ - id, g_timer_ctrl_tbl[id].cid, g_timer_ctrl_tbl[id].h_timer, g_timer_ctrl_tbl[id].pno, \ - g_timer_ctrl_tbl[id].seq_no, g_timer_ctrl_tbl[id].type, g_timer_ctrl_tbl[id].time_out); - } - - TimerUnlockMutex(); /* Release Mutex */ - - return; -} - -/** - * @brief - * Get dump information - * - * @param[out] p_buf Dump info - */ -void _pb_GetDebugTimerMngTbl(void* p_buf) { - static uint8_t buf[DEBUG_DUMP_MAX_SIZE]; - static uint8_t buf_tmp[256]; - uint32_t i; - - if (p_buf != NULL) { - memset(&buf, 0x00, sizeof(buf)); - snprintf(reinterpret_cast<char *>(&(buf)), sizeof(buf), "Timer"); - for (i = 0; i < MAX_CTRL_TIMER_NUM; i++) { - memset(&buf_tmp[0], 0x00, sizeof(buf_tmp)); - snprintf(reinterpret_cast<char *>(&buf_tmp[0]), sizeof(buf_tmp), - "\n [%d] cid:%05d, hTim:%10p, sz:%05d, pno:0x%04x, seq:0x%04x, typ:%03d, tOut:%10d", - i, - g_timer_ctrl_tbl[i].cid, - g_timer_ctrl_tbl[i].h_timer, - g_timer_ctrl_tbl[i].size, - g_timer_ctrl_tbl[i].pno, - g_timer_ctrl_tbl[i].seq_no, - g_timer_ctrl_tbl[i].type, - g_timer_ctrl_tbl[i].time_out); - strncat(reinterpret_cast<char *>(&buf[0]), reinterpret_cast<char *>(&buf_tmp[0]), \ - strlen(reinterpret_cast<char *>(&buf_tmp[0]))); - } - memcpy(p_buf, &buf[0], sizeof(buf)); - } -} // LCOV_EXCL_BR_LINE 10:The final line |