Changed the folder structure and changed the shared library to static library
[iotivity.git] / service / easy-setup / sampleapp / linux / richclient / easysetupsample.cpp
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 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include <signal.h>
25 #include <unistd.h>
26 #include <stdint.h>
27 #include <sstream>
28
29 #include "easysetupmgr.h"
30 #include "logger.h"
31
32 #define TAG "easysetupsample"
33
34 int quitFlag = 0;
35
36 /* SIGINT handler: set quitFlag to 1 for graceful termination */
37 void handleSigInt(int signum) {
38     if (signum == SIGINT) {
39         quitFlag = 1;
40     }
41 }
42
43 /**
44  * This callback function is used to receive the notifications about the provisioning status
45  * In success or failure, ProvisioningInfo structure holds the current state of provisioning
46  * and also holds the Enrollee information for which provisioning is requested
47  * This function can be used to update the application about the current provisioning status of the Enrollee
48  */
49 void ProvisioningStatusCallback(ProvisioningInfo provInfo) {
50     OIC_LOG_V(INFO, TAG, "Enrollee connectivity: %d", provInfo.provDeviceInfo.connType);
51     if(provInfo.provStatus == DEVICE_PROVISIONED)
52     {
53         OIC_LOG_V(INFO, TAG, "Successfully provisioned the Enrollee with IP : %d.%d.%d.%d ",
54             provInfo.provDeviceInfo.addr->addr[0],
55             provInfo.provDeviceInfo.addr->addr[1],
56             provInfo.provDeviceInfo.addr->addr[2],
57             provInfo.provDeviceInfo.addr->addr[3]);
58     }
59     else{
60         OIC_LOG_V(INFO, TAG, "Provisioing Failed for the Enrollee with IP : %d.%d.%d.%d ",
61             provInfo.provDeviceInfo.addr->addr[0],
62             provInfo.provDeviceInfo.addr->addr[1],
63             provInfo.provDeviceInfo.addr->addr[2],
64             provInfo.provDeviceInfo.addr->addr[3]);
65     }
66 }
67
68 static void PrintUsage()
69 {
70     OIC_LOG(INFO, TAG, "Usage : occlient -d \"192.168.0.20\"");
71 }
72
73
74 int main (int argc, char**argv) {
75     int opt;
76     EnrolleeNWProvInfo_t netInfo;
77     PrintUsage();
78     InitEasySetupManager();
79
80     RegisterProvisioningStausCallback(ProvisioningStatusCallback);
81
82     while ((opt = getopt(argc, argv, "d:s:p:")) != -1)
83     {
84         switch(opt)
85         {
86             case 'd':
87                 strncpy(netInfo.netAddressInfo.WIFI.ipAddress, optarg, IPV4_ADDR_SIZE);
88                 break;
89             case 's':
90                 strncpy(netInfo.netAddressInfo.WIFI.ssid, optarg, NET_WIFI_SSID_SIZE);
91                 break;
92             case 'p':
93                 strncpy(netInfo.netAddressInfo.WIFI.pwd, optarg, NET_WIFI_PWD_SIZE);
94                 break;
95             default:
96                 PrintUsage();
97                 return -1;
98         }
99     }
100
101     netInfo.connType = OC_IPV4;
102     OIC_LOG_V(INFO, TAG, "IP Address of the Provisioning device is =%s\n",
103                         netInfo.netAddressInfo.WIFI.ipAddress);
104     OIC_LOG_V(INFO, TAG, "SSID of the Enroller is =%s\n",netInfo.netAddressInfo.WIFI.ssid);
105     OIC_LOG_V(INFO, TAG, "Password of the Enroller is =%s\n",netInfo.netAddressInfo.WIFI.pwd);
106
107     ProvisionEnrollee(&netInfo);
108
109     signal(SIGINT, handleSigInt);
110     while (!quitFlag) {
111         sleep(1);
112     }
113     OIC_LOG(INFO, TAG, "Exiting occlient main loop...");
114
115     return 0;
116 }
117