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