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.
灯作为服务器,接受命令,使用zclGeneral_HdlInSpecificCommands处理相关命令,找到了我的命令
#ifdef ZCL_LEVEL_CTRL
case ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL:
stat = zclGeneral_ProcessInLevelControl( pInMsg, pCBs );
break;
#endif
问题就是在zclGeneral_ProcessInLevelControl( pInMsg, pCBs );函数里
问题一:下面代码的pData[1]是指什么。pData是一个指针,pData 只是定义了uint8 *pData
cmd.moveMode = pInMsg->pData[0];
cmd.rate = pInMsg->pData[1];
问题二:在回调函数zclLevel_StepCB里有个函数是
hwLight_ApplyUpdate( &zclLevel_CurrentLevel,
&zclLevel_CurrentLevel_256,
&zclLevel_StepLevel_256,
&zclLevel_LevelRemainingTime,
LEVEL_MIN, LEVEL_MAX, FALSE );
这函数具体是什么功能呢?
1,这个指的是rate,API函数里面是有说明的
/*********************************************************************
* @fn zclGeneral_SendLevelControlMoveRequest
*
* @brief Call to send out a Level Control Request. You can also use
* the appropriate macro.
*
* @param srcEP - Sending application's endpoint
* @param dstAddr - where you want the message to go
* @param cmd - one of the following:
* COMMAND_LEVEL_MOVE or
* COMMAND_LEVEL_MOVE_WITH_ON_OFF
* @param moveMode - LEVEL_MOVE_UP or
* LEVEL_MOVE_DOWN
* @param rate - number of steps to take per second
*
* @return ZStatus_t
*/
ZStatus_t zclGeneral_SendLevelControlMoveRequest( uint8 srcEP, afAddrType_t *dstAddr,
uint8 cmd, uint8 moveMode, uint8 rate,
uint8 disableDefaultRsp, uint8 seqNum )
{
uint8 buf[2];
buf[0] = moveMode;
buf[1] = rate;
return zcl_SendCommand( srcEP, dstAddr, ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL,
cmd, TRUE, ZCL_FRAME_CLIENT_SERVER_DIR,
disableDefaultRsp, 0, seqNum, 2, buf );
}
2,计算处理PWM的输出,