diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2a963af..604f136 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -64,6 +64,11 @@ jobs: - name: Setup dotnet uses: actions/setup-dotnet@v4 + - name: Install mono + run: | + sudo apt-get update + sudo apt-get install -y mono-complete + - name: Restore dependencies run: | cd Json_parser diff --git a/Configuration.py b/Configuration.py index 4e91793..4f7ee0d 100644 --- a/Configuration.py +++ b/Configuration.py @@ -24,7 +24,8 @@ class Configuration: "2600B", "2651A", "2657A", - "2601B-PULSE" + "2601B-PULSE", + "MP5103" ] MODEL_2600B_MODELS = [ diff --git a/Json_parser/Program.cs b/Json_parser/Program.cs index 38ec99a..37348a7 100644 --- a/Json_parser/Program.cs +++ b/Json_parser/Program.cs @@ -65,7 +65,7 @@ static void parse_commands_josn(string base_lib_dir, string json_file_path) var factoryScriptCommands = cmdList.Where(cmd => cmd.description.Contains("factory script")).ToList(); // get factoryScriptCommands and remove it, its there for 26xx models cmdList = cmdList.Except(factoryScriptCommands).ToList(); // remove all factoryScriptCommands commands - var directFunctioncommands = cmdList.Where(cmd => !cmd.name.Contains('.')).ToList(); + var directFunctioncommands = cmdList.Where(cmd => !cmd.name.Contains('.') && !cmd.name.Contains(':')).ToList(); cmdList = cmdList.Except(directFunctioncommands).ToList(); // remove all directFunctioncommands commands and handle it speratley @@ -107,9 +107,9 @@ static void parse_commands_josn(string base_lib_dir, string json_file_path) } } - outStr += "---@class io_object\nlocal io_object={}\n---@class scriptVar\nlocal scriptVar={}\n---@class eventID\n\n---@class file_object\nlocal file_object ={}\n\n"; //PRIV + outStr += "---@class io_object\nlocal io_object={}\n---@class scriptVar\nlocal scriptVar={}\n---@class fileVar\nlocal fileVar={}\n---@class eventID\n\n---@class file_object\nlocal file_object ={}\n\n"; //PRIV outStr += "---@class bufferVar\nlocal bufferVar={}\n"; - outStr += "---@class digio\n local digio = {}\n\n---@class tsplink\n local tsplink = {}\n\n---@class lan\n local lan = {}\n\n---@class tspnetConnectionID\nlocal tspnetConnectionID = {}\n\n ---@class promptID\nlocal promptID = {}\n\n"; + outStr += "---@class tspnetConnectionID\nlocal tspnetConnectionID = {}\n\n ---@class promptID\nlocal promptID = {}\n\n"; var tsplinkStr = ""; tsplinkStr = outStr; @@ -177,6 +177,10 @@ static void parse_commands_josn(string base_lib_dir, string json_file_path) { // Add specific handling for 37 models if needed } + else if (file_name.Contains("MP5103")) + { + // Add specific handling for 37 models if needed + } else // for tti models { outStr += get_def_buffer_definations(); diff --git a/main.py b/main.py index fb38db1..d9e077b 100644 --- a/main.py +++ b/main.py @@ -46,18 +46,29 @@ def parse_web_help_files(webHelpFoldersDir): def parse(): description_list = [] - - if(str(Configuration.MODEL_NUMBER).find("26")!= -1):#2600 - file_path = os.path.join("resources","2600","26xx-command_param_data_type.txt") + + #2600 + if(str(Configuration.MODEL_NUMBER).find("26")!= -1): + file_path = os.path.join("resources","2600","command_param_data_type.txt") Configuration.PARAMS_TYPES_DETAILS = cmd_param.getParamTypeDetails(file_path) file_path = os.path.join("resources","2600","manually_extracted_cmd_and_enums.json") Configuration.MANUALLY_EXTRACTED_COMMANDS = HelperFunctions.parse_manual_json(file_path) - - else:#tti + + elif(str(Configuration.MODEL_NUMBER).find("MP5103")!= -1): + + file_path = os.path.join("resources","trebuchet","manually_extracted_cmd_and_enums.json") + # get static enums types + Configuration.MANUALLY_EXTRACTED_COMMANDS = HelperFunctions.parse_manual_json(file_path) + file_path = os.path.join("resources","trebuchet","command_param_data_type.txt") + Configuration.PARAMS_TYPES_DETAILS = cmd_param.getParamTypeDetails(file_path) + + + #tti + else: file_path = os.path.join("resources","tti","manually_extracted_cmd_and_enums.json") # get static enums types Configuration.MANUALLY_EXTRACTED_COMMANDS = HelperFunctions.parse_manual_json(file_path) - file_path = os.path.join("resources","tti","tti-command_param_data_type.txt") + file_path = os.path.join("resources","tti","command_param_data_type.txt") Configuration.PARAMS_TYPES_DETAILS = cmd_param.getParamTypeDetails(file_path) diff --git a/package-lock.json b/package-lock.json index 683c944..86dec3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "@tektronix/keithley_instrument_libraries", - "version": "0.18.4", + "version": "0.19.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@tektronix/keithley_instrument_libraries", - "version": "0.18.4", + "version": "0.19.0", "license": "ISC", "dependencies": { "node-fetch": "^2.7.0" }, "devDependencies": { "@octokit/rest": "20.1.1", - "@tektronix/web-help-documents": "0.18.0", + "@tektronix/web-help-documents": "0.19.0", "@types/node-fetch": "^2.6.11", - "axios": "1.7.4", + "axios": "1.8.2", "decompress": "^4.2.1" } }, @@ -175,10 +175,11 @@ } }, "node_modules/@tektronix/web-help-documents": { - "version": "0.18.0", - "resolved": "https://npm.pkg.github.com/download/@tektronix/web-help-documents/0.18.0/3f155899227d34e7eccb1bf3183536cd2dc292e5", - "integrity": "sha512-ZHcoF8ZgaQhhJEv5qyYdghjah84Ijf/wNbBahxzyw6oS5IHZQVQBPBXQckKq4m0IX/2NUD8qAiaczCXAUTZlJA==", - "dev": true + "version": "0.19.0", + "resolved": "https://npm.pkg.github.com/download/@tektronix/web-help-documents/0.19.0/8aaeb7775c0f0ffd21b3968068f6f31722434a15", + "integrity": "sha512-jJM8abZhawKSkSB9U/EqWlIa4jkpeqGOOW0z88c5GbWF+oFjI0M3I2Uz01WTYV/Z7KWfsDnxjtw+FMco+97t5w==", + "dev": true, + "license": "ISC" }, "node_modules/@types/node": { "version": "20.12.12", @@ -206,10 +207,11 @@ "dev": true }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz", + "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", diff --git a/package.json b/package.json index 6180f59..ffc12bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tektronix/keithley_instrument_libraries", - "version": "0.18.4", + "version": "0.19.0", "description": "", "main": "index.js", "scripts": { @@ -20,10 +20,10 @@ "author": "", "license": "ISC", "devDependencies": { - "@tektronix/web-help-documents": "0.18.0", + "@tektronix/web-help-documents": "0.19.0", "@octokit/rest": "20.1.1", "@types/node-fetch": "^2.6.11", - "axios": "1.7.4", + "axios": "1.8.2", "decompress": "^4.2.1" }, "dependencies": { diff --git a/resources/2600/26xx-command_param_data_type.txt b/resources/2600/command_param_data_type.txt similarity index 100% rename from resources/2600/26xx-command_param_data_type.txt rename to resources/2600/command_param_data_type.txt diff --git a/resources/trebuchet/command_param_data_type.txt b/resources/trebuchet/command_param_data_type.txt new file mode 100644 index 0000000..0260ecd --- /dev/null +++ b/resources/trebuchet/command_param_data_type.txt @@ -0,0 +1,566 @@ +bufferVar.appendmode +state: 0|1 + +bufferVar.basetimestamp +basetime: number + +bufferVar.cachemode +cacheMode: 0|1 + +bufferVar.capacity +bufferCapacity: integer +bufferVar: bufferVar + +bufferVar.clear() +bufferVar: bufferVar + + +bufferVar.clearcache() +bufferVar: bufferVar + +bufferVar.collectsourcevalues +state: 0|1 + +bufferVar.collecttimestamps +state: 0|1 + +bufferVar.fillcount +fillCount: integer + + +bufferVar.fillmode +fillMode: bufferVarfillmodefillMode +bufferVar: bufferVar + +bufferVar.measurefunctions +measurefunction: string[] +bufferVar: bufferVar + +bufferVar.measureranges +measurerange: number[] + +bufferVar.n +numberOfReadings: integer +bufferVar: bufferVar + +bufferVar.readings +reading: number[] +bufferVar: bufferVar +N: number + +bufferVar.sourcefunctions +sourcefunction: string[] +bufferVar: bufferVar + +bufferVar.sourceoutputstates +state: string[] +bufferVar: bufferVar + +bufferVar.sourceranges +sourcerange: number[] +bufferVar: bufferVar + +bufferVar.sourcevalues +sourcevalue: number[] +bufferVar: bufferVar + +bufferVar.statuses +statusInformation: number[] + +bufferVar.timestampresolution +resolution: number + +bufferVar.timestamps +timestamp: number[] +bufferVar: bufferVar + +localnode.showerrors +errorMode: localnodeshowerrorserrorMode + +digio.line[N].state +N: number +state: digiolineArrstatestate + +digio.readport() +data: number + +digio.writeprotect +writeprotectMask: number + +io.type() +type: string +obj: fileVar + +digio.trigger[N].edge +triggerEdge: triggerEdgeMode + +digio.trigger[N].logic +triggerLogic: triggerLogicMode + +digio.trigger[N].mode +triggerMode: digioTriggerModes + +digio.trigger[N].overrun +overrun: boolean + +digio.trigger[N].pulsewidth +triggerPulseWidth: number + +digio.writeport() +data: number + +digio.trigger[N].wait() +triggered: boolean +timeout: number + +digio.readbit() +data: number +N: number + +digio.writebit() +data: number +N: number + +digio.writeport() +data: number + +digio.readbit() +N: number +data: number + +digio.readport() +data: number + +digio.trigger[N].assert() +N: number + +digio.trigger[N].clear() +N: number + +digio.trigger[N].release() +N: number + +digio.trigger[N].reset() +N: number + +digio.writebit() +N: number +data: number + +digio.writeport() +data: number + +tsplink.writeprotect +mask: integer + +slot.start() +slot: number + +slot.stop() +slot: number + +slot.autostart +autostart: slotautostartautostart + +slot.autorestart +autorestart: slotautorestartautorestart + +eventlog.count +count: integer + +eventlog.disable.type +type: integer + +eventlog.disable.severity +severity: number + +eventlog.disable.list +list: string[] + +eventlog.disable.add +list: string[] + +eventlog.getcount() +eventType: eventloggetcounteventType + + +eventlog.post() +message: string +eventType: eventlogposteventType + +eventlog.save() +filename: string +eventType: eventlogsaveeventType + +eventlog.all() +logString: string + +eventlog.next() +logString: string + +eventlog.suppress() +eventNumber: number + +eventlog.overwritemethod +method: eventlogoverwritemethodmethod + +eventlog.enable +status: eventlogenablestatus + +eventlog.enable.list +list: string[] + +format.asciiprecision +precision: number + +format.byteorder +order: formatbyteorderorder + +format.data +value: formatdatavalue + +fs.chdir() +workingDirectory: string +path: string + +fs.cwd() +path: string + +fs.is_dir() +status: boolean +path: string + +fs.is_file() +status: boolean +path: string + +fs.mkdir() +path: string +newpath: string + +fs.readdir() +files: string[] +path: string + +fs.rmdir() +path: string + +gettimezone() +timeZone: string + +info() +systeminfo: string + +io.close() +file: string + +io.input() +fileVar: fileVar +newfile: string + +io.open() +fileVar: fileVar +errorMsg: string|nil +path: string +mode: string + +io.output() +fileVar: fileVar +newfile: string + +lan.linktimeout +timeout: number + +lan.timedwait +timeout: number + +lan.config.gateway +gatewayAddress: string + +lan.config.ipaddress +ipAddress: string + +lan.config.speed +speed: number + +lan.config.subnetmask +mask: string + +lan.status.gateway +gatewayAddress: string + + +lan.status.ipaddress +ipAddress: string + +lan.status.macaddress +macAddress: string + +lan.status.speed +speed: number + +lan.status.subnetmask +mask: string + +lan.trigger[N].connected +connected: boolean + +lan.trigger[N].ipaddress +ipAddress: string + +lan.trigger[N].mode +mode: lanTriggerMode + +lan.trigger[N].overrun +overrun: boolean + +lan.config.dns.address[N] +dnsAddress: string[] + +lan.config.dns.domain +domain: string + +lan.config.dns.hostname +hostName: string + +lan.status.dns.name +hostName: string + +lan.status.port.dst +port: integer + +lan.status.port.rawsocket +port: integer + +lan.status.port.telnet +port: integer + +lan.status.port.vxi11 +port: number + +lan.ipconfig() +method: lanipconfigmethod +ipV4Address: string +subnetMask: string +gateway: string + +lan.lxidomain +domain: number + +lan.macaddress +MACaddress: string + +lan.trigger[N].wait() +triggered: boolean +timeout: number + +lan.trigger[N].pseudostate +pseudostate: 0|1 + +lan.autoconnect +state: lanautoconnectstate + +lan.nagle +state: lannaglestate + +lan.config.dns.dynamic +state: lanconfigdnsdynamicstate + +lan.config.dns.verify +state: lanconfigdnsverifystate + +lan.config.duplex +duplex: lanconfigduplexduplex + +lan.config.method +method: lanconfigmethodmethod + +lan.status.duplex +duplex: lanstatusduplexduplex + +lan.trigger[N].protocol +protocol: lantriggerprotocolprotocol + + +localnode.manufacturer +manufacturer: string + +localnode.autolinefreq +flag: boolean + +localnode.description +description: string + +localnode.revision +revision: string + +localnode.license +license_agreement: string + +localnode.access +accessType: localnodeaccessaccessType + +localnode.linefreq +frequency: number + +localnode.model +model: string + +localnode.password +password: string +passWord: string + +localnode.prompts +prompting: localnodepromptsMode + +localnode.prompts4882 +prompting: localnodeprompts4882Mode + +localnode.serialno +serialno: string + +localnode.settime() +year: number +month: number +day: number +hour: number +minute: number +second: number + +localnode.showevents +errorMode: localnodeshoweventserrorMode + +localnode.passwordmode +mode: localnodepasswordmodemode + +localnode.version +version: string + +os.time() +utcTime: number +timespec: table + +os.clock() +seconds: integer + +print() +value1: any +...: any + +printnumber() +value1: number +...: number + + +printbuffer() +startIndex: integer +endIndex: integer +bufferVar: bufferVar +...: bufferVar + +settime() +time: number + +settimezone() +offset: string +dstOffset: string +dstStart: string +dstEnd: string + +trigger.wait() +triggered: boolean +timeout: number + +trigger.timer[N].delaylist +intervals: table + +trigger.timer[N].overrun +overrun: boolean + +trigger.timer[N].passthrough +passthrough: boolean + +tsplink.writeprotect +mask: number + +tsplink.trigger[N].mode +mode: tsplinkTriggerModes + +tsplink.trigger[N].overrun +overrun: boolean + +tsplink.trigger[N].pulsewidth +width: number + +tsplink.trigger[N].wait() +triggered: boolean +timeout: number + +tsplink.readbit() +data: number +N: number + +tsplink.reset() +nodesFound: number +expectedNodes: number + +tsplink.writebit() +N: number +data: boolean + +tsplink.group +groupNumber: number + +tsplink.line[N].mode +mode: tsplinkLineMode + +tsplink.master +masterNodeNumber: number + +tsplink.node +nodeNumber: number + +tsplink.readport() +data: number + +tsplink.state +state: string + +tsplink.writeport() +data: number + +tsplink.readbit() +data: 0|1 +N: number + +tsplink.readport() +data: number + +tsplink.reset() +nodesFound: number +expectedNodes: number + +tsplink.trigger[N].wait() +triggered: boolean +timeout: number + +tsplink.writebit() +data: number +N: number + +tsplink.writeport() +data: number + +userstring.add() +name: string +value: number + +userstring.get() +name: string +value: number + +fileVar:seek() +position: integer +errorMsg: string +whence: "set"|"cur"|"end" +offset: integer diff --git a/resources/trebuchet/manually_extracted_cmd_and_enums.json b/resources/trebuchet/manually_extracted_cmd_and_enums.json new file mode 100644 index 0000000..67e1069 --- /dev/null +++ b/resources/trebuchet/manually_extracted_cmd_and_enums.json @@ -0,0 +1,154 @@ +{ + "commands":[ + { + "name":"digio.trigger[N].mode", + "param_info": [ + { + "name":"triggerMode", + "enum": [ + { + "name":"digio.MODE_DIGITAL_IN", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_DIGITAL_OUT", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_DIGITAL_OPEN_DRAIN", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_TRIGGER_IN", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_TRIGGER_OUT", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_TRIGGER_OPEN_DRAIN", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_SYNCHRONOUS_MASTER", + "value":"", + "descriptions":"" + }, + { + "name":"digio.MODE_SYNCHRONOUS_ACCEPTOR", + "value":"", + "descriptions":"" + } + ] + } + ] + }, + { + "name":"digio.trigger[N].edge", + "param_info": [ + { + "name":"triggerEdge", + "enum": [ + { + "name":"digio.EDGE_FALLING", + "value":"", + "descriptions":"" + }, + { + "name":"digio.EDGE_RISING", + "value":"", + "descriptions":"" + }, + { + "name":"digio.EDGE_EITHER", + "value":"", + "descriptions":"" + } + ] + } + ] + }, + { + "name":"digio.trigger[N].logic", + "param_info": [ + { + "name":"triggerLogic", + "enum": [ + { + "name":"digio.LOGIC_POSITIVE", + "value":"", + "descriptions":"" + }, + { + "name":"digio.LOGIC_NEGATIVE", + "value":"", + "descriptions":"" + } + ] + } + ] + }, + { + "name":"tsplink.trigger[N].mode", + "param_info": [ + { + "name":"mode", + "enum": [ + { + "name":"tsplink.TRIG_BYPASS", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_FALLING", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_RISING", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_EITHER", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_SYNCHRONOUSA", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_SYNCHRONOUS", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_SYNCHRONOUSM", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_RISINGA", + "value":"", + "descriptions":"" + }, + { + "name":"tsplink.TRIG_RISINGM", + "value":"", + "descriptions":"" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/resources/tti/tti-command_param_data_type.txt b/resources/tti/command_param_data_type.txt similarity index 100% rename from resources/tti/tti-command_param_data_type.txt rename to resources/tti/command_param_data_type.txt