From: Akash Kumar Date: Mon, 16 Dec 2024 09:03:35 +0000 (+0530) Subject: Update logic to show wfd peers on main page X-Git-Tag: accepted/tizen/unified/20250113.133501~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=afca5f9a986f04cd701c51ad32cc36a54b67f11f;p=profile%2Fiot%2Fapps%2Fdotnet%2Fsetting-wifi-direct.git 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 --- 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 0a7d0fc..e261a51 100644 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