1e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo/* Copyright (c) 2011, The Linux Foundation. All rights reserved.
234ee09551764b045fdc02df754157473125edf60Kevin Tang *
334ee09551764b045fdc02df754157473125edf60Kevin Tang * Redistribution and use in source and binary forms, with or without
434ee09551764b045fdc02df754157473125edf60Kevin Tang * modification, are permitted provided that the following conditions are
534ee09551764b045fdc02df754157473125edf60Kevin Tang * met:
634ee09551764b045fdc02df754157473125edf60Kevin Tang *     * Redistributions of source code must retain the above copyright
734ee09551764b045fdc02df754157473125edf60Kevin Tang *       notice, this list of conditions and the following disclaimer.
834ee09551764b045fdc02df754157473125edf60Kevin Tang *     * Redistributions in binary form must reproduce the above
934ee09551764b045fdc02df754157473125edf60Kevin Tang *       copyright notice, this list of conditions and the following
1034ee09551764b045fdc02df754157473125edf60Kevin Tang *       disclaimer in the documentation and/or other materials provided
1134ee09551764b045fdc02df754157473125edf60Kevin Tang *       with the distribution.
12e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo *     * Neither the name of The Linux Foundation nor the names of its
1334ee09551764b045fdc02df754157473125edf60Kevin Tang *       contributors may be used to endorse or promote products derived
1434ee09551764b045fdc02df754157473125edf60Kevin Tang *       from this software without specific prior written permission.
1534ee09551764b045fdc02df754157473125edf60Kevin Tang *
1634ee09551764b045fdc02df754157473125edf60Kevin Tang * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
1734ee09551764b045fdc02df754157473125edf60Kevin Tang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1834ee09551764b045fdc02df754157473125edf60Kevin Tang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
1934ee09551764b045fdc02df754157473125edf60Kevin Tang * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
2034ee09551764b045fdc02df754157473125edf60Kevin Tang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2134ee09551764b045fdc02df754157473125edf60Kevin Tang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2234ee09551764b045fdc02df754157473125edf60Kevin Tang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2334ee09551764b045fdc02df754157473125edf60Kevin Tang * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2434ee09551764b045fdc02df754157473125edf60Kevin Tang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2534ee09551764b045fdc02df754157473125edf60Kevin Tang * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2634ee09551764b045fdc02df754157473125edf60Kevin Tang * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2734ee09551764b045fdc02df754157473125edf60Kevin Tang */
2834ee09551764b045fdc02df754157473125edf60Kevin Tang
2934ee09551764b045fdc02df754157473125edf60Kevin Tang#ifndef LOC_API_RPC_GLUE_H
3034ee09551764b045fdc02df754157473125edf60Kevin Tang#define LOC_API_RPC_GLUE_H
3134ee09551764b045fdc02df754157473125edf60Kevin Tang
3234ee09551764b045fdc02df754157473125edf60Kevin Tang/* Include RPC headers */
3334ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef USE_LOCAL_RPC
3434ee09551764b045fdc02df754157473125edf60Kevin Tang#include "rpc_inc/loc_api_common.h"
3534ee09551764b045fdc02df754157473125edf60Kevin Tang#include "rpc_inc/loc_api.h"
3634ee09551764b045fdc02df754157473125edf60Kevin Tang#include "rpc_inc/loc_api_cb.h"
3734ee09551764b045fdc02df754157473125edf60Kevin Tang#endif
3834ee09551764b045fdc02df754157473125edf60Kevin Tang
3934ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef USE_QCOM_AUTO_RPC
4034ee09551764b045fdc02df754157473125edf60Kevin Tang#include "loc_api_rpcgen_rpc.h"
4134ee09551764b045fdc02df754157473125edf60Kevin Tang#include "loc_api_rpcgen_common_rpc.h"
4234ee09551764b045fdc02df754157473125edf60Kevin Tang#include "loc_api_rpcgen_cb_rpc.h"
4334ee09551764b045fdc02df754157473125edf60Kevin Tang#endif
4434ee09551764b045fdc02df754157473125edf60Kevin Tang
4534ee09551764b045fdc02df754157473125edf60Kevin Tang/* Boolean */
4634ee09551764b045fdc02df754157473125edf60Kevin Tang/* Other data types in comdef.h are defined in rpc stubs, so fix it here */
4734ee09551764b045fdc02df754157473125edf60Kevin Tangtypedef unsigned char boolean;
4834ee09551764b045fdc02df754157473125edf60Kevin Tang#define TRUE 1
4934ee09551764b045fdc02df754157473125edf60Kevin Tang#define FALSE 0
5034ee09551764b045fdc02df754157473125edf60Kevin Tang
51e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#include "loc_api_fixup.h"
52e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#include "loc_api_sync_call.h"
5334ee09551764b045fdc02df754157473125edf60Kevin Tang#include <rpc/clnt.h>
5434ee09551764b045fdc02df754157473125edf60Kevin Tang
5534ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef __cplusplus
5634ee09551764b045fdc02df754157473125edf60Kevin Tangextern "C"
5734ee09551764b045fdc02df754157473125edf60Kevin Tang{
5834ee09551764b045fdc02df754157473125edf60Kevin Tang#endif
5934ee09551764b045fdc02df754157473125edf60Kevin Tang
6034ee09551764b045fdc02df754157473125edf60Kevin Tangextern int loc_api_glue_init(void);
6134ee09551764b045fdc02df754157473125edf60Kevin Tangextern int loc_api_null(void);
6234ee09551764b045fdc02df754157473125edf60Kevin Tang
6334ee09551764b045fdc02df754157473125edf60Kevin Tangtypedef int32 (loc_event_cb_f_type)(
6434ee09551764b045fdc02df754157473125edf60Kevin Tang    void*                                 userData,
6534ee09551764b045fdc02df754157473125edf60Kevin Tang    rpc_loc_client_handle_type            loc_handle,             /* handle of the client */
6634ee09551764b045fdc02df754157473125edf60Kevin Tang    rpc_loc_event_mask_type               loc_event,              /* event mask           */
6734ee09551764b045fdc02df754157473125edf60Kevin Tang    const rpc_loc_event_payload_u_type*   loc_event_payload       /* payload              */
6834ee09551764b045fdc02df754157473125edf60Kevin Tang);
6934ee09551764b045fdc02df754157473125edf60Kevin Tang
7034ee09551764b045fdc02df754157473125edf60Kevin Tangtypedef void (loc_reset_notif_cb_f_type)(
7134ee09551764b045fdc02df754157473125edf60Kevin Tang    void*                                 userData,
7234ee09551764b045fdc02df754157473125edf60Kevin Tang    CLIENT*                               clnt,
7334ee09551764b045fdc02df754157473125edf60Kevin Tang    enum rpc_reset_event                  event
7434ee09551764b045fdc02df754157473125edf60Kevin Tang);
7534ee09551764b045fdc02df754157473125edf60Kevin Tang
7634ee09551764b045fdc02df754157473125edf60Kevin Tangextern rpc_loc_client_handle_type loc_open(
7734ee09551764b045fdc02df754157473125edf60Kevin Tang    rpc_loc_event_mask_type       event_reg_mask,
7834ee09551764b045fdc02df754157473125edf60Kevin Tang    loc_event_cb_f_type           *event_callback,
7934ee09551764b045fdc02df754157473125edf60Kevin Tang    loc_reset_notif_cb_f_type     *rpc_global_cb,
8034ee09551764b045fdc02df754157473125edf60Kevin Tang    void*                         userData
8134ee09551764b045fdc02df754157473125edf60Kevin Tang);
8234ee09551764b045fdc02df754157473125edf60Kevin Tang
8334ee09551764b045fdc02df754157473125edf60Kevin Tangextern int32 loc_close
8434ee09551764b045fdc02df754157473125edf60Kevin Tang(
8534ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type handle
8634ee09551764b045fdc02df754157473125edf60Kevin Tang);
8734ee09551764b045fdc02df754157473125edf60Kevin Tang
8834ee09551764b045fdc02df754157473125edf60Kevin Tangextern void loc_clear
8934ee09551764b045fdc02df754157473125edf60Kevin Tang(
9034ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type handle
9134ee09551764b045fdc02df754157473125edf60Kevin Tang);
9234ee09551764b045fdc02df754157473125edf60Kevin Tang
9334ee09551764b045fdc02df754157473125edf60Kevin Tangextern int32 loc_start_fix
9434ee09551764b045fdc02df754157473125edf60Kevin Tang(
9534ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type handle
9634ee09551764b045fdc02df754157473125edf60Kevin Tang);
9734ee09551764b045fdc02df754157473125edf60Kevin Tang
9834ee09551764b045fdc02df754157473125edf60Kevin Tangextern int32 loc_stop_fix
9934ee09551764b045fdc02df754157473125edf60Kevin Tang(
10034ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type handle
10134ee09551764b045fdc02df754157473125edf60Kevin Tang);
10234ee09551764b045fdc02df754157473125edf60Kevin Tang
10334ee09551764b045fdc02df754157473125edf60Kevin Tangextern int32 loc_ioctl
10434ee09551764b045fdc02df754157473125edf60Kevin Tang(
10534ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type           handle,
10634ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_ioctl_e_type                 ioctl_type,
10734ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_ioctl_data_u_type*           ioctl_data
10834ee09551764b045fdc02df754157473125edf60Kevin Tang);
10934ee09551764b045fdc02df754157473125edf60Kevin Tang
11034ee09551764b045fdc02df754157473125edf60Kevin Tangextern int loc_eng_ioctl
11134ee09551764b045fdc02df754157473125edf60Kevin Tang(
11234ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_client_handle_type           handle,
11334ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_ioctl_e_type                 ioctl_type,
11434ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_ioctl_data_u_type*           ioctl_data_ptr,
11534ee09551764b045fdc02df754157473125edf60Kevin Tang      uint32                               timeout_msec,
11634ee09551764b045fdc02df754157473125edf60Kevin Tang      rpc_loc_ioctl_callback_s_type       *cb_data_ptr
11734ee09551764b045fdc02df754157473125edf60Kevin Tang);
11834ee09551764b045fdc02df754157473125edf60Kevin Tang
11934ee09551764b045fdc02df754157473125edf60Kevin Tang#ifdef __cplusplus
12034ee09551764b045fdc02df754157473125edf60Kevin Tang}
12134ee09551764b045fdc02df754157473125edf60Kevin Tang#endif
12234ee09551764b045fdc02df754157473125edf60Kevin Tang
12334ee09551764b045fdc02df754157473125edf60Kevin Tang#endif /* LOC_API_RPC_GLUE_H */
124