Skip to content

Commit e5c5d72

Browse files
authored
fix: Ember: tweak error logging (#1582)
1 parent cd0e306 commit e5c5d72

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

src/adapter/ember/adapter/emberAdapter.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1288,8 +1288,7 @@ export class EmberAdapter extends Adapter {
12881288
* Received when EZSP layer alerts of a problem that needs the NCP to be reset.
12891289
* @param status
12901290
*/
1291-
private onNcpNeedsResetAndInit(status: EzspStatus): void {
1292-
logger.error(`Adapter fatal error: ${EzspStatus[status]}`, NS);
1291+
private onNcpNeedsResetAndInit(_status: EzspStatus): void {
12931292
this.emit("disconnected");
12941293
}
12951294

src/adapter/ember/ezsp/ezsp.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,14 +349,15 @@ export class Ezsp extends EventEmitter<EmberEzspEventMap> {
349349
}
350350

351351
/**
352-
* Triggered by @see 'FATAL_ERROR'
352+
* Triggered by ASH layer @see 'fatalError'
353353
*/
354354
private onAshFatalError(status: EzspStatus): void {
355+
logger.error(`Fatal error, status=${EzspStatus[status]}. Last Frame: ${this.frameToString}`, NS);
355356
this.emit("ncpNeedsResetAndInit", status);
356357
}
357358

358359
/**
359-
* Triggered by @see 'FRAME'
360+
* Triggered by ASH layer @see 'frame'
360361
*/
361362
private onAshFrame(): void {
362363
const buffer = this.ash.rxQueue.getPrecedingEntry();

src/adapter/ember/uart/ash.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,8 +594,7 @@ export class UartAsh extends EventEmitter<UartAshEventMap> {
594594
this.sendExec(); // always trigger to cover all cases
595595

596596
if (status !== EzspStatus.SUCCESS && status !== EzspStatus.ASH_IN_PROGRESS && status !== EzspStatus.NO_RX_DATA) {
597-
logger.error(`Error while parsing received frame, status=${EzspStatus[status]}.`, NS);
598-
this.emit("fatalError", EzspStatus.HOST_FATAL_ERROR);
597+
this.emit("fatalError", status);
599598
return;
600599
}
601600
}

test/adapter/ember/emberAdapter.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3365,7 +3365,7 @@ describe("Ember Adapter Layer", () => {
33653365
return SLStatus.OK;
33663366
});
33673367

3368-
const p = adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000);
3368+
const p = adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000, false);
33693369

33703370
await vi.advanceTimersByTimeAsync(5000);
33713371

@@ -3400,7 +3400,7 @@ describe("Ember Adapter Layer", () => {
34003400
{},
34013401
);
34023402

3403-
await expect(adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000)).rejects.toThrow(
3403+
await expect(adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000, false)).rejects.toThrow(
34043404
`Command '${commandName}' has no response, cannot wait for response.`,
34053405
);
34063406
expect(mockEzspSendRawMessage).toHaveBeenCalledTimes(0);
@@ -3421,7 +3421,7 @@ describe("Ember Adapter Layer", () => {
34213421
{},
34223422
);
34233423

3424-
await expect(adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000)).rejects.toThrow(
3424+
await expect(adapter.sendZclFrameInterPANBroadcast(zclFrame, 10000, false)).rejects.toThrow(
34253425
`~x~> [ZCL TOUCHLINK BROADCAST] Failed to send with status=${SLStatus[SLStatus.BUSY]}.`,
34263426
);
34273427
expect(mockEzspSendRawMessage).toHaveBeenCalledTimes(1);

test/adapter/ember/ezsp.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,9 @@ describe("Ember Ezsp Layer", () => {
210210

211211
it("Restarts ASH layer when received ERROR from port", async () => {
212212
let restart: () => Promise<EzspStatus>;
213+
const emitSpy = vi.spyOn(ezsp, "emit");
213214
// @ts-expect-error private
214-
const onAshFatalErrorSpy = vi.spyOn(ezsp, "onAshFatalError").mockImplementationOnce((_status: EzspStatus): void => {
215+
const onAshFatalErrorSpy = vi.spyOn(ezsp, "onAshFatalError").mockImplementationOnce((status: EzspStatus): void => {
215216
// mimic EmberAdapter onNcpNeedsResetAndInit
216217
restart = async () => {
217218
vi.useRealTimers();
@@ -225,6 +226,8 @@ describe("Ember Ezsp Layer", () => {
225226
await emitFromSerial(ezsp, Buffer.from(RECD_RSTACK_BYTES));
226227
return await Promise.resolve(startResult);
227228
};
229+
// @ts-expect-error private
230+
ezsp.onAshFatalError(status);
228231
});
229232
const startResult = ezsp.start();
230233

@@ -257,7 +260,8 @@ describe("Ember Ezsp Layer", () => {
257260
await expect(restart()).resolves.toStrictEqual(EzspStatus.SUCCESS);
258261
//@ts-expect-error private
259262
expect(ezsp.ash.serialPort.port.recording).toStrictEqual(POST_RSTACK_SERIAL_BYTES);
260-
expect(onAshFatalErrorSpy).toHaveBeenCalledWith(EzspStatus.HOST_FATAL_ERROR);
263+
expect(onAshFatalErrorSpy).toHaveBeenCalledWith(EzspStatus.ASH_NCP_FATAL_ERROR);
264+
expect(emitSpy).toHaveBeenCalledWith("ncpNeedsResetAndInit", EzspStatus.ASH_NCP_FATAL_ERROR);
261265
expect(ezsp.checkConnection()).toBeTruthy();
262266
});
263267

0 commit comments

Comments
 (0)