2 * This file is part of hayes-ril.
4 * Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
28 #define RIL_DEVICE_LOCK(ril_device_p) pthread_mutex_lock(&(ril_device_p->handlers->transport->mutex));
29 #define RIL_DEVICE_UNLOCK(ril_device_p) pthread_mutex_unlock(&(ril_device_p->handlers->transport->mutex));
30 #define RIL_LOG_LOCK() pthread_mutex_lock(&(ril_globals.log_mutex));
31 #define RIL_LOG_UNLOCK() pthread_mutex_unlock(&(ril_globals.log_mutex));
33 #define DEV_GSM RIL_DEVICE_TYPE_GSM
34 #define DEV_CDMA RIL_DEVICE_TYPE_CDMA
37 * Variables structures
41 enum ril_device_type {
46 struct ril_device_power_handlers {
48 int (*sdata_create)(void **sdata);
49 int (*sdata_destroy)(void *sdata);
51 int (*power_on)(void *sdata);
52 int (*power_off)(void *sdata);
54 int (*suspend)(void *sdata);
55 int (*resume)(void *sdata);
57 int (*boot)(void *sdata);
60 struct ril_device_transport_handlers {
62 int (*sdata_create)(void **sdata);
63 int (*sdata_destroy)(void *sdata);
65 int (*open)(void *sdata);
66 int (*close)(void *sdata);
68 int (*send)(void *sdata, void **data, int length);
69 int (*recv)(void *sdata, void **data, int length);
71 int (*recv_poll)(void *sdata);
73 pthread_t recv_thread;
74 pthread_mutex_t mutex;
77 struct ril_device_handlers {
78 struct ril_device_power_handlers *power;
79 struct ril_device_transport_handlers *transport;
87 enum ril_device_type type;
88 struct ril_device_handlers *handlers;
91 extern struct ril_device *ril_device;
92 extern struct ril_globals ril_globals;
95 struct ril_dispatch_unsol {
97 void (*func)(struct at_response *response);
102 pthread_t dispatch_thread;
103 struct ril_dispatch_unsol *dispatch_unsol;
104 int dispatch_unsol_count;
107 pthread_mutex_t log_mutex;
110 RIL_RadioState radio_state;
113 char **registration_state;
121 void ril_device_register(struct ril_device **ril_device_p);
122 int ril_device_init(struct ril_device *ril_device_p);
123 int ril_device_deinit(struct ril_device *ril_device_p);
125 int ril_device_data_create(struct ril_device *ril_device_p);
126 int ril_device_data_destroy(struct ril_device *ril_device_p);
127 int ril_device_boot(struct ril_device *ril_device_p);
128 int ril_device_boot(struct ril_device *ril_device_p);
129 int ril_device_power_on(struct ril_device *ril_device_p);
130 int ril_device_power_off(struct ril_device *ril_device_p);
131 int ril_device_open(struct ril_device *ril_device_p);
132 int ril_device_close(struct ril_device *ril_device_p);
133 int ril_device_send(struct ril_device *ril_device_p, void *data, int length);
134 int ril_device_recv(struct ril_device *ril_device_p, void **data, int length);
135 int ril_device_recv_poll(struct ril_device *ril_device_p);
136 int ril_device_recv_thread_start(struct ril_device *ril_device_p);
139 char *ril_status_string(int status);
140 void ril_recv_log(struct at_response *response);
141 void ril_send_log(struct at_request *request);
142 void ril_data_log(char *data, int length);
145 void ril_request_get_current_calls(RIL_Token t, void *data, size_t length);
148 void ril_request_radio_power(RIL_Token t, void *data, size_t length);
151 int at_cpin_expect(struct at_response *response, void *data, RIL_Token t);
152 void ril_request_get_sim_status(RIL_Token t, void *data, size_t length);
153 void ril_request_enter_sim_pin(RIL_Token t, void *data, size_t length);
154 void ril_request_sim_io(RIL_Token t, void *data, size_t length);
157 void ril_request_signal_strength(RIL_Token t, void *data, size_t length);
158 void at_creg_unexpect(struct at_response *response);
159 void ril_request_registration_state(RIL_Token t, void *data, size_t length);
160 void ril_request_operator(RIL_Token t, void *data, size_t length);