+ if(gThreadHandle != 0) {
+ pthread_cancel(gThreadHandle);
+ pthread_join(gThreadHandle, NULL);
+ }
+
+ cout << "StopEasySetup OUT" << endl;
+}
+
+void ConnectToTargetAP()
+{
+ if(!gWiFiCBflag){
+ cout << "WiFi Provisioning is needed to be preceded" << endl;
+ return;
+ }
+
+ WiFiConnErrCode ret = WIFI_NO_ERROR;
+ ret = TizenWiFiScanStart();
+ if(ret != WIFI_NO_ERROR){
+ ESSetState(ES_STATE_FAILED_TO_CONNECT_TO_ENROLLER);
+ ESSetErrorCode(ES_ERRCODE_UNKNOWN);
+ cout << "WiFi Scan Error" << endl;
+ return;
+ }
+ else{
+ cout << "WiFi Scan Succss" << endl;
+ }
+
+ ret = TizenWiFiConn(gSSID, gPasswd);
+ if(ret != WIFI_NO_ERROR) {
+ ESSetState(ES_STATE_FAILED_TO_CONNECT_TO_ENROLLER);
+
+ if(ret == WIFI_NOTFOUND_SSID_ERROR) {
+ ESSetErrorCode(ES_ERRCODE_SSID_NOT_FOUND);
+ }
+ else if(ret == WIFI_WRONG_PWD_ERROR) {
+ ESSetErrorCode(ES_ERRCODE_PW_WRONG);
+ }
+ else {
+ ESSetErrorCode(ES_ERRCODE_TIMEOUT);
+ }
+ cout << "WiFi Connection Error" << endl;
+ return;
+ }
+ else {
+ cout << "WIFI Connection Success" << endl;
+ ESSetState(ES_STATE_CONNECTED_TO_ENROLLER);
+ ESSetErrorCode(ES_ERRCODE_NO_ERROR);
+ }
+}
+
+gboolean mainThread(GIOChannel *source, GIOCondition condition, gpointer data)
+{
+ char entered;
+ cin >> entered;
+ cin.ignore(numeric_limits<streamsize>::max(), '\n');
+
+ switch (entered) {
+ case 'Q': // quit
+ case 'q':
+ StopEasySetup();
+ break;
+
+ case 'A': // Enable Security
+ case 'a':
+#ifdef __WITH_DTLS__
+ EnableSecurity();
+#else
+ cout << "Sample is not built with secured mode" << endl;
+#endif
+ PrintMenu();
+ break;
+
+ case 'B': // Init EasySetup
+ case 'b':
+ StartEasySetup();
+ PrintMenu();
+ break;
+
+ case 'C': // Set Device Info
+ case 'c':
+ SetDeviceInfo();
+ PrintMenu();
+ break;
+
+ case 'D': // Start to connect target AP
+ case 'd':
+ ConnectToTargetAP();
+ PrintMenu();
+ break;
+
+ case 'E': // Print Menu
+ case 'e':
+ PrintMenu();
+ break;
+
+ default:
+ cout << "Wrong option" << endl;
+ PrintMenu();
+ break;
+ }
+
+ if(entered == 'q' || entered == 'Q'){
+ g_main_loop_quit(gMainloop);
+ }
+
+ return TRUE;