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.

zclMS_AppCallbacks_t 只有一个变量?而且没有实现回调?

Genius 3030 points

// Register Callbacks table entry - enter function pointers for callbacks that
// the application would like to receive
typedef struct
{
  zclMS_PlaceHolder_t               pfnMSPlaceHolder; // Place Holder
//  NULL
} zclMS_AppCallbacks_t;

用到Temperature这个Cluster,发现MS的CallBack结构体只有一个参数,而且底层并没有实现回调,为什么呢?

  • 只有有Command的Cluster才会有?
  • ZStatus_t zclMS_RegisterCmdCallbacks( uint8 endpoint, zclMS_AppCallbacks_t *callbacks )
    {
    zclMSCBRec_t *pNewItem;
    zclMSCBRec_t *pLoop;

    // Register as a ZCL Plugin
    if ( !zclMSPluginRegisted )
    {
    zcl_registerPlugin( ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT,
    ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING,
    zclMS_HdlIncoming );
    zclMSPluginRegisted = TRUE;
    }

    // Fill in the new profile list
    pNewItem = zcl_mem_alloc( sizeof( zclMSCBRec_t ) );
    if ( pNewItem == NULL )
    return (ZMemError);

    pNewItem->next = (zclMSCBRec_t *)NULL;
    pNewItem->endpoint = endpoint;
    pNewItem->CBs = callbacks;

    // Find spot in list
    if ( zclMSCBs == NULL )
    {
    zclMSCBs = pNewItem;
    }
    else
    {
    // Look for end of list
    pLoop = zclMSCBs;
    while ( pLoop->next != NULL )
    pLoop = pLoop->next;

    // Put new item at end of list
    pLoop->next = pNewItem;
    }
    return ( ZSuccess );
    }
  • typedef struct
    {
    zclMS_PlaceHolder_t pfnMSPlaceHolder; // Place Holder
    // NULL
    } zclMS_AppCallbacks_t;
    只有一个变量是因为MS的Cluster都没有Command,不需要实现Command回调
  • typedef struct
    {
    zclMS_PlaceHolder_t pfnMSPlaceHolder; // Place Holder
    // NULL
    } zclMS_AppCallbacks_t;
    只有一个变量是因为MS的Cluster都没有Command,不需要实现Command回调
  • 对的,你可以去看一下zclGeneral_AppCallbacks_t的回调。
    typedef struct
    {
    zclGCB_BasicReset_t pfnBasicReset; // Basic Cluster Reset command
    zclGCB_IdentifyTriggerEffect_t pfnIdentifyTriggerEffect; // Identify Trigger Effect 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;