Skip to content

Commit 247ce85

Browse files
authored
Add static helper method ZigBeeBroadcastDestination.isBroadcast(address) (#490)
Signed-off-by: Chris Jackson <chris@cd-jackson.com>
1 parent b0a5688 commit 247ce85

7 files changed

Lines changed: 155 additions & 48 deletions

File tree

com.zsmartsystems.zigbee.dongle.ember/src/main/java/com/zsmartsystems/zigbee/dongle/ember/ZigBeeDongleEzsp.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.zsmartsystems.zigbee.ExtendedPanId;
2525
import com.zsmartsystems.zigbee.IeeeAddress;
2626
import com.zsmartsystems.zigbee.ZigBeeApsFrame;
27+
import com.zsmartsystems.zigbee.ZigBeeBroadcastDestination;
2728
import com.zsmartsystems.zigbee.ZigBeeChannel;
2829
import com.zsmartsystems.zigbee.ZigBeeNodeStatus;
2930
import com.zsmartsystems.zigbee.ZigBeeNwkAddressMode;
@@ -496,7 +497,8 @@ public void sendCommand(final ZigBeeApsFrame apsFrame) {
496497
emberApsFrame.addOptions(EmberApsOption.EMBER_APS_OPTION_ENCRYPTION);
497498
}
498499

499-
if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE && apsFrame.getDestinationAddress() < 0xfff8) {
500+
if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE
501+
&& !ZigBeeBroadcastDestination.isBroadcast(apsFrame.getDestinationAddress())) {
500502
EzspSendUnicastRequest emberUnicast = new EzspSendUnicastRequest();
501503
emberUnicast.setIndexOrDestination(apsFrame.getDestinationAddress());
502504
emberUnicast.setMessageTag(apsFrame.getApsCounter());
@@ -507,7 +509,7 @@ public void sendCommand(final ZigBeeApsFrame apsFrame) {
507509

508510
emberCommand = emberUnicast;
509511
} else if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE
510-
&& apsFrame.getDestinationAddress() >= 0xfff8) {
512+
&& ZigBeeBroadcastDestination.isBroadcast(apsFrame.getDestinationAddress())) {
511513

512514
EzspSendBroadcastRequest emberBroadcast = new EzspSendBroadcastRequest();
513515
emberBroadcast.setDestination(apsFrame.getDestinationAddress());

com.zsmartsystems.zigbee.dongle.ember/src/test/java/com/zsmartsystems/zigbee/dongle/ember/ZigBeeDongleEzspTest.java

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,25 @@
1212
import static org.junit.Assert.assertNotNull;
1313
import static org.junit.Assert.assertTrue;
1414

15-
import java.lang.reflect.Field;
16-
import java.lang.reflect.Modifier;
1715
import java.util.HashMap;
1816
import java.util.Map;
1917

2018
import org.junit.Test;
2119
import org.mockito.ArgumentCaptor;
20+
import org.mockito.ArgumentMatchers;
2221
import org.mockito.Mockito;
2322

2423
import com.zsmartsystems.zigbee.ExtendedPanId;
24+
import com.zsmartsystems.zigbee.TestUtilities;
25+
import com.zsmartsystems.zigbee.ZigBeeApsFrame;
26+
import com.zsmartsystems.zigbee.ZigBeeNwkAddressMode;
27+
import com.zsmartsystems.zigbee.ZigBeeProfileType;
2528
import com.zsmartsystems.zigbee.ZigBeeStatus;
2629
import com.zsmartsystems.zigbee.dongle.ember.ezsp.EzspFrame;
2730
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspMessageSentHandler;
31+
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspSendBroadcastRequest;
2832
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspSendBroadcastResponse;
33+
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspSendUnicastRequest;
2934
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspSendUnicastResponse;
3035
import com.zsmartsystems.zigbee.dongle.ember.ezsp.command.EzspStackStatusHandler;
3136
import com.zsmartsystems.zigbee.dongle.ember.ezsp.structure.EmberStatus;
@@ -49,15 +54,6 @@
4954
public class ZigBeeDongleEzspTest {
5055
private static int TIMEOUT = 5000;
5156

52-
protected void setField(Class clazz, Object object, String fieldName, Object newValue) throws Exception {
53-
Field field = clazz.getDeclaredField(fieldName);
54-
field.setAccessible(true);
55-
Field modifiersField = Field.class.getDeclaredField("modifiers");
56-
modifiersField.setAccessible(true);
57-
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
58-
field.set(object, newValue);
59-
}
60-
6157
@Test
6258
public void setZigBeeExtendedPanId() {
6359
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
@@ -147,7 +143,7 @@ public EmberNcp getEmberNcp() {
147143
};
148144
dongle.setZigBeeTransportReceive(transport);
149145

150-
setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
146+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
151147

152148
EzspStackStatusHandler response = Mockito.mock(EzspStackStatusHandler.class);
153149
Mockito.when(response.getStatus()).thenReturn(EmberStatus.EMBER_NETWORK_UP);
@@ -172,7 +168,7 @@ public void testEzspSendUnicastResponse() throws Exception {
172168
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
173169
dongle.setZigBeeTransportReceive(transport);
174170

175-
setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
171+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
176172

177173
EzspSendUnicastResponse response = Mockito.mock(EzspSendUnicastResponse.class);
178174
Mockito.when(response.getSequence()).thenReturn(123);
@@ -197,7 +193,7 @@ public void testEzspSendBroadcastResponse() throws Exception {
197193
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
198194
dongle.setZigBeeTransportReceive(transport);
199195

200-
setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
196+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
201197

202198
EzspSendBroadcastResponse response = Mockito.mock(EzspSendBroadcastResponse.class);
203199
Mockito.when(response.getSequence()).thenReturn(123);
@@ -222,7 +218,7 @@ public void testEzspMessageSentHandler() throws Exception {
222218
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
223219
dongle.setZigBeeTransportReceive(transport);
224220

225-
setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
221+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "initialised", true);
226222

227223
EzspMessageSentHandler response = Mockito.mock(EzspMessageSentHandler.class);
228224
Mockito.when(response.getMessageTag()).thenReturn(231);
@@ -252,10 +248,50 @@ public void getCounters() throws Exception {
252248
EzspProtocolHandler handler = Mockito.mock(EzspProtocolHandler.class);
253249
Mockito.when(handler.getCounters()).thenReturn(counters);
254250

255-
setField(ZigBeeDongleEzsp.class, dongle, "frameHandler", handler);
251+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "frameHandler", handler);
256252

257253
assertNotNull(dongle.getCounters());
258254
assertEquals(1, dongle.getCounters().size());
259255
assertEquals(Long.valueOf(1), dongle.getCounters().get("A"));
260256
}
257+
258+
@Test
259+
public void sendCommandUnicast() throws Exception {
260+
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
261+
EzspProtocolHandler handler = Mockito.mock(EzspProtocolHandler.class);
262+
263+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "frameHandler", handler);
264+
265+
ZigBeeApsFrame apsFrame = new ZigBeeApsFrame();
266+
apsFrame.setCluster(0);
267+
apsFrame.setProfile(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.getKey());
268+
apsFrame.setAddressMode(ZigBeeNwkAddressMode.DEVICE);
269+
apsFrame.setDestinationAddress(1234);
270+
apsFrame.setApsCounter(1);
271+
apsFrame.setRadius(30);
272+
apsFrame.setPayload(new int[] {});
273+
274+
dongle.sendCommand(apsFrame);
275+
Mockito.verify(handler, Mockito.times(1)).queueFrame(ArgumentMatchers.any(EzspSendUnicastRequest.class));
276+
}
277+
278+
@Test
279+
public void sendCommandBroadcast() throws Exception {
280+
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
281+
EzspProtocolHandler handler = Mockito.mock(EzspProtocolHandler.class);
282+
283+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "frameHandler", handler);
284+
285+
ZigBeeApsFrame apsFrame = new ZigBeeApsFrame();
286+
apsFrame.setCluster(0);
287+
apsFrame.setProfile(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.getKey());
288+
apsFrame.setAddressMode(ZigBeeNwkAddressMode.DEVICE);
289+
apsFrame.setDestinationAddress(0xfff9);
290+
apsFrame.setApsCounter(1);
291+
apsFrame.setRadius(30);
292+
apsFrame.setPayload(new int[] {});
293+
294+
dongle.sendCommand(apsFrame);
295+
Mockito.verify(handler, Mockito.times(1)).queueFrame(ArgumentMatchers.any(EzspSendBroadcastRequest.class));
296+
}
261297
}

com.zsmartsystems.zigbee.dongle.telegesis/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@
1919
<artifactId>com.zsmartsystems.zigbee</artifactId>
2020
<version>1.1.9-SNAPSHOT</version>
2121
</dependency>
22+
23+
<dependency>
24+
<groupId>com.zsmartsystems.zigbee</groupId>
25+
<artifactId>com.zsmartsystems.zigbee</artifactId>
26+
<version>1.1.9-SNAPSHOT</version>
27+
<classifier>tests</classifier>
28+
<scope>test</scope>
29+
</dependency>
2230

2331
</dependencies>
2432

com.zsmartsystems.zigbee.dongle.telegesis/src/main/java/com/zsmartsystems/zigbee/dongle/telegesis/ZigBeeDongleTelegesis.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.zsmartsystems.zigbee.ExtendedPanId;
1919
import com.zsmartsystems.zigbee.IeeeAddress;
2020
import com.zsmartsystems.zigbee.ZigBeeApsFrame;
21+
import com.zsmartsystems.zigbee.ZigBeeBroadcastDestination;
2122
import com.zsmartsystems.zigbee.ZigBeeChannel;
2223
import com.zsmartsystems.zigbee.ZigBeeChannelMask;
2324
import com.zsmartsystems.zigbee.ZigBeeNodeStatus;
@@ -615,7 +616,8 @@ public void sendCommand(final ZigBeeApsFrame apsFrame) {
615616
}
616617

617618
TelegesisCommand command;
618-
if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE && apsFrame.getDestinationAddress() < 0xfff8) {
619+
if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE
620+
&& !ZigBeeBroadcastDestination.isBroadcast(apsFrame.getDestinationAddress())) {
619621
// Unicast command
620622
TelegesisSendUnicastCommand unicastCommand = new TelegesisSendUnicastCommand();
621623
unicastCommand.setAddress(apsFrame.getDestinationAddress());
@@ -626,7 +628,7 @@ public void sendCommand(final ZigBeeApsFrame apsFrame) {
626628
unicastCommand.setMessageData(apsFrame.getPayload());
627629
command = unicastCommand;
628630
} else if (apsFrame.getAddressMode() == ZigBeeNwkAddressMode.DEVICE
629-
&& apsFrame.getDestinationAddress() >= 0xfff8) {
631+
&& ZigBeeBroadcastDestination.isBroadcast(apsFrame.getDestinationAddress())) {
630632
// Broadcast command
631633
TelegesisSendMulticastCommand multicastCommand = new TelegesisSendMulticastCommand();
632634
multicastCommand.setAddress(apsFrame.getDestinationAddress());

com.zsmartsystems.zigbee.dongle.telegesis/src/test/java/com/zsmartsystems/zigbee/dongle/telegesis/ZigBeeDongleTelegesisTest.java

Lines changed: 58 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
import static org.junit.Assert.assertEquals;
1111

12-
import java.lang.reflect.Field;
13-
import java.lang.reflect.Modifier;
1412
import java.util.Map;
1513
import java.util.concurrent.ConcurrentHashMap;
1614

@@ -20,14 +18,21 @@
2018

2119
import com.zsmartsystems.zigbee.ExtendedPanId;
2220
import com.zsmartsystems.zigbee.IeeeAddress;
21+
import com.zsmartsystems.zigbee.TestUtilities;
22+
import com.zsmartsystems.zigbee.ZigBeeApsFrame;
2323
import com.zsmartsystems.zigbee.ZigBeeNodeStatus;
24+
import com.zsmartsystems.zigbee.ZigBeeNwkAddressMode;
25+
import com.zsmartsystems.zigbee.ZigBeeProfileType;
26+
import com.zsmartsystems.zigbee.dongle.telegesis.internal.TelegesisFrameHandler;
2427
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisAckMessageEvent;
2528
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisDeviceJoinedNetworkEvent;
2629
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisDeviceLeftNetworkEvent;
2730
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNackMessageEvent;
2831
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNetworkJoinedEvent;
2932
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNetworkLeftEvent;
3033
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisNetworkLostEvent;
34+
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisSendMulticastCommand;
35+
import com.zsmartsystems.zigbee.dongle.telegesis.internal.protocol.TelegesisSendUnicastCommand;
3136
import com.zsmartsystems.zigbee.transport.ZigBeeTransportProgressState;
3237
import com.zsmartsystems.zigbee.transport.ZigBeeTransportReceive;
3338
import com.zsmartsystems.zigbee.transport.ZigBeeTransportState;
@@ -41,15 +46,6 @@
4146
public class ZigBeeDongleTelegesisTest {
4247
private static int TIMEOUT = 5000;
4348

44-
protected void setField(Class clazz, Object object, String fieldName, Object newValue) throws Exception {
45-
Field field = clazz.getDeclaredField(fieldName);
46-
field.setAccessible(true);
47-
Field modifiersField = Field.class.getDeclaredField("modifiers");
48-
modifiersField.setAccessible(true);
49-
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
50-
field.set(object, newValue);
51-
}
52-
5349
@Test
5450
public void setZigBeeExtendedPanId() {
5551
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
@@ -87,7 +83,7 @@ public void testTelegesisAckMessageEvent() throws Exception {
8783
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
8884
dongle.setZigBeeTransportReceive(transport);
8985

90-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
86+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
9187

9288
TelegesisAckMessageEvent response = Mockito.mock(TelegesisAckMessageEvent.class);
9389
Mockito.when(response.getMessageId()).thenReturn(123);
@@ -98,7 +94,7 @@ public void testTelegesisAckMessageEvent() throws Exception {
9894

9995
Map<Integer, Integer> messageIdMap = new ConcurrentHashMap<>();
10096
messageIdMap.put(123, 44);
101-
setField(ZigBeeDongleTelegesis.class, dongle, "messageIdMap", messageIdMap);
97+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "messageIdMap", messageIdMap);
10298

10399
dongle.telegesisEventReceived(response);
104100
Mockito.verify(transport, Mockito.timeout(TIMEOUT)).receiveCommandStatus(44,
@@ -112,7 +108,7 @@ public void testTelegesisNackMessageEvent() throws Exception {
112108
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
113109
dongle.setZigBeeTransportReceive(transport);
114110

115-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
111+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
116112

117113
TelegesisNackMessageEvent response = Mockito.mock(TelegesisNackMessageEvent.class);
118114
Mockito.when(response.getMessageId()).thenReturn(123);
@@ -123,7 +119,7 @@ public void testTelegesisNackMessageEvent() throws Exception {
123119

124120
Map<Integer, Integer> messageIdMap = new ConcurrentHashMap<>();
125121
messageIdMap.put(123, 44);
126-
setField(ZigBeeDongleTelegesis.class, dongle, "messageIdMap", messageIdMap);
122+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "messageIdMap", messageIdMap);
127123

128124
dongle.telegesisEventReceived(response);
129125
Mockito.verify(transport, Mockito.timeout(TIMEOUT)).receiveCommandStatus(44,
@@ -137,7 +133,7 @@ public void testTelegesisDeviceJoinedNetworkEvent() throws Exception {
137133
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
138134
dongle.setZigBeeTransportReceive(transport);
139135

140-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
136+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
141137

142138
TelegesisDeviceJoinedNetworkEvent response = Mockito.mock(TelegesisDeviceJoinedNetworkEvent.class);
143139
Mockito.when(response.getNetworkAddress()).thenReturn(123);
@@ -155,7 +151,7 @@ public void testTelegesisDeviceLeftNetworkEvent() throws Exception {
155151
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
156152
dongle.setZigBeeTransportReceive(transport);
157153

158-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
154+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
159155

160156
TelegesisDeviceLeftNetworkEvent response = Mockito.mock(TelegesisDeviceLeftNetworkEvent.class);
161157
Mockito.when(response.getNetworkAddress()).thenReturn(123);
@@ -173,7 +169,7 @@ public void testTelegesisNetworkLeftEvent() throws Exception {
173169
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
174170
dongle.setZigBeeTransportReceive(transport);
175171

176-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
172+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
177173

178174
TelegesisNetworkLeftEvent response = Mockito.mock(TelegesisNetworkLeftEvent.class);
179175
dongle.telegesisEventReceived(response);
@@ -188,7 +184,7 @@ public void testTelegesisNetworkLostEvent() throws Exception {
188184
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
189185
dongle.setZigBeeTransportReceive(transport);
190186

191-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
187+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
192188

193189
TelegesisNetworkLostEvent response = Mockito.mock(TelegesisNetworkLostEvent.class);
194190
dongle.telegesisEventReceived(response);
@@ -203,11 +199,53 @@ public void testTelegesisNetworkJoinedEvent() throws Exception {
203199
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
204200
dongle.setZigBeeTransportReceive(transport);
205201

206-
setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
202+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "startupComplete", true);
207203

208204
TelegesisNetworkJoinedEvent response = Mockito.mock(TelegesisNetworkJoinedEvent.class);
209205
dongle.telegesisEventReceived(response);
210206

211207
Mockito.verify(transport, Mockito.timeout(TIMEOUT)).setNetworkState(ZigBeeTransportState.ONLINE);
212208
}
209+
210+
@Test
211+
public void sendCommandUnicast() throws Exception {
212+
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
213+
TelegesisFrameHandler handler = Mockito.mock(TelegesisFrameHandler.class);
214+
215+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "frameHandler", handler);
216+
217+
ZigBeeApsFrame apsFrame = new ZigBeeApsFrame();
218+
apsFrame.setCluster(0);
219+
apsFrame.setProfile(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.getKey());
220+
apsFrame.setAddressMode(ZigBeeNwkAddressMode.DEVICE);
221+
apsFrame.setDestinationAddress(1234);
222+
apsFrame.setApsCounter(1);
223+
apsFrame.setRadius(30);
224+
apsFrame.setPayload(new int[] {});
225+
226+
dongle.sendCommand(apsFrame);
227+
Mockito.verify(handler, Mockito.timeout(TIMEOUT).times(1))
228+
.sendRequest(ArgumentMatchers.any(TelegesisSendUnicastCommand.class));
229+
}
230+
231+
@Test
232+
public void sendCommandBroadcast() throws Exception {
233+
ZigBeeDongleTelegesis dongle = new ZigBeeDongleTelegesis(null);
234+
TelegesisFrameHandler handler = Mockito.mock(TelegesisFrameHandler.class);
235+
236+
TestUtilities.setField(ZigBeeDongleTelegesis.class, dongle, "frameHandler", handler);
237+
238+
ZigBeeApsFrame apsFrame = new ZigBeeApsFrame();
239+
apsFrame.setCluster(0);
240+
apsFrame.setProfile(ZigBeeProfileType.ZIGBEE_HOME_AUTOMATION.getKey());
241+
apsFrame.setAddressMode(ZigBeeNwkAddressMode.DEVICE);
242+
apsFrame.setDestinationAddress(0xfff9);
243+
apsFrame.setApsCounter(1);
244+
apsFrame.setRadius(30);
245+
apsFrame.setPayload(new int[] {});
246+
247+
dongle.sendCommand(apsFrame);
248+
Mockito.verify(handler, Mockito.timeout(TIMEOUT).times(1))
249+
.sendRequest(ArgumentMatchers.any(TelegesisSendMulticastCommand.class));
250+
}
213251
}

0 commit comments

Comments
 (0)