From f7a18ec4494b9c5c9ef3fd440bbf68ffc6425e18 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 08 十二月 2022 15:40:56 +0800
Subject: [PATCH] 智慧驾培首次提交

---
 lib/src/main/cpp/common/apptimer.h |   68 ++++++++++++++++++++++++++++-----
 1 files changed, 57 insertions(+), 11 deletions(-)

diff --git a/lib/src/main/cpp/common/apptimer.h b/lib/src/main/cpp/common/apptimer.h
index 89dab30..60e9b4b 100644
--- a/lib/src/main/cpp/common/apptimer.h
+++ b/lib/src/main/cpp/common/apptimer.h
@@ -1,23 +1,69 @@
-#ifndef _APPTIMER_H_
-#define _APPTIMER_H_
+//
+// Created by YY on 2021/3/16.
+//
 
-#include <stdint.h>
-#include <signal.h>
+#ifndef NDKADV_APPTIMER_H
+#define NDKADV_APPTIMER_H
+
+#include <cstdint>
+#include <functional>
+#include <thread>
+#include <chrono>
+#include <atomic>
+#include <mutex>
+#include <condition_variable>
+#include <string>
+#include <ctime>
 
 #define D_SEC(n)		((n)*1000UL)
 #define D_MIN(n)		((n)*1000UL*60UL)
 #define D_HOUR(n)		((n)*1000UL*60UL*60UL)
 
-extern void AppTimer_Init(void);
+typedef struct {
+    int var1;
+    int var2;
+    void * var_ptr;
+    int var_length;
+} apptimer_var_t;
 
-extern void AppTimer_add(void (*func)(union sigval), int timeMS);
+class CTimer {
+public:
+    CTimer();
+    virtual ~CTimer();
+    static bool _updateStatus(CTimer *timer);
+    static void _do_task_func(uint32_t msec, CTimer *timer, std::function<void(apptimer_var_t)> callback);
+    bool start(uint32_t msec, std::function<void(apptimer_var_t)> callback);
+    void stop();
+    void copy(int value1, int value2, const void *data, int length);
+    static void clear(CTimer *timer);
+private:
+    std::mutex cv_mtx;
+    std::condition_variable cv;
+//    std::thread callbackThread;
+    std::thread *pthread;
+    apptimer_var_t var;
+public:
+    std::atomic_int flag;
+};
 
-extern void AppTimer_add(void (*func)(union sigval), int timeMS, uint8_t *data, int length);
+void AppTimer_init(void);
 
-extern void AppTimer_add(void (*func)(union sigval), int timeMS, int value);
+void AppTimer_add(void(*cb)(apptimer_var_t), uint32_t msec);
 
-extern void AppTimer_delete(void (*func)(union sigval));
+void AppTimer_add(void(*cb)(apptimer_var_t), uint32_t msec, int value1, int value2 = 0);
 
-extern uint32_t AppTimer_GetTickCount(void);
+void AppTimer_add(void(*cb)(apptimer_var_t), uint32_t msec, void *data, int lenght);
 
-#endif
+void AppTimer_delete(void (*cb) (apptimer_var_t));
+
+uint32_t AppTimer_GetTickCount(void);
+
+uint32_t AppTimer_GetGmtTickCount(void);
+
+std::string FormatTime(const char *fmt);
+
+std::time_t MktimeString(const char *str, const char *fmt);
+
+time_t TimeStamp(int year, int mon, int day, int hour, int min, int sec);
+
+#endif //NDKADV_APPTIMER_H

--
Gitblit v1.8.0