Skip to content
Snippets Groups Projects
Commit d8a9a0c5 authored by dmitriy.gerasimov's avatar dmitriy.gerasimov
Browse files

Merge branch 'bugs-3666' into 'master'

bugs-3666

See merge request libdap!43
parents 81b95e3d 126fa648
No related branches found
No related tags found
1 merge request!24Support 3689
...@@ -235,10 +235,11 @@ typedef struct dap_log_history_str_s { ...@@ -235,10 +235,11 @@ typedef struct dap_log_history_str_s {
#define DAP_INTERVAL_TIMERS_MAX 15 #define DAP_INTERVAL_TIMERS_MAX 15
typedef void (*dap_timer_callback_t)(void); typedef void (*dap_timer_callback_t)(void *param);
typedef struct dap_timer_interface { typedef struct dap_timer_interface {
void *timer; void *timer;
dap_timer_callback_t callback; dap_timer_callback_t callback;
void *param;
} dap_timer_interface_t; } dap_timer_interface_t;
#ifdef __cplusplus #ifdef __cplusplus
...@@ -385,7 +386,7 @@ size_t dap_bin2hex(char *a_out, const void *a_in, size_t a_len); ...@@ -385,7 +386,7 @@ size_t dap_bin2hex(char *a_out, const void *a_in, size_t a_len);
void dap_digit_from_string(const char *num_str, void *raw, size_t raw_len); void dap_digit_from_string(const char *num_str, void *raw, size_t raw_len);
void dap_digit_from_string2(const char *num_str, void *raw, size_t raw_len); void dap_digit_from_string2(const char *num_str, void *raw, size_t raw_len);
void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_callback); void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_callback, void *a_param);
int dap_interval_timer_delete(void *a_timer); int dap_interval_timer_delete(void *a_timer);
#ifdef __MINGW32__ #ifdef __MINGW32__
......
...@@ -827,12 +827,12 @@ static int s_timer_find(void *a_timer) ...@@ -827,12 +827,12 @@ static int s_timer_find(void *a_timer)
static void CALLBACK s_win_callback(PVOID a_arg, BOOLEAN a_always_true) static void CALLBACK s_win_callback(PVOID a_arg, BOOLEAN a_always_true)
{ {
UNUSED(a_always_true); UNUSED(a_always_true);
s_timers[(int)a_arg].callback(); s_timers[(int)a_arg].callback(s_timers[(int)a_arg].param);
} }
#else #else
static void s_posix_callback(union sigval a_arg) static void s_posix_callback(union sigval a_arg)
{ {
s_timers[a_arg.sival_int].callback(); s_timers[a_arg.sival_int].callback(s_timers[a_arg.sival_int].param);
} }
#endif #endif
...@@ -842,7 +842,7 @@ static void s_posix_callback(union sigval a_arg) ...@@ -842,7 +842,7 @@ static void s_posix_callback(union sigval a_arg)
* \param a_callback Function to be called with timer period * \param a_callback Function to be called with timer period
* \return pointer to timer object if success, otherwise return NULL * \return pointer to timer object if success, otherwise return NULL
*/ */
void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_callback) void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_callback, void *a_param)
{ {
if (s_timers_count == DAP_INTERVAL_TIMERS_MAX) { if (s_timers_count == DAP_INTERVAL_TIMERS_MAX) {
return NULL; return NULL;
...@@ -876,6 +876,7 @@ void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_call ...@@ -876,6 +876,7 @@ void *dap_interval_timer_create(unsigned int a_msec, dap_timer_callback_t a_call
#endif #endif
s_timers[s_timers_count].timer = (void *)l_timer; s_timers[s_timers_count].timer = (void *)l_timer;
s_timers[s_timers_count].callback = a_callback; s_timers[s_timers_count].callback = a_callback;
s_timers[s_timers_count].param = a_param;
s_timers_count++; s_timers_count++;
#ifdef _WIN32 #ifdef _WIN32
LeaveCriticalSection(&s_timers_lock); LeaveCriticalSection(&s_timers_lock);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment