diff --git a/src/main/java/com/ardublock/translator/block/communication/PsnSetInterval.java b/src/main/java/com/ardublock/translator/block/communication/PsnSetInterval.java new file mode 100644 index 0000000000000000000000000000000000000000..39f2196f74e9b3e3225307686d3d6b3162da5f2d --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/communication/PsnSetInterval.java @@ -0,0 +1,35 @@ +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 PsnSetInterval extends TranslatorBlock +{ + public PsnSetInterval(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) + { + super(blockId, translator, codePrefix, codeSuffix, label); + } + + @Override + public String toCode() throws SocketNullException, SubroutineNotDeclaredException + { + + //Label autoText set in edu.mit.blocks.renderable.BlockLabel -> generateLabelText() + String name = label.trim(); + if(name.contains(" ")) { + name = name.substring(0, name.indexOf(" ")); + } + + TranslatorBlock tb_interval = getRequiredTranslatorBlockAtSocket(0); + + //String name = tb_name.toCode().replaceAll("\\s*_.new\\b\\s*\"", "").replaceAll("\"", ""); + String interval = tb_interval.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + + return name + ".setInterval("+interval+");"; + } +} diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index aa8012a55253cc33b07c74963a8dcb64b323288b..1e631fec1e0058d6d8671ca977cd1ce17a775a2a 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -777,25 +777,28 @@ bg.didacticnetworkDivider1=| PubSub Network | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | +bg.didacticnetworkDivider5=| helper | -bg.psn_broker=PubSub Broker -bg.psn_client=PubSub Client +bg.psn_broker=psnName Broker +bg.psn_client=psnName Client bg.psn_callback=psnClientCallback -bg.psn_handle_network=PubSub handleNetwork -bg.psn_data_to_send=PubSub isDataToSend? -bg.psn_publish=PubSub publish +bg.psn_handle_network=psnName handleNetwork +bg.psn_data_to_send=psnName isDataToSend? +bg.psn_set_interval=psnName setInterval +bg.psn_publish=psnName publish bg.psn_publish=psnName publish bg.psn_publish_analog=psnName publish bg.psn_publish_onchange=psnName publishOnChange bg.psn_publish_onchange_bool=psnName publishOnChange -bg.psn_subscribe=PubSub subscribe -bg.psn_unsubscribe=PubSub unsubscribe - -bg.psn_broker.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_subscribe=psnName subscribe +bg.psn_unsubscribe=psnName unsubscribe + +bg.psn_broker.description=set up Server +bg.psn_client.description=set up Client +bg.psn_callback.description=PubSub-Callback +bg.psn_handle_network.description=handle PubSub Network +bg.psn_data_to_send.description=is Data ready to send? +bg.psn_set_interval.description=set minimal publish interval bg.psn_publish.description=publish Char-Array bg.psn_publish_analog.description=publish int-Data bg.psn_publish_digital.description=publish boolean-Data @@ -805,6 +808,7 @@ bg.psn_subscribe.description=PubSub subscribe bg.psn_unsubscribe.description=PubSub unsubscribe bc.ps_name=name +bc.ps_interval=ms bc.callback=callback bc.payloadVar=payload var bc.payloadLengthVar=payload length var diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index c747108d94d82384bc30a6ed2ca3eed1f4652be2..990b17437b8f9757e9e92109ca484686394f87c4 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -2380,15 +2380,13 @@ <BlockGenus name="didacticnetworkDivider2" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider2" color="150 150 150" /> <BlockGenus name="didacticnetworkDivider3" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider3" color="150 150 150" /> <BlockGenus name="didacticnetworkDivider4" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider4" color="150 150 150" /> + <BlockGenus name="didacticnetworkDivider5" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.didacticnetworkDivider4" color="150 150 150" /> <BlockGenus name="psn_broker" kind="command" color="130 27 27" initlabel="bg.psn_broker" editable-label="yes"> <description> <text>create PubSub Broker</text> </description> <BlockConnectors> - <!--<BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <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" /> </BlockConnector> @@ -2402,9 +2400,6 @@ <text>create PubSub Client</text> </description> <BlockConnectors> - <!--<BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <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" /> </BlockConnector> @@ -2440,24 +2435,18 @@ </BlockConnectors> </BlockGenus> <BlockGenus name="psn_handle_network" kind="command" color="130 27 27" initlabel="bg.psn_handle_network" editable-label="yes" > - <!--<BlockConnectors> - <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="psnName" /> - </BlockConnector> - </BlockConnectors> --> </BlockGenus> <BlockGenus name="psn_data_to_send" kind="command" color="130 27 27" initlabel="bg.psn_data_to_send" editable-label="yes"> - <!--<BlockConnectors> - <BlockConnector connector-type="string" connector-kind="socket" label="bc.ps_name"> - <DefaultArg genus-name="string" label="psnName" /> + </BlockGenus> + <BlockGenus name="psn_set_interval" kind="command" color="130 27 27" initlabel="bg.psn_set_interval" editable-label="yes"> + <BlockConnectors> + <BlockConnector connector-type="number" connector-kind="socket" label="bc.ps_interval"> + <DefaultArg genus-name="number" label="500" /> </BlockConnector> - </BlockConnectors>--> + </BlockConnectors> </BlockGenus> <BlockGenus name="psn_subscribe" kind="command" color="130 27 27" initlabel="bg.psn_subscribe" editable-label="yes"> <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="subscribeTopic" /> </BlockConnector> @@ -2465,9 +2454,6 @@ </BlockGenus> <BlockGenus name="psn_unsubscribe" kind="command" color="130 27 27" initlabel="bg.psn_unsubscribe" editable-label="yes"> <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> @@ -2475,9 +2461,6 @@ </BlockGenus> <BlockGenus name="psn_publish" kind="command" color="130 27 27" initlabel="bg.psn_publish" editable-label="yes"> <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="publishTopic" /> </BlockConnector> @@ -2503,12 +2486,8 @@ </BlockConnector> </BlockConnectors> </BlockGenus> - <!-- TODO: add publishOnChange to autoname fcn--> <BlockGenus name="psn_publish_onchange_bool" kind="command" color="130 27 27" initlabel="bg.psn_publish_onchange" editable-label="yes"> <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="publishTopic" /> </BlockConnector> @@ -2518,9 +2497,6 @@ </BlockGenus> <BlockGenus name="psn_publish_onchange" kind="command" color="130 27 27" initlabel="bg.psn_publish_onchange" editable-label="yes"> <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="publishTopic" /> </BlockConnector> @@ -3364,6 +3340,7 @@ <BlockGenusMember>psn_client</BlockGenusMember> <BlockGenusMember>psn_handle_network</BlockGenusMember> <BlockGenusMember>psn_data_to_send</BlockGenusMember> + <BlockGenusMember>psn_set_interval</BlockGenusMember> <BlockGenusMember>didacticnetworkDivider2</BlockGenusMember> <BlockGenusMember>psn_publish</BlockGenusMember> diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index 50943055780e22693696f25432ff45eaecc20c4e..ccabe380ba75a58980d621b0e865bec1ebce1340 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -771,12 +771,14 @@ bg.didacticnetworkDivider1=| PubSub Netzwerk | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | +bg.didacticnetworkDivider5=| Hilfsfunktionen | bg.psn_broker=Broker psnName bg.psn_client=Client psnName bg.psn_callback=psnClientCallback bg.psn_handle_network=psnName handleNetwork bg.psn_data_to_send=psnName isDataToSend? +bg.psn_set_interval=psnName setInterval bg.psn_publish=psnName publish bg.psn_publish_analog=psnName publish bg.psn_publish_digital=psnName publish @@ -790,6 +792,7 @@ 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_set_interval.description=Minimale Zeit zwischen zwei publish-Vorgängen bg.psn_publish.description=Zeichenkette (char[]) zu Topic veroeffentlichen bg.psn_publish_analog.description=Analoge (int) Daten zu Topic veroeffentlichen bg.psn_publish_digital.description=Digitale (bool) Daten zu Topic veroeffentlichen @@ -799,6 +802,7 @@ bg.psn_subscribe.description=Topic abonnieren bg.psn_unsubscribe.description=Topic nicht mehr abonnieren bc.ps_name=Name +bc.ps_interval=ms bc.callback=Uebergabefunktion bc.payloadVar=Nutzdaten-Variable bc.payloadLengthVar=Nutzdaten-Laenge-Variable diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties index 31d657b527b76cb9959328f311d1270a57cbf3ba..047a3f0fb484e1d11a817dc44ef49ce0072872dc 100644 --- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties +++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties @@ -772,12 +772,14 @@ bg.didacticnetworkDivider1=| PubSub Netzwerk | bg.didacticnetworkDivider2=| PubSub publish | bg.didacticnetworkDivider3=| PubSub subscribe | bg.didacticnetworkDivider4=| PubSub callback | +bg.didacticnetworkDivider5=| Hilfsfunktionen | bg.psn_broker=Broker psnName bg.psn_client=Client psnName bg.psn_callback=psnClientCallback bg.psn_handle_network=psnName handleNetwork bg.psn_data_to_send=psnName isDataToSend? +bg.psn_set_interval=PubSub setInterval bg.psn_publish=psnName publish bg.psn_publish_analog=psnName publish bg.psn_publish_digital=psnName publish @@ -791,6 +793,7 @@ 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_set_interval.description=Minimale Zeit zwischen zwei publish-Vorgängen bg.psn_publish.description=Zeichenkette (char[]) zu Topic veroeffentlichen bg.psn_publish_analog.description=Analoge (int) Daten zu Topic veroeffentlichen bg.psn_publish_digital.description=Digitale (bool) Daten zu Topic veroeffentlichen @@ -800,6 +803,7 @@ bg.psn_subscribe.description=Topic abonnieren bg.psn_unsubscribe.description=Topic nicht mehr abonnieren bc.ps_name=Name +bc.ps_interval=ms bc.callback=Uebergabefunktion bc.payloadVar=Nutzdaten-Variable bc.payloadLengthVar=Nutzdaten-Laenge-Variable diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties index 7d33c3e465bf42a4a3da384435fe5a3da00ef57b..4a3f53eb8b9d40e3becab22d81dfacbcd9543ce2 100644 --- a/src/main/resources/com/ardublock/block/block-mapping.properties +++ b/src/main/resources/com/ardublock/block/block-mapping.properties @@ -257,6 +257,7 @@ psn_client=com.ardublock.translator.block.communication.PsnClientBlock psn_callback=com.ardublock.translator.block.communication.PsnCallbackBlock psn_handle_network=com.ardublock.translator.block.communication.PsnHandleNetBlock psn_data_to_send=com.ardublock.translator.block.communication.PsnDataToSendBlock +psn_set_interval=com.ardublock.translator.block.communication.PsnSetInterval psn_publish=com.ardublock.translator.block.communication.PsnPublishBlock psn_publish_analog=com.ardublock.translator.block.communication.PsnPublishBlock psn_publish_digital=com.ardublock.translator.block.communication.PsnPublishBlock