diff --git a/AplicationAmicalsat/Delivery/0.4/AmicalsatCli.jar b/AplicationAmicalsat/Delivery/0.4/AmicalsatCli.jar new file mode 100644 index 0000000000000000000000000000000000000000..6a766e46853e9cacc03724accb7aecf0d9467f78 Binary files /dev/null and b/AplicationAmicalsat/Delivery/0.4/AmicalsatCli.jar differ diff --git a/AplicationAmicalsat/README.md b/AplicationAmicalsat/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9d6e4cf2ba8ad804dbb299d5972a57233f76d04e --- /dev/null +++ b/AplicationAmicalsat/README.md @@ -0,0 +1,94 @@ +# Application AmicalsatCli + +AmicalsatCli is a simple command line application to gather from SoundModem input and display AmicalSat telemetry data. Data received could be store in binary and textual format. + + +## Context + +Todo + + +## prerequisite + +On Windows computer, you need to install following software : + + * [Soundmodem](http://uz7.ho.ua/packetradio.htm) + + +## SoundModem configuration + +After the SoundModem installation, you need to allow connection to TCP KISS modem : + + On Soundmodem software : + + menu: Setting->devices: tick the box KISS Server port + + + + +## Installation + +Retreive jar file from [electrolab Github](https://code.electrolab.fr/xtof/josast/tree/master/AplicationAmicalsatCli/Delivery/0.4/AmicalsatCli.jar)  + + + +## Usage + +Before lunching the application, following applications should be setup and running : +* SoundModem + + +To launch the application + +```java + +java -jar AmicalsatCli.jar + +``` + +To launch the application with option : + +``` +java -jar AmicalsatCli.jar -h + +usage: -h [-h] [-SB ] [-ST ] [-V] + -h,--help display help message + -SB,--SaveBinarie generate a file with all frame received + in binarie (KISS) + -ST,--SaveTextual generate a file with all frame received + in textual format - data intepreated + -V,--Version Return application version + +``` + +### 1st launch + +If you have not set-up the application configuration file, The 1st launch of the application create a configuration file. The default configuration file is created in the config folder. You **can update this file** with correct parameter. + +## configuration file + +The configuration file allow to set up following parameters : + + configFileDefined=true + # Soundmodem IP Adress + smIPadress=localhost + # Soundmodem KISS port + smPort=8100 + smBinarieOutputFile=null + generateTextualOutputFile=false + textualFile=null + configurationFile=defaultConfigFile.ini + outputTextualFileRepository=OuputTextual + smBinarieOutputDirectory=SoundModemOutpt + smGenerateBinarieFile=false + + + + +## Contributing +Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. + +Please make sure to update tests as appropriate. + +## License +[GNU Lesser General Public License v2.1](http://choosealicense.com/licenses/lgpl-2.1/) diff --git a/AplicationAmicalsat/pom.xml b/AplicationAmicalsat/pom.xml index 9058b34d3bf1af7d7f25c04fcfa61e18cb71fac5..fdda5c074ae3c8e94fb04cf4f64c1586bb3be505 100644 --- a/AplicationAmicalsat/pom.xml +++ b/AplicationAmicalsat/pom.xml @@ -1,81 +1,84 @@ - - 4.0.0 - - JOSAST-parent - org.josast - 0.0.2-SNAPSHOT - + + 4.0.0 + + JOSAST-parent + org.josast + 0.0.2-SNAPSHOT + - AplicationAmicalsat - 1.0-SNAPSHOT + 0.4 + ApplicationAmicalsatCli - AplicationAmicalsat - - http://www.example.com - - UTF-8 - 1.7 - 1.7 - ${env.JAVA_HOME} - 0.1.5 - - + + UTF-8 + 1.8 + 1.8 + ${env.JAVA_HOME} - - - + + + 0.1.5 + 0.8 + + 4.11 + + + + 0.0.2-SNAPSHOT + 0.2 + 1.0-SNAPSHOT + + + + + + + name.valery1707.kaitai kaitai-maven-plugin ${kaitai-maven-plugin-version} - - + io.kaitai kaitai-struct-runtime - 0.8 - - - org.influxdb - influxdb-java - 2.16 + ${kaitai-struct-runtime.version} + org.josast ModuleSoundModem - 0.0.2-SNAPSHOT + ${ModuleSoundModem.version} - org.josast ModuleConfig - 0.2 + ${ModuleConfig.version} - - org.josast - ModuleAmicalsat - 1.0-SNAPSHOT - - - - junit - junit - 4.11 - test - - - - + + org.josast + ModuleAmicalsat + ${ModuleAmicalsat.version} + + + junit + junit + ${junit.version} + test + + - + + org.apache.maven.plugins maven-assembly-plugin - make-assembly @@ -84,13 +87,12 @@ single - - org.josast.application.amicalsat.cli.AmicalsatCli + org.josast.app.amicalsat.cli.AmicalsatCli @@ -98,15 +100,7 @@ jar-with-dependencies - - - - - - - - diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java new file mode 100644 index 0000000000000000000000000000000000000000..6f6867b1c271f7e3cc59b704b067c3b72cedf823 --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCli.java @@ -0,0 +1,33 @@ +package org.josast.app.amicalsat.cli; + +import java.util.Vector; + +import org.josast.app.amicalsat.cli.option.Cmd; +import org.josast.app.amicalsat.cli.option.OptionsAnalysis; + +public class AmicalsatCli { + + + /** + * @param args + */ + public AmicalsatCli(String[] args) { + OptionsAnalysis opt=new OptionsAnalysis(args); + Vector vec = opt.getCommandes(); + for(Cmd cmd : vec){ + cmd.excute(); + } + } + + + /** + * @param args + */ + public static void main(String[] args) { + + AmicalsatCli cli = new AmicalsatCli(args); + + + } + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCliConf.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCliConf.java new file mode 100644 index 0000000000000000000000000000000000000000..c33e29e2cc304e47d190543e33713325d60b4590 --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/AmicalsatCliConf.java @@ -0,0 +1,180 @@ +package org.josast.app.amicalsat.cli; + +import java.nio.file.Path; +import java.util.logging.Logger; + +import org.josast.property.CONFIG; +import org.josast.property.ConfigObject; + + +public class AmicalsatCliConf extends ConfigObject { + + private Logger log = Logger.getLogger(getClass().getName()); + + private String configurationFile = "defaultConfigFile.ini"; + private String smBinarieOutputFile = null; + private String smBinarieOutputDirectory = "SoundModemOutpt"; + private boolean smGenerateBinarieFile = false; + private String textualFile = null; + private boolean generateTextualOutputFile = false; + private String outputTextualFileRepository = "OuputTextual"; + private String configFileDefined = "true"; + private boolean TextualFilePrefixDate = true; + private String smIPadress = "localhost"; + private int smPort = 8100; + private boolean isInitialised = false; + + protected CONFIG ConfigFile = CONFIG.getInstance(); + + private Path RealTextualFilePath; + + private AmicalsatCliConf() + { + + } + /** Holder */ + private static class SingletonHolder + { + /** Instance unique non pr�initialis�e */ + private final static AmicalsatCliConf instance = new AmicalsatCliConf(); + } + + /** Point d'acc�s pour l'instance unique du singleton */ + public static AmicalsatCliConf getInstance() + { + SingletonHolder.instance.setConfigurationFile(SingletonHolder.instance.configurationFile); + SingletonHolder.instance.initialise(SingletonHolder.instance.configurationFile); + return SingletonHolder.instance; + + } + + public static AmicalsatCliConf getInstance(String configFilename) + { + SingletonHolder.instance.configurationFile = configFilename; + SingletonHolder.instance.initialise(configFilename); + return SingletonHolder.instance; + } + + private void initialise(String configFilename) { + + + if (!isInitialised) + { + // vérifie si la propriété est dans le fichier + ConfigFile.setFileName(configFilename); + + String temp = ConfigFile.GetProperty("configFileDefined"); + + if (temp == null) { + // config file not initialised + + log.severe("properties file not initialised - a file is created with properties with defaults value"); + System.out.println("config file does not content required properties \n the file " + configFilename + + " has been set up with default properties to configure"); + save(); + + } else { + + initialiseFromProperties(); + } + + isInitialised=true; + } + } + + private void initialiseFromProperties() { + configFileDefined = ConfigFile.GetProperty("configFileDefined"); + smIPadress = ConfigFile.GetProperty("smIPadress"); + String portString = ConfigFile.GetProperty("smPort"); + smPort = Integer.parseInt(portString); + smGenerateBinarieFile = Boolean.getBoolean(ConfigFile.GetProperty("smGenerateBinarieFile")); + smBinarieOutputFile = ConfigFile.GetProperty("smBinarieOutputFile"); + textualFile = ConfigFile.GetProperty("textualFile"); + configurationFile = ConfigFile.GetProperty("configurationFile"); + generateTextualOutputFile = Boolean.getBoolean(ConfigFile.GetProperty("generateTextualOutputFile")); + outputTextualFileRepository = ConfigFile.GetProperty("outputTextualFileRepository"); + smBinarieOutputDirectory = ConfigFile.GetProperty("smBinarieOutputDirectory"); + } + + public void save() { + ConfigFile.SetProperty("configFileDefined", configFileDefined); + ConfigFile.SetProperty("smPort", "" + smPort); + ConfigFile.SetProperty("smIPadress", "" + smIPadress); + ConfigFile.SetProperty("smBinarieOutputFile", "" + smBinarieOutputFile); + ConfigFile.SetProperty("smGenerateBinarieFile", "" + smGenerateBinarieFile); + ConfigFile.SetProperty("textualFile", "" + textualFile); + ConfigFile.SetProperty("generateTextualOutputFile", "" + generateTextualOutputFile); + ConfigFile.SetProperty("outputTextualFileRepository", "" + outputTextualFileRepository); + ConfigFile.SetProperty("configurationFile", "" + configurationFile); + ConfigFile.SetProperty("smBinarieOutputDirectory", "" + smBinarieOutputDirectory); + + + } + + public String getConfigurationFile() { + return configurationFile; + } + + public void setConfigurationFile(String configurationFile) { + this.configurationFile = configurationFile; + } + + public String getSmBinarieOutputFile() { + return smBinarieOutputFile; + } + + public void setSmBinarieOutputFile(String binariefile) { + this.smBinarieOutputFile = binariefile; + smGenerateBinarieFile = true; + } + + public String getTextualFile() { + return textualFile; + } + + public void setTextualFile(String textualFile) { + this.textualFile = textualFile; + generateTextualOutputFile = true; + } + + public boolean isSmGenerateBinarieFile() { + return smGenerateBinarieFile; + } + + public void setSmGenerateBinarieFile(boolean smGenerateBinarieFile) { + this.smGenerateBinarieFile = smGenerateBinarieFile; + } + + public boolean isGenerateTextualOutputFile() { + return generateTextualOutputFile; + } + + public void setGenerateTextualOutputFile(boolean smTextualOutputFile) { + this.generateTextualOutputFile = smTextualOutputFile; + } + + public String getOutputTextualFileRepository() { + return outputTextualFileRepository; + } + + public void setOutputTextualFileRepository(String outputTextualFileRepository) { + this.outputTextualFileRepository = outputTextualFileRepository; + } + + public boolean isTextualFilePrefixDate() { + return TextualFilePrefixDate; + } + + public void setTextualFilePrefixDate(boolean textualFilePrefixDate) { + TextualFilePrefixDate = textualFilePrefixDate; + } + + public void setRealTextualFilePath(Path filepath) { + RealTextualFilePath = filepath; + } + + public Path getRealTextualFilePath() { + return RealTextualFilePath; + } + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/Cmd.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/Cmd.java new file mode 100644 index 0000000000000000000000000000000000000000..ab72a7327a973b1ea9013f2416f10cc47d874ef7 --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/Cmd.java @@ -0,0 +1,15 @@ +package org.josast.app.amicalsat.cli.option; + +/** + * Command pattern interface + * @author chris + * + */ +public interface Cmd { + + /** + * Excecute command + */ + void excute(); + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/InitialiseTextualFileCmd.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/InitialiseTextualFileCmd.java new file mode 100644 index 0000000000000000000000000000000000000000..de8f9271f55ae3daa48e202bca8b4ac5f7fdf147 --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/InitialiseTextualFileCmd.java @@ -0,0 +1,53 @@ +package org.josast.app.amicalsat.cli.option; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.josast.app.amicalsat.cli.AmicalsatCliConf; + +public class InitialiseTextualFileCmd implements Cmd { + private Logger log = Logger.getLogger(getClass().getName()); + private Path filepath = null; + + @Override + public void excute() { + AmicalsatCliConf conf = AmicalsatCliConf.getInstance(); + + if (conf.isGenerateTextualOutputFile()) { + + Path path = Paths.get(conf.getOutputTextualFileRepository()); + // if directory exists? + if (!Files.exists(path)) { + try { + Files.createDirectories(path); + log.info("directory created : " + path); + } catch (IOException e) { + log.log(Level.SEVERE, "cannot create outpout directorie " + e.toString()); + } + } + + String creationdate = ""; + if (conf.isTextualFilePrefixDate()) { + SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd-HHmmss"); + Date aujourdhui = new Date(); + creationdate = formater.format(aujourdhui) + "-"; + } + + filepath = Paths.get(conf.getOutputTextualFileRepository() + "\\" + creationdate + conf.getTextualFile()); + try { + Files.writeString(filepath, "Output file \r\n"); + } catch (IOException e) { + log.severe("cannot write to outpout file " + e.toString()); + } + conf.setRealTextualFilePath(filepath); + + } + } + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/OptionsAnalysis.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/OptionsAnalysis.java new file mode 100644 index 0000000000000000000000000000000000000000..4ce1772b113eaae8564c3398f033d128a3ac96df --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/OptionsAnalysis.java @@ -0,0 +1,122 @@ +package org.josast.app.amicalsat.cli.option; + +import java.util.Vector; +import java.util.logging.Logger; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.josast.app.amicalsat.cli.AmicalsatCliConf; + +public class OptionsAnalysis { + private Logger log = Logger.getLogger(getClass().getName()); + Vector listeCmd = null; + Options options = null; + CommandLine line = null; + + AmicalsatCliConf conf = AmicalsatCliConf.getInstance(); + + public OptionsAnalysis(String[] args) { + options = configParameters(); + CommandLineParser parser = new DefaultParser(); + + try { + line = parser.parse(options, args); + listeCmd = interprete(line, args); + } catch (ParseException e) { + log.severe(" Unrecognise option " + e.toString()); + System.exit(0); + } + } + + public Vector getCommandes() { + return listeCmd; + } + + public void setListeCmd(Vector listeCmd) { + this.listeCmd = listeCmd; + } + + private Options configParameters() { + + // -V Version + + final Option versionOption = Option.builder("V").longOpt("Version") // + .desc("Return application version").hasArg(false).required(false).build(); + + final Option helpFileOption = Option.builder("h").longOpt("help").desc("display help message").build(); + +// final Option configFileOption = Option.builder("CS").longOpt("ConfigSave") // +// .desc("provide configuration file").hasArg(true).argName("configFile").required(false).build(); + + final Option generateBinarieFileOption = Option.builder("SB").longOpt("SaveBinarie") // + .desc("generate a file with all frame received in binarie (KISS)").hasArg(true).argName("FileNameBin") + .required(false).build(); + + final Option generateTxtFileOption = Option.builder("ST").longOpt("SaveTextual") // + .desc("generate a file with all frame received in textual format - data intepreated").hasArg(true) + .argName("FileNameTxt").required(false).build(); + + final Options options = new Options(); + + options.addOption(versionOption); +// options.addOption(configFileOption); + options.addOption(generateBinarieFileOption); + options.addOption(generateTxtFileOption); + options.addOption(helpFileOption); + + return options; + + } + + private Vector interprete(CommandLine line, String[] args) { + + Vector cmdList = new Vector(); + + boolean helpMode = line.hasOption("help"); + + if (helpMode) { +// TODO : a mettre à jours + VersionCmd cmd = new VersionCmd(); + cmd.excute(); + final HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp(args[0], options, true); + System.exit(0); + + } + cmdList.add(new VersionCmd()); + boolean versionpMode = line.hasOption("Version"); + if (versionpMode) { + VersionCmd cmd = new VersionCmd(); + cmd.excute(); + System.exit(0); + } + +// boolean confFile = line.hasOption("configFile"); +// if (confFile) { +// +// } + + boolean binaryfile = line.hasOption("SaveBinarie"); + if (binaryfile) { + conf.setSmBinarieOutputFile(line.getOptionValue("SaveBinarie", "")); + conf.save(); + + } + + boolean generateMode = line.hasOption("SaveTextual"); + if (generateMode) { + conf.setTextualFile(line.getOptionValue("SaveTextual", "")); + cmdList.add(new InitialiseTextualFileCmd()); + + } + + cmdList.add(new ReceiveDataCmd()); + return cmdList; + } + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/ReceiveDataCmd.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/ReceiveDataCmd.java new file mode 100644 index 0000000000000000000000000000000000000000..f891138dbd6780fc1c58251eb19dfc1e794e73bd --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/ReceiveDataCmd.java @@ -0,0 +1,69 @@ +package org.josast.app.amicalsat.cli.option; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Logger; + +import org.josast.ModuleSoundModem.SoundModemClient; +import org.josast.amicalsat.Frame; +import org.josast.amicalsat.FrameFactory; +import org.josast.amicalsat.FrameTlmAmicalsat; +import org.josast.app.amicalsat.cli.AmicalsatCliConf; + +import io.kaitai.struct.ByteBufferKaitaiStream; + +public class ReceiveDataCmd implements Cmd { + + private Logger log = Logger.getLogger(getClass().getName()); + private SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd-HHmmss"); + + @Override + public void excute() { + + AmicalsatCliConf conf = AmicalsatCliConf.getInstance(); + FrameFactory ff = new FrameFactory(); + SoundModemClient sm = new SoundModemClient(conf.getConfigurationFile()); + if (!sm.isOpen()) { + System.out.println("Connection to modem failed"); + } else { + System.out.println("Connected to modem"); + while (sm.isOpen()) { + + byte[] temp = sm.receivedRawData(); + try { + FrameTlmAmicalsat cube = new FrameTlmAmicalsat(new ByteBufferKaitaiStream(temp)); + String tlmArea = cube.frameTlmEntrySat().payload().tlmArea(); + String typeFrame = cube.frameTlmEntrySat().payload().tlmType(); + Frame fm = ff.creerFrame(tlmArea, typeFrame); + fm.setUp(cube); + + Date aujourdhui = new Date(); + String receiveddate = formater.format(aujourdhui); + + System.out.println(receiveddate + " : " + fm.toStringHeader()); + System.out.println(fm.toString()); + if (conf.isGenerateTextualOutputFile()) { + try { + Files.writeString(conf.getRealTextualFilePath(), receiveddate, StandardOpenOption.APPEND); + Files.writeString(conf.getRealTextualFilePath(), fm.toStringHeader(), + StandardOpenOption.APPEND); + Files.writeString(conf.getRealTextualFilePath(), fm.toString() + "\r\n", + StandardOpenOption.APPEND); + } catch (IOException e) { + log.severe(e.toString()); + } + } + } catch (Exception e) { + log.severe("Data input received not decoded " + e.toString()); + } + + } + + System.out.println("Connection closed"); + } + + } +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/VersionCmd.java b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/VersionCmd.java new file mode 100644 index 0000000000000000000000000000000000000000..9679288c0c407b863afe4e24f1506c78ec7e6651 --- /dev/null +++ b/AplicationAmicalsat/src/main/java/org/josast/app/amicalsat/cli/option/VersionCmd.java @@ -0,0 +1,17 @@ +package org.josast.app.amicalsat.cli.option; + +import org.josast.app.amicalsat.cli.AmicalsatCli; + +public class VersionCmd implements Cmd { + + String version = "0.4"; + + /** + * + */ + @Override + public void excute() { + System.out.println(AmicalsatCli.class.getSimpleName() + " " + version); + } + +} diff --git a/AplicationAmicalsat/src/main/java/org/josast/application/amicalsat/cli/AmicalsatCli.java b/AplicationAmicalsat/src/main/java/org/josast/application/amicalsat/cli/AmicalsatCli.java deleted file mode 100644 index 53fceea51722db08af904453582983c4f423c2dc..0000000000000000000000000000000000000000 --- a/AplicationAmicalsat/src/main/java/org/josast/application/amicalsat/cli/AmicalsatCli.java +++ /dev/null @@ -1,199 +0,0 @@ -package org.josast.application.amicalsat.cli; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import org.josast.ModuleSoundModem.SoundModemCli; -import org.josast.ModuleSoundModem.SoundModemClient; -import org.josast.amicalsat.Frame; -import org.josast.amicalsat.FrameFactory; -import org.josast.amicalsat.FrameTlmAmicalsat; - -import io.kaitai.struct.ByteBufferKaitaiStream; - -public class AmicalsatCli { - // private Logger log = Logger.getLogger(getClass().getName()); - - private String version = "0.2"; - private String configurationfile = "defaultConfigFile.ini"; - /* - * Utilisation d'un répertoire par défaut - */ - private String generateRepository = "DataReceived"; - - - - public String getVersion() { - return version; - } - - public String getConfigurationfile() { - return configurationfile; - } - - public void setConfigurationfile(String configurationfile) { - this.configurationfile = configurationfile; - } - - public String getGenerateRepository() { - return generateRepository; - } - - public void setGenerateRepository(String generateRepository) { - this.generateRepository = generateRepository; - } - - public AmicalsatCli() { - // TODO Auto-generated constructor stub - } - - private static Options configParameters() { - - final Option versionOption = Option.builder("V") - - .longOpt("Version") // - - .desc("Return application version") - - .hasArg(false) - - .required(false) - - .build(); - - final Option configFileOption = Option.builder("C") - - .longOpt("Config") // - - .desc("Return application version") - - .hasArg(true) - - .argName("configFile") - - .required(false) - - .build(); - - final Option generateFileOption = Option.builder("G") - - .longOpt("Generate") // - - .desc("generate file frame received - not implemented") - - .hasArg(true) - - .argName("GenerateRepository") - - .required(false) - - .build(); - - final Option helpFileOption = Option.builder("h") - - .longOpt("help") - - .desc("display help message") - - .build(); - - final Options options = new Options(); - - options.addOption(versionOption); - - options.addOption(configFileOption); - - options.addOption(generateFileOption); - - options.addOption(helpFileOption); - - return options; - - } - - public void execute() { - FrameFactory ff = new FrameFactory(); - - SoundModemClient sm = new SoundModemClient(configurationfile); - - while (true) { - - byte[] temp = sm.receivedRawData(); - - FrameTlmAmicalsat cube = new FrameTlmAmicalsat(new ByteBufferKaitaiStream(temp)); - - System.out.print( - "Source : " + cube.frameTlmEntrySat().ax25Header().srcCallsignRaw().srcCallsignRor().srcCallsign()); - System.out.print("destination : " - + cube.frameTlmEntrySat().ax25Header().destCallsignRaw().destCallsignRor().destCallsign()); - System.out.print("PID : " + cube.frameTlmEntrySat().payload().pid()); - System.out.println(" SSID : " + cube.frameTlmEntrySat().ax25Header().srcSsidRaw()); - String tlmArea = cube.frameTlmEntrySat().payload().tlmArea(); - String typeFrame = cube.frameTlmEntrySat().payload().tlmType(); - System.out.println(tlmArea + " " + typeFrame); - Frame fm = ff.creerFrame(tlmArea, typeFrame); - fm.setUp(cube); - - System.out.println(fm.toString()); - - } - - } - - public static void main(String[] args) throws ParseException { - - final Options options = configParameters(); - - final CommandLineParser parser = new DefaultParser(); - - final CommandLine line = parser.parse(options, args); - - AmicalsatCli cli = new AmicalsatCli(); - - boolean helpMode = line.hasOption("help"); - - if (helpMode) { - - final HelpFormatter formatter = new HelpFormatter(); - - formatter.printHelp(args[0], options, true); - - System.exit(0); - - } - - boolean versionpMode = line.hasOption("Version"); - - if (versionpMode) { - - System.out.println(SoundModemCli.class.getSimpleName() + " " + cli.getVersion()); - - System.exit(0); - - } - - boolean configMode = line.hasOption("Config"); - - if (configMode) { - - cli.setConfigurationfile(line.getOptionValue("Config", "")); - - } - - boolean generateMode = line.hasOption("Generate"); - - if (generateMode) { - - cli.setGenerateRepository(line.getOptionValue("Generate", "")); - - } - System.out.println(cli.getVersion()); - cli.execute(); - - } - -} diff --git a/ApplicationEntrySatDecoder/src/main/java/org/josast/EntrysatDecoder/Controler.java b/ApplicationEntrySatDecoder/src/main/java/org/josast/EntrysatDecoder/Controler.java index 47716716f950239768deff052fb0282e3f0d1feb..b1c84a44aa4e583b249c02e288e682fceed3708f 100644 --- a/ApplicationEntrySatDecoder/src/main/java/org/josast/EntrysatDecoder/Controler.java +++ b/ApplicationEntrySatDecoder/src/main/java/org/josast/EntrysatDecoder/Controler.java @@ -219,8 +219,8 @@ public class Controler { ButtonSave.setDisable(false); SoundModemConfiguration smc = new SoundModemConfiguration("default"); - smc.setIPadress(FieldIP.getText()); - smc.setPort(Integer.parseInt(FieldPort.getText())); + smc.setSmIPadress(FieldIP.getText()); + smc.setSmPort(Integer.parseInt(FieldPort.getText())); if (task == null) { receivedFrame.addPropertyChangeListener(new PropertyChangeListener() { diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1FlagTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1FlagTypeFrame.java index 7d66d745e600f8747fd9e7f86652e62c35f635a5..c08e069a1d3a2551fc3e286e2f274f6fc0a45333 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1FlagTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1FlagTypeFrame.java @@ -13,8 +13,9 @@ public class A1FlagTypeFrame extends Frame { private String faults; @Override - public void setUp(FrameTlmAmicalsat cube) { - A1Type a1type = (A1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + + A1Type a1type = (A1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); A1FlagType log = (A1FlagType) a1type.tlmSw(); // System.out.println("Time Stamp : "log.); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1GyroTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1GyroTypeFrame.java index 0999735794d160b8733a1acc2e67ea36cc1614c8..6ebb54222935f43f806f3116440652be681c2541 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1GyroTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1GyroTypeFrame.java @@ -12,8 +12,8 @@ public class A1GyroTypeFrame extends Frame { private String giroY; @Override - public void setUp(FrameTlmAmicalsat cube) { - A1Type a1type = (A1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + A1Type a1type = (A1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); A1GyroType log = (A1GyroType) a1type.tlmSw(); timeStamps = log.timeStamps(); hash.put("TimeStamp", timeStamps); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1MagTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1MagTypeFrame.java index 37343523f8e38647faf83f0fd7da38f2cc3f37fa..484886969bcdfc73f887470b047396d81746c36f 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1MagTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1MagTypeFrame.java @@ -12,8 +12,8 @@ public class A1MagTypeFrame extends Frame { private String magZ; @Override - public void setUp(FrameTlmAmicalsat cube) { - A1Type a1type = (A1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + A1Type a1type = (A1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); A1MagType log = (A1MagType) a1type.tlmSw(); timeStamps = log.timeStamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1PositionTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1PositionTypeFrame.java index 704d505089c4152b3cf50d381ad5080ca4df7c63..4903fbb85c1020829b3d4484a9a2c61493f63619 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1PositionTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/A1PositionTypeFrame.java @@ -11,8 +11,8 @@ public class A1PositionTypeFrame extends Frame { private String longitude; @Override - public void setUp(FrameTlmAmicalsat cube) { - A1Type a1type = (A1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + A1Type a1type = (A1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); A1PositionType log = (A1PositionType) a1type.tlmSw(); timeStamps = log.timeStamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/CuLogTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/CuLogTypeFrame.java index 36c07b2dd104a5b8f05c5ed05a8aa1f61066e580..2f3dafd0b4917590568193a5b9861cba4377b735 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/CuLogTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/CuLogTypeFrame.java @@ -12,9 +12,9 @@ public class CuLogTypeFrame extends Frame { private String cuFlags; @Override - public void setUp(FrameTlmAmicalsat cube) { + protected void setUpFrame() { - CuType cutype = (CuType) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + CuType cutype = (CuType) data.frameTlmEntrySat().payload().tlmAreaSwitch(); CuLogType log = (CuLogType) cutype.tlmsw(); timeStamps = cutype.timesTamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmLogTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmLogTypeFrame.java index d924829fae01e2ee61a0995a5b55046986360643..691dcdfc8977da863a3f2400637f9f3aceb6101b 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmLogTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmLogTypeFrame.java @@ -17,9 +17,9 @@ public class EmLogTypeFrame extends Frame { @Override - public void setUp(FrameTlmAmicalsat cube) { + protected void setUpFrame() { - EmerType emtype = (EmerType) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + EmerType emtype = (EmerType) data.frameTlmEntrySat().payload().tlmAreaSwitch(); EmLogType log = (EmLogType) emtype.tlmsw(); timeStamps = emtype.timeStamp(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmmnTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmmnTypeFrame.java index 703a9884c1b2dca831f17c1af90ad61ede8608df..dd94e690c6fe6d12fbf7a4c4bf88ada76c1b2643 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmmnTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/EmmnTypeFrame.java @@ -18,8 +18,8 @@ public class EmmnTypeFrame extends Frame { private String vCpu; @Override - public void setUp(FrameTlmAmicalsat cube) { - EmerType emtype = (EmerType) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + EmerType emtype = (EmerType) data.frameTlmEntrySat().payload().tlmAreaSwitch(); EmmnType log = (EmmnType) emtype.tlmsw(); timeStamps = emtype.timeStamp(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/FlagsTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/FlagsTypeFrame.java index 9ea3a40737be1663ceff316e6d8b4cdabe092203..8d9994b4b1a5afc44616390727d25777c3b983af 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/FlagsTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/FlagsTypeFrame.java @@ -10,8 +10,8 @@ public class FlagsTypeFrame extends Frame { private String hexFlags; @Override - public void setUp(FrameTlmAmicalsat cube) { - M1Type m1type = (M1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + M1Type m1type = (M1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); FlagsType log = (FlagsType) m1type.tlmSw(); timeStamps = m1type.timeStamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/Frame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/Frame.java index dc011e155a023b0257ef203aed23e130d2afc447..b7877666b6d593db4bec98fe2a9b8df833a7a87a 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/Frame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/Frame.java @@ -1,15 +1,37 @@ package org.josast.amicalsat; -import java.util.Hashtable; +import java.util.HashMap; + public abstract class Frame { - - protected Hashtable hash = new Hashtable(); - - public abstract void setUp(FrameTlmAmicalsat data); - @Override + protected FrameTlmAmicalsat data =null; + protected HashMap hash = new HashMap(); + protected HashMap hashHeader = new HashMap(); + private String tlmArea; + private String typeFrame; + + + public void setUp(FrameTlmAmicalsat fm) + { + data = fm; + tlmArea = fm.frameTlmEntrySat().payload().tlmArea(); + typeFrame = fm.frameTlmEntrySat().payload().tlmType(); + hash.put("Area", tlmArea); + hash.put("typeFrame", typeFrame); + setUpFrame(); + } + protected abstract void setUpFrame (); + public String toStringHeader() { + hashHeader.put("Source", data.frameTlmEntrySat().ax25Header().srcCallsignRaw().srcCallsignRor().srcCallsign()); + hashHeader.put("Destination",data.frameTlmEntrySat().ax25Header().destCallsignRaw().destCallsignRor().destCallsign()); + hashHeader.put("PID",""+data.frameTlmEntrySat().payload().pid()); + hashHeader.put("SSID",""+data.frameTlmEntrySat().ax25Header().srcSsidRaw()); + return hashHeader.toString(); + + } + @Override public String toString() { return hash.toString(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/M1TypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/M1TypeFrame.java index dc081b1c82639731a85a8d231af16be08002ecb6..d1ba7f2d186cf37c52d5915c2a6380f45d69203c 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/M1TypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/M1TypeFrame.java @@ -19,8 +19,8 @@ public class M1TypeFrame extends Frame { private String cpuTemperature; @Override - public void setUp(FrameTlmAmicalsat cube) { - M1Type m1type = (M1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + M1Type m1type = (M1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); LogType log = (LogType) m1type.tlmSw(); timeStamps= m1type.timeStamps(); hash.put("TimeStamp", timeStamps); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2MsTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2MsTypeFrame.java index d14619354cf59b0ad8ca1077ef9b12a265388db6..18e6ab511eae34b54872c8cc7e2cea45311630fe 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2MsTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2MsTypeFrame.java @@ -13,8 +13,8 @@ public class U2MsTypeFrame extends Frame { private String aFCOffset; @Override - public void setUp(FrameTlmAmicalsat cube) { - U2Type u2type = (U2Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + U2Type u2type = (U2Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); MsType mstype = (MsType) u2type.tlmsw(); timeStamps = mstype.timeStamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2RlTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2RlTypeFrame.java index 6997a8feb9801356ef212b29469d0c4aee113769..97e212f03da4e8a93011645b4d418e427abc7a3d 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2RlTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/U2RlTypeFrame.java @@ -13,9 +13,9 @@ public class U2RlTypeFrame extends Frame { private int flags; @Override - public void setUp(FrameTlmAmicalsat cube) { + protected void setUpFrame() { - U2Type u2type = (U2Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + U2Type u2type = (U2Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); U2RlType mstype = (U2RlType) u2type.tlmsw(); timeStamps = mstype.timeStamp(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1MsTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1MsTypeFrame.java index 1d361078735e73f793d6a5cd8c7e4d76da2f7323..5aecd2b33ab0a82de28cd1304e47b1752ba23bbc 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1MsTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1MsTypeFrame.java @@ -13,8 +13,8 @@ public class V1MsTypeFrame extends Frame { private String aFCOffset; @Override - public void setUp(FrameTlmAmicalsat cube) { - V1Type u2type = (V1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + protected void setUpFrame() { + V1Type u2type = (V1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); MsType mstype = (MsType) u2type.tlmsw(); timeStamps = mstype.timeStamps(); diff --git a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1RlTypeFrame.java b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1RlTypeFrame.java index 7222fffb8ea5a84651802f17b2f8145f3e307d75..137c341781e7fa6662104e484cf53b022119a1fb 100644 --- a/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1RlTypeFrame.java +++ b/ModuleAmicalsat/src/main/java/org/josast/amicalsat/V1RlTypeFrame.java @@ -12,9 +12,9 @@ public class V1RlTypeFrame extends Frame { private String flags; @Override - public void setUp(FrameTlmAmicalsat cube) { + protected void setUpFrame() { - V1Type v1u2type = (V1Type) cube.frameTlmEntrySat().payload().tlmAreaSwitch(); + V1Type v1u2type = (V1Type) data.frameTlmEntrySat().payload().tlmAreaSwitch(); V1RlType mstype = (V1RlType) v1u2type.tlmsw(); timeStamps = mstype.timeStamp(); diff --git a/ModuleAmicalsat/src/test/java/org/josast/amicalsat/FrameFactoryTest.java b/ModuleAmicalsat/src/test/java/org/josast/amicalsat/FrameFactoryTest.java index 96a453b538ff118b79e5fd9ae777036390193a35..db541b7f9b479cf64b33244a2141ab7b43fffd43 100644 --- a/ModuleAmicalsat/src/test/java/org/josast/amicalsat/FrameFactoryTest.java +++ b/ModuleAmicalsat/src/test/java/org/josast/amicalsat/FrameFactoryTest.java @@ -85,18 +85,13 @@ class FrameFactoryTest { kiss k = new kiss(kissbuff); buff =k.toRaw(); cube = new FrameTlmAmicalsat(new ByteBufferKaitaiStream(buff)); - System.out.print( - "Source : " + cube.frameTlmEntrySat().ax25Header().srcCallsignRaw().srcCallsignRor().srcCallsign()); - System.out.print("destination : " - + cube.frameTlmEntrySat().ax25Header().destCallsignRaw().destCallsignRor().destCallsign()); - System.out.print("PID : " + cube.frameTlmEntrySat().payload().pid()); - System.out.println(" SSID : " + cube.frameTlmEntrySat().ax25Header().srcSsidRaw()); String tlmArea = cube.frameTlmEntrySat().payload().tlmArea(); String typeFrame = cube.frameTlmEntrySat().payload().tlmType(); System.out.println(tlmArea +" "+ typeFrame); Frame fm = ff.creerFrame(tlmArea, typeFrame); fm.setUp(cube); - + + System.out.println(fm.toStringHeader()); System.out.println(fm.toString()); } diff --git a/ModuleConfig/pom.xml b/ModuleConfig/pom.xml index 0b5282ec97940bb2dc4f078bc2fdf3bc37a69bfb..c846df8da4f9b367098bd7a30501de199acc444f 100644 --- a/ModuleConfig/pom.xml +++ b/ModuleConfig/pom.xml @@ -23,13 +23,20 @@ - - castor - castor - 1.0 - - - + + + org.codehaus.castor + castor + 1.4.1 + pom + + + + + org.codehaus.castor + castor-xml + 1.4.1 + diff --git a/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemClient.java b/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemClient.java index 8b56c52707d508244762017272cbca008405599c..fe89b1454d5c550eaeb43fe053d29e9b5aaebace 100644 --- a/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemClient.java +++ b/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemClient.java @@ -1,101 +1,166 @@ package org.josast.ModuleSoundModem; -import java.io.*; -import java.net.*; + +import java.io.IOException; +import java.io.InputStream; +import java.net.Socket; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import org.josast.AX25.AX25Frame; import org.josast.AX25.KissData; import org.josast.AX25.KissFrame; + public class SoundModemClient { - + private Logger log = Logger.getLogger(getClass().getName()); - - + private SoundModemConfiguration smConfiguration = null; - private Socket skt=null; - private InputStream in =null; - private boolean open =false; - private int bufferSize=1024; - + private Socket skt = null; + private InputStream in = null; + private boolean open = false; + private int bufferSize = 1024; + + private Path filepath; + /** - * Initialise connection to soundmodem application with default value + * Initialise connection to soundmodem application with default value * */ public SoundModemClient() { - - smConfiguration = new SoundModemConfiguration("config.ini"); + + smConfiguration = new SoundModemConfiguration("defaultConfigFile.ini"); openSocket(); + initialiseFile(); } + /** - * Initialise connection to soundmodem application with configuration + * Initialise connection to soundmodem application with configuration * */ - public SoundModemClient( SoundModemConfiguration smConfig) { - - smConfiguration=smConfig; + public SoundModemClient(SoundModemConfiguration smConfig) { + + smConfiguration = smConfig; openSocket(); - + initialiseFile(); + } + /** * Initialise connection to soundmodem application with configuration file * */ public SoundModemClient(String filename) { - + smConfiguration = new SoundModemConfiguration(filename); openSocket(); + initialiseFile(); + } - + private void openSocket() { - - try { - skt = new Socket(smConfiguration.getIPadress(), smConfiguration.getPort()); - in = skt.getInputStream(); - open=true; + + try { + skt = new Socket(smConfiguration.getSmIPadress(), smConfiguration.getSmPort()); + in = skt.getInputStream(); + open = true; + } catch (IOException e) { + log.log(Level.SEVERE, "create stream " + e.toString()); + open = false; + } + + } + + private void initialiseFile() { + + if (smConfiguration.isSmGenerateBinarieFile()) { + + Path path = Paths.get(smConfiguration.getSmBinarieOutputDirectory()); + // if directory exists? + if (!Files.exists(path)) { + try { + Files.createDirectories(path); + } catch (IOException e) { + log.log(Level.SEVERE, "cannot create outpout directorie " + e.toString()); + } + } + + String creationdate = ""; + if (smConfiguration.isSmBinarieFilePrefixDate()) { + SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd-HHmmss"); + Date aujourdhui = new Date(); + creationdate = formater.format(aujourdhui) + "-"; + } + + filepath = Paths.get(smConfiguration.getSmBinarieOutputDirectory() + "\\" + creationdate + + smConfiguration.getSmBinarieOutputFile()); + byte[] temp = new byte[] {}; + try { + Files.write(filepath, temp); } catch (IOException e) { - log.log(Level.SEVERE, "create stream " + e.toString()); + // TODO Auto-generated catch block + e.printStackTrace(); } - + + } + } - + /** - * wait bytes from sound modem + * wait bytes from sound modem * - * @return bytes received in KISS format + * @return bytes received in KISS format */ - public byte[] receivedKissData() - { + public byte[] receivedKissData() { byte[] cbuf = new byte[bufferSize]; - int nbbyteread=0; - - try { - nbbyteread = in.read(cbuf); - - } catch (IOException e) { + int nbbyteread = 0; + if (this.open) { - log.log(Level.SEVERE, "Error Read data " + e.toString()); try { - in.close(); - } catch (IOException e1) { - log.log(Level.SEVERE, "Closing " + e1.toString()); + nbbyteread = in.read(cbuf); + + } catch (IOException e) { + + log.log(Level.SEVERE, "Error Read data " + e.toString()); + try { + in.close(); + } catch (IOException e1) { + log.log(Level.SEVERE, "Closing " + e1.toString()); + } + } + + byte[] temp = Arrays.copyOf(cbuf, nbbyteread); + + if (smConfiguration.isSmGenerateBinarieFile()) { + + try { + Files.write(filepath, temp, StandardOpenOption.APPEND); + } catch (IOException e) { + log.severe(e.toString()); + } + } + return Arrays.copyOf(cbuf, nbbyteread); + } else { + log.severe("Connection not open, return null"); + return null; } - - return Arrays.copyOf(cbuf, nbbyteread); } @Deprecated - public int receiveData (byte[] cbuf) - { + public int receiveData(byte[] cbuf) { try { return in.read(cbuf); } catch (IOException e) { log.log(Level.SEVERE, "Error Read data " + e.toString()); - try { in.close(); } catch (IOException e1) { @@ -103,47 +168,44 @@ public class SoundModemClient { } } return 0; - + } - - - - @Deprecated - public AX25Frame decode (byte[] frame ,int nb) - { + @Deprecated + public AX25Frame decode(byte[] frame, int nb) { - KissFrame kf=new KissFrame(); + KissFrame kf = new KissFrame(); KissData kissData = kf.extactMessage(frame, nb); // if (type==kf.AX25) // { - AX25Frame ax= new AX25Frame(); - ax.decodeAX25Frame(kissData.getData(), kissData.getSize()); + AX25Frame ax = new AX25Frame(); + ax.decodeAX25Frame(kissData.getData(), kissData.getSize()); // } - System.out.println(kissData.toString()); - System.out.println(ax.toString()); - return ax; - + System.out.println(kissData.toString()); + System.out.println(ax.toString()); + return ax; + } - - public void close() - { + public void close() { try { in.close(); } catch (IOException e1) { log.log(Level.SEVERE, "Closing " + e1.toString()); } } - - public boolean isOpen() { return open; } + public byte[] receivedRawData() { - byte[] temp = receivedKissData(); + byte[] temp = receivedKissData(); + if (temp != null) + { + + kiss k = new kiss(temp); try { temp = k.toRaw(); @@ -151,11 +213,14 @@ public class SoundModemClient { log.log(Level.SEVERE, "Extract Raw data " + e.toString()); } return temp; + + } + else + { + log.severe("Buffer read null, return null"); + return null; + } + } - - - - } - diff --git a/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemConfiguration.java b/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemConfiguration.java index 78595b947c92ead064591f2113b7b96c2ec9b2f4..9d7f68363695f3e08929899d2a7be35feee6c148 100644 --- a/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemConfiguration.java +++ b/ModuleSoundModem/src/main/java/org/josast/ModuleSoundModem/SoundModemConfiguration.java @@ -13,50 +13,108 @@ public class SoundModemConfiguration extends ConfigObject { private Logger log = Logger.getLogger(getClass().getName()); - private String IPadress = "localhost"; - private int port = 8100; + private String smIPadress = "localhost"; + private int smPort = 8100; + private boolean smGenerateBinarieFile = false; + private String smBinarieOutputFile = "soundmodem.bin"; + private String smBinarieOutputDirectory = "SoundModemOuput"; + private boolean smBinarieFilePrefixDate = false; + + protected CONFIG ConfigFile = CONFIG.getInstance(); public SoundModemConfiguration(String configFilename) { super(configFilename); // vérifie si la propriété est dans le fichier - String temp = ConfigFile.GetProperty("IPadress"); + String temp = ConfigFile.GetProperty("smIPadress"); if (temp == null) { // config file not initialised - ConfigFile.SetProperty("IPadress", IPadress); - ConfigFile.SetProperty("port", "" + port); + initialisePropertiesFile(); log.severe("properties file not initialised - a file is created with properties with defaults value"); System.out.println("config file does not content required properties \n the file " + configFilename + " has been set up with properties to configure"); } else { - IPadress = temp; - String portString = ConfigFile.GetProperty("port"); - port = Integer.parseInt(portString); + initialiseFromProperties(); } + } + + private void initialisePropertiesFile() { + ConfigFile.SetProperty("smIPadress", smIPadress); + ConfigFile.SetProperty("smPort", "" + smPort); + ConfigFile.SetProperty("smGenerateBinarieFile",""+smGenerateBinarieFile); + ConfigFile.SetProperty("smBinarieOutputFile",smBinarieOutputFile); + ConfigFile.SetProperty("smBinarieOutputFile",smBinarieOutputDirectory); + ConfigFile.SetProperty("smBinarieFilePrefixDate",""+smBinarieFilePrefixDate); + + } + + private void initialiseFromProperties() + { + smIPadress = ConfigFile.GetProperty("smIPadress"); + smPort = Integer.parseInt(ConfigFile.GetProperty("smPort")); + smGenerateBinarieFile = Boolean.parseBoolean(ConfigFile.GetProperty("smGenerateBinarieFile")); + smBinarieOutputFile = ConfigFile.GetProperty("smBinarieOutputFile"); + smBinarieOutputDirectory = ConfigFile.GetProperty("smBinarieOutputDirectory"); + smBinarieFilePrefixDate = Boolean.parseBoolean(ConfigFile.GetProperty("smBinarieFilePrefixDate")); + + } - public String getIPadress() { - return IPadress; + public String getSmIPadress() { + return smIPadress; } - public void setIPadress(String iPadress) { - IPadress = iPadress; + public void setSmIPadress(String iPadress) { + smIPadress = iPadress; } - public int getPort() { - return port; + public int getSmPort() { + return smPort; } - public void setPort(int port) { - this.port = port; + public void setSmPort(int port) { + this.smPort = port; } public String toString() { - return IPadress + ":" + port; + return smIPadress + ":" + smPort; + } + + public boolean isSmGenerateBinarieFile() { + return smGenerateBinarieFile; + } + + public void setSmGenerateBinarieFile(boolean smGenerateBinarieFile) { + this.smGenerateBinarieFile = smGenerateBinarieFile; + } + + public String getSmBinarieOutputFile() { + return smBinarieOutputFile; + } + + public void setSmBinarieOutputFile(String smBinarieOutputFile) { + this.smBinarieOutputFile = smBinarieOutputFile; } + public boolean isSmBinarieFilePrefixDate() { + return smBinarieFilePrefixDate; + } + + public void setSmBinarieFilePrefixDate(boolean smBinarieFilePrefixDate) { + this.smBinarieFilePrefixDate = smBinarieFilePrefixDate; + } + + public String getSmBinarieOutputDirectory() { + return smBinarieOutputDirectory; + } + + public void setSmBinarieOutputDirectory(String smBinarieOutputDirectory) { + this.smBinarieOutputDirectory = smBinarieOutputDirectory; + } + + }