Skip to content

Commit 5774fca

Browse files
authored
Check return from NCP when setting channel (#1450)
Signed-off-by: Chris Jackson <[email protected]>
1 parent a2129ad commit 5774fca

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1083,11 +1083,12 @@ public ZigBeeStatus setZigBeeChannel(ZigBeeChannel channel) {
10831083
}
10841084
if (networkStateUp) {
10851085
EmberNcp ncp = getEmberNcp();
1086-
ncp.setRadioChannel(channel);
1086+
return ncp.setRadioChannel(channel) == EmberStatus.EMBER_SUCCESS ? ZigBeeStatus.SUCCESS
1087+
: ZigBeeStatus.BAD_RESPONSE;
10871088
} else {
10881089
networkParameters.setRadioChannel(channel.getChannel());
1090+
return ZigBeeStatus.SUCCESS;
10891091
}
1090-
return ZigBeeStatus.SUCCESS;
10911092
}
10921093

10931094
@Override

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

+30-5
Original file line numberDiff line numberDiff line change
@@ -415,11 +415,18 @@ public EmberNcp getEmberNcp() {
415415
}
416416

417417
@Test
418-
public void setZigBeeChannel() {
418+
public void setZigBeeChannelOk() {
419419
System.out.println("--- " + Thread.currentThread().getStackTrace()[1].getMethodName());
420-
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
421420

422-
assertEquals(ZigBeeStatus.INVALID_ARGUMENTS, dongle.setZigBeeChannel(ZigBeeChannel.CHANNEL_03));
421+
final EmberNcp ncp = Mockito.mock(EmberNcp.class);
422+
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null) {
423+
@Override
424+
public EmberNcp getEmberNcp() {
425+
return ncp;
426+
}
427+
};
428+
429+
Mockito.when(ncp.setRadioChannel(ArgumentMatchers.any())).thenReturn(EmberStatus.EMBER_SUCCESS);
423430

424431
assertEquals(ZigBeeStatus.SUCCESS, dongle.setZigBeeChannel(ZigBeeChannel.CHANNEL_11));
425432
assertEquals(ZigBeeChannel.CHANNEL_11, dongle.getZigBeeChannel());
@@ -428,13 +435,31 @@ public void setZigBeeChannel() {
428435
assertEquals(ZigBeeChannel.CHANNEL_24, dongle.getZigBeeChannel());
429436
}
430437

438+
@Test
439+
public void setZigBeeChannelError() throws Exception {
440+
System.out.println("--- " + Thread.currentThread().getStackTrace()[1].getMethodName());
441+
442+
final EmberNcp ncp = Mockito.mock(EmberNcp.class);
443+
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null) {
444+
@Override
445+
public EmberNcp getEmberNcp() {
446+
return ncp;
447+
}
448+
};
449+
450+
TestUtilities.setField(ZigBeeDongleEzsp.class, dongle, "networkStateUp", true);
451+
452+
Mockito.when(ncp.setRadioChannel(ArgumentMatchers.any())).thenReturn(EmberStatus.UNKNOWN);
453+
454+
assertEquals(ZigBeeStatus.INVALID_ARGUMENTS, dongle.setZigBeeChannel(ZigBeeChannel.CHANNEL_03));
455+
assertEquals(ZigBeeStatus.BAD_RESPONSE, dongle.setZigBeeChannel(ZigBeeChannel.CHANNEL_24));
456+
}
457+
431458
@Test
432459
public void testEzspMessageSentHandler() throws Exception {
433460
System.out.println("--- " + Thread.currentThread().getStackTrace()[1].getMethodName());
434461
ZigBeeTransportReceive transport = Mockito.mock(ZigBeeTransportReceive.class);
435462

436-
final EmberNcp ncp = Mockito.mock(EmberNcp.class);
437-
Mockito.when(ncp.getNwkAddress()).thenReturn(1243);
438463
ZigBeeDongleEzsp dongle = new ZigBeeDongleEzsp(null);
439464
dongle.setZigBeeTransportReceive(transport);
440465

0 commit comments

Comments
 (0)