Update logic to show wfd peers on main page 55/316655/5
authorAkash Kumar <akash1.kumar@samsung.com>
Mon, 16 Dec 2024 09:03:35 +0000 (14:33 +0530)
committerAkash Kumar <akash1.kumar@samsung.com>
Thu, 19 Dec 2024 05:21:30 +0000 (05:21 +0000)
This patch:
- Add wifi direct state changed callback.
- Make changes to resolve issue of peers not showing on main page.

Change-Id: I76974f9f4a9ec1001584cad6527d03ff928e9b36
Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs
SettingWiFiDirect/SettingWiFiDirect/WiFiDirectConfig.cs
SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs
SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs
SettingWiFiDirect/SettingWiFiDirect/model/WfdEnumerations.cs
SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs
packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk

index ab2ae1a7c66937fa1f6c1c6340b040f740c77329..ac9899267dfd4fae1e1e8050495a389efcceaa11 100644 (file)
@@ -16,6 +16,7 @@ namespace SettingWiFiDirect
     {
         private WiFiDirect mWifiDirect;
         private PeerSource mPeerSource;
+        private CollectionView mScanList;
         public override string ProvideTitle() => Resources.IDS_WIFI_BODY_WI_FI_DIRECT_ABB;
 
         protected override void OnCustomizationUpdate(IEnumerable<MenuCustomizationItem> items)
@@ -48,20 +49,13 @@ namespace SettingWiFiDirect
             }
 
             Resources.SetPath(GetResourcePath(""));
+            StartScan();
         }
 
         protected override View OnCreate()
         {
+            Debug("+");
             base.OnCreate();
-            try
-            {
-                List<Peer> peerList = mWifiDirect.GetScanResult();
-                mPeerSource.AddFoundPeers(peerList);
-            }
-            catch (Exception e)
-            {
-                Debug("Exception " + e.Message);
-            }
 
             return CreateComponents();
         }
