[Fabric-Sync] Add VID/PID fields to IPC method CommissionNode (#35116)

* Add VID/PID field to IPC methode CommissionNode

* Use QRCodeSetupPayloadGenerator to generate pairing code
diff --git a/examples/common/pigweed/protos/fabric_admin_service.proto b/examples/common/pigweed/protos/fabric_admin_service.proto
index 3c31149..3df3e2a 100644
--- a/examples/common/pigweed/protos/fabric_admin_service.proto
+++ b/examples/common/pigweed/protos/fabric_admin_service.proto
@@ -19,7 +19,9 @@
   uint32 discriminator = 1;
   uint32 iterations = 2;
   uint32 setup_pin = 3;
-  bytes salt = 4;
+  uint32 vendor_id = 4;
+  uint32 product_id = 5;  
+  bytes salt = 6;
 }
 
 message KeepActiveParameters {
diff --git a/examples/fabric-admin/device_manager/DeviceManager.h b/examples/fabric-admin/device_manager/DeviceManager.h
index d3b47c4..1fb2ad5 100644
--- a/examples/fabric-admin/device_manager/DeviceManager.h
+++ b/examples/fabric-admin/device_manager/DeviceManager.h
@@ -156,11 +156,11 @@
 
     void HandleCommandResponse(const chip::app::ConcreteCommandPath & path, chip::TLV::TLVReader & data);
 
-    void OnDeviceRemoved(chip::NodeId deviceId, CHIP_ERROR err) override;
-
 private:
     friend DeviceManager & DeviceMgr();
 
+    void OnDeviceRemoved(chip::NodeId deviceId, CHIP_ERROR err) override;
+
     void RequestCommissioningApproval();
 
     void HandleReadSupportedDeviceCategories(chip::TLV::TLVReader & data);
diff --git a/examples/fabric-admin/rpc/RpcServer.cpp b/examples/fabric-admin/rpc/RpcServer.cpp
index f240fed..d563995 100644
--- a/examples/fabric-admin/rpc/RpcServer.cpp
+++ b/examples/fabric-admin/rpc/RpcServer.cpp
@@ -29,7 +29,7 @@
 #include <commands/fabric-sync/FabricSyncCommand.h>
 #include <commands/interactive/InteractiveCommands.h>
 #include <device_manager/DeviceManager.h>
-#include <setup_payload/ManualSetupPayloadGenerator.h>
+#include <setup_payload/QRCodeSetupPayloadGenerator.h>
 #include <system/SystemClock.h>
 
 #if defined(PW_RPC_FABRIC_ADMIN_SERVICE) && PW_RPC_FABRIC_ADMIN_SERVICE
@@ -103,16 +103,18 @@
 
         setupPayload.setUpPINCode = request.setup_pin;
         setupPayload.version      = 0;
+        setupPayload.vendorID     = request.vendor_id;
+        setupPayload.productID    = request.product_id;
         setupPayload.rendezvousInformation.SetValue(RendezvousInformationFlag::kOnNetwork);
 
         SetupDiscriminator discriminator{};
         discriminator.SetLongValue(request.discriminator);
         setupPayload.discriminator = discriminator;
 
-        char payloadBuffer[kMaxManualCodeLength + 1];
-        MutableCharSpan manualCode(payloadBuffer);
+        QRCodeSetupPayloadGenerator generator(setupPayload);
+        std::string code;
+        CHIP_ERROR error = generator.payloadBase38RepresentationWithAutoTLVBuffer(code);
 
-        CHIP_ERROR error = ManualSetupPayloadGenerator(setupPayload).payloadDecimalStringRepresentation(manualCode);
         if (error == CHIP_NO_ERROR)
         {
             NodeId nodeId = DeviceMgr().GetNextAvailableNodeId();
@@ -121,11 +123,11 @@
             // RequestCommissioningApproval, you need to wait for it to open a commissioning window on its bridge.
             usleep(kCommissionPrepareTimeMs * 1000);
 
-            DeviceMgr().PairRemoteDevice(nodeId, payloadBuffer);
+            DeviceMgr().PairRemoteDevice(nodeId, code.c_str());
         }
         else
         {
-            ChipLogError(NotSpecified, "Unable to generate manual code for setup payload: %" CHIP_ERROR_FORMAT, error.Format());
+            ChipLogError(NotSpecified, "Unable to generate pairing code for setup payload: %" CHIP_ERROR_FORMAT, error.Format());
         }
 
         return pw::OkStatus();
diff --git a/examples/fabric-bridge-app/linux/CommissionerControl.cpp b/examples/fabric-bridge-app/linux/CommissionerControl.cpp
index 9f31806..3613aee 100644
--- a/examples/fabric-bridge-app/linux/CommissionerControl.cpp
+++ b/examples/fabric-bridge-app/linux/CommissionerControl.cpp
@@ -137,7 +137,8 @@
                               .SetTimeout(params.commissioningTimeout)
                               .SetDiscriminator(params.discriminator)
                               .SetIteration(params.iterations)
-                              .SetSalt(params.salt));
+                              .SetSalt(params.salt),
+                          mVendorId, mProductId);
 #else
     ChipLogProgress(NotSpecified, "Failed to reverse commission bridge: PW_RPC_FABRIC_BRIDGE_SERVICE not defined");
     return CHIP_ERROR_NOT_IMPLEMENTED;
