Add timer delete support to rild
Change-Id: Ia862f4cac116bf1ee98788c004860cdb2c70f356
diff --git a/libril/ril.cpp b/libril/ril.cpp
index a7fbaa1..07bf0fa 100644
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -142,7 +142,6 @@
struct UserCallbackInfo *p_next;
} UserCallbackInfo;
-
/*******************************************************************/
RIL_RadioFunctions s_callbacks = {0, NULL, NULL, NULL, NULL, NULL};
@@ -240,8 +239,9 @@
#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 @@
*/
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 @@
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 @@
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 *