From c77de0039f426f98636789706a5d8903bb998659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anian=20B=C3=BChler?= <anian.buehler@reutlingen-university.de> Date: Tue, 17 Aug 2021 16:49:14 +0200 Subject: [PATCH] updated psn-blocks --- .../block/communication/PsnCallbackBlock.java | 22 +++++++++++ .../block/communication/PsnClientBlock.java | 10 ++--- .../block/communication/PsnPublishBlock.java | 2 +- .../block/communication/PsnServerBlock.java | 8 ++-- .../communication/PsnSubscribeBlock.java | 2 +- .../communication/PsnUnsubscribeBlock.java | 31 +++++++++++++++ .../com/ardublock/block/ardublock.properties | 6 ++- .../com/ardublock/block/ardublock.xml | 39 ++++++++++++------- .../ardublock/block/ardublock_de.properties | 20 +++++----- .../ardublock/block/block-mapping.properties | 1 + 10 files changed, 104 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/ardublock/translator/block/communication/PsnUnsubscribeBlock.java diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnCallbackBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnCallbackBlock.java index 3cf613c..8c733a8 100644 --- a/src/main/java/com/ardublock/translator/block/communication/PsnCallbackBlock.java +++ b/src/main/java/com/ardublock/translator/block/communication/PsnCallbackBlock.java @@ -46,6 +46,27 @@ public class PsnCallbackBlock extends TranslatorBlock dataLenVar = tb_dataLenVar.toCode().replaceAll("\\s*_.new\\b\\s*", ""); if (tb_topicVar instanceof LocalVariableStringBlock && tb_topicLenVar instanceof LocalVariableNumberBlock && tb_dataVar instanceof LocalVariableStringBlock && tb_dataLenVar instanceof LocalVariableNumberBlock) { + translator.addDefinitionCommand("void " + callbackName + "(char*, int, char*, int);\n"); + ret += "void " + callbackName + "(char* "+ topicVar +", int "+ topicLenVar +", char* "+ dataVar +", int "+ dataLenVar +" ){\n"; + + while (tb_code != null) + { + ret += tb_code.toCode(); + tb_code = tb_code.nextTranslatorBlock(); + } + ret += "}\n\n"; + } + else{ + throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.local_var_slot")); + } + + + return ret; + } +} + +/* + * if (tb_topicVar instanceof LocalVariableStringBlock && tb_topicLenVar instanceof LocalVariableNumberBlock && tb_dataVar instanceof LocalVariableStringBlock && tb_dataLenVar instanceof LocalVariableNumberBlock) { translator.addDefinitionCommand("void " + callbackName + "(char*, int, char*, int);\n"); ret += "void " + callbackName + "(char* _topic, int _topicLength, char* _data , int _dataLength ){\n"; ret += "char " + topicVar +"[_topicLength+1] = \"\";\n"; @@ -72,3 +93,4 @@ public class PsnCallbackBlock extends TranslatorBlock return ret; } } + * */ diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnClientBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnClientBlock.java index f9908d6..6119958 100644 --- a/src/main/java/com/ardublock/translator/block/communication/PsnClientBlock.java +++ b/src/main/java/com/ardublock/translator/block/communication/PsnClientBlock.java @@ -16,10 +16,10 @@ public class PsnClientBlock extends TranslatorBlock public String toCode() throws SocketNullException, SubroutineNotDeclaredException { - String serialName = "psnSerial"; + String serialName = "sSerial"; String pubSubName = ""; String callbackName = ""; - String pubSubType = "simplePSNetClient"; + String pubSubType = "didacticPSNetClient"; TranslatorBlock psnName = this.getRequiredTranslatorBlockAtSocket(0);//Name @@ -30,16 +30,14 @@ public class PsnClientBlock extends TranslatorBlock pubSubName = psnName.toCode().replaceAll("\\s*_.new\\b\\s*\"", "").replaceAll("\"", ""); callbackName = cbName.toCode().replaceAll("\\s*_.new\\b\\s*\"", "").replaceAll("\"", ""); - translator.addHeaderFile("simplePSNet.h"); + translator.addHeaderFile("didacticNet.h"); translator.addHeaderFile("SoftwareSerial.h"); translator.addDefinitionCommand(pubSubType + " " +pubSubName+";\n"); translator.addDefinitionCommand("SoftwareSerial " + serialName+"(" + rxPin.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ txPin.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n"); translator.addSetupCommand(serialName+".begin(2400);"); - translator.addSetupCommand(pubSubName + ".setStream(" + serialName + ");\n"); - translator.addSetupCommand(pubSubName + ".setCallback(" + callbackName + ");\n"); - + translator.addSetupCommand(pubSubName + ".begin(" + serialName +", "+ callbackName +");\n"); return ""; } } diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnPublishBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnPublishBlock.java index f257518..4090057 100644 --- a/src/main/java/com/ardublock/translator/block/communication/PsnPublishBlock.java +++ b/src/main/java/com/ardublock/translator/block/communication/PsnPublishBlock.java @@ -33,6 +33,6 @@ public class PsnPublishBlock extends TranslatorBlock data = data.replaceAll("\"", ""); } - return name + ".publish("+topic+", strlen("+topic+"), "+data+", strlen("+data+"));"; + return name + ".publish("+topic+", "+data+");"; } } diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnServerBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnServerBlock.java index f9baf38..4e2f957 100644 --- a/src/main/java/com/ardublock/translator/block/communication/PsnServerBlock.java +++ b/src/main/java/com/ardublock/translator/block/communication/PsnServerBlock.java @@ -15,9 +15,9 @@ public class PsnServerBlock extends TranslatorBlock @Override public String toCode() throws SocketNullException, SubroutineNotDeclaredException { - String serialName = "psnSerial"; + String serialName = "sSerial"; String pubSubName = ""; - String pubSubType = "simplePSNetServer"; + String pubSubType = "didacticPSNetBroker"; TranslatorBlock psnName = this.getRequiredTranslatorBlockAtSocket(0);//Name TranslatorBlock rxPin = this.getRequiredTranslatorBlockAtSocket(1);//Pin Rx @@ -25,14 +25,14 @@ public class PsnServerBlock extends TranslatorBlock pubSubName = psnName.toCode().replaceAll("\\s*_.new\\b\\s*", "").replaceAll("\"", ""); - translator.addHeaderFile("simplePSNet.h"); + translator.addHeaderFile("didacticNet.h"); translator.addHeaderFile("SoftwareSerial.h"); translator.addDefinitionCommand(pubSubType + " " +pubSubName+";\n"); translator.addDefinitionCommand("SoftwareSerial " + serialName+"(" + rxPin.toCode().replaceAll("\\s*_.new\\b\\s*", "") + ", "+ txPin.toCode().replaceAll("\\s*_.new\\b\\s*", "") +");\n"); translator.addSetupCommand(serialName+".begin(2400);"); - translator.addSetupCommand(pubSubName + ".setStream(" + serialName + ");\n"); + translator.addSetupCommand(pubSubName + ".begin(" + serialName + ");\n"); return ""; } diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnSubscribeBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnSubscribeBlock.java index e60193c..5358773 100644 --- a/src/main/java/com/ardublock/translator/block/communication/PsnSubscribeBlock.java +++ b/src/main/java/com/ardublock/translator/block/communication/PsnSubscribeBlock.java @@ -26,6 +26,6 @@ public class PsnSubscribeBlock extends TranslatorBlock topic = topic.replaceAll("\"", ""); } - return name + ".subscribe("+topic+", strlen("+topic+"));"; + return name + ".subscribe("+topic+");"; } } diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnUnsubscribeBlock.java b/src/main/java/com/ardublock/translator/block/communication/PsnUnsubscribeBlock.java new file mode 100644 index 0000000..ea939ac --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/communication/PsnUnsubscribeBlock.java @@ -0,0 +1,31 @@ +package com.ardublock.translator.block.communication; + +import com.ardublock.translator.Translator; +import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.SocketNullException; +import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; +import com.ardublock.translator.block.numbers.StringBlock; + +public class PsnUnsubscribeBlock extends TranslatorBlock +{ + public PsnUnsubscribeBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) + { + super(blockId, translator, codePrefix, codeSuffix, label); + } + + @Override + public String toCode() throws SocketNullException, SubroutineNotDeclaredException + { + TranslatorBlock tb_name = getRequiredTranslatorBlockAtSocket(0); + TranslatorBlock tb_topic = getRequiredTranslatorBlockAtSocket(1); + + String name = tb_name.toCode().replaceAll("\\s*_.new\\b\\s*\"", "").replaceAll("\"", ""); + String topic = tb_topic.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + if(!(tb_topic instanceof StringBlock)) { + topic = topic.replaceAll("\"", ""); + } + + return name + ".unsubscribe("+topic+");"; + } +} diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index 21c2e3e..1cfd35c 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -695,13 +695,14 @@ bg.tele_read_data_frame=read from Frame bg.mqtt_set_frame=set MQTT Frame bg.mqtt_read_frame=read MQTT Frame -bg.psn_server=PubSub Server +bg.psn_server=PubSub Broker bg.psn_client=PubSub Client -bg.psn_callback=PubSub_Callback +bg.psn_callback=psnClientCallback bg.psn_handle_network=PubSub handleNetwork bg.psn_data_to_send=PubSub isDataToSend? bg.psn_publish=PubSub publish bg.psn_subscribe=PubSub subscribe +bg.psn_unsubscribe=PubSub unsubscribe bg.serial_write.description=Send message via Serial @@ -737,6 +738,7 @@ bg.psn_handle_network.description=PubSub handleNetwork bg.psn_data_to_send.description=PubSub isDataToSend? bg.psn_publish.description=PubSub publish bg.psn_subscribe.description=PubSub subscribe +bg.psn_unsubscribe.description=PubSub unsubscribe bc.ps_name=name bc.callback=callback diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index f5f503f..0af7727 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -1861,7 +1861,7 @@ </text> </description> <BlockConnectors> - <BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" /> + <BlockConnector connector-type="string-inv" connector-kind="plug" position-type="mirror" /> </BlockConnectors> </BlockGenus> <BlockGenus name="local_variable_file" kind="data" initlabel="bg.local_variable_file" editable-label="yes" is-label-value="yes" color="174 0 72"> @@ -1871,7 +1871,7 @@ </text> </description> <BlockConnectors> - <BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" /> + <BlockConnector connector-type="string-inv" connector-kind="plug" position-type="mirror" /> </BlockConnectors> </BlockGenus> @@ -2311,11 +2311,11 @@ <BlockGenus name="psn_server" kind="command" color="165 42 42" initlabel="bg.psn_server"> <description> - <text>create PubSub Server</text> + <text>create PubSub Broker</text> </description> <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubServer" /> + <DefaultArg genus-name="string" label="psnBroker" /> </BlockConnector> <BlockConnector connector-type="number" connector-kind="socket" label="bc.rx_pin_number"> <DefaultArg genus-name="number" label="10" /> @@ -2331,7 +2331,7 @@ </description> <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubClient" /> + <DefaultArg genus-name="string" label="psnClient" /> </BlockConnector> <BlockConnector connector-type="number" connector-kind="socket" label="bc.rx_pin_number"> <DefaultArg genus-name="number" label="10" /> @@ -2340,7 +2340,7 @@ <DefaultArg genus-name="number" label="11" /> </BlockConnector> <BlockConnector connector-type="string" connector-kind="socket" label="bc.callback"> - <DefaultArg genus-name="string" label="PubSub_Callback" /> + <DefaultArg genus-name="string" label="clientCallback" /> </BlockConnector> </BlockConnectors> </BlockGenus> @@ -2356,13 +2356,13 @@ <DefaultArg genus-name="local_variable_string" label="topic" /> </BlockConnector> <BlockConnector connector-type="number" connector-kind="socket" label="bc.topicLengthVar"> - <DefaultArg genus-name="local_variable_number" label="topic_length" /> + <DefaultArg genus-name="local_variable_number" label="topicLength" /> </BlockConnector> <BlockConnector connector-type="string" connector-kind="socket" label="bc.payloadVar"> <DefaultArg genus-name="local_variable_string" label="data" /> </BlockConnector> <BlockConnector connector-type="number" connector-kind="socket" label="bc.payloadLengthVar"> - <DefaultArg genus-name="local_variable_number" label="data_length" /> + <DefaultArg genus-name="local_variable_number" label="dataLength" /> </BlockConnector> <BlockConnector label="bc.commands" connector-type="cmd" connector-kind="socket" /> </BlockConnectors> @@ -2370,34 +2370,44 @@ <BlockGenus name="psn_handle_network" kind="command" color="165 42 42" initlabel="bg.psn_handle_network" > <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubName" /> + <DefaultArg genus-name="string" label="psnName" /> </BlockConnector> </BlockConnectors> </BlockGenus> <BlockGenus name="psn_data_to_send" kind="command" color="165 42 42" initlabel="bg.psn_data_to_send" > <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubName" /> + <DefaultArg genus-name="string" label="psnName" /> </BlockConnector> </BlockConnectors> </BlockGenus> <BlockGenus name="psn_subscribe" kind="command" color="165 42 42" initlabel="bg.psn_subscribe" > <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubName" /> + <DefaultArg genus-name="string" label="psnName" /> </BlockConnector> <BlockConnector connector-type="string" connector-kind="socket" label="bc.topic"> - <DefaultArg genus-name="string" label="PubSubTopic" /> + <DefaultArg genus-name="string" label="subscribeTopic" /> + </BlockConnector> + </BlockConnectors> + </BlockGenus> + <BlockGenus name="psn_unsubscribe" kind="command" color="165 42 42" initlabel="bg.psn_unsubscribe" > + <BlockConnectors> + <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> + <DefaultArg genus-name="string" label="psnName" /> + </BlockConnector> + <BlockConnector connector-type="string" connector-kind="socket" label="bc.topic"> + <DefaultArg genus-name="string" label="unsubscribeTopic" /> </BlockConnector> </BlockConnectors> </BlockGenus> <BlockGenus name="psn_publish" kind="command" color="165 42 42" initlabel="bg.psn_publish" > <BlockConnectors> <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="PubSubName" /> + <DefaultArg genus-name="string" label="psnName" /> </BlockConnector> <BlockConnector connector-type="string" connector-kind="socket" label="bc.topic"> - <DefaultArg genus-name="string" label="PubSubTopic" /> + <DefaultArg genus-name="string" label="publishTopic" /> </BlockConnector> <BlockConnector connector-type="string" connector-kind="socket" label="bc.payload"> </BlockConnector> @@ -3196,6 +3206,7 @@ <BlockGenusMember>psn_publish</BlockGenusMember> <BlockGenusMember>psn_data_to_send</BlockGenusMember> <BlockGenusMember>psn_subscribe</BlockGenusMember> + <BlockGenusMember>psn_unsubscribe</BlockGenusMember> <BlockGenusMember>psn_callback</BlockGenusMember> <!--<BlockGenusMember>tele_set_frame</BlockGenusMember> diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index 6e723da..47e2f86 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -692,13 +692,14 @@ bg.tele_read_data_frame=lese Daten aus Frame bg.mqtt_set_frame=erstelle MQTT Frame bg.mqtt_read_frame=lese aus MQTT Frame -bg.psn_server=PubSub Server +bg.psn_server=PubSub Broker bg.psn_client=PubSub Client -bg.psn_callback=PubSub_Callback +bg.psn_callback=psnClientCallback bg.psn_handle_network=PubSub handleNetwork bg.psn_data_to_send=PubSub isDataToSend? bg.psn_publish=PubSub publish bg.psn_subscribe=PubSub subscribe +bg.psn_unsubscribe=PubSub unsubscribe bg.serial_write.description=Sende Nachricht via Serial bg.serial_print.description=Sende Nachricht via Serial @@ -726,13 +727,14 @@ bg.tele_read_data_frame.description=lese Daten aus dem Telegramm-Rahmen\n HINWEI bg.mqtt_set_frame.description=schreibe Daten in MQTT-Rahmen\n(letsgoING-IOT-Modul) bg.mqtt_read_frame.description=lese Daten aus MQTT-Rahmen\n(letsgoING-IOT-Modul) -bg.psn_server.description=PubSub Server -bg.psn_client.description=PubSub Client -bg.psn_callback.description=PubSub_Callback -bg.psn_handle_network.description=PubSub handleNetwork -bg.psn_data_to_send.description=PubSub isDataToSend? -bg.psn_publish.description=PubSub publish -bg.psn_subscribe.description=PubSub subscribe +bg.psn_server.description=Broker fuer PubSub Netzwerk erzeugen +bg.psn_client.description=Client fuer PubSub Netzwerk erzeugen +bg.psn_callback.description=Funktion wird automatisch aufgefufen wenn neue Daten empfangen werden +bg.psn_handle_network.description=Empfaengt Daten, ueberprueft ob gesendet werden kann und versendet Daten +bg.psn_data_to_send.description=Gibt zurück ob Daten zum Versenden bereit sind +bg.psn_publish.description=Daten zu Topic veroeffentlichen +bg.psn_subscribe.description=Topic abonnieren +bg.psn_unsubscribe.description=Topic nicht mehr abonnieren bc.ps_name=Name bc.callback=Uebergabefunktion diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties index f644df6..0bc2224 100644 --- a/src/main/resources/com/ardublock/block/block-mapping.properties +++ b/src/main/resources/com/ardublock/block/block-mapping.properties @@ -255,6 +255,7 @@ psn_handle_network=com.ardublock.translator.block.communication.PsnHandleNetBloc psn_data_to_send=com.ardublock.translator.block.communication.PsnDataToSendBlock psn_publish=com.ardublock.translator.block.communication.PsnPublishBlock psn_subscribe=com.ardublock.translator.block.communication.PsnSubscribeBlock +psn_unsubscribe=com.ardublock.translator.block.communication.PsnUnsubscribeBlock #STORAGE #**************************** -- GitLab