diff --git a/pom.xml b/pom.xml
index c9b2ee0..87bf403 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
JavaUSBTool
javausbtool
- 0.3-SNAPSHOT
+ 0.4-SNAPSHOT
https://github.com/developersu/javausbtool/
diff --git a/src/main/java/javausbtool/AppPreferences.java b/src/main/java/javausbtool/AppPreferences.java
index e1b2942..fd56495 100644
--- a/src/main/java/javausbtool/AppPreferences.java
+++ b/src/main/java/javausbtool/AppPreferences.java
@@ -63,4 +63,7 @@ public class AppPreferences {
public int getReadBufferSize(){ return preferences.getInt("read_buffer_size", 512); }
public void setReadBufferSize(int value){ preferences.putInt("read_buffer_size", value); }
+
+ public boolean getBufAsHex(){ return preferences.getBoolean("buf_as_hex", false); }
+ public void setBufAsHex(boolean value){preferences.putBoolean("buf_as_hex", value);}
}
\ No newline at end of file
diff --git a/src/main/java/javausbtool/JFXMain.java b/src/main/java/javausbtool/JFXMain.java
index 34f48ed..7aa81a4 100644
--- a/src/main/java/javausbtool/JFXMain.java
+++ b/src/main/java/javausbtool/JFXMain.java
@@ -28,7 +28,7 @@ import javausbtool.controllers.LandingPageController;
public class JFXMain extends Application {
- public static final String appVersion = "v0.3";
+ public static final String appVersion = "v0.4";
@Override
public void start(Stage primaryStage) throws Exception{
diff --git a/src/main/java/javausbtool/controllers/LandingPageController.java b/src/main/java/javausbtool/controllers/LandingPageController.java
index 13b351f..4d9c506 100644
--- a/src/main/java/javausbtool/controllers/LandingPageController.java
+++ b/src/main/java/javausbtool/controllers/LandingPageController.java
@@ -46,7 +46,7 @@ public class LandingPageController implements Initializable {
readBufferSizeTf;
@FXML
- private Label saveToLbl, sendFileLbl;
+ private Label saveToLbl, sendFileLbl, decHexReprLbl;
@FXML
private CheckBox handleKernelDrvDetachCb,
@@ -60,6 +60,9 @@ public class LandingPageController implements Initializable {
private RadioButton readOnStartRb,
writeOnStartRb;
+ @FXML
+ private MenuButton dexHexMenuItem;
+
private String previouslyOpenedPath;
private File writeOnStartFile;
private Task usbCommunications;
@@ -77,14 +80,89 @@ public class LandingPageController implements Initializable {
handleKernelDrvDetachCb.setSelected(pref.getHandleKernelDrvAutoDetach());
mandatorySoftResetCb.setSelected(pref.getSoftResetOnHandle());
- readBufferSizeTf.setText(Integer.toString(pref.getReadBufferSize()));
+ if (pref.getBufAsHex())
+ readBufferSizeTf.setText(String.format("%x", pref.getReadBufferSize()));
+ else
+ readBufferSizeTf.setText(String.format("%d", pref.getReadBufferSize()));
vidTf.setTextFormatter(getNumericTextFormatter());
pidTf.setTextFormatter(getNumericTextFormatter());
devConfigurationTf.setTextFormatter(getNumericTextFormatter());
devConfigurationTf.setTextFormatter(getNumericTextFormatter());
- readBufferSizeTf.setTextFormatter(getNumericTextFormatter());
+ MenuItem decItem = new MenuItem("Dec");
+ decItem.setOnAction(event -> {
+ dexHexMenuItem.setText("Dec");
+
+ String oldValue = decHexReprLbl.getText();
+
+ readBufferSizeTf.setTextFormatter(new TextFormatter<>(change -> {
+ String text = change.getControlNewText();
+ if (text.matches("^[0-9]{0,}$")) {
+ if (! text.isEmpty()) {
+ try {
+ decHexReprLbl.setText(String.format("0x%x", Integer.parseInt(text)));
+ }
+ catch (Exception e){
+ return null;
+ }
+ }
+ return change;
+ }
+ return null;
+ }));
+
+ if (! oldValue.isEmpty()){
+ try {
+ int val = Integer.parseInt(oldValue, 10);
+ readBufferSizeTf.setText(Integer.toString(val));
+ decHexReprLbl.setText(String.format("0x%x", val));
+ }
+ catch (Exception e){
+ readBufferSizeTf.setText("0");
+ decHexReprLbl.setText("0x0");
+ }
+ }
+ });
+ MenuItem hexItem = new MenuItem("Hex");
+
+ hexItem.setOnAction(event -> {
+ dexHexMenuItem.setText("Hex");
+
+ String oldValue = decHexReprLbl.getText();
+
+ readBufferSizeTf.setTextFormatter(new TextFormatter<>(change -> {
+ String text = change.getControlNewText();
+ if (text.matches("^[0-9a-fA-F]{0,}$")) {
+ if (! text.isEmpty() ) {
+ try {
+ decHexReprLbl.setText(String.format("%d", Integer.parseInt(text, 16)));
+ }
+ catch (Exception e){
+ return null;
+ }
+ }
+ return change;
+ }
+ return null;
+ }));
+
+ if (! oldValue.isEmpty()){
+ try {
+ int val = Integer.decode(oldValue);
+ readBufferSizeTf.setText(String.format("%x", val));
+ decHexReprLbl.setText(Integer.toString(val));
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ readBufferSizeTf.setText("0");
+ decHexReprLbl.setText("0");
+ }
+ }
+ });
+
+ dexHexMenuItem.getItems().add(decItem);
+ dexHexMenuItem.getItems().add(hexItem);
saveToLbl.setText(pref.getSaveTo());
changeSaveToBtn.setOnAction(event -> setSaveToFolder());
@@ -99,6 +177,11 @@ public class LandingPageController implements Initializable {
startBtn.setOnAction(event -> startProcess());
stopBtn.setOnAction(event -> stopProcess());
+
+ if (pref.getBufAsHex())
+ hexItem.fire();
+ else
+ decItem.fire();
}
private TextFormatter getNumericTextFormatter(){
@@ -109,6 +192,12 @@ public class LandingPageController implements Initializable {
});
}
+ private int getBufferSize() throws NumberFormatException {
+ if (dexHexMenuItem.getText().equals("Dec"))
+ return Integer.parseInt(readBufferSizeTf.getText());
+ return Integer.parseInt(readBufferSizeTf.getText(), 16);
+ }
+
private void setSaveToFolder() {
DirectoryChooser dirChooser = new DirectoryChooser();
dirChooser.setTitle("Save files to...");
@@ -140,6 +229,8 @@ public class LandingPageController implements Initializable {
}
private void startProcess(){
+ System.out.println(getBufferSize());
+
logArea.clear();
if (writeOnStartRb.isSelected() && writeOnStartFile == null){
logArea.appendText("'Write on start' option selected but no file defined\n");
@@ -158,7 +249,7 @@ public class LandingPageController implements Initializable {
Integer.parseInt(devConfigurationTf.getText()),
handleKernelDrvDetachCb.isSelected(),
mandatorySoftResetCb.isSelected(),
- Integer.parseInt(readBufferSizeTf.getText()),
+ getBufferSize(),
saveToLbl.getText(),
readOnStartRb.isSelected(),
writeOnStartFile
@@ -211,9 +302,11 @@ public class LandingPageController implements Initializable {
pref.setSaveTo(saveToLbl.getText());
try {
- if ((intValue = Integer.parseInt(readBufferSizeTf.getText())) > 0)
+ if ( (intValue = getBufferSize()) > 0)
pref.setReadBufferSize(intValue);
}
catch (NumberFormatException e){ e.printStackTrace(); }
+
+ pref.setBufAsHex(dexHexMenuItem.getText().equals("Hex"));
}
}
diff --git a/src/main/java/javausbtool/usb/UsbLoop.java b/src/main/java/javausbtool/usb/UsbLoop.java
index 2a1d2c6..4f7d103 100644
--- a/src/main/java/javausbtool/usb/UsbLoop.java
+++ b/src/main/java/javausbtool/usb/UsbLoop.java
@@ -29,9 +29,6 @@ import java.nio.IntBuffer;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
-/**
- * Tinfoil processing
- * */
class UsbLoop {
private LogPrinter logPrinter;
@@ -55,7 +52,7 @@ class UsbLoop {
this.readBufferCapacity = readBufferCapacity;
this.readCounter = 0;
- logPrinter.print("============= UsbProtocol =============");
+ logPrinter.print("============= USB =============");
this.saveRepliesFolder = new File(saveRepliesTo+File.separator+ LocalTime.now().format(DateTimeFormatter.ofPattern("HH-mm-ss")));
saveRepliesFolder.mkdirs();
diff --git a/src/main/resources/landingPage.fxml b/src/main/resources/landingPage.fxml
index 123ab4c..331d712 100644
--- a/src/main/resources/landingPage.fxml
+++ b/src/main/resources/landingPage.fxml
@@ -4,6 +4,7 @@
+
@@ -70,13 +71,15 @@
-
+
-
+
-
+
+
+