※This article is based on EmberZnet SDK 6.7.5.0 and EFR32MG Series
消息发送有组播、广播、单播三种方式
Sends unicast.
emberAfSendUnicast(EMBER_OUTGOING_VIA_BINDING 这个是通过绑定表单播给指定的节点地址和端点。
EmberStatus emberAfSendUnicast(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame * apsFrame, uint16_t messageLength, uint8_t * message )
Sends unicast with attached message sent callback.
EmberStatus emberAfSendUnicastWithCallback(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame * apsFrame, uint16_t messageLength, uint8_t * message, EmberAfMessageSentFunction callback )
Multicasts the message to the group in the binding table that matches the cluster and source endpoint in the APS frame. Note: if the binding table contains many matching entries, calling this API cause a significant amount of network traffic. Care should be taken when considering the effects of broadcasts in a network.
emberAfSendMulticastToBindings是将消息多播到绑定表中与APS帧中的CLUSTER和源端点匹配的组。
EmberStatus emberAfSendMulticastToBindings(EmberApsFrame * apsFrame, uint16_t messageLength, uint8_t * message )
Sends multicast.
EmberStatus emberAfSendMulticast(EmberMulticastId multicastId, EmberApsFrame * apsFrame, uint16_t messageLength, uint8_t * message )
Sends multicast with attached message sent callback.
EmberStatus emberAfSendMulticastWithCallback(EmberMulticastId multicastId, EmberApsFrame * apsFrame, uint16_t messageLength, uint8_t * message, EmberAfMessageSentFunction callback )
void emAfApsFrameEndpointSetup(uint8_t srcEndpoint, uint8_t dstEndpoint) { globalApsFrame.sourceEndpoint = (srcEndpoint == 0 ? emberAfPrimaryEndpointForCurrentNetworkIndex() : srcEndpoint); globalApsFrame.destinationEndpoint = dstEndpoint; }
EmberStatus emberAfSendMulticast(EmberMulticastId multicastId, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message) { return emberAfSendMulticastWithCallback(multicastId, apsFrame, messageLength, message, NULL); } EmberStatus emberAfSendBroadcast(EmberNodeId destination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message) { return emberAfSendBroadcastWithCallback(destination, apsFrame, messageLength, message, NULL); } EmberStatus emberAfSendUnicast(EmberOutgoingMessageType type, uint16_t indexOrDestination, EmberApsFrame *apsFrame, uint16_t messageLength, uint8_t *message) { return emberAfSendUnicastWithCallback(type, indexOrDestination, apsFrame, messageLength, message, NULL); }
应用实例(实现将0x55、0xABCD两个数据单播到协调器)
static EmberStatus zclBufferSendToCoor(void) //发送到协调器 { emAfApsFrameEndpointSetup(1, 1); return emberAfSendUnicast(EMBER_OUTGOING_DIRECT, COORDINATER_NETWORK_ID, &globalApsFrame, appZclBufferLen, appZclBuffer); } void UnicastFunction(int16u data) { mfgSpecificId = EMBER_AF_MANUFACTURER_CODE; zclXDefaultRespCommand = TRUE; zclBufferSetup(ZCL_CLUSTER_SPECIFIC_COMMAND, ZCL_XXX_CLUSTER_ID, ZCL_XXX_COMMAND_ID); mfgSpecificId = EMBER_AF_NULL_MANUFACTURER_CODE; zclBufferAddWord(data); if (zclBufferSendToCoor() == EMBER_SUCCESS) //成功 { } }
&ref(): File not found: "ZigBee.png" at page "++EmberZnet++消息";
Comment: