-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdriver.lua
More file actions
92 lines (74 loc) · 3.23 KB
/
Copy pathdriver.lua
File metadata and controls
92 lines (74 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
--[[-----------------------------------------------------------------------------
/*!
\file
\copyright 2025 Pharos Architectural Controls LTD. as an unpublished work. All Rights Reserved.
*/
--]]-----------------------------------------------------------------------------
-- Controls debug console access
IN_PRODUCTION = true
---------------------------------------------------------------------------------
--[[ Modules ]]--
---------------------------------------------------------------------------------
require('drivers-common-public.global.handlers')
require('drivers-common-public.global.lib')
require('drivers-common-public.global.msp')
require('enums')
---@class Magpie
Magpie = require('magpie.init')
---------------------------------------------------------------------------------
--[[ Helpers ]]--
---------------------------------------------------------------------------------
--- Restart connection, if bound
local function reconnect()
Magpie:stop()
OnNetworkBindingChanged(BINDING_ID.MAGPIE_WS, (C4:GetBindingAddress(BINDING_ID.MAGPIE_WS) ~= ''))
end
---------------------------------------------------------------------------------
--[[ Properties ]]--
---------------------------------------------------------------------------------
function OPC.Poll_Interval(value)
print('Polling every ' .. value .. ' seconds')
SetTimer("Poll", value * 1000, function() Magpie:doPoll() end, true)
end
---------------------------------------------------------------------------------
function OPC.Username(value)
if (value == '') then value = nil end
Magpie.auth:setUsername(value)
reconnect()
end
---------------------------------------------------------------------------------
function OPC.Password(value)
Magpie.auth:setPassword(value)
reconnect()
end
---------------------------------------------------------------------------------
--[[ Initialisation ]]--
---------------------------------------------------------------------------------
-- Function invoked when a driver is loaded or being updated
---@param driverInitType DIT Driver initialisation reason
OnDriverInitTasks = function(driverInitType)
Magpie:init()
end
---------------------------------------------------------------------------------
-- Function that serves as a callback into a project after the project is loaded.
---@param driverInitType DIT Driver initialisation reason
OnDriverLateInitTasks = function(driverInitType)
C4:UpdateProperty('Status', 'Unknown')
OnNetworkBindingChanged(BINDING_ID.MAGPIE_WS, (C4:GetBindingAddress(BINDING_ID.MAGPIE_WS) ~= ''))
end
-----------------------------------------------------------------------------------
-- Function called by Director when a network connection has been addressed or unaddressed
---@param idBinding BINDING_ID
---@param bIsBound boolean Is bound
function OnNetworkBindingChanged(idBinding, bIsBound)
if (idBinding == BINDING_ID.MAGPIE_WS) then
C4:UpdateProperty('IP Address', C4:GetBindingAddress(BINDING_ID.MAGPIE_WS))
if (bIsBound) then
C4:UpdateProperty('Status', 'Bound')
SetTimer("Magpie:start", 1, function() Magpie:start() end, false)
else
Magpie:stop()
C4:UpdateProperty('Status', 'Not bound')
end
end
end