Network::msg_l3_status_t BaseRFApplication::sendPropertyReport(univmsg_l7_any_t* msg, bool cmd_mc_last, uint8_t clusterID, uint8_t endpointID) { MW_LOG_DEBUG_TRACE(MW_LOG_BASERF); //6.a.1) GET: create empty endpoint_value_t and call getProperty Endpoint::endpoint_value_t value; value.len = BASERF_MESSAGE_PAYLOAD_MAXLEN - BASERF_MESSAGE_PAYLOAD_HEADERLEN - 2;//12 uint8_t maxLen = value.len;//12 value.pvalue = &msg->data[2];//reusing the allocated buffer with a proper offset Endpoint* endpoint = m_device->getCluster(clusterID)->getEndpoint(endpointID); endpoint->getProperty(&value); int result = ERROR_INVALID_DATA; MW_LOG_DEBUG_TRACE(MW_LOG_BASERF) << PSTR("Endpoint value len: ") << value.len; if ( value.len > 0 && value.len <= maxLen ) { //prepare the message structure msg->msg_header.cmd_id = BASERF_CMD_PROPERTY_REP; msg->msg_header.cmd_mc = cmd_mc_last ? false : true; msg->msg_header.dataLen = value.len + 2;//extra bytes in the header msg->data[0] = clusterID; msg->data[1] = endpointID; result = sendMessage(msg); } else { MW_LOG_WARNING(MW_LOG_BASERF, "No report sent! Invalid data for C:E=%d:%d", clusterID, endpointID); } MW_LOG_DEBUG_TRACE(MW_LOG_BASERF) << PSTR("result=") << result; return result; }