diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2010-06-25 14:21:13 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-06-25 14:21:13 -0700 |
commit | bb1375f6bdc6cf7d8c3642367cf35565ddb094a8 (patch) | |
tree | 53b232f8c3e714d0a6151b84ae635176f6c3a285 /libril | |
parent | ca5e347ce4b2b51385c4b7395d51c30498c41a6b (diff) | |
parent | 9a2f5113fd1db1e1605daad47b16b6f960045582 (diff) | |
download | android_hardware_ril-bb1375f6bdc6cf7d8c3642367cf35565ddb094a8.tar.gz android_hardware_ril-bb1375f6bdc6cf7d8c3642367cf35565ddb094a8.tar.bz2 android_hardware_ril-bb1375f6bdc6cf7d8c3642367cf35565ddb094a8.zip |
am 9a2f5113: merge from open-source master
Merge commit '9a2f5113fd1db1e1605daad47b16b6f960045582'
* commit '9a2f5113fd1db1e1605daad47b16b6f960045582':
Add timer delete support to rild
Diffstat (limited to 'libril')
-rw-r--r-- | libril/ril.cpp | 29 | ||||
-rw-r--r-- | libril/ril_event.cpp | 12 | ||||
-rw-r--r-- | libril/ril_event.h | 3 |
3 files changed, 36 insertions, 8 deletions
diff --git a/libril/ril.cpp b/libril/ril.cpp index 944c860..4d0ea6f 100644 --- a/libril/ril.cpp +++ b/libril/ril.cpp @@ -142,7 +142,6 @@ typedef struct UserCallbackInfo { struct UserCallbackInfo *p_next; } UserCallbackInfo; - /*******************************************************************/ RIL_RadioFunctions s_callbacks = {0, NULL, NULL, NULL, NULL, NULL}; @@ -240,8 +239,9 @@ extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, void *data, #endif static UserCallbackInfo * internalRequestTimedCallback - (RIL_TimedCallback callback, void *param, - const struct timeval *relativeTime); + (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime); + +static void internalRemoveTimedCallback(void *callbackInfo); /** Index == requestNumber */ static CommandInfo s_commands[] = { @@ -2862,7 +2862,7 @@ error_exit: */ static UserCallbackInfo * internalRequestTimedCallback (RIL_TimedCallback callback, void *param, - const struct timeval *relativeTime) + const struct timeval *relativeTime) { struct timeval myRelativeTime; UserCallbackInfo *p_info; @@ -2871,7 +2871,6 @@ internalRequestTimedCallback (RIL_TimedCallback callback, void *param, p_info->p_callback = callback; p_info->userParam = param; - if (relativeTime == NULL) { /* treat null parameter as a 0 relative time */ memset (&myRelativeTime, 0, sizeof(myRelativeTime)); @@ -2888,11 +2887,27 @@ internalRequestTimedCallback (RIL_TimedCallback callback, void *param, return p_info; } +static void +internalRemoveTimedCallback(void *callbackInfo) +{ + UserCallbackInfo *p_info; + p_info = (UserCallbackInfo *)callbackInfo; + LOGI("remove timer callback event"); + if(p_info) { + ril_timer_delete(&(p_info->event)); + free(p_info); + } +} -extern "C" void +extern "C" void * RIL_requestTimedCallback (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime) { - internalRequestTimedCallback (callback, param, relativeTime); + return internalRequestTimedCallback (callback, param, relativeTime); +} + +extern "C" void +RIL_removeTimedCallback (void *callbackInfo) { + internalRemoveTimedCallback(callbackInfo); } const char * diff --git a/libril/ril_event.cpp b/libril/ril_event.cpp index e40e72b..c24c655 100644 --- a/libril/ril_event.cpp +++ b/libril/ril_event.cpp @@ -312,13 +312,23 @@ void ril_timer_add(struct ril_event * ev, struct timeval * tv) dlog("~~~~ -ril_timer_add ~~~~"); } +// Remove event from timer list +void ril_timer_delete(struct ril_event *tev) +{ + dlog("~~~~timer event delete=%x",(unsigned int)tev); + MUTEX_ACQUIRE(); + removeFromList(tev); + MUTEX_RELEASE(); +} + // Remove event from watch or timer list void ril_event_del(struct ril_event * ev) { - dlog("~~~~ +ril_event_del ~~~~"); + dlog("~~~~ +ril_event_del event= %x ~~~~", (unsigned int)ev); MUTEX_ACQUIRE(); if (ev->index < 0 || ev->index >= MAX_FD_EVENTS) { + MUTEX_RELEASE(); return; } diff --git a/libril/ril_event.h b/libril/ril_event.h index 7ba231b..2b9980a 100644 --- a/libril/ril_event.h +++ b/libril/ril_event.h @@ -47,6 +47,9 @@ void ril_timer_add(struct ril_event * ev, struct timeval * tv); // Remove event from watch list void ril_event_del(struct ril_event * ev); +// Remove event from timer list +void ril_timer_delete(struct ril_event * ev); + // Event loop void ril_event_loop(); |