blob: 690cf3f96b8e91fc0e2f3567621a2990d060e3ef [file] [log] [blame]
/*
* Copyright (C) 2014 MediaTek Inc.
*
* Modification based on code covered by the below mentioned copyright
* and/or permission notice(s).
*/
/*
**
** Copyright 2006 The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <string.h>
#include <stdint.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <vendor-ril/telephony/ril.h>
#include <log/log.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "stateManager/stateManager.h"
#include "common.h"
#include <lib_tele.h>
#include <lynq_call.h>
#include <lynq_sms.h>
extern "C" void RIL_register (const RIL_RadioFunctions *callbacks);
extern "C" void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,
void *response, size_t responselen);
#if defined(ANDROID_MULTI_SIM)
extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
size_t datalen, RIL_SOCKET_ID socket_id);
#else
extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
size_t datalen);
#endif
#undef LOG_TAG
#define LOG_TAG "DEMO_MAIN"
//static const struct RIL_Cb *mRIL_Cb = NULL;
requestResponse mRequestCb = NULL;
unsolicitedResponse mUnsolicitedCb = NULL;
static user_cb *lynq_Cb=NULL;
static struct RIL_Env s_rilEnv = {
RIL_onRequestComplete,
RIL_onUnsolicitedResponse,
NULL
};
/*
void lynqRegisterRequestResponse(user_cb * cb){
lynq_cb = cb;
return ;
}
*/
void lynqRegisterUnsolicitedResponse(user_cb * cb){
lynq_Cb = cb;
return ;
}
static void lynqOnUnsolicitedResponseCallback(int unsolResponse,char *response,int responselen) {
}
void lynq_ril_init()
{
int lock_file = open("/tmp/tel_demo_single_proc.lock", O_CREAT|O_RDWR, 0666);
int rc = flock(lock_file,LOCK_EX|LOCK_NB);
if(rc) {
if(EWOULDBLOCK == errno) {
printf("Error: cannot restart the telephony app repeatedly\n");
RLOGD("Error: cannot restart the telephony app repeatedly");
exit(0);
}
}
#ifdef BASELIB_DIR_LIB64
const char *rilLibPath = "/lib64/libvendor-ril.so";
#else
const char *rilLibPath = "/lib/libvendor-ril.so";
#endif
void *dlHandle;
const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **);
const RIL_RadioFunctions *funcs;
RLOGD("**RIL Daemon Started**");
android::registerOnUnsolicitedResponse(lynq_Cb);
//prctl(PR_SET_NAME,(unsigned long)"demo_main_thread");
dlHandle = dlopen(rilLibPath, RTLD_NOW);
if (dlHandle == NULL) {
RLOGE("dlopen failed: %s", dlerror());
exit(EXIT_FAILURE);
}
android::RIL_startEventLoop();
//android::startATCILoop();
//android::startPMLoop();
//android::startWakupLoop();
rilInit =
(const RIL_RadioFunctions *(*)(const struct RIL_Env *, int, char **))
dlsym(dlHandle, "RIL_Init");
if (rilInit == NULL) {
RLOGE("RIL_Init not defined or exported in %s", rilLibPath);
exit(EXIT_FAILURE);
}
dlerror(); // Clear any previous dlerror
RLOGD("start rilInit");
funcs = rilInit(&s_rilEnv, 0, NULL);;
RLOGD("start RIL_register");
RIL_register(funcs);
if(lynqApiInit()!=0)
{
RLOGD("lynq api init fail");
exit(0);
}
// android::registerForAppResponse(lynqResponseCallback);
// android::registerOnUnsolicitedResponse(lynqOnUnsolicitedResponseCallback);
// android::startGdbusLoop();
RLOGD("RIL_Init RIL_register completed");
printf("DemoApp launch done!\n");
//while (true) {
//sleep(UINT32_MAX);
//}
close(lock_file);
}
int lynq_waitToRcvCmd(char **data, int lenth)
{
printf("--------->[%s,%d] \n",__FUNCTION__,__LINE__);
android::getRequestData(data,lenth);
return 0;
}