upload android base code part4
This commit is contained in:
parent
b9e30e05b1
commit
78ea2404cd
23455 changed files with 5250148 additions and 0 deletions
200
android/hardware/ril/libril/RilSapSocket.h
Normal file
200
android/hardware/ril/libril/RilSapSocket.h
Normal file
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
* Copyright (C) 2014 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.
|
||||
*/
|
||||
|
||||
#ifndef RIL_UIM_SOCKET_H_INCLUDED
|
||||
#define RIL_UIM_SOCKET_H_INCLUDED
|
||||
#define RIL_SHLIB
|
||||
#include "telephony/ril.h"
|
||||
#include "RilSocket.h"
|
||||
#include <hardware/ril/librilutils/proto/sap-api.pb.h>
|
||||
|
||||
/**
|
||||
* RilSapSocket is a derived class, derived from the RilSocket abstract
|
||||
* class, representing sockets for communication between bluetooth SAP module and
|
||||
* the ril daemon.
|
||||
* <p>
|
||||
* This class performs the following functions :
|
||||
* <ul>
|
||||
* <li>Initialize the socket.
|
||||
* <li>Process the requests coming on the socket.
|
||||
* <li>Provide handlers for Unsolicited and request responses.
|
||||
* <li>Request and pending response queue handling.
|
||||
* </ul>
|
||||
*/
|
||||
class RilSapSocket : public RilSocket {
|
||||
/**
|
||||
* Place holder for the radio functions returned by the initialization
|
||||
* function. Currenty only onRequest handler is being used.
|
||||
*/
|
||||
RIL_RadioFunctions* uimFuncs;
|
||||
|
||||
/**
|
||||
* Wrapper struct for handling the requests in the queue.
|
||||
*/
|
||||
typedef struct SapSocketRequest {
|
||||
int token;
|
||||
MsgHeader* curr;
|
||||
struct SapSocketRequest* p_next;
|
||||
RIL_SOCKET_ID socketId;
|
||||
} SapSocketRequest;
|
||||
|
||||
/**
|
||||
* Queue for requests that are pending dispatch.
|
||||
*/
|
||||
Ril_queue<SapSocketRequest> dispatchQueue;
|
||||
|
||||
/**
|
||||
* Queue for requests that are dispatched but are pending response
|
||||
*/
|
||||
Ril_queue<SapSocketRequest> pendingResponseQueue;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Initialize the socket and add the socket to the list.
|
||||
*
|
||||
* @param Name of the socket.
|
||||
* @param Radio functions to be used by the socket.
|
||||
*/
|
||||
static void initSapSocket(const char *socketName,
|
||||
RIL_RadioFunctions *uimFuncs);
|
||||
|
||||
/**
|
||||
* Ril envoronment variable that holds the request and
|
||||
* unsol response handlers.
|
||||
*/
|
||||
static struct RIL_Env uimRilEnv;
|
||||
|
||||
/**
|
||||
* Function to print the socket list.
|
||||
*/
|
||||
static void printList();
|
||||
|
||||
/**
|
||||
* Dispatches the request to the lower layers.
|
||||
* It calls the on request function.
|
||||
*
|
||||
* @param request The request message.
|
||||
*/
|
||||
void dispatchRequest(MsgHeader *request);
|
||||
|
||||
/**
|
||||
* Class method to get the socket from the socket list.
|
||||
*
|
||||
* @param socketId Socket id.
|
||||
* @return the sap socket.
|
||||
*/
|
||||
static RilSapSocket* getSocketById(RIL_SOCKET_ID socketId);
|
||||
|
||||
/**
|
||||
* Datatype to handle the socket list.
|
||||
*/
|
||||
typedef struct RilSapSocketList {
|
||||
RilSapSocket* socket;
|
||||
RilSapSocketList *next;
|
||||
} RilSapSocketList;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Socket handler to be called when a request has
|
||||
* been completed.
|
||||
*
|
||||
* @param Token associated with the request.
|
||||
* @param Error, if any, while processing the request.
|
||||
* @param The response payload.
|
||||
* @param Response payload length.
|
||||
*/
|
||||
void onRequestComplete(RIL_Token t,RIL_Errno e,
|
||||
void *response, size_t response_len);
|
||||
|
||||
/**
|
||||
* Socket handler to be called when there is an
|
||||
* unsolicited response.
|
||||
*
|
||||
* @param Message id.
|
||||
* @param Response data.
|
||||
* @param Response data length.
|
||||
*/
|
||||
void onUnsolicitedResponse(int unsolResponse,
|
||||
void *data, size_t datalen);
|
||||
|
||||
/**
|
||||
* Class method to add the sap socket to the list of sockets.
|
||||
* Does nothing if the socket is already present in the list.
|
||||
* Otherwise, calls the constructor of the parent class(To startlistening)
|
||||
* and add socket to the socket list.
|
||||
*/
|
||||
static void addSocketToList(const char *socketName, RIL_SOCKET_ID socketid,
|
||||
RIL_RadioFunctions *uimFuncs);
|
||||
|
||||
/**
|
||||
* Check if a socket of the given name exists in the socket list.
|
||||
*
|
||||
* @param Socket name.
|
||||
* @return true if exists, false otherwise.
|
||||
*/
|
||||
static bool SocketExists(const char *socketName);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param Socket name.
|
||||
* @param Socket id.
|
||||
* @param Radio functions.
|
||||
*/
|
||||
RilSapSocket(const char *socketName,
|
||||
RIL_SOCKET_ID socketId,
|
||||
RIL_RadioFunctions *inputUimFuncs);
|
||||
|
||||
/**
|
||||
* Class method that selects the socket on which the onRequestComplete
|
||||
* is called.
|
||||
*
|
||||
* @param Token associated with the request.
|
||||
* @param Error, if any, while processing the request.
|
||||
* @param The response payload.
|
||||
* @param Response payload length.
|
||||
*/
|
||||
static void sOnRequestComplete(RIL_Token t,
|
||||
RIL_Errno e, void *response, size_t responselen);
|
||||
|
||||
#if defined(ANDROID_MULTI_SIM)
|
||||
/**
|
||||
* Class method that selects the socket on which the onUnsolicitedResponse
|
||||
* is called.
|
||||
*
|
||||
* @param Message id.
|
||||
* @param Response data.
|
||||
* @param Response data length.
|
||||
* @param Socket id.
|
||||
*/
|
||||
static void sOnUnsolicitedResponse(int unsolResponse, const void *data,
|
||||
size_t datalen, RIL_SOCKET_ID socket_id);
|
||||
#else
|
||||
/**
|
||||
* Class method that selects the socket on which the onUnsolicitedResponse
|
||||
* is called.
|
||||
*
|
||||
* @param Message id.
|
||||
* @param Response data.
|
||||
* @param Response data length.
|
||||
*/
|
||||
static void sOnUnsolicitedResponse(int unsolResponse, const void *data,
|
||||
size_t datalen);
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /*RIL_UIM_SOCKET_H_INCLUDED*/
|
Loading…
Add table
Add a link
Reference in a new issue