RagConnect issueshttps://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues2023-07-24T15:04:21+02:00https://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/62Add options to connect methods2023-07-24T15:04:21+02:00René SchöneAdd options to connect methodsCommunication protocols might need options, that need to be set but cannot be encoded in the URI, e.g., credentials.
One such option is already present for send ports: The decision, whether to send the current value.
It would be nice to...Communication protocols might need options, that need to be set but cannot be encoded in the URI, e.g., credentials.
One such option is already present for send ports: The decision, whether to send the current value.
It would be nice to have a dedicated object to set protocol-specific options. For this, newly generated nonterminals could be used.
A grammar could look like:
```
ConnectionOption ;
MqttConnectionOption : ConnectionOption ::= <UserName> <Password> <QoS> ;
RestClientConnectionOption : ConnectionOption ::= <CacheDuration:int> ;
```
Ideally, one separates options only valid for receiving, and others only valid for sending. However, this creates another inheritance hierarchy (one for protocol, and one for receiving/sending). Since this grammar is generated, duplication is handled by RagConnect.
A generated grammar could then look like:
```
ReceiveConnectionOption ;
SendConnectionOption ::= <SendCurrentValue:boolean> ;
ReceiveMqttConnectionOption : ReceiveConnectionOption ::= <UserName> <Password> ;
SendMqttConnectionOption : SendConnectionOption ::= <UserName> <Password> <QoS> ;
ReceiveRestClientConnectionOption : ReceiveConnectionOption ::= <CacheDuration:int> ;
SendRestClientConnectionOption : SendConnectionOption ::= ;
```
The API would change to something like:
```java
// for receiving:
boolean A.connectId(String uri, ReceiveConnectionOption option);
// for sending:
boolean A.connectId(String uri, SendConnectionOption option);
// probably add the following backwards compatible methods
boolean A.connectId(String uri) {
return connectId(uri, createReceiveOptionFor(uri));
}
boolean A.connectId(String uri, boolean sendCurrentValue) {
return connectId(uri, createSendOptionFor(uri).setSendCurrentValue(sendCurrentValue));
}
```
If only one protocol is selected, the option class in the method signature could also be directly that of the selected protocol.
An open question is how to specify the options conveniently for protocol maintainers.https://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/55Add option to skip generate of default (tree) mappings2022-09-06T12:28:37+02:00René SchöneAdd option to skip generate of default (tree) mappingsSometimes it may be unnecessary to generate the default mappings for subtrees, especially if they are not used but still require additional dependencies (jackson).
Idea: add a new flag, e.g., `--skipDefaultTreeMappings` to not generate ...Sometimes it may be unnecessary to generate the default mappings for subtrees, especially if they are not used but still require additional dependencies (jackson).
Idea: add a new flag, e.g., `--skipDefaultTreeMappings` to not generate them.
Check that warnings (about type mismatches) still work.https://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/54ROS Backend2023-07-24T15:04:13+02:00Sebastian EbertROS BackendSebastian EbertSebastian Eberthttps://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/30Make current value available in transformations2021-12-02T10:30:55+01:00René SchöneMake current value available in transformationsIt would sometimes be nice to have the current value available in a mapping/transformationIt would sometimes be nice to have the current value available in a mapping/transformationhttps://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/15Multiple (potential) root nodes2021-05-07T13:04:23+02:00Johannes MeyMultiple (potential) root nodesIn some grammars, there are multiple (potential) root nodes, though I think this is also only partly supported by JastAdd. In ragconnect, you can only specify one.In some grammars, there are multiple (potential) root nodes, though I think this is also only partly supported by JastAdd. In ragconnect, you can only specify one.https://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/issues/11Extension: rosbridge2021-06-07T18:07:00+02:00René SchöneExtension: rosbridgeNew communication protocol [rosbridge](http://wiki.ros.org/rosbridge_suite), see also [rosbridge protocol](https://github.com/RobotWebTools/rosbridge_suite/blob/groovy-devel/ROSBRIDGE_PROTOCOL.md).
According to [the extension guidelines...New communication protocol [rosbridge](http://wiki.ros.org/rosbridge_suite), see also [rosbridge protocol](https://github.com/RobotWebTools/rosbridge_suite/blob/groovy-devel/ROSBRIDGE_PROTOCOL.md).
According to [the extension guidelines](https://git-st.inf.tu-dresden.de/jastadd/ragconnect/-/wikis/extending), the following information are known:
- handler: `RosbridgeHandler`
- URI scheme: `rosbridge://`
For receive endpoints, the following actions should (probably) be taken:
- as consumer, send a [subscribe message](https://github.com/RobotWebTools/rosbridge_suite/blob/groovy-devel/ROSBRIDGE_PROTOCOL.md#344-subscribe)
- the "type" must be inferred from the token type - but what are the available types in rosbridge?
- here it is unknown, what values to use for "throttle_rate" and "queue_length", maybe the defaults are fine for now
For send endpoints, the following actions should (probably) be taken:
- upon connect, send an [advertise message](https://github.com/RobotWebTools/rosbridge_suite/blob/groovy-devel/ROSBRIDGE_PROTOCOL.md#341-advertise--advertise-)
- as runnable, send a [publish message](https://github.com/RobotWebTools/rosbridge_suite/blob/groovy-devel/ROSBRIDGE_PROTOCOL.md#343-publish--publish-)