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.

CC2652R: Problem with 2652R ZC and Contact Switch ZED

Part Number: CC2652R
Other Parts Discussed in Thread: LAUNCHXL-CC26X2R1, CC1312R, CC1352R, CC2642R

Hello,

I have developed an app for CC2652R as ZC starting from zc_generic_app coordinator.

I'm from Argentina and as you all know this weekend there was a massive power shutdown. All the contact switch sensors that i had in my CC2652R 's network where unable to communicate with it after power came back.

Does anyone know what could have happened?

Thanks in Advance

Regards,

Matias

  • Do you enable NV_RESTORE in your application?

  • If it is not enabled by default in generic_app example, I dont have it enabled then.

    How do i enable NV_RESTORE?

    Regards,

    Matias

  • It should be defined in predefined symbols by default. Anyway, you should check if it is defined in your application first.

  • I would suggest you to power cycle your coordinator to simulate power loss to reproduce this issue and use sniffer to check what happens over the air at the same time.

  • It seems like the conctact switch leaves the network, after sending "IAS ZONE: Zone Status Change Notification" multiple times.

    I dont see any zb messages from the coordinator after the power loss.

  • Hello Matias,

    It sounds like the ZC is not responding to Zigbee packets, is it sending MAC ACKs and Link status messages in this state?  Is it still powered while the ZEDs are off and possibly aging out its children?  Are you using LAUNCHXL-CC26X2R1 EVMs or a custom PCB?  Please provide the sniffer log, SIMPLELINK-CC13X2-CC26X2-SDK version, and reproduction steps if you are able to make this easily occur.

    Regards,
    Ryan

  • Hello Ryan,

    The CC2652 is off, not the sensors. I'm using LAUNCHXL-CC26X2R1 with sdk 2.40.

    These are the steps of the tests done today:

    1. Open CC2652 ZC network.

    2. Reset Contact Switch ZED to start finding a network.

    3. Once the Contact Switch is in the network, completely shutdown ZC.

    4. Power on CC2652 again

    Link al sniffer log:

  • Do you design this Contact Switch ZED by yourself? It seems not based on TI chip.

  • After the ZC is powered off there is no indication that it is ever powered on again or has maintained its previous network, further debugging should be done to figure out what state the device is in.  Having the UI or MT enabled could be helpful for this.  Note that if IOID_14 (BTN-2 on the LAUNCHXL-CC26X2R1) is held low during zclGenericApp_initialization the device will reset to factory new.

    Regards,
    Ryan

  • How do you realize that the ZC is powered on and maintained the previous network?

  • It was for this reason a UI or MT was recommended.

    Regards,
    Ryan

  • Hi Matias,

    Do you have any updates to provide?  Please note however that I will be on leave until 7/8 and not checking the E2E forum.

    Regards,
    Ryan

  • Any updates on this?

    Please let us know if you require further support.

  • Still unable to resolve this problem. Also im having problems with a doorlock device. The cc2652 is not executing the callback i register.

    Regards,

    Matías

  • Reproduction steps must be provided if we are to recreate this issue, please note as well that version 3.10.00.53 of the SimpleLink CC13x2 / CC26x2 SDK is the first production ready version of the software for the CC1312R, CC1352R, CC2642R and CC2652R devices.  Registering and implementing a callback is covered by the following SLA: http://dev.ti.com/tirex/explore/node?node=AHfY0Eko1oL507RS1aRYoQ__pTTHBmu__LATEST

    Regards,
    Ryan

  • ZCL Closures Cmd Callbacks Struct: 
    static zclClosures_DoorLockAppCallbacks_t wehausApp_doorLockCmdCallbacks =
    {
        NULL,                                               /* zclClosures_DoorLock_t */
        wehausApp_doorRsp,                       /* zclClosures_DoorLockRsp_t */
        NULL,                                               /* zclClosures_DoorLockUnlockWithTimeout_t */
        NULL,                                               /* zclClosures_DoorLockGetLogRecord_t */
        NULL,                                               /* zclClosures_DoorLockSetPINCode_t */
        NULL,                                               /* zclClosures_DoorLockGetPINCode_t */
        NULL,                                               /* zclClosures_DoorLockClearPINCode_t */
        NULL,                                               /* zclClosures_DoorLockClearAllPINCodes_t */
        NULL,                                               /* zclClosures_DoorLockSetUserStatus_t */
        NULL,                                               /* zclClosures_DoorLockGetUserStatus_t */
        NULL,                                               /* zclClosures_DoorLockSetWeekDaySchedule_t */                   
        NULL,                                               /* zclClosures_DoorLockGetWeekDaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockClearWeekDaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockSetYearDaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockGetYearDaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockClearYearDaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockSetHolidaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockGetHolidaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockClearHolidaySchedule_t */
        NULL,                                               /* zclClosures_DoorLockSetUserType_t */
        NULL,                                               /* zclClosures_DoorLockGetUserType_t */
        NULL,                                               /* zclClosures_DoorLockSetRFIDCode_t */
        NULL,                                               /* zclClosures_DoorLockGetRFIDCode_t */
        NULL,                                               /* zclClosures_DoorLockClearRFIDCode_t */
        NULL,                                               /* zclClosures_DoorLockClearAllRFIDCodes_t */
        NULL,                                               /* zclClosures_DoorLockUnlockWithTimeoutRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetLogRecordRsp_t */       
        NULL,                                               /* zclClosures_DoorLockSetPINCodeRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetPINCodeRsp_t */       
        NULL,                                               /* zclClosures_DoorLockClearPINCodeRsp_t */
        NULL,                                               /* zclClosures_DoorLockClearAllPINCodesRsp_t */
        NULL,                                               /* zclClosures_DoorLockSetUserStatusRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetUserStatusRsp_t */       
        NULL,                                               /* zclClosures_DoorLockSetWeekDayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetWeekDayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockClearWeekDayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockSetYearDayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetYearDayScheduleRsp_t */       
        NULL,                                               /* zclClosures_DoorLockClearYearDayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockSetHolidayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetHolidayScheduleRsp_t */       
        NULL,                                               /* zclClosures_DoorLockClearHolidayScheduleRsp_t */
        NULL,                                               /* zclClosures_DoorLockSetUserTypeRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetUserTypeRsp_t */
        NULL,                                               /* zclClosures_DoorLockSetRFIDCodeRsp_t */
        NULL,                                               /* zclClosures_DoorLockGetRFIDCodeRsp_t */       
        NULL,                                               /* zclClosures_DoorLockClearRFIDCodeRsp_t */
        NULL,                                               /* zclClosures_DoorLockClearAllRFIDCodesRsp_t */
        wehausApp_doorLockOperationEventNotification,       /* zclClosures_DoorLockOperationEventNotification_t */
        wehausApp_doorLockProgrammingEventNotification,     /* zclClosures_DoorLockProgrammingEventNotification_t */
    };
    
    Callback definitions:
    
    static ZStatus_t wehausApp_doorRsp(zclIncoming_t *pInMsg, uint8_t status)
    
    static ZStatus_t wehausApp_doorLockOperationEventNotification(zclIncoming_t *pInMsg, zclDoorLockOperationEventNotification_t *pCmd)
    
    static ZStatus_t wehausApp_doorLockProgrammingEventNotification(zclIncoming_t *pInMsg, zclDoorLockProgrammingEventNotification_t *pCmd)
    
    In app_init:
    
    zclport_registerEndpoint(appServiceTaskId, &wehausAppEpDesc);
    
    // Register the ZCL General Cluster Library callback functions
    zclGeneral_RegisterCmdCallbacks(ZCL_MANAGER_ENDPOINT, &wehausApp_generalCallbacks);
    
    // Register the ZCL Security and Safety Cluster Library callback functions
    zclSS_RegisterCmdCallbacks(ZCL_MANAGER_ENDPOINT, &wehausApp_SSCmdCallbacks);
    
    // Register the ZCL Closures callback functions
    zclClosures_RegisterDoorLockCmdCallbacks(ZCL_MANAGER_ENDPOINT, &wehausApp_doorLockCmdCallbacks);
    
    

    Callbacks in zcl general and ias zone are working. In zcl closures, they are not.

  • Are you attempting to create a doorlock or doorlock controller device?  You mention problems with a doorlock device yet the implementation shown is for a doorlock controller device based on the callback types.  I also highly recommend different endpoints for each function (IAS zone, doorlock, etc).  You should closely review the zcl_sampledoorlock[controller][_data].c/h example application files.

    Regards,
    Ryan

  • I'm attemting to create a doorlock controller. I've looked at zcl_sampledoorlockcontroller example application and I can't find any important differences. I've also sniffed zb network and the doorlock device is sending doorlock default response and event notificacion packets.

    Regards

    Matias

  • There is probably an issue with how the cluster attributes and simple descriptor are initialized inside of *_data.c, also what is inside your wehausApp_doorRsp function?  Application .c/h files and your sniffer log if possible, furthermore you should verify and observe the out-of-box examples.

    Regards,
    Ryan

  • CONST zclAttrRec_t zclManager_Attrs[] =
    {
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_ZCL_VERSION,
                ZCL_DATATYPE_UINT8,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_ZCLVersion
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            {  // Attribute record
                ATTRID_BASIC_HW_VERSION,
                ZCL_DATATYPE_UINT8,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_HWRevision
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_MANUFACTURER_NAME,
                ZCL_DATATYPE_CHAR_STR,
                ACCESS_CONTROL_READ,
                (void *)zclManager_ManufacturerName
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_MODEL_ID,
                ZCL_DATATYPE_CHAR_STR,
                ACCESS_CONTROL_READ,
                (void *)zclManager_ModelId
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_DATE_CODE,
                ZCL_DATATYPE_CHAR_STR,
                ACCESS_CONTROL_READ,
                (void *)zclManager_DateCode
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_POWER_SOURCE,
                ZCL_DATATYPE_ENUM8,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_PowerSource
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_LOCATION_DESC,
                ZCL_DATATYPE_CHAR_STR,
                (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
                (void *)zclManager_LocationDescription
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_PHYSICAL_ENV,
                ZCL_DATATYPE_ENUM8,
                (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
                (void *)&zclManager_PhysicalEnvironment
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            { // Attribute record
                ATTRID_BASIC_DEVICE_ENABLED,
                ZCL_DATATYPE_BOOLEAN,
                (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
                (void *)&zclManager_DeviceEnable
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_BASIC,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_basic_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_IDENTIFY,
            { // Attribute record
                ATTRID_IDENTIFY_TIME,
                ZCL_DATATYPE_UINT16,
                (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
                (void *)&zclManager_IdentifyTime
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_IDENTIFY,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_identify_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_OTA,                   
            { // Attribute record
                ATTRID_UPGRADE_SERVER_ID,           
                ZCL_DATATYPE_IEEE_ADDR,             
                ACCESS_CONTROL_READ,                
                ( void * )&zclOTA_UpgradeServerID  
            }
        },
        {
            ZCL_CLUSTER_ID_OTA,
            { // Attribute record
                ATTRID_CURRENT_FILE_VERSION,
                ZCL_DATATYPE_UINT32,
                ACCESS_CONTROL_READ,
                ( void * )&zclOTA_CurrentFileVersion
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_SCENES,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ | ACCESS_CLIENT,
                (void *)&zclManager_scenes_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_GEN_GROUPS,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ | ACCESS_CLIENT,
                (void *)&zclManager_groups_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_CLOSURES_DOOR_LOCK,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ | ACCESS_CLIENT,
                (void *)&zclManager_doorlock_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_SS_IAS_ACE,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ,
                (void *)&zclManager_ace_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_SS_IAS_ZONE,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ | ACCESS_CLIENT,
                (void *)&zclManager_zone_clusterRevision
            }
        },
        {
            ZCL_CLUSTER_ID_SS_IAS_WD,
            {  // Attribute record
                ATTRID_CLUSTER_REVISION,
                ZCL_DATATYPE_UINT16,
                ACCESS_CONTROL_READ | ACCESS_CLIENT,
                (void *)&zclManager_warning_clusterRevision
            }
        }
    
    };
    
    uint8_t CONST zclManager_NumAttributes = ( sizeof(zclManager_Attrs) / sizeof(zclManager_Attrs[0]) );
    
    /*
    * SIMPLE DESCRIPTOR
    */
    const cId_t zclManager_InClusterList[] =
    {
        ZCL_CLUSTER_ID_GEN_BASIC                /* Cluster ID = 0x0000 = 0 */
    ,   ZCL_CLUSTER_ID_GEN_IDENTIFY             /* Cluster ID = 0x0003 = 3 */
    ,   ZCL_CLUSTER_ID_OTA                      /* Cluster ID = 0x0019 = 25 */
    };
    
    #define ZCL_MANAGER_MAX_INCLUSTERS   (sizeof(zclManager_InClusterList) / sizeof(zclManager_InClusterList[0]))
    
    
    const cId_t zclManager_OutClusterList[] =
    {
        #ifdef ZCL_BASIC
        ZCL_CLUSTER_ID_GEN_BASIC,                       /* Cluster ID = 0x0000 = 0 */
        #endif
        #ifdef ZCL_POWER_CFG
        ZCL_CLUSTER_ID_GEN_POWER_CFG,                   /* Cluster ID = 0x0001 = 1 */
        #endif
        #ifdef ZCL_IDENTIFY
        ZCL_CLUSTER_ID_GEN_IDENTIFY,                    /* Cluster ID = 0x0003 = 3 */
        #endif
        #ifdef ZCL_GROUPS
        ZCL_CLUSTER_ID_GEN_GROUPS,                      /* Cluster ID = 0x0004 = 4 */
        #endif
        #ifdef ZCL_SCENES
        ZCL_CLUSTER_ID_GEN_SCENES,                      /* Cluster ID = 0x0005 = 5 */
        #endif
        #ifdef ZCL_ON_OFF
        ZCL_CLUSTER_ID_GEN_ON_OFF,                      /* Cluster ID = 0x0006 = 6 */
        #endif
        #ifdef ZCL_LEVEL_CTRL
        ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL,               /* Cluster ID = 0x0008 = 8 */
        #endif
        #ifdef ZCL_ALARMS
        ZCL_CLUSTER_ID_GEN_ALARMS,                      /* Cluster ID = 0x0009 = 9 */
        #endif
        #ifdef ZCL_TIME
        ZCL_CLUSTER_ID_GEN_TIME,                        /* Cluster ID = 0x000A = 10 */
        #endif
        #ifdef ZCL_BINARY_INPUT
        ZCL_CLUSTER_ID_GEN_BINARY_INPUT_BASIC,          /* Cluster ID = 0x000F = 15 */
        #endif
        #ifdef ZCL_POLL_CONTROL
        ZCL_CLUSTER_ID_GEN_POLL_CONTROL,                /* Cluster ID = 0x0020 = 32 */
        #endif
        #ifdef ZCL_SHADE
        ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIG,           /* Cluster ID = 0x0100 = 256 */
        #endif
        #ifdef ZCL_DOORLOCK
        ZCL_CLUSTER_ID_CLOSURES_DOOR_LOCK,              /* Cluster ID = 0x0101 = 257 */
        #endif
        #ifdef ZCL_WINDOWCOVERING
        ZCL_CLUSTER_ID_CLOSURES_WINDOW_COVERING,        /* Cluster ID = 0x0102 = 258 */
        #endif
        #ifdef ZCL_HVAC_CLUSTER
        ZCL_CLUSTER_ID_HVAC_THERMOSTAT,                 /* Cluster ID = 0x0201 = 513 */
        ZCL_CLUSTER_ID_HVAC_FAN_CONTROL,                /* Cluster ID = 0x0202 = 514 */
        ZCL_CLUSTER_ID_HVAC_USER_INTERFACE_CONFIG,      /* Cluster ID = 0x0204 = 516 */
        #endif
        #ifdef ZCL_LIGHTING_COLOR_CONTROL
        ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL,          /* Cluster ID = 0x0300 = 768 */
        #endif
        ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT,      /* Cluster ID = 0x0400 = 1024 */
        #ifdef ZCL_TEMPERATURE_MEASUREMENT
        ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT,      /* Cluster ID = 0x0402 = 1026 */
        #endif
        #ifdef ZCL_RELATIVE_HUMIDITY
        ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY,            /* Cluster ID = 0x0405 = 1029 */
        #endif
        #ifdef ZCL_OCCUPANCY_SENSING
        ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING,            /* Cluster ID = 0x0406 = 1030 */
        #endif
        #ifdef ZCL_ZONE
        ZCL_CLUSTER_ID_SS_IAS_ZONE,                     /* Cluster ID = 0x0500 = 1280 */
        #endif
        #ifdef ZCL_WD
        ZCL_CLUSTER_ID_SS_IAS_WD,                       /* Cluster ID = 0x0502 = 1282 */
        #endif
        #ifdef ZCL_KEYTAG
        ZCL_CLUSTER_ID_PI_ANALOG_OUTPUT_BACNET_REG,     /* Cluster ID = 0x0604 = 1540 */
        #endif
        #ifdef ZCL_ELECTRICAL_MEASUREMENT
        ZCL_CLUSTER_ID_MS_ELECTRICAL_MEASUREMENT,       /* Cluster ID = 0x0B04 = 2820 */
        #endif
        #ifdef ZCL_DIAGNOSTIC
        ZCL_CLUSTER_ID_HA_DIAGNOSTIC,                   /* Cluster ID = 0x0B05 = 2821 */
        #endif
    };
    #define ZCL_MANAGER_MAX_OUTCLUSTERS  (sizeof(zclManager_OutClusterList) / sizeof(zclManager_OutClusterList[0]))
    
    
    SimpleDescriptionFormat_t zclManager_SimpleDesc =
    {
        ZCL_MANAGER_ENDPOINT,                       //  int Endpoint;
        ZCL_HA_PROFILE_ID,                          //  uint16 AppProfId;
        ZCL_HA_DEVICEID_HOME_GATEWAY,               //  uint16 AppDeviceId;
        ZCL_MANAGER_DEVICE_VERSION,                 //  int   AppDevVer:4;
        ZCL_MANAGER_FLAGS,                          //  int   AppFlags:4;
        ZCL_MANAGER_MAX_INCLUSTERS,                 //  byte  AppNumInClusters;
        (cId_t *)zclManager_InClusterList,          //  byte *pAppInClusterList;
        ZCL_MANAGER_MAX_OUTCLUSTERS,                //  byte  AppNumInClusters;
        (cId_t *)zclManager_OutClusterList          //  byte *pAppInClusterList;
    };

    This is part of the content of *_data.c file. In we wehausApp_doorRsp function i only send some data via UART. When I use the debugger, the program never enters wehausApp_doorRsp function, anyways.

  • What version of the SDK do you use, is a bind created for the door lock cluster (manually or F&B), is ZCL_DOORLOCK and ZCL_REPORT_DESTINATION_DEVICE included in the predefined symbols, does zclClosures_RegisterDoorLockCmdCallbacks return a ZSuccess status, and do you have a sniffer log to provide?

    Regards,
    Ryan

  • I use sdk 2.40. There is abind created for the door lock cluster manually. The doorlock device is HA 1.2. ZCL_DOORLOCK and ZCL_REPORT_DESTINATION_DEVICE are included in the predefined symbols. zclClosures_RegisterDoorLockCmdCallbacks returns Zsuccess status.

    Sniffer log:

    Regards,

    Matias

  • The website used to host the sniffer log file is blocked by my firewall, would you be able to upload a zip file directly to the E2E thread?  Please also include your application files so that I can attempt to replicate this behavior.

    Regards,
    Ryan

  • Since i'm not able to publicly share the application by contract, is there any posibility to contact you by direct message?

    Sniffer LogCC2652R - DoorLockDevice.zip

  • You can send Ryan a friend request and you can send him private messages after he accepts your friend request.

  • Following up with this E2E thread based on offline debug efforts.  First, a bind must manually be created on the Door Lock Controller device for it to properly handle the response message from the Door Lock device through a ZCL callback (this will not occur through F&B, which creates a bind on the Door Lock due to the cluster being Type 2).  Toby explains the process further in this E2E post: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/793502

    Second, zcl[module]_HdlInSpecificCommands will fail if callbacks do not exist for all related ZCL module symbols which have been defined.  Hence if ZCL_WINDOWCOVERING is defined but no window covering callbacks have been registered then zclClosures_HdlInSpecificCommands returns a fail status without processing the ZCL_DOORLOCK callbacks even though they have been properly registered.  The option therefore is to register callbacks for window coverings as well or not define ZCL_WINDOWCOVERING.

    Regards,
    Ryan