diff options
Diffstat (limited to 'rilsrc')
-rw-r--r-- | rilsrc/libsecril-shim/Android.mk | 2 | ||||
-rw-r--r-- | rilsrc/libsecril-shim/secril-shim.cpp (renamed from rilsrc/libsecril-shim/secril-shim.c) | 54 | ||||
-rw-r--r-- | rilsrc/libsecril-shim/secril-shim.h | 2 |
3 files changed, 31 insertions, 27 deletions
diff --git a/rilsrc/libsecril-shim/Android.mk b/rilsrc/libsecril-shim/Android.mk index 91519f2..176e05e 100644 --- a/rilsrc/libsecril-shim/Android.mk +++ b/rilsrc/libsecril-shim/Android.mk @@ -4,7 +4,7 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := \ - secril-shim.c + secril-shim.cpp LOCAL_SHARED_LIBRARIES := \ liblog \ diff --git a/rilsrc/libsecril-shim/secril-shim.c b/rilsrc/libsecril-shim/secril-shim.cpp index 0322a6e..71049bb 100644 --- a/rilsrc/libsecril-shim/secril-shim.c +++ b/rilsrc/libsecril-shim/secril-shim.cpp @@ -25,6 +25,25 @@ static void onRequestDial(int request, void *data, size_t datalen, RIL_Token t) origRilFunctions->onRequest(request, &dial, sizeof(dial), t); } +static bool onRequestGetRadioCapability(RIL_Token t) +{ + RIL_RadioCapability rc[1] = + { + { /* rc[0] */ + RIL_RADIO_CAPABILITY_VERSION, /* version */ + 0, /* session */ + RC_PHASE_CONFIGURED, /* phase */ + RAF_GSM | RAF_GPRS | RAF_EDGE | RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP | RAF_UMTS, /* rat */ + { /* logicalModemUuid */ + 0, + }, + RC_STATUS_SUCCESS /* status */ + } + }; + rilEnv->OnRequestComplete(t, RIL_E_SUCCESS, rc, sizeof(rc)); + return true; +} + static void onRequestShim(int request, void *data, size_t datalen, RIL_Token t) { switch (request) { @@ -38,24 +57,9 @@ static void onRequestShim(int request, void *data, size_t datalen, RIL_Token t) /* Necessary; RILJ may fake this for us if we reply not supported, but we can just implement it. */ case RIL_REQUEST_GET_RADIO_CAPABILITY: - ; /* lol C standard */ - RIL_RadioCapability rc[1] = - { - { /* rc[0] */ - RIL_RADIO_CAPABILITY_VERSION, /* version */ - 0, /* session */ - RC_PHASE_CONFIGURED, /* phase */ - RAF_GSM | RAF_GPRS | RAF_EDGE | RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP | RAF_UMTS, /* rat */ - { /* logicalModemUuid */ - 0, - }, - RC_STATUS_SUCCESS /* status */ - } - }; - RLOGW("%s: got request %s: replied with our implementation!\n", __func__, requestToString(request)); - rilEnv->OnRequestComplete(t, RIL_E_SUCCESS, rc, sizeof(rc)); + onRequestGetRadioCapability(t); + RLOGI("%s: got request %s: replied with our implementation!\n", __FUNCTION__, requestToString(request)); return; - /* The following requests were introduced post-4.3. */ case RIL_REQUEST_SIM_TRANSMIT_APDU_BASIC: case RIL_REQUEST_SIM_OPEN_CHANNEL: /* !!! */ @@ -77,12 +81,12 @@ static void onRequestShim(int request, void *data, size_t datalen, RIL_Token t) case RIL_REQUEST_START_LCE: case RIL_REQUEST_STOP_LCE: case RIL_REQUEST_PULL_LCEDATA: - RLOGW("%s: got request %s: replied with REQUEST_NOT_SUPPPORTED.\n", __func__, requestToString(request)); + RLOGW("%s: got request %s: replied with REQUEST_NOT_SUPPPORTED.\n", __FUNCTION__, requestToString(request)); rilEnv->OnRequestComplete(t, RIL_E_REQUEST_NOT_SUPPORTED, NULL, 0); return; } - RLOGD("%s: got request %s: forwarded to RIL.\n", __func__, requestToString(request)); + RLOGD("%s: got request %s: forwarded to RIL.\n", __FUNCTION__, requestToString(request)); origRilFunctions->onRequest(request, data, datalen, t); } @@ -215,8 +219,8 @@ static void onRequestCompleteShim(RIL_Token t, RIL_Errno e, void *response, size } break; } + RLOGD("%s: got request %s: forwarded to libril.\n", __FUNCTION__, requestToString(request)); - RLOGD("%s: got request %s: forwarded to libril.\n", __func__, requestToString(request)); null_token_exit: rilEnv->OnRequestComplete(t, e, response, responselen); } @@ -255,21 +259,21 @@ const RIL_RadioFunctions* RIL_Init(const struct RIL_Env *env, int argc, char **a /* Open and Init the original RIL. */ - origRil = dlopen(RIL_LIB_PATH, RTLD_LOCAL); + origRil = dlopen(RIL_LIB_PATH, RTLD_GLOBAL); if (CC_UNLIKELY(!origRil)) { - RLOGE("%s: failed to load '" RIL_LIB_PATH "': %s\n", __func__, dlerror()); + RLOGE("%s: failed to load '" RIL_LIB_PATH "': %s\n", __FUNCTION__, dlerror()); return NULL; } - origRilInit = dlsym(origRil, "RIL_Init"); + origRilInit = (const RIL_RadioFunctions *(*)(const struct RIL_Env *, int, char **))(dlsym(origRil, "RIL_Init")); if (CC_UNLIKELY(!origRilInit)) { - RLOGE("%s: couldn't find original RIL_Init!\n", __func__); + RLOGE("%s: couldn't find original RIL_Init!\n", __FUNCTION__); goto fail_after_dlopen; } origRilFunctions = origRilInit(&shimmedEnv, argc, argv); if (CC_UNLIKELY(!origRilFunctions)) { - RLOGE("%s: the original RIL_Init derped.\n", __func__); + RLOGE("%s: the original RIL_Init derped.\n", __FUNCTION__); goto fail_after_dlopen; } diff --git a/rilsrc/libsecril-shim/secril-shim.h b/rilsrc/libsecril-shim/secril-shim.h index 19ef464..dd73e13 100644 --- a/rilsrc/libsecril-shim/secril-shim.h +++ b/rilsrc/libsecril-shim/secril-shim.h @@ -19,7 +19,7 @@ #define RIL_LIB_PATH "/vendor/lib/libsec-ril.so" -extern const char * requestToString(int request); +extern "C" const char * requestToString(int request); typedef struct { |