Add VX4S_N model and Test patterns

This commit is contained in:
2021-11-02 14:02:17 -05:00
parent e19e281655
commit d9919607d6
+288 -24
View File
@@ -41,7 +41,7 @@ function GetProperties()
{
Name = 'Model',
Type = 'enum',
Choices = { 'VX4S', 'VX6S', 'PROHD', 'PROUHDJR', 'MCTRL4K' },
Choices = { 'VX4S', 'VX4S_N', 'VX6S', 'PROHD', 'PROUHDJR', 'MCTRL4K' },
Value = 'VX4S'
}
}
@@ -119,6 +119,55 @@ function GetControls(props)
PinStyle = "Both",
UserPin = true
},
-- Test Pattern Buttons
{
Name = "TEST1",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST2",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST3",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST4",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST5",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST6",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST7",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST8",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "TEST9",
ControlType = "Button",
ButtonType = "Trigger"
},
{
Name = "Status",
ControlType = "Indicator",
@@ -142,9 +191,10 @@ end
function GetControlLayout(props)
local controls = {}
local rackSize = {800, 120}
local rackSize = {1000, 120}
local inputPosition = {rackSize[1]*1/2,5}
local inputPosition = {rackSize[1]*3/8,5}
local testPosition = {rackSize[1]*11/16,5}
local graphics = {
@@ -170,6 +220,20 @@ function GetControlLayout(props)
Size = {250, rackSize[2] - 10},
Position = inputPosition
},
-- Test box
{
Type = "GroupBox",
Text = "TEST",
Color = Colors.White,
HTextAlign = "CENTER",
CornerRadius = 3,
Fill = Colors.Black,
StrokeColor = Colors.White,
StrokeWidth = 1,
Size = {250, rackSize[2] - 10},
Position = testPosition
},
-- NovaStar Text
{
Type = "Label",
@@ -196,8 +260,20 @@ function GetControlLayout(props)
yStart = inputPosition[2] + 20,
Padding = 5
}
local TestButton = {
yStart = testPosition[2] + 20,
Padding = 5
}
SourceButton.Size = {(rackSize[2] - 30 - (SourceButton.Padding * 2))/2, (rackSize[2] - 30 - (SourceButton.Padding * 2))/2}
TestButton.Size = {(rackSize[2] - 30 - (TestButton.Padding * 2))/2, (rackSize[2] - 30 - (TestButton.Padding * 2))/2}
SourceButton.xStart = inputPosition[1] + ((250 - (((SourceButton.Size[1] * 5) + (SourceButton.Padding * 4))))/2)
TestButton.xStart = testPosition[1] + ((250 - (((TestButton.Size[1] * 5) + (TestButton.Padding * 4))))/2)
local TestLabels = {
"Red","Green","Blue","White","Horiz","Vert","Diag","Gray","Aging"
}
local InputLabels = {
VX4S = {
@@ -210,6 +286,18 @@ function GetControlLayout(props)
"SDI",
"DP",
},
VX4S_N = {
"HDMI",
"DVI",
"VGA",
"",
"",
"CVBS",
"DP",
"SDI",
"",
"",
},
VX6S = {
"HDMI1",
"HDMI2",
@@ -298,8 +386,66 @@ function GetControlLayout(props)
Size = SourceButton.Size
}
--First row of test buttons
controls['TEST1'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[1] ~= nil and TestLabels[1] or "1" ,
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart, TestButton.yStart},
Size = TestButton.Size
}
controls['TEST2'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[2] ~= nil and TestLabels[2] or "2" ,
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*1), TestButton.yStart},
Size = TestButton.Size
}
controls['TEST3'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[3] ~= nil and TestLabels[3] or "3" ,
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*2),TestButton.yStart},
Size = TestButton.Size
}
controls['TEST4'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[4] ~= nil and TestLabels[4] or "4",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*3),TestButton.yStart},
Size = TestButton.Size
}
controls['TEST5'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[5] ~= nil and TestLabels[5] or "5",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*4),TestButton.yStart},
Size = TestButton.Size
}
--bump down second row of buttons
SourceButton.yStart = SourceButton.yStart + SourceButton.Size[1] + (SourceButton.Padding/2)
TestButton.yStart = TestButton.yStart + TestButton.Size[1] + (TestButton.Padding/2)
--Second row of input buttons
controls['IN6'] = {
@@ -359,6 +505,52 @@ function GetControlLayout(props)
Size = SourceButton.Size
}
--Second row of test buttons
controls['TEST6'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[6] ~= nil and TestLabels[6] or "6",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart,TestButton.yStart},
Size = TestButton.Size
}
controls['TEST7'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[7] ~= nil and TestLabels[7] or "7",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*1), TestButton.yStart},
Size = TestButton.Size
}
controls['TEST8'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[8] ~= nil and TestLabels[8] or "8",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*2),TestButton.yStart},
Size = TestButton.Size
}
controls['TEST9'] = {
Style = "Button",
ButtonType = "Trigger",
Legend = TestLabels[9] ~= nil and TestLabels[9] or "9",
UnlinkOffColor = true,
OffColor = Colors.White,
Color = Colors.Red,
Position = {TestButton.xStart + ((TestButton.Size[1]+TestButton.Padding)*3),TestButton.yStart},
Size = TestButton.Size
}
controls['Status'] = {
Style = "Text",
Color = Colors.LCD,
@@ -390,6 +582,17 @@ if (Controls) then
Preamble = {0x55, 0xAA},
Connect = {0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x57,0x56},
Brightness = {0x00,0x00,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0x01,0x00,0x01,0x00,0x00,0x02,0x01,0x00},
TestPatterns = {
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x02,0xDA,0x58}, --Red
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x04,0xDC,0x58}, --Green
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x03,0xDB,0x58}, --Blue
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x05,0xDD,0x58}, --White
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x06,0xDE,0x58}, --Horizontal
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x07,0xDF,0x58}, --Vertical
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x08,0xE0,0x58}, --Diagaonal
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x09,0xE1,0x58}, --Grayscale
{0x00,0x80,0xFE,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x0A,0xE2,0x58} --Aging-All
},
Inputs = {
VX4S = {
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x10,0xB4,0x56}, --DVI
@@ -400,34 +603,68 @@ if (Controls) then
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x72,0x16,0x57}, --CVBS2
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x40,0xE4,0x56}, --SDI
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x90,0x34,0x57}, --DP
{},
{},
},
VX4S_N = {
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0xA0,0x44,0x57}, --HDMI
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x10,0xB4,0x56}, --DVI
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x01,0xA5,0x56}, --VGA
{},
{},
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x71,0x15,0x57}, --CVBS
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x90,0x34,0x57}, --DP
{0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x2D,0x00,0x20,0x02,0x01,0x00,0x40,0xE4,0x56}, --SDI
{},
{},
},
VX6S = {
{0x55,0xAA,0x00,0x88,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x00,0x00,0x11,0x17,0x57}, --HDMI1
{0x55,0xAA,0x00,0xA8,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x01,0x00,0x12,0x39,0x57}, --HDMI2
{0x55,0xAA,0x00,0xC4,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x02,0x00,0x31,0x75,0x57}, --SDI1
{0x55,0xAA,0x00,0xD4,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x03,0x00,0x32,0x87,0x57}, --SDI2
{0x55,0xAA,0x00,0xD6,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x04,0x00,0x01,0x59,0x57}, --DVI1
{0x55,0xAA,0x00,0xD7,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x06,0x00,0x02,0x5D,0x57}, --DVI2
{0x55,0xAA,0x00,0xD9,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x07,0x00,0xA0,0xFE,0x57}, --USB
{0x00,0x88,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x00,0x00,0x11,0x17,0x57}, --HDMI1
{0x00,0xA8,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x01,0x00,0x12,0x39,0x57}, --HDMI2
{0x00,0xC4,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x02,0x00,0x31,0x75,0x57}, --SDI1
{0x00,0xD4,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x03,0x00,0x32,0x87,0x57}, --SDI2
{0x00,0xD6,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x04,0x00,0x01,0x59,0x57}, --DVI1
{0x00,0xD7,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x06,0x00,0x02,0x5D,0x57}, --DVI2
{0x00,0xD9,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x12,0x00,0x02,0x13,0x03,0x00,0x07,0x00,0xA0,0xFE,0x57}, --USB
{},
{},
{},
},
PROHD = {
{0x55,0xAA,0x00,0x2B,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1A,0xDE,0x56}, --SDI
{0x55,0xAA,0x00,0x34,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1C,0xE9,0x56}, --DVI
{0x55,0xAA,0x00,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1B,0xF3,0x56}, --HDMI
{0x55,0xAA,0x00,0x51,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1E,0x08,0x57}, --DP
{0x55,0xAA,0x00,0x48,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x17,0xF8,0x56}, --VGA
{0x55,0xAA,0x00,0x5A,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x02,0xF5,0x56}, --CVBS
{0x00,0x2B,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1A,0xDE,0x56}, --SDI
{0x00,0x34,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1C,0xE9,0x56}, --DVI
{0x00,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1B,0xF3,0x56}, --HDMI
{0x00,0x51,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1E,0x08,0x57}, --DP
{0x00,0x48,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x17,0xF8,0x56}, --VGA
{0x00,0x5A,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x02,0xF5,0x56}, --CVBS
{},
{},
{},
{},
},
PROUHDJR = {
{0x55,0xAA,0x00,0x2B,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1A,0xDE,0x56}, --SDI
{0x55,0xAA,0x00,0x34,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1C,0xE9,0x56}, --DVI
{0x55,0xAA,0x00,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1B,0xF3,0x56}, --HDMI
{0x55,0xAA,0x00,0x51,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1E,0x08,0x57}, --DP
{0x00,0x2B,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1A,0xDE,0x56}, --SDI
{0x00,0x34,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1C,0xE9,0x56}, --DVI
{0x00,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1B,0xF3,0x56}, --HDMI
{0x00,0x51,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x22,0x00,0x20,0x02,0x01,0x00,0x1E,0x08,0x57}, --DP
{},
{},
{},
{},
{},
{},
},
MCTRL4K = {
{0x55,0xAA,0x00,0x3E,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x61,0x18,0x58}, --DVI
{0x55,0xAA,0x00,0x8A,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x05,0x08,0x58}, --HDMI
{0x55,0xAA,0x00,0x9D,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x5F,0x75,0x58}, --DP
{0x00,0x3E,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x61,0x18,0x58}, --DVI
{0x00,0x8A,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x05,0x08,0x58}, --HDMI
{0x00,0x9D,0xFE,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x23,0x00,0x00,0x02,0x01,0x00,0x5F,0x75,0x58}, --DP
{},
{},
{},
{},
{},
{},
{},
}
}
@@ -464,6 +701,8 @@ if (Controls) then
function sendCommand(cmd)
if NovaStar.socket.IsConnected then
print("Sending Packet")
print(hex_dump(getCmdString(cmd)))
NovaStar.socket:Write(getCmdString(NovaStar.Commands.Preamble) .. getCmdString(cmd))
end
end
@@ -501,6 +740,13 @@ if (Controls) then
end
function processResponse(data)
local response = ""
for k,v in pairs(bytes) do
response = response .. string.pack("B", v)
end
print("Received Packet")
print(hex_dump(response))
if data == getCmdString(NovaStar.Response.Connected) then
print("Successful Connection Response Received")
NovaStar.setStatus(0,"Connected - " .. Properties['IP Address'].Value)
@@ -543,7 +789,25 @@ if (Controls) then
if Properties['Model'].Value ~= '' then
for k,v in pairs(NovaStar.Commands.Inputs[Properties['Model'].Value]) do
Controls['IN'..k].EventHandler = function()
if (v ~= nil and #v > 1) then
print("value is not nill and length greater than 1")
Controls['IN'..k].EventHandler = function()
sendCommand(v)
end
else
print("value is nill or value doesn't have a length")
if(k == 10) then
Controls['IN0'].IsDisabled = true;
Controls['IN0'].IsInvisible = true;
else
Controls['IN'..k].IsDisabled = true;
Controls['IN'..k].IsInvisible = true;
end;
end;
end
for k,v in pairs(NovaStar.Commands.TestPatterns) do
Controls['TEST'..k].EventHandler = function()
sendCommand(v)
end
end