This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

WEBENCH® Tools/CC2652R: issue of "ota_client_app.c"

Part Number: CC2652R

Tool/software: WEBENCH® Design Tools

My last solotion for ota_client_app's issue is only working when OTA-endpoint is a standalone. If OTA-endpoint is shareing with Application-endpoint, it can be fixed like this.

uint8_t (*zclOTAClientUserMsgCB)(zclIncoming_t *pInMsg) = NULL;

bool OTAClient_SetEndpoint( uint8_t endpoint, zclport_pFnZclHandleExternal pfnCB )
{
  if( currentOtaEndpoint == OTA_UNUSED_ENDPOINT )
  {
    currentOtaEndpoint = endpoint;
    // Register for all OTA End Point, unhandled, ZCL foundation commands

    //zcl_registerForMsgExt( zclOTA_TaskID, currentOtaEndpoint ); // use zclport_registerZclHandleExternal
    zclport_registerZclHandleExternal( endpoint, OTA_ProcessUnhandledFoundationZCLMsgs );
    zclOTAClientUserMsgCB = pfnCB;
    return TRUE;
  }
  else if( endpoint == currentOtaEndpoint)
  {
    return TRUE;
  }
  else
  {
    return FALSE;
  }
}

static uint8_t OTA_ProcessUnhandledFoundationZCLMsgs ( zclIncoming_t *pMsg )
{
  zclIncomingMsg_t *pCmd;

  if( zclOTAClientUserMsgCB )
  {
    zclOTAClientUserMsgCB( pMsg );
  }

  pCmd = (zclIncomingMsg_t *)OsalPort_msgAllocate( sizeof ( zclIncomingMsg_t ) );
  if ( pCmd != NULL )
  {
    // fill in the message
    pCmd->hdr.event = ZCL_INCOMING_MSG;
    pCmd->zclHdr    = pMsg->hdr;
    pCmd->clusterId = pMsg->msg->clusterId;
    pCmd->srcAddr   = pMsg->msg->srcAddr;
    pCmd->endPoint  = pMsg->msg->endPoint;
    pCmd->attrCmd   = pMsg->attrCmd;


    switch ( pCmd->zclHdr.commandID )
    {
      case ZCL_CMD_DEFAULT_RSP:
        zclOTA_ProcessInDefaultRspCmd( pCmd );
        break;
      default :
        break;
    }
    OsalPort_msgDeallocate((uint8_t *)pCmd);
  }

  if ( pMsg->attrCmd )
  {
    //OsalPort_free( pMsg->attrCmd );
    OsalPort_free(pMsg->attrCmd);
    pMsg->attrCmd = NULL;
  }

  return 0;
}