import { hexToBase64 } from '../../parsing/binary'; import { sendCommandWithResponse } from '../sendCommands'; import { FirmwareClerk } from './FirmwareClerk'; const INFO_PROBE_COMMAND = hexToBase64('7E 09'); export const getCurrentFirmware = async ({ bluetoothContext }) => { const receiver = ({ resolve, probeEmitter, timeoutId }) => new FirmwareClerk( firmwareVersion => { clearTimeout(timeoutId); probeEmitter.cancel().finally(() => bluetoothContext.mutex.release()); bluetoothContext.setFirmware(firmwareVersion); resolve(firmwareVersion); }, _aReason => { clearTimeout(timeoutId); probeEmitter.cancel().finally(() => bluetoothContext.mutex.release()); bluetoothContext.setFirmware(bluetoothContext.UNKNOWN_FIRMWARE_VERSION); resolve(bluetoothContext.UNKNOWN_FIRMWARE_VERSION); }, ); return sendCommandWithResponse({ bluetoothContext, receiver, timeOutInMs: bluetoothContext.timeOuts.firmwareTimeOutInMs, probeCommand: INFO_PROBE_COMMAND, }); };