NT_UPDATE_PORTS_XML (128)
Updates the configuration of the specified matrix.
int agentId = 346; // For DELT compatibility.
int elementId = 806;
int parameterId = 4000;
int changeType = 9;
string updateConfig = changeType + ";" + elementId + ";" + parameterId + ";" + agentId;
int inputs = 8;
int outputs = 8;
string updateValue = inputs + ";" + outputs;
int result = (int) protocol.NotifyDataMinerQueued(128, updateConfig, updateValue);
if (result != 0)
{
protocol.Log("QA" + protocol.QActionID + "|Port update failed: " + updateConfig + ", " + updateValue, LogType.Error, LogLevel.NoLogging);
}
protocol.SendToDisplay(4000);
Parameters
updateConfig (string): String formatted as follows:
"ChangeType;elementID;parameterID;agentID".
ChangeType is an integer that can take one of the following values:
ChangeType Description 0 Label 1 State 2 Current settings 3 Page info 4 Not allowed 5 Allowed 6 Lock info 7 Follow info 8 Master info 9 Size 10 Matrix layout updateValue (string): Updated value. The format of this string depends on the specified changeType. To set the size of the matrix, the updateValue string needs to be formatted as follows: inputs + ";" + outputs.
Return Value
- (int): Indicates if the update succeeded or not. 0 = Succeeded, 1 = Failed.
Remarks
- When an update is performed, DataMiner creates a file, labels.xml, containing the updated matrix configuration (which is stored in the folder of the element
C:\Skyline DataMiner\Elements\[Element Name]
). - The size of a matrix can never be larger than the size that is hard-coded in the protocol.
- When labels are updated on a matrix element with the Notify DataMiner call NT_UPDATE_PORTS_XML (128), at most one information event will be generated with parameter description "Link File" and value "edited by ...".
- Bulk edit: It is also possible to group multiple updates in one call. To perform a bulk update, the parameters should be formatted as follows:
updateConfigs (object[]): Contains the different update configurations, where each entry is a uint[] with the following structure:
- updateConfig[0]: Denotes the type of change. Refer to the table for the single update for more info on the possible values.
- updateConfig[1]: Element ID
- updateConfig[2]: Matrix parameter ID
- updateConfig[3]: Agent ID
- updateConfig[4]: Flag indicating whether a parameter of type "discreet info" should not be triggered. 1: no discreet info trigger.
updateValues (object[]): Contains the different update values, where each entry is a string[], with the following structure:
- updateValue[0]: Depends on the type of change. This corresponds with the first part (before the semicolon) of the updateValue string in the single call.
- updateValue[1]: Depends on the type of change. This corresponds with the second part (after the semicolon) of the updateValue string in the single call.
Example:
uint agentId = 346; // For DELT compatibility. uint elementId = 531923; uint parameterId = 4000; uint changeType = 0; uint updateFileAtOnceNoDiscreetInfoTrigger = 1; uint[] updateConfig = new uint[5]; updateConfig[0] = changeType; updateConfig[1] = elementId; updateConfig[2] = parameterId; updateConfig[3] = agentId; updateConfig[4] = updateFileAtOnceNoDiscreetInfoTrigger; string[] updateValue1 = new string[2]; updateValue1[0] = "1"; updateValue1[1] = "In A"; string[] updateValue2 = new string[2]; updateValue2[0] = "2"; updateValue2[1] = "In B"; object[] updateConfigs = new object[] { updateConfig, updateConfig }; object[] updateValues = new object[] { updateValue1, updateValue2 }; int result = protocol.NotifyDataMinerQueued((int)NotifyType.UpdatePortsXml, updateConfigs, updateValues);
Examples
Setting the label of input 1 to "Test":
protocol.NotifyDataMinerQueued(128, "0;" +elementId+";"+parameterId+";"+agentId, "1;test");
Setting state of input 1 to disabled:
protocol.NotifyDataMinerQueued(128, "1;" +elementId+";"+parameterId+";"+agentId, "1;disabled");
Setting input 1 to page "testpage":
protocol.NotifyDataMinerQueued(128, "3;" +elementId+";"+parameterId+";"+agentId, "1;testpage");
Setting output 1 and 2 to not allowed for input 1:
protocol.NotifyDataMinerQueued(128, "4;" +elementId+";"+parameterId+";"+agentId, "1;17,18");
Setting output 1 and 2 to allowed for input 1:
protocol.NotifyDataMinerQueued(128, "5;" +elementId+";"+parameterId+";"+agentId, "1;17,18");
Locking output 8 (16x16 matrix):
protocol.NotifyDataMinerQueued(128, "6;" +elementId+";"+parameterId+";"+agentId, "24;true");
Output 1 is master of output 10:
protocol.NotifyDataMinerQueued(128, "7;" +elementId+";"+parameterId+";"+agentId, "17;23");
Enable follow mode on output 10 (16x16 matrix):
protocol.NotifyDataMinerQueued(128, "8;" +elementId+";"+parameterId+";"+agentId, "26;true");
Setting the matrix layout:
Currently the following layouts are supported: InputLeftOutputTop and InputTopOutputLeft.
protocol.NotifyDataMiner(128 /* NT_UPDATE_PORTS_XML */, "10;[ELEMENT_ID];[MATRIX_PARAM_ID];[DMA_ID]", "InputLeftOutputTop"); protocol.NotifyDataMiner(128 /* NT_UPDATE_PORTS_XML */, "10;[ELEMENT_ID];[MATRIX_PARAM_ID];[DMA_ID]", "InputTopOutputLeft"); protocol.NotifyDataMiner(128 /* NT_UPDATE_PORTS_XML */, "10;[ELEMENT_ID];[MATRIX_PARAM_ID];[DMA_ID]", MatrixLayoutOptions.INPUT_LEFT_OUTPUT_TOP); protocol.NotifyDataMiner(128 /* NT_UPDATE_PORTS_XML */, "10;[ELEMENT_ID];[MATRIX_PARAM_ID];[DMA_ID]", MatrixLayoutOptions.INPUT_TOP_OUTPUT_LEFT);
Note
MatrixLayoutOptions is defined in the Skyline.DataMiner.Net.Matrices namespace (SLNetTypes.dll)