Merge branch 'master' into extended-easysetup
[platform/upstream/iotivity.git] / service / easy-setup / inc / escommon.h
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef ES_COMMON_H_
22 #define ES_COMMON_H_
23
24 #include "ocstack.h"
25 #include "octypes.h"
26
27 #ifdef __cplusplus
28 extern "C"
29 {
30 #endif
31
32 // Defines
33 #define OIC_STRING_MAX_VALUE    100
34 #define IPV4_ADDR_SIZE          16
35 #define IP_PORT                 55555
36
37 /**
38  * @brief Mac address length for BT port
39  */
40 #define NET_MACADDR_SIZE 18
41
42 /**
43  * Attributes used to form a proper easysetup conforming JSON message.
44  */
45 #define OC_RSRVD_ES_PROVSTATUS             "ps"
46 #define OC_RSRVD_ES_LAST_ERRORCODE         "lec"
47 #define OC_RSRVD_ES_LINKS                  "links"
48 #define OC_RSRVD_ES_SUPPORTEDWIFIMODE      "swmt"
49 #define OC_RSRVD_ES_SUPPORTEDWIFIFREQ      "swf"
50 #define OC_RSRVD_ES_SSID                   "tnn"
51 #define OC_RSRVD_ES_CRED                   "cd"
52 #define OC_RSRVD_ES_AUTHTYPE               "wat"
53 #define OC_RSRVD_ES_ENCTYPE                "wet"
54 #define OC_RSRVD_ES_AUTHCODE               "ac"
55 #define OC_RSRVD_ES_AUTHPROVIDER           "apn"
56 #define OC_RSRVD_ES_CISERVER               "cisurl"
57 #define OC_RSRVD_ES_DEVNAME                "dn"
58 #define OC_RSRVD_ES_LANGUAGE               "lang"
59 #define OC_RSRVD_ES_COUNTRY                "ctry"
60
61 /**
62  * Easysetup defined resoruce types and uris.
63  */
64 #define OC_RSRVD_ES_RES_TYPE_PROV         "ocf.wk.prov"
65 #define OC_RSRVD_ES_URI_PROV              "/.well-known/ocf/prov"
66 #define OC_RSRVD_ES_RES_TYPE_WIFI         "ocf.wk.wifi"
67 #define OC_RSRVD_ES_URI_WIFI              "/.well-known/ocf/prov/wifi"
68 #define OC_RSRVD_ES_RES_TYPE_CLOUDSERVER  "ocf.wk.cloudserver"
69 #define OC_RSRVD_ES_URI_CLOUDSERVER       "/.well-known/ocf/prov/cloudserver"
70 #define OC_RSRVD_ES_RES_TYPE_DEVCONF      "ocf.wk.devconf"
71 #define OC_RSRVD_ES_URI_DEVCONF           "/.well-known/ocf/prov/devconf"
72
73 #define NUM_WIFIMODE    10
74 #define MAX_SSIDLEN     33
75 #define MAX_CREDLEN     20
76
77 #define MAX_DEVICELEN   100
78 #define MAX_WEBLINKLEN  100
79
80 typedef enum
81 {
82     WiFi_11A = 0,
83     WiFi_11B,
84     WiFi_11G,
85     WiFi_11N,
86     WiFi_11AC,
87     WiFi_EOF = 999,
88 } WIFI_MODE;
89
90 typedef enum
91 {
92     WiFi_24G = 0,
93     WiFi_5G,
94     WiFi_BOTH
95 } WIFI_FREQ;
96
97 typedef enum
98 {
99     NONE_AUTH = 0,
100     WEP,
101     WPA_PSK,
102     WPA2_PSK
103 } WIFI_AUTHTYPE;
104
105 typedef enum
106 {
107     NONE_ENC = 0,
108     WEP_64,
109     WEP_128,
110     TKIP,
111     AES,
112     TKIP_AES
113 } WIFI_ENCTYPE;
114
115 typedef enum
116 {
117     ES_ERROR = -1,
118     ES_OK = 0,
119     ES_NETWORKFOUND = 1,
120     ES_NETWORKCONNECTED,
121     ES_NETWORKNOTCONNECTED,
122     ES_RESOURCECREATED = 11,
123     ES_RECVREQOFPROVRES = 21,
124     ES_RECVREQOFNETRES,
125     ES_RECVUPDATEOFPROVRES,
126     ES_RECVTRIGGEROFPROVRES,
127     ES_UNAUTHORIZED = 31
128 } ESResult;
129
130 typedef enum
131 {
132     ES_WIFI_RESOURCE = 0x01,
133     ES_CLOUD_RESOURCE = 0x02,
134     ES_DEVCONF_RESOURCE = 0x04
135 } ESResourceMask;
136
137 typedef struct
138 {
139     char ssid[MAX_SSIDLEN]; /**< ssid of the Enroller**/
140     char pwd[MAX_CREDLEN]; /**< pwd of the Enroller**/
141     WIFI_AUTHTYPE authtype; /**< auth type of the Enroller**/
142     WIFI_ENCTYPE enctype; /**< encryption type of the Enroller**/
143 } ESWiFiProvData;
144
145 typedef struct
146 {
147     char language[OIC_STRING_MAX_VALUE];
148     char country[OIC_STRING_MAX_VALUE];
149 } ESDevConfProvData;
150
151 typedef struct
152 {
153     char authCode[OIC_STRING_MAX_VALUE];
154     char authProvider[OIC_STRING_MAX_VALUE];
155     char ciServer[OIC_STRING_MAX_VALUE];
156 } ESCloudProvData;
157
158 typedef struct
159 {
160     struct
161     {
162         WIFI_MODE mode[NUM_WIFIMODE];
163         WIFI_FREQ freq;
164     } WiFi;
165     struct
166     {
167         char deviceName[MAX_DEVICELEN];
168     } DevConf;
169 } ESDeviceProperty;
170
171 typedef enum
172 {
173     /**
174      * Default state of the device
175      */
176     ES_STATE_INIT = 0,
177
178     /**
179     * Status indicating being cnnecting to target network
180     */
181     ES_STATE_CONNECTING_TO_ENROLLER,
182
183     /**
184     * Status indicating successful conection to target network
185     */
186     ES_STATE_CONNECTED_TO_ENROLLER,
187
188     /**
189     * Status indicating failure connection to target network
190     */
191     ES_STATE_CONNECTED_FAIL_TO_ENROLLER,
192
193     /**
194     * Status indicating successful registration to cloud
195     */
196     ES_STATE_REGISTERED_TO_CLOUD,
197
198     /**
199     * Status indicating failure registeration to cloud
200     */
201     ES_STATE_REGISTRRED_FAIL_TO_CLOUD
202 } ESEnrolleeState, ProvStatus;
203
204 typedef enum
205 {
206     /**
207      * Init Error Code
208      */
209     ES_ERRCODE_NO_ERROR = 0,
210
211     /**
212     * Error Code that given WiFi's SSID is not found
213     */
214     ES_ERRCODE_SSID_NOT_FOUND,
215
216     /**
217     * Error Code that given WiFi's Password is wrong
218     */
219     ES_ERRCODE_PW_WRONG,
220
221     /**
222     * Error Code that IP address is not allocated
223     */
224     ES_ERRCODE_IP_NOT_ALLOCATED,
225
226     /**
227     * Error Code that there is no Internet connection
228     */
229     ES_ERRCODE_NO_INTERNETCONNECTION,
230
231     /**
232     * Error Code that Timeout occured
233     */
234     ES_ERRCODE_TIMEOUT,
235
236     /**
237     * Error Code that Unknown error occured
238     */
239     ES_ERRCODE_UNKNOWN
240 } ESErrorCode;
241
242 #ifdef __cplusplus
243 }
244 #endif
245
246 #endif //ES_COMMON_H_