2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 /*****************************************************************************
19 *****************************************************************************/
26 /*****************************************************************************
28 *****************************************************************************/
34 /*****************************************************************************
35 * Application Service Platform Daemon headers
36 *****************************************************************************/
37 #include "asp-manager.h"
38 #include "asp-p2p-conn.h"
39 #include "asp-service.h"
42 /*****************************************************************************
44 *****************************************************************************/
46 /*****************************************************************************
48 *****************************************************************************/
50 static asp_p2p_conn_session_request_cb session_request_cb = NULL;
51 static gpointer session_request_cb_user_data = NULL;
52 static asp_p2p_conn_session_config_request_cb session_config_request_cb = NULL;
53 static gpointer session_config_request_cb_user_data = NULL;
54 static asp_p2p_conn_connect_status_cb connect_status_cb = NULL;
55 static gpointer connect_status_cb_user_data = NULL;
56 static asp_p2p_conn_ip_assigned_cb ip_assigned_cb = NULL;
57 static gpointer ip_assigned_cb_user_data = NULL;
59 /*****************************************************************************
60 * Local Functions Definition
61 *****************************************************************************/
63 void asp_p2p_conn_initialize()
65 __ASP_LOG_FUNC_ENTER__;
67 session_request_cb = NULL;
68 session_request_cb_user_data = NULL;
69 session_config_request_cb = NULL;
70 session_config_request_cb_user_data = NULL;
71 connect_status_cb = NULL;
72 connect_status_cb_user_data = NULL;
74 __ASP_LOG_FUNC_EXIT__;
78 void asp_p2p_conn_deinitialize()
80 __ASP_LOG_FUNC_ENTER__;
82 session_request_cb = NULL;
83 session_request_cb_user_data = NULL;
84 session_config_request_cb = NULL;
85 session_config_request_cb_user_data = NULL;
86 connect_status_cb = NULL;
87 connect_status_cb_user_data = NULL;
89 __ASP_LOG_FUNC_EXIT__;
93 void asp_p2p_conn_connect_session(const guint8 *session_mac, guint32 session_id,
94 const guint8 *service_mac,
95 guint32 adv_id, const guint8 *session_info, size_t info_length,
96 guint8 network_role, guint8 network_config)
98 __ASP_LOG_FUNC_ENTER__;
99 asp_tech_session_request_params_s params = {{0, } };
102 /* Make connect parameter for session request */
103 memcpy(params.session_mac, session_mac, MAC_LEN);
104 params.session_id = session_id;
105 memcpy(params.service_mac, service_mac, MAC_LEN);
106 params.advertisement_id = adv_id;
107 params.network_role = network_role;
108 params.network_config = network_config;
109 if (info_length != 0) {
110 params.session_information = g_try_malloc0(info_length + 1);
111 if (params.session_information)
112 memcpy(params.session_information, session_info, info_length);
115 res = asp_tech_connect_session(ASP_TECH_P2P, ¶ms);
116 if (res != 0 && connect_status_cb) {
117 ASP_LOGE("request connect is failed");
118 /* TODO: assign proper error code and connect status. */
119 connect_status_cb(0, session_mac, session_id,
120 ASP_SESSION_CONNECT_STATUS_NETWORK_ROLE_REJECTED,
121 connect_status_cb_user_data);
123 g_free(params.session_information);
125 __ASP_LOG_FUNC_EXIT__;
129 void asp_p2p_conn_confirm_session(const guint8 *session_mac, guint32 session_id,
130 gboolean confirmed, guint32 network_config_pin)
132 __ASP_LOG_FUNC_ENTER__;
135 res = asp_tech_confirm_session(ASP_TECH_P2P, session_mac,
136 session_id, confirmed, network_config_pin);
138 ASP_LOGE("confirm session is failed");
142 __ASP_LOG_FUNC_EXIT__;
146 void asp_p2p_conn_disconnect_p2p(const guint8 *peer_mac)
148 __ASP_LOG_FUNC_ENTER__;
149 guint8 mac[MAC_LEN] = {0, };
152 memcpy(mac, peer_mac, MAC_LEN);
153 res = asp_tech_destroy_connection(ASP_TECH_P2P, mac, MAC_LEN);
155 ASP_LOGE("asp_tech_destroy_connection is failed");
159 __ASP_LOG_FUNC_EXIT__;
163 gboolean asp_p2p_conn_peer_is_connected(const guint8 *peer_mac)
165 __ASP_LOG_FUNC_ENTER__;
166 gint32 is_peer_connected = 0;
167 gboolean is_connected = 0;
168 guint8 mac[MAC_LEN] = {0, };
171 memcpy(mac, peer_mac, MAC_LEN);
172 res = asp_tech_is_peer_connected(ASP_TECH_P2P, mac,
173 MAC_LEN, &is_peer_connected);
175 ASP_LOGE("asp_tech_is_peer_connected is failed");
179 is_connected = is_peer_connected;
180 __ASP_LOG_FUNC_EXIT__;
184 void asp_p2p_conn_set_session_request_cb(asp_p2p_conn_session_request_cb cb,
187 __ASP_LOG_FUNC_ENTER__;
189 session_request_cb = cb;
190 session_request_cb_user_data = user_data;
192 asp_tech_set_session_request_cb(ASP_TECH_P2P, cb, user_data);
194 __ASP_LOG_FUNC_EXIT__;
198 void asp_p2p_conn_set_session_config_request_cb(
199 asp_p2p_conn_session_config_request_cb cb, gpointer user_data)
201 __ASP_LOG_FUNC_ENTER__;
203 session_config_request_cb = cb;
204 session_config_request_cb_user_data = user_data;
206 asp_tech_set_session_config_request_cb(ASP_TECH_P2P, cb, user_data);
208 __ASP_LOG_FUNC_EXIT__;
212 void asp_p2p_conn_set_connect_status_cb(asp_p2p_conn_connect_status_cb cb,
215 __ASP_LOG_FUNC_ENTER__;
217 connect_status_cb = cb;
218 connect_status_cb_user_data = user_data;
220 asp_tech_set_connect_status_cb(ASP_TECH_P2P, cb, user_data);
222 __ASP_LOG_FUNC_EXIT__;
226 void asp_p2p_conn_set_ip_assigned_cb(asp_p2p_conn_ip_assigned_cb cb,
229 __ASP_LOG_FUNC_ENTER__;
232 ip_assigned_cb_user_data = user_data;
234 asp_tech_set_ip_assigned_cb(ASP_TECH_P2P, cb, user_data);
236 __ASP_LOG_FUNC_EXIT__;
240 void asp_p2p_conn_get_p2p_mac(gchar *my_p2p_mac)
242 __ASP_LOG_FUNC_ENTER__;
244 asp_s *asp = asp_get_manager();
246 ASP_LOGE("memory allocation for asp-manager is failed");
250 memcpy(my_p2p_mac, asp->p2p_local_address, MAC_LEN);
252 __ASP_LOG_FUNC_EXIT__;