From 72c0763a58c468141a76eecd2cc9dd9956a150a8 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sun, 5 Jul 2020 18:13:49 -0400 Subject: [PATCH] one step forward two steps backwards? --- android/app/lib/dfu_java.jar | Bin 31138 -> 35500 bytes .../src/main/java/com/rusefi/app/rusEFI.java | 104 ++++++++++++++++-- 2 files changed, 92 insertions(+), 12 deletions(-) diff --git a/android/app/lib/dfu_java.jar b/android/app/lib/dfu_java.jar index 19039cfbfa058b65a158f6d09e1f4abf643b9a8d..da44568c60e37c1b9d8c02031739bd6ce813e55b 100644 GIT binary patch delta 27990 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 K2WQ}K$o~OxA_rjr delta 23761 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 onSuccess = new Listener() { @Override public void onResult(final Integer size) { mResultView.post(new Runnable() { @Override public void run() { - mResultView.append("File size: " + size + "\n"); + mResultView.append(localDfuImageFileName + " File size: " + size + "\n"); } }); DfuImage dfuImage = new DfuImage(); - dfuImage.read(localDfuName); + dfuImage.read(localDfuImageFileName); } }; new Thread(() -> { try { FileUtil.unzip(localFullFile, localFolder); - final int size = (int) new File(localDfuName).length(); + final int size = (int) new File(localDfuImageFileName).length(); onSuccess.onResult(size); } catch (final IOException e) { @@ -190,7 +204,7 @@ public class rusEFI extends Activity { List availableDrivers = AndroidSerial.findUsbSerial(usbManager); if (availableDrivers.isEmpty()) { mStatusView.setText("Not connected"); - mResultView.append("No serial devices " + new Date()); + mResultView.append("No serial devices " + new Date() + "\n"); return; } mStatusView.setText("rusEFI: " + availableDrivers.size() + " device(s)"); @@ -209,6 +223,7 @@ public class rusEFI extends Activity { port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE); AndroidSerial serial = new AndroidSerial(port); + mResultView.append("Switching to DFU\n"); DfuHelper.sendDfuRebootCommand(serial, new StringBuilder(), Logger.CONSOLE); } catch (IOException e) { @@ -225,8 +240,73 @@ public class rusEFI extends Activity { } } - private DfuDeviceLocator.Result dfuUpdate(UsbDevice dfuDevice) { - return new DfuDeviceLocator().openDfu(usbManager, dfuDevice); + private void dfuUpdate(UsbDevice dfuDevice) { + mStatusView.setText("rusEFI: DFU detected"); + DfuDeviceLocator.Result dfu = new DfuDeviceLocator().openDfu(usbManager, dfuDevice); + + DfuImage dfuImage = new DfuImage(); + dfuImage.read(localDfuImageFileName); + mResultView.append("Image size " + dfuImage.getImageSize() + "\n"); + + DfuConnection c = new DfuConnection() { + @Override + public FlashRange getFlashRange() { + return dfu.getFlashRange(); + } + + @Override + public int getTransferSize() { + return dfu.getTransferSize(); + } + + @Override + public int receiveData(DfuCommmand dfuCommmand, short wValue, ByteBuffer byteBuffer) { + return transfer(dfu.getConnection(), USB_DIR_IN, dfuCommmand.getValue(), wValue, byteBuffer); + } + + @Override + public int sendData(DfuCommmand dfuCommmand, short wValue, ByteBuffer byteBuffer) { + return transfer(dfu.getConnection(), USB_DIR_OUT, dfuCommmand.getValue(), wValue, byteBuffer); + } + }; + + + DfuLogic.Logger logger = DfuLogic.Logger.CONSOLE; + try { +// DfuCommandGetStatus.State state = DfuCommandGetStatus.read(c); +// mResultView.append("State " + state + "\n"); + + DfuCommandGetStatus.DeviceStatus state = DfuCommandGetStatus.read(logger, c); + + if (state.getState() == DfuCommandGetStatus.State.APP_IDLE) { + System.out.println("Wow?"); + + + c.sendData(DfuCommmand.DETACH, (short) DFU_DETACH_TIMEOUT, ByteBuffer.allocateDirect(0)); + + + } + + if (state.getState() == DfuCommandGetStatus.State.APP_IDLE) { + System.out.println("Wow?2"); + + + c.sendData(DfuCommmand.DETACH, (short) DFU_DETACH_TIMEOUT, ByteBuffer.allocateDirect(0)); + + + } + + + DfuLogic.uploadImage(logger, c, dfuImage, dfu.getFlashRange()); + + } catch (IllegalStateException e) { + mResultView.append("Error " + e + "\n"); + } + } + + private static int transfer(UsbDeviceConnection connection, int direction, int request, short wValue, ByteBuffer byteBuffer) { + return connection.controlTransfer(REQUEST_TYPE_CLASS | RECIPIENT_INTERFACE | direction, request, + wValue, 0, byteBuffer.array(), byteBuffer.limit(), 500); } /**