diff --git a/examples/fabric-bridge-app/linux/RpcClient.cpp b/examples/fabric-bridge-app/linux/RpcClient.cpp
index b3c8230..817479d 100644
--- a/examples/fabric-bridge-app/linux/RpcClient.cpp
+++ b/examples/fabric-bridge-app/linux/RpcClient.cpp
@@ -163,12 +163,14 @@
 }
 
 CHIP_ERROR
-CommissionNode(chip::Controller::CommissioningWindowPasscodeParams params)
+CommissionNode(chip::Controller::CommissioningWindowPasscodeParams params, VendorId vendorId, uint16_t productId)
 {
     chip_rpc_DeviceCommissioningInfo device;
     device.setup_pin     = params.GetSetupPIN();
     device.discriminator = params.GetDiscriminator();
     device.iterations    = params.GetIteration();
+    device.vendor_id     = vendorId;
+    device.product_id    = productId;
 
     VerifyOrReturnError(params.GetSalt().size() <= sizeof(device.salt.bytes), CHIP_ERROR_BUFFER_TOO_SMALL);
     memcpy(device.salt.bytes, params.GetSalt().data(), params.GetSalt().size());
diff --git a/examples/fabric-bridge-app/linux/include/RpcClient.h b/examples/fabric-bridge-app/linux/include/RpcClient.h
index 87ccba2..c7628a8 100644
--- a/examples/fabric-bridge-app/linux/include/RpcClient.h
+++ b/examples/fabric-bridge-app/linux/include/RpcClient.h
@@ -60,12 +60,20 @@
 /**
  * Commission a node using the specified parameters.
  *
- * @param params    Params for commissioning the device using passcode.
+ * This function initiates the commissioning process for a node, utilizing
+ * the provided passcode parameters, vendor ID, and product ID.
+ *
+ * @param params    Parameters required for commissioning the device using passcode.
+ * @param vendorId  The Vendor ID (VID) of the device being commissioned. This identifies
+ *                  the manufacturer of the device.
+ * @param productId The Product ID (PID) of the device being commissioned. This identifies
+ *                  the specific product within the vendor's lineup.
+ *
  * @return CHIP_ERROR An error code indicating the success or failure of the operation.
- * - CHIP_NO_ERROR: The RPC command was successfully sent.
- * - CHIP_ERROR_INTERNAL: An internal error occurred.
+ * - CHIP_NO_ERROR: The RPC command was successfully sent and the commissioning process was initiated.
+ * - CHIP_ERROR_INTERNAL: An internal error occurred during the preparation or sending of the command.
  */
 CHIP_ERROR
-CommissionNode(chip::Controller::CommissioningWindowPasscodeParams params);
+CommissionNode(chip::Controller::CommissioningWindowPasscodeParams params, chip::VendorId vendorId, uint16_t productId);
 
 CHIP_ERROR KeepActive(chip::NodeId nodeId, uint32_t stayActiveDurationMs);