Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ jobs:
$archive = Join-Path $env:RUNNER_TEMP 'baseline.zip'
$destination = Join-Path $env:RUNNER_TEMP 'baseline'
Invoke-WebRequest `
-Uri 'https://github.com/dotMorten/matter.winrt/releases/download/v0.1.0-preview.6/Matter.Windows.Controller.0.1.0-preview.6.nupkg' `
-Uri 'https://github.com/dotMorten/matter.winrt/releases/download/v0.1.0-preview.8/Matter.Windows.Controller.0.1.0-preview.8.nupkg' `
-OutFile $package
$expectedHash = '8DC16FB9707BADB8BAAF4CDCA4FB590FDDB12D55FA3796B7FE8EC4F4C4B02334'
$expectedHash = '82C970ECE9B76209F80EE694523A57F52E3106F03947A0E78D4D5BB376D40199'
$actualHash = (Get-FileHash $package -Algorithm SHA256).Hash
if ($actualHash -ne $expectedHash) {
throw "Compatibility baseline hash mismatch. Expected $expectedHash; got $actualHash."
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ repository is not a GN source tree and does not create directory junctions to
the SDK.

The build produces
`artifacts\Matter.Windows.Controller.0.1.0-preview.8.nupkg`. The package
`artifacts\Matter.Windows.Controller.0.1.0-preview.9.nupkg`. The package
contains a WinMD plus architecture-specific native DLLs for `win-x64` and
`win-arm64`.

Expand Down
22 changes: 22 additions & 0 deletions samples/ControllerApp/ApiSurfaceCompileChecks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,26 @@ internal static async Task ExerciseGenericInteractionsAsync(MatterController con
await controller.SubscribeEventAsync(nodeId, eventPath, 0, 1, 60);
await eventSubscription.CloseAsync();
}

internal static async Task ExerciseNetworkCommissioningAsync(MatterController controller)
{
var wiFi = new BleNetworkCommissioningParameters
{
NodeId = 1,
SetupPinCode = 20202021,
LongDiscriminator = 3840,
WiFi = new WiFiNetworkCredentials("network", "passphrase")
};
await new MatterControllerNetworkCommissioning(controller).CommissionBleAsync(wiFi);

var dataset = new Windows.Storage.Streams.Buffer(16) { Length = 16 };
var thread = new BleNetworkCommissioningParameters
{
NodeId = 2,
SetupPinCode = 20202021,
LongDiscriminator = 3840,
Thread = new ThreadNetworkCredentials(dataset)
};
await new MatterControllerNetworkCommissioning(controller).CommissionBleAsync(thread);
}
}
48 changes: 30 additions & 18 deletions samples/ControllerApp/Dialogs/AddDeviceDialog.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,27 +68,39 @@
AutomationProperties.AutomationId="AddDeviceSharingCode" />
</StackPanel>

<Grid
ColumnSpacing="12"
<StackPanel
Spacing="10"
Visibility="{x:Bind local:AddDeviceDialog.When(ViewModel.UsesBluetooth), Mode=OneWay}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<NumberBox
Header="Setup PIN"
<Grid ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<NumberBox
Header="Setup PIN"
IsEnabled="{x:Bind ViewModel.CanChangeConnection, Mode=OneWay}"
Value="{x:Bind ViewModel.SetupPinCode, Mode=TwoWay}"
SpinButtonPlacementMode="Compact"
AutomationProperties.AutomationId="AddDeviceSetupPin" />
<NumberBox
Grid.Column="1"
Header="Long discriminator"
IsEnabled="{x:Bind ViewModel.CanChangeConnection, Mode=OneWay}"
Value="{x:Bind ViewModel.LongDiscriminator, Mode=TwoWay}"
SpinButtonPlacementMode="Compact"
AutomationProperties.AutomationId="AddDeviceDiscriminator" />
</Grid>
<TextBox
Header="Wi-Fi network name"
IsEnabled="{x:Bind ViewModel.CanChangeConnection, Mode=OneWay}"
Value="{x:Bind ViewModel.SetupPinCode, Mode=TwoWay}"
SpinButtonPlacementMode="Compact"
AutomationProperties.AutomationId="AddDeviceSetupPin" />
<NumberBox
Grid.Column="1"
Header="Long discriminator"
Text="{x:Bind ViewModel.WiFiSsid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutomationProperties.AutomationId="AddDeviceWiFiSsid" />
<PasswordBox
Header="Wi-Fi password"
IsEnabled="{x:Bind ViewModel.CanChangeConnection, Mode=OneWay}"
Value="{x:Bind ViewModel.LongDiscriminator, Mode=TwoWay}"
SpinButtonPlacementMode="Compact"
AutomationProperties.AutomationId="AddDeviceDiscriminator" />
</Grid>
Password="{x:Bind ViewModel.WiFiPassphrase, Mode=TwoWay}"
AutomationProperties.AutomationId="AddDeviceWiFiPassphrase" />
</StackPanel>

</StackPanel>

Expand Down
2 changes: 1 addition & 1 deletion samples/ControllerApp/MatterControllerApp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.3.1" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools.WinApp" Version="0.6.1" />
<PackageReference Include="Matter.Windows.Controller" Version="0.1.0-preview.8" />
<PackageReference Include="Matter.Windows.Controller" Version="0.1.0-preview.9" />
<PackageReference Include="WinUIEx" Version="2.9.3" />
</ItemGroup>

Expand Down
10 changes: 7 additions & 3 deletions samples/ControllerApp/Services/ControllerSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,18 +96,22 @@ public async Task<AddedDeviceResult> CommissionOnNetworkAsync(

public async Task<AddedDeviceResult> CommissionBleAsync(
uint setupPinCode,
ushort longDiscriminator)
ushort longDiscriminator,
string wiFiSsid,
string wiFiPassphrase)
{
MatterController controller = RequireController();
ulong nodeId = AllocateNodeId(controller);
CommissionedNode node;
try
{
node = await controller.CommissionBleAsync(new BleCommissioningParameters
node = await new MatterControllerNetworkCommissioning(controller).CommissionBleAsync(
new BleNetworkCommissioningParameters
{
NodeId = nodeId,
SetupPinCode = setupPinCode,
LongDiscriminator = longDiscriminator
LongDiscriminator = longDiscriminator,
WiFi = new WiFiNetworkCredentials(wiFiSsid, wiFiPassphrase)
});
}
catch (Exception exception) when (
Expand Down
26 changes: 25 additions & 1 deletion samples/ControllerApp/ViewModels/AddDeviceDialogViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ public ushort LongDiscriminator
set => SetProperty(ref longDiscriminator, value);
}

private string wiFiSsid = string.Empty;
public string WiFiSsid
{
get => wiFiSsid;
set => SetProperty(ref wiFiSsid, value);
}

private string wiFiPassphrase = string.Empty;
public string WiFiPassphrase
{
get => wiFiPassphrase;
set => SetProperty(ref wiFiPassphrase, value);
}

private string status = "Ready to connect.";
public string Status
{
Expand Down Expand Up @@ -154,6 +168,10 @@ public async Task<AddedDeviceResult> ConnectAsync()
throw new InvalidOperationException("Enter the device's sharing code.");
}
}
else if (string.IsNullOrWhiteSpace(WiFiSsid))
{
throw new InvalidOperationException("Enter the Wi-Fi network name.");
}
IsBusy = true;
Status = UsesSharingCode
? "Connecting with the sharing code…"
Expand All @@ -168,7 +186,9 @@ public async Task<AddedDeviceResult> ConnectAsync()
LongDiscriminator)
: await session.CommissionBleAsync(
SetupPinCode,
LongDiscriminator);
LongDiscriminator,
WiFiSsid,
WiFiPassphrase);
DeviceName = connectedDevice.Device.DisplayName;
OnPropertyChanged(nameof(IsConnecting));
OnPropertyChanged(nameof(IsNaming));
Expand All @@ -182,6 +202,10 @@ public async Task<AddedDeviceResult> ConnectAsync()
}
finally
{
if (UsesBluetooth)
{
WiFiPassphrase = string.Empty;
}
IsBusy = false;
}
}
Expand Down
2 changes: 1 addition & 1 deletion tools/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
param(
[ValidateSet("x64", "arm64", "all")]
[string] $Architecture = "all",
[string] $Version = "0.1.0-preview.8",
[string] $Version = "0.1.0-preview.9",
[string] $OutputDirectory = "artifacts",
[switch] $SkipBuild
)
Expand Down
2 changes: 2 additions & 0 deletions winrt/BleNetworkCommissioningParameters.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#pragma once
#include "ProjectionTypes.h"
30 changes: 30 additions & 0 deletions winrt/Matter.Windows.Controller.idl
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import "windows.foundation.idl";
import "windows.storage.streams.idl";

namespace Matter.Windows.Controller
{
Expand Down Expand Up @@ -40,6 +41,29 @@ namespace Matter.Windows.Controller
UInt16 LongDiscriminator { get; set; };
};

runtimeclass WiFiNetworkCredentials
{
WiFiNetworkCredentials(String ssid, String passphrase);
UInt32 SsidLength { get; };
UInt32 PassphraseLength { get; };
};

runtimeclass ThreadNetworkCredentials
{
ThreadNetworkCredentials(Windows.Storage.Streams.IBuffer operationalDataset);
UInt32 DatasetLength { get; };
};

runtimeclass BleNetworkCommissioningParameters
{
BleNetworkCommissioningParameters();
UInt64 NodeId { get; set; };
UInt32 SetupPinCode { get; set; };
UInt16 LongDiscriminator { get; set; };
WiFiNetworkCredentials WiFi { get; set; };
ThreadNetworkCredentials Thread { get; set; };
};

runtimeclass CommissioningProgressEventArgs
{
CommissioningStage Stage { get; };
Expand Down Expand Up @@ -185,4 +209,10 @@ namespace Matter.Windows.Controller
MatterControllerRecovery(MatterController controller);
Windows.Foundation.IAsyncOperation<CommissionedNode> RecoverNodeAsync(UInt64 nodeId);
};

runtimeclass MatterControllerNetworkCommissioning
{
MatterControllerNetworkCommissioning(MatterController controller);
Windows.Foundation.IAsyncOperation<CommissionedNode> CommissionBleAsync(BleNetworkCommissioningParameters parameters);
};
}
52 changes: 52 additions & 0 deletions winrt/Matter.Windows.Controller.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions winrt/MatterControllerNetworkCommissioning.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#pragma once
#include "ProjectionTypes.h"
Loading