Window Covering App QR Code Fix (#23539)
diff --git a/examples/window-app/efr32/src/WindowAppImpl.cpp b/examples/window-app/efr32/src/WindowAppImpl.cpp
index 7f9eeac..2675b73 100644
--- a/examples/window-app/efr32/src/WindowAppImpl.cpp
+++ b/examples/window-app/efr32/src/WindowAppImpl.cpp
@@ -26,6 +26,10 @@
#include <platform/CHIPDeviceLayer.h>
#ifdef QR_CODE_ENABLED
#include <qrcodegen.h>
+#else
+#include "EFR32DeviceDataProvider.h"
+#include <setup_payload/QRCodeSetupPayloadGenerator.h>
+#include <setup_payload/SetupPayload.h>
#endif // QR_CODE_ENABLED
#include <sl_simple_button_instances.h>
@@ -54,6 +58,8 @@
#define LCD_ICON_TIMEOUT 1000
using namespace chip::app::Clusters::WindowCovering;
+using namespace chip;
+using namespace ::chip::DeviceLayer;
#define APP_STATE_LED &sl_led_led0
#define APP_ACTION_LED &sl_led_led1
@@ -212,6 +218,21 @@
slLCD.Init();
#endif
+#ifndef QR_CODE_ENABLED
+ // Create buffer for QR code that can fit max size and null terminator.
+ char qrCodeBuffer[chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1];
+ chip::MutableCharSpan QRCode(qrCodeBuffer);
+
+ if (EFR32::EFR32DeviceDataProvider::GetDeviceDataProvider().GetSetupPayload(QRCode) == CHIP_NO_ERROR)
+ {
+ PrintQrCodeURL(QRCode);
+ }
+ else
+ {
+ EFR32_LOG("Getting QR code failed!");
+ }
+#endif // QR_CODE_ENABLED
+
return CHIP_NO_ERROR;
}