From 6645a81d1ccd0deace0712a4de39b7a68457a4d5 Mon Sep 17 00:00:00 2001 From: David Lechner Date: Fri, 22 May 2020 20:37:12 -0500 Subject: [PATCH] catch all message decode errors --- src/sagas/bootloader.ts | 57 ++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/sagas/bootloader.ts b/src/sagas/bootloader.ts index 23a14eaa..12b615a1 100644 --- a/src/sagas/bootloader.ts +++ b/src/sagas/bootloader.ts @@ -152,33 +152,36 @@ function* encodeRequest(): Generator { * @param action The received response action. */ function* decodeResponse(action: BootloaderConnectionDidReceiveAction): Generator { - const responseType = getMessageType(action.data); - switch (responseType) { - case Command.EraseFlash: - yield put(eraseResponse(parseEraseFlashResponse(action.data))); - break; - case Command.ProgramFlash: - yield put(programResponse(...parseProgramFlashResponse(action.data))); - break; - case Command.InitLoader: - yield put(initResponse(parseInitLoaderResponse(action.data))); - break; - case Command.GetInfo: - yield put(infoResponse(...parseGetInfoResponse(action.data))); - break; - case Command.GetChecksum: - yield put(checksumResponse(parseGetChecksumResponse(action.data))); - break; - case Command.GetFlashState: - yield put(stateResponse(parseGetFlashStateResponse(action.data))); - break; - case ErrorBytecode: - yield put(errorResponse(parseErrorResponse(action.data))); - break; - /* istanbul ignore next: should not be possible to reach */ - default: - console.error(`Unknown bootloader response action ${action}`); - break; + try { + const responseType = getMessageType(action.data); + switch (responseType) { + case Command.EraseFlash: + yield put(eraseResponse(parseEraseFlashResponse(action.data))); + break; + case Command.ProgramFlash: + yield put(programResponse(...parseProgramFlashResponse(action.data))); + break; + case Command.InitLoader: + yield put(initResponse(parseInitLoaderResponse(action.data))); + break; + case Command.GetInfo: + yield put(infoResponse(...parseGetInfoResponse(action.data))); + break; + case Command.GetChecksum: + yield put(checksumResponse(parseGetChecksumResponse(action.data))); + break; + case Command.GetFlashState: + yield put(stateResponse(parseGetFlashStateResponse(action.data))); + break; + case ErrorBytecode: + yield put(errorResponse(parseErrorResponse(action.data))); + break; + default: + throw new Error(`Unknown bootloader response action ${action}`); + } + } catch (err) { + // TODO: dispatch an error action + console.error(`Error decoding message: ${err}`); } }