diff --git a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/App.java b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/App.java index eb1bd6db2edb6f2f18277cd6b74db580fae0af76..4c17a16f51fdbfe9d99fe28390232780459bc907 100644 --- a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/App.java +++ b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/App.java @@ -17,12 +17,13 @@ public class App extends Application { private static Scene scene; private static FXMLLoader fxmlLoader; private static Logger logger = Logger.getLogger("AmsatLogger"); + private static final String fxmlFile = "Amicalsat"; @Override public void start(Stage stage) throws IOException { System.setProperty("glass.accessible.force", "false"); - scene = new Scene(loadFXML("Amicalsat"), 800, 600); + scene = new Scene(loadFXML(fxmlFile), 800, 600); stage.setScene(scene); Controler ctrl = fxmlLoader.getController(); diff --git a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/SendSIDS.java b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/SendSIDS.java index 086a8b94aef62368584b8f0dffffecbcc763e6eb..f4c1eef4cbda17632e63ad07d44310f846e77a3a 100644 --- a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/SendSIDS.java +++ b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/SendSIDS.java @@ -6,9 +6,7 @@ import org.josast.SIDS.HttpPostSIDS; import org.josast.SIDS.SIDSData; import org.josast.SIDS.Station; -/** - * @author christophe - */ +/** @author christophe */ public class SendSIDS { private static Logger appLogger = Logger.getLogger("AmsatLogger"); @@ -28,7 +26,7 @@ public class SendSIDS { String hexaString = new BigInteger(1, data.getData()).toString(16); sids.setTelemetryData(data.getTime(), hexaString); appLogger.info(sids.toStringBasic()); - int result = client.SendSIDSBasic(sids); + int result = client.sendSIDSBasic(sids); return result; } } diff --git a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/util/LogFile.java b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/util/LogFile.java index d76bed0ec19e3d032ee16141aa2a3d5f63d380c3..3fa1a3aa2f45d2b4eacf8e0fc3fdf0c62b448212 100644 --- a/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/util/LogFile.java +++ b/ApplicationAmicalsat/src/main/java/org/josast/ApplicationAmicalsat/util/LogFile.java @@ -9,9 +9,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Logger; -/** - * @author christophe - */ +/** @author christophe */ public class LogFile { private static Logger appLogger = Logger.getLogger("AmsatLogger"); diff --git a/ApplicationAmicalsatCli/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java b/ApplicationAmicalsatCli/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java index 3247e7868ad46313598e392764fb7249659b9aae..2bfa3f3880616eebdf29f941eec981e08c02f17e 100644 --- a/ApplicationAmicalsatCli/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java +++ b/ApplicationAmicalsatCli/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java @@ -6,9 +6,7 @@ import org.josast.app.amicalsat.cli.option.OptionsAnalysis; public class AmicalsatCli { - /** - * @param args - */ + /** @param args */ public AmicalsatCli(String[] args) { OptionsAnalysis opt = new OptionsAnalysis(args); Vector vec = opt.getCommandes(); @@ -17,9 +15,7 @@ public class AmicalsatCli { } } - /** - * @param args - */ + /** @param args */ public static void main(String[] args) { @SuppressWarnings("unused") diff --git a/ApplicationCubesatSim/pom.xml b/ApplicationCubesatSim/pom.xml index 1c0fe64da1e55d012013c705b9d8ab74b89ba0ce..c32e554db86dce45e69ed08f8303305325644737 100644 --- a/ApplicationCubesatSim/pom.xml +++ b/ApplicationCubesatSim/pom.xml @@ -40,13 +40,13 @@ commons-cli commons-cli - 1.4 + 1.5.0 junit junit - 4.11 + 4.13.2 test diff --git a/ApplicationCubesatSim/src/main/java/org/josast/application/cubesatsim/SoundmodemToInfluxDbCli.java b/ApplicationCubesatSim/src/main/java/org/josast/application/cubesatsim/SoundmodemToInfluxDbCli.java index e772290c6317b5e25d77d63ca976a6836e60d516..e34c10ea24d864c4654aef01e339f2aca475eaa9 100644 --- a/ApplicationCubesatSim/src/main/java/org/josast/application/cubesatsim/SoundmodemToInfluxDbCli.java +++ b/ApplicationCubesatSim/src/main/java/org/josast/application/cubesatsim/SoundmodemToInfluxDbCli.java @@ -15,9 +15,7 @@ import org.josast.CubesatSim.influxDB.InfluxDatabaseConfig; import org.josast.CubesatSim.kaitai.generated.Cubesatsim.CubesatsimAo7; import org.josast.ModuleSoundModem.SoundModemClient; -/** - * @author christophe - */ +/** @author christophe */ public class SoundmodemToInfluxDbCli { /** Application version. */ @@ -70,9 +68,7 @@ public class SoundmodemToInfluxDbCli { return options; } - /** - * @param conffile - */ + /** @param conffile */ public void execute(final String conffile) { // connection to Sound Modem diff --git a/ApplicationKissTool/KissToolMessage.txt b/ApplicationKissTool/KissToolMessage.txt index c18f2677b621d75f515a8aad0cf7da0d1a48b92f..623dc3f5dfe16a6946dc89045dddc3f6251bae8b 100644 --- a/ApplicationKissTool/KissToolMessage.txt +++ b/ApplicationKissTool/KissToolMessage.txt @@ -1,4 +1,4 @@ -Kisstool=1.5 -Message= KissTool for UVSQsat - UVSQsat launch 23/01/21 14H24 UTC -NoradID=99749 +Kisstool=1.11 +Message= KissTool updated for UVSQsat & Picsat +NoradID=47438 Comment=0 \ No newline at end of file diff --git a/ApplicationKissTool/SatelliteNoradList.json b/ApplicationKissTool/SatelliteNoradList.json new file mode 100644 index 0000000000000000000000000000000000000000..f3555c040bb4e4efd99843b3d217b65cf4a7b824 --- /dev/null +++ b/ApplicationKissTool/SatelliteNoradList.json @@ -0,0 +1,17 @@ +[ + { + "noradId": 47438, + "name": "UVSQsat", + "indicatif": "LATMOS" + }, + { + "noradId": 99999, + "name": "Defaut", + "indicatif": "" + }, + { + "noradId": 43132, + "name": "Picsat", + "indicatif": "PICSAT" + } + ] \ No newline at end of file diff --git a/ApplicationKissTool/pom.xml b/ApplicationKissTool/pom.xml index 62c1bc2b8aa2ed5fb16b0ac5d448a9da4fcdd83e..279ea2923758986d2e390431dcf7c202ec84cd8e 100644 --- a/ApplicationKissTool/pom.xml +++ b/ApplicationKissTool/pom.xml @@ -26,7 +26,11 @@ - + + com.google.code.gson + gson + 2.10 + org.openjfx javafx-controls @@ -66,7 +70,7 @@ org.json json - 20210307 + 20220924 @@ -78,7 +82,7 @@ io.kaitai kaitai-struct-runtime - 0.9 + 0.10 name.valery1707.kaitai @@ -114,7 +118,7 @@ org.openjfx javafx-maven-plugin - 0.0.6 + 0.0.8 org.josast.ApplicationKissTool.App diff --git a/ApplicationKissTool/src/main/java/module-info.java b/ApplicationKissTool/src/main/java/module-info.java index 228d443c978d3e500dadef587c58c36d88703e8e..3f0eba0c03e0c99790bba9fe7c4484402d8c4999 100644 --- a/ApplicationKissTool/src/main/java/module-info.java +++ b/ApplicationKissTool/src/main/java/module-info.java @@ -12,6 +12,7 @@ module org.josast.ApplicationKissTool { requires kaitai.struct.runtime; requires org.json; requires javafx.base; + requires com.google.gson; opens org.josast.ApplicationKissTool to javafx.fxml; diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/App.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/App.java index e0ff4ae4832218527ff8c3677865b80c5522f5e9..24dbec525efd628eb3fb585f48451302d140df6f 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/App.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/App.java @@ -17,6 +17,7 @@ public class App extends Application { private static Scene scene; private static FXMLLoader fxmlLoader; private static Logger logger = Logger.getLogger("AmsatLogger"); + private String FxmlFile = "KissTool"; // TaskManageReceivedData taskMngtData = null; @@ -24,13 +25,14 @@ public class App extends Application { public void start(Stage stage) throws IOException { System.setProperty("glass.accessible.force", "false"); - scene = new Scene(loadFXML("KissTool"), 800, 600); + + scene = new Scene(loadFXML(FxmlFile), 800, 600); stage.setScene(scene); Controler ctrl = fxmlLoader.getController(); ctrl.setPrimaryStage(stage); scene.getStylesheets().add(this.getClass().getResource("boot.css").toExternalForm()); - stage.setTitle("KISS tool -UVSQSAT Dedicated " + ctrl.getVersion()); + stage.setTitle("KISS tool " + ctrl.getVersion()); stage.setOnCloseRequest(e -> System.exit(0)); ctrl.initMMI(); diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Ax25Display.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Ax25Display.java index 7c8581719815e21f1544637c73f87b03dcb12e3b..f01e3202dc9c9a46c15a25de440e77059a9bb76d 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Ax25Display.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Ax25Display.java @@ -1,9 +1,12 @@ package org.josast.ApplicationKissTool; +import java.util.logging.Logger; + import org.josast.AX25.AX25DecodedData; public class Ax25Display { + private static Logger logger = Logger.getLogger("AmsatLogger"); ReceivedData decodedData = null; AX25DecodedData ax25 = null; @@ -18,16 +21,28 @@ public class Ax25Display { return sb.toString(); } - public void setdata(ReceivedData decodedData2) { + public int setdata( ReceivedData decodedData2) { + int error = 0; + this.decodedData = decodedData2; - ax25 = new AX25DecodedData(decodedData.getData()); + try + { + ax25 = new AX25DecodedData(decodedData.getData()); + } + catch (Exception e ) + { + logger.severe("Error decoding AX25 : "+e.getMessage()); + error = -1; + } + + return error; } public String getAx25Data() { return ax25.toString(); } - public String GetCallsignFrom() { + public String getCallsignFrom() { return ax25.source; } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Configuration.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Configuration.java index 71c5501d2b3a3966656151833eefe3c4885d4af2..d9a07f5d1230c18035e25c66d0b2fac31b662610 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Configuration.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Configuration.java @@ -36,7 +36,7 @@ public class Configuration { private String OutputFileDirectory = "."; private int Norad = 99999; - private String Norads; + private String norads = null; private final CONFIG conf = CONFIG.getInstance(); private boolean SIDS_Picsat = false; private String SIDSPicsatSource = "Anonymous"; @@ -55,7 +55,7 @@ public class Configuration { callsign = conf.getProperty("Callsign"); latitude = conf.getProperty("Latitude"); longitude = conf.getProperty("Longitude"); - Norads = conf.getProperty("Norad"); + norads = conf.getProperty("Norad"); SIDSAMSATSource = conf.getProperty("SIDSAMSATSource"); SIDSAMSATUrl = conf.getProperty("SIDSAMSATUrl"); SIDSSatnogsSource = conf.getProperty("SIDSSatnogsSource"); @@ -70,7 +70,9 @@ public class Configuration { soundModemPort = conf.getProperty("soundModemPort"); OutputFileDirectory = conf.getProperty("OutputFileDirectory"); SilentMode = conf.getProperty("SilentMode"); - Norad = Integer.getInteger(Norads); + if (norads != null) { + Norad = Integer.parseInt(norads); + } if (SIDSSatnogs.contentEquals("1")) { SISD_SatNogs = true; } else { @@ -89,8 +91,9 @@ public class Configuration { if (SilentMode.contentEquals("1")) { Silent_Mode = true; - } else {Silent_Mode = false; -} + } else { + Silent_Mode = false; + } } else // si le fichier n'existe pas, il est créé par défaut { @@ -132,7 +135,7 @@ public class Configuration { public void save() { - conf.setProperty("Norad", ""+Norad); + conf.setProperty("Norad", "" + Norad); conf.setProperty("Callsign", callsign); conf.setProperty("Latitude", latitude); conf.setProperty("Longitude", longitude); diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Controler.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Controler.java index eab64474488bc3d2f5a49dc3a76133cb850d4040..78e1a21bb86d0b03daf718428443216518a904d4 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Controler.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/Controler.java @@ -53,7 +53,8 @@ public class Controler { protected static final int STATE_STOP = 2; private static final int STATE_SAVE = 3; private int delayRefresh = 15; // toute les 10 mn - private Date lastFrameTime; + // @todo : vérifier la mise à jour de la variable + private Date lastFrameTime = new Date(); private static Logger appLogger = Logger.getLogger("AmsatLogger"); ConfigHttp c = new ConfigHttp("http://site.amsat-f.org/download/117487/"); @@ -62,7 +63,7 @@ public class Controler { private ManageDataFile mdf = new ManageDataFile(); - private String version = "1.8"; + private String version = "1.11"; @FXML private Button ButtonStart; @FXML private Button ButtonStop; @@ -117,10 +118,17 @@ public class Controler { @FXML private Circle CircleDatabaseAmsatF; @FXML private ComboBox ComboBoxSatellite; + + @FXML private Label LabelAmsatSent; + @FXML private Label LabelPicsatSent; + @FXML private Label LabelSatnogsSent; + + @FXML private Label LastDecoded; + ScheduledExecutorService ses = Executors.newScheduledThreadPool(1); private ScheduledFuture scheduledFuture = null; - BlockingQueue receivedFrame = new LinkedBlockingDeque(); + private volatile BlockingQueue receivedFrame = new LinkedBlockingDeque(); Stage primaryStage = null; private String imgAmsat = "logoAmsat.png"; @@ -142,6 +150,7 @@ public class Controler { private long nbAmsatDatabase = 0; private long nbSatnogsDatabase = 0; private long picsatDatabase = 0; + private SatelliteNoradFile satnorad; public void setReceivedFrame(BlockingQueue receivedFrame) { this.receivedFrame = receivedFrame; @@ -214,10 +223,13 @@ public class Controler { Station StationPicsat = new Station(conf.getSIDSPicsatSource(), station.getLongitude(), station.getLatitude()); + SendSIDSMVPAmsat = new SendSIDS(StationEntry, conf.getNorad(), conf.getSIDSAMSATUrl()); + SendSIDSPicsat = new SendSIDS(StationPicsat, conf.getNorad(), conf.getSIDSPicsatsURL()); + SendSIDSSatnogs = new SendSIDS(StationSatnogs, conf.getNorad(), conf.getSIDSSatnogsURL()); + if (CheckbBoxAmicalSat.isSelected() == true) { conf.setSIDSAMSAT("1"); - SendSIDSMVPAmsat = new SendSIDS(StationEntry, conf.getNorad(), conf.getSIDSAMSATUrl()); } else { conf.setSIDSAMSAT("0"); } @@ -225,7 +237,6 @@ public class Controler { if (CheckBoxSatPicsat.isSelected() == true) { conf.setSIDSPicsat("1"); - SendSIDSPicsat = new SendSIDS(StationPicsat, conf.getNorad(), conf.getSIDSPicsatsURL()); } else { conf.setSIDSPicsat("0"); } @@ -233,7 +244,6 @@ public class Controler { if (CheckBoxSatNogs.isSelected() == true) { conf.setSIDSSatnogs("1"); - SendSIDSSatnogs = new SendSIDS(StationSatnogs, conf.getNorad(), conf.getSIDSSatnogsURL()); } else { conf.setSIDSSatnogs("0"); } @@ -328,6 +338,8 @@ public class Controler { SatelliteNorad sat = ComboBoxSatellite.getSelectionModel().getSelectedItem(); displayLog(sat.getName() + " " + sat.getNoradId()); selectedNoradId = sat.getNoradId(); + conf.setNorad(selectedNoradId); + conf.save(); } @FXML @@ -336,32 +348,51 @@ public class Controler { public void initMMI() { manageStatusinformation("Initialised", "KISS TOOL - LOG \r\n Initialise application"); - SatelliteNorad uvsqsat = new SatelliteNorad("UVSQsat", 47438); - SatelliteNorad Defaut = new SatelliteNorad("Defaut", conf.getNorad()); - SatelliteNorad picsat = new SatelliteNorad("Picsat", 43132); + satnorad = new SatelliteNoradFile(); + satnorad.readFile("SatelliteNoradList.json"); selectedNoradId = conf.getNorad(); ObservableList list = - FXCollections.observableArrayList(Defaut, uvsqsat, picsat); + FXCollections.observableArrayList(satnorad.getSatelliteNoradList()); ComboBoxSatellite.setItems(list); ComboBoxSatellite.getSelectionModel().select(0); + LabelAmsatSent.setText("0"); + LabelPicsatSent.setText("0"); + LabelSatnogsSent.setText("0"); + - Runnable task1 = - () -> { - Date date = new Date(); - if (date.getTime() - lastFrameTime.getTime() > 900000) { - System.gc(); - appLogger.info("System.gc();"); - } - - // appLogger.info("Distant Information update"); - // updateDistantconfiguration(); - }; taskMngtData = new TaskManageReceivedData(receivedFrame, this); Thread backgroundThread = new Thread(taskMngtData); backgroundThread.setDaemon(true); backgroundThread.start(); + + + + + + // init Delay = , repeat the task every X Minute + /* + * active le garbage collector + * @todo : verifier si vraiment utile + */ + + Runnable task1 = + () -> { + Date date = new Date(); +// if (date.getTime() - lastFrameTime.getTime() > 900000) { +// System.gc(); + // appLogger.info("System.gc();"); + // } + // check if task are actives + if(receivedFrame.size()!=0) + { + appLogger.severe("queue size greater than 0 : "+receivedFrame.size()); + appLogger.severe("State task"+ backgroundThread.getState().name()); + } + + + }; scheduledFuture = ses.scheduleAtFixedRate(task1, delayRefresh, delayRefresh, TimeUnit.MINUTES); appLogger.warning("Initialise "); @@ -407,8 +438,8 @@ public class Controler { try { - bufferedImage1 = ImageIO.read(getClass().getResource((imgAmsat))); - bufferedImage2 = ImageIO.read(getClass().getResource((imgAmicalsat))); + bufferedImage1 = ImageIO.read(getClass().getResource(imgAmsat)); + bufferedImage2 = ImageIO.read(getClass().getResource(imgAmicalsat)); } catch (IOException e) { appLogger.severe("Error loading Image resources"); @@ -453,14 +484,12 @@ public class Controler { new Station(conf.getSIDSSatnogsSource(), station.getLongitude(), station.getLatitude()); Station StationEntry = new Station(conf.getSIDSAMSATSource(), station.getLongitude(), station.getLatitude()); + Station StationPicsat = + new Station(conf.getSIDSPicsatSource(), station.getLongitude(), station.getLatitude()); - if (conf.isSISD_SatNogs() == true) { - SendSIDSSatnogs = new SendSIDS(StationSatnogs, conf.getNorad(), conf.getSIDSSatnogsURL()); - } - - if (conf.isSIDS_AMSAT() == true) { - SendSIDSMVPAmsat = new SendSIDS(StationEntry, conf.getNorad(), conf.getSIDSAMSATUrl()); - } + SendSIDSSatnogs = new SendSIDS(StationSatnogs, conf.getNorad(), conf.getSIDSSatnogsURL()); + SendSIDSMVPAmsat = new SendSIDS(StationEntry, conf.getNorad(), conf.getSIDSAMSATUrl()); + SendSIDSPicsat = new SendSIDS(StationPicsat, conf.getNorad(), conf.getSIDSPicsatsURL()); String erreurmsg = message; @@ -483,6 +512,10 @@ public class Controler { + nbframeTraited + " Sent : Amsat - " + this.nbAmsatDatabase); + + LabelAmsatSent.setText("" + nbAmsatDatabase); + LabelPicsatSent.setText("" + picsatDatabase); + LabelSatnogsSent.setText("" + nbSatnogsDatabase); } public void IncrementNbFrame() { @@ -536,10 +569,11 @@ public class Controler { displayLog(logMessage); } - public void SendSids(ReceivedData receivedData) { + public void SendSids(ReceivedData receivedData, int noradframe) { + LastDecoded.setText("" + noradframe); if (conf.isSIDS_AMSAT() == true) { - int results = SendSIDSMVPAmsat.Send(receivedData, selectedNoradId); + int results = SendSIDSMVPAmsat.send(receivedData, noradframe); if (SendSIDSMVPAmsat.isCorrectSend(results)) { CircleDatabaseAmsatF.setFill(Color.GREEN); nbAmsatDatabase++; @@ -550,7 +584,7 @@ public class Controler { } if (conf.isSISD_SatNogs() == true) { - int results = SendSIDSSatnogs.Send(receivedData, selectedNoradId); + int results = SendSIDSSatnogs.send(receivedData, noradframe); if (SendSIDSSatnogs.isCorrectSend(results)) { CircleDatabaseSatnogs.setFill(Color.GREEN); nbSatnogsDatabase++; @@ -560,12 +594,13 @@ public class Controler { } } if (conf.isSIDS_Picsat() == true) { - int results = SendSIDSPicsat.Send(receivedData, selectedNoradId); + int results = SendSIDSPicsat.send(receivedData, noradframe); if (SendSIDSPicsat.isCorrectSend(results)) { CircleDatabasePicsat.setFill(Color.GREEN); picsatDatabase++; } else { displayLog("Send SIDS Picsat Database : " + results); + displayLog(SendSIDSPicsat.getMessageAnswer()); CircleDatabasePicsat.setFill(Color.RED); } } @@ -578,4 +613,9 @@ public class Controler { public void SetDecodedData(String data) { DecodedData.appendText(data); } + + public int getNorad(String rcvCallsign) { + int norad = satnorad.getNorad(rcvCallsign); + return norad; + } } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/LogFile.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/LogFile.java index 7075d1882d8179d6485c195e124dcc36a645f0c4..06b85af96616e92062fcb303ee3fbc65fcb3dce0 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/LogFile.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/LogFile.java @@ -5,6 +5,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; +import java.nio.charset.Charset; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Logger; @@ -34,7 +35,7 @@ public class LogFile { } } try { - pw = new PrintWriter(new FileWriter(path + "/" + formater.format(aujourdhui) + "-" + ".log")); + pw = new PrintWriter(new FileWriter(path + "/" + formater.format(aujourdhui) + "-" + ".log",Charset.forName("utf-8"))); } catch (IOException e) { appLogger.severe("erreur creating log file"); appLogger.severe(e.toString()); diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ManageDataFile.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ManageDataFile.java index 9d216e7c167c7bdb71b4b6d2c41309179a70c356..8a446dbcf7620571d388922ec96e791a428e2cfc 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ManageDataFile.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ManageDataFile.java @@ -4,6 +4,8 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -55,11 +57,11 @@ public class ManageDataFile { pw = new PrintWriter( new FileWriter( - RepositoryPath + "/" + formater.format(aujourdhui) + "-tlm-Hexa.txt")); + RepositoryPath + "/" + formater.format(aujourdhui) + "-tlm-Hexa.txt",StandardCharsets.UTF_8)); pw.write("Start file"); pw.write(LINE_SEPARATOR); } else { - pw = new PrintWriter(RepositoryPath + "/" + formater.format(aujourdhui) + "-tlm-Hexa.txt"); + pw = new PrintWriter(RepositoryPath + "/" + formater.format(aujourdhui) + "-tlm-Hexa.txt",StandardCharsets.UTF_8); } pw.append(stringData); pw.append(LINE_SEPARATOR); diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ModelReceivedData.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ModelReceivedData.java index 49d306a00b00aaf87988b650c7ff059f3ec1f521..1b613524b385fb9f99272af3fe78c488eff69e27 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ModelReceivedData.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ModelReceivedData.java @@ -38,7 +38,7 @@ public class ModelReceivedData { listenerList.firePropertyChange("ReceivedFrame", receivedFrame, receivedFrame); } - public void IncrementReceivedFrame() { + public void incrementReceivedFrame() { this.receivedFrame++; listenerList.firePropertyChange("ReceivedFrame", receivedFrame, receivedFrame); } @@ -52,7 +52,7 @@ public class ModelReceivedData { listenerList.firePropertyChange("TraitedFrame", traitedFrame, traitedFrame); } - public void IncTraitedFrame() { + public void incTraitedFrame() { this.traitedFrame++; listenerList.firePropertyChange("TraitedFrame", traitedFrame, traitedFrame); } @@ -66,7 +66,7 @@ public class ModelReceivedData { listenerList.firePropertyChange("SendSidsFrameAmsat", sendSidsFrameAmsat, sendSidsFrameAmsat); } - public void IncSendSidsFrameAmsat() { + public void incSendSidsFrameAmsat() { this.sendSidsFrameAmsat++; listenerList.firePropertyChange("SendSidsFrameAmsat", sendSidsFrameAmsat, sendSidsFrameAmsat); } @@ -81,7 +81,7 @@ public class ModelReceivedData { "SendSidsFrameSatnogs", sendSidsFrameSatnogs, sendSidsFrameSatnogs); } - public void IncSendSidsFrameSatnogs(long sendSidsFrameSatnogs) { + public void incSendSidsFrameSatnogs(long sendSidsFrameSatnogs) { this.sendSidsFrameSatnogs = sendSidsFrameSatnogs; listenerList.firePropertyChange( "SendSidsFrameSatnogs", sendSidsFrameSatnogs, sendSidsFrameSatnogs); diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ReceivedData.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ReceivedData.java index 258679d496ad28c935fc77b561359dff837b390a..85a1bdb7c333bd03a50080b74944c235d8234c97 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ReceivedData.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/ReceivedData.java @@ -1,5 +1,6 @@ package org.josast.ApplicationKissTool; +import java.nio.charset.StandardCharsets; import java.util.Date; public class ReceivedData { @@ -8,29 +9,29 @@ public class ReceivedData { private byte[] data; public ReceivedData(Date receivedTime, byte[] receivedData) { - super(); - time = receivedTime; - data = receivedData; + + time = (Date) receivedTime.clone(); + data = receivedData.clone(); } public Date getTime() { - return time; + return (Date) time.clone(); } public void setTime(Date time) { - this.time = time; + this.time = (Date) time.clone(); } public byte[] getData() { - return data; + return data.clone(); } public void setData(byte[] data) { - this.data = data; + this.data = data.clone(); } @Override public String toString() { - return "Frame [time=" + time + "][ Frame=" + new String(data) + "]"; + return "Frame [time=" + time + "][ Frame=" + new String(data,StandardCharsets.UTF_8) + "]"; } } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNorad.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNorad.java index f8b8081826999370c61d2f4dc81fa1a62e385e1a..4b2c9f6eba2f045a8aaa2488146574ae2a674385 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNorad.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNorad.java @@ -4,6 +4,7 @@ public class SatelliteNorad { int noradId; String name; + String indicatif = null; public SatelliteNorad(String name, int noradId) { super(); @@ -11,10 +12,21 @@ public class SatelliteNorad { this.name = name; } + public SatelliteNorad(String name, int noradId, String indicatif) { + super(); + this.noradId = noradId; + this.name = name; + this.indicatif = indicatif; + } + public int getNoradId() { return noradId; } + public String getCallsign() { + return this.indicatif; + } + public void setNoradId(int noradId) { this.noradId = noradId; } @@ -29,6 +41,10 @@ public class SatelliteNorad { @Override public String toString() { - return name; + return name + " " + noradId; + } + + public String toStringFull() { + return name + " " + noradId + " " + this.indicatif; } } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNoradFile.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNoradFile.java new file mode 100644 index 0000000000000000000000000000000000000000..3d44cd4fcec51db31cc937273c251508e9dd4210 --- /dev/null +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SatelliteNoradFile.java @@ -0,0 +1,104 @@ +/** */ +package org.josast.ApplicationKissTool; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import java.io.FileWriter; +import java.io.Reader; +import java.io.Writer; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.logging.Logger; + +/** @author chris */ +public class SatelliteNoradFile { + + private static Logger appLogger = Logger.getLogger("AmsatLogger"); + private List SatelliteNoradList; + private Hashtable htsat = new Hashtable<>(); + + public List getSatelliteNoradList() { + return new ArrayList(SatelliteNoradList); + } + + public void writeFile(String file) { + try { + // create a list of users + + // create writer + Writer writer = new FileWriter(file,Charset.forName("utf-8")); + + // convert users list to JSON file + new Gson().toJson(SatelliteNoradList, writer); + + // close writer + writer.close(); + + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public void readFile(String file) { + + try { + // create Gson instance + // Gson gson = new Gson(); + + // create a reader + Reader reader = Files.newBufferedReader(Paths.get(file)); + + // convert JSON array to list of users + SatelliteNoradList = + new Gson().fromJson(reader, new TypeToken>() {}.getType()); + + Iterator it = SatelliteNoradList.iterator(); + appLogger.info("nb sat" + SatelliteNoradList.size()); + + while (it.hasNext()) { + SatelliteNorad sat = it.next(); + htsat.put(sat.getCallsign(), sat); + } + + // print users + SatelliteNoradList.forEach(System.out::println); + + // close reader + reader.close(); + + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public int getNorad(String callsign) { + int norad = 0; + SatelliteNorad sat = htsat.get(callsign); + if (sat != null) norad = sat.getNoradId(); + return norad; + } + + public void initialise() { + + SatelliteNoradList = + Arrays.asList( + new SatelliteNorad("UVSQsat", 47438, "LATMOS"), + new SatelliteNorad("Defaut", 99999, null), + new SatelliteNorad("Picsat", 43132, "PICSAT")); + } + + /** @param args */ + public static void main(String[] args) { + // TODO Auto-generated method stub + SatelliteNoradFile s = new SatelliteNoradFile(); + // s.initialise(); + // s.writeFile("SatelliteNoradList.json"); + s.readFile("SatelliteNoradList.json"); + } +} diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SendSIDS.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SendSIDS.java index 61360fb4caa3206ebcc2c781fbd564ed3c4cff7d..a3d7e83bb47851f23a3db4fc11181aef61d0397c 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SendSIDS.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/SendSIDS.java @@ -19,20 +19,20 @@ public class SendSIDS { client = new HttpPostSIDS(url); } - public int Send(ReceivedData data) { + public int send(ReceivedData data) { // BasicConfigurator.configure(); // transforme en hexa String String hexaString = new BigInteger(1, data.getData()).toString(16); sids.setTelemetryData(data.getTime(), hexaString); - int result = client.SendSIDSBasic(sids); + int result = client.sendSIDSBasic(sids); return result; } - public int Send(ReceivedData data, int norad) { + public int send(ReceivedData data, int norad) { sids.setNoradID(norad); - return Send(data); + return send(data); } public boolean isCorrectSend(int value) { @@ -43,4 +43,9 @@ public class SendSIDS { return result; } + + public String getMessageAnswer() { + // TODO Auto-generated method stub + return client.getMessageAnswer(); + } } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskManageReceivedData.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskManageReceivedData.java index 6c72d92ee2d0e2c01513dc2f49cca7d3f09cc060..affe3dba32444c3e7d43518b3993932528c3cbea 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskManageReceivedData.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskManageReceivedData.java @@ -17,7 +17,7 @@ public class TaskManageReceivedData extends Task { private DisplayUVSQsat displayUVSQsat = new DisplayUVSQsat(); private BlockingQueue blockingQueue = null; - private ModelReceivedData datamodel = null; + // private ModelReceivedData datamodel = null; Controler ctrl = null; @@ -26,11 +26,11 @@ public class TaskManageReceivedData extends Task { ctrl = ctrlIn; } - public TaskManageReceivedData( - BlockingQueue blockingQueueIn, ModelReceivedData datamodel) { - blockingQueue = blockingQueueIn; - this.datamodel = datamodel; - } +// public TaskManageReceivedData( +// BlockingQueue blockingQueueIn, ModelReceivedData datamodel) { +// blockingQueue = blockingQueueIn; +// this.datamodel = datamodel; +// } private void displayLog(String string) { Platform.runLater( @@ -58,6 +58,8 @@ public class TaskManageReceivedData extends Task { @Override public void run() { + String rcvCallsign = ax25display.getCallsignFrom(); + try { // ctrl.displayLog("Display Data"); @@ -66,14 +68,15 @@ public class TaskManageReceivedData extends Task { ctrl.displayLog(decodedData.toString()); ctrl.SetDecodedData(ax25display.getDisplay()); - if (ax25display.GetCallsignFrom().contains("LATMOS")) { + if (ax25display.getCallsignFrom().contains("LATMOS")) { displayUVSQsat.setData(decodedData); ctrl.SetDecodedData(displayUVSQsat.getData()); } } - - ctrl.SendSids(decodedData); + int noradframe = ctrl.getNorad(rcvCallsign); + if (noradframe == 0) noradframe = conf.getNorad(); + ctrl.SendSids(decodedData, noradframe); ctrl.IncrementNbFrameTraited(); } catch (Exception e) { @@ -88,44 +91,57 @@ public class TaskManageReceivedData extends Task { @Override protected String call() throws Exception { - System.out.println("tache message lancéee"); + displayLog("Message Treatment Lanched"); Date lastFrameTime; + ReceivedData decodedData; displayLog("Waiting Data !!!"); while (true) { - ReceivedData decodedData = blockingQueue.take(); - displayLog(" Data !!!"); + decodedData = blockingQueue.take(); + // displayLog(" Data !!!"); + + /* check frame validity */ + + int valid = ax25display.setdata(decodedData); + + if ( valid == 0) + { + String calsignr = ax25display.getCallsignFrom(); + if (calsignr != null) { + displayLog(" calsign" + calsignr); + } else displayLog(" calsign not decoded"); + + lastFrameTime = new Date(); + String creationdate = ISO8601DATEFORMAT.format(lastFrameTime); + + String hexaString = new BigInteger(1, decodedData.getData()).toString(16); + + TlmData tlmData = + new TlmData( + hexaString, + ax25display.getCallsignFrom(), + conf.getLongitude(), + conf.getLatitude(), + creationdate); + mdf.setRepositoryPath(conf.getOutputFileDirectory()); + if (mdf.saveTlmData(tlmData) != 0) { + displayLog("Error creation JSON file"); + } - ax25display.setdata(decodedData); - String calsignr = ax25display.GetCallsignFrom(); - if (calsignr != null) { - displayLog(" calsign" + calsignr); - } else displayLog(" calsign not decoded"); + displayData(decodedData); + // datamodel.IncrementReceivedFrame(); + } else + { + displayLog(" Frame not decoded"); + } - lastFrameTime = new Date(); // @todo : extrait le calsign // en fonction du calssign envois SIDS (ajuster le Noarad) - String creationdate = ISO8601DATEFORMAT.format(lastFrameTime); - - String hexaString = new BigInteger(1, decodedData.getData()).toString(16); - - TlmData tlmData = - new TlmData( - hexaString, - ax25display.GetCallsignFrom(), - conf.getLongitude(), - conf.getLatitude(), - creationdate); - if (mdf.saveTlmData(tlmData) != 0) { - displayLog("Error creation JSON file"); - } - - displayData(decodedData); - // datamodel.IncrementReceivedFrame(); + } } } diff --git a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskSoundmodemTCP.java b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskSoundmodemTCP.java index 2d51b15060b0753f5ad4826001f848e17fb1d389..37a2835d10e0feeb778b842b29d6a92a41f43904 100644 --- a/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskSoundmodemTCP.java +++ b/ApplicationKissTool/src/main/java/org/josast/ApplicationKissTool/TaskSoundmodemTCP.java @@ -19,7 +19,7 @@ public class TaskSoundmodemTCP extends Task { Controler ctrl = null; // ModelReceivedData receivedFrame = null; BlockingQueue blockingQueue = null; - private ModelReceivedData datamodel = null; + //private ModelReceivedData datamodel = null; /** * @param smConfiguration fichier de configuration @@ -46,12 +46,11 @@ public class TaskSoundmodemTCP extends Task { */ public TaskSoundmodemTCP( SoundModemConfiguration smConfiguration2, - BlockingQueue blockingQueueIn, - ModelReceivedData datamodel) { + BlockingQueue blockingQueueIn) { this.smConfiguration = smConfiguration2; this.blockingQueue = blockingQueueIn; - this.datamodel = datamodel; + // this.datamodel = datamodel; smc = new SoundModemClient(smConfiguration2); // ctrl = ctrlIn; diff --git a/ApplicationKissTool/src/main/resources/org/josast/ApplicationKissTool/KissTool.fxml b/ApplicationKissTool/src/main/resources/org/josast/ApplicationKissTool/KissTool.fxml index a0bc52a9282335e5ed7067551b21fbd586887670..373986eec910c2a355638f66907a930668b507f9 100644 --- a/ApplicationKissTool/src/main/resources/org/josast/ApplicationKissTool/KissTool.fxml +++ b/ApplicationKissTool/src/main/resources/org/josast/ApplicationKissTool/KissTool.fxml @@ -12,13 +12,13 @@ - + @@ -26,13 +26,14 @@ +