2 * Network Configuration Module
4 * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 * This file implements wifi direct manager Application Service Platform(ASP) functions.
23 * @file wifi-direct-asp.c
24 * @author Jiung Yu (jiung.yu@samsung.com)
32 #include <wifi-direct.h>
34 #include "wifi-direct-ipc.h"
35 #include "wifi-direct-dbus.h"
36 #include "wifi-direct-log.h"
37 #include "wifi-direct-manager.h"
38 #include "wifi-direct-oem.h"
39 #include "wifi-direct-util.h"
41 #include "wifi-direct-asp.h"
43 void wfd_asp_session_request(wfd_oem_asp_prov_s *prov_param)
45 GVariantBuilder *builder = NULL;
46 GVariant *parameter = NULL;
47 GVariant *get_pin = NULL;
49 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
50 g_variant_builder_add(builder, "{sv}",
52 g_variant_new_uint32(prov_param->adv_id));
53 g_variant_builder_add(builder, "{sv}",
55 wfd_manager_dbus_pack_ay(prov_param->session_mac, MACADDR_LEN));
56 g_variant_builder_add(builder, "{sv}",
58 g_variant_new_uint32(prov_param->session_id));
60 if (prov_param->network_config == WFD_WPS_MODE_KEYPAD)
61 get_pin = g_variant_new_boolean(TRUE);
63 get_pin = g_variant_new_boolean(FALSE);
64 g_variant_builder_add(builder, "{sv}",
68 if (prov_param->wps_pin[0])
69 g_variant_builder_add(builder, "{sv}",
71 g_variant_new_string(prov_param->wps_pin));
72 parameter = g_variant_new("(a{sv})", builder);
73 g_variant_builder_unref(builder);
75 wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE, "SessionRequest", parameter);
79 void wfd_asp_session_config_request(unsigned int session_id, int get_pin, char *pin)
81 GVariantBuilder *builder = NULL;
82 GVariant *parameter = NULL;
84 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
85 g_variant_builder_add(builder, "{sv}",
87 g_variant_new_uint32(session_id));
88 g_variant_builder_add(builder, "{sv}",
90 g_variant_new_int32(get_pin));
92 g_variant_builder_add(builder, "{sv}",
94 g_variant_new_string(pin));
95 parameter = g_variant_new("(a{sv})", builder);
96 g_variant_builder_unref(builder);
98 wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE, "SessionConfigRequest", parameter);
102 void wfd_asp_connect_status(unsigned char *session_mac,
103 unsigned int session_id, int status, char *deferred)
105 GVariantBuilder *builder = NULL;
106 GVariant *parameter = NULL;
108 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
109 g_variant_builder_add(builder, "{sv}",
111 wfd_manager_dbus_pack_ay(session_mac, MACADDR_LEN));
112 g_variant_builder_add(builder, "{sv}",
114 g_variant_new_uint32(session_id));
115 g_variant_builder_add(builder, "{sv}",
117 g_variant_new_int32(status));
119 g_variant_builder_add(builder, "{sv}",
121 g_variant_new_string(deferred));
122 parameter = g_variant_new("(a{sv})", builder);
123 g_variant_builder_unref(builder);
125 wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE, "ConnectStatus", parameter);
129 void wfd_asp_session_peer_ip(unsigned char *session_mac,
130 unsigned int session_id, unsigned char *service_mac,
131 unsigned char *session_ip)
133 GVariantBuilder *builder = NULL;
134 GVariant *parameter = NULL;
135 char assigned_ip_address[IPSTR_LEN+1] = {0,};
136 g_snprintf(assigned_ip_address, IPSTR_LEN, IPSTR, IP2STR(session_ip));
138 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
139 g_variant_builder_add(builder, "{sv}",
141 wfd_manager_dbus_pack_ay(session_mac, MACADDR_LEN));
142 g_variant_builder_add(builder, "{sv}",
144 g_variant_new_uint32(session_id));
145 g_variant_builder_add(builder, "{sv}",
147 wfd_manager_dbus_pack_ay(service_mac, MACADDR_LEN));
148 g_variant_builder_add(builder, "{sv}",
149 "assigned_ip_address",
150 g_variant_new_string(assigned_ip_address));
151 parameter = g_variant_new("(a{sv})", builder);
152 g_variant_builder_unref(builder);
154 wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE,
155 "SessionPeerIPAssigned", parameter);