1e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo/* Copyright (c) 2011-2012, 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_ENG_DATA_SERVER_HANDLER
3034ee09551764b045fdc02df754157473125edf60Kevin Tang#define LOC_ENG_DATA_SERVER_HANDLER
3134ee09551764b045fdc02df754157473125edf60Kevin Tang
3234ee09551764b045fdc02df754157473125edf60Kevin Tang#include <linux/types.h>
3334ee09551764b045fdc02df754157473125edf60Kevin Tang#include <arpa/inet.h>
3434ee09551764b045fdc02df754157473125edf60Kevin Tang
35e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo//for SSID_BUF_SIZE
36e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#include <hardware/gps.h>
37e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo
38e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#ifndef SSID_BUF_SIZE
39e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo    #define SSID_BUF_SIZE (32+1)
40e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo#endif
41e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo
4234ee09551764b045fdc02df754157473125edf60Kevin Tangenum {
4334ee09551764b045fdc02df754157473125edf60Kevin Tang    /* 0x0 - 0xEF is reserved for daemon internal */
4434ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_IF_REQUEST   = 0xF0,
4534ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_IF_RELEASE,
4634ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_RESPONSE,
4734ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_UNBLOCK,
4834ee09551764b045fdc02df754157473125edf60Kevin Tang};
4934ee09551764b045fdc02df754157473125edf60Kevin Tang
5034ee09551764b045fdc02df754157473125edf60Kevin Tangenum {
5134ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_IF_REQUEST_SUCCESS = 0xF0,
5234ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_IF_RELEASE_SUCCESS,
5334ee09551764b045fdc02df754157473125edf60Kevin Tang    GPSONE_LOC_API_IF_FAILURE,
5434ee09551764b045fdc02df754157473125edf60Kevin Tang};
5534ee09551764b045fdc02df754157473125edf60Kevin Tang
5634ee09551764b045fdc02df754157473125edf60Kevin Tang
5734ee09551764b045fdc02df754157473125edf60Kevin Tangstruct ctrl_msg_response {
5834ee09551764b045fdc02df754157473125edf60Kevin Tang    int result;
5934ee09551764b045fdc02df754157473125edf60Kevin Tang};
6034ee09551764b045fdc02df754157473125edf60Kevin Tang
6134ee09551764b045fdc02df754157473125edf60Kevin Tangstruct ctrl_msg_unblock {
6234ee09551764b045fdc02df754157473125edf60Kevin Tang    int reserved;
6334ee09551764b045fdc02df754157473125edf60Kevin Tang};
6434ee09551764b045fdc02df754157473125edf60Kevin Tang
65e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russotypedef enum {
66e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_TYPE_SUPL = 0,
67e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_TYPE_WIFI,
68e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_TYPE_ANY
69e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo} ctrl_if_req_type_e_type;
70e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo
71e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russotypedef enum {
72e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_SENDER_ID_QUIPC = 0,
73e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_SENDER_ID_MSAPM,
74e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_SENDER_ID_MSAPU,
75e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_SENDER_ID_GPSONE_DAEMON,
76e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo  IF_REQUEST_SENDER_ID_MODEM
77e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo} ctrl_if_req_sender_id_e_type;
78e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo
7934ee09551764b045fdc02df754157473125edf60Kevin Tangstruct ctrl_msg_if_request {
80e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo    ctrl_if_req_type_e_type type;
81e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo    ctrl_if_req_sender_id_e_type sender_id;
8234ee09551764b045fdc02df754157473125edf60Kevin Tang    unsigned long ipv4_addr;
8334ee09551764b045fdc02df754157473125edf60Kevin Tang    unsigned char ipv6_addr[16];
84e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo    char ssid[SSID_BUF_SIZE];
85e14a6c846df2ce4bb1847e4250991f7c52fd793dDante Russo    char password[SSID_BUF_SIZE];
8634ee09551764b045fdc02df754157473125edf60Kevin Tang};
8734ee09551764b045fdc02df754157473125edf60Kevin Tang
8834ee09551764b045fdc02df754157473125edf60Kevin Tang/* do not change this structure */
8934ee09551764b045fdc02df754157473125edf60Kevin Tangstruct ctrl_msgbuf {
9034ee09551764b045fdc02df754157473125edf60Kevin Tang    size_t msgsz;
9134ee09551764b045fdc02df754157473125edf60Kevin Tang    uint16_t reserved1;
9234ee09551764b045fdc02df754157473125edf60Kevin Tang    uint32_t reserved2;
9334ee09551764b045fdc02df754157473125edf60Kevin Tang    uint8_t ctrl_type;
9434ee09551764b045fdc02df754157473125edf60Kevin Tang    union {
9534ee09551764b045fdc02df754157473125edf60Kevin Tang        struct ctrl_msg_response   cmsg_response;
9634ee09551764b045fdc02df754157473125edf60Kevin Tang        struct ctrl_msg_unblock    cmsg_unblock;
9734ee09551764b045fdc02df754157473125edf60Kevin Tang        struct ctrl_msg_if_request cmsg_if_request;
9834ee09551764b045fdc02df754157473125edf60Kevin Tang    } cmsg;
9934ee09551764b045fdc02df754157473125edf60Kevin Tang};
10034ee09551764b045fdc02df754157473125edf60Kevin Tang
10134ee09551764b045fdc02df754157473125edf60Kevin Tangextern void* loc_api_handle;
10234ee09551764b045fdc02df754157473125edf60Kevin Tang
10334ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_dmn_conn_loc_api_server_if_request_handler(struct ctrl_msgbuf *pmsg, int len);
10434ee09551764b045fdc02df754157473125edf60Kevin Tangint loc_eng_dmn_conn_loc_api_server_if_release_handler(struct ctrl_msgbuf *pmsg, int len);
10534ee09551764b045fdc02df754157473125edf60Kevin Tang
10634ee09551764b045fdc02df754157473125edf60Kevin Tang#endif /* LOC_ENG_DATA_SERVER_HANDLER */
107