From afca5f9a986f04cd701c51ad32cc36a54b67f11f Mon Sep 17 00:00:00 2001 From: Akash Kumar Date: Mon, 16 Dec 2024 14:33:35 +0530 Subject: [PATCH] Update logic to show wfd peers on main page 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 --- .../SettingWiFiDirect/SettingWiFiDirect.cs | 57 +++++++++++---- .../SettingWiFiDirect/WiFiDirectConfig.cs | 2 +- .../controller/WiFiDirect.cs | 65 ++++++++++++++++-- .../SettingWiFiDirect/model/Peer.cs | 24 +++++-- .../model/WfdEnumerations.cs | 9 +++ .../view/WiFiDirectDeviceView.cs | 2 +- .../org.tizen.cssetting-wifi-direct-1.0.2.rpk | Bin 61690 -> 64206 bytes 7 files changed, 130 insertions(+), 29 deletions(-) diff --git a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs index ab2ae1a..ac98992 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs @@ -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 items) @@ -48,20 +49,13 @@ namespace SettingWiFiDirect } Resources.SetPath(GetResourcePath("")); + StartScan(); } protected override View OnCreate() { + Debug("+"); base.OnCreate(); - try - { - List 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 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 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); diff --git a/SettingWiFiDirect/SettingWiFiDirect/WiFiDirectConfig.cs b/SettingWiFiDirect/SettingWiFiDirect/WiFiDirectConfig.cs index 4cd997d..130aa01 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/WiFiDirectConfig.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/WiFiDirectConfig.cs @@ -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; diff --git a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs index cdc525c..44df275 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs @@ -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 mFoundDeviceList = new List(); IEnumerable mConnectedDeviceList = new List(); - // IEnumerable specificAPList = new List(); + private event EventHandler 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 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 GetScanResult() { - Debug("WiFi.GetScanResult"); + Debug("+"); try { mFoundDeviceList = WiFiDirectManager.GetDiscoveredPeers(); @@ -87,9 +123,10 @@ namespace SettingWiFiDirect return null; } + public List GetPeerList() { - Debug("WiFi.GetAPList"); + Debug("+"); List peerList = new List(); 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; + } + } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs b/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs index 19f174a..c0e4b04 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs @@ -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 { diff --git a/SettingWiFiDirect/SettingWiFiDirect/model/WfdEnumerations.cs b/SettingWiFiDirect/SettingWiFiDirect/model/WfdEnumerations.cs index f627ddd..146e136 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/model/WfdEnumerations.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/model/WfdEnumerations.cs @@ -8,4 +8,13 @@ namespace SettingWiFiDirect { // TODO } + + public enum WFDState + { + //TODO :add more states if needed + Deactivated = 0, + Activated = 1, + Discovering = 2, + Connected = 3 + } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs index 91e2ad0..94e4088 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs @@ -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); } diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk index 0a7d0fc851e543b1d057e8b9fd0111d8f97b1bde..e261a5162b8e434fd1dabc06b985354c4c744991 100644 GIT binary patch delta 23077 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

Va>( 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 -- 2.34.1