diff --git a/examples/platform/silabs/BaseApplication.cpp b/examples/platform/silabs/BaseApplication.cpp index c8a99b45ac1a5d..9cf51e8917315a 100644 --- a/examples/platform/silabs/BaseApplication.cpp +++ b/examples/platform/silabs/BaseApplication.cpp @@ -397,13 +397,6 @@ void BaseApplication::LightEventHandler() #endif /* CHIP_ENABLE_OPENTHREAD */ sHaveBLEConnections = (ConnectivityMgr().NumBLEConnections() != 0); -#ifdef DISPLAY_ENABLED - SilabsLCD::DisplayStatus_t status; - status.connected = sIsEnabled && sIsAttached; - status.advertising = chip::Server::GetInstance().GetCommissioningWindowManager().IsCommissioningWindowOpen(); - status.nbFabric = chip::Server::GetInstance().GetFabricTable().FabricCount(); - slLCD.SetStatus(status); -#endif PlatformMgr().UnlockChipStack(); } @@ -467,6 +460,7 @@ void BaseApplication::ButtonHandler(AppEvent * aEvent) OutputQrCode(false); #ifdef DISPLAY_ENABLED + UpdateLCDStatusScreen(); slLCD.CycleScreens(); #endif @@ -663,6 +657,31 @@ SilabsLCD & BaseApplication::GetLCD(void) { return slLCD; } + +void BaseApplication::UpdateLCDStatusScreen(void) +{ + SilabsLCD::DisplayStatus_t status; + bool enabled, attached; + chip::DeviceLayer::PlatformMgr().LockChipStack(); +#ifdef SL_WIFI + enabled = ConnectivityMgr().IsWiFiStationEnabled(); + attached = ConnectivityMgr().IsWiFiStationConnected(); +#endif /* SL_WIFI */ +#if CHIP_ENABLE_OPENTHREAD + enabled = ConnectivityMgr().IsThreadEnabled(); + attached = ConnectivityMgr().IsThreadAttached(); +#endif /* CHIP_ENABLE_OPENTHREAD */ + status.connected = enabled && attached; + status.advertising = chip::Server::GetInstance().GetCommissioningWindowManager().IsCommissioningWindowOpen(); + status.nbFabric = chip::Server::GetInstance().GetFabricTable().FabricCount(); +#if CHIP_CONFIG_ENABLE_ICD_SERVER + status.icdMode = (ICDConfigurationData::GetInstance().GetICDMode() == ICDConfigurationData::ICDMode::SIT) + ? SilabsLCD::ICDMode_e::SIT + : SilabsLCD::ICDMode_e::LIT; +#endif + chip::DeviceLayer::PlatformMgr().UnlockChipStack(); + slLCD.SetStatus(status); +} #endif void BaseApplication::PostEvent(const AppEvent * aEvent) @@ -725,6 +744,10 @@ void BaseApplication::OnPlatformEvent(const ChipDeviceEvent * event, intptr_t) { BaseApplication::sIsProvisioned = event->ServiceProvisioningChange.IsServiceProvisioned; } + +#ifdef DISPLAY_ENABLED + UpdateLCDStatusScreen(); +#endif } void BaseApplication::OutputQrCode(bool refreshLCD) diff --git a/examples/platform/silabs/BaseApplication.h b/examples/platform/silabs/BaseApplication.h index 2377a28ff1bd65..0bde0e76f227a2 100644 --- a/examples/platform/silabs/BaseApplication.h +++ b/examples/platform/silabs/BaseApplication.h @@ -110,6 +110,8 @@ class BaseApplication * @brief Return LCD object */ static SilabsLCD & GetLCD(void); + + static void UpdateLCDStatusScreen(void); #endif /** diff --git a/examples/platform/silabs/display/lcd.cpp b/examples/platform/silabs/display/lcd.cpp index adcb4aea019e40..43a134f923e24c 100644 --- a/examples/platform/silabs/display/lcd.cpp +++ b/examples/platform/silabs/display/lcd.cpp @@ -192,11 +192,11 @@ void SilabsLCD::WriteStatus() GLIB_drawStringOnLine(&glibContext, str, lineNb++, GLIB_ALIGN_LEFT, 0, 0, true); sprintf(str, "Advertising : %c", mStatus.advertising ? 'Y' : 'N'); GLIB_drawStringOnLine(&glibContext, str, lineNb++, GLIB_ALIGN_LEFT, 0, 0, true); -#if CHIP_CONFIG_ENABLE_ICD_SERVER - GLIB_drawStringOnLine(&glibContext, "Is ICD : Y", lineNb++, GLIB_ALIGN_LEFT, 0, 0, true); -#else - GLIB_drawStringOnLine(&glibContext, "Is ICD : N", lineNb++, GLIB_ALIGN_LEFT, 0, 0, true); -#endif + if (mStatus.icdMode != NotICD) + { + sprintf(str, "ICD : %s", mStatus.icdMode == SIT ? "SIT" : "LIT"); + GLIB_drawStringOnLine(&glibContext, str, lineNb++, GLIB_ALIGN_LEFT, 0, 0, true); + } updateDisplay(); } diff --git a/examples/platform/silabs/display/lcd.h b/examples/platform/silabs/display/lcd.h index 9324f068b15742..b6f3fc9a0669fc 100644 --- a/examples/platform/silabs/display/lcd.h +++ b/examples/platform/silabs/display/lcd.h @@ -43,12 +43,20 @@ class SilabsLCD InvalidScreen, } Screen_e; + typedef enum icdMode + { + NotICD = 0, + SIT, + LIT, + } ICDMode_e; + typedef struct dStatus { uint8_t nbFabric = 0; bool connected = false; char networkName[50] = { "TODO" }; bool advertising = false; + ICDMode_e icdMode = NotICD; } DisplayStatus_t; typedef void (*customUICB)(GLIB_Context_t * context); diff --git a/examples/smoke-co-alarm-app/silabs/include/AppConfig.h b/examples/smoke-co-alarm-app/silabs/include/AppConfig.h index c14a373e223c0d..3158c6c34a09aa 100644 --- a/examples/smoke-co-alarm-app/silabs/include/AppConfig.h +++ b/examples/smoke-co-alarm-app/silabs/include/AppConfig.h @@ -30,57 +30,57 @@ #define ACTUATOR_MOVEMENT_PERIOS_MS 10 #define ON_DEMO_BITMAP \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, \ - 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x1f, 0xfe, 0x07, 0xe0, \ - 0x7f, 0xf8, 0xff, 0xff, 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x3c, 0xe0, 0x07, 0x3c, 0xfe, 0xff, 0xff, \ - 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ - 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ - 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ - 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xff, 0x0f, 0x38, 0xfe, 0xff, 0xff, 0x7f, 0x1c, 0xf0, 0x0f, 0x38, 0xfe, 0x03, 0xc0, 0x7f, 0x1c, 0xf0, 0x0f, \ - 0x38, 0xfe, 0x27, 0xe9, 0x7f, 0x1c, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xe7, 0xe7, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xef, 0xf7, 0x7f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xef, 0xf7, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xef, 0xf3, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xcf, 0xf3, \ - 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xdf, 0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xdf, 0xfb, 0x8f, 0xff, 0xff, 0xff, \ - 0xff, 0xe3, 0x9f, 0xf9, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x9f, 0xf9, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x9f, 0xfd, \ - 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xbf, 0xfd, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0xfc, 0xf8, 0xff, 0xff, 0xff, \ - 0xff, 0x3f, 0x3e, 0x7c, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE0, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0xFF, 0x07, \ + 0xE0, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, 0x3F, \ + 0xE0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x1F, 0xF0, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0xFF, 0x0F, 0xF8, 0x0F, 0x00, 0xFE, \ + 0x03, 0xFE, 0xFF, 0x0F, 0xFC, 0x03, 0x00, 0xF8, 0x07, 0xFC, 0xFF, 0x07, 0xFE, 0xC3, 0x7F, 0xF8, 0x0F, 0xFC, 0x07, 0x07, \ + 0xFE, 0xF7, 0xFF, 0xFF, 0x0F, 0xF8, 0x07, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0x1F, 0xF8, 0x07, 0x03, 0xFF, 0x3F, 0x80, 0xFF, \ + 0x3F, 0xF8, 0x07, 0x81, 0xDF, 0x3F, 0x80, 0x7F, 0x3F, 0xF0, 0x07, 0x81, 0x9F, 0x7F, 0xDF, 0x3F, 0x7E, 0xF0, 0x07, 0xC1, \ + 0x8F, 0xFF, 0xFF, 0x3F, 0x7E, 0xF0, 0x07, 0xC0, 0xCF, 0xFF, 0xFF, 0x7F, 0x7C, 0xE0, 0x07, 0xC0, 0xC7, 0xFD, 0xFF, 0x77, \ + 0x7C, 0xE0, 0x07, 0xC0, 0xC7, 0xF9, 0xFF, 0xE3, 0xFC, 0xE0, 0x07, 0xE0, 0xC7, 0xF8, 0xF3, 0xE3, 0xFC, 0xE0, 0x07, 0xE0, \ + 0xE7, 0xF8, 0xE0, 0xE7, 0xFC, 0xE0, 0x07, 0xE0, 0xE7, 0xF8, 0xE0, 0xE7, 0xF8, 0xE0, 0x07, 0xE0, 0xE7, 0xF8, 0xE0, 0xE7, \ + 0xF8, 0xE0, 0x07, 0xE0, 0xE7, 0xF8, 0xE0, 0xE7, 0xF8, 0xE0, 0x07, 0xE0, 0xC7, 0xF8, 0xF3, 0xE3, 0xFC, 0xE0, 0x07, 0xC0, \ + 0xC7, 0xF9, 0xFF, 0xE3, 0xFC, 0xE0, 0xFF, 0xC0, 0xC7, 0xFD, 0xFF, 0x77, 0xFC, 0xE0, 0xFF, 0xC1, 0xCF, 0xFF, 0xFF, 0x7F, \ + 0x7C, 0xE0, 0xFF, 0xC1, 0x8F, 0xFF, 0xFF, 0x3F, 0x7E, 0xF0, 0xFF, 0x81, 0x9F, 0x7F, 0xDF, 0x3F, 0x7E, 0xF0, 0xFF, 0x81, \ + 0xDF, 0x3F, 0x80, 0x7F, 0x3F, 0xF0, 0x07, 0x03, 0xFF, 0x3F, 0x80, 0xFF, 0x3F, 0xF8, 0x07, 0x03, 0xFF, 0xFF, 0xF1, 0xFF, \ + 0x1F, 0xF8, 0x07, 0x07, 0xFE, 0xF7, 0xFF, 0xFF, 0x1F, 0xF8, 0x07, 0x07, 0xFE, 0xC3, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0x0F, \ + 0xFC, 0x03, 0x00, 0xF8, 0x07, 0xFC, 0xFF, 0x0F, 0xF8, 0x0F, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0x1F, 0xF0, 0x7F, 0xC0, 0xFF, \ + 0x01, 0xFF, 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, 0xFF, \ + 0x00, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, 0xFF, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, \ + 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFC, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF #define OFF_DEMO_BITMAP \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x07, 0xfc, 0xff, 0xff, 0xff, \ - 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ - 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ - 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ - 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ - 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, \ - 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, \ - 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ - 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ - 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, \ - 0xff, 0x3f, 0xfe, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xF8, 0x1F, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, \ + 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x03, 0xFE, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0x01, 0x80, \ + 0xFF, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0x7F, 0xF8, 0x1F, 0xFE, 0x81, 0xFF, 0xFF, \ + 0xC0, 0xFF, 0xFE, 0x7F, 0xFF, 0x03, 0xFF, 0x7F, 0xE0, 0xFF, 0x3F, 0xFC, 0xFF, 0x03, 0xFF, 0x7F, 0xE0, 0xFF, 0x07, 0xE0, \ + 0xFF, 0x07, 0xFE, 0x7F, 0xF0, 0xF7, 0x07, 0xE0, 0xEF, 0x07, 0xFE, 0x3F, 0xF0, 0xE3, 0xEF, 0xF7, 0xC7, 0x0F, 0xFE, 0x3F, \ + 0xF0, 0xF1, 0xFF, 0xFF, 0x8F, 0x0F, 0xFC, 0x3F, 0xF8, 0xF1, 0xFF, 0xFF, 0x8F, 0x1F, 0xFC, 0x3F, 0xF8, 0x71, 0xFF, 0xFF, \ + 0x8E, 0x1F, 0xFC, 0x3F, 0xF8, 0x38, 0xFE, 0x7F, 0x1C, 0x1F, 0xFC, 0x1F, 0xF8, 0x38, 0x7F, 0xFE, 0x1C, 0x1F, 0xFC, 0x1F, \ + 0xF8, 0x38, 0x3F, 0xFC, 0x1C, 0x1F, 0xFC, 0x1F, 0xF8, 0x18, 0x1F, 0xF8, 0x18, 0x1F, 0xF8, 0x1F, 0xF8, 0x18, 0x1F, 0xF8, \ + 0x18, 0x1F, 0xF8, 0x1F, 0xF8, 0x18, 0x3F, 0xFC, 0x1C, 0x1F, 0xF8, 0x1F, 0xF8, 0x38, 0x7F, 0xFE, 0x1C, 0x1F, 0xFC, 0x3F, \ + 0xF8, 0x38, 0xFE, 0x7F, 0x1C, 0x1F, 0xFC, 0x3F, 0xF8, 0x39, 0xFF, 0xFF, 0x9C, 0x1F, 0xFC, 0x3F, 0xF8, 0xF1, 0xFF, 0xFF, \ + 0x8F, 0x1F, 0xFC, 0x3F, 0xF0, 0xF1, 0xFF, 0xFF, 0x8F, 0x0F, 0xFC, 0x3F, 0xF0, 0xE3, 0xEF, 0xF7, 0xC7, 0x0F, 0xFC, 0x7F, \ + 0xF0, 0xF7, 0x07, 0xE0, 0xEF, 0x0F, 0xFE, 0x7F, 0xE0, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0xFE, 0xFF, 0xE0, 0xFF, 0x3F, 0xFC, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFE, 0x7F, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, 0xF8, 0x1F, 0xFE, 0x81, 0xFF, 0xFF, \ + 0x81, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0x01, 0x80, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFE, 0x0F, 0xF0, \ + 0x7F, 0xC0, 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, \ + 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0x3F, \ + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF