100f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project/* //device/libs/telephony/ril_event.h
200f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project**
300f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project** Copyright 2008, The Android Open Source Project
400f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project**
57f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** Licensed under the Apache License, Version 2.0 (the "License");
67f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** you may not use this file except in compliance with the License.
77f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** You may obtain a copy of the License at
800f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project**
97f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville**     http://www.apache.org/licenses/LICENSE-2.0
1000f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project**
117f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** Unless required by applicable law or agreed to in writing, software
127f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** distributed under the License is distributed on an "AS IS" BASIS,
137f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
147f8568086f2ea14885b0091c793e14c2656f0da2Wink Saville** See the License for the specific language governing permissions and
1500f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project** limitations under the License.
1600f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project*/
1700f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
1800f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Max number of fd's we watch at any one time.  Increase if necessary.
1900f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project#define MAX_FD_EVENTS 8
2000f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
2100f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projecttypedef void (*ril_event_cb)(int fd, short events, void *userdata);
2200f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
2300f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectstruct ril_event {
2400f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    struct ril_event *next;
2500f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    struct ril_event *prev;
2600f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
2700f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    int fd;
2800f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    int index;
2900f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    bool persist;
3000f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    struct timeval timeout;
3100f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    ril_event_cb func;
3200f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project    void *param;
3300f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project};
3400f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
3500f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Initialize internal data structs
3600f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_event_init();
3700f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
3800f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Initialize an event
3900f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_event_set(struct ril_event * ev, int fd, bool persist, ril_event_cb func, void * param);
4000f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
4100f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Add event to watch list
4200f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_event_add(struct ril_event * ev);
4300f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
4400f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Add timer event
4500f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_timer_add(struct ril_event * ev, struct timeval * tv);
4600f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
4700f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Remove event from watch list
4800f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_event_del(struct ril_event * ev);
4900f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
5000f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project// Event loop
5100f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Projectvoid ril_event_loop();
5200f06fc3fdb05d4276e76091cacb42b6f6862222The Android Open Source Project
53