diff --git a/src/app/server/OnboardingCodesUtil.cpp b/src/app/server/OnboardingCodesUtil.cpp index 08c16f55437ba8..67d529179ba500 100644 --- a/src/app/server/OnboardingCodesUtil.cpp +++ b/src/app/server/OnboardingCodesUtil.cpp @@ -64,6 +64,15 @@ void PrintOnboardingCodes(chip::RendezvousInformationFlags aRendezvousFlags) { ChipLogError(AppServer, "Getting manual pairing code failed!"); } + + if (GetLongManualPairingCode(manualPairingCode, aRendezvousFlags) == CHIP_NO_ERROR) + { + ChipLogProgress(AppServer, "Long manual pairing code: [%s]", manualPairingCode.c_str()); + } + else + { + ChipLogError(AppServer, "Getting long manual pairing code failed!"); + } } void PrintOnboardingCodes(const chip::SetupPayload & payload) @@ -217,6 +226,28 @@ CHIP_ERROR GetManualPairingCode(std::string & aManualPairingCode, chip::Rendezvo return CHIP_NO_ERROR; } +CHIP_ERROR GetLongManualPairingCode(std::string & aManualPairingCode, chip::RendezvousInformationFlags aRendezvousFlags) +{ + chip::SetupPayload payload; + + CHIP_ERROR err = GetSetupPayload(payload, aRendezvousFlags); + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(AppServer, "GetSetupPayload() failed: %s", chip::ErrorStr(err)); + return err; + } + + payload.commissioningFlow = chip::CommissioningFlow::kCustom; + err = chip::ManualSetupPayloadGenerator(payload).payloadDecimalStringRepresentation(aManualPairingCode); + if (err != CHIP_NO_ERROR) + { + ChipLogProgress(AppServer, "Generating long manual pairing code failed: %s", chip::ErrorStr(err)); + return err; + } + + return CHIP_NO_ERROR; +} + CHIP_ERROR GetManualPairingCode(std::string & aManualPairingCode, const chip::SetupPayload & payload) { CHIP_ERROR err = chip::ManualSetupPayloadGenerator(payload).payloadDecimalStringRepresentation(aManualPairingCode); diff --git a/src/app/server/OnboardingCodesUtil.h b/src/app/server/OnboardingCodesUtil.h index e586b852c132eb..c30e6cacfd7308 100644 --- a/src/app/server/OnboardingCodesUtil.h +++ b/src/app/server/OnboardingCodesUtil.h @@ -26,6 +26,7 @@ CHIP_ERROR GetQRCode(std::string & aQRCode, chip::RendezvousInformationFlags aRe CHIP_ERROR GetQRCode(std::string & aQRCode, const chip::SetupPayload & payload); CHIP_ERROR GetQRCodeUrl(char * aQRCodeUrl, size_t aUrlMaxSize, const std::string & aQRCode); CHIP_ERROR GetManualPairingCode(std::string & aManualPairingCode, chip::RendezvousInformationFlags aRendezvousFlags); +CHIP_ERROR GetLongManualPairingCode(std::string & aManualPairingCode, chip::RendezvousInformationFlags aRendezvousFlags); CHIP_ERROR GetManualPairingCode(std::string & aManualPairingCode, const chip::SetupPayload & payload); CHIP_ERROR GetSetupPayload(chip::SetupPayload & aSetupPayload, chip::RendezvousInformationFlags aRendezvousFlags);