EmbeddedMontiArc issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/-/issues2019-08-29T14:00:50+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/22Fix: create folder before writting files in generate method2019-08-29T14:00:50+02:00Alexander David HellwigFix: create folder before writting files in generate methode.g.
```java
File directory = new File(generationTargetPath);
directory.mkdirs();
```e.g.
```java
File directory = new File(generationTargetPath);
directory.mkdirs();
```https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/21Tag parsing2019-08-29T20:23:01+02:00Alexander David HellwigTag parsingCreate a parser that can read .tag files and turn them into MQTTConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/mqtt](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiA...Create a parser that can read .tag files and turn them into MQTTConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/mqtt](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/tree/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware):
- [x] Add a MQTTConnectionsSymbolCreator similar to [RosConnectionSymbolCreator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosConnectionSymbolCreator.java)
- Goal: Read a .tag file, convert it into MQTTConnectionSymbols and add them the specified EMAPortSymbol or EMAPortInstanceSymbol. MontiCore/EmbeddedMontiArc automatically reads the file reading and preprocesses the data. Therefore you only need to implement a `TagSymbolCreator`
- [x] There should be no references to Ros in the new SymbolCreator. The main regex can be found in line 50.
- Online java regex checker: `http://www.regexplanet.com/advanced/java/index.html`
- [x] Add a MQTTTagSchema similar to [RosToEmamTagSchema](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosToEmamTagSchema.java)
- [x] Add a Testcase similar to [test/.../middleware/ros/TaggingTest](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/middleware/ros/TaggingTest.java).
- [x] you will need to add your Tag Schema to the tagging resolver here: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/AbstractTaggingResolverTest.java#L56
## EMAM2Middleware
Here we are waiting for the merge request (https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/merge_requests/18) to proceed
- [x] pom.xml: Update the EmbeddedMontiArc dependency to the Version with your parser
- [x] DestributedTargetGeneratorCLI
- [x] resolve all MQTTConnectionSymbols from the Symbol table. Example for ros: [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L167)
- [x] the actual resolving is implemented [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/java/de/monticore/lang/monticar/generator/roscpp/helper/TagHelper.java#L20) in RosCpp, you can choose in which Project you want to implement it.
- [x] Previous test case
- [x] Adapt: Don't hand add the MQTTConnectionSymbols, build a .tag file, use your TagHelper(or equivalent) to resolve the MQTTConnectionSymbols
- Example for Ros: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L60 and line 64Georg VinogradovJannis Joachim TölleMike GrüneGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/23Tag parsing2019-09-29T23:47:40+02:00Alexander David HellwigTag parsingCreate a parser that can read .tag files and turn them into SomeIPConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/someip](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMo...Create a parser that can read .tag files and turn them into SomeIPConnectionSymbols
# Deliverables
## EmbeddedMontiArc Project
In [.../tagging/middleware/someip](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/tree/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware):
- [x] Add a SomeIPConnectionsSymbolCreator similar to [RosConnectionSymbolCreator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosConnectionSymbolCreator.java)
- Goal: Read a .tag file, convert it into SomeIPConnectionSymbols and add them the specified EMAPortSymbol or EMAPortInstanceSymbol. MontiCore/EmbeddedMontiArc automatically reads the file reading and preprocesses the data. Therefore you only need to implement a `TagSymbolCreator`
- [x] There should be no references to Ros in the new SymbolCreator. The main regex can be found in line 50.
- Online java regex checker: `http://www.regexplanet.com/advanced/java/index.html`
- [x] Add a SomeIPTagSchema similar to [RosToEmamTagSchema](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/main/java/de/monticore/lang/embeddedmontiarc/tagging/middleware/ros/RosToEmamTagSchema.java)
- [x] Add a Testcase similar to [test/.../middleware/ros/TaggingTest](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/middleware/ros/TaggingTest.java).
- [x] you will need to add your Tag Schema to the tagging resolver here: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc/blob/master/src/test/java/de/monticore/lang/embeddedmontiarc/AbstractTaggingResolverTest.java#L56
## EMAM2Middleware
- [x] pom.xml: Update the EmbeddedMontiArc dependency to the Version with your parser
- [x] DestributedTargetGeneratorCLI
- [x] resolve all SomeIPConnectionSymbols from the Symbol table. Example for ros: [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java#L167)
- [x] the actual resolving is implemented [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/src/main/java/de/monticore/lang/monticar/generator/roscpp/helper/TagHelper.java#L20) in RosCpp, you can choose in which Project you want to implement it.
- [x] Previous test case
- [x] Adapt: Don't hand add the SomeIPConnectionSymbols, build a .tag file, use your TagHelper(or equivalent) to resolve the SomeIPConnectionSymbols
- Example for Ros: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/java/de/monticore/lang/monticar/generator/middleware/Ros2GenerationTest.java#L60 and line 64https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/22Add support for more Port types2019-08-29T20:23:01+02:00Alexander David HellwigAdd support for more Port types# Goal
Until now we assumed that each Port has the type Q, but EMAM supports other basic types:
- Q for rational numbers, converted to double
- N for natural numbers, converted to int
- Z for whole numbers, also converted to int
- B for ...# Goal
Until now we assumed that each Port has the type Q, but EMAM supports other basic types:
- Q for rational numbers, converted to double
- N for natural numbers, converted to int
- Z for whole numbers, also converted to int
- B for boolean values, converted to bool
- (C for complex, you can ignore this)
You can get the Type-String of a port with `port.getTypeReference().getName()`.
Example code in Freemarker:
```freemarker
<#list model.getOutgoingPorts() as port>
<#switch port.getTypeReference().getName()>
<#case "Q">
// double
<#break>
<#case "N">
//int
<#break>
<#case "Z">
//int
<#break>
<#default>
//error
</#switch>
</#list>
```
## Suggestion
Write/parse the values in standard String form
- Q -> 1.5
- N -> 1
- Z -> -1
- B -> false
### Alternative
You can convert the whole number types(Z,N) by rounding a double:
```C++
//Subscriber
*port_ = (int) round(value);
//Publisher
string value = to_string(1.0 * component->${pub.getName()});
```
Make sure that the pointer to port_ has the right type(int* in this case)
You can convert the boolean type(B) by checking a threshold:
```C++
//Subscriber
*port_ = (value > 1.0e-10);
//Publisher
string value = to_string(component->${pub.getName()} ? 1.0 : 0.0);
```
Make sure that the pointer to port_ has the right type(bool* in this case)
Alternative:
## Deliverables
Adapt your templates, so that all generated publish and callback methods support the Port Types Q, B, Z, and N.
You might have to generated multiple Callback classes(e.g. CallbackQ.cpp/.hpp, CallbackN.cpp/.hpp,...) or think of an other approach.Georg VinogradovJannis Joachim TölleMike GrüneGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/24Add support for more Port types2019-09-23T02:17:09+02:00Alexander David HellwigAdd support for more Port types# Goal
Until now we assumed that each Port has the type Q, but EMAM supports other basic types:
- Q for rational numbers, converted to double
- N for natural numbers, converted to int
- Z for whole numbers, also converted to int
- B for ...# Goal
Until now we assumed that each Port has the type Q, but EMAM supports other basic types:
- Q for rational numbers, converted to double
- N for natural numbers, converted to int
- Z for whole numbers, also converted to int
- B for boolean values, converted to bool
- (C for complex, you can ignore this)
You can get the Type-String of a port with `port.getTypeReference().getName()`.
Example code in Freemarker:
```freemarker
<#list model.getOutgoingPorts() as port>
<#switch port.getTypeReference().getName()>
<#case "Q">
// double
<#break>
<#case "N">
//int
<#break>
<#case "Z">
//int
<#break>
<#default>
//error
</#switch>
</#list>
```
## Suggestion
You can convert the whole number types(Z,N) by rounding a double:
```C++
//Subscriber
#include <math.h>
[...]
component->in1 = (int) round(dataFromMessage);
//Publisher
[...]
//Read data from component
double d = 1.0 * component->out1;
[...]
```
You can convert the boolean type(B) by checking a threshold:
```C++
//Subscriber
[...]
component->in1 = (dataFromMessage > 1.0e-10);
//Publisher
[...]
//Read data from component
double d = component->out1 ? 1.0 : 0.0;
[...]
```
Alternative:
Write and read the `byteArray` of the payload manually without conversions of doubles
## Deliverables
Adapt your templates, so that all generated publish and callback methods support the Port Types Q, B, Z, and N.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/25Prepare for hand in2019-09-30T00:22:18+02:00Alexander David HellwigPrepare for hand inThings that should be done before hand in:
- merge all code into the master branch of the original projects
- provide a (lightweight) documentation in the readme files of the projects. It should give other Students an idea on:
- how t...Things that should be done before hand in:
- merge all code into the master branch of the original projects
- provide a (lightweight) documentation in the readme files of the projects. It should give other Students an idea on:
- how to install(linux or windows or docker) the project and its dependencies
- how to use your project
- where it is located in relation to other projects
- link 1 or 2 test cases that demonstrate the main features of the project(if available)
- you can always link to external documentation
- keep it briefhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/23Prepare for hand in2019-10-14T14:20:31+02:00Alexander David HellwigPrepare for hand inThings that should be done before hand in:
- merge all code into the master branch of the original projects
- provide a (lightweight) documentation in the readme files of the projects. It should give other Students an idea on:
- how t...Things that should be done before hand in:
- merge all code into the master branch of the original projects
- provide a (lightweight) documentation in the readme files of the projects. It should give other Students an idea on:
- how to install(linux or windows or docker) the project and its dependencies
- how to use your project
- where it is located in relation to other projects
- link 1 or 2 test cases that demonstrate the main features of the project(if available)
- you can always link to external documentation
- keep it briefGeorg VinogradovJannis Joachim TölleMike GrüneGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/24Feedback2019-09-28T11:12:25+02:00Alexander David HellwigFeedback- [x] Link to MQTT documentation
- [x] add note to start broker e.g.`sudo /etc/init.d/mosquitto start` to documentation
- [x] Document usage of .tag files, small example, available fields and their meaning
- [x] remove msgField from MQTT...- [x] Link to MQTT documentation
- [x] add note to start broker e.g.`sudo /etc/init.d/mosquitto start` to documentation
- [x] Document usage of .tag files, small example, available fields and their meaning
- [x] remove msgField from MQTTConnectionSymbol, Examples
- [x] Create small test with all supported data-types in EMAM2Middleware(with .tag file)
- [x] In generator: Use new class (A) to encapsulate File and content of file, instead of two Lists.
- [x] In generator: Use createFile for Callbacks or move createFile to the new class (A)
- [x] In generator: Line 37: don't override all middleware symbols with empty MqttConnectionSymbols
- [ ] Merge everything into master brancheshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/26Feedback2019-09-30T14:48:43+02:00Alexander David HellwigFeedback- [x] Link to someIp documentation
- [x] Document usage of example
- [x] Document usage of .tag files, small example, available fields and their meaning
- [x] Create small test with all supported data-types in EMAM2Middleware(with .tag f...- [x] Link to someIp documentation
- [x] Document usage of example
- [x] Document usage of .tag files, small example, available fields and their meaning
- [x] Create small test with all supported data-types in EMAM2Middleware(with .tag file)
- [x] In generator: Use new class (A) to encapsulate File and content of file, instead of two Lists.
- [x] In generator: create and use a utility function to write the files to disk(or use something like apacheCommonsIO [writeFile](https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html#write(java.io.File,%20java.lang.CharSequence,%20java.nio.charset.Charset)))
- [x] Merge everything into master brancheshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosMsg/-/issues/2Failing test2019-10-19T19:46:40+02:00Alexander David HellwigFailing testAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/34extends the commands with ceil function2020-01-01T09:33:18+01:00Ahmed Diabextends the commands with ceil functionAhmed DiabAhmed Diabhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/35extends the commands with min/max function2020-07-02T19:30:42+02:00Ahmed Diabextends the commands with min/max functionhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/15Weights as Dependencies2020-10-29T16:20:54+01:00Evgeny KusmenkoWeights as DependenciesThe goal is to be able to publish trained weights as archives (e.g. JARs)
and to use them as maven dependencies in order to skip training.
First step: define archive structure for Gluon ArchivesThe goal is to be able to publish trained weights as archives (e.g. JARs)
and to use them as maven dependencies in order to skip training.
First step: define archive structure for Gluon ArchivesYuyuan LiuYuyuan Liu2020-01-15https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/36add new addParameter to method class2020-01-05T21:29:54+01:00Ahmed Diabadd new addParameter to method classextends the Method class to a new addParameter function.extends the Method class to a new addParameter function.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/37add erode and dilate commands from OpenCV2020-01-05T21:31:31+01:00Ahmed Diabadd erode and dilate commands from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/38add gaussianBlur command from OpenCV2020-01-05T21:30:45+01:00Ahmed Diabadd gaussianBlur command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/39add cvtColor Command from OpenCV2020-01-05T21:28:57+01:00Ahmed Diabadd cvtColor Command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/40add inRange command from OpenCV2020-01-05T21:28:27+01:00Ahmed Diabadd inRange command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/41add threshold command from OpenCV2020-03-20T09:13:51+01:00Ahmed Diabadd threshold command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/42add findContours command from OpenCV2020-01-05T21:27:32+01:00Ahmed Diabadd findContours command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenko