5 using System.Collections.Generic;
7 using System.Threading.Tasks;
9 namespace XamarinForTizen.Tizen
11 public class NetworkPage : ContentPage
13 Network network = null;
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};
22 network = new Network(Globals.handleModem0);
23 RegisterNwEvents(Globals.handleModem0);
28 Log.Debug(Globals.LogTag, "Network constructor throws exception = " + ex.ToString());
31 var searchNwBtn = new Button
33 Text = "SearchNetwork",
34 VerticalOptions = LayoutOptions.Start,
35 HorizontalOptions = LayoutOptions.FillAndExpand,
36 HeightRequest = height
38 searchNwBtn.Clicked += SearchNwBtn_Clicked;
40 var selectAutoNwBtn = new Button
42 Text = "SelectAutoNetwork",
43 VerticalOptions = LayoutOptions.Start,
44 HorizontalOptions = LayoutOptions.FillAndExpand,
45 HeightRequest = height
47 selectAutoNwBtn.Clicked += SelectAutoNwBtn_Clicked;
49 var selectManualNwBtn = new Button
51 Text = "SelectManualNetwork",
52 VerticalOptions = LayoutOptions.Start,
53 HorizontalOptions = LayoutOptions.FillAndExpand,
54 HeightRequest = height
56 selectManualNwBtn.Clicked += SelectManualNwBtn_Clicked;
58 var getNwModeBtn = new Button
60 Text = "GetNetworkSelectionMode",
61 VerticalOptions = LayoutOptions.Start,
62 HorizontalOptions = LayoutOptions.FillAndExpand,
63 HeightRequest = height
65 getNwModeBtn.Clicked += GetNwModeBtn_Clicked;
67 var getPrefPlmnBtn = new Button
69 Text = "GetPreferredPlmn",
70 VerticalOptions = LayoutOptions.Start,
71 HorizontalOptions = LayoutOptions.FillAndExpand,
72 HeightRequest = height
74 getPrefPlmnBtn.Clicked += GetPrefPlmnBtn_Clicked;
76 var setPrefPlmnBtn = new Button
78 Text = "SetPreferredPlmn",
79 VerticalOptions = LayoutOptions.Start,
80 HorizontalOptions = LayoutOptions.FillAndExpand,
81 HeightRequest = height
83 setPrefPlmnBtn.Clicked += SetPrefPlmnBtn_Clicked;
85 var cancelSearchBtn = new Button
87 Text = "CancelSearch",
88 VerticalOptions = LayoutOptions.Start,
89 HorizontalOptions = LayoutOptions.FillAndExpand,
90 HeightRequest = height
92 cancelSearchBtn.Clicked += CancelSearchBtn_Clicked;
94 var getServBtn = new Button
96 Text = "GetNetworkServing",
97 VerticalOptions = LayoutOptions.Start,
98 HorizontalOptions = LayoutOptions.FillAndExpand,
99 HeightRequest = height
101 getServBtn.Clicked += GetServBtn_Clicked;
103 var setgetModeBtn = new Button
105 Text = "SetGetNetworkMode",
106 VerticalOptions = LayoutOptions.Start,
107 HorizontalOptions = LayoutOptions.FillAndExpand,
108 HeightRequest = height
110 setgetModeBtn.Clicked += SetGetModeBtn_Clicked;
112 var getNeighborBtn = new Button
114 Text = "GetNeighborCell",
115 VerticalOptions = LayoutOptions.Start,
116 HorizontalOptions = LayoutOptions.FillAndExpand,
117 HeightRequest = height
119 getNeighborBtn.Clicked += GetNeighborBtn_Clicked;
121 var setemergencyBtn = new Button
123 Text = "SetEmergency",
124 VerticalOptions = LayoutOptions.Start,
125 HorizontalOptions = LayoutOptions.FillAndExpand,
126 HeightRequest = height
128 setemergencyBtn.Clicked += SetEmergencyModeBtn_Clicked;
130 var setgetRoamPrefBtn = new Button
132 Text = "SetGetRoamPreference",
133 VerticalOptions = LayoutOptions.Start,
134 HorizontalOptions = LayoutOptions.FillAndExpand,
135 HeightRequest = height
137 setgetRoamPrefBtn.Clicked += SetGetRoamPrefBtn_Clicked;
139 var setgetDataSubsBtn = new Button
141 Text = "SetGetDefaultDataSubscription",
142 VerticalOptions = LayoutOptions.Start,
143 HorizontalOptions = LayoutOptions.FillAndExpand,
144 HeightRequest = height
146 setgetDataSubsBtn.Clicked += SetGetDataSubsBtn_Clicked;
148 var setgetNwSubsBtn = new Button
150 Text = "SetGetDefaultSubscription",
151 VerticalOptions = LayoutOptions.Start,
152 HorizontalOptions = LayoutOptions.FillAndExpand,
153 HeightRequest = height
155 setgetNwSubsBtn.Clicked += SetGetNwSubsBtn_Clicked;
157 Content = new StackLayout
159 VerticalOptions = LayoutOptions.Center,
161 searchNwBtn, selectAutoNwBtn, selectManualNwBtn, getNwModeBtn, getPrefPlmnBtn, setPrefPlmnBtn, cancelSearchBtn , getServBtn ,
162 setgetModeBtn, getNeighborBtn, setemergencyBtn, setgetRoamPrefBtn, setgetDataSubsBtn, setgetNwSubsBtn
167 private void RegisterNwEvents(TapiHandle handle)
169 handle.PropertyChanged += Handle_NwPropertyChanged;
171 handle.NotificationChanged += Handle_NwNotificationChanged;
172 foreach (Notification i in arrNoti)
174 handle.RegisterNotiEvent(i);
177 foreach (Property i in arrProp)
179 handle.RegisterPropEvent(i);
183 private void Handle_NwNotificationChanged(object sender, NotificationChangedEventArgs e)
187 Log.Debug(Globals.LogTag, "Handle_NwNotificationChanged event receive, Notification Value = " + e.Id);
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);
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);
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);
202 case Notification.NetworkChange:
203 NetworkChangeNoti changeNoti = (NetworkChangeNoti)e.Data;
204 Log.Debug("NetworkChange event receive , plmn = ", changeNoti.Plmn + ", act = " + changeNoti.Act);
206 case Notification.NetworkDefaultDataSubscription:
207 Log.Debug(Globals.LogTag, "NetworkDefaultDataSubscription event receive, data = " + e.Data);
209 case Notification.NetworkDefaultSubscription:
210 Log.Debug(Globals.LogTag, "NetworkDefaultSubscription event receive, data = " + e.Data);
217 Log.Debug(Globals.LogTag, "Handle_NwNotificationChanged event exception = " + ex.ToString());
221 private void Handle_NwPropertyChanged(object sender, PropertyChangedEventArgs e)
225 Log.Debug(Globals.LogTag, "Handle_NwPropertyChanged property receive, Property Value = " + e.Property);
228 case Property.NetworkSignalLevel:
229 Log.Debug(Globals.LogTag, "NetworkSignalLevel property receive, data = " + e.Data);
231 case Property.NetworkPsType:
232 Log.Debug(Globals.LogTag, "NetworkPsType property receive, data = " + e.Data);
234 case Property.NetworkCellId:
235 Log.Debug(Globals.LogTag, "NetworkCellId property receive, data = " + (uint)e.Data);
237 case Property.NetworkCircuitStatus:
238 Log.Debug(Globals.LogTag, "NetworkCircuitStatus property receive, data = " + e.Data);
240 case Property.NetworkPacketStatus:
241 Log.Debug(Globals.LogTag, "NetworkPacketStatus property receive, data = " + e.Data);
243 case Property.NetworkPlmn:
244 Log.Debug(Globals.LogTag, "NetworkPacketStatus property receive, data = " + e.Data);
246 case Property.NetworkName:
247 Log.Debug(Globals.LogTag, "NetworkName property receive, data = " + e.Data);
249 case Property.NetworkNameOption:
250 Log.Debug(Globals.LogTag, "NetworkNameOption property receive, data = " + e.Data);
252 case Property.NetworkServiceType:
253 Log.Debug(Globals.LogTag, "NetworkServiceType property receive, data = " + e.Data);
260 Log.Debug(Globals.LogTag, "Handle_NwPropertyChanged event exception = " + ex.ToString());
264 private async void SearchNwBtn_Clicked(object sender, EventArgs e)
268 Log.Debug(Globals.LogTag, "SearchNetwork start");
269 NetworkPlmnList list = await network.SearchNetwork();
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)
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);
286 Log.Debug(Globals.LogTag, "SearchNetwork end");
291 Log.Debug(Globals.LogTag, "SearchNetwork ,exception = " + ex.ToString());
295 private async void SetPrefPlmnBtn_Clicked(object sender, EventArgs e)
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);
304 NetworkPreferredPlmnOp operation = (NetworkPreferredPlmnOp)Enum.Parse(typeof(NetworkPreferredPlmnOp), action);
305 if (operation == NetworkPreferredPlmnOp.Add)
307 NetworkPreferredPlmnInfo info = new NetworkPreferredPlmnInfo();
310 info.SystemType = NetworkSystemType.Gsm;
311 info.NetworkName = "AAA";
312 info.ServiceProviderName = "A";
313 await network.SetNetworkPreferredPlmn(operation, info);
317 IEnumerable<NetworkPreferredPlmnInfo> infoList = await network.GetNetworkPreferredPlmn();
318 if (infoList.Count() > 0)
320 NetworkPreferredPlmnInfo info = infoList.First();
321 await network.SetNetworkPreferredPlmn(operation, info);
326 Log.Debug(Globals.LogTag, "SetNetworkPreferredPlmn end");
331 Log.Debug(Globals.LogTag, "SetNetworkPreferredPlmn ,exception = " + ex.ToString());
335 private async void GetPrefPlmnBtn_Clicked(object sender, EventArgs e)
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)
344 List<NetworkPreferredPlmnInfo> data = infoList.ToList();
345 foreach (NetworkPreferredPlmnInfo info in data)
347 Log.Debug(Globals.LogTag, "plmn = " + info.Plmn + " index = " + info.Index + " type = " + info.SystemType + " nwname = " + info.NetworkName);
351 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn end");
356 Log.Debug(Globals.LogTag, "GetNetworkPreferredPlmn ,exception = " + ex.ToString());
360 private async void GetNwModeBtn_Clicked(object sender, EventArgs e)
364 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode start");
365 NetworkSelectionMode mode = await network.GetNetworkSelectionMode();
366 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode end , mode = " + mode);
371 Log.Debug(Globals.LogTag, "GetNetworkSelectionMode ,exception = " + ex.ToString());
375 private async void SelectManualNwBtn_Clicked(object sender, EventArgs e)
379 string plmn = Globals.handleModem0.GetStringProperty(Property.NetworkPlmn);
380 int act = Globals.handleModem0.GetIntProperty(Property.NetworkAct);
382 Log.Debug(Globals.LogTag, "SelectNetworkManual start --" + plmn + " , " + act);
383 await network.SelectNetworkManual(plmn, act);
384 Log.Debug(Globals.LogTag, "SelectNetworkManual end");
389 Log.Debug(Globals.LogTag, "SelectNetworkManual ,exception = " + ex.ToString());
393 private async void SelectAutoNwBtn_Clicked(object sender, EventArgs e)
397 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic start");
398 await network.SelectNetworkAutomatic();
399 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic end");
404 Log.Debug(Globals.LogTag, "SelectNetworkAutomatic ,exception = " + ex.ToString());
408 private async void GetServBtn_Clicked(object sender, EventArgs e)
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)
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);
427 Log.Debug(Globals.LogTag, "GetNetworkServing ,exception = " + ex.ToString());
431 private async void SetGetModeBtn_Clicked(object sender, EventArgs e)
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);
440 NetworkMode mode = (NetworkMode)Enum.Parse(typeof(NetworkMode), action);
441 await network.SetNetworkMode(mode);
442 NetworkMode curMode = await network.GetNetworkMode();
445 Log.Debug(Globals.LogTag, "Set and get NetworkMode is success, currentmode = " + curMode);
450 Log.Debug(Globals.LogTag, "Set and get NetworkMode has failed, currentmode = " + curMode + ", while the network mode was set to " +mode);
458 Log.Debug(Globals.LogTag, "Set and Get NetworkMode ,exception = " + ex.ToString());
462 private async void GetNeighborBtn_Clicked(object sender, EventArgs e)
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;
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);
484 foreach (NetworkGeranCell c in geranlist)
486 Log.Debug(Globals.LogTag, "geraninfo, lac = " + c.Lac + ",cellid= " + c.CellId + ",bsic= " + c.Bsic + ",rxlev= " + c.Rxlev + ",bcch= " + c.Bcch);
488 foreach (NetworkLteCell c in ltelist)
490 Log.Debug(Globals.LogTag, "lteinfo, earfcn = " + c.Earfcn + ",cellid= " + c.CellId + ",physicalid= " + c.PhysicalId +
491 ",rssi= " + c.Rssi + ",tac = " + c.Tac);
493 foreach (NetworkUmtsCell c in umtslist)
495 Log.Debug(Globals.LogTag, "umtsinfo, arfcn = " + c.Arfcn + ",cellid= " + c.CellId + ",lac= " + c.Lac +
496 ",psc= " + c.Psc + ",rscp= " + c.Rscp);
502 Log.Debug(Globals.LogTag, "GetNeighborCellNetwork ,exception = " + ex.ToString());
505 private async void CancelSearchBtn_Clicked(object sender, EventArgs e)
509 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch start");
510 await network.CancelNetworkManualSearch();
511 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch end");
516 Log.Debug(Globals.LogTag, "CancelNetworkManualSearch ,exception = " + ex.ToString());
520 private async void SetEmergencyModeBtn_Clicked(object sender, EventArgs e)
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);
529 NetworkEmergencyCallbackMode mode = (NetworkEmergencyCallbackMode)Enum.Parse(typeof(NetworkEmergencyCallbackMode), action);
530 await network.SetEmergencyCallbackMode(mode);
531 Log.Debug(Globals.LogTag, "SetEmergencyCallbackMode ends");
537 Log.Debug(Globals.LogTag, "SetEmergencyCallbackMode ,exception = " + ex.ToString());
540 private async void SetGetRoamPrefBtn_Clicked(object sender, EventArgs e)
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);
549 NetworkPreferred mode = (NetworkPreferred)Enum.Parse(typeof(NetworkPreferred), action);
550 await network.SetRoamingPreference(mode);
551 NetworkPreferred curMode = await network.GetRoamingPreference();
554 Log.Debug(Globals.LogTag, "Set and get roaming preference is success, currentmode = " + curMode);
559 Log.Debug(Globals.LogTag, "Set and get roaming preference has failed, currentmode = " + curMode + ", while the network mode was set to " + mode);
567 Log.Debug(Globals.LogTag, "Set and Get roaming preference ,exception = " + ex.ToString());
570 private async void SetGetNwSubsBtn_Clicked(object sender, EventArgs e)
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);
582 Log.Debug(Globals.LogTag, "Set and get default subscription, exception = " + ex.ToString());
586 private async void SetGetDataSubsBtn_Clicked(object sender, EventArgs e)
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);
598 Log.Debug(Globals.LogTag, "Set and get default data subscription, exception = " + ex.ToString());