summaryrefslogtreecommitdiffstats
path: root/wifi-connman.h
blob: bd83821c07e919728fd80871eed1b1c792c66e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
*
*   Licensed under the Apache License, Version 2.0 (the "License");
*   you may not use this file except in compliance with the License.
*   You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software
*   distributed under the License is distributed on an "AS IS" BASIS,
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*   See the License for the specific language governing permissions and
*   limitations under the License.
*/

//#include <dlog.h>
#include <glib.h>
#include <stdlib.h>
#include <gio/gio.h>
#include <glib-object.h>

#ifdef __cplusplus
extern "C" {
#endif

/** Maximum Profile Count */
#define CONNMAN_MAX_BUFLEN 512

#define CONNMAN_STATE_STRLEN 16

#define CONNMAN_SERVICE                 "net.connman"
#define CONNMAN_MANAGER_INTERFACE		CONNMAN_SERVICE ".Manager"
#define CONNMAN_TECHNOLOGY_INTERFACE	CONNMAN_SERVICE ".Technology"
#define CONNMAN_SERVICE_INTERFACE		CONNMAN_SERVICE ".Service"
#define CONNMAN_PROFILE_INTERFACE		CONNMAN_SERVICE ".Profile"
#define CONNMAN_COUNTER_INTERFACE		CONNMAN_SERVICE ".Counter"
#define CONNMAN_ERROR_INTERFACE			CONNMAN_SERVICE ".Error"
#define CONNMAN_AGENT_INTERFACE			CONNMAN_SERVICE ".Agent"

#define CONNMAN_MANAGER_PATH			"/"
#define CONNMAN_PATH					"/net/connman"
#define CONNMAN_TECHNOLOGY_PATH			"/net/connman/technology/wifi"

/** ConnMan technology and profile prefixes for ConnMan 0.78 */

#define CONNMAN_WIFI_TECHNOLOGY_PREFIX			CONNMAN_PATH "/technology/wifi"
#define CONNMAN_WIFI_SERVICE_PROFILE_PREFIX		CONNMAN_PATH "/service/wifi_"

#define WIFI_ESSID_LEN						128
#define WIFI_MAX_WPSPIN_LEN					8
#define WIFI_BSSID_LEN						17
#define WIFI_MAX_PSK_PASSPHRASE_LEN			65
#define WIFI_MAX_WEP_KEY_LEN				26

#define AGENT_PATH "/net/connman/Agent"
#define AGENT_SERVICE "org.agent"

#define DBUS_REPLY_TIMEOUT (120 * 1000)
#define DBUS_REPLY_TIMEOUT_SHORT (10 * 1000)


struct gdbus_connection_data_s{
	GDBusConnection *connection;
	int conn_ref_count;
	GCancellable *cancellable;
	void *handle_libnetwork;
};


struct wifiStatus {
	unsigned int state;
	unsigned int connected;
};

struct security_profile{
	char *sec_type;
	char *enc_type;
	char *wepKey;
	char *pskKey;
	unsigned int PassphraseRequired;
	unsigned int wps_support;
};

struct wifi_net{
	char *method;
	char *IPaddress;
	char *netmask;
};

struct wifi_profile_info{
	char *ESSID;
	char *NetworkPath;
	char *state;
	unsigned int Strength;
	struct security_profile Security;
	struct wifi_net wifiNetwork;
};

//typedef void(*callback)(void);
typedef void(*callback)(int password_rejected_flag);
void register_callback(callback ptr);


int extract_values(GVariantIter *content, struct wifi_profile_info* wifiProfile);
int wifi_state(struct wifiStatus *status);
GError* do_wifiActivate();
GError*  do_wifiDeactivate();
GError* do_wifiScan();
GError* do_displayScan(GSList **wifi_list);
GError* do_connectNetwork(gchar *object);
GError* do_disconnectNetwork(gchar *object);

GError* create_agent(GDBusConnection *connection);
GError* stop_agent(GDBusConnection *connection);


void registerPasskey(gchar *object);
GError* sendPasskey(gchar *object);

GError* do_initialize();
GError* do_initialize();