diff --git a/pom.xml b/pom.xml index 2b96fe1..3f6d31c 100644 --- a/pom.xml +++ b/pom.xml @@ -172,6 +172,17 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + + org.apache.maven.plugins + maven-failsafe-plugin + 2.22.2 + org.apache.maven.plugins maven-compiler-plugin diff --git a/src/main/java/nsusbloader/Controllers/FrontController.java b/src/main/java/nsusbloader/Controllers/FrontController.java index 0b2f12e..423fe67 100644 --- a/src/main/java/nsusbloader/Controllers/FrontController.java +++ b/src/main/java/nsusbloader/Controllers/FrontController.java @@ -30,8 +30,8 @@ import javafx.scene.layout.Region; import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import nsusbloader.AppPreferences; -import nsusbloader.COM.NET.NETCommunications; -import nsusbloader.COM.USB.UsbCommunications; +import nsusbloader.com.net.NETCommunications; +import nsusbloader.com.usb.UsbCommunications; import nsusbloader.FilesHelper; import nsusbloader.MediatorControl; import nsusbloader.ModelControllers.CancellableRunnable; diff --git a/src/main/java/nsusbloader/Utilities/Rcm.java b/src/main/java/nsusbloader/Utilities/Rcm.java index fddb849..3072944 100644 --- a/src/main/java/nsusbloader/Utilities/Rcm.java +++ b/src/main/java/nsusbloader/Utilities/Rcm.java @@ -24,8 +24,8 @@ */ package nsusbloader.Utilities; -import nsusbloader.COM.USB.UsbConnect; -import nsusbloader.COM.USB.UsbErrorCodes; +import nsusbloader.com.usb.UsbConnect; +import nsusbloader.com.usb.UsbErrorCodes; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.ModelControllers.Log; import nsusbloader.NSLDataTypes.EModule; @@ -39,14 +39,12 @@ import java.util.Arrays; public class Rcm implements Runnable{ - private boolean status = false; - private enum ECurrentOS { win, lin, mac, unsupported } - private ILogPrinter logPrinter; - private String filePath; + private final ILogPrinter logPrinter; + private final String filePath; private DeviceHandle handler; diff --git a/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtNspFile.java b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtNspFile.java new file mode 100644 index 0000000..8cf1911 --- /dev/null +++ b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtNspFile.java @@ -0,0 +1,67 @@ +/* + Copyright 2019-2020 Dmitry Isaenko, DarkMatterCore + + This file is part of NS-USBloader. + + NS-USBloader is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + NS-USBloader is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with NS-USBloader. If not, see . +*/ +package nsusbloader.Utilities.nxdumptool; + +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; + +public class NxdtNspFile { + private final String name; + private final int headerSize; + private final long fullSize; + private long nspRemainingSize; + private final File file; + + NxdtNspFile(String name, int headerSize, long fullSize, File file) throws Exception{ + this.name = name; + this.headerSize = headerSize; + this.fullSize = fullSize; + this.file = file; + this.nspRemainingSize = fullSize - headerSize; + + removeIfExists(); + createHeaderFiller(); + } + private void removeIfExists() throws Exception{ + if (! file.exists()) + return; + + if (file.delete()) + return; + + throw new Exception("Unable to delete leftovers of the NSP file: "+name); + } + private void createHeaderFiller() throws Exception { + try (RandomAccessFile raf = new RandomAccessFile(file, "rw")){ + raf.setLength(headerSize); + } + catch (IOException e){ + throw new Exception("Unable to reserve space for NSP file's header: "+e.getMessage()); + } + } + + public String getName() { return name; } + public int getHeaderSize() { return headerSize; } + public long getFullSize() { return fullSize; } + public File getFile() { return file; } + public long getNspRemainingSize() { return nspRemainingSize; } + + public void setNspRemainingSize(long nspRemainingSize) { this.nspRemainingSize = nspRemainingSize; } +} diff --git a/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtTask.java b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtTask.java index 04b76ff..b5cb872 100644 --- a/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtTask.java +++ b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtTask.java @@ -18,7 +18,7 @@ */ package nsusbloader.Utilities.nxdumptool; -import nsusbloader.COM.USB.UsbConnect; +import nsusbloader.com.usb.UsbConnect; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.ModelControllers.Log; diff --git a/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtUsbAbi1.java b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtUsbAbi1.java index dd2a1bc..738f4c1 100644 --- a/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtUsbAbi1.java +++ b/src/main/java/nsusbloader/Utilities/nxdumptool/NxdtUsbAbi1.java @@ -18,9 +18,9 @@ */ package nsusbloader.Utilities.nxdumptool; -import nsusbloader.COM.USB.UsbErrorCodes; -import nsusbloader.COM.USB.common.DeviceInformation; -import nsusbloader.COM.USB.common.NsUsbEndpointDescriptor; +import nsusbloader.com.usb.UsbErrorCodes; +import nsusbloader.com.usb.common.DeviceInformation; +import nsusbloader.com.usb.common.NsUsbEndpointDescriptor; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EMsgType; import org.usb4java.DeviceHandle; @@ -31,7 +31,11 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.IntBuffer; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Arrays; +import java.util.HashMap; class NxdtUsbAbi1 { private final ILogPrinter logPrinter; @@ -51,6 +55,7 @@ class NxdtUsbAbi1 { private static final int CMD_HANDSHAKE = 0; private static final int CMD_SEND_FILE_PROPERTIES = 1; + private static final int CMD_SEND_NSP_HEADER = 2; private static final int CMD_ENDSESSION = 3; // Standard set of possible replies @@ -79,19 +84,19 @@ class NxdtUsbAbi1 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - private short endpointMaxPacketSize; - private static final int NXDT_USB_TIMEOUT = 5000; + private HashMap nspFiles; + public NxdtUsbAbi1(DeviceHandle handler, ILogPrinter logPrinter, String saveToPath, NxdtTask parent )throws Exception{ this.handlerNS = handler; - //this.endpointMaxPacketSize = wMaxPacketSize; this.logPrinter = logPrinter; this.parent = parent; + this.nspFiles = new HashMap<>(); this.isWindows = System.getProperty("os.name").toLowerCase().contains("windows"); if (isWindows) @@ -110,7 +115,10 @@ class NxdtUsbAbi1 { private void resolveEndpointMaxPacketSize() throws Exception{ DeviceInformation deviceInformation = DeviceInformation.build(handlerNS); NsUsbEndpointDescriptor endpointInDescriptor = deviceInformation.getSimplifiedDefaultEndpointDescriptorIn(); - this.endpointMaxPacketSize = endpointInDescriptor.getwMaxPacketSize(); + short endpointMaxPacketSize = endpointInDescriptor.getwMaxPacketSize(); + + USBSTATUS_SUCCESS[8] = (byte)(endpointMaxPacketSize & 0xFF); + USBSTATUS_SUCCESS[9] = (byte)((endpointMaxPacketSize >> 8) & 0xFF); } private void readLoop(){ @@ -134,6 +142,9 @@ class NxdtUsbAbi1 { case CMD_SEND_FILE_PROPERTIES: handleSendFileProperties(directive); break; + case CMD_SEND_NSP_HEADER: + handleSendNspHeader(directive); + break; case CMD_ENDSESSION: logPrinter.print("Session successfully ended.", EMsgType.PASS); return; @@ -187,70 +198,112 @@ class NxdtUsbAbi1 { writeUsb(USBSTATUS_UNSUPPORTED_ABI); throw new Exception("ABI v"+versionABI+" is not supported in current version."); } - replyToHandshake(); - } - private void replyToHandshake() throws Exception{ - // Send status response + endpoint max packet size - ByteBuffer buffer = ByteBuffer.allocate(USBSTATUS_SUCCESS.length + 2).order(ByteOrder.LITTLE_ENDIAN); - buffer.put(USBSTATUS_SUCCESS); - buffer.putShort(endpointMaxPacketSize); - byte[] response = buffer.array(); - writeUsb(response); + writeUsb(USBSTATUS_SUCCESS); } private void handleSendFileProperties(byte[] message) throws Exception{ - final long fileSize = getLElong(message, 0x10); + final long fullSize = getLElong(message, 0x10); final int fileNameLen = getLEint(message, 0x18); - String filename = new String(message, 0x20, fileNameLen, StandardCharsets.UTF_8); + final int headerSize = getLEint(message, 0x1C); - if (fileNameLen <= 0 || fileNameLen > NXDT_FILE_PROPERTIES_MAX_NAME_LENGTH){ - writeUsb(USBSTATUS_MALFORMED_REQUEST); - logPrinter.print("Invalid filename length!", EMsgType.FAIL); + if (checkFileNameLen(fileNameLen)) // In case of negative value we should better handle it before String constructor throws error return; - } - // TODO: Note, in case of a big amount of small files performace decreses dramatically. It's better to handle this only in case of 1-big-file-transfer - logPrinter.print("Receiving: '"+filename+"' ("+fileSize+" b)", EMsgType.INFO); - // If RomFs related - if (isRomFs(filename)) { - if (isWindows) - filename = saveToPath + filename.replaceAll("/", "\\\\"); - else - filename = saveToPath + filename; - createPath(filename); + String filename = new String(message, 0x20, fileNameLen, StandardCharsets.UTF_8); + String absoluteFilePath = getAbsoluteFilePath(filename); + File fileToDump = new File(absoluteFilePath); + NxdtNspFile nspFile = nspFiles.get(filename); // it could be null, but it's not a problem. + boolean nspTransferMode = false; + + if (checkSizes(fullSize, headerSize)) + return; + + if (createPath(absoluteFilePath)) + return; + + + if (checkFileSystem(fileToDump, fullSize)) + return; + + if (headerSize > 0){ // if NSP + logPrinter.print("Receiving NSP file entry: '"+filename+"' ("+fullSize+" b)", EMsgType.INFO); + if (nspFiles.containsKey(filename)){ + nspTransferMode = true; + } + else { + createNewNsp(filename, headerSize, fullSize, fileToDump); + return; + } } else { - //logPrinter.print("Receiving: '"+filename+"' ("+fileSize+" b)", EMsgType.INFO); // TODO: see above - filename = saveToPath + filename; + // TODO: Note, in case of a big amount of small files performance decreases dramatically. It's better to handle this only in case of 1-big-file-transfer + logPrinter.print("Receiving: '"+filename+"' ("+fullSize+" b)", EMsgType.INFO); } - File fileToDump = new File(filename); + writeUsb(USBSTATUS_SUCCESS); + + if (fullSize == 0) + return; + + if (nspTransferMode) + dumpNspFile(nspFile, fullSize); + else + dumpFile(fileToDump, fullSize); + + writeUsb(USBSTATUS_SUCCESS); + + } + private boolean checkFileNameLen(int fileNameLen) throws Exception{ + if (fileNameLen <= 0 || fileNameLen > NXDT_FILE_PROPERTIES_MAX_NAME_LENGTH){ + logPrinter.print("Invalid filename length!", EMsgType.FAIL); + writeUsb(USBSTATUS_MALFORMED_REQUEST); + return true; + } + return false; + } + private boolean checkSizes(long fileSize, int headerSize) throws Exception{ + if (fileSize >= headerSize){ + logPrinter.print("File size should not be equal to header size for NSP files!", EMsgType.FAIL); + writeUsb(USBSTATUS_MALFORMED_REQUEST); + return true; + } + if (fileSize < 0){ // It's possible to have files of zero-length, so only less is the problem + logPrinter.print("File size should not be less then zero!", EMsgType.FAIL); + writeUsb(USBSTATUS_MALFORMED_REQUEST); + return true; + } + return false; + } + + private boolean checkFileSystem(File fileToDump, long fileSize) throws Exception{ // Check if enough space if (fileToDump.getParentFile().getFreeSpace() <= fileSize){ writeUsb(USBSTATUS_HOSTIOERROR); logPrinter.print("Not enough space on selected volume. Need: "+fileSize+ " while available: "+fileToDump.getParentFile().getFreeSpace(), EMsgType.FAIL); - return; + return true; } // Check if FS is NOT read-only if (! (fileToDump.canWrite() || fileToDump.createNewFile()) ){ writeUsb(USBSTATUS_HOSTIOERROR); logPrinter.print("Unable to write into selected volume: "+fileToDump.getAbsolutePath(), EMsgType.FAIL); + return true; + } + return false; + } + private void createNewNsp(String filename, int headerSize, long fileSize, File fileToDump) throws Exception{ + try { + NxdtNspFile nsp = new NxdtNspFile(filename, headerSize, fileSize, fileToDump); + nspFiles.putIfAbsent(filename, nsp); + } + catch (Exception e){ + logPrinter.print(e.getMessage(), EMsgType.FAIL); + writeUsb(USBSTATUS_HOSTIOERROR); return; } - writeUsb(USBSTATUS_SUCCESS); - - if (fileSize == 0) - return; - - dumpFile(fileToDump, fileSize); - - writeUsb(USBSTATUS_SUCCESS); - } - private int getLEint(byte[] bytes, int fromOffset){ return ByteBuffer.wrap(bytes, fromOffset, 0x4).order(ByteOrder.LITTLE_ENDIAN).getInt(); } @@ -259,24 +312,30 @@ class NxdtUsbAbi1 { return ByteBuffer.wrap(bytes, fromOffset, 0x8).order(ByteOrder.LITTLE_ENDIAN).getLong(); } + private String getAbsoluteFilePath(String filename) throws Exception{ + if (isRomFs(filename) && isWindows) // Since RomFS entry starts from '/' it should be replaced to '\'. + return saveToPath + filename.replaceAll("/", "\\\\"); + return saveToPath + filename; + } private boolean isRomFs(String filename){ return filename.startsWith("/"); } - private void createPath(String path) throws Exception{ - File resultingFile = new File(path); - File folderForTheFile = resultingFile.getParentFile(); - - if (folderForTheFile.exists()) - return; - - if (folderForTheFile.mkdirs()) - return; - - writeUsb(USBSTATUS_HOSTIOERROR); - throw new Exception("Unable to create dir(s) for file in "+folderForTheFile); + private boolean createPath(String path) throws Exception{ + try { + Path folderForTheFile = Paths.get(path).getParent(); + Files.createDirectories(folderForTheFile); + return false; + } + catch (Exception e){ + logPrinter.print("Unable to create dir(s) for file "+path, EMsgType.FAIL); + writeUsb(USBSTATUS_HOSTIOERROR); + return true; + } } + + // @see https://bugs.openjdk.java.net/browse/JDK-8146538 private void dumpFile(File file, long size) throws Exception{ FileOutputStream fos = new FileOutputStream(file, true); @@ -295,7 +354,6 @@ class NxdtUsbAbi1 { fd.sync(); bufferSize = readBuffer.length; received += bufferSize; - logPrinter.updateProgress((double)received / (double)size); } int lastChunkSize = (int)(size - received) + 1; @@ -303,15 +361,77 @@ class NxdtUsbAbi1 { bos.write(readBuffer); if (isWindows10) fd.sync(); - } finally { + } + finally { logPrinter.updateProgress(1.0); } } - /* Handle Zero-length terminator - private boolean isAligned(long size){ - return ((size & (endpointMaxPacketSize - 1)) == 0); + + private void dumpNspFile(NxdtNspFile nsp, long size) throws Exception{ + FileOutputStream fos = new FileOutputStream(nsp.getFile(), true); + long nspSize = nsp.getFullSize(); + long nspRemainingSize = nsp.getNspRemainingSize(); + + try (BufferedOutputStream bos = new BufferedOutputStream(fos)) { + FileDescriptor fd = fos.getFD(); + byte[] readBuffer; + long received = 0; + int bufferSize; + + while (received+NXDT_FILE_CHUNK_SIZE < size) { + //readBuffer = readUsbFile(); + readBuffer = readUsbFileDebug(NXDT_FILE_CHUNK_SIZE); + bos.write(readBuffer); + if (isWindows10) + fd.sync(); + bufferSize = readBuffer.length; + received += bufferSize; + + nspRemainingSize -= bufferSize; + logPrinter.updateProgress((double)(nspSize - nspRemainingSize) / (double)nspSize); + } + int lastChunkSize = (int)(size - received) + 1; + readBuffer = readUsbFileDebug(lastChunkSize); + bos.write(readBuffer); + if (isWindows10) + fd.sync(); + nspRemainingSize -= (lastChunkSize - 1); + } + finally { + nsp.setNspRemainingSize(nspRemainingSize); + } + } + + private void handleSendNspHeader(byte[] message) throws Exception{ + final int headerSize = getLEint(message, 0x8); + NxdtNspFile nsp = nspFiles.remove( null ); // <---------------------- //TODO: PLEASE PUT FILENAME HERE + + if (nsp == null) { + writeUsb(USBSTATUS_MALFORMED_REQUEST); + logPrinter.print("Received NSP send header request outside of known NSPs!", EMsgType.FAIL); + return; + } + + if (nsp.getNspRemainingSize() > 0) { + writeUsb(USBSTATUS_MALFORMED_REQUEST); + logPrinter.print("Received NSP send header request without receiving all NSP file entry data!", EMsgType.FAIL); + return; + } + + if (headerSize != nsp.getHeaderSize()) { + writeUsb(USBSTATUS_MALFORMED_REQUEST); + logPrinter.print("Received NSP header size mismatch! "+headerSize+" != "+nsp.getHeaderSize(), EMsgType.FAIL); + return; + } + + try (RandomAccessFile raf = new RandomAccessFile(nsp.getFile(), "rw")) { + byte[] headerData = Arrays.copyOfRange(message, 0x10, headerSize + 0x10); + raf.seek(0); + raf.write(headerData); + } + + writeUsb(USBSTATUS_SUCCESS); } - */ /** Sending any byte array to USB device **/ private void writeUsb(byte[] message) throws Exception{ diff --git a/src/main/java/nsusbloader/cli/GoldLeafCli.java b/src/main/java/nsusbloader/cli/GoldLeafCli.java index ea687af..c9a146f 100644 --- a/src/main/java/nsusbloader/cli/GoldLeafCli.java +++ b/src/main/java/nsusbloader/cli/GoldLeafCli.java @@ -19,8 +19,7 @@ package nsusbloader.cli; import nsusbloader.AppPreferences; -import nsusbloader.COM.USB.UsbCommunications; -import nsusbloader.Controllers.SettingsController; +import nsusbloader.com.usb.UsbCommunications; import java.io.File; import java.util.ArrayList; diff --git a/src/main/java/nsusbloader/cli/TinfoilNetCli.java b/src/main/java/nsusbloader/cli/TinfoilNetCli.java index 88d1831..cb5f39d 100644 --- a/src/main/java/nsusbloader/cli/TinfoilNetCli.java +++ b/src/main/java/nsusbloader/cli/TinfoilNetCli.java @@ -18,7 +18,7 @@ */ package nsusbloader.cli; -import nsusbloader.COM.NET.NETCommunications; +import nsusbloader.com.net.NETCommunications; import java.io.File; import java.util.ArrayList; diff --git a/src/main/java/nsusbloader/cli/TinfoilUsbCli.java b/src/main/java/nsusbloader/cli/TinfoilUsbCli.java index 0d78f35..ad751f0 100644 --- a/src/main/java/nsusbloader/cli/TinfoilUsbCli.java +++ b/src/main/java/nsusbloader/cli/TinfoilUsbCli.java @@ -18,7 +18,7 @@ */ package nsusbloader.cli; -import nsusbloader.COM.USB.UsbCommunications; +import nsusbloader.com.usb.UsbCommunications; import java.io.File; import java.util.ArrayList; diff --git a/src/main/java/nsusbloader/COM/Helpers/NSSplitReader.java b/src/main/java/nsusbloader/com/helpers/NSSplitReader.java similarity index 99% rename from src/main/java/nsusbloader/COM/Helpers/NSSplitReader.java rename to src/main/java/nsusbloader/com/helpers/NSSplitReader.java index 058bacf..cbbd42c 100644 --- a/src/main/java/nsusbloader/COM/Helpers/NSSplitReader.java +++ b/src/main/java/nsusbloader/com/helpers/NSSplitReader.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.Helpers; +package nsusbloader.com.helpers; import java.io.*; diff --git a/src/main/java/nsusbloader/COM/NET/NETCommunications.java b/src/main/java/nsusbloader/com/net/NETCommunications.java similarity index 99% rename from src/main/java/nsusbloader/COM/NET/NETCommunications.java rename to src/main/java/nsusbloader/com/net/NETCommunications.java index 2f4b671..ba03ff6 100644 --- a/src/main/java/nsusbloader/COM/NET/NETCommunications.java +++ b/src/main/java/nsusbloader/com/net/NETCommunications.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.NET; +package nsusbloader.com.net; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; @@ -24,7 +24,7 @@ import nsusbloader.NSLDataTypes.EFileStatus; import nsusbloader.ModelControllers.Log; import nsusbloader.NSLDataTypes.EModule; import nsusbloader.NSLDataTypes.EMsgType; -import nsusbloader.COM.Helpers.NSSplitReader; +import nsusbloader.com.helpers.NSSplitReader; import java.io.*; import java.net.*; diff --git a/src/main/java/nsusbloader/COM/NET/NETPacket.java b/src/main/java/nsusbloader/com/net/NETPacket.java similarity index 99% rename from src/main/java/nsusbloader/COM/NET/NETPacket.java rename to src/main/java/nsusbloader/com/net/NETPacket.java index 6474bf1..3994ca8 100644 --- a/src/main/java/nsusbloader/COM/NET/NETPacket.java +++ b/src/main/java/nsusbloader/com/net/NETPacket.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.NET; +package nsusbloader.com.net; import nsusbloader.NSLMain; diff --git a/src/main/java/nsusbloader/COM/NET/NetworkSetupValidator.java b/src/main/java/nsusbloader/com/net/NetworkSetupValidator.java similarity index 99% rename from src/main/java/nsusbloader/COM/NET/NetworkSetupValidator.java rename to src/main/java/nsusbloader/com/net/NetworkSetupValidator.java index 009cd74..706bd97 100644 --- a/src/main/java/nsusbloader/COM/NET/NetworkSetupValidator.java +++ b/src/main/java/nsusbloader/com/net/NetworkSetupValidator.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.NET; +package nsusbloader.com.net; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EMsgType; diff --git a/src/main/java/nsusbloader/COM/NET/UniFile.java b/src/main/java/nsusbloader/com/net/UniFile.java similarity index 97% rename from src/main/java/nsusbloader/COM/NET/UniFile.java rename to src/main/java/nsusbloader/com/net/UniFile.java index 7aa5eb0..5f385fc 100644 --- a/src/main/java/nsusbloader/COM/NET/UniFile.java +++ b/src/main/java/nsusbloader/com/net/UniFile.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.NET; +package nsusbloader.com.net; import java.io.File; diff --git a/src/main/java/nsusbloader/COM/USB/GoldLeaf_05.java b/src/main/java/nsusbloader/com/usb/GoldLeaf_05.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/GoldLeaf_05.java rename to src/main/java/nsusbloader/com/usb/GoldLeaf_05.java index 04ae4d9..53ebc4d 100644 --- a/src/main/java/nsusbloader/COM/USB/GoldLeaf_05.java +++ b/src/main/java/nsusbloader/com/usb/GoldLeaf_05.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EFileStatus; import nsusbloader.NSLDataTypes.EMsgType; -import nsusbloader.COM.Helpers.NSSplitReader; -import nsusbloader.COM.USB.PFS.PFSProvider; +import nsusbloader.com.helpers.NSSplitReader; +import nsusbloader.com.usb.PFS.PFSProvider; import org.usb4java.DeviceHandle; import org.usb4java.LibUsb; diff --git a/src/main/java/nsusbloader/COM/USB/GoldLeaf_07.java b/src/main/java/nsusbloader/com/usb/GoldLeaf_07.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/GoldLeaf_07.java rename to src/main/java/nsusbloader/com/usb/GoldLeaf_07.java index 70b733d..00fa19b 100644 --- a/src/main/java/nsusbloader/COM/USB/GoldLeaf_07.java +++ b/src/main/java/nsusbloader/com/usb/GoldLeaf_07.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import javafx.application.Platform; import javafx.stage.FileChooser; -import nsusbloader.COM.Helpers.NSSplitReader; +import nsusbloader.com.helpers.NSSplitReader; import nsusbloader.MediatorControl; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; diff --git a/src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java b/src/main/java/nsusbloader/com/usb/GoldLeaf_08.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java rename to src/main/java/nsusbloader/com/usb/GoldLeaf_08.java index 723d5cb..8e6171f 100644 --- a/src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java +++ b/src/main/java/nsusbloader/com/usb/GoldLeaf_08.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import javafx.application.Platform; import javafx.stage.FileChooser; @@ -24,7 +24,7 @@ import nsusbloader.MediatorControl; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EMsgType; -import nsusbloader.COM.Helpers.NSSplitReader; +import nsusbloader.com.helpers.NSSplitReader; import org.usb4java.DeviceHandle; import org.usb4java.LibUsb; diff --git a/src/main/java/nsusbloader/COM/USB/PFS/NCAFile.java b/src/main/java/nsusbloader/com/usb/PFS/NCAFile.java similarity index 98% rename from src/main/java/nsusbloader/COM/USB/PFS/NCAFile.java rename to src/main/java/nsusbloader/com/usb/PFS/NCAFile.java index f068d5f..24c723b 100644 --- a/src/main/java/nsusbloader/COM/USB/PFS/NCAFile.java +++ b/src/main/java/nsusbloader/com/usb/PFS/NCAFile.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.PFS; +package nsusbloader.com.usb.PFS; import java.nio.ByteBuffer; import java.nio.ByteOrder; diff --git a/src/main/java/nsusbloader/COM/USB/PFS/PFSProvider.java b/src/main/java/nsusbloader/com/usb/PFS/PFSProvider.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/PFS/PFSProvider.java rename to src/main/java/nsusbloader/com/usb/PFS/PFSProvider.java index 463135c..e97352e 100644 --- a/src/main/java/nsusbloader/COM/USB/PFS/PFSProvider.java +++ b/src/main/java/nsusbloader/com/usb/PFS/PFSProvider.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.PFS; +package nsusbloader.com.usb.PFS; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EMsgType; diff --git a/src/main/java/nsusbloader/COM/USB/TinFoil.java b/src/main/java/nsusbloader/com/usb/TinFoil.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/TinFoil.java rename to src/main/java/nsusbloader/com/usb/TinFoil.java index 15d2bda..9ceba47 100644 --- a/src/main/java/nsusbloader/COM/USB/TinFoil.java +++ b/src/main/java/nsusbloader/com/usb/TinFoil.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EFileStatus; import nsusbloader.NSLDataTypes.EMsgType; -import nsusbloader.COM.Helpers.NSSplitReader; +import nsusbloader.com.helpers.NSSplitReader; import org.usb4java.DeviceHandle; import org.usb4java.LibUsb; diff --git a/src/main/java/nsusbloader/COM/USB/TransferModule.java b/src/main/java/nsusbloader/com/usb/TransferModule.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/TransferModule.java rename to src/main/java/nsusbloader/com/usb/TransferModule.java index 02dd059..4eebca6 100644 --- a/src/main/java/nsusbloader/COM/USB/TransferModule.java +++ b/src/main/java/nsusbloader/com/usb/TransferModule.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; diff --git a/src/main/java/nsusbloader/COM/USB/UsbCommunications.java b/src/main/java/nsusbloader/com/usb/UsbCommunications.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/UsbCommunications.java rename to src/main/java/nsusbloader/com/usb/UsbCommunications.java index 0fbd9da..cf31dfd 100644 --- a/src/main/java/nsusbloader/COM/USB/UsbCommunications.java +++ b/src/main/java/nsusbloader/com/usb/UsbCommunications.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter; diff --git a/src/main/java/nsusbloader/COM/USB/UsbConnect.java b/src/main/java/nsusbloader/com/usb/UsbConnect.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/UsbConnect.java rename to src/main/java/nsusbloader/com/usb/UsbConnect.java index 4602653..91fe5d4 100644 --- a/src/main/java/nsusbloader/COM/USB/UsbConnect.java +++ b/src/main/java/nsusbloader/com/usb/UsbConnect.java @@ -16,9 +16,8 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; -import nsusbloader.COM.USB.common.DeviceInformation; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.NSLDataTypes.EMsgType; import org.usb4java.*; diff --git a/src/main/java/nsusbloader/COM/USB/UsbErrorCodes.java b/src/main/java/nsusbloader/com/usb/UsbErrorCodes.java similarity index 98% rename from src/main/java/nsusbloader/COM/USB/UsbErrorCodes.java rename to src/main/java/nsusbloader/com/usb/UsbErrorCodes.java index 1be69d9..cbaaec5 100644 --- a/src/main/java/nsusbloader/COM/USB/UsbErrorCodes.java +++ b/src/main/java/nsusbloader/com/usb/UsbErrorCodes.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import org.usb4java.LibUsb; diff --git a/src/main/java/nsusbloader/COM/USB/common/DeviceInformation.java b/src/main/java/nsusbloader/com/usb/common/DeviceInformation.java similarity index 97% rename from src/main/java/nsusbloader/COM/USB/common/DeviceInformation.java rename to src/main/java/nsusbloader/com/usb/common/DeviceInformation.java index 831c17a..13e7099 100644 --- a/src/main/java/nsusbloader/COM/USB/common/DeviceInformation.java +++ b/src/main/java/nsusbloader/com/usb/common/DeviceInformation.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.common; +package nsusbloader.com.usb.common; -import nsusbloader.COM.USB.UsbErrorCodes; +import nsusbloader.com.usb.UsbErrorCodes; import org.usb4java.*; import java.util.ArrayList; diff --git a/src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptor.java b/src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptor.java similarity index 98% rename from src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptor.java rename to src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptor.java index df55248..a000aed 100644 --- a/src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptor.java +++ b/src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptor.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.common; +package nsusbloader.com.usb.common; import org.usb4java.EndpointDescriptor; diff --git a/src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptorUtils.java b/src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptorUtils.java similarity index 97% rename from src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptorUtils.java rename to src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptorUtils.java index ee897cd..1a6cbc8 100644 --- a/src/main/java/nsusbloader/COM/USB/common/NsUsbEndpointDescriptorUtils.java +++ b/src/main/java/nsusbloader/com/usb/common/NsUsbEndpointDescriptorUtils.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.common; +package nsusbloader.com.usb.common; import org.usb4java.EndpointDescriptor; diff --git a/src/main/java/nsusbloader/COM/USB/common/NsUsbInterface.java b/src/main/java/nsusbloader/com/usb/common/NsUsbInterface.java similarity index 97% rename from src/main/java/nsusbloader/COM/USB/common/NsUsbInterface.java rename to src/main/java/nsusbloader/com/usb/common/NsUsbInterface.java index d4be8ad..dddc092 100644 --- a/src/main/java/nsusbloader/COM/USB/common/NsUsbInterface.java +++ b/src/main/java/nsusbloader/com/usb/common/NsUsbInterface.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.common; +package nsusbloader.com.usb.common; import org.usb4java.Interface; import org.usb4java.InterfaceDescriptor; diff --git a/src/main/java/nsusbloader/COM/USB/common/NsUsbInterfaceDescriptor.java b/src/main/java/nsusbloader/com/usb/common/NsUsbInterfaceDescriptor.java similarity index 96% rename from src/main/java/nsusbloader/COM/USB/common/NsUsbInterfaceDescriptor.java rename to src/main/java/nsusbloader/com/usb/common/NsUsbInterfaceDescriptor.java index 760e157..57ed266 100644 --- a/src/main/java/nsusbloader/COM/USB/common/NsUsbInterfaceDescriptor.java +++ b/src/main/java/nsusbloader/com/usb/common/NsUsbInterfaceDescriptor.java @@ -16,13 +16,10 @@ You should have received a copy of the GNU General Public License along with NS-USBloader. If not, see . */ -package nsusbloader.COM.USB.common; +package nsusbloader.com.usb.common; -import org.usb4java.EndpointDescriptor; import org.usb4java.InterfaceDescriptor; -import java.nio.ByteBuffer; - public class NsUsbInterfaceDescriptor { private final byte bLength; private final byte bDescriptorType; diff --git a/src/test/java/nsusbloader/COM/USB/TransferModuleTest.java b/src/test/java/nsusbloader/com/usb/TransferModuleTest.java similarity index 99% rename from src/test/java/nsusbloader/COM/USB/TransferModuleTest.java rename to src/test/java/nsusbloader/com/usb/TransferModuleTest.java index 12acb65..2803d2f 100644 --- a/src/test/java/nsusbloader/COM/USB/TransferModuleTest.java +++ b/src/test/java/nsusbloader/com/usb/TransferModuleTest.java @@ -1,4 +1,4 @@ -package nsusbloader.COM.USB; +package nsusbloader.com.usb; import nsusbloader.ModelControllers.CancellableRunnable; import nsusbloader.ModelControllers.ILogPrinter;