Skip to content

Commit 04ca2c3

Browse files
authored
fix removeDevice (#288)
1 parent 789eb56 commit 04ca2c3

File tree

4 files changed

+54
-8
lines changed

4 files changed

+54
-8
lines changed

src/adapter/zigate/adapter/zigateAdapter.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -519,13 +519,17 @@ class ZiGateAdapter extends Adapter {
519519

520520
public async removeDevice(networkAddress: number, ieeeAddr: string): Promise<void> {
521521
const payload = {
522-
targetAddress: ieeeAddr,
523-
extendedAddress: ieeeAddr
522+
shortAddress: networkAddress,
523+
extendedAddress: ieeeAddr,
524+
rejoin: 0,
525+
removeChildren: 0
524526
};
525527

526-
// @TODO test
527-
await this.driver.sendCommand(ZiGateCommandCode.RemoveDevice, payload);
528-
return Promise.resolve();
528+
529+
return this.driver.sendCommand(ZiGateCommandCode.ManagementLeaveRequest, payload)
530+
.then((Response) => {
531+
return Promise.resolve()
532+
}).catch(() => Promise.reject());
529533
};
530534

531535
/**

src/adapter/zigate/driver/commandType.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,43 @@ export const ZiGateCommand: { [key: string]: ZiGateCommandType } = {
182182
{name: 'channelMask', parameterType: 'UINT32BE'}, //<channel mask:uint32_t>
183183
]
184184
},
185+
186+
[ZiGateCommandCode.ManagementLeaveRequest]: {
187+
request: [
188+
{name: 'shortAddress', parameterType: 'UINT16BE'},
189+
{name: 'extendedAddress', parameterType: 'IEEEADDR'}, // <extended address: uint64_t>
190+
{name: 'rejoin', parameterType: 'UINT8'},
191+
{name: 'removeChildren', parameterType: 'UINT8'}, // <Remove Children: uint8_t>
192+
],
193+
response: [
194+
[
195+
{
196+
receivedProperty: 'code',
197+
matcher: equal,
198+
value: ZiGateMessageCode.LeaveIndication
199+
},
200+
{
201+
receivedProperty: 'payload.extendedAddress', matcher: equal,
202+
expectedProperty: 'payload.extendedAddress'
203+
},
204+
],
205+
[
206+
{
207+
receivedProperty: 'code',
208+
matcher: equal,
209+
value: ZiGateMessageCode.ManagementLeaveResponse
210+
},
211+
{
212+
receivedProperty: 'payload.sqn', matcher: equal,
213+
expectedProperty: 'status.seqApsNum'
214+
},
215+
],
216+
]
217+
},
218+
185219
[ZiGateCommandCode.RemoveDevice]: {
186220
request: [
187-
{name: 'targetAddress', parameterType: 'IEEEADDR'}, // <target address: uint64_t>
221+
{name: 'parentAddress', parameterType: 'IEEEADDR'}, // <parent address: uint64_t>
188222
{name: 'extendedAddress', parameterType: 'IEEEADDR'}, // <extended address: uint64_t>
189223
],
190224
response: [

src/adapter/zigate/driver/constants.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ export enum ZiGateCommandCode {
216216
IEEEAddress = 0x0041,
217217
LED = 0x0018,
218218
SetTXpower = 0x0806,
219+
ManagementLeaveRequest = 0x0047,
219220
ManagementLQI = 0x004E,
220221
SetSecurityStateKey = 0x0022,
221222
}
@@ -236,6 +237,7 @@ export enum ZiGateMessageCode {
236237
PermitJoinStatus = 0x8014,
237238
GetTimeServer = 0x8017,
238239
ManagementLQIResponse = 0x804E,
240+
ManagementLeaveResponse = 0x8047,
239241
PDMEvent = 0x8035,
240242
RestartNonFactoryNew = 0x8006,
241243
RestartFactoryNew = 0x8007,

src/adapter/zigate/driver/messageType.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,14 @@ export const ZiGateMessage: { [k: number]: ZiGateMessageType } = {
120120
},
121121
[ZiGateMessageCode.LeaveIndication]: {
122122
response: [
123-
{name: 'extendedAddress', parameterType:'IEEEADDR'}, // <extended address: uint64_t>
124-
{name: 'rejoin', parameterType:'UINT8'}, // <rejoin status: uint8_t>
123+
{name: 'extendedAddress', parameterType: 'IEEEADDR'}, // <extended address: uint64_t>
124+
{name: 'rejoin', parameterType: 'UINT8'}, // <rejoin status: uint8_t>
125+
]
126+
},
127+
[ZiGateMessageCode.ManagementLeaveResponse]: {
128+
response: [
129+
{name: 'sqn', parameterType: 'UINT8'},
130+
{name: 'status', parameterType: 'UINT8'}, // <status: uint8_t>
125131
]
126132
},
127133
[ZiGateMessageCode.RouterDiscoveryConfirm]: {

0 commit comments

Comments
 (0)