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.

关于cc2538例程中 注册回掉函数的理解

            大家好,注册这个端点的回掉表:zclSampleLight_CmdCallbacks,想知道会调表中的函数在哪里调用呢??

     // Register the ZCL General Cluster Library callback functions
     zclGeneral_RegisterCmdCallbacks( SAMPLELIGHT_ENDPOINT, &zclSampleLight_CmdCallbacks );

  

  • zclSampleLight_CmdCallbacks函数相当于把一些函数给了下面的结构体中的。你只要搜索下下面结构体中的在哪里被调用到就可以了。

    举个例子

    pfnOnOff这个命令,就在下面的函数被调用到了


    static ZStatus_t zclGeneral_ProcessInOnOff( zclIncoming_t *pInMsg,
    zclGeneral_AppCallbacks_t *pCBs )
    {
    ZStatus_t stat = ZSuccess;

    if ( zcl_ServerCmd( pInMsg->hdr.fc.direction ) )
    {
    switch ( pInMsg->hdr.commandID )
    {
    case COMMAND_OFF:
    case COMMAND_ON:
    case COMMAND_TOGGLE:
    if ( pCBs->pfnOnOff )
    {
    pCBs->pfnOnOff( pInMsg->hdr.commandID );
    }
    break;


    typedef struct
    {
    zclGCB_BasicReset_t pfnBasicReset; // Basic Cluster Reset command
    zclGCB_Identify_t pfnIdentify; // Identify command
    #ifdef ZCL_EZMODE
    zclGCB_IdentifyEZModeInvoke_t pfnIdentifyEZModeInvoke; // Identify EZ-Mode Invoke command
    zclGCB_IdentifyUpdateCommState_t pfnIdentifyUpdateCommState; // Identify Update Commission State command
    #endif
    zclGCB_IdentifyTriggerEffect_t pfnIdentifyTriggerEffect; // Identify Trigger Effect command
    zclGCB_IdentifyQueryRsp_t pfnIdentifyQueryRsp; // Identify Query Response command
    zclGCB_OnOff_t pfnOnOff; // On/Off cluster commands
    zclGCB_OnOff_OffWithEffect_t pfnOnOff_OffWithEffect; // On/Off cluster enhanced command Off with Effect
    zclGCB_OnOff_OnWithRecallGlobalScene_t pfnOnOff_OnWithRecallGlobalScene; // On/Off cluster enhanced command On with Recall Global Scene
    zclGCB_OnOff_OnWithTimedOff_t pfnOnOff_OnWithTimedOff; // On/Off cluster enhanced command On with Timed Off
    #ifdef ZCL_LEVEL_CTRL
    zclGCB_LevelControlMoveToLevel_t pfnLevelControlMoveToLevel; // Level Control Move to Level command
    zclGCB_LevelControlMove_t pfnLevelControlMove; // Level Control Move command
    zclGCB_LevelControlStep_t pfnLevelControlStep; // Level Control Step command
    zclGCB_LevelControlStop_t pfnLevelControlStop; // Level Control Stop command
    #endif
    #ifdef ZCL_GROUPS
    zclGCB_GroupRsp_t pfnGroupRsp; // Group Response commands
    #endif
    #ifdef ZCL_SCENES
    zclGCB_SceneStoreReq_t pfnSceneStoreReq; // Scene Store Request command
    zclGCB_SceneRecallReq_t pfnSceneRecallReq; // Scene Recall Request command
    zclGCB_SceneRsp_t pfnSceneRsp; // Scene Response command
    #endif
    #ifdef ZCL_ALARMS
    zclGCB_Alarm_t pfnAlarm; // Alarm (Response) commands
    #endif
    #ifdef SE_UK_EXT
    zclGCB_GetEventLog_t pfnGetEventLog; // Get Event Log command
    zclGCB_PublishEventLog_t pfnPublishEventLog; // Publish Event Log command
    #endif
    zclGCB_Location_t pfnLocation; // RSSI Location command
    zclGCB_LocationRsp_t pfnLocationRsp; // RSSI Location Response command
    } zclGeneral_AppCallbacks_t;