Skip to content

Commit f8bff5b

Browse files
Release 4.1.0 (#5)
# Release 4.1.0 ## Improvements - Deactivate signal links for SIM300 (not supported) ## Bugfix - Reset function did not clear all signal links - 'OnNewInputState' block of FlowConfig did not work with other blocks if it was used in parallel with the 'Set' block - Legacy bindings of ValueDisplay elements within UI did not work if deployed with VS Code AppSpace SDK - UI differs if deployed via Appstudio or VS Code AppSpace SDK - Fullscreen icon of iFrame was visible
1 parent 9e524b6 commit f8bff5b

12 files changed

Lines changed: 392 additions & 215 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## Release 4.1.0
5+
6+
### Improvements
7+
- Deactivate signal links for SIM300 (not supported)
8+
9+
### Bugfix
10+
- Reset function did not clear all signal links
11+
- 'OnNewInputState' block of FlowConfig did not work with other blocks if it was used in parallel with the 'Set' block
12+
- Legacy bindings of ValueDisplay elements within UI did not work if deployed with VS Code AppSpace SDK
13+
- UI differs if deployed via Appstudio or VS Code AppSpace SDK
14+
- Fullscreen icon of iFrame was visible
15+
416
## Release 4.0.0
517

618
### New features

CSK_Module_DigitalIOManager/pages/pages/CSK_Module_DigitalIOManager/CSK_Module_DigitalIOManager.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,5 @@
7777

7878
.myCustomButton_CSK_Module_DigitalIOManager {
7979
border-radius: 30px;
80-
padding-right: 0px;
80+
padding: 11px;
8181
}

CSK_Module_DigitalIOManager/pages/pages/CSK_Module_DigitalIOManager/CSK_Module_DigitalIOManager.html

Lines changed: 192 additions & 137 deletions
Large diffs are not rendered by default.

CSK_Module_DigitalIOManager/pages/src/converter.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ export function convertToList(value) {
55
export function changeStyle(theme) {
66
const style: HTMLStyleElement = document.createElement('style');
77
style.id ='blub'
8+
9+
const toggleSW = document.querySelectorAll("davinci-toggle-switch")
10+
toggleSW.forEach((userItem) => {
11+
const shadowToggle = userItem.shadowRoot
12+
const finalToggleSW = shadowToggle?.querySelector('div')
13+
finalToggleSW?.classList.add('hasIcon')
14+
});
15+
816
if (theme == 'CSK_Style'){
917
var headerToolbar = `.sopasjs-ui-header-toolbar-wrapper { background-color: #FFFFFF; }`
1018
var uiHeader = `.sopasjs-ui-header>.app-logo { margin-right:0px; }`

CSK_Module_DigitalIOManager/pages/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ document.addEventListener('sopasjs-ready', () => {
1212
page_Setup.remove();
1313

1414
setTimeout(() => {
15+
const element = document.querySelector("div.sjs-wrapper > div > div.sjs-fullscreen-toggle")
16+
if(element) {
17+
element.parentElement.removeChild(element)
18+
}
1519
document.title = 'CSK_Module_DigitalIOManager'
1620
}, 500);
1721
})

CSK_Module_DigitalIOManager/project.mf.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@ INFO: As this event will be created dynamically, there is no auto completion wit
255255
<desc>Notify version of module.</desc>
256256
<param desc="Version" multiplicity="1" name="version" type="string"/>
257257
</event>
258+
<event name="OnNewStatusSignalLinksSupport">
259+
<desc>Notify status if signal link feature is supported on device.</desc>
260+
<param desc="Status" multiplicity="1" name="status" type="bool"/>
261+
</event>
258262
<function name="setParameterName">
259263
<desc>Function to set the name of the parameters if saved/loaded via the CSK_PersistentData module.</desc>
260264
<param desc="Name of the parameter." multiplicity="1" name="name" type="string"/>
@@ -488,7 +492,7 @@ INFO: Recommended to leave it switched off, if not essentially required!</desc>
488492
</crown>
489493
</crown>
490494
<meta key="author">SICK AG</meta>
491-
<meta key="version">4.0.0</meta>
495+
<meta key="version">4.1.0</meta>
492496
<meta key="priority">low</meta>
493497
<meta key="copy-protected">false</meta>
494498
<meta key="read-protected">false</meta>

CSK_Module_DigitalIOManager/scripts/Configuration/DigitalIOManager/DigitalIOManager_Controller.lua

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ Script.serveEvent("CSK_DigitalIOManager.OnNewInputSelection", "DigitalIOManager_
6161
Script.serveEvent("CSK_DigitalIOManager.OnNewOutputSelection", "DigitalIOManager_OnNewOutputSelection")
6262

6363
-- Links
64+
Script.serveEvent('CSK_DigitalIOManager.OnNewStatusSignalLinksSupport', 'DigitalIOManager_OnNewStatusSignalLinksSupport')
6465
Script.serveEvent("CSK_DigitalIOManager.OnNewLinkList", "DigitalIOManager_OnNewLinkList")
6566
Script.serveEvent("CSK_DigitalIOManager.OnNewLinkSelected", "DigitalIOManager_DigitalIOManager_OnNewLinkSelected")
6667
Script.serveEvent("CSK_DigitalIOManager.OnNewInputPortList", "DigitalIOManager_OnNewInputPortList")
@@ -188,6 +189,7 @@ local function handleOnExpiredTmrDigitalIOManager()
188189
Script.notifyEvent("DigitalIOManager_OnNewOutputForLinkSelected", selectedOutputForLink)
189190
Script.notifyEvent("DigitalIOManager_OnNewLinkDelay", presetDelay)
190191

192+
Script.notifyEvent("DigitalIOManager_OnNewStatusSignalLinksSupport", _G.availableAPIs.signalLinkSupport)
191193
Script.notifyEvent("DigitalIOManager_OnNewLinkList", digitalIOManager_Model.helperFuncs.createJsonList('links', digitalIOManager_Model.parameters.links))
192194

193195
Script.notifyEvent("DigitalIOManager_OnNewInputSelection", selectedInputInterface)
@@ -468,32 +470,36 @@ end
468470
Script.serveFunction("CSK_DigitalIOManager.setOutputForLink", setOutputForLink)
469471

470472
local function addLink()
473+
if _G.availableAPIs.signalLinkSupport then
471474

472-
if checkConfig(selectedInputForLink, selectedOutputForLink) == true and checkConfig(selectedInputForLink) == true and checkConfig(selectedOutputForLink) == true then
475+
if checkConfig(selectedInputForLink, selectedOutputForLink) == true and checkConfig(selectedInputForLink) == true and checkConfig(selectedOutputForLink) == true then
473476

474-
_G.logger:fine(nameOfModule .. ": Add link.")
475-
local tempLink = {}
476-
tempLink.input = selectedInputForLink
477-
tempLink.output = selectedOutputForLink
478-
tempLink.delay = presetDelay
477+
_G.logger:fine(nameOfModule .. ": Add link.")
478+
local tempLink = {}
479+
tempLink.input = selectedInputForLink
480+
tempLink.output = selectedOutputForLink
481+
tempLink.delay = presetDelay
479482

480-
table.insert(digitalIOManager_Model.parameters.links, tempLink)
483+
table.insert(digitalIOManager_Model.parameters.links, tempLink)
481484

482-
digitalIOManager_Model.parameters.mode[selectedInputForLink] = 'FLOW'
483-
digitalIOManager_Model.parameters.mode[selectedOutputForLink] = 'FLOW'
485+
digitalIOManager_Model.parameters.mode[selectedInputForLink] = 'FLOW'
486+
digitalIOManager_Model.parameters.mode[selectedOutputForLink] = 'FLOW'
484487

485-
digitalIOManager_Model.parameters.active[selectedInputForLink] = true
486-
digitalIOManager_Model.parameters.active[selectedOutputForLink] = true
488+
digitalIOManager_Model.parameters.active[selectedInputForLink] = true
489+
digitalIOManager_Model.parameters.active[selectedOutputForLink] = true
487490

488-
digitalIOManager_Model.helperFuncs.createJsonList('links', digitalIOManager_Model.parameters.links)
491+
digitalIOManager_Model.helperFuncs.createJsonList('links', digitalIOManager_Model.parameters.links)
489492

490-
Script.notifyEvent('DigitalIOManager_OnShowInternalMessages', 'false')
491-
activateNewSetup()
493+
Script.notifyEvent('DigitalIOManager_OnShowInternalMessages', 'false')
494+
activateNewSetup()
495+
else
496+
Script.notifyEvent('DigitalIOManager_OnShowInternalMessages', 'true')
497+
Script.notifyEvent('DigitalIOManager_OnNewMessageType', 'warning')
498+
Script.notifyEvent('DigitalIOManager_OnNewInternalMessage', 'Current setting of (optional) ports not correct. Please check first')
499+
_G.logger:warning(nameOfModule .. ": Current setting of (optional) ports not correct. Please check first.")
500+
end
492501
else
493-
Script.notifyEvent('DigitalIOManager_OnShowInternalMessages', 'true')
494-
Script.notifyEvent('DigitalIOManager_OnNewMessageType', 'warning')
495-
Script.notifyEvent('DigitalIOManager_OnNewInternalMessage', 'Current setting of (optional) ports not correct. Please check first')
496-
_G.logger:warning(nameOfModule .. ": Current setting of (optional) ports not correct. Please check first.")
502+
_G.logger:info(nameOfModule .. ": Signal link feature not available on device (no cFlow IO handling support).")
497503
end
498504
end
499505
Script.serveFunction("CSK_DigitalIOManager.addLink", addLink)
@@ -727,8 +733,8 @@ local function clearFlowConfigRelevantConfiguration()
727733
selectInputInterface(key)
728734
setActiveStatusInput(false)
729735
end
730-
for key, value in ipairs(digitalIOManager_Model.parameters.links) do
731-
selectedLink = key
736+
for currentLink=#digitalIOManager_Model.parameters.links, 1, -1 do
737+
selectedLink = tostring(currentLink)
732738
removeLink()
733739
end
734740
end

CSK_Module_DigitalIOManager/scripts/Configuration/DigitalIOManager/DigitalIOManager_Model.lua

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ digitalIOManager_Model.sensorStatus = {} -- Status of sensor's measurement
4242
digitalIOManager_Model.forwardFunctions = {} -- List of functions to be used to forward incoming trigger via DigitalIn as events
4343
digitalIOManager_Model.triggerFunctions = {} -- List of functions to be used to forward incoming events to trigger DigitalOut
4444
digitalIOManager_Model.trackingFunctions = {} -- List of functions to be used to track input states of signal links
45+
digitalIOManager_Model.forwardLinksFunctions = {} -- List of functions to be used to forward status of DigitalIn used in signal links
4546

4647
-- Create parameters / instances for this module
4748
digitalIOManager_Model.parameters = {}
@@ -80,14 +81,25 @@ local function trackInputState(status, source)
8081
Script.notifyEvent("DigitalIOManager_OnNewInputPortTable", digitalIOManager_Model.helperFuncs.createJsonList('input', digitalIOManager_Model.parameters.inDebounceMode, digitalIOManager_Model.parameters.active, digitalIOManager_Model.parameters.inDebounceMode, digitalIOManager_Model.parameters.inDebounceValue, digitalIOManager_Model.parameters.inputLogic, nil, digitalIOManager_Model.parameters.mode, digitalIOManager_Model.sensorStatus))
8182
end
8283

84+
--- Function to forward input states of signal links
85+
---@param status boolean Status of input port to track
86+
---@param source string Name of input port
87+
local function forwardSignalLinkInputState(status, source)
88+
if digitalIOManager_Model.parameters.forwardEvent[source] ~= nil and digitalIOManager_Model.parameters.forwardEvent[source] ~= '' then
89+
Script.notifyEvent(digitalIOManager_Model.parameters.forwardEvent[source], status)
90+
end
91+
end
92+
8393
--- Function to set DigitalOutputs if received related event
8494
---@param newState boolean Status of port
8595
---@param port string Name of port
8696
local function setOutputViaEvent(newState, port)
8797
_G.logger:fine(nameOfModule .. ': Set digital output ' .. tostring(port))
8898
Connector.DigitalOut.set(digitalIOManager_Model.handles[port], newState)
8999
if newState and digitalIOManager_Model.parameters.outActivationValue[port] ~= 0 then
90-
Connector.DigitalOut.set(digitalIOManager_Model.handles[port], not newState)
100+
if _G.availableAPIs.signalLinkSupport then
101+
Connector.DigitalOut.set(digitalIOManager_Model.handles[port], not newState)
102+
end
91103
end
92104
end
93105

@@ -115,6 +127,11 @@ if _G.availableAPIs.specific then
115127
trackInputState(status,value)
116128
end
117129
digitalIOManager_Model.trackingFunctions[value] = trackInput
130+
131+
local function forwardSignalLinkInput(status)
132+
forwardSignalLinkInputState(status,value)
133+
end
134+
digitalIOManager_Model.forwardLinksFunctions[value] = forwardSignalLinkInput
118135
end
119136

120137
-- Create functions to set DigitalOutputs if received related event
@@ -266,6 +283,8 @@ local function setupAll()
266283
digitalIOManager_Model.flow:addConsumerBlock('DigitalInEvent'..input, 'Engine.Event.notify')
267284
digitalIOManager_Model.flow:setInitialParameter('DigitalInEvent'..input, 'EventName', "CSK_DigitalIOManager.OnNewFlowInputState" .. input)
268285

286+
Script.register("CSK_DigitalIOManager.OnNewFlowInputState" .. input, digitalIOManager_Model.forwardLinksFunctions[input])
287+
269288
-- Optionally track input state of signal links to e.g. show them on UI
270289
if digitalIOManager_Model.trackStatus then
271290
Script.register("CSK_DigitalIOManager.OnNewFlowInputState" .. input, digitalIOManager_Model.trackingFunctions[input])

CSK_Module_DigitalIOManager/scripts/Configuration/DigitalIOManager/FlowConfig/DigitalIOManager_Set.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ local function setStatus(handle, source)
1212
local port = Container.get(handle, 'Port')
1313
local eventToLink, endPos = string.find(source, 'CSK_DigitalIOManager.OnNewInputState')
1414

15-
if eventToLink then
15+
if eventToLink and _G.availableAPIs.signalLinkSupport then
1616
local inputPort = string.sub(source, endPos+1, #source)
1717
CSK_DigitalIOManager.setInputForLink(inputPort)
1818
CSK_DigitalIOManager.setOutputForLink(port)

CSK_Module_DigitalIOManager/scripts/Configuration/DigitalIOManager/helper/checkAPIs.lua

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ local function loadAPIs()
2727
CSK_UserManagement = require 'API.CSK_UserManagement'
2828
elseif appList[i] == 'CSK_Module_FlowConfig' then
2929
CSK_FlowConfig = require 'API.CSK_FlowConfig'
30+
elseif appList[i] == 'CSK_Module_MultiIOLinkSMI' then
31+
CSK_MultiIOLinkSMI = require 'API.CSK_MultiIOLinkSMI'
3032
end
3133
end
3234
end
@@ -41,8 +43,21 @@ local function loadSpecificAPIs()
4143
Connector.DigitalOut = require 'API.Connector.DigitalOut'
4244
end
4345

46+
-- Function to check signal link feature (cFlow IO handling)
47+
local function checkSignalLinkSupport()
48+
local deviceName = Engine.getTypeName()
49+
local isSIM300 = string.find(deviceName, 'SIG300') or string.find(deviceName, 'SIM300')
50+
if isSIM300 then
51+
return false
52+
else
53+
return true
54+
end
55+
end
56+
4457
availableAPIs.default = xpcall(loadAPIs, debug.traceback) -- TRUE if all default APIs were loaded correctly
4558
availableAPIs.specific = xpcall(loadSpecificAPIs, debug.traceback) -- TRUE if all specific APIs were loaded correctly
59+
availableAPIs.signalLinkSupport = checkSignalLinkSupport() -- TRUE if device supports signal link feature (cFlow IO handling)
60+
availableAPIs.SGI = xpcall(loadSGIAPIs, debug.traceback) -- TRUE if SGI CROWN exists
4661

4762
return availableAPIs
4863
--**************************************************************************

0 commit comments

Comments
 (0)