     // Handle poll/cmd message (at relay).
     // IFF this message is addressed to this (target) unit's house code
     // then action the commands and respond (quickly) with a poll response.
-    case OTRadioLink::FTp2_CC1PollAndCmd:
+#if !defined(ENABLE_OTSECUREFRAME_ENCODING_SUPPORT)
+    case OTRadioLink::FTp2_CC1PollAndCmd: // Non-secure.
+#else
+    case 0x80 | OTRadioLink::FTp2_CC1PollAndCmd: // Secure.
+#endif // !defined(ENABLE_OTSECUREFRAME_ENCODING_SUPPORT)
       {
       OTProtocolCC::CC1PollAndCommand c;
-      c.OTProtocolCC::CC1PollAndCommand::decodeSimple(msg, msglen);
+      c.OTProtocolCC::CC1PollAndCommand::decodeSimple(cleartextBody, cleartextBodyLen);
       // After decode instance should be valid and with correct house code.
       if(c.isValid())
         {

#if !defined(ENABLE_OTSECUREFRAME_ENCODING_SUPPORT)
   // For non-secure, check that there enough bytes for expected (fixed) frame size.
   if(msglen < 8) { return; } // Too short to be useful, so ignore.
#else 
  // For length-first OpenTRV secureable-frame format, validate structure of header/frame first.
  // This is quick and checks for insane/dangerous values throughout.

#endif
    return; // FAIL
    }
   const uint8_t *cleartextBody = secBodyBuf;
   const uint8_t cleartextBodyLen = decryptedBodyOutSize;
#endif // ENABLE_OTSECUREFRAME_ENCODING_SUPPORT

  const uint8_t firstByte = msg[0];
