1ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/* Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
2ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
3ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * Redistribution and use in source and binary forms, with or without
4ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * modification, are permitted provided that the following conditions are
5ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * met:
6ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Redistributions of source code must retain the above copyright
7ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       notice, this list of conditions and the following disclaimer.
8ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Redistributions in binary form must reproduce the above
9ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       copyright notice, this list of conditions and the following
10ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       disclaimer in the documentation and/or other materials provided
11ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       with the distribution.
12ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Neither the name of The Linux Foundation, nor the names of its
13ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       contributors may be used to endorse or promote products derived
14ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       from this software without specific prior written permission.
15ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
16ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
28ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo */
29ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <stdio.h>
30ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <stdlib.h>
31ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <string.h>
32ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <unistd.h>
33ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
34ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "log_util.h"
35ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "platform_lib_includes.h"
36ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "loc_eng_msg.h"
37ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "loc_eng_dmn_conn.h"
38ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "loc_eng_dmn_conn_handler.h"
39ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
40ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russovoid* loc_api_handle = NULL;
41ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
42ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_loc_api_server_if_request_handler(struct ctrl_msgbuf *pmsg, int len)
43ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
44ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    LOC_LOGD("%s:%d]\n", __func__, __LINE__);
45ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#ifndef DEBUG_DMN_LOC_API
46ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (NULL == loc_api_handle) {
47ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGE("%s:%d] NO agps data handle\n", __func__, __LINE__);
48ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return 1;
49ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
50ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
51ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (NULL != loc_api_handle) {
52ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        AGpsExtType type;
53ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        switch (pmsg->cmsg.cmsg_if_request.type) {
54ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_TYPE_SUPL:
55ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
56ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_TYPE_SUPL");
57ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            type = AGPS_TYPE_SUPL;
58ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
59ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
60ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_TYPE_WIFI:
61ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
62ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_TYPE_WIFI");
63ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            type = AGPS_TYPE_WIFI;
64ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
65ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
66ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_TYPE_ANY:
67ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
68ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_TYPE_ANY");
69ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            type = AGPS_TYPE_ANY;
70ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
71ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
72ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          default:
73ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
74ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("invalid IF_REQUEST_TYPE!");
75ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            return -1;
76ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
77ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        }
78ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        switch (pmsg->cmsg.cmsg_if_request.sender_id) {
79ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_SENDER_ID_QUIPC:
80ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
81ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_SENDER_ID_QUIPC");
82ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LocEngReqRelWifi* msg =
83ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                new LocEngReqRelWifi(loc_api_handle,
84ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     type,
85ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     LOC_ENG_IF_REQUEST_SENDER_ID_QUIPC,
86ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.ssid,
87ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.password,
88ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     true);
89ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            msg->send();
90ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
91ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
92ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_SENDER_ID_MSAPM:
93ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
94ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_SENDER_ID_MSAPM");
95ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LocEngReqRelWifi* msg =
96ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                new LocEngReqRelWifi(loc_api_handle,
97ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     type,
98ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     LOC_ENG_IF_REQUEST_SENDER_ID_MSAPM,
99ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.ssid,
100ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.password,
101ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     true);
102ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            msg->send();
103ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
104ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
105ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_SENDER_ID_MSAPU:
106ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
107ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_SENDER_ID_MSAPU");
108ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LocEngReqRelWifi* msg =
109ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                new LocEngReqRelWifi(loc_api_handle,
110ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     type,
111ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     LOC_ENG_IF_REQUEST_SENDER_ID_MSAPU,
112ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.ssid,
113ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     (char*)pmsg->cmsg.cmsg_if_request.password,
114ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                     true);
115ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            msg->send();
116ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
117ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
118ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          case IF_REQUEST_SENDER_ID_GPSONE_DAEMON:
119ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
120ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("IF_REQUEST_SENDER_ID_GPSONE_DAEMON");
121ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LocEngReqRelBIT* msg =
122ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                new LocEngReqRelBIT(loc_api_handle,
123ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                    type,
124ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                    pmsg->cmsg.cmsg_if_request.ipv4_addr,
125ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                    (char*)pmsg->cmsg.cmsg_if_request.ipv6_addr,
126ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                    true);
127ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            msg->send();
128ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            break;
129ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
130ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          default:
131ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          {
132ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            LOC_LOGD("invalid IF_REQUEST_SENDER_ID!");
133ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            return -1;
134ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo          }
135ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        }
136ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
137ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
138ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#else
139ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   loc_eng_dmn_conn_loc_api_server_data_conn(LOC_ENG_IF_REQUEST_SENDER_ID_GPSONE_DAEMON, GPSONE_LOC_API_IF_REQUEST_SUCCESS);
140ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#endif
141ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return 0;
142ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
143ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
144ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_loc_api_server_if_release_handler(struct ctrl_msgbuf *pmsg, int len)
145ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
146ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    LOC_LOGD("%s:%d]\n", __func__, __LINE__);
147ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#ifndef DEBUG_DMN_LOC_API
148ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    AGpsExtType type;
149ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    switch (pmsg->cmsg.cmsg_if_request.type) {
150ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_TYPE_SUPL:
151ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
152ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_TYPE_SUPL");
153ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        type = AGPS_TYPE_SUPL;
154ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
155ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
156ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_TYPE_WIFI:
157ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
158ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_TYPE_WIFI");
159ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        type = AGPS_TYPE_WIFI;
160ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
161ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
162ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_TYPE_ANY:
163ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
164ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_TYPE_ANY");
165ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        type = AGPS_TYPE_ANY;
166ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
167ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
168ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      default:
169ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
170ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("invalid IF_REQUEST_TYPE!");
171ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
172ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
173ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
174ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    switch (pmsg->cmsg.cmsg_if_request.sender_id) {
175ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_SENDER_ID_QUIPC:
176ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
177ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_SENDER_ID_QUIPC");
178ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LocEngReqRelWifi* msg =
179ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            new LocEngReqRelWifi(loc_api_handle,
180ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 type,
181ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 LOC_ENG_IF_REQUEST_SENDER_ID_QUIPC,
182ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.ssid,
183ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.password,
184ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 false);
185ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        msg->send();
186ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
187ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
188ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_SENDER_ID_MSAPM:
189ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
190ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_SENDER_ID_MSAPM");
191ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LocEngReqRelWifi* msg =
192ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            new LocEngReqRelWifi(loc_api_handle,
193ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 type,
194ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 LOC_ENG_IF_REQUEST_SENDER_ID_MSAPM,
195ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.ssid,
196ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.password,
197ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 false);
198ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        msg->send();
199ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
200ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
201ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_SENDER_ID_MSAPU:
202ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
203ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_SENDER_ID_MSAPU");
204ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LocEngReqRelWifi* msg =
205ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            new LocEngReqRelWifi(loc_api_handle,
206ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 type,
207ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 LOC_ENG_IF_REQUEST_SENDER_ID_MSAPU,
208ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.ssid,
209ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 (char*)pmsg->cmsg.cmsg_if_request.password,
210ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                 false);
211ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        msg->send();
212ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
213ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
214ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      case IF_REQUEST_SENDER_ID_GPSONE_DAEMON:
215ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
216ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("IF_REQUEST_SENDER_ID_GPSONE_DAEMON");
217ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LocEngReqRelBIT* msg =
218ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo            new LocEngReqRelBIT(loc_api_handle,
219ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                type,
220ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                pmsg->cmsg.cmsg_if_request.ipv4_addr,
221ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                (char*)pmsg->cmsg.cmsg_if_request.ipv6_addr,
222ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo                                false);
223ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        msg->send();
224ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        break;
225ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
226ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      default:
227ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      {
228ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("invalid IF_REQUEST_SENDER_ID!");
229ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
230ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo      }
231ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
232ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#else
233ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   loc_eng_dmn_conn_loc_api_server_data_conn(LOC_ENG_IF_REQUEST_SENDER_ID_GPSONE_DAEMON, GPSONE_LOC_API_IF_RELEASE_SUCCESS);
234ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#endif
235ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return 0;
236ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
237ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
238