• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright (c) 2009,2011 Code Aurora Forum. All rights reserved.
2  *
3  * Redistribution and use in source and binary forms, with or without
4  * modification, are permitted provided that the following conditions are
5  * met:
6  *     * Redistributions of source code must retain the above copyright
7  *       notice, this list of conditions and the following disclaimer.
8  *     * Redistributions in binary form must reproduce the above
9  *       copyright notice, this list of conditions and the following
10  *       disclaimer in the documentation and/or other materials provided
11  *       with the distribution.
12  *     * Neither the name of Code Aurora Forum, Inc. nor the names of its
13  *       contributors may be used to endorse or promote products derived
14  *       from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  */
29 
30 #ifndef LOC_ENG_IOCTL_H
31 #define LOC_ENG_IOCTL_H
32 
33 // Module data
34 typedef struct loc_eng_ioctl_data_s_type
35 {
36     // We are waiting for an ioctl callback
37     boolean                       cb_is_selected;
38     // The thread has been put in a wait state for an ioctl callback
39     boolean                       cb_is_waiting;
40     // Loc client handle that is waiting for the callback
41     rpc_loc_client_handle_type    client_handle;
42     // IOCTL type that the loc client is waiting for
43     rpc_loc_ioctl_e_type          ioctl_type;
44     // The IOCLT report has arrived for the waiting client
45     boolean                       cb_has_arrived;
46     // The payload for the RPC_LOC_EVENT_IOCTL_REPORT
47     rpc_loc_ioctl_callback_s_type cb_payload;
48     // Mutex to access this data structure
49     pthread_mutex_t               cb_data_mutex;
50     // LOC ioctl callback arrived mutex
51     pthread_cond_t                cb_arrived_cond;
52 } loc_eng_ioctl_data_s_type;
53 
54 
55 extern boolean loc_eng_ioctl
56 (
57     rpc_loc_client_handle_type           handle,
58     rpc_loc_ioctl_e_type                 ioctl_type,
59     rpc_loc_ioctl_data_u_type*           ioctl_data_ptr,
60     uint32                               timeout_msec,
61     rpc_loc_ioctl_callback_s_type       *cb_data_ptr
62 );
63 
64 extern boolean loc_eng_ioctl_process_cb
65 (
66     rpc_loc_client_handle_type           client_handle,
67     const rpc_loc_ioctl_callback_s_type *cb_data_ptr
68 );
69 #endif // LOC_ENG_IOCTL_H
70