29
29
#include < commands/fabric-sync/FabricSyncCommand.h>
30
30
#include < commands/interactive/InteractiveCommands.h>
31
31
#include < device_manager/DeviceManager.h>
32
- #include < setup_payload/ManualSetupPayloadGenerator .h>
32
+ #include < setup_payload/QRCodeSetupPayloadGenerator .h>
33
33
#include < system/SystemClock.h>
34
34
35
35
#if defined(PW_RPC_FABRIC_ADMIN_SERVICE) && PW_RPC_FABRIC_ADMIN_SERVICE
@@ -103,16 +103,18 @@ class FabricAdmin final : public rpc::FabricAdmin, public IcdManager::Delegate
103
103
104
104
setupPayload.setUpPINCode = request.setup_pin ;
105
105
setupPayload.version = 0 ;
106
+ setupPayload.vendorID = request.vendor_id ;
107
+ setupPayload.productID = request.product_id ;
106
108
setupPayload.rendezvousInformation .SetValue (RendezvousInformationFlag::kOnNetwork );
107
109
108
110
SetupDiscriminator discriminator{};
109
111
discriminator.SetLongValue (request.discriminator );
110
112
setupPayload.discriminator = discriminator;
111
113
112
- char payloadBuffer[kMaxManualCodeLength + 1 ];
113
- MutableCharSpan manualCode (payloadBuffer);
114
+ QRCodeSetupPayloadGenerator generator (setupPayload);
115
+ std::string code;
116
+ CHIP_ERROR error = generator.payloadBase38RepresentationWithAutoTLVBuffer (code);
114
117
115
- CHIP_ERROR error = ManualSetupPayloadGenerator (setupPayload).payloadDecimalStringRepresentation (manualCode);
116
118
if (error == CHIP_NO_ERROR)
117
119
{
118
120
NodeId nodeId = DeviceMgr ().GetNextAvailableNodeId ();
@@ -121,11 +123,11 @@ class FabricAdmin final : public rpc::FabricAdmin, public IcdManager::Delegate
121
123
// RequestCommissioningApproval, you need to wait for it to open a commissioning window on its bridge.
122
124
usleep (kCommissionPrepareTimeMs * 1000 );
123
125
124
- DeviceMgr ().PairRemoteDevice (nodeId, payloadBuffer );
126
+ DeviceMgr ().PairRemoteDevice (nodeId, code. c_str () );
125
127
}
126
128
else
127
129
{
128
- ChipLogError (NotSpecified, " Unable to generate manual code for setup payload: %" CHIP_ERROR_FORMAT, error.Format ());
130
+ ChipLogError (NotSpecified, " Unable to generate pairing code for setup payload: %" CHIP_ERROR_FORMAT, error.Format ());
129
131
}
130
132
131
133
return pw::OkStatus ();
0 commit comments