@@ -92,7 +86,7 @@ namespace SettingWiFiDirect
 
         internal View CreateComponents()
         {
-            Debug("CreateComponents");
+            Debug("+");
             View mainView = new View()
             {
                 Layout = new LinearLayout()
@@ -106,7 +100,7 @@ namespace SettingWiFiDirect
 
             var header = GetHeader();
 
-            var mScanList = new CollectionView()
+            mScanList = new CollectionView()
             {
                 ItemsSource = mPeerSource,
                 ItemsLayouter = new LinearLayouter(),
@@ -129,11 +123,26 @@ namespace SettingWiFiDirect
                 HeightSpecification = LayoutParamPolicies.MatchParent,
                 SelectionMode = ItemSelectionMode.Single,
             };
+            mWifiDirect.WFDStateChanged += OnWFDStateChanged;
+
+            mScanList.Relayout += (s, e) =>
+            {
+                foreach (var child in mScanList.Children)
+                {
+                    child.SizeWidth = mScanList.SizeWidth;
+                }
+            };
+
             mainView.Add(header);
             mainView.Add(mScanList);
             return mainView;
         }
 
+        private void OnWFDStateChanged(Object sender, WFDStateChangedEventArgs e)
+        {
+            Debug("+");
+            UpdateDeviceList();
+        }
 
         private Selector<Color> GetDefaultColorSelector()
         {
@@ -160,9 +169,9 @@ namespace SettingWiFiDirect
             return icon;
         }
 
-
         private DataTemplate CreateItemTemplate()
         {
+            Debug("+");
             return new DataTemplate(() =>
             {
                 DefaultLinearItem item = new DefaultLinearItem()
@@ -177,13 +186,35 @@ namespace SettingWiFiDirect
                 //item.Icon = GetApIconImageView();
                 //item.Extra = GetInfoButton();
                 item.IsSelectable = false;
-
+                item.SizeWidth = mScanList.SizeWidth;
                 return item;
             });
         }
 
+        private void StartScan()
+        {
+            Debug("+");
+            mWifiDirect.StartDiscovery();
+            Debug("-");
+        }
+
+        private void UpdateDeviceList()
+        {
+            Debug("+");
+            try
+            {
+                List<Peer> peerList = mWifiDirect.GetScanResult();
+                mPeerSource.AddFoundPeers(peerList);
+            }
+            catch (Exception e)
+            {
+                Debug("Exception " + e.Message);
+            }
+        }
+
         private TextLabel GetHeader()
         {
+            Debug("+");
             string label = string.Format(Resources.IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES, mWifiDirect.getDeviceName());
             TextLabel header = new TextLabel(label);
 
index 4cd997d9680a991370df31c53defc5f357dea22a..130aa01a2f718f40586cf49b9ca66cc3af4e967c 100644 (file)
@@ -6,7 +6,7 @@ namespace SettingWiFiDirect
     {
         // Following values are tentative, may be changed later.
         internal const string PeerDeviceName = "TizenRPI4_WFD";
-        internal const int DiscoveryTime = 30;
+        internal const int DiscoveryTime = 10;
         internal const int DelayTime = 2000;
         internal const int DiscoverDelayTime = 1000;
         internal const int StartDiscoveryDelayTime = 10000;
index cdc525c306ac8f84fa34afb9c270d3542742ede9..44df275083acfd6e690f5b1526a28ca76437227d 100644 (file)
@@ -1,6 +1,5 @@
 using System;
 using System.Collections.Generic;
-using System.Text;
 using System.Threading.Tasks;
 using Tizen.Network.WiFiDirect;
 using static SettingWiFiDirect.Logger;
@@ -11,8 +10,9 @@ namespace SettingWiFiDirect
     {
         IEnumerable<WiFiDirectPeer> mFoundDeviceList = new List<WiFiDirectPeer>();
         IEnumerable<WiFiDirectPeer> mConnectedDeviceList = new List<WiFiDirectPeer>();
-        // IEnumerable<WiFiDirectPeer> specificAPList = new List<WiFiDirectPeer>();
+        private event EventHandler<WFDStateChangedEventArgs> mWifiDirectStateChanged = null;
         bool _isInitialized = false;
+
         internal void Initialize()
         {
             if (WiFiDirectManager.IsInitialized)
@@ -31,6 +31,7 @@ namespace SettingWiFiDirect
                 _isInitialized = true;
             }
         }
+
         public async Task Activate()
         {
 
@@ -47,7 +48,7 @@ namespace SettingWiFiDirect
             }
             catch (Exception e)
             {
-                Debug("Fail to activate WiFi Direct " + e.ToString());
+                Debug("Fail to activate WiFi-Direct " + e.ToString());
             }
         }
 
@@ -57,13 +58,48 @@ namespace SettingWiFiDirect
             WiFiDirectManager.Deactivate();
         }
 
+        internal event EventHandler<WFDStateChangedEventArgs> WFDStateChanged
+        {
+            add
+            {
+                if (mWifiDirectStateChanged == null)
+                {
+                    WiFiDirectManager.StateChanged += OnWiFiDirectStateChanged;
+                }
+                mWifiDirectStateChanged += value;
+            }
+            remove
+            {
+                mWifiDirectStateChanged -= value;
+                if (mWifiDirectStateChanged == null)
+                {
+                    WiFiDirectManager.StateChanged -= OnWiFiDirectStateChanged;
+                }
+            }
+        }
+
+        private void OnWiFiDirectStateChanged(Object sender, StateChangedEventArgs e)
+        {
+            Debug("+");
+            WFDState state = ConvertWFDState(e.State);
+            mWifiDirectStateChanged.Invoke(null, new WFDStateChangedEventArgs(state));
+        }
+
+        private WFDState ConvertWFDState(WiFiDirectState state)
+        {
+            //TODO: update logic based on state
+            return WFDState.Activated;
+        }
+
         public void StartDiscovery()
         {
+            Debug("+");
             WiFiDirectManager.StartDiscovery(false, WifiDirectConfig.DiscoveryTime);
         }
+
         public bool IsDiscoverable()
         {
-            Debug("WiFiDiect.IsDiscoverable");
+            Debug("+");
             if (WiFiDirectManager.IsDiscoverable)
             {
                 return true;
@@ -74,7 +110,7 @@ namespace SettingWiFiDirect
 
         public List<Peer> GetScanResult()
         {
-            Debug("WiFi.GetScanResult");
+            Debug("+");
             try
             {
                 mFoundDeviceList = WiFiDirectManager.GetDiscoveredPeers();
@@ -87,9 +123,10 @@ namespace SettingWiFiDirect
 
             return null;
         }
+
         public List<Peer> GetPeerList()
         {
-            Debug("WiFi.GetAPList");
+            Debug("+");
             List<Peer> peerList = new List<Peer>();
             foreach (var item in mFoundDeviceList)
             {
@@ -103,7 +140,7 @@ namespace SettingWiFiDirect
 
         private Peer CreatePeer(WiFiDirectPeer wifiDirectPeer)
         {
-            Debug("CreatePeer");
+            Debug("+");
             Peer peer = new Peer(wifiDirectPeer);
             return peer;
         }
@@ -114,4 +151,18 @@ namespace SettingWiFiDirect
         }
 
     }
+
+    internal class WFDStateChangedEventArgs
+    {
+        internal WFDStateChangedEventArgs(WFDState state)
+        {
+            State = state;
+        }
+
+        internal WFDState State
+        {
+            get;
+            set;
+        }
+    }
 }
index 19f174ae5ccee98d330aaa50f124f295451c9332..c0e4b04bf6ae353f55e57986e5bcc788e3ace816 100644 (file)
@@ -1,7 +1,5 @@
 using System;
 using System.ComponentModel;
-using System.Collections.Generic;
-using System.Text;
 using Tizen.Network.WiFiDirect;
 using static SettingWiFiDirect.Logger;
 
@@ -18,32 +16,44 @@ namespace SettingWiFiDirect
         public Peer(WiFiDirectPeer peer)
         {
             mWfdPeer = peer;
-            mPeerName = peer.Name;
-            mAddress = peer.MacAddress;
+            Name = peer.Name;
+            Address = peer.MacAddress;
             mRssi = peer.Rssi;
         }
+
         private void OnPropertyChanged(string propertyName)
         {
             Debug("OnPropertyChanged " + propertyName);
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
         }
 
-        internal string Name
+        public string Name
         {
             get
             {
                 return mPeerName;
             }
+            set
+            {
+                mPeerName = value;
+                OnPropertyChanged("Name");
+            }
         }
 
-        internal string Address
+        public string Address
         {
             get
             {
                 return mAddress;
             }
+            set
+            {
+                mAddress = value;
+                OnPropertyChanged("Address"); //TODO: to be revisited
+            }
         }
-        internal int Rssi
+
+        public int Rssi
         {
             get
             {
index f627ddd34d2d6e76a72da66a45b09c0ba14967d7..146e136315c2dfe5aa43c66a232d53a7f3ee12e9 100644 (file)
@@ -8,4 +8,13 @@ namespace SettingWiFiDirect
     {
         // TODO
     }
+
+    public enum WFDState
+    {
+        //TODO :add more states if needed
+        Deactivated = 0,
+        Activated = 1,
+        Discovering = 2,
+        Connected = 3
+    }
 }
index 91e2ad03613edd41e6ff368305fd1e9de04182cb..94e40881491c3dcba65be1ad2963e4d3b4b0b034 100644 (file)
@@ -63,8 +63,8 @@ namespace SettingWiFiDirect
 
         public PeerSource()
         {
+            Debug("+");
             mAvailable = new DeviceCollection(Resources.IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB);
-            // mPaired = new DeviceCollection("Paired devices");
             this.Add(mAvailable);
         }
 
index 0a7d0fc851e543b1d057e8b9fd0111d8f97b1bde..e261a5162b8e434fd1dabc06b985354c4c744991 100644 (file)
Binary files a/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk and b/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk differ