18c2d3d5afc51d3f35150f748f263870367771b6fEd Tam/* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved. 28c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 38c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * Redistribution and use in source and binary forms, with or without 48c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * modification, are permitted provided that the following conditions are 58c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * met: 68c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Redistributions of source code must retain the above copyright 78c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * notice, this list of conditions and the following disclaimer. 88c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Redistributions in binary form must reproduce the above 98c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * copyright notice, this list of conditions and the following 108c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * disclaimer in the documentation and/or other materials provided 118c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * with the distribution. 128c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * * Neither the name of The Linux Foundation, nor the names of its 138c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * contributors may be used to endorse or promote products derived 148c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * from this software without specific prior written permission. 158c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 168c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 178c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 188c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 198c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 208c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 218c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 228c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 238c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 248c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 258c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 268c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278c2d3d5afc51d3f35150f748f263870367771b6fEd Tam * 288c2d3d5afc51d3f35150f748f263870367771b6fEd Tam */ 298c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifndef LOC_ENG_DATA_SERVER_HANDLER 308c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#define LOC_ENG_DATA_SERVER_HANDLER 318c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 328c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <linux/types.h> 338c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <arpa/inet.h> 348c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 358c2d3d5afc51d3f35150f748f263870367771b6fEd Tam//for SSID_BUF_SIZE 368c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#include <hardware/gps.h> 378c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 388c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#ifndef SSID_BUF_SIZE 398c2d3d5afc51d3f35150f748f263870367771b6fEd Tam #define SSID_BUF_SIZE (32+1) 408c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif 418c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 428c2d3d5afc51d3f35150f748f263870367771b6fEd Tamenum { 438c2d3d5afc51d3f35150f748f263870367771b6fEd Tam /* 0x0 - 0xEF is reserved for daemon internal */ 448c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_IF_REQUEST = 0xF0, 458c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_IF_RELEASE, 468c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_RESPONSE, 478c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_UNBLOCK, 488c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 498c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 508c2d3d5afc51d3f35150f748f263870367771b6fEd Tamenum { 518c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_IF_REQUEST_SUCCESS = 0xF0, 528c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_IF_RELEASE_SUCCESS, 538c2d3d5afc51d3f35150f748f263870367771b6fEd Tam GPSONE_LOC_API_IF_FAILURE, 548c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 558c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 568c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 578c2d3d5afc51d3f35150f748f263870367771b6fEd Tamstruct ctrl_msg_response { 588c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int result; 598c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 608c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 618c2d3d5afc51d3f35150f748f263870367771b6fEd Tamstruct ctrl_msg_unblock { 628c2d3d5afc51d3f35150f748f263870367771b6fEd Tam int reserved; 638c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 648c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 658c2d3d5afc51d3f35150f748f263870367771b6fEd Tamtypedef enum { 668c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_TYPE_SUPL = 0, 678c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_TYPE_WIFI, 688c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_TYPE_ANY 698c2d3d5afc51d3f35150f748f263870367771b6fEd Tam} ctrl_if_req_type_e_type; 708c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 718c2d3d5afc51d3f35150f748f263870367771b6fEd Tamtypedef enum { 728c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_SENDER_ID_QUIPC = 0, 738c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_SENDER_ID_MSAPM, 748c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_SENDER_ID_MSAPU, 758c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_SENDER_ID_GPSONE_DAEMON, 768c2d3d5afc51d3f35150f748f263870367771b6fEd Tam IF_REQUEST_SENDER_ID_MODEM 778c2d3d5afc51d3f35150f748f263870367771b6fEd Tam} ctrl_if_req_sender_id_e_type; 788c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 798c2d3d5afc51d3f35150f748f263870367771b6fEd Tamstruct ctrl_msg_if_request { 808c2d3d5afc51d3f35150f748f263870367771b6fEd Tam ctrl_if_req_type_e_type type; 818c2d3d5afc51d3f35150f748f263870367771b6fEd Tam ctrl_if_req_sender_id_e_type sender_id; 828c2d3d5afc51d3f35150f748f263870367771b6fEd Tam unsigned long ipv4_addr; 838c2d3d5afc51d3f35150f748f263870367771b6fEd Tam unsigned char ipv6_addr[16]; 848c2d3d5afc51d3f35150f748f263870367771b6fEd Tam char ssid[SSID_BUF_SIZE]; 858c2d3d5afc51d3f35150f748f263870367771b6fEd Tam char password[SSID_BUF_SIZE]; 868c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 878c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 888c2d3d5afc51d3f35150f748f263870367771b6fEd Tam/* do not change this structure */ 898c2d3d5afc51d3f35150f748f263870367771b6fEd Tamstruct ctrl_msgbuf { 908c2d3d5afc51d3f35150f748f263870367771b6fEd Tam size_t msgsz; 918c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint16_t reserved1; 928c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint32_t reserved2; 938c2d3d5afc51d3f35150f748f263870367771b6fEd Tam uint8_t ctrl_type; 948c2d3d5afc51d3f35150f748f263870367771b6fEd Tam union { 958c2d3d5afc51d3f35150f748f263870367771b6fEd Tam struct ctrl_msg_response cmsg_response; 968c2d3d5afc51d3f35150f748f263870367771b6fEd Tam struct ctrl_msg_unblock cmsg_unblock; 978c2d3d5afc51d3f35150f748f263870367771b6fEd Tam struct ctrl_msg_if_request cmsg_if_request; 988c2d3d5afc51d3f35150f748f263870367771b6fEd Tam } cmsg; 998c2d3d5afc51d3f35150f748f263870367771b6fEd Tam}; 1008c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 1018c2d3d5afc51d3f35150f748f263870367771b6fEd Tamextern void* loc_api_handle; 1028c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 1038c2d3d5afc51d3f35150f748f263870367771b6fEd Tamint loc_eng_dmn_conn_loc_api_server_if_request_handler(struct ctrl_msgbuf *pmsg, int len); 1048c2d3d5afc51d3f35150f748f263870367771b6fEd Tamint loc_eng_dmn_conn_loc_api_server_if_release_handler(struct ctrl_msgbuf *pmsg, int len); 1058c2d3d5afc51d3f35150f748f263870367771b6fEd Tam 1068c2d3d5afc51d3f35150f748f263870367771b6fEd Tam#endif /* LOC_ENG_DATA_SERVER_HANDLER */ 107