Part Number: LAUNCHXL-CC26X2R1
Other Parts Discussed in Thread: SIMPLELINK-CC13X2-26X2-SDK
I'm new to zigbee. I have a TI device imitating a light. I'm attempting to run a GW_SET_ATTRIBUTE_REPORTING_REQ command to cause it to send regular attribute reports to the gateway.
The command seems to work as I immediately get a status_success response, but there are no reports coming in.
Also, I can send in a command to return a single attribute report for the light and it returns a correct result, so I know that the parameters are correct.
Can you tell me what I'm doing wrong? Many thanks.
Here's my code:
public int hagwSetAttributeReportReq(final long devIeee, final int ep, final short attrReqClusterId,
final short attrReqAttrId, final int attrType, final int minInterval,
final int maxInterval, HagatewayZclCallback zclCallback ) {
final GwSetAttributeReportingReq.Builder gwSetAttrReportingReq = GwSetAttributeReportingReq.newBuilder();
gwSetAttrReportingReq.clear();
gwSetAttrReportingReq.setCmdId(gwCmdId_t.GW_SET_ATTRIBUTE_REPORTING_REQ);
gwSetAttrReportingReq.setClusterId(attrReqClusterId);
//set dst addr
gwSetAttrReportingReq.getDstAddressBuilder().setAddressType(gwAddressType_t.UNICAST);
gwSetAttrReportingReq.getDstAddressBuilder().setIeeeAddr(devIeee);
gwSetAttrReportingReq.getDstAddressBuilder().setEndpointId(ep);
gwAttributeReport_t.Builder attr = gwAttributeReport_t.newBuilder();
attr.setAttributeId(attrReqAttrId);
attr.setAttributeType(gwZclAttributeDataTypes_t.forNumber(attrType));
attr.setMinReportInterval(minInterval);
attr.setMaxReportInterval(maxInterval);
attr.addReportableChange(0);
attr.setReportableChange(0,0);
gwSetAttrReportingReq.addAttributeReportList(attr);
List<String> err = gwSetAttrReportingReq.findInitializationErrors();
if (!err.isEmpty()) {
System.out.println("hagwWriteAttrReq error - " + err.toString());
return -1;
}
final byte pkt[] = new byte[gwSetAttrReportingReq.build().getSerializedSize()
+ PKT_HEADER_SIZE];
pkt[PKT_HEADER_LEN_FIELD] = (byte) (gwSetAttrReportingReq.build()
.getSerializedSize() & 0xFF);
pkt[PKT_HEADER_LEN_FIELD + 1] = (byte) ((gwSetAttrReportingReq.build()
.getSerializedSize() & 0xFF00) << 8);
pkt[PKT_HEADER_SUBSYS_FIELD] = zStackGwSysId_t.RPC_SYS_PB_GW_VALUE;
pkt[PKT_HEADER_CMDID_FIELD] = gwCmdId_t.GW_SET_ATTRIBUTE_REPORTING_REQ_VALUE;
for (int pktIdx = 0; pktIdx < gwSetAttrReportingReq.build().toByteArray().length; pktIdx++) {
pkt[PKT_HEADER_DATA_FIELD + pktIdx] = gwSetAttrReportingReq.build()
.toByteArray()[pktIdx];
}
sendMessage(pkt);
}