📄 rgbled.js
字号:
//////////////////////////////////////////////////////////////////////////
// FILENAME: RGBLED.js
//
// @Version@
//
// DESCRIPTION: Generates RGBLED Metadata
//
//------------------------------------------------------------------------
// Copyright (c) Cypress MicroSystems 2007. All Rights Reserved.
//////////////////////////////////////////////////////////////////////////
//********************
// Globals
//********************
var g_UM_debug = false; // controls printing output in the script host
var g_UM_BankSwitch_xmlDoc;
var g_UM_BankSwitch_xmlLogicOut;
var g_UM_BankSwitch_BaseIODriver;
var g_UM_BankSwitch_DriverList;
var g_UM_BankSwitch_BasePropertyList;
var g_UM_BankSwitch_NumberOfSwitches;
var g_UM_BankSwitch_SubNameList;
var g_UM_BankSwitch_VariableList;
var g_UM_BankSwitch_ContainerInstanceName;
var g_UM_BankSwitch_PackedValName = "state";
var g_TFListSave = null;
var g_ValueListSave = null;
/*************
function setPSoC()
{
g_UM_BankSwitch_xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
g_UM_BankSwitch_xmlDoc.async = false
g_UM_BankSwitch_xmlDoc.load("c:\\wtest\\local\\sphinx\\work\\BankSwitchInput.xml")
//print("Hello from BankSwitch.js");
}
***********/
/***************
function onAccept()
{
transformBankSwitch();
g_UM_BankSwitch_xmlDoc.save("c:\\wtest\\local\\sphinx\\work\\BankSwitchOutput.xml");
}
***************/
function transformContainer(sInstanceName, sDOM)
{
g_UM_BankSwitch_xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
g_UM_BankSwitch_xmlDoc.async = false
g_UM_BankSwitch_xmlDoc.loadXML(sDOM);
try
{
saveTF();
saveValueList();
clearOldData();
setContainerInstanceName(sInstanceName);
getNumberofSwitches();
createSubNameList();
createVariableList();
createDriverList();
}
catch(kuku)
{
alert("Exception in transformContainer " + kuku);
}
return g_UM_BankSwitch_xmlDoc.xml;
}
function saveTF()
{
g_TFListSave = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_VARIABLE_LIST/CMX_VARIABLE/CMX_TRANSFERFUNCTION_LIST");
}
function saveValueList()
{
g_ValueListSave = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_VARIABLE_LIST/CMX_VARIABLE/CMX_VALUE_LIST");
}
function clearOldData()
{
// remove the old stuff and replace with empty elements
try
{
var parent;
var replacementNode = g_UM_BankSwitch_xmlDoc.createElement("CMX_SUB_NAME_LIST");
var nodeToRemove = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_SUB_NAME_LIST");
if (nodeToRemove != null)
{
parent = nodeToRemove.parentNode;
parent.removeChild(nodeToRemove);
parent.appendChild(replacementNode);
}
replacementNode = g_UM_BankSwitch_xmlDoc.createElement("CMX_VARIABLE_LIST");
nodeToRemove = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_VARIABLE_LIST");
if (nodeToRemove != null)
{
parent = nodeToRemove.parentNode;
parent.removeChild(nodeToRemove);
parent.appendChild(replacementNode);
}
replacementNode = g_UM_BankSwitch_xmlDoc.createElement("CMX_IO_DRIVER_LIST");
nodeToRemove = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_IO_DRIVER_LIST");
if (nodeToRemove != null)
{
parent = nodeToRemove.parentNode;
parent.removeChild(nodeToRemove);
parent.appendChild(replacementNode);
}
}
catch(kuku)
{
alert("Exception clearOldData " + kuku);
}
//end remove the old stuff
}
function getNumberofSwitches()
{
g_UM_BankSwitch_BaseIODriver = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER");
if (g_UM_BankSwitch_BaseIODriver != null)
{
g_UM_BankSwitch_BasePropertyList = g_UM_BankSwitch_BaseIODriver.selectSingleNode("CMX_HIDDEN_PROPERTY_LIST");
if (g_UM_BankSwitch_BasePropertyList != null)
{
var NumberOfSwitchesProperty = g_UM_BankSwitch_BasePropertyList.selectSingleNode("CMX_PROPERTY[@NAME=\"Number of output pins\"]");
if (NumberOfSwitchesProperty != null)
{
//print("XPATH is da bomb");
g_UM_BankSwitch_NumberOfSwitches = parseInt(NumberOfSwitchesProperty.getAttribute("CURRENT_VALUE"));
}
}
}
else
{
//print("Error, BaseIODriver is null\n");
}
}
function setContainerInstanceName(sInstanceName)
{
var Container = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER");
if (Container != null)
{
g_UM_BankSwitch_ContainerInstanceName = sInstanceName;
Container.setAttribute("INSTANCE_NAME", sInstanceName);
}
}
//Data looks like:
//<CMX_SUB_NAME NAME="bit0" TYPE="DRIVER" ORDINAL="0"/>
//<CMX_SUB_NAME NAME="state" TYPE="VARIABLE" ORDINAL="1"/>
function createSubNameList()
{
g_UM_BankSwitch_SubNameList = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_SUB_NAME_LIST");
if (g_UM_BankSwitch_SubNameList != null)
{
var CMXSubName;
var OrdinalCount;
// create the bitN variable sub names
for (OrdinalCount = 0; OrdinalCount < g_UM_BankSwitch_NumberOfSwitches; OrdinalCount++)
{
CMXSubName = g_UM_BankSwitch_xmlDoc.createElement("CMX_SUB_NAME"); // create a sub name
if(OrdinalCount==0) CMXSubName.setAttribute("NAME", "_RED");
else if(OrdinalCount==1) CMXSubName.setAttribute("NAME", "_GREEN");
else CMXSubName.setAttribute("NAME", "_BLUE");
CMXSubName.setAttribute("TYPE", "DRIVER");
CMXSubName.setAttribute("ORDINAL", OrdinalCount);
g_UM_BankSwitch_SubNameList.appendChild(CMXSubName);
}
// create the state variable sub name
CMXSubName = g_UM_BankSwitch_xmlDoc.createElement("CMX_SUB_NAME"); // create a sub name
CMXSubName.setAttribute("NAME", g_UM_BankSwitch_PackedValName);
CMXSubName.setAttribute("TYPE", "VARIABLE");
CMXSubName.setAttribute("ORDINAL", OrdinalCount);
g_UM_BankSwitch_SubNameList.appendChild(CMXSubName);
}
}
//Data looks like:
//<CMX_VARIABLE NAME="MySwitchBank_state" WRITEABLE="FALSE" VALUE_TYPE="CMX_DISCRETE" DEFAULT_VALUE="" ORDINAL="0" CONTAINER_NAME="MySwitchBank">
//</CMX_VARIABLE>
function createVariableList()
{
g_UM_BankSwitch_VariableList = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_VARIABLE_LIST");
if (g_UM_BankSwitch_VariableList != null)
{
var CMXVariable;
// create the state variable
CMXVariable = g_UM_BankSwitch_xmlDoc.createElement("CMX_VARIABLE"); // create a variable
CMXVariable.setAttribute("NAME", g_UM_BankSwitch_ContainerInstanceName + "_" + g_UM_BankSwitch_PackedValName);
CMXVariable.setAttribute("WRITEABLE", "FALSE");
CMXVariable.setAttribute("VALUE_TYPE", "CMX_DISCRETE");
CMXVariable.setAttribute("DRIVER_TYPE", "OUTPUT");
CMXVariable.setAttribute("VARIABLE_TYPE", "BYTE");
CMXVariable.setAttribute("VARIABLE_SIZE", "1");
CMXVariable.setAttribute("WIDGMIN", "0");
CMXVariable.setAttribute("WIDGMAX", "255");
CMXVariable.setAttribute("WIDGSCALE", "1");
CMXVariable.setAttribute("DEFAULT_VALUE", "0");
CMXVariable.setAttribute("ORDINAL", "0");
CMXVariable.setAttribute("CONTAINER_NAME", g_UM_BankSwitch_ContainerInstanceName);
if(g_TFListSave==null)
{
var CMXV_TFList = g_UM_BankSwitch_xmlDoc.createElement("CMX_TRANSFERFUNCTION_LIST"); // create a tf list
CMXV_TFList.setAttribute("ACTIVE_TRANSFER_FUNCTION", "");
CMXVariable.appendChild(CMXV_TFList);
}
else
{
CMXVariable.appendChild(g_TFListSave);
}
if(g_ValueListSave==null)
{
var CMXV_TFList = g_UM_BankSwitch_xmlDoc.createElement("CMX_VALUE_LIST"); // create a tf list
CMXVariable.appendChild(CMXV_TFList);
}
else
{
CMXVariable.appendChild(g_ValueListSave);
}
g_UM_BankSwitch_VariableList.appendChild(CMXVariable);
}
}
function createDriverList()
{
g_UM_BankSwitch_DriverList = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER/CMX_VARIABLE_CONTAINER/CMX_IO_DRIVER_LIST");
if (g_UM_BankSwitch_DriverList != null)
{
//print("found driver list");
for (var i = 0; i < g_UM_BankSwitch_NumberOfSwitches; i++)
{
var LogicOutDriverElement = getLogicOutDriverElement();
var DriveModeProperty;
if (LogicOutDriverElement != null)
{
// Set instance name
if(i==0) LogicOutDriverElement.setAttribute("DRIVER_INSTANCE", g_UM_BankSwitch_ContainerInstanceName+"_RED");
else if(i==1) LogicOutDriverElement.setAttribute("DRIVER_INSTANCE", g_UM_BankSwitch_ContainerInstanceName+"_GREEN");
else LogicOutDriverElement.setAttribute("DRIVER_INSTANCE", g_UM_BankSwitch_ContainerInstanceName+"_BLUE");
// Set the same sub_tree_selection as the Base IO Driver
LogicOutDriverElement.setAttribute("SUB_TREE_SELECTION", g_UM_BankSwitch_BaseIODriver.getAttribute("SUB_TREE_SELECTION"));
// Set the DriverMode property
DriveModeProperty = LogicOutDriverElement.selectSingleNode("//CMX_PROPERTY_LIST/CMX_PROPERTY[@NAME=\"DriveMode\"]");
DriveModeProperty.setAttribute("CURRENT_VALUE", getContainerDriveMode());
// Append to the IO Driver List
g_UM_BankSwitch_DriverList.appendChild(LogicOutDriverElement);
}
}
}
}
function getContainerDriveMode()
{
g_UM_BankSwitch_BaseIODriver = g_UM_BankSwitch_xmlDoc.selectSingleNode("//CMX_IO_DRIVER");
if (g_UM_BankSwitch_BaseIODriver != null)
{
g_UM_BankSwitch_BasePropertyList = g_UM_BankSwitch_BaseIODriver.selectSingleNode("CMX_HIDDEN_PROPERTY_LIST");
if (g_UM_BankSwitch_BasePropertyList != null)
{
var BaseDriveModeProperty = g_UM_BankSwitch_BasePropertyList.selectSingleNode("CMX_PROPERTY[@NAME=\"DriveMode\"]");
if (BaseDriveModeProperty != null)
{
return BaseDriveModeProperty.getAttribute("CURRENT_VALUE");
}
}
}
else
{
return "getContainerDriveMode Script Error";
}
}
function getLogicOutDriverElement()
{
var LogicOutDriver = g_pDlg.GetData("GET_CATALOG_IO_DRIVER", "LOGICOUT", "");
var dm1 = new ActiveXObject("Microsoft.XMLDOM");
dm1.async = false
dm1.loadXML(LogicOutDriver);
var nodeXML = dm1.selectSingleNode("//CMX_IO_DRIVER");
return nodeXML;
}
/***************************
//function print(Output)
//{
// if (g_UM_debug == true)
// {
// WScript.echo(Output);
// }
//}
****************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -