[Security] Fix PrivacyPrivilegeManager.RequestPermissions crash issue (#1651)
[platform/core/csapi/tizenfx.git] / test / Tizen.Tapitest / NetworkPage.cs
1 using Xamarin.Forms;
2 using Tizen.Tapi;
3 using System;
4 using Tizen;
5 using System.Collections.Generic;
6 using System.Linq;
7 using System.Threading.Tasks;
8
9 namespace XamarinForTizen.Tizen
10 {
11     public class NetworkPage : ContentPage
12     {
13         Network network = null;
14         double height = 62.0;
15         Notification[] arrNoti = { Notification.NetworkCellInfo, Notification.NetworkRegistrationStatus, Notification.NetworkIdentity, Notification.NetworkChange, Notification.NetworkDefaultDataSubscription, Notification.NetworkDefaultSubscription };
16         Property[] arrProp = { Property.NetworkCellId, Property.NetworkSignalLevel, Property.NetworkPsType, Property.NetworkName, Property.NetworkCircuitStatus,
17                                 Property.NetworkNameOption, Property.NetworkPlmn, Property.NetworkServiceType, Property.NetworkPacketStatus};
18         public NetworkPage()
19         {
20             try
21             {
22                 network = new Network(Globals.handleModem0);
23                 RegisterNwEvents(Globals.handleModem0);
24             }
25
26             catch (Exception ex)
27             {
28                 Log.Debug(Globals.LogTag, "Network constructor throws exception = " + ex.ToString());
29             }
30
31             var searchNwBtn = new Button
32             {
33                 Text = "SearchNetwork",
34                 VerticalOptions = LayoutOptions.Start,
35                 HorizontalOptions = LayoutOptions.FillAndExpand,
36                 HeightRequest = height
37             };
38             searchNwBtn.Clicked += SearchNwBtn_Clicked;
39
40             var selectAutoNwBtn = new Button
41             {
42                 Text = "SelectAutoNetwork",
43                 VerticalOptions = LayoutOptions.Start,
44                 HorizontalOptions = LayoutOptions.FillAndExpand,
45                 HeightRequest = height
46             };
47             selectAutoNwBtn.Clicked += SelectAutoNwBtn_Clicked;
48
49             var selectManualNwBtn = new Button
50             {
51                 Text = "SelectManualNetwork",
52                 VerticalOptions = LayoutOptions.Start,
53                 HorizontalOptions = LayoutOptions.FillAndExpand,
54                 HeightRequest = height
55             };
56             selectManualNwBtn.Clicked += SelectManualNwBtn_Clicked;
57
58             var getNwModeBtn = new Button
59             {
60                 Text = "GetNetworkSelectionMode",
61                 VerticalOptions = LayoutOptions.Start,
62                 HorizontalOptions = LayoutOptions.FillAndExpand,
63                 HeightRequest = height
64             };
65             getNwModeBtn.Clicked += GetNwModeBtn_Clicked;
66
67             var getPrefPlmnBtn = new Button
68             {
69                 Text = "GetPreferredPlmn",
70                 VerticalOptions = LayoutOptions.Start,
71                 HorizontalOptions = LayoutOptions.FillAndExpand,
72                 HeightRequest = height
73             };
74             getPrefPlmnBtn.Clicked += GetPrefPlmnBtn_Clicked;
75
76             var setPrefPlmnBtn = new Button
77             {
78                 Text = "SetPreferredPlmn",
79                 VerticalOptions = LayoutOptions.Start,
80                 HorizontalOptions = LayoutOptions.FillAndExpand,
81                 HeightRequest = height
82             };
83             setPrefPlmnBtn.Clicked += SetPrefPlmnBtn_Clicked;
84
85             var cancelSearchBtn = new Button
86             {
87                 Text = "CancelSearch",
88                 VerticalOptions = LayoutOptions.Start,
89                 HorizontalOptions = LayoutOptions.FillAndExpand,
90                 HeightRequest = height
91             };
92             cancelSearchBtn.Clicked += CancelSearchBtn_Clicked;
93
94             var getServBtn = new Button
95             {
96                 Text = "GetNetworkServing",
97                 VerticalOptions = LayoutOptions.Start,
98                 HorizontalOptions = LayoutOptions.FillAndExpand,
99                 HeightRequest = height
100             };
101             getServBtn.Clicked += GetServBtn_Clicked;
102
103             var setgetModeBtn = new Button
104             {
105                 Text = "SetGetNetworkMode",
106                 VerticalOptions = LayoutOptions.Start,
107                 HorizontalOptions = LayoutOptions.FillAndExpand,
108                 HeightRequest = height
109             };
110             setgetModeBtn.Clicked += SetGetModeBtn_Clicked;
111
112             var getNeighborBtn = new Button
113             {
114                 Text = "GetNeighborCell",
115                 VerticalOptions = LayoutOptions.Start,
116                 HorizontalOptions = LayoutOptions.FillAndExpand,
117                 HeightRequest = height
118             };
119             getNeighborBtn.Clicked += GetNeighborBtn_Clicked;
120
121             var setemergencyBtn = new Button
122             {
123                 Text = "SetEmergency",
124                 VerticalOptions = LayoutOptions.Start,
125                 HorizontalOptions = LayoutOptions.FillAndExpand,
126                 HeightRequest = height
127             };
128             setemergencyBtn.Clicked += SetEmergencyModeBtn_Clicked;
129
130             var setgetRoamPrefBtn = new Button
131             {
132                 Text = "SetGetRoamPreference",
133                 VerticalOptions = LayoutOptions.Start,
134                 HorizontalOptions = LayoutOptions.FillAndExpand,
135                 HeightRequest = height
136             };
137             setgetRoamPrefBtn.Clicked += SetGetRoamPrefBtn_Clicked;
138
139             var setgetDataSubsBtn = new Button
140             {
141                 Text = "SetGetDefaultDataSubscription",
142                 VerticalOptions = LayoutOptions.Start,
143                 HorizontalOptions = LayoutOptions.FillAndExpand,
144                 HeightRequest = height
145             };
146             setgetDataSubsBtn.Clicked += SetGetDataSubsBtn_Clicked;
147
148             var setgetNwSubsBtn = new Button
149             {
150                 Text = "SetGetDefaultSubscription",
151                 VerticalOptions = LayoutOptions.Start,
152                 HorizontalOptions = LayoutOptions.FillAndExpand,
153                 HeightRequest = height
154             };
155             setgetNwSubsBtn.Clicked += SetGetNwSubsBtn_Clicked;
156
157             Content = new StackLayout
158             {
159                 VerticalOptions = LayoutOptions.Center,
160                 Children = {
161                         searchNwBtn, selectAutoNwBtn, selectManualNwBtn, getNwModeBtn, getPrefPlmnBtn, setPrefPlmnBtn, cancelSearchBtn , getServBtn ,
162                         setgetModeBtn, getNeighborBtn, setemergencyBtn, setgetRoamPrefBtn, setgetDataSubsBtn, setgetNwSubsBtn
163                     }
164             };
165         }
166
167         private void RegisterNwEvents(TapiHandle handle)
168         {
169             handle.PropertyChanged += Handle_NwPropertyChanged;
170
171             handle.NotificationChanged += Handle_NwNotificationChanged;
172             foreach (Notification i in arrNoti)
173             {
174                 handle.RegisterNotiEvent(i);
175             }
176
177             foreach (Property i in arrProp)
178             {
179                 handle.RegisterPropEvent(i);
180             }
181         }
182
183         private void Handle_NwNotificationChanged(object sender, NotificationChangedEventArgs e)
184         {
185             try
186             {
187                 Log.Debug(Globals.LogTag, "Handle_NwNotificationChanged event receive, Notification Value = " + e.Id);
188                 switch (e.Id)
189                 {
190                     case Notification.NetworkCellInfo:
191                         NetworkCellNoti data = (NetworkCellNoti)e.Data;
192                         Log.Debug(Globals.LogTag, "NetworkCellInfo event receive, Lac = " + data.Lac + ", cell id = " + data.CellId);
193                         break;
194                     case Notification.NetworkRegistrationStatus:
195                         NetworkRegistrationStatus status = (NetworkRegistrationStatus)e.Data;
196                         Log.Debug("NetworkRegistrationStatus event receive , circuit status = ", status.CircuitStatus + ", isroaming = " + status.IsRoaming + ", packetstatus = " + status.PacketStatus + ", type = " + status.Type);
197                         break;
198                     case Notification.NetworkIdentity:
199                         NetworkIdentityNoti noti = (NetworkIdentityNoti)e.Data;
200                         Log.Debug("NetworkIdentity event receive , fullname = ", noti.FullName + ", plmn = " + noti.Plmn + ", shortname = " + noti.ShortName);
201                         break;
202                     case Notification.NetworkChange:
203                         NetworkChangeNoti changeNoti = (NetworkChangeNoti)e.Data;
204                         Log.Debug("NetworkChange event receive , plmn = ", changeNoti.Plmn + ", act = " + changeNoti.Act);
205                         break;
206                     case Notification.NetworkDefaultDataSubscription:
207                         Log.Debug(Globals.LogTag, "NetworkDefaultDataSubscription event receive, data = " + e.Data);
208                         break;
209                     case Notification.NetworkDefaultSubscription:
210                         Log.Debug(Globals.LogTag, "NetworkDefaultSubscription event receive, data = " + e.Data);
211                         break;
212                 }
213             }
214
215             catch (Exception ex)
216             {
217                 Log.Debug(Globals.LogTag, "Handle_NwNotificationChanged event exception = " + ex.ToString());
218             }
219         }
220
221         private void Handle_NwPropertyChanged(object sender, PropertyChangedEventArgs e)
222         {
223             try
224             {
225                 Log.Debug(Globals.LogTag, "Handle_NwPropertyChanged property receive, Property Value = " + e.Property);
226                 switch (e.Property)
227                 {
228                     case Property.NetworkSignalLevel:
229                         Log.Debug(Globals.LogTag, "NetworkSignalLevel property receive, data = " + e.Data);
230                         break;
231                     case Property.NetworkPsType:
232                         Log.Debug(Globals.LogTag, "NetworkPsType property receive, data = " + e.Data);
233                         break;
234                     case Property.NetworkCellId:
235                         Log.Debug(Globals.LogTag, "NetworkCellId property receive, data = " + (uint)e.Data);
236                         break;
237                     case Property.NetworkCircuitStatus:
238                         Log.Debug(Globals.LogTag, "NetworkCircuitStatus property receive, data = " + e.Data);
239                         break;
240                     case Property.NetworkPacketStatus:
241                         Log.Debug(Globals.LogTag, "NetworkPacketStatus property receive, data = " + e.Data);
242                         break;
243                     case Property.NetworkPlmn:
244                         Log.Debug(Globals.LogTag, "NetworkPacketStatus property receive, data = " + e.Data);
245                         break;
246                     case Property.NetworkName:
247                         Log.Debug(Globals.LogTag, "NetworkName property receive, data = " + e.Data);
248                         break;
249                     case Property.NetworkNameOption:
250                         Log.Debug(Globals.LogTag, "NetworkNameOption property receive, data = " + e.Data);
251                         break;
252                     case Property.NetworkServiceType:
253                         Log.Debug(Globals.LogTag, "NetworkServiceType property receive, data = " + e.Data);
254                         break;
255                 }
256             }
257
258             catch (Exception ex)
259             {
260                 Log.Debug(Globals.LogTag, "Handle_NwPropertyChanged event exception = " + ex.ToString());
261             }
262         }
263
264         private async void SearchNwBtn_Clicked(object sender, EventArgs e)
265         {
266             try
267             {
268                 Log.Debug(Globals.LogTag, "SearchNetwork start");
269                 NetworkPlmnList list = await network.SearchNetwork();
270                 if (list != null)
271                 {
272                     Log.Debug(Globals.LogTag, "SearchNetwork list is not null");
273                     Log.Debug(Globals.LogTag, "nwcount = " + list.NetworkCount);
274                     List<NetworkIdentity> idList = list.NetworkList.ToList();
275                     foreach (NetworkIdentity i in idList)
276                     {
277                         Log.Debug(Globals.LogTag, "name = " + i.Name);
278                         Log.Debug(Globals.LogTag, "plmn = " + i.Plmn);
279                         Log.Debug(Globals.LogTag, "plmnid = " + i.PlmnId);
280                         Log.Debug(Globals.LogTag, "plmntype = " + i.PlmnType);
281                         Log.Debug(Globals.LogTag, "serviceprovidername = " + i.ServiceProviderName);
282                         Log.Debug(Globals.LogTag, "system type = " + i.SystemType);
283                     }
284                 }
285
286                 Log.Debug(Globals.LogTag, "SearchNetwork end");
287             }
288
289             catch (Exception ex)
290             {
291                 Log.Debug(Globals.LogTag, "SearchNetwork ,exception = " + ex.ToString());
292             }
293         }
294
295         private async void SetPrefPlmnBtn_Clicked(object sender, EventArgs e)
296         {
297             try
298             {
299                 Log.Debug(Globals.LogTag, "SetNetworkPreferredPlmn start");
300                 var action = await DisplayActionSheet("Operation", "Cancel", null, Enum.GetNames(typeof(NetworkPreferredPlmnOp)));
301                 Log.Debug(Globals.LogTag, "Action: " + action);
302                 if (action != null)
303                 {
304                     NetworkPreferredPlmnOp operation = (NetworkPreferredPlmnOp)Enum.Parse(typeof(NetworkPreferredPlmnOp), action);
305                     if (operation == NetworkPreferredPlmnOp.Add)
306                     {
307                         NetworkPreferredPlmnInfo info = new NetworkPreferredPlmnInfo();
308                         info.Index = 0;
309                         info.Plmn = "45000";
310                         info.SystemType = NetworkSystemType.Gsm;
311                         info.NetworkName = "AAA";
312                         info.ServiceProviderName = "A";
313                         await network.SetNetworkPreferredPlmn(operation, info);
314                     }
315                     else
316                     {
317                         IEnumerable<NetworkPreferredPlmnInfo> infoList = await network.GetNetworkPreferredPlmn();
318                         if (infoList.Count() > 0)
319                         {
320                             NetworkPreferredPlmnInfo info = infoList.First();
321                             await network.SetNetworkPreferredPlmn(operation, info);
322                         }
323                     }
324                 }
325
326                 Log.Debug(Globals.LogTag, "SetNetworkPreferredPlmn end");
327             }
328
329             catch (Exception ex)
330             {
331                 Log.Debug(Globals.LogTag, "SetNetworkPreferredPlmn ,exception = " + ex.ToString());
332             }
333         }
334
335         private async void GetPrefPlmnBtn_Clicked(object sender, EventArgs e)
336         {
337             try
338             {
339                 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn start");
340                 IEnumerable<NetworkPreferredPlmnInfo> infoList = await network.GetNetworkPreferredPlmn();
341                 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn count = " + infoList.Count());
342                 if (infoList.Count() > 0)
343                 {
344                     List<NetworkPreferredPlmnInfo> data = infoList.ToList();
345                     foreach (NetworkPreferredPlmnInfo info in data)
346                     {
347                         Log.Debug(Globals.LogTag, "plmn = " + info.Plmn + " index = " + info.Index + " type = " + info.SystemType + " nwname = " + info.NetworkName);
348                     }
349                 }
350
351                 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn end");
352             }
353
354             catch (Exception ex)
355             {
356                 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn ,exception = " + ex.ToString());
357             }
358         }
359
360         private async void GetNwModeBtn_Clicked(object sender, EventArgs e)
361         {
362             try
363             {
364                 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode start");
365                 NetworkSelectionMode mode = await network.GetNetworkSelectionMode();
366                 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode end , mode = " + mode);
367             }
368
369             catch (Exception ex)
370             {
371                 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode ,exception = " + ex.ToString());
372             }
373         }
374
375         private async void SelectManualNwBtn_Clicked(object sender, EventArgs e)
376         {
377             try
378             {
379                 string plmn = Globals.handleModem0.GetStringProperty(Property.NetworkPlmn);
380                 int act = Globals.handleModem0.GetIntProperty(Property.NetworkAct);
381
382                 Log.Debug(Globals.LogTag, "SelectNetworkManual start --" + plmn + " , " + act);
383                 await network.SelectNetworkManual(plmn, act);
384                 Log.Debug(Globals.LogTag, "SelectNetworkManual end");
385             }
386
387             catch (Exception ex)
388             {
389                 Log.Debug(Globals.LogTag, "SelectNetworkManual ,exception = " + ex.ToString());
390             }
391         }
392
393         private async void SelectAutoNwBtn_Clicked(object sender, EventArgs e)
394         {
395             try
396             {
397                 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic start");
398                 await network.SelectNetworkAutomatic();
399                 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic end");
400             }
401
402             catch (Exception ex)
403             {
404                 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic ,exception = " + ex.ToString());
405             }
406         }
407
408         private async void GetServBtn_Clicked(object sender, EventArgs e)
409         {
410             try
411             {
412                 Log.Debug(Globals.LogTag, "GetNetworkServing start");
413                 NetworkServing serving = await network.GetNetworkServing();
414                 Log.Debug(Globals.LogTag, "GetNetworkServing , plmn = "+serving.Plmn + ",type = "+serving.SystemType);
415                 NetworkAreaInfo info = serving.AreaInfo;
416                 Log.Debug(Globals.LogTag, "areainfo , Lac = " + info.Lac);
417                 NetworkCdmaSysInfo cdmaInfo = info.CdmaInfo;
418                 if (cdmaInfo != null)
419                 {
420                     Log.Debug(Globals.LogTag, "cdmainfo, basestationid = " + cdmaInfo.BaseStationId + ",basestnlati= "+ cdmaInfo.BaseStationLatitude + ",basestnlongi= " + cdmaInfo.BaseStationLongitude+ ",carrier= " + cdmaInfo.Carrier +
421                         ",id= " + cdmaInfo.NetworkId + ",regzone= " + cdmaInfo.RegistrationZone + ",sysid= " + cdmaInfo.SystemId + ",offset= " + cdmaInfo.PilotOffset);
422                 }
423             }
424
425             catch (Exception ex)
426             {
427                 Log.Debug(Globals.LogTag, "GetNetworkServing ,exception = " + ex.ToString());
428             }
429         }
430
431         private async void SetGetModeBtn_Clicked(object sender, EventArgs e)
432         {
433             try
434             {
435                 Log.Debug(Globals.LogTag, "Set and get NetworkMode start");
436                 var action = await DisplayActionSheet("Operation", "Cancel", null, Enum.GetNames(typeof(NetworkMode)));
437                 Log.Debug(Globals.LogTag, "Action: " + action);
438                 if (action != null)
439                 {
440                     NetworkMode mode = (NetworkMode)Enum.Parse(typeof(NetworkMode), action);
441                     await network.SetNetworkMode(mode);
442                     NetworkMode curMode = await network.GetNetworkMode();
443                     if (curMode == mode)
444                     {
445                         Log.Debug(Globals.LogTag, "Set and get NetworkMode is success, currentmode = " + curMode);
446                     }
447
448                     else
449                     {
450                         Log.Debug(Globals.LogTag, "Set and get NetworkMode has failed, currentmode = " + curMode + ", while the network mode was set to " +mode);
451                     }
452                 }
453
454             }
455
456             catch (Exception ex)
457             {
458                 Log.Debug(Globals.LogTag, "Set and Get NetworkMode ,exception = " + ex.ToString());
459             }
460         }
461
462         private async void GetNeighborBtn_Clicked(object sender, EventArgs e)
463         {
464             try
465             {
466                 Log.Debug(Globals.LogTag, "GetNeighborCellNetwork start");
467                 NetworkNeighboringCell cell = await network.GetNeighborCellNetwork();
468                 NetworkServingCell servcell = cell.ServingCell;
469                 List<NetworkGeranCell> geranlist =  cell.GeranList.ToList();
470                 List<NetworkLteCell> ltelist = cell.LteList.ToList();
471                 List<NetworkUmtsCell> umtslist = cell.UmtsList.ToList();
472                 Log.Debug(Globals.LogTag, "NetworkServingCell, type = " + servcell.SystemType + ",mobilecountrycode = " + servcell.MobileCountryCode + ",mobilenetworkcode = " + servcell.MobileNetworkCode);
473                 global::Tizen.Tapi.Cell info = servcell.CellInfo;
474                 if (info != null)
475                 {
476                     Log.Debug(Globals.LogTag, "geraninfo, lac = " + info.GeranCell.Lac + ",cellid= " + info.GeranCell.CellId + ",bsic= " + info.GeranCell.Bsic  +
477                         ",rxlev= " + info.GeranCell.Rxlev + ",bcch= " + info.GeranCell.Bcch);
478                     Log.Debug(Globals.LogTag, "lteinfo, earfcn = " + info.LteCell.Earfcn + ",cellid= " + info.LteCell.CellId + ",physicalid= " + info.LteCell.PhysicalId +
479                         ",rssi= " + info.LteCell.Rssi + ",tac = " + info.LteCell.Tac);
480                     Log.Debug(Globals.LogTag, "umtsinfo, arfcn = " + info.UmtsCell.Arfcn + ",cellid= " + info.UmtsCell.CellId + ",lac= " + info.UmtsCell.Lac +
481                         ",psc= " + info.UmtsCell.Psc + ",rscp= " + info.UmtsCell.Rscp);
482                 }
483
484                 foreach (NetworkGeranCell c in geranlist)
485                 {
486                     Log.Debug(Globals.LogTag, "geraninfo, lac = " + c.Lac + ",cellid= " + c.CellId + ",bsic= " + c.Bsic + ",rxlev= " + c.Rxlev + ",bcch= " + c.Bcch);
487                 }
488                 foreach (NetworkLteCell c in ltelist)
489                 {
490                     Log.Debug(Globals.LogTag, "lteinfo, earfcn = " + c.Earfcn + ",cellid= " + c.CellId + ",physicalid= " + c.PhysicalId +
491                         ",rssi= " + c.Rssi + ",tac = " + c.Tac);
492                 }
493                 foreach (NetworkUmtsCell c in umtslist)
494                 {
495                     Log.Debug(Globals.LogTag, "umtsinfo, arfcn = " + c.Arfcn + ",cellid= " + c.CellId + ",lac= " + c.Lac +
496                         ",psc= " + c.Psc + ",rscp= " + c.Rscp);
497                 }
498             }
499
500             catch (Exception ex)
501             {
502                 Log.Debug(Globals.LogTag, "GetNeighborCellNetwork ,exception = " + ex.ToString());
503             }
504         }
505         private async void CancelSearchBtn_Clicked(object sender, EventArgs e)
506         {
507             try
508             {
509                 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch start");
510                 await network.CancelNetworkManualSearch();
511                 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch end");
512             }
513
514             catch (Exception ex)
515             {
516                 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch ,exception = " + ex.ToString());
517             }
518         }
519
520         private async void SetEmergencyModeBtn_Clicked(object sender, EventArgs e)
521         {
522             try
523             {
524                 Log.Debug(Globals.LogTag, "SetEmergencyCallbackMode start");
525                 var action = await DisplayActionSheet("Operation", "Cancel", null, Enum.GetNames(typeof(NetworkEmergencyCallbackMode)));
526                 Log.Debug(Globals.LogTag, "Action: " + action);
527                 if (action != null)
528                 {
529                     NetworkEmergencyCallbackMode mode = (NetworkEmergencyCallbackMode)Enum.Parse(typeof(NetworkEmergencyCallbackMode), action);
530                     await network.SetEmergencyCallbackMode(mode);
531                     Log.Debug(Globals.LogTag, "SetEmergencyCallbackMode ends");
532                 }
533             }
534
535             catch (Exception ex)
536             {
537                 Log.Debug(Globals.LogTag, "SetEmergencyCallbackMode ,exception = " + ex.ToString());
538             }
539         }
540         private async void SetGetRoamPrefBtn_Clicked(object sender, EventArgs e)
541         {
542             try
543             {
544                 Log.Debug(Globals.LogTag, "Set and get roaming preference start");
545                 var action = await DisplayActionSheet("Operation", "Cancel", null, Enum.GetNames(typeof(NetworkPreferred)));
546                 Log.Debug(Globals.LogTag, "Action: " + action);
547                 if (action != null)
548                 {
549                     NetworkPreferred mode = (NetworkPreferred)Enum.Parse(typeof(NetworkPreferred), action);
550                     await network.SetRoamingPreference(mode);
551                     NetworkPreferred curMode = await network.GetRoamingPreference();
552                     if (curMode == mode)
553                     {
554                         Log.Debug(Globals.LogTag, "Set and get roaming preference is success, currentmode = " + curMode);
555                     }
556
557                     else
558                     {
559                         Log.Debug(Globals.LogTag, "Set and get roaming preference has failed, currentmode = " + curMode + ", while the network mode was set to " + mode);
560                     }
561                 }
562
563             }
564
565             catch (Exception ex)
566             {
567                 Log.Debug(Globals.LogTag, "Set and Get roaming preference ,exception = " + ex.ToString());
568             }
569         }
570         private async void SetGetNwSubsBtn_Clicked(object sender, EventArgs e)
571         {
572             try
573             {
574                 Log.Debug(Globals.LogTag, "Set and get default subscription start");
575                 await network.SetNetworkDefaultSubscription();
576                 NetworkDefaultSubscription subs = network.GetNetworkDefaultSubscription();
577                 Log.Debug(Globals.LogTag, "Set and get default subscription ends, Default subscription is = " + subs);
578             }
579
580             catch (Exception ex)
581             {
582                 Log.Debug(Globals.LogTag, "Set and get default subscription, exception = " + ex.ToString());
583             }
584         }
585
586         private async void SetGetDataSubsBtn_Clicked(object sender, EventArgs e)
587         {
588             try
589             {
590                 Log.Debug(Globals.LogTag, "Set and get default data subscription start");
591                 await network.SetDefaultDataSubscription();
592                 NetworkDefaultDataSubscription subs = network.GetDefaultDataSubscription();
593                 Log.Debug(Globals.LogTag, "Set and get default data subscription ends, Default subscription is = " + subs);
594             }
595
596             catch (Exception ex)
597             {
598                 Log.Debug(Globals.LogTag, "Set and get default data subscription, exception = " + ex.ToString());
599             }
600         }
601     }
602 }