equal
deleted
inserted
replaced
262 </xsl:for-each> |
262 </xsl:for-each> |
263 <xsl:text>} |
263 <xsl:text>} |
264 </xsl:text> |
264 </xsl:text> |
265 <xsl:text> |
265 <xsl:text> |
266 </xsl:text> |
266 </xsl:text> |
|
267 <xsl:text>var heartbeat_index = </xsl:text> |
|
268 <xsl:value-of select="$indexed_hmitree/*[@hmipath = '/HEARTBEAT']/@index"/> |
|
269 <xsl:text>; |
|
270 </xsl:text> |
|
271 <xsl:text> |
|
272 </xsl:text> |
267 <xsl:text>var hmitree_types = [ |
273 <xsl:text>var hmitree_types = [ |
268 </xsl:text> |
274 </xsl:text> |
269 <xsl:for-each select="$indexed_hmitree/*"> |
275 <xsl:for-each select="$indexed_hmitree/*"> |
270 <xsl:text>/* </xsl:text> |
276 <xsl:text>/* </xsl:text> |
271 <xsl:value-of select="@index"/> |
277 <xsl:value-of select="@index"/> |
574 </xsl:text> |
580 </xsl:text> |
575 <xsl:text>var subscribers = hmitree_types.map(_ignored => new Set()); |
581 <xsl:text>var subscribers = hmitree_types.map(_ignored => new Set()); |
576 </xsl:text> |
582 </xsl:text> |
577 <xsl:text> |
583 <xsl:text> |
578 </xsl:text> |
584 </xsl:text> |
|
585 <xsl:text>// artificially subscribe the watchdog widget to "/heartbeat" hmi variable |
|
586 </xsl:text> |
|
587 <xsl:text>// Since dispatch directly calls change_hmi_value, |
|
588 </xsl:text> |
|
589 <xsl:text>// PLC will periodically send variable at given frequency |
|
590 </xsl:text> |
|
591 <xsl:text>subscribers[heartbeat_index].add({ |
|
592 </xsl:text> |
|
593 <xsl:text> /* type: "Watchdog", */ |
|
594 </xsl:text> |
|
595 <xsl:text> frequency: 1, |
|
596 </xsl:text> |
|
597 <xsl:text> indexes: [heartbeat_index], |
|
598 </xsl:text> |
|
599 <xsl:text> dispatch: function(value) { |
|
600 </xsl:text> |
|
601 <xsl:text> console.log("Heartbeat" + value); |
|
602 </xsl:text> |
|
603 <xsl:text> change_hmi_value(this.indexes[0], "+1"); |
|
604 </xsl:text> |
|
605 <xsl:text> } |
|
606 </xsl:text> |
|
607 <xsl:text>}); |
|
608 </xsl:text> |
|
609 <xsl:text> |
|
610 </xsl:text> |
579 <xsl:text>function update_subscriptions() { |
611 <xsl:text>function update_subscriptions() { |
580 </xsl:text> |
612 </xsl:text> |
581 <xsl:text> let delta = []; |
613 <xsl:text> let delta = []; |
582 </xsl:text> |
614 </xsl:text> |
583 <xsl:text> for(let index = 0; index < subscribers.length; index++){ |
615 <xsl:text> for(let index = 0; index < subscribers.length; index++){ |
589 <xsl:text> // periods are in ms |
621 <xsl:text> // periods are in ms |
590 </xsl:text> |
622 </xsl:text> |
591 <xsl:text> let previous_period = subscriptions[index]; |
623 <xsl:text> let previous_period = subscriptions[index]; |
592 </xsl:text> |
624 </xsl:text> |
593 <xsl:text> |
625 <xsl:text> |
|
626 </xsl:text> |
|
627 <xsl:text> // subscribing with a zero period is unsubscribing |
594 </xsl:text> |
628 </xsl:text> |
595 <xsl:text> let new_period = 0; |
629 <xsl:text> let new_period = 0; |
596 </xsl:text> |
630 </xsl:text> |
597 <xsl:text> if(widgets.size > 0) { |
631 <xsl:text> if(widgets.size > 0) { |
598 </xsl:text> |
632 </xsl:text> |