Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / samples / android / sample_service / src / org / iotivity / ca / service / MainActivity.java
1 package org.iotivity.ca.service;
2
3 import android.app.Activity;
4 import android.app.AlertDialog;
5 import android.content.DialogInterface;
6 import android.os.Bundle;
7 import android.os.Handler;
8 import android.util.Log;
9 import android.view.Menu;
10 import android.view.MenuItem;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 import android.widget.EditText;
15 import android.widget.RelativeLayout;
16 import android.widget.TextView;
17
18 import org.iotivity.ca.sample_service.R;
19
20 public class MainActivity extends Activity {
21
22     static RMInterface RM = new RMInterface();
23
24     private final static String TAG = "Sample_Service : MainActivity";
25
26     private final CharSequence[] mNetworkCheckBoxItems = { Network.IP.name(),
27             Network.LE.name(), Network.EDR.name()};
28
29     private final CharSequence[] mDTLSCheckBoxItems = { DTLS.UNSECURED.name(),
30             DTLS.SECURED.name() };
31
32     private final CharSequence[] mMsgTyleCheckBoxItems = { MsgType.CON.name(),
33             MsgType.NON.name(), MsgType.ACK.name(), MsgType.RESET.name() };
34
35     private final CharSequence[] mResponseResultCheckBoxItems = {
36             ResponseResult.CA_SUCCESS.name(), ResponseResult.CA_CREATED.name(),
37             ResponseResult.CA_DELETED.name(), ResponseResult.CA_VALID.name(),
38             ResponseResult.CA_CHANGED.name(), ResponseResult.CA_CONTENT.name(),
39             ResponseResult.CA_EMPTY.name(), ResponseResult.CA_BAD_REQ.name(),
40             ResponseResult.CA_BAD_OPT.name(), ResponseResult.CA_NOT_FOUND.name(),
41             ResponseResult.CA_INTERNAL_SERVER_ERROR.name(),
42             ResponseResult.CA_RETRANSMIT_TIMEOUT.name() };
43
44     private enum Mode {
45         SERVER, CLIENT, BOTH, UNKNOWN
46     };
47
48     private enum Network {
49         IP, LE, EDR
50     };
51
52     private enum DTLS {
53         UNSECURED, SECURED
54     };
55
56     private enum MsgType {
57         CON, NON, ACK, RESET
58     };
59
60     private enum ResponseResult {
61         CA_SUCCESS, CA_CREATED, CA_DELETED, CA_VALID, CA_CHANGED, CA_CONTENT, CA_EMPTY,
62         CA_BAD_REQ, CA_BAD_OPT, CA_NOT_FOUND, CA_INTERNAL_SERVER_ERROR, CA_RETRANSMIT_TIMEOUT
63     }
64
65     private boolean mCheckedItems[] = {
66             false, false, false, false
67     };
68
69     private int mSelectedItems[] = { 0, 0, 0 };
70
71     private int mUnSelectedItems[] = { 0, 0, 0 };
72
73     private Mode mCurrentMode = Mode.UNKNOWN;
74
75     private RelativeLayout mSendNotificationLayout = null;
76
77     private RelativeLayout mSendRequestLayout = null;
78
79     private RelativeLayout mSendRequestToAllLayout = null;
80
81     private RelativeLayout mSendRequestSettingLayout = null;
82
83     private RelativeLayout mSendRequestToAllSettingLayout = null;
84
85     private RelativeLayout mSendResponseNotiSettingLayout = null;
86
87     private RelativeLayout mReceiveLayout = null;
88
89     private RelativeLayout mRequestTitleLayout = null;
90
91     private RelativeLayout mRequestToAllTitleLayout = null;
92
93     private RelativeLayout mResponseNotificationTitleLayout = null;
94
95     private RelativeLayout mHandleTitleLayout = null;
96
97     private TextView mMode_tv = null;
98
99     private TextView mNetwork_tv = null;
100
101     private EditText mNotification_ed = null;
102
103     private EditText mReqData_ed = null;
104
105     private EditText mReqToAllData_ed = null;
106
107     private Button mNotify_btn = null;
108
109     private Button mReqeust_btn = null;
110
111     private Button mReqeust_setting_btn = null;
112
113     private Button mReqeustToAll_btn = null;
114
115     private Button mReqeustToAll_setting_btn = null;
116
117     private Button mResponse_Notify_setting_btn = null;
118
119     private Button mResponse_btn = null;
120
121     private Button mGetNetworkInfo_btn = null;
122
123     private Button mRecv_btn = null;
124
125     private Handler mLogHandler = null;
126
127     /**
128      * Defined ConnectivityType in cacommon.c
129      *
130      * CA_IP = (1 << 0) CA_LE = (1 << 2) CA_EDR = (1 << 3)
131      */
132     private int CA_IP = (1 << 0);
133     private int CA_LE = (1 << 1);
134     private int CA_EDR = (1 << 2);
135     private int isSecured = 0;
136     private int msgType = 1;
137     private int responseValue = 0;
138     private int selectedNetworkType = -1;
139     private int selectedMsgType = 1;
140     private int selectedMsgSecured = 0;
141     private int selectedResponseValue = 0;
142     int selectedNetwork = -1;
143     int interestedNetwork = 0;
144     int uninterestedNetwork = 0;
145     private boolean isSendResponseSetting = false;
146     private boolean isSendRequestToAllSetting = false;
147
148     @Override
149     protected void onCreate(Bundle savedInstanceState) {
150         super.onCreate(savedInstanceState);
151         setContentView(R.layout.activity_main);
152
153         RM.setResponseListener(this);
154
155         mLogHandler = new Handler();
156         TextView logView = (TextView) findViewById(R.id.tv_result);
157         DLog.setTextView(mLogHandler, logView);
158
159         // Initialize UI
160         // common
161         mReceiveLayout = (RelativeLayout) findViewById(R.id.layout_receive);
162
163         // client
164         mSendRequestLayout = (RelativeLayout) findViewById(R.id.layout_request);
165         mSendRequestToAllLayout = (RelativeLayout) findViewById(R.id.layout_request_to_all);
166         mSendRequestSettingLayout = (RelativeLayout)
167                 findViewById(R.id.layout_request_setting_for_client);
168         mSendRequestToAllSettingLayout = (RelativeLayout)
169                 findViewById(R.id.layout_request_to_all_setting_for_client);
170         mRequestTitleLayout = (RelativeLayout) findViewById(R.id.layout_request_title);
171         mRequestToAllTitleLayout = (RelativeLayout) findViewById(R.id.layout_request_to_all_title);
172         mHandleTitleLayout = (RelativeLayout) findViewById(R.id.layout_handle_title);
173
174         // server
175         mSendNotificationLayout = (RelativeLayout) findViewById(R.id.layout_notify);
176         mSendResponseNotiSettingLayout = (RelativeLayout)
177                 findViewById(R.id.layout_request_setting_for_server);
178         mResponseNotificationTitleLayout = (RelativeLayout)
179                 findViewById(R.id.layout_Response_Noti_title);
180
181         mMode_tv = (TextView) findViewById(R.id.tv_mode);
182         mNetwork_tv = (TextView) findViewById(R.id.tv_network);
183
184         mNotification_ed = (EditText) findViewById(R.id.et_notification);
185         mReqData_ed = (EditText) findViewById(R.id.et_req_data);
186         mReqToAllData_ed = (EditText) findViewById(R.id.et_req_to_all_data);
187
188         mResponse_btn = (Button) findViewById(R.id.btn_sendresponse);
189         mNotify_btn = (Button) findViewById(R.id.btn_notify);
190         mReqeust_btn = (Button) findViewById(R.id.btn_Request);
191         mReqeust_setting_btn = (Button) findViewById(R.id.btn_Request_setting_for_client);
192         mReqeustToAll_btn = (Button) findViewById(R.id.btn_request_to_all);
193         mReqeustToAll_setting_btn = (Button)
194                 findViewById(R.id.btn_request_to_all_setting_for_client);
195         mResponse_Notify_setting_btn = (Button) findViewById(R.id.btn_Request_setting_for_server);
196         mGetNetworkInfo_btn = (Button) findViewById(R.id.btn_get_network_info);
197         mRecv_btn = (Button) findViewById(R.id.btn_receive);
198
199         mResponse_btn.setOnClickListener(mSendResponseHandler);
200         mNotify_btn.setOnClickListener(mNotifyHandler);
201         mReqeust_btn.setOnClickListener(mSendRequestHandler);
202         mReqeust_setting_btn.setOnClickListener(mSendRequestSettingHandler);
203         mReqeustToAll_btn.setOnClickListener(mSendRequestToAllHandler);
204         mReqeustToAll_setting_btn.setOnClickListener(mSendRequestToAllSettingHandler);
205         mResponse_Notify_setting_btn
206                 .setOnClickListener(mSendResponseNotiSettingHandler);
207         mRecv_btn.setOnClickListener(mResponseHandler);
208         mGetNetworkInfo_btn.setOnClickListener(mGetNetworkInfoHandler);
209
210         showSelectModeView();
211
212         // Initialize Connectivity Abstraction
213         RM.RMInitialize(getApplicationContext());
214
215         // set handler
216         RM.RMRegisterHandler();
217     }
218
219     private void showSelectModeView() {
220
221         mSendNotificationLayout.setVisibility(View.INVISIBLE);
222         mSendRequestLayout.setVisibility(View.INVISIBLE);
223         mSendRequestToAllLayout.setVisibility(View.INVISIBLE);
224         mSendRequestSettingLayout.setVisibility(View.INVISIBLE);
225         mSendRequestToAllSettingLayout.setVisibility(View.INVISIBLE);
226         mReceiveLayout.setVisibility(View.INVISIBLE);
227         mRequestTitleLayout.setVisibility(View.INVISIBLE);
228         mRequestToAllTitleLayout.setVisibility(View.INVISIBLE);
229         mHandleTitleLayout.setVisibility(View.INVISIBLE);
230         mResponseNotificationTitleLayout.setVisibility(View.INVISIBLE);
231         mSendResponseNotiSettingLayout.setVisibility(View.INVISIBLE);
232
233         mMode_tv.setText("Select Mode (Server or Client)");
234         Log.i(TAG, "Select Mode (Server or Client)");
235     }
236
237     private void showNetworkView() {
238
239         mNetwork_tv.setText("Select Network Type");
240         Log.i(TAG, "Select Network Type");
241     }
242
243     private void showModeView() {
244
245         if (mCurrentMode == Mode.SERVER) {
246
247             mSendNotificationLayout.setVisibility(View.VISIBLE);
248             mSendRequestLayout.setVisibility(View.INVISIBLE);
249             mSendRequestToAllLayout.setVisibility(View.VISIBLE);
250             mSendRequestSettingLayout.setVisibility(View.INVISIBLE);
251             mSendRequestToAllSettingLayout.setVisibility(View.VISIBLE);
252             mReceiveLayout.setVisibility(View.VISIBLE);
253
254             mRequestTitleLayout.setVisibility(View.INVISIBLE);
255             mRequestToAllTitleLayout.setVisibility(View.VISIBLE);
256             mHandleTitleLayout.setVisibility(View.VISIBLE);
257
258             mResponseNotificationTitleLayout.setVisibility(View.VISIBLE);
259             mSendResponseNotiSettingLayout.setVisibility(View.VISIBLE);
260
261             mNetwork_tv.setText("");
262
263         } else if (mCurrentMode == Mode.CLIENT) {
264
265             mSendNotificationLayout.setVisibility(View.INVISIBLE);
266             mSendRequestLayout.setVisibility(View.VISIBLE);
267             mSendRequestToAllLayout.setVisibility(View.VISIBLE);
268             mSendRequestSettingLayout.setVisibility(View.VISIBLE);
269             mSendRequestToAllSettingLayout.setVisibility(View.VISIBLE);
270             mReceiveLayout.setVisibility(View.VISIBLE);
271
272             mRequestTitleLayout.setVisibility(View.VISIBLE);
273             mRequestToAllTitleLayout.setVisibility(View.VISIBLE);
274             mHandleTitleLayout.setVisibility(View.VISIBLE);
275
276             mResponseNotificationTitleLayout.setVisibility(View.INVISIBLE);
277             mSendResponseNotiSettingLayout.setVisibility(View.INVISIBLE);
278
279             mNetwork_tv.setText("");
280         }
281     }
282
283     @Override
284     protected void onDestroy() {
285         super.onDestroy();
286
287         // Terminate Connectivity Abstraction
288         RM.RMTerminate();
289         android.os.Process.killProcess(android.os.Process.myPid());
290     }
291
292     @Override
293     public boolean onCreateOptionsMenu(Menu menu) {
294
295         menu.add(0, 1, Menu.NONE, "Start Server");
296         menu.add(0, 2, Menu.NONE, "Start Client");
297         menu.add(0, 3, Menu.NONE, "Select Network");
298
299         return true;
300     }
301
302     @Override
303     public boolean onOptionsItemSelected(MenuItem item) {
304
305         switch (item.getItemId()) {
306
307         case 1:
308
309             RM.RMStartListeningServer();
310
311             if (interestedNetwork == 0) {
312                 mCurrentMode = Mode.SERVER;
313                 mMode_tv.setText("MODE: " + mCurrentMode.toString());
314                 Log.i(TAG, "MODE: " + mCurrentMode.toString());
315                 showNetworkView();
316
317             } else {
318                 mCurrentMode = Mode.SERVER;
319                 mMode_tv.setText("MODE: " + mCurrentMode.toString());
320                 Log.i(TAG, "MODE: " + mCurrentMode.toString());
321                 showModeView();
322             }
323
324             break;
325
326         case 2:
327
328             RM.RMStartDiscoveryServer();
329
330             if (interestedNetwork == 0) {
331                 mCurrentMode = Mode.CLIENT;
332                 mMode_tv.setText("MODE: " + mCurrentMode.toString());
333                 Log.i(TAG, "MODE: " + mCurrentMode.toString());
334                 showNetworkView();
335
336             } else {
337                 mCurrentMode = Mode.CLIENT;
338                 mMode_tv.setText("MODE: " + mCurrentMode.toString());
339                 Log.i(TAG, "MODE: " + mCurrentMode.toString());
340                 showModeView();
341             }
342
343             break;
344
345         case 3:
346
347             checkInterestedNetwork("Select Network");
348
349             break;
350         }
351
352         return super.onOptionsItemSelected(item);
353     }
354
355     private OnClickListener mSendResponseHandler = new OnClickListener() {
356
357         @Override
358         public void onClick(View v) {
359
360             DLog.v(TAG, "SendResponse click");
361             if ( selectedNetwork != -1) {
362                 RM.RMSendResponse(selectedNetwork, isSecured, msgType, responseValue);
363             }
364             else {
365                 DLog.v(TAG, "Please Select Network Type");
366             }
367         }
368     };
369
370     private OnClickListener mNotifyHandler = new OnClickListener() {
371
372         @Override
373         public void onClick(View v) {
374
375             DLog.v(TAG, "SendNotification click");
376             if ( selectedNetwork != -1) {
377                 RM.RMSendNotification(mNotification_ed.getText().toString(),
378                     null, selectedNetwork, isSecured, msgType, responseValue);
379             }
380             else {
381                 DLog.v(TAG, "Please Select Network Type");
382             }
383         }
384     };
385
386     private OnClickListener mSendRequestHandler = new OnClickListener() {
387
388         @Override
389         public void onClick(View v) {
390
391             DLog.v(TAG, "SendRequest click");
392             if ( selectedNetwork != -1) {
393                 RM.RMSendRequest(mReqData_ed.getText().toString(), null,
394                     selectedNetwork, isSecured, msgType);
395             }
396             else {
397                 DLog.v(TAG, "Please Select Network Type");
398             }
399         }
400     };
401
402     private OnClickListener mSendRequestSettingHandler = new OnClickListener() {
403
404         @Override
405         public void onClick(View v) {
406             checkSendNetworkType("Select Send Network Type");
407         }
408     };
409
410     private OnClickListener mSendRequestToAllHandler = new OnClickListener() {
411
412         @Override
413         public void onClick(View v) {
414
415             DLog.v(TAG, "SendRequestToAll click");
416             if ( selectedNetwork != -1) {
417                 RM.RMSendReqestToAll(mReqToAllData_ed.getText().toString(), selectedNetwork);
418             }
419             else {
420                 DLog.v(TAG, "Please Select Network Type");
421             }
422         }
423     };
424
425     private OnClickListener mSendRequestToAllSettingHandler = new OnClickListener() {
426
427         @Override
428         public void onClick(View v) {
429             isSendRequestToAllSetting = true;
430             checkSendNetworkType("Select Send Network Type");
431         }
432     };
433
434     private OnClickListener mSendResponseNotiSettingHandler = new OnClickListener() {
435
436         @Override
437         public void onClick(View v) {
438             isSendResponseSetting = true;
439             checkSendNetworkType("Select Send Network Type");
440         }
441     };
442
443     private OnClickListener mGetNetworkInfoHandler = new OnClickListener() {
444         @Override
445         public void onClick(View v) {
446
447             RM.RMGetNetworkInfomation();
448         }
449     };
450
451     private OnClickListener mResponseHandler = new OnClickListener() {
452
453         @Override
454         public void onClick(View v) {
455
456             RM.RMHandleRequestResponse();
457         }
458     };
459
460     private void checkInterestedNetwork(String title) {
461
462         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
463         builder.setTitle(title)
464                 .setMultiChoiceItems(mNetworkCheckBoxItems, mCheckedItems,
465                         new DialogInterface.OnMultiChoiceClickListener() {
466
467                             @Override
468                             public void onClick(DialogInterface dialog,
469                                     int which, boolean isChecked) {
470
471                                 if (isChecked) {
472
473                                     mSelectedItems[which] = 1;
474                                     mUnSelectedItems[which] = 0;
475
476                                 } else if (mSelectedItems[which] == 1) {
477
478                                     mSelectedItems[which] = 0;
479                                     mUnSelectedItems[which] = 1;
480                                 }
481                             }
482                         })
483                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
484
485                     @Override
486                     public void onClick(DialogInterface dialog, int which) {
487
488                         interestedNetwork = 0;
489
490                         for (int i = 0; i < mSelectedItems.length; i++) {
491                             if (mSelectedItems[i] == 1) {
492                                 interestedNetwork |= (1 << i);
493                             }
494                         }
495                         if(0 != interestedNetwork)
496                             RM.RMSelectNetwork(interestedNetwork);
497
498                         uninterestedNetwork = 0;
499
500                         for (int i = 0; i < mUnSelectedItems.length; i++) {
501                             if (mUnSelectedItems[i] == 1) {
502                                 uninterestedNetwork |= (1 << i);
503                             }
504                         }
505                         if(0 != uninterestedNetwork)
506                             RM.RMUnSelectNetwork(uninterestedNetwork);
507
508                     }
509                 }).show();
510     }
511
512     private void checkMsgSecured(String title) {
513
514         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
515
516         builder.setTitle(title)
517                 .setSingleChoiceItems(mDTLSCheckBoxItems, selectedMsgSecured,
518                         new DialogInterface.OnClickListener() {
519
520                             @Override
521                             public void onClick(DialogInterface dialog,
522                                     int which) {
523                                 selectedMsgSecured = which;
524                             }
525                         })
526                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
527
528                     @Override
529                     public void onClick(DialogInterface dialog, int which) {
530
531                         if (selectedMsgSecured == DTLS.SECURED.ordinal()) {
532                             isSecured = 1;
533                             DLog.v(TAG, "Send secured message");
534
535                         } else if (selectedMsgSecured == DTLS.UNSECURED.ordinal()) {
536                             isSecured = 0;
537                             DLog.v(TAG, "Send unsecured message");
538                         }
539                         checkMsgType("Select Msg Type");
540                     }
541
542                 }).show();
543     }
544
545     private void checkMsgType(String title) {
546
547         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
548         builder.setTitle(title)
549                 .setSingleChoiceItems(mMsgTyleCheckBoxItems, selectedMsgType,
550                         new DialogInterface.OnClickListener() {
551
552                             @Override
553                             public void onClick(DialogInterface dialog,
554                                     int which) {
555                                 selectedMsgType = which;
556                             }
557                         })
558                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
559
560                     @Override
561                     public void onClick(DialogInterface dialog, int which) {
562
563                         if (selectedMsgType == MsgType.CON.ordinal()) {
564                             msgType = 0;
565                             DLog.v(TAG, "Message Type is CON");
566
567                         } else if (selectedMsgType == MsgType.NON.ordinal()) {
568                             msgType = 1;
569                             DLog.v(TAG, "Message Type is NON");
570                         } else if (selectedMsgType == MsgType.ACK.ordinal()) {
571                             msgType = 2;
572                             DLog.v(TAG, "Message Type is ACK");
573                         } else if (selectedMsgType == MsgType.RESET.ordinal()) {
574                             msgType = 3;
575                             DLog.v(TAG, "Message Type is RESET");
576                             }
577
578                         if (isSendResponseSetting == true && msgType != 3) {
579                             checkResponseResult("Select Value of Response Result");
580                             isSendResponseSetting = false;
581                         }
582                     }
583                 }).show();
584     }
585
586     private void checkResponseResult(String title) {
587
588         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
589         builder.setTitle(title)
590                 .setSingleChoiceItems(mResponseResultCheckBoxItems, selectedResponseValue,
591                         new DialogInterface.OnClickListener() {
592
593                             @Override
594                             public void onClick(DialogInterface dialog,
595                                     int which) {
596                                 selectedResponseValue = which;
597                             }
598                         })
599                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
600
601                     @Override
602                     public void onClick(DialogInterface dialog, int which) {
603
604                         if (selectedResponseValue == ResponseResult.CA_SUCCESS.ordinal()) {
605                             responseValue = 200;
606                             DLog.v(TAG, "Response Value is CA_SUCCESS");
607                         } else if (selectedResponseValue == ResponseResult.CA_CREATED
608                                 .ordinal()) {
609                             responseValue = 201;
610                             DLog.v(TAG, "Response Value is CA_CREATED");
611                         } else if (selectedResponseValue == ResponseResult.CA_DELETED
612                                 .ordinal()) {
613                             responseValue = 202;
614                             DLog.v(TAG, "Response Value is CA_DELETED");
615                         } else if (selectedResponseValue == ResponseResult.CA_VALID
616                                 .ordinal()) {
617                             responseValue = 203;
618                             DLog.v(TAG, "Response Value is CA_VALID");
619                         } else if (selectedResponseValue == ResponseResult.CA_CHANGED
620                                 .ordinal()) {
621                             responseValue = 204;
622                             DLog.v(TAG, "Response Value is CA_CHANGED");
623                         } else if (selectedResponseValue == ResponseResult.CA_CONTENT
624                                 .ordinal()) {
625                             responseValue = 205;
626                             DLog.v(TAG, "Response Value is CA_CONTENT");
627                         } else if (selectedResponseValue == ResponseResult.CA_EMPTY
628                                 .ordinal()) {
629                             responseValue = 0;
630                             DLog.v(TAG, "Response Value is CA_EMPTY");
631                         } else if (selectedResponseValue == ResponseResult.CA_BAD_REQ
632                                 .ordinal()) {
633                             responseValue = 400;
634                             DLog.v(TAG, "Response Value is CA_BAD_REQ");
635                         } else if (selectedResponseValue == ResponseResult.CA_BAD_OPT
636                                 .ordinal()) {
637                             responseValue = 402;
638                             DLog.v(TAG, "Response Value is CA_BAD_OPT");
639                         } else if (selectedResponseValue == ResponseResult.CA_NOT_FOUND
640                                 .ordinal()) {
641                             responseValue = 404;
642                             DLog.v(TAG, "Response Value is CA_NOT_FOUND");
643                         } else if (selectedResponseValue ==
644                                 ResponseResult.CA_INTERNAL_SERVER_ERROR
645                                 .ordinal()) {
646                             responseValue = 500;
647                             DLog.v(TAG, "Response Value is CA_INTERNAL_SERVER_ERROR");
648                         } else if (selectedResponseValue == ResponseResult.CA_RETRANSMIT_TIMEOUT
649                                 .ordinal()) {
650                             responseValue = 504;
651                             DLog.v(TAG, "Response Value is CA_RETRANSMIT_TIMEOUT");
652                         }
653                     }
654                 }).show();
655     }
656
657     private void checkSendNetworkType(String title) {
658         selectedNetworkType = -1;
659         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
660
661         builder.setTitle(title)
662                 .setSingleChoiceItems(mNetworkCheckBoxItems, -1,
663                         new DialogInterface.OnClickListener() {
664
665                             @Override
666                             public void onClick(DialogInterface dialog,
667                                     int which) {
668                                 selectedNetworkType = which;
669                             }
670                         })
671                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
672
673                     @Override
674                     public void onClick(DialogInterface dialog, int which) {
675
676                         if (selectedNetworkType == Network.IP.ordinal()) {
677                             selectedNetwork = CA_IP;
678                             DLog.v(TAG, "Selected Network is CA_IP");
679                         } else if (selectedNetworkType == Network.LE.ordinal()) {
680                             selectedNetwork = CA_LE;
681                             DLog.v(TAG, "Selected Network is LE");
682                         } else if (selectedNetworkType == Network.EDR.ordinal()) {
683                             selectedNetwork = CA_EDR;
684                             DLog.v(TAG, "Selected Network is EDR");
685                         } else {
686                             DLog.v(TAG, "Selected Network is NULL");
687                             selectedNetwork = -1;
688                         }
689
690                         if (isSendRequestToAllSetting != true) {
691                             checkMsgSecured("Select DTLS Type");
692                         }
693                         isSendRequestToAllSetting = false;
694                     }
695                 }).show();
696     }
697
698     public void OnResponseReceived(String subject, String receivedData) {
699         String callbackData = subject + receivedData;
700         DLog.v(TAG, callbackData);
701
702         if (subject.equals(getString(R.string.remote_address))) {
703             StringBuilder sb = new StringBuilder();
704             sb.append(getString(R.string.coap_prefix)).append(receivedData);
705             if (receivedData.contains(".")) { // IP
706                 sb.append(getString(R.string.port_num));
707             }
708             sb.append(getString(R.string.uri));
709             mReqData_ed.setText(sb.toString());
710             mNotification_ed.setText(sb.toString());
711         }
712     }
713 }