ジグビーZCL仕様と実際のプロトコルスタック、今2は、 アイデアや情報の流れ関数に基づいてプロパティ値を読み取るために、一般的なコマンドを扱うサーバを追加するために導入されたクライアントを知りたいsampleswと自身の12エンドポイントSAMPLESW_ENDPOINTバインドそのノード2つのプロパティを有するsamplelight(第13号エンドポイント)ハードウェアバージョンとベンダー名、ZCL規定ZCL_CLUSTER_ID_GEN_BASICのZCL一般属しまず、このプロパティsamplelightサーバを設定する必要があり、コードが書かれているが、それが配置されている機能をzclSampleLight_Initは、属性テーブルに登録zcl_registerAttrList(SAMPLELIGHT_ENDPOINT、SAMPLELIGHT_MAX_ATTRIBUTES、zclSampleLight_Attrs); 属性テーブル構成zclSampleLight_AttrsプロパティATTRID_BASIC_ZCL_VERSIONとATTRID_BASIC_MANUFACTURER_NAMEを、属するZCL_CLUSTER_ID_GEN_BASIC { ZCL_CLUSTER_ID_GEN_BASIC、 {//属性レコード ATTRID_BASIC_ZCL_VERSION、 ZCL_DATATYPE_UINT8を
ACCESS_CONTROL_READ、
(ボイド*)&zclSampleLight_ZCLVersion
}
}、
{
ZCL_CLUSTER_ID_GEN_BASIC、
{//属性レコード
ATTRID_BASIC_MANUFACTURER_NAME、
ZCL_DATATYPE_CHAR_STR、
ACCESS_CONTROL_READ、
(ボイド*)zclSampleLight_ManufacturerName
}
}、
2 InClusters里必须添加对CLUSTERID ZCL_CLUSTER_ID_GEN_BASIC 的支持
の#define ZCLSAMPLELIGHT_BINDINGLIST 2
静的cId_t bindingInClusters 【ZCLSAMPLELIGHT_BINDINGLIST]
=
{
ZCL_CLUSTER_ID_GEN_ON_OFF、ZCL_CLUSTER_ID_GEN_BASIC }。
3.バインドを取得するためのアプリケーション、パラメータとして使用bindingInClustersの時点で、コードが実装されました
ZDP_EndDeviceBindReq(&DSTADDR、NLME_GetShortAddr()、
SAMPLELIGHT_ENDPOINT、
ZCL_HA_PROFILE_ID、
ZCLSAMPLELIGHT_BINDINGLIST、 bindingInClusters、
0、NULL、//バインドするには、no発信クラスタ
TRUE);
B
1クライアント のリストを使用してサーバに対応sampleswクラスタ
の#define ZCLSAMPLESW_BINDINGLIST 2
静的cId_tのbindingOutClusters [ZCLSAMPLESW_BINDINGLIST] =
{
ZCL_CLUSTER_ID_GEN_ON_OFF、 ZCL_CLUSTER_ID_GEN_BASIC }; 2.結合印加bindingOutClusters パラメータとしては、コードが実装されている dstAddr.addrModeをafAddr16Bit =; = 0 dstAddr.addr.shortAddr; //コーディネータ一致します ZDP_EndDeviceBindReq(&DSTADDR、NLME_GetShortAddrを()、 SAMPLESW_ENDPOINT、 ZCL_HA_PROFILE_ID、 0、NULL、//バインドに着信クラスタ ZCLSAMPLESW_BINDINGLIST、bindingOutClusters 、
)TRUE;
3.次のコードのどこかで行われ、すなわち、アプリケーションが読み取る zclSampleSw_DstAddr(の次の2つのプロパティzcl_SendRead()が自動的にZCL_FRAME_TYPE_PROFILE_CMD割り当てられる)
zclReadCmd_tがreadcmd;
ZStatus_t ST;
readcmd.numAttr = 2;
[0 readcmd.attrID ] = ATTRID_BASIC_ZCL_VERSION ;
readcmd.attrID [1] =。 ATTRID_BASIC_MANUFACTURER_NAME ;
ST = zcl_SendRead(SAMPLESW_ENDPOINT、&zclSampleSw_DstAddr、
/ ZCL_CLUSTER_ID_GEN_ON_OFF / ZCL_CLUSTER_ID_GEN_BASIC 、
&readcmd、
ZCL_FRAME_CLIENT_SERVER_DIR、偽、0);
Cの
サーバーは、情報を受信すると、トリガzclCmdTable [ZCL_CMD_READ】自動機能zcl_SendReadRsp(により、クライアントに関連する属性を読み取る機能、すなわちzclProcessInReadCmd機能)、コマンドがZCL_CMD_READ_RSPある
Dの
クライアント、sampleswトリガ情報受信後zclCmdTable [ZCL_CMD_READ_RSP]機能すなわちzclSendMsg機能を、このこの機能はでている間zcl_registerForMsgを使用してトップタスクは、登録されたことを提供、に対処するためのイベントZCL_INCOMING_MSG上位タスクにメッセージを送信しますsampleswすでにINITに登録します。
クライアントのプロセスでは、sampleswタスク
ケースZCL_INCOMING_MSG:
//着信ZCL財団コマンド/応答メッセージ
zclSampleSw_ProcessIncomingMsg((zclIncomingMsg_t *)MSGpkt); - > zclSampleSw_ProcessInReadRspCmd
BREAK;
- //プロパティが返す処理
- 静的 UINT8 zclSampleSw_ProcessInReadRspCmd(zclIncomingMsg_t * pInMsg)
- {
- zclReadRspCmd_t * readRspCmd。
- UINT8で、
- readRspCmd =(zclReadRspCmd_t *)pInMsg-> attrCmd。
- 以下のための 式(I = 0、I <readRspCmd-> numAttr; I ++)
- {
- UINT8 STR [6]。
- //オリジナルの読み取り属性の結果の創始者に通知
- //しようとすると、それぞれ成功し、要求、要求の値について
- //属性
- / *
- (私は== 0)の場合
- {
- UINT8 II = * readRspCmd-> attrListは[i]の.dataの。
- _itoa(S、STR、10)。
- HalLcdWriteString(大きさ、2);
- }
- * /
- もし(私は== 1)
- {
- UINT8 * PP = readRspCmd-> attrListは[i]の.dataの。
- HalLcdWriteString(PP、2)。
- }
- }
- 返す TRUE;
- }