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