diff options
author | Riku Nomoto <riku_nomoto@mail.toyota.co.jp> | 2020-11-19 12:45:32 +0900 |
---|---|---|
committer | Riku Nomoto <riku_nomoto@mail.toyota.co.jp> | 2020-11-19 12:45:32 +0900 |
commit | 8e0e00d21146a84c18f9cf9409e187b4fb0248aa (patch) | |
tree | ef791689dad216ac61091a1d1bd3b928d563aba6 /video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp | |
parent | 18df6e21c6743a137e2760c52ca89d0789e90417 (diff) |
Init basesystem source codes.
Signed-off-by: Riku Nomoto <riku_nomoto@mail.toyota.co.jp>
Change-Id: I55aa2f1406ce7f751ae14140b613b53b68995528
Diffstat (limited to 'video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp')
-rwxr-xr-x | video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp b/video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp new file mode 100755 index 0000000..47b41e9 --- /dev/null +++ b/video_in_hal/nsframework/framework_unified/client/NS_Timer/src/ns_timer_class.cpp @@ -0,0 +1,177 @@ +/* + * @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. + */ + +////////////////////////////////////////////////////////////////////////////////////////////////// +/// \ingroup tag_NSTimer +/// \brief +/// +/// Timer class for setting timers. +/// +////////////////////////////////////////////////////////////////////////////////////////////////// + +#include <native_service/ns_timer_if.hpp> +#include <native_service/ns_message_center_if.h> +#include <string.h> + +////////////////////////////////////////////////////////////////////////////////////////////// +///// Constructor +////////////////////////////////////////////////////////////////////////////////////////////// +NSTimer::NSTimer(): + m_hTimer(NULL), + m_u64TimeInterval(0), + m_bRepeatTimer(FALSE) { +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// Destructor +////////////////////////////////////////////////////////////////////////////////////////////// +NSTimer::~NSTimer() { + if (NULL != m_hTimer) { + NS_TimerDelete(m_hTimer); + m_hTimer = NULL; + } +} + + +////////////////////////////////////////////////////////////////////////////////////////////// +///// SetNotifyMethod +////////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus NSTimer::SetNotifyMethod(UI_16 notifyCmdId, PCSTR notifyToAppName) { + EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; + NSTimerInfo l_tTimerInfo = {}; + + if ((NULL != notifyToAppName) && (strlen(notifyToAppName) <= MAX_SERVICE_NAME)) { + HANDLE l_hSenderHandle = McOpenSender(notifyToAppName); + + if (NULL != l_hSenderHandle) { // reset previous notify method, and set new + // resets previous timer timeout action if any + if (NULL != m_hTimer) { + NS_TimerDelete(m_hTimer); + m_hTimer = NULL; + } + + l_tTimerInfo.iCmd = notifyCmdId; + // Create timer. Do not start. + if (NULL == (m_hTimer = NS_TimerCreate(l_tTimerInfo, CALLBACK_MESSAGE, l_hSenderHandle))) { + l_eStatus = eFrameworkunifiedStatusFail; + } + + McClose(l_hSenderHandle); + } else { + // just return fail. Don't reset any previous notify method + l_eStatus = eFrameworkunifiedStatusFail; + } + } else { + l_eStatus = eFrameworkunifiedStatusInvldParam; + } + + return l_eStatus; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// SetRepeatTimer +////////////////////////////////////////////////////////////////////////////////////////////// +VOID NSTimer::SetRepeatTimer(BOOL repeatTimer) { + m_bRepeatTimer = repeatTimer; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// SetTime +////////////////////////////////////////////////////////////////////////////////////////////// +VOID NSTimer::SetTime(UI_32 seconds, UI_64 msecs) { + m_u64TimeInterval = msecs + seconds * 1000ULL; // internally, set interval as milliseconds +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// SetTime +////////////////////////////////////////////////////////////////////////////////////////////// +VOID NSTimer::SetTime(UI_32 hrs, UI_32 mins, UI_32 seconds, UI_64 msecs) { + // internally, set interval as milliseconds + m_u64TimeInterval = msecs + seconds * 1000ULL + mins * 60000ULL + hrs * 3600000ULL; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// Start +////////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus NSTimer::Start(UI_32 seconds, UI_64 msecs) { + this->SetTime(seconds, msecs); + return (this->Start()); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// Start +////////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus NSTimer::Start() { + EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; + if (NULL != m_hTimer) { + NSTimerInfo l_tTimerInfo = {}; + + l_tTimerInfo.t_sec = WholeSeconds(static_cast<UI_32>(m_u64TimeInterval)); /// Converts to seconds + l_tTimerInfo.t_nsec = MSToNS(RemainderMs(static_cast<UI_32>(m_u64TimeInterval))); /// Converts to nano seconds + + if (TRUE == m_bRepeatTimer) { + l_tTimerInfo.rpt_sec = l_tTimerInfo.t_sec; + l_tTimerInfo.rpt_nsec = l_tTimerInfo.t_nsec; + } + l_eStatus = NS_TimerSetTime(m_hTimer, l_tTimerInfo); + } else { + l_eStatus = eFrameworkunifiedStatusFail; + } + + return l_eStatus; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// Stop +////////////////////////////////////////////////////////////////////////////////////////////// +EFrameworkunifiedStatus NSTimer::Stop() { + EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; + + if (NULL != m_hTimer) { + NSTimerInfo l_tTimerInfo = {}; + l_eStatus = NS_TimerSetTime(m_hTimer, l_tTimerInfo); + } else { + l_eStatus = eFrameworkunifiedStatusFail; + } + + return l_eStatus; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// IsRunning +////////////////////////////////////////////////////////////////////////////////////////////// +BOOL NSTimer::IsRunning() { + BOOL l_bIsRunning = FALSE; + + if (NULL != m_hTimer) { + NSTimerInfo l_tTimerInfo = {}; + NS_TimerGetTime(m_hTimer, &l_tTimerInfo); + if ((0 != l_tTimerInfo.t_sec) || (0 != l_tTimerInfo.t_nsec) || (0 != l_tTimerInfo.rpt_sec) || + (0 != l_tTimerInfo.rpt_nsec)) { + l_bIsRunning = TRUE; + } + } + return l_bIsRunning; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +///// GetInterval +////////////////////////////////////////////////////////////////////////////////////////////// +UI_64 NSTimer::GetInterval() { + return m_u64TimeInterval; +} + +// EOF |