generators issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/generators/-/issues2020-01-05T21:31:31+01:00https://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/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/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/42add findContours command from OpenCV2020-01-05T21:27:32+01:00Ahmed Diabadd findContours command from OpenCVEvgeny KusmenkoAhmed DiabEvgeny Kusmenkohttps://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/EMAM2RosMsg/-/issues/2Failing test2019-10-19T19:46:40+02:00Alexander David HellwigFailing testAlexander David HellwigAlexander David Hellwighttps://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/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/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/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/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/cnnarch2x/-/issues/2Padding type2019-09-26T14:00:01+02:00Evgeny KusmenkoPadding typePadding is defined to be a string in the readme, but is actually a list of ints in the implementation.
both should be possiblePadding is defined to be a string in the readme, but is actually a list of ints in the implementation.
both should be possibleJulian Johannes Steinsberger-DührßenBo PengTim Benjamin SchuppJulian Johannes Steinsberger-Dührßenhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/-/issues/18Fix Subscribers/Publishers(SomeIP)2019-09-23T08:36:50+02:00Alexander David HellwigFix Subscribers/Publishers(SomeIP)- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the SomeIPConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `someIPIn`(from [here](https://git.rwth...- make sure that the value published to/(read from) your middleware is read from/(written to) the Port the SomeIPConnectionSymbol is attached to
- Subscriber
- use variable port name instead of `someIPIn`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/blob/master/src/main/resources/de/monticore/lang/monticar/generator/someip/template/Adapter.cpp.ftl#L50))
- it must be possible to write to more than one port, since a SomeIPConnectionSymbol could be added to each incomming Port. You might need to create multiple callback methods in the Adapter.
- Publisher
- use variable port name instead of `someIPOut`(from [here](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2someip/blob/master/src/main/resources/de/monticore/lang/monticar/generator/someip/template/Adapter.cpp.ftl#L61)). You will need to generate multiple publish methods.https://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/EMAM2Middleware/-/issues/33Failing EMADL Tests2019-09-04T21:13:34+02:00Alexander David HellwigFailing EMADL TestsThe tests
- de.monticore.lang.monticar.generator.middleware.CliTest#testEMADLAndRosGenerator
- de.monticore.lang.monticar.generator.middleware.CliTest#testSingleEMADLGenerator
- de.monticore.lang.monticar.generator.middleware.CliTest#tes...The tests
- de.monticore.lang.monticar.generator.middleware.CliTest#testEMADLAndRosGenerator
- de.monticore.lang.monticar.generator.middleware.CliTest#testSingleEMADLGenerator
- de.monticore.lang.monticar.generator.middleware.CliTest#testEMADLConfigFile
- de.monticore.lang.monticar.generator.middleware.GenerationTest#testEMADLMiddlewareGeneration
are all failing.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/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/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();
```