Home | History | Annotate | Download | only in libaudio
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 
     18 #ifndef __SECRIL_CLIENT_H__
     19 #define __SECRIL_CLIENT_H__
     20 
     21 #include <sys/types.h>
     22 
     23 
     24 #ifdef __cplusplus
     25 extern "C" {
     26 #endif
     27 
     28 struct RilClient {
     29     void *prv;
     30 };
     31 
     32 typedef struct RilClient * HRilClient;
     33 
     34 
     35 //---------------------------------------------------------------------------
     36 // Defines
     37 //---------------------------------------------------------------------------
     38 #define RIL_CLIENT_ERR_SUCCESS      0
     39 #define RIL_CLIENT_ERR_AGAIN        1
     40 #define RIL_CLIENT_ERR_INIT         2 // Client is not initialized
     41 #define RIL_CLIENT_ERR_INVAL        3 // Invalid value
     42 #define RIL_CLIENT_ERR_CONNECT      4 // Connection error
     43 #define RIL_CLIENT_ERR_IO           5 // IO error
     44 #define RIL_CLIENT_ERR_RESOURCE     6 // Resource not available
     45 #define RIL_CLIENT_ERR_UNKNOWN      7
     46 
     47 
     48 //---------------------------------------------------------------------------
     49 // Type definitions
     50 //---------------------------------------------------------------------------
     51 
     52 typedef int (*RilOnComplete)(HRilClient handle, const void *data, size_t datalen);
     53 
     54 typedef int (*RilOnUnsolicited)(HRilClient handle, const void *data, size_t datalen);
     55 
     56 typedef int (*RilOnError)(void *data, int error);
     57 
     58 
     59 //---------------------------------------------------------------------------
     60 // Client APIs
     61 //---------------------------------------------------------------------------
     62 
     63 /**
     64  * Open RILD multi-client.
     65  * Return is client handle, NULL on error.
     66  */
     67 HRilClient OpenClient_RILD(void);
     68 
     69 /**
     70  * Stop RILD multi-client. If client socket was connected,
     71  * it will be disconnected.
     72  */
     73 int CloseClient_RILD(HRilClient client);
     74 
     75 /**
     76  * Connect to RIL deamon. One client task starts.
     77  * Return is 0 or error code.
     78  */
     79 int Connect_RILD(HRilClient client);
     80 
     81 /**
     82  * check whether RILD is connected
     83  * Returns 0 or 1
     84  */
     85 int isConnected_RILD(HRilClient client);
     86 
     87 /**
     88  * Disconnect connection to RIL deamon(socket close).
     89  * Return is 0 or error code.
     90  */
     91 int Disconnect_RILD(HRilClient client);
     92 
     93 /**
     94  * Register unsolicited response handler. If handler is NULL,
     95  * the handler for the request ID is unregistered.
     96  * The response handler is invoked in the client task context.
     97  * Return is 0 or error code.
     98  */
     99 int RegisterUnsolicitedHandler(HRilClient client, uint32_t id, RilOnUnsolicited handler);
    100 
    101 /**
    102  * Register solicited response handler. If handler is NULL,
    103  * the handler for the ID is unregistered.
    104  * The response handler is invoked in the client task context.
    105  * Return is 0 or error code.
    106  */
    107 int RegisterRequestCompleteHandler(HRilClient client, uint32_t id, RilOnComplete handler);
    108 
    109 /**
    110  * Register error callback. If handler is NULL,
    111  * the callback is unregistered.
    112  * The response handler is invoked in the client task context.
    113  * Return is 0 or error code.
    114  */
    115 int RegisterErrorCallback(HRilClient client, RilOnError cb, void *data);
    116 
    117 /**
    118  * Invoke OEM request. Request ID is RIL_REQUEST_OEM_HOOK_RAW.
    119  * Return is 0 or error code. For RIL_CLIENT_ERR_AGAIN caller should retry.
    120  */
    121 int InvokeOemRequestHookRaw(HRilClient client, char *data, size_t len);
    122 
    123 /**
    124  * Sound device types.
    125  */
    126 typedef enum _SoundType {
    127     SOUND_TYPE_VOICE,
    128     SOUND_TYPE_SPEAKER,
    129     SOUND_TYPE_HEADSET,
    130     SOUND_TYPE_BTVOICE
    131 } SoundType;
    132 
    133 /**
    134  * External sound device path.
    135  */
    136 typedef enum _AudioPath {
    137     SOUND_AUDIO_PATH_HANDSET,
    138     SOUND_AUDIO_PATH_HEADSET,
    139     SOUND_AUDIO_PATH_SPEAKER,
    140     SOUND_AUDIO_PATH_BLUETOOTH,
    141     SOUND_AUDIO_PATH_BLUETOOTH_NO_NR,
    142     SOUND_AUDIO_PATH_HEADPHONE
    143 } AudioPath;
    144 
    145 /**
    146  * Clock adjustment parameters.
    147  */
    148 typedef enum _SoundClockCondition {
    149     SOUND_CLOCK_STOP,
    150     SOUND_CLOCK_START
    151 } SoundClockCondition;
    152 
    153 /**
    154  * Set in-call volume.
    155  */
    156 int SetCallVolume(HRilClient client, SoundType type, int vol_level);
    157 
    158 /**
    159  * Set external sound device path for noise reduction.
    160  */
    161 int SetCallAudioPath(HRilClient client, AudioPath path);
    162 
    163 /**
    164  * Set modem clock to master or slave.
    165  */
    166 int SetCallClockSync(HRilClient client, SoundClockCondition condition);
    167 
    168 #ifdef __cplusplus
    169 };
    170 #endif
    171 
    172 #endif // __SECRIL_CLIENT_H__
    173 
    174 // end of file
    175 
    176