diff options
Diffstat (limited to 'ril-wrapper/ril-wrapper.c')
-rw-r--r-- | ril-wrapper/ril-wrapper.c | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/ril-wrapper/ril-wrapper.c b/ril-wrapper/ril-wrapper.c deleted file mode 100644 index 886cb34..0000000 --- a/ril-wrapper/ril-wrapper.c +++ /dev/null @@ -1,99 +0,0 @@ -#define LOG_TAG "RilWrapper" -#define RIL_SHLIB -#include <telephony/ril_cdma_sms.h> -#include <sys/system_properties.h> -#include <telephony/librilutils.h> -#include <cutils/sockets.h> -#include <telephony/ril.h> -#include <sys/socket.h> -#include <sys/types.h> -#include <sys/cdefs.h> -#include <utils/Log.h> -#include <sys/stat.h> -#include <pthread.h> -#include <termios.h> -#include <alloca.h> -#include <assert.h> -#include <getopt.h> -#include <string.h> -#include <unistd.h> -#include <dlfcn.h> -#include <errno.h> -#include <fcntl.h> -#include <stdio.h> - -#define REAL_RIL_NAME "/system/lib/libsec-ril.so" - - -static RIL_RadioFunctions const *mRealRadioFuncs; -static const struct RIL_Env *mEnv; - -static void rilOnRequest(int request, void *data, size_t datalen, RIL_Token t) -{ - switch (request) { - case RIL_REQUEST_GET_RADIO_CAPABILITY: - RLOGW("Returning NOT_SUPPORTED on GET_RADIO_CAPABILITY"); - mEnv->OnRequestComplete(t, RIL_E_REQUEST_NOT_SUPPORTED, NULL, 0); - break; - default: - mRealRadioFuncs->onRequest(request, data, datalen, t); - } -} - -const RIL_RadioFunctions* RIL_Init(const struct RIL_Env *env, int argc, char **argv) -{ - RIL_RadioFunctions const* (*fRealRilInit)(const struct RIL_Env *env, int argc, char **argv); - static RIL_RadioFunctions rilInfo; - void *realRilLibHandle; - int i; - - - //save the env; - mEnv = env; - - //get the real RIL - realRilLibHandle = dlopen(REAL_RIL_NAME, RTLD_LOCAL); - if (!realRilLibHandle) { - RLOGE("Failed to load the real RIL '" REAL_RIL_NAME "': %s\n", dlerror()); - return NULL; - } - - //remove "-c" command line as Samsung's RIL does not understand it - it just barfs instead - for (i = 0; i < argc; i++) { - if (!strcmp(argv[i], "-c") && i != argc -1) { //found it - memcpy(argv + i, argv + i + 2, sizeof(char*[argc - i - 2])); - argc -= 2; - } - } - - //load the real RIL - fRealRilInit = dlsym(realRilLibHandle, "RIL_Init"); - if (!fRealRilInit) { - RLOGE("Failed to find the real RIL's entry point\n"); - goto out_fail; - } - - RLOGD("Calling the real RIL's entry point with %u args\n", argc); - for (i = 0; i < argc; i++) - RLOGD(" argv[%2d] = '%s'\n", i, argv[i]); - - //try to init the real ril - mRealRadioFuncs = fRealRilInit(env, argc, argv); - if (!mRealRadioFuncs) { - RLOGE("The real RIL's entry point failed\n"); - goto out_fail; - } - - //copy the real RIL's info struct, then replace the onRequest pointer with our own - rilInfo = *mRealRadioFuncs; - rilInfo.onRequest = rilOnRequest; - - RLOGD("Wrapped RIL version is '%s'\n", mRealRadioFuncs->getVersion()); - - //we're all good - return to caller - return &rilInfo; - -out_fail: - dlclose(realRilLibHandle); - return NULL; -} |