quarchpy 2.1.11.dev4__py3-none-any.whl → 2.2.17.dev1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- quarchpy/__init__.py +60 -8
- quarchpy/_version.py +1 -1
- quarchpy/config_files/Cable_Modules/QTL1253-01 - Mini SAS Module Config v3.5 c1.3.qfg +196 -196
- quarchpy/config_files/Cable_Modules/QTL1253-01 - Mini SAS Module Config v4.000 c1.3.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL1253-02 - Mini SAS Module Config v3.5 c1.3.qfg +196 -196
- quarchpy/config_files/Cable_Modules/QTL1253-02 - Mini SAS Module Config v4.000 c1.3.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL1253-xx - Mini SAS Module Config v4.003 c1.6.qfg +197 -197
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v3.5 c1.2.qfg +188 -188
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v4.000 c1.2.qfg +190 -190
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v4.100 c1.3.qfg +189 -189
- quarchpy/config_files/Cable_Modules/QTL1292-xx - SFP+ Cable Pull Module Config v4.000 c1.1.qfg +154 -154
- quarchpy/config_files/Cable_Modules/QTL1309-04 - USB 3.0 Module Config v4.003 c1.2.qfg +187 -187
- quarchpy/config_files/Cable_Modules/QTL1309-xx - USB 3.0 Module Config v3.5 c1.1.qfg +187 -187
- quarchpy/config_files/Cable_Modules/QTL1309-xx - USB 3.0 Module Config v4.000 c1.1.qfg +188 -188
- quarchpy/config_files/Cable_Modules/QTL1366-xx - QSFP Cable Pull Module Config v4.000 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1383-xx - eSATAp Module Config v4.000 c1.3.qfg +190 -190
- quarchpy/config_files/Cable_Modules/QTL1521-02 - Mini SAS HD Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1521-03 - Mini SAS HD Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1521-05 - Mini SAS HD Module Config v4.005 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1521-05 - Mini SAS HD Module Config v4.007 c1.2.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1521-xx - Mini SAS HD Module Config v4.003 c1.5.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1663-xx - Quad QSFP Cable Pull Module Config v4.000 c1.1.qfg +308 -308
- quarchpy/config_files/Cable_Modules/QTL1675-05 - Mini SAS HD Module w Triggering Config v4.007 c1.3.qfg +211 -211
- quarchpy/config_files/Cable_Modules/QTL1675-xx - Mini SAS HD Module w Triggering Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1917-xx - Dual SFP+ Cable Pull Module Config v4.000 c1.1.qfg +174 -174
- quarchpy/config_files/Cable_Modules/QTL1971-01 - USB TypeC Module Config v4.000 c1.1.qfg +203 -203
- quarchpy/config_files/Cable_Modules/QTL1971-02 - USB TypeC Module Config v4.000 c1.1.qfg +203 -203
- quarchpy/config_files/Cable_Modules/QTL2022-xx - RJ-45 Cable Module Config v4.104 c1.3.QFG +189 -189
- quarchpy/config_files/Cable_Modules/QTL2058-xx - External PCIe Module Config v4.001 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2138-01 - SFP28 Cable Pull Module Config v4.000 c1.1.qfg +154 -154
- quarchpy/config_files/Cable_Modules/QTL2146-01 - Gen4 OCuLink Cable Module Config v4.001 c1.1.qfg +212 -212
- quarchpy/config_files/Cable_Modules/QTL2162-01 - 24G mini SAS HD Cable Break Module Config v4.000 c1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2171-01 - QSFP28 Cable Module Config v4.000 c1.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL2171-02 - QSFP28 Cable Module Config v4.000 c1.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL2341-01 - Gen4 External PCIe Cable Module v4.000.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2602-xx - Multiprotocol Link Breaker.qfg +178 -178
- quarchpy/config_files/Cable_Modules/QTL2834-xx - -48V DC Breaker Module v5.000 c1.0.qfg +177 -177
- quarchpy/config_files/Card_Modules/QTL1069-xx - SBB 2.0 Module Config v3.5 c1.1.qfg +366 -366
- quarchpy/config_files/Card_Modules/QTL1630-01 - PCIe Card Module v4.000 c1.0.qfg +280 -280
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.004 c1.2.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.005 c1.2.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.100 c1.4.qfg +284 -284
- quarchpy/config_files/Card_Modules/QTL1630-04 - PCIe Card Module Config v4.001 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL1630-04 - PCIe Card Module Config v4.004 c1.2.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.004 c1.2.qfg +284 -284
- quarchpy/config_files/Card_Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.006 c1.3.qfg +285 -285
- quarchpy/config_files/Card_Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.001 c1.1.qfg +286 -286
- quarchpy/config_files/Card_Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.004 c1.2.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1688-04 - PCIe Card Module w Triggering Config v4.005 c1.5.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1688-05 - PCIe Card Module w Triggering Config v4.005 c1.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1848-01 - PCIe Lite Card Module Config v4.000.qfg +122 -122
- quarchpy/config_files/Card_Modules/QTL1848-02 - PCIe Lite Card Module Config v4.000.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL1919-01 - PCIe x8 Card Module Config v4.001 c1.4.qfg +247 -247
- quarchpy/config_files/Card_Modules/QTL1920-01 - PCIe x8 Card Module w Triggering Config v4.000 c1.3.qfg +247 -247
- quarchpy/config_files/Card_Modules/QTL2019-xx - M.2 Horizontal Card Module Config v4.002 c1.1.qfg +219 -219
- quarchpy/config_files/Card_Modules/QTL2034-xx - M.2 M-Key Vertical Module Config v4.001 c1.1.qfg +221 -221
- quarchpy/config_files/Card_Modules/QTL2067-xx - PCIe SFF Module Config v4.000 c1.1.qfg +248 -248
- quarchpy/config_files/Card_Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.006 c1.4.qfg +256 -256
- quarchpy/config_files/Card_Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.007 c1.4.qfg +256 -256
- quarchpy/config_files/Card_Modules/QTL2073-01 - GEN3 PCIe Lite Card Module Config v4.001.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL2073-01 - PCIe Lite Card Module Config v4.000.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL2074-01 - GEN3 PCIe HS Card Module v4.005 c1.4.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2074-01 - PCIe Card Module Config CurrentLimit v4.004 c1.2.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.3.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v5.000 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2094-01 - Sanblaze Dualport Riser Card Config v4.001 c1.1.qfg +223 -223
- quarchpy/config_files/Card_Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.000 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2135-xx - PCIe GEN4 Card Module w Triggering Config - Inrush Limit v4.001 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2161-01 - EDSFF x8 Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Card_Modules/QTL2171-xx - EDSFF x8 Module w Triggering Config 4.001 c1.1.qfg +213 -213
- quarchpy/config_files/Card_Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.000 c1.1.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.005 c1.5.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2272-01 - GEN4 EDSFF x8 Module Config v4.000 c1.1.qfg +211 -211
- quarchpy/config_files/Card_Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.000 c1.1.qfg +212 -212
- quarchpy/config_files/Card_Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.002 c1.2.qfg +212 -212
- quarchpy/config_files/Card_Modules/QTL2318-01 - SANBlaze U.2 Rack Riser Card Config v4.000 c1.1.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2322-03 - GEN4 M.2 M-Key Vertical Breaker Module Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2322-xx - GEN4 M.2 M-Key Vertical Breaker Module Config v5.000 c1.1.qfg +208 -208
- quarchpy/config_files/Card_Modules/QTL2334-xx - Gen4 EDSFF x4 Card Module Config v4.000 c1.1.qfg +187 -187
- quarchpy/config_files/Card_Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.000 c1.1.qfg +189 -189
- quarchpy/config_files/Card_Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.001 c1.2.qfg +190 -190
- quarchpy/config_files/Card_Modules/QTL2357-xx - PCIe GEN5 Card Module Config v5.000 c1.1.qfg +282 -282
- quarchpy/config_files/Card_Modules/QTL2358-xx - PCIe GEN5 Card Module w Triggering Config v5.000 c1.1.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.000 c1.1.qfg +215 -215
- quarchpy/config_files/Card_Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.001 c1.2.qfg +217 -217
- quarchpy/config_files/Card_Modules/QTL2395-01 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.000 c1.1.qfg +208 -208
- quarchpy/config_files/Card_Modules/QTL2395-02 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2395-03 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2396-xx - PCIe GEN5 Card Module w inrush Config v5.000 c1.1.qfg +282 -282
- quarchpy/config_files/Card_Modules/QTL2403-xx - Gen4 PCIe Lite Module Config v4.000.qfg +135 -135
- quarchpy/config_files/Card_Modules/QTL2515-xx - PCIe GEN4 Card Module w Triggering - Inrush Limit Config v4.001 c1.3.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.000.qfg +130 -130
- quarchpy/config_files/Card_Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.003.qfg +137 -137
- quarchpy/config_files/Card_Modules/QTL2658-xx - Gen5 PCIe Lite Module w Inrush Config v4.000.qfg +130 -130
- quarchpy/config_files/Card_Modules/QTL2661-xx - GEN5 PCIe U.3 Breaker Config w Triggering v5.000 c1.1.qfg +229 -229
- quarchpy/config_files/Card_Modules/QTL2662-xx - GEN5 PCIe U.3 Breaker Config v5.000 c1.1.qfg +228 -228
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.000.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.001 c1.2.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker v5.000 c1.1.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker +Triggering Config v5.000.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering Config v5.001 c1.2.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering v5.000 c1.1.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2766-xx - GEN4 EDSFF E1 x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2767-xx - GEN4 EDSFF E3 x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2768-xx - GEN4 EDSFF E3 2T x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2776-xx - GEN4 EDSFF E1 x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2777-xx - GEN4 EDSFF E3 x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2778-xx - GEN4 EDSFF E3 2T x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2798-xx - PCIe GEN5 Card Module w Triggering w Inrush Limit Config v5.000 c1.1.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL2804-xx - GEN5 MCIO x4 to U.2 Breaker Config v5.000 c1.1.qfg +234 -234
- quarchpy/config_files/Card_Modules/QTL2805-xx - GEN5 MCIO x4 to U.2 Breaker + Triggering Config v5.000 c1.1.qfg +234 -234
- quarchpy/config_files/Card_Modules/QTL2814-xx - GEN5 AIC to U.2 Breaker + Triggering Config v5.000 c1.1 .qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2892-xx - GEN5 EDSFF E1 x4 Breaker.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2925-xx - GEN5 EDSFF E1 x4 Breaker +Triggering.qfg +233 -233
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v3.5 c1.5.qfg +198 -198
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v4.000 c1.5.qfg +200 -200
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v4.006 c1.8.qfg +199 -199
- quarchpy/config_files/Drive_Modules/QTL1215-xx - Lite Module Config v3.50.qfg +118 -118
- quarchpy/config_files/Drive_Modules/QTL1215-xx - Lite Module Config v4.000.qfg +118 -118
- quarchpy/config_files/Drive_Modules/QTL1301-xx - HS Lite Module Config v3.50.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1301-xx - HS Lite Module Config v4.000.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1429-01 - EMC HS Lite Module Config v4.000.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1429-02 - EMC HS Lite Module Config v4.002.qfg +120 -120
- quarchpy/config_files/Drive_Modules/QTL1623-03 - 12G HS Lite Module Config v4.001.qfg +128 -128
- quarchpy/config_files/Drive_Modules/QTL1623-04 - 12G HS Lite Module Config v4.001.qfg +128 -128
- quarchpy/config_files/Drive_Modules/QTL1680-xx - SCA2 Lite Module Config v4.001.qfg +135 -135
- quarchpy/config_files/Drive_Modules/QTL1689-01 - 12G HS Module Config v4.001 c1.1.qfg +199 -199
- quarchpy/config_files/Drive_Modules/QTL1689-04 - 12G HS Module Config v4.002 c1.1.qfg +196 -196
- quarchpy/config_files/Drive_Modules/QTL1689-05 - 12G HS Module Config v4.002 c1.1.qfg +196 -196
- quarchpy/config_files/Drive_Modules/QTL1743-02 - PCIe SFF Module Config v4.003 c1.3.qfg +222 -222
- quarchpy/config_files/Drive_Modules/QTL1743-02 - PCIe SFF Module Config v4.006 c1.4.qfg +213 -213
- quarchpy/config_files/Drive_Modules/QTL1743-xx - PCIe SFF Module Config v4.000 c1.1.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL1753-xx - 12G Lite Module Config v4.000.qfg +116 -116
- quarchpy/config_files/Drive_Modules/QTL1921-01 - EMC 12G HS Lite Module Config v4.000.qfg +120 -120
- quarchpy/config_files/Drive_Modules/QTL2207-01 - GEN 4 PCIe U.2 Drive Module.qfg +217 -217
- quarchpy/config_files/Drive_Modules/QTL2207-02 - GEN 4 PCIe U.2 Drive Module v5.000.qfg +220 -220
- quarchpy/config_files/Drive_Modules/QTL2207-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module v4.001.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2245-01 - GEN 4 PCIe U.3 HS Drive Module v4.000.qfg +223 -223
- quarchpy/config_files/Drive_Modules/QTL2245-xx - GEN 4 PCIe U.3 HS Drive Module.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2266-01 - GEN 4 PCIe SFF HS Drive Module Triggering.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2266-02 - GEN 4 PCIe SFF HS Drive Module Triggering v4.002.qfg +220 -220
- quarchpy/config_files/Drive_Modules/QTL2266-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL2266-XX - GEN 4 PCIe SFF HS Drive Module Triggering.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2270-01 - GEN 4 PCIe U.3 HS Drive Module Triggering v4.000.qfg +225 -225
- quarchpy/config_files/Drive_Modules/QTL2270-xx - GEN 4 PCIe U.3 HS Drive Module Triggering.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2542-02 - 24G SAS Drive Breaker Module v5.001.qfg +194 -194
- quarchpy/config_files/Drive_Modules/QTL2542-xx - 24G SAS Drive Breaker v5.000 c1.1.qfg +194 -194
- quarchpy/config_files/Drive_Modules/QTL2543-xx - 24G SAS Drive Breaker +Triggering v5.000 c1.1.qfg +195 -195
- quarchpy/config_files/Drive_Modules/QTL2602-xx - Multiprotocol Link Breaker.qfg +178 -178
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.000.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.001.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.003.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.007.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.000.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.001.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.003.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module v5.007.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2661-xx - Gen5 U.3 Drive Module + Triggering v5.000.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2662-xx - Gen5 PCIe U.3 Drive Module v5.000.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2757-xx - Gen5 SFF Lite Breaker Module Config v4.000.qfg +140 -140
- quarchpy/config_files/Drive_Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker v5.001.qfg +234 -234
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.001.qfg +234 -234
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.002.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2813-xx - Gen5 AIC to U.2 Breaker v5.001 c1.2.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2813-xx - Gen5 AIC to U.2 Breaker with Triggering v5.002 c1.3.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2814-xx - Gen5 AIC to U.2 Breaker with Triggering v5.001 c1.2.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2814-xx - Gen5 AIC to U.2 Breaker with Triggering v5.002 c1.3.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2892-xx - Gen5 EDSFF E1 x4 Breaker v5.001.qfg +233 -233
- quarchpy/config_files/Drive_Modules/Standard Drive Module Config v3.5 c1.1.qfg +171 -171
- quarchpy/config_files/Power_Margining/HD/QTL1944-xx - HD Power Module v5.000.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1944-xx - HD Power Module v5.003.qfg +124 -124
- quarchpy/config_files/Power_Margining/HD/QTL1995-xx - x6 HD Power Module v5.002.qfg +122 -122
- quarchpy/config_files/Power_Margining/HD/QTL1995-xx - x6 HD Power Module v5.003.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v5.002.qfg +122 -122
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v5.003.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v6.000.qfg +124 -124
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.101.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Test Power Margining Module v4.004.qfg +73 -73
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.101.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.105.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.105.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.000.qfg +80 -80
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.200.qfg +81 -81
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.202.qfg +87 -87
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.210.qfg +88 -88
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.211.qfg +121 -121
- quarchpy/config_files/Power_Margining/XLC/QTL1824-03 - Power Margining Module V2 - Triggering v4.213.qfg +121 -121
- quarchpy/config_files/Power_Margining/XLC/QTL1847-01 - Power Margining Module V2 v4.213.qfg +121 -121
- quarchpy/config_files/Switch_Modules/QTL1390-xx - 4-8 SATA MUX Module Config v4.002.qfg +186 -186
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.002.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.003.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.100.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1449-xx - 1-8 PCIe MUX Module Config v4.000.qfg +145 -145
- quarchpy/config_files/Switch_Modules/QTL1490-xx - SATA Keyed HS Module Config v4.003 c1.6.qfg +194 -194
- quarchpy/config_files/Switch_Modules/QTL1490-xx - SATA Keyed HS Module Config v4.006 c1.8.qfg +193 -193
- quarchpy/config_files/Switch_Modules/QTL1530-xx - 1-8 DP MUX Module Config v4.000.qfg +145 -145
- quarchpy/config_files/Switch_Modules/QTL1564-xx - 12 Port Mini SAS HD MUX Module Config v4.000.qfg +184 -184
- quarchpy/config_files/Switch_Modules/QTL1584-xx - 1-4 ExpressCard MUX Module Config v4.000.qfg +81 -81
- quarchpy/config_files/quarch_config_parser.py +19 -16
- quarchpy/connection_specific/QPS/{License/argparse4j-license.txt → 3rdPartyLicenses/argparse4j-LICENSE.txt} +23 -25
- quarchpy/connection_specific/QPS/3rdPartyLicenses/com.sun.istack-license.html +59 -0
- quarchpy/connection_specific/QPS/{qis/License/LICENSE.txt → 3rdPartyLicenses/commons-io-LICENSE-2.0.txt} +202 -202
- quarchpy/connection_specific/QPS/3rdPartyLicenses/controlsfx-license.txt +29 -0
- quarchpy/connection_specific/QPS/{License/LICENSE.txt → 3rdPartyLicenses/evalex-LICENSE.txt} +202 -202
- quarchpy/connection_specific/QPS/3rdPartyLicenses/gson-license.txt +202 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/guava-license.txt +202 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/jakarta.activation-license.html +59 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/jakarta.xml.bind-api-license.html +59 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/janino-LICENSE.txt +31 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/jfx-license.txt +347 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/log4j-license.txt +202 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/netty-LICENSE.txt +202 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/netty-NOTICE.txt +239 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/nsmenufx-LICENSE.txt +24 -0
- quarchpy/connection_specific/QPS/3rdPartyLicenses/slf4j-LICENSE.txt +24 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1253-01 - Mini SAS Module Config v3.5 c1.3.xml +597 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1253-01 - Mini SAS Module Config v4.000 c1.3.xml +597 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1253-02 - Mini SAS Module Config v3.5 c1.3.xml +597 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1253-02 - Mini SAS Module Config v4.000 c1.3.xml +597 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1253-xx - Mini SAS Module Config v4.003 c1.6.xml +599 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1271-xx - Ethernet Module Config v3.5 c1.2.xml +533 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1271-xx - Ethernet Module Config v4.000 c1.2.xml +533 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1271-xx - Ethernet Module Config v4.100 c1.3.xml +535 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1292-xx - SFP+ Cable Pull Module Config v4.000 c1.1.xml +449 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1309-04 - USB 3.0 Module Config v4.003 c1.2.xml +530 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1309-xx - USB 3.0 Module Config v3.5 c1.1.xml +528 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1309-xx - USB 3.0 Module Config v4.000 c1.1.xml +528 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1366-xx - QSFP Cable Pull Module Config v4.000 c1.1.xml +684 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1383-xx - eSATAp Module Config v4.000 c1.3.xml +542 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1521-02 - Mini SAS HD Module Config v4.000 c1.1.xml +670 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1521-03 - Mini SAS HD Module Config v4.000 c1.1.xml +670 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1521-05 - Mini SAS HD Module Config v4.005 c1.1.xml +672 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1521-05 - Mini SAS HD Module Config v4.007 c1.2.xml +672 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1521-xx - Mini SAS HD Module Config v4.003 c1.5.xml +672 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1663-xx - Quad QSFP Cable Pull Module Config v4.000 c1.1.xml +1523 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1675-05 - Mini SAS HD Module w Triggering Config v4.007 c1.3.xml +673 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1675-xx - Mini SAS HD Module w Triggering Config v4.000 c1.1.xml +673 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1917-xx - Dual SFP+ Cable Pull Module Config v4.000 c1.1.xml +614 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1971-01 - USB TypeC Module Config v4.000 c1.1.xml +637 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL1971-02 - USB TypeC Module Config v4.000 c1.1.xml +641 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2022-xx - RJ-45 Cable Module Config v4.104 c1.3.xml +535 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2058-xx - External PCIe Module Config v4.001 c1.1.xml +696 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2138-01 - SFP28 Cable Pull Module Config v4.000 c1.1.xml +449 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2146-01 - Gen4 OCuLink Cable Module Config v4.001 c1.1.xml +718 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2162-01 - 24G mini SAS HD Cable Break Module Config v4.000 c1.xml +672 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2171-01 - QSFP28 Cable Module Config v4.000 c1.xml +583 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2171-02 - QSFP28 Cable Module Config v4.000 c1.xml +583 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2341-01 - Gen4 External PCIe Cable Module v4.000.xml +625 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2602-xx - Multiprotocol Link Breaker.xml +414 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL2834-xx - -48V DC Breaker Module v5.000 c1.0.xml +374 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Cable Modules/QTL3000-xx - RJ-45 Cable Module v5.000 c1.4.xml +539 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1069-xx - SBB 2.0 Module Config v3.5 c1.1.xml +1614 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-01 - PCIe Card Module v4.000 c1.0.xml +1271 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-02 - PCIe Card Module Config v4.004 c1.2.xml +1289 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-02 - PCIe Card Module Config v4.005 c1.2.xml +1289 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-02 - PCIe Card Module Config v4.100 c1.4.xml +1290 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-04 - PCIe Card Module Config v4.001 c1.1.xml +1297 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1630-04 - PCIe Card Module Config v4.004 c1.2.xml +1301 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.004 c1.2.xml +1290 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.006 c1.3.xml +1291 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.001 c1.1.xml +1298 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.004 c1.2.xml +1302 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-04 - PCIe Card Module w Triggering Config v4.005 c1.5.xml +1307 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1688-05 - PCIe Card Module w Triggering Config v4.005 c1.xml +1307 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1848-01 - PCIe Lite Card Module Config v4.000.xml +219 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1848-02 - PCIe Lite Card Module Config v4.000.xml +286 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1919-01 - PCIe x8 Card Module Config v4.001 c1.4.xml +965 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL1920-01 - PCIe x8 Card Module w Triggering Config v4.000 c1.3.xml +966 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2019-xx - M.2 Horizontal Card Module Config v4.002 c1.1.xml +703 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2034-xx - M.2 M-Key Vertical Module Config v4.001 c1.1.xml +737 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2067-xx - PCIe SFF Module Config v4.000 c1.1.xml +971 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.006 c1.4.xml +1020 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.007 c1.4.xml +1022 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2073-01 - GEN3 PCIe Lite Card Module Config v4.001.xml +286 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2073-01 - PCIe Lite Card Module Config v4.000.xml +286 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2074-01 - GEN3 PCIe HS Card Module v4.005 c1.4.xml +1301 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2074-01 - PCIe Card Module Config CurrentLimit v4.004 c1.2.xml +1301 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.1.xml +1307 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.3.xml +1212 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v5.000 c1.4.xml +1212 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2094-01 - Sanblaze Dualport Riser Card Config v4.001 c1.1.xml +773 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.000 c1.1.xml +1306 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.4.xml +1211 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2135-xx - PCIe GEN4 Card Module w Triggering Config - Inrush Limit v4.001 c1.4.xml +1211 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2161-01 - EDSFF x8 Module Config v4.000 c1.1.xml +773 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2171-xx - EDSFF x8 Module w Triggering Config 4.001 c1.1.xml +785 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.000 c1.1.xml +715 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.005 c1.5.xml +715 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2272-01 - GEN4 EDSFF x8 Module Config v4.000 c1.1.xml +771 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.000 c1.1.xml +666 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.002 c1.2.xml +666 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2318-01 - SANBlaze U.2 Rack Riser Card Config v4.000 c1.1.xml +715 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2322-03 - GEN4 M.2 M-Key Vertical Breaker Module Config v5.001 c1.3.xml +738 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2322-xx - GEN4 M.2 M-Key Vertical Breaker Module Config v5.000 c1.1.xml +637 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2334-xx - Gen4 EDSFF x4 Card Module Config v4.000 c1.1.xml +615 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.000 c1.1.xml +621 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.001 c1.2.xml +624 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2357-xx - PCIe GEN5 Card Module Config v5.000 c1.1.xml +1242 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2358-xx - PCIe GEN5 Card Module w Triggering Config v5.000 c1.1.xml +1250 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.000 c1.1.xml +682 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.001 c1.2.xml +698 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2395-01 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.000 c1.1.xml +647 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2395-02 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.xml +742 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2395-03 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.xml +742 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2396-xx - PCIe GEN5 Card Module w inrush Config v5.000 c1.1.xml +1242 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2403-xx - Gen4 PCIe Lite Module Config v4.000.xml +293 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2515-xx - PCIe GEN4 Card Module w Triggering - Inrush Limit Config v4.001 c1.3.xml +1212 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.000.xml +259 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.003.xml +288 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2658-xx - Gen5 PCIe Lite Module w Inrush Config v4.000.xml +259 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2661-xx - GEN5 PCIe U.3 Breaker Config w Triggering v5.000 c1.1.xml +813 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2662-xx - GEN5 PCIe U.3 Breaker Config v5.000 c1.1.xml +801 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.000.xml +741 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.001 c1.2.xml +799 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.002 c1.4.xml +743 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker v5.000 c1.1.xml +741 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker +Triggering Config v5.000.xml +742 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering Config v5.001 c1.2.xml +800 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering v5.000 c1.1.xml +742 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2766-xx - GEN4 EDSFF E1 x8 Breaker Config v5.000.xml +982 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2767-xx - GEN4 EDSFF E3 x8 Breaker Config v5.000.xml +982 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2768-xx - GEN4 EDSFF E3 2T x8 Breaker Config v5.000.xml +982 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2776-xx - GEN4 EDSFF E1 x8 Breaker +Triggering Config v5.000.xml +983 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2777-xx - GEN4 EDSFF E3 x8 Breaker +Triggering Config v5.000.xml +983 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2778-xx - GEN4 EDSFF E3 2T x8 Breaker +Triggering Config v5.000.xml +983 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2798-xx - PCIe GEN5 Card Module w Triggering w Inrush Limit Config v5.000 c1.1.xml +1250 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2804-xx - GEN5 MCIO x4 to U.2 Breaker Config v5.000 c1.1.xml +813 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2805-xx - GEN5 MCIO x4 to U.2 Breaker + Triggering Config v5.000 c1.1.xml +814 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2813-xx - Gen5 AIC to U.2 Breaker v5.002 c1.3.xml +871 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2814-xx - GEN5 AIC to U.2 Breaker + Triggering Config v5.000 c1.1 .xml +807 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2814-xx - Gen5 AIC to U.2 Breaker + Triggering Config v5.002 c1.3.xml +872 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2892-xx - GEN5 EDSFF E1 x4 Breaker.xml +799 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2901-xx - GEN5 M.2 M-Key Horizontal Breaker Config v5.000 c1.1.xml +753 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2902-xx - GEN5 M.2 M-Key Horizontal Breaker w Triggering Config v5.000 c1.1.xml +762 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2902-xx- -Gen5 M.2 Horizontal Breaker +Triggering Config 5.000 c1.1.xml +762 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2925-xx - GEN5 EDSFF E1 x4 Breaker +Triggering.xml +800 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Card Modules/QTL2954-01 - fake delete.xml +947 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1177-xx - HS Module Config v3.5 c1.5.xml +592 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1177-xx - HS Module Config v4.000 c1.5.xml +592 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1177-xx - HS Module Config v4.006 c1.8.xml +594 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1215-xx - Lite Module Config v3.50.xml +203 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1215-xx - Lite Module Config v4.000.xml +203 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1301-xx - HS Lite Module Config v3.50.xml +281 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1301-xx - HS Lite Module Config v4.000.xml +281 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1429-01 - EMC HS Lite Module Config v4.000.xml +281 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1429-02 - EMC HS Lite Module Config v4.002.xml +234 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1623-03 - 12G HS Lite Module Config v4.001.xml +266 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1623-04 - 12G HS Lite Module Config v4.001.xml +266 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1680-xx - SCA2 Lite Module Config v4.001.xml +333 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1689-01 - 12G HS Module Config v4.001 c1.1.xml +594 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1689-04 - 12G HS Module Config v4.002 c1.1.xml +580 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1689-05 - 12G HS Module Config v4.002 c1.1.xml +579 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1743-02 - PCIe SFF Module Config v4.003 c1.3.xml +794 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1743-02 - PCIe SFF Module Config v4.006 c1.4.xml +698 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1743-xx - PCIe SFF Module Config v4.000 c1.1.xml +789 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1753-xx - 12G Lite Module Config v4.000.xml +192 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL1921-01 - EMC 12G HS Lite Module Config v4.000.xml +233 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2207-01 - GEN 4 PCIe U.2 Drive Module.xml +733 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2207-02 - GEN 4 PCIe U.2 Drive Module v5.000.xml +753 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2207-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.xml +763 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module v4.001.xml +751 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module.xml +746 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2245-01 - GEN 4 PCIe U.3 HS Drive Module v4.000.xml +789 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2245-xx - GEN 4 PCIe U.3 HS Drive Module.xml +823 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2266-01 - GEN 4 PCIe SFF HS Drive Module Triggering.xml +743 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2266-02 - GEN 4 PCIe SFF HS Drive Module Triggering v4.002.xml +758 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2266-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.xml +764 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2266-XX - GEN 4 PCIe SFF HS Drive Module Triggering.xml +747 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2270-01 - GEN 4 PCIe U.3 HS Drive Module Triggering v4.000.xml +798 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2270-xx - GEN 4 PCIe U.3 HS Drive Module Triggering.xml +835 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2542-02 - 24G SAS Drive Breaker Module v5.001.xml +530 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2542-xx - 24G SAS Drive Breaker v5.000 c1.1.xml +530 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2543-xx - 24G SAS Drive Breaker +Triggering v5.000 c1.1.xml +539 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2543-xx - 24G SAS Drive Breaker +Triggering v5.001 c1.3.xml +539 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2602-xx - Multiprotocol Link Breaker.xml +414 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.000.xml +792 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.001.xml +792 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.003.xml +793 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.007.xml +816 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.008.xml +818 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.000.xml +801 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.001.xml +801 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.003.xml +802 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module v5.007.xml +825 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2661-xx - Gen5 U.3 Drive Module + Triggering v5.000.xml +813 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2662-xx - Gen5 PCIe U.3 Drive Module v5.000.xml +801 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2757-xx - Gen5 SFF Lite Breaker Module Config v4.000.xml +272 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.xml +818 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker v5.001.xml +813 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.001.xml +814 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.002.xml +819 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.xml +819 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2892-xx - Gen5 EDSFF E1 x4 Breaker v5.001.xml +799 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2892-xx - Gen5 EDSFF E1 x4 Breaker v5.002.xml +801 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2940-xx - Gen5 EDSFF E3 x8 Breaker v5.000.xml +1105 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/QTL2941-xx - Gen5 EDSFF E3 x8 Breaker +Triggering v5.000.xml +1106 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Drive Modules/Standard Drive Module Config v3.5 c1.1.xml +463 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Switch Modules/QTL1490-xx - SATA Keyed HS Module Config v4.003 c1.6.xml +555 -0
- quarchpy/connection_specific/QPS/DeviceConfig/breaker/Switch Modules/QTL1490-xx - SATA Keyed HS Module Config v4.006 c1.8.xml +557 -0
- quarchpy/connection_specific/QPS/DeviceConfig/colors/default-colors.properties +64 -0
- quarchpy/connection_specific/QPS/DeviceConfig/colors/qtl2789-colors.properties +2 -0
- quarchpy/connection_specific/QPS/InstallType.dat +1 -0
- quarchpy/connection_specific/QPS/Power-Studio-QuickStart.pdf +0 -0
- quarchpy/connection_specific/QPS/QuarchPowerStudio.properties.xml +0 -1
- quarchpy/connection_specific/QPS/app.jar +0 -0
- quarchpy/connection_specific/QPS/app.properties +7 -0
- quarchpy/connection_specific/QPS/commandLineOptions.txt +19 -10
- quarchpy/connection_specific/QPS/license.txt +1 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/com.sun.istack-license.html +59 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/dorkbox-LICENSE.Apachev2 +218 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jSerialComm-LICENSE-APACHE-2.0 +202 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jSerialComm-LICENSE-LGPL-3.0 +165 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jakarta.activation-license.html +59 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jakarta.xml.bind-api-license.html +59 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/javassist-License.html +381 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jmdns-LICENSE.txt +202 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/jna-AL2.0 +177 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/kotlin-stdlib-LICENSE-2.0.txt +202 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/netty-LICENSE.txt +202 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/netty-NOTICE.txt +239 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/slf4j-LICENSE.txt +24 -0
- quarchpy/connection_specific/QPS/qis/3rdPartyLicenses/usb4java-LICENSE.md +20 -0
- quarchpy/connection_specific/QPS/qis/QuarchInstrumentServer.properties.xml +1 -0
- quarchpy/connection_specific/QPS/qis/README.txt +5 -5
- quarchpy/connection_specific/QPS/qis/help.txt +112 -61
- quarchpy/connection_specific/QPS/qis/license.txt +1 -0
- quarchpy/connection_specific/QPS/qis/qis-NoGUI.bat +1 -1
- quarchpy/connection_specific/QPS/qis/qis-NoGUI.sh +1 -1
- quarchpy/connection_specific/QPS/qis/qis.bat +1 -1
- quarchpy/connection_specific/QPS/qis/qis.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis.sh +1 -1
- quarchpy/connection_specific/QPS/qis/qis_lib/Collections-2.4.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Desktop-1.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/EvalEx-3.5.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Executor-3.13.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/JNA-1.2.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/OS-1.8.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/SystemTray-4.4.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Updates-1.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Utilities-1.46.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/cinterface-2.5.6.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/commons-compiler-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/commons-compiler-jdk-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/gson-2.13.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/istack-commons-runtime-3.0.11.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jakarta.activation-api-2.1.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jakarta.xml.bind-api-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/janino-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/javassist-3.29.2-GA.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jaxb-core-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jaxb-runtime-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jmdns-3.6.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jna-jpms-5.12.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jna-platform-jpms-5.12.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jul-to-slf4j-2.0.17.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/kotlin-stdlib-1.9.21.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/log4j-api-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/log4j-core-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/log4j-layout-template-json-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/log4j-slf4j2-impl-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-buffer-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-codec-base-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-codec-http-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-common-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-handler-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-transport-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/quarchcommon-2.1.9.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/slf4j-api-2.0.17.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/torridoncommon-1.2.8.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/usb4java-1.3.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/resources/filters/Example.txt +36 -0
- quarchpy/connection_specific/QPS/qis/resources/filters/iec_filters.xml +17 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/darwin-x86-64/libusb4java.dylib +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/linux-aarch64/libusb4java.so +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/linux-arm/libusb4java.so +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/linux-x86/libusb4java.so +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/linux-x86-64/libusb4java.so +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/win32-x86/libusb4java.dll +0 -0
- quarchpy/connection_specific/QPS/qis/resources/org/usb4java/win32-x86-64/libusb4java.dll +0 -0
- quarchpy/connection_specific/QPS/qps-command-reference.html +339 -0
- quarchpy/connection_specific/QPS/qps.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/EvalEx-3.5.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/commons-compiler-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/commons-compiler-jdk-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/commons-io-2.19.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/controlsfx-11.2.2.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/gson-2.13.1.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/guava-33.4.8-jre.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/istack-commons-runtime-3.0.11.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jakarta.activation-api-2.1.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jakarta.xml.bind-api-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/janino-3.1.12.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jaxb-core-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jaxb-runtime-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jfa-1.2.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jfxutilities-1.0.5.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jna-5.17.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jul-to-slf4j-2.0.17.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/log4j-api-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/log4j-core-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/log4j-layout-template-json-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/log4j-slf4j2-impl-2.25.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-buffer-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-codec-base-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-codec-http-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-common-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-handler-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-transport-4.2.2.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/nsmenufx-3.1.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/quarchcommon-2.1.9.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/qutils-1.0.2.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/slf4j-api-2.0.17.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/txw2-4.0.0.jar +0 -0
- quarchpy/connection_specific/QPS/resources/InstallBanner.bmp +0 -0
- quarchpy/connection_specific/QPS/resources/QPS.icns +0 -0
- quarchpy/connection_specific/QPS/resources/QPS.ico +0 -0
- quarchpy/connection_specific/QPS/resources/QPS.png +0 -0
- quarchpy/connection_specific/QPS/resources/QuarchIcon_128x128.png +0 -0
- quarchpy/connection_specific/QPS/resources/QuarchIcon_16x16.png +0 -0
- quarchpy/connection_specific/QPS/resources/QuarchIcon_256x256.png +0 -0
- quarchpy/connection_specific/QPS/resources/QuarchIcon_32x32.png +0 -0
- quarchpy/connection_specific/QPS/resources/QuarchIcon_64x64.png +0 -0
- quarchpy/connection_specific/QPS/resources/profiles/3_PHASE_PAM_AC_DEFAULT.rcf +533 -0
- quarchpy/connection_specific/QPS/resources/profiles/3_PHASE_PAM_AC_DEFAULT.scf +90 -0
- quarchpy/connection_specific/QPS/resources/profiles/3_PHASE_PAM_AC_FULL.rcf +830 -0
- quarchpy/connection_specific/QPS/resources/profiles/3_PHASE_PAM_AC_FULL.scf +144 -0
- quarchpy/connection_specific/QPS/resources/profiles/PAM_EXAMPLE_CONFIG.rcf +193 -0
- quarchpy/connection_specific/QPS/scriptCommands.txt +161 -22
- quarchpy/connection_specific/QPS/whats-new.txt +27 -0
- quarchpy/connection_specific/connection_QIS.py +1513 -1777
- quarchpy/connection_specific/connection_QPS.py +96 -11
- quarchpy/connection_specific/connection_ReST.py +29 -16
- quarchpy/connection_specific/connection_TCP.py +1 -1
- quarchpy/connection_specific/connection_Telnet.py +8 -2
- quarchpy/connection_specific/connection_USB.py +12 -13
- quarchpy/connection_specific/jdk_jres/__init__.py +0 -0
- quarchpy/connection_specific/jdk_jres/fix_permissions.py +60 -0
- quarchpy/connection_specific/mDNS.py +139 -0
- quarchpy/connection_specific/serial/rfc2217.py +2 -2
- quarchpy/connection_specific/serial/tools/list_ports_common.py +1 -4
- quarchpy/connection_specific/serial/tools/list_ports_linux.py +0 -6
- quarchpy/connection_specific/serial/tools/list_ports_osx.py +1 -6
- quarchpy/connection_specific/serial/tools/list_ports_posix.py +0 -5
- quarchpy/connection_specific/serial/tools/list_ports_windows.py +0 -6
- quarchpy/connection_specific/serial/urlhandler/protocol_alt.py +0 -4
- quarchpy/connection_specific/serial/urlhandler/protocol_hwgrep.py +0 -5
- quarchpy/connection_specific/serial/urlhandler/protocol_loop.py +1 -1
- quarchpy/connection_specific/serial/urlhandler/protocol_socket.py +1 -1
- quarchpy/connection_specific/serial/urlhandler/protocol_spy.py +0 -5
- quarchpy/connection_specific/usb_libs/usb1.py +4 -4
- quarchpy/debug/SystemTest.py +152 -41
- quarchpy/debug/module_debug.py +52 -38
- quarchpy/debug/simple_terminal.py +37 -28
- quarchpy/debug/upgrade_quarchpy.py +10 -14
- quarchpy/debug/versionCompare.py +2 -3
- quarchpy/device/__init__.py +10 -4
- quarchpy/device/device.py +1279 -402
- quarchpy/device/device_fixture_idn_info.py +8 -0
- quarchpy/device/device_idn_info.py +100 -0
- quarchpy/device/device_network_info.py +18 -0
- quarchpy/device/discovered_device.py +150 -0
- quarchpy/device/packet_processing.py +88 -0
- quarchpy/device/quarchArray.py +10 -6
- quarchpy/device/quarchPPM.py +395 -40
- quarchpy/device/quarchQPS.py +771 -294
- quarchpy/device/scanDevices.py +329 -230
- quarchpy/docs/CHANGES.rst +478 -328
- quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
- quarchpy/docs/_build/doctrees/environment.pickle +0 -0
- quarchpy/docs/_build/doctrees/index.doctree +0 -0
- quarchpy/docs/_build/doctrees/readme.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
- quarchpy/docs/_build/html/.buildinfo +4 -4
- quarchpy/docs/_build/html/CHANGES.html +717 -484
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +478 -314
- quarchpy/docs/_build/html/_sources/index.rst.txt +23 -23
- quarchpy/docs/_build/html/_sources/readme.rst.txt +41 -41
- quarchpy/docs/_build/html/_sources/source/modules.rst.txt +7 -7
- quarchpy/docs/_build/html/_sources/source/quarchpy.calibration.rst.txt +78 -78
- quarchpy/docs/_build/html/_sources/source/quarchpy.config_files.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.connection_specific.rst.txt +76 -76
- quarchpy/docs/_build/html/_sources/source/quarchpy.debug.rst.txt +38 -38
- quarchpy/docs/_build/html/_sources/source/quarchpy.device.rst.txt +54 -54
- quarchpy/docs/_build/html/_sources/source/quarchpy.disk_test.rst.txt +126 -126
- quarchpy/docs/_build/html/_sources/source/quarchpy.fio.rst.txt +30 -30
- quarchpy/docs/_build/html/_sources/source/quarchpy.iometer.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.qis.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.qps.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.rst.txt +50 -50
- quarchpy/docs/_build/html/_sources/source/quarchpy.user_interface.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.utilities.rst.txt +22 -22
- quarchpy/docs/_build/html/_static/alabaster.css +662 -700
- quarchpy/docs/_build/html/_static/basic.css +905 -904
- quarchpy/docs/_build/html/_static/doctools.js +106 -280
- quarchpy/docs/_build/html/_static/documentation_options.js +12 -11
- quarchpy/docs/_build/html/_static/language_data.js +192 -297
- quarchpy/docs/_build/html/_static/pygments.css +84 -82
- quarchpy/docs/_build/html/_static/searchtools.js +510 -404
- quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -0
- quarchpy/docs/_build/html/genindex.html +1876 -1430
- quarchpy/docs/_build/html/index.html +223 -188
- quarchpy/docs/_build/html/objects.inv +0 -0
- quarchpy/docs/_build/html/py-modindex.html +300 -306
- quarchpy/docs/_build/html/readme.html +137 -137
- quarchpy/docs/_build/html/search.html +123 -125
- quarchpy/docs/_build/html/searchindex.js +1 -1
- quarchpy/docs/_build/html/source/changelog.html +805 -537
- quarchpy/docs/_build/html/source/licenses.html +181 -181
- quarchpy/docs/_build/html/source/modules.html +222 -214
- quarchpy/docs/_build/html/source/quarchpy.calibration.html +147 -147
- quarchpy/docs/_build/html/source/quarchpy.config_files.html +136 -136
- quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +1072 -615
- quarchpy/docs/_build/html/source/quarchpy.debug.html +241 -247
- quarchpy/docs/_build/html/source/quarchpy.device.html +4087 -1024
- quarchpy/docs/_build/html/source/quarchpy.disk_test.html +220 -220
- quarchpy/docs/_build/html/source/quarchpy.fio.html +218 -164
- quarchpy/docs/_build/html/source/quarchpy.html +823 -250
- quarchpy/docs/_build/html/source/quarchpy.iometer.html +271 -184
- quarchpy/docs/_build/html/source/quarchpy.qis.html +985 -249
- quarchpy/docs/_build/html/source/quarchpy.qps.html +186 -213
- quarchpy/docs/_build/html/source/quarchpy.user_interface.html +278 -319
- quarchpy/docs/_build/html/source/quarchpy.utilities.html +228 -211
- quarchpy/docs/_build/html/source/readme.html +147 -147
- quarchpy/docs/conf.py +56 -56
- quarchpy/docs/index.rst +23 -23
- quarchpy/docs/make.bat +35 -35
- quarchpy/docs/readme.rst +41 -41
- quarchpy/docs/source/modules.rst +7 -7
- quarchpy/docs/source/quarchpy.calibration.rst +78 -78
- quarchpy/docs/source/quarchpy.config_files.rst +22 -22
- quarchpy/docs/source/quarchpy.connection_specific.rst +76 -76
- quarchpy/docs/source/quarchpy.debug.rst +38 -38
- quarchpy/docs/source/quarchpy.device.rst +54 -54
- quarchpy/docs/source/quarchpy.disk_test.rst +126 -126
- quarchpy/docs/source/quarchpy.fio.rst +30 -30
- quarchpy/docs/source/quarchpy.iometer.rst +22 -22
- quarchpy/docs/source/quarchpy.qis.rst +22 -22
- quarchpy/docs/source/quarchpy.qps.rst +22 -22
- quarchpy/docs/source/quarchpy.rst +50 -50
- quarchpy/docs/source/quarchpy.user_interface.rst +22 -22
- quarchpy/docs/source/quarchpy.utilities.rst +22 -22
- quarchpy/fio/FIO_interface.py +258 -9
- quarchpy/fio/{test_performance_class.py → HIDEtest_performance_class.py} +533 -533
- quarchpy/fio/fioDiskFinder.py +1 -1
- quarchpy/fio/performanceClass.py +5 -4
- quarchpy/install_qps.py +369 -0
- quarchpy/qis/StreamHeaderInfo.py +5 -4
- quarchpy/qis/qisFuncs.py +234 -96
- quarchpy/qps/__init__.py +2 -2
- quarchpy/qps/qpsFuncs.py +238 -139
- quarchpy/run.py +103 -56
- quarchpy/user_interface/user_interface.py +201 -158
- quarchpy/utilities/TestCenter.py +64 -45
- quarchpy/utilities/TimeValue.py +4 -3
- quarchpy/utilities/Version.py +50 -0
- {quarchpy-2.1.11.dev4.dist-info → quarchpy-2.2.17.dev1.dist-info}/METADATA +174 -10
- quarchpy-2.2.17.dev1.dist-info/RECORD +763 -0
- {quarchpy-2.1.11.dev4.dist-info → quarchpy-2.2.17.dev1.dist-info}/WHEEL +1 -2
- quarchpy/.idea/.gitignore +0 -3
- quarchpy/.idea/inspectionProfiles/profiles_settings.xml +0 -6
- quarchpy/.idea/misc.xml +0 -4
- quarchpy/.idea/modules.xml +0 -8
- quarchpy/.idea/quarchpy.iml +0 -12
- quarchpy/.idea/workspace.xml +0 -146
- quarchpy/connection_specific/QPS/License/LGPL.txt +0 -167
- quarchpy/connection_specific/QPS/License/Material-Icons.txt +0 -1
- quarchpy/connection_specific/QPS/License/NOTICE.txt +0 -143
- quarchpy/connection_specific/QPS/License/Netty-license.txt +0 -143
- quarchpy/connection_specific/QPS/License/controlsfx-license.txt +0 -26
- quarchpy/connection_specific/QPS/License/usb4java-license.txt +0 -167
- quarchpy/connection_specific/QPS/qis/License/LGPL.txt +0 -167
- quarchpy/connection_specific/QPS/qis/License/NOTICE.txt +0 -143
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.4.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.5.01.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.5.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.6.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.6.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.7.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/QuarchCommon-0.2.3.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/QuarchCommon-0.2.4.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/commons-lang3-3.2.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-darwin-x86-64.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-linux-aarch64.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-linux-arm.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-linux-x86-64.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-linux-x86.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-win32-x86-64.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/libusb4java-1.3.0-win32-x86.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/netty-all-4.1.43.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/usb4java-1.3.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps.bat +0 -2
- quarchpy/connection_specific/QPS/qps.sh +0 -2
- quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.2.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.3.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.4.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/controlsfx-8.40.13.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/controlsfx-8.40.14.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/controlsfx-samples-8.40.13.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/fxsampler-1.0.10.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jfxtras-labs-8.0-r6-SNAPSHOT.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/jfxtras-labs-8.0-r6.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-all-4.0.37.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-all-4.1.22.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-all-4.1.22.Final_2.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/netty-all-4.1.43.Final.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/org.eclipse.fx.ide.css.jfx8_1.2.0.201501301049.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/org.eclipse.fx.ide.css.jfx8_2.4.0.201605112122.jar +0 -0
- quarchpy/debug/quarchpy - Shortcut.lnk +0 -0
- quarchpy/device/deleteme.py +0 -100
- quarchpy-2.1.11.dev4.dist-info/RECORD +0 -489
- /quarchpy/connection_specific/QPS/{License → 3rdPartyLicenses}/Material-Icons-license.txt +0 -0
- /quarchpy/connection_specific/QPS/DeviceConfig/{QTL1995-02.XML → QTL1995-02.xml} +0 -0
- /quarchpy/connection_specific/QPS/DeviceConfig/{QTL1999-02.XML → QTL1999-02.xml} +0 -0
- /quarchpy/connection_specific/QPS/DeviceConfig/{QTL2312-01.XML → QTL2312-01.xml} +0 -0
- {quarchpy-2.1.11.dev4.dist-info → quarchpy-2.2.17.dev1.dist-info}/top_level.txt +0 -0
quarchpy/device/scanDevices.py
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
|
-
import time
|
|
2
|
-
import socket
|
|
3
|
-
import sys
|
|
4
|
-
import operator
|
|
5
1
|
import logging
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
logger = logging.getLogger(__name__)
|
|
3
|
+
import operator
|
|
4
|
+
import socket
|
|
8
5
|
from sys import platform
|
|
6
|
+
from typing import Optional, List
|
|
9
7
|
|
|
10
8
|
from quarchpy.config_files.quarch_config_parser import return_module_type_list
|
|
11
|
-
from quarchpy.user_interface import*
|
|
9
|
+
from quarchpy.user_interface import *
|
|
12
10
|
from quarchpy.user_interface import User_interface
|
|
11
|
+
|
|
13
12
|
try:
|
|
14
|
-
from quarchpy.connection_specific.connection_USB import importUSB
|
|
13
|
+
from quarchpy.connection_specific.connection_USB import importUSB
|
|
15
14
|
except:
|
|
16
15
|
printText("System Compatibility issue - Is your Python architecture consistent with the Operating System?")
|
|
17
16
|
pass
|
|
18
17
|
from quarchpy.device import quarchDevice, quarchArray
|
|
18
|
+
from quarchpy.device.device_idn_info import IDNInfo
|
|
19
|
+
from quarchpy.device.device_fixture_idn_info import FixtureIDNInfo
|
|
20
|
+
from quarchpy.device.device_network_info import DeviceNetworkInfo
|
|
21
|
+
from quarchpy.device.packet_processing import decode_locate_packet
|
|
22
|
+
from quarchpy.device.discovered_device import DiscoveredDevice
|
|
19
23
|
from quarchpy.connection_specific.connection_Serial import serialList, serial
|
|
20
24
|
from quarchpy.device.quarchArray import isThisAnArrayController
|
|
21
25
|
from quarchpy.connection_specific.connection_USB import TQuarchUSB_IF
|
|
22
|
-
from quarchpy.connection_specific import connection_ReST
|
|
23
|
-
|
|
24
|
-
# TODO: bodge bodge bodge
|
|
25
|
-
from quarchpy.utilities import TestCenter
|
|
26
|
-
|
|
26
|
+
from quarchpy.connection_specific import connection_ReST, connection_TCP
|
|
27
|
+
from quarchpy.connection_specific.mDNS import MyListener
|
|
27
28
|
|
|
28
29
|
'''
|
|
29
30
|
Merge two dictionaries and return the result
|
|
30
31
|
'''
|
|
32
|
+
|
|
33
|
+
|
|
31
34
|
def mergeDict(x, y):
|
|
32
|
-
if
|
|
35
|
+
if y is None:
|
|
33
36
|
return x
|
|
34
37
|
else:
|
|
35
38
|
merged = x.copy()
|
|
@@ -40,14 +43,16 @@ def mergeDict(x, y):
|
|
|
40
43
|
'''
|
|
41
44
|
Scan for Quarch modules across all available COM ports
|
|
42
45
|
'''
|
|
43
|
-
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def list_serial(debugPrint=False):
|
|
44
49
|
serial_ports = serialList.comports()
|
|
45
50
|
serial_modules = dict()
|
|
46
51
|
|
|
47
52
|
for i in serial_ports:
|
|
48
|
-
|
|
53
|
+
logger.debug("Scanning for Quarch devices on: " + str(i))
|
|
49
54
|
try:
|
|
50
|
-
ser = serial.Serial(i[0], 19200, timeout=0.5)
|
|
55
|
+
ser = serial.Serial(i[0], 19200, timeout=0.5, write_timeout=0.5)
|
|
51
56
|
ser.write(b'*serial?\r\n')
|
|
52
57
|
s = ser.read(size=64)
|
|
53
58
|
serial_module = s.splitlines()[1]
|
|
@@ -57,16 +62,17 @@ def list_serial(debuPrint=False):
|
|
|
57
62
|
if "QTL" not in serial_module:
|
|
58
63
|
serial_module = "QTL" + serial_module
|
|
59
64
|
|
|
60
|
-
|
|
65
|
+
# Keep for debugging
|
|
66
|
+
# module = str(i[0]), str(serial_module)
|
|
61
67
|
|
|
62
68
|
if serial_module[7] == "-" and serial_module[10] == "-":
|
|
63
69
|
serial_modules["SERIAL:" + str(i[0])] = serial_module
|
|
64
|
-
|
|
70
|
+
logger.debug("Located quarch module: " + serial_module)
|
|
65
71
|
|
|
66
72
|
ser.close()
|
|
67
|
-
|
|
73
|
+
logger.debug("Finished scanning for Quarch devices on: " + str(i))
|
|
68
74
|
except Exception as err:
|
|
69
|
-
|
|
75
|
+
logger.debug("Exception during serial scan: " + str(err))
|
|
70
76
|
pass
|
|
71
77
|
return serial_modules
|
|
72
78
|
|
|
@@ -74,7 +80,9 @@ def list_serial(debuPrint=False):
|
|
|
74
80
|
'''
|
|
75
81
|
Scan for all Quarch devices available over USB
|
|
76
82
|
'''
|
|
77
|
-
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def list_USB(debuPrint=False, discovered_devices: Optional[List[DiscoveredDevice]] = None):
|
|
78
86
|
QUARCH_VENDOR_ID = 0x16d0
|
|
79
87
|
QUARCH_PRODUCT_ID1 = 0x0449
|
|
80
88
|
|
|
@@ -83,7 +91,8 @@ def list_USB(debuPrint=False):
|
|
|
83
91
|
context = usb1.USBContext()
|
|
84
92
|
usb_list = context.getDeviceList()
|
|
85
93
|
|
|
86
|
-
if
|
|
94
|
+
if debuPrint:
|
|
95
|
+
printText(usb_list)
|
|
87
96
|
|
|
88
97
|
usb_modules = dict()
|
|
89
98
|
hdList = []
|
|
@@ -91,35 +100,35 @@ def list_USB(debuPrint=False):
|
|
|
91
100
|
usb_permission_error = False
|
|
92
101
|
|
|
93
102
|
for i in usb_list:
|
|
103
|
+
i_handle = None
|
|
94
104
|
if hex(i.device_descriptor.idVendor) == hex(QUARCH_VENDOR_ID) and hex(i.device_descriptor.idProduct) == hex(
|
|
95
105
|
QUARCH_PRODUCT_ID1):
|
|
96
106
|
try:
|
|
97
|
-
|
|
107
|
+
logger.debug("Opening USB handle to quarch module: " + str(i))
|
|
98
108
|
i_handle = i.open()
|
|
99
109
|
except Exception as err:
|
|
100
|
-
|
|
110
|
+
logger.debug("USB port open exception: " + str(err))
|
|
101
111
|
if "LIBUSB_ERROR_ACCESS [-3]" in str(err):
|
|
102
|
-
|
|
112
|
+
logger.debug("Unable to communicate with Quarch module over USB, device may be in use already.")
|
|
103
113
|
if not platform == "win32":
|
|
104
114
|
if not os.path.isfile("/etc/udev/rules.d/20-quarchmodules.rules"):
|
|
105
115
|
usb_permission_error = True
|
|
106
116
|
usb_modules["USB:???"] = "LOCKED MODULE"
|
|
107
117
|
|
|
108
|
-
|
|
109
118
|
try:
|
|
110
119
|
module_sn = i_handle.getASCIIStringDescriptor(3)
|
|
111
|
-
if "1944" in module_sn or "2098" in module_sn
|
|
120
|
+
if "1944" in module_sn or "2098" in module_sn: #use enclosure number instead of serial number
|
|
112
121
|
hdList.append(i)
|
|
113
122
|
except Exception as err:
|
|
114
|
-
|
|
123
|
+
logger.debug("USB exception on reading serial number: " + str(err))
|
|
115
124
|
usb_modules["USB:???"] = "LOCKED MODULE"
|
|
116
125
|
continue
|
|
117
126
|
|
|
118
127
|
try:
|
|
119
|
-
if
|
|
120
|
-
2) + " " + i_handle.getASCIIStringDescriptor(1))
|
|
128
|
+
if debuPrint:
|
|
129
|
+
printText(i_handle.getASCIIStringDescriptor(3) + " " + i_handle.getASCIIStringDescriptor(2) + " " + i_handle.getASCIIStringDescriptor(1))
|
|
121
130
|
except Exception as err:
|
|
122
|
-
|
|
131
|
+
logger.error("USB exception on reading descriptor strings: " + str(err))
|
|
123
132
|
usb_modules["USB:???"] = "LOCKED MODULE"
|
|
124
133
|
continue
|
|
125
134
|
|
|
@@ -128,27 +137,24 @@ def list_USB(debuPrint=False):
|
|
|
128
137
|
else:
|
|
129
138
|
module_sn = module_sn.strip()
|
|
130
139
|
|
|
131
|
-
if
|
|
140
|
+
if debuPrint:
|
|
141
|
+
printText(module_sn)
|
|
132
142
|
|
|
133
143
|
usb_modules["USB:" + module_sn] = module_sn
|
|
134
|
-
|
|
144
|
+
logger.debug("Located USB module: " + module_sn)
|
|
135
145
|
|
|
136
146
|
try:
|
|
137
|
-
|
|
147
|
+
logger.debug("Closing USB handle to quarch module: " + str(i))
|
|
138
148
|
i_handle.close()
|
|
139
149
|
except Exception as err:
|
|
140
|
-
|
|
150
|
+
logger.error("Exception on closing USB port: " + str(err))
|
|
141
151
|
continue
|
|
142
152
|
|
|
143
|
-
#
|
|
144
|
-
|
|
153
|
+
# Before returning the list of usb modules scan through the list for a 1944 create a quarch device and use sendCommand("*enclosure?")
|
|
145
154
|
for module in hdList:
|
|
146
|
-
|
|
147
|
-
QquarchDevice = None
|
|
148
|
-
quarchDevice = None
|
|
149
|
-
quarchDevice = module
|
|
155
|
+
quarchUSBDevice = module
|
|
150
156
|
QquarchDevice = TQuarchUSB_IF(context)
|
|
151
|
-
QquarchDevice.connection =
|
|
157
|
+
QquarchDevice.connection = quarchUSBDevice
|
|
152
158
|
QquarchDevice.OpenPort()
|
|
153
159
|
time.sleep(0.02) # sleep sometimes needed before sending comand directly after opening device
|
|
154
160
|
QquarchDevice.SetTimeout(2000)
|
|
@@ -160,15 +166,45 @@ def list_USB(debuPrint=False):
|
|
|
160
166
|
if keyToFind in usb_modules:
|
|
161
167
|
del usb_modules[keyToFind]
|
|
162
168
|
usb_modules["USB:QTL" + enclNo] = "QTL" + enclNo
|
|
163
|
-
|
|
169
|
+
logger.debug("Located USB module: QTL" + enclNo)
|
|
164
170
|
|
|
165
171
|
QquarchDevice.ClosePort()
|
|
166
172
|
QquarchDevice.deviceHandle = None
|
|
167
173
|
|
|
168
|
-
|
|
169
174
|
if usb_permission_error:
|
|
170
|
-
|
|
171
|
-
|
|
175
|
+
logger.warning("Potential permission error accessing Quarch module(s) via USB.")
|
|
176
|
+
logger.warning("If unknown, run the command 'sudo python3 -m quarchpy.run debug --fixusb' to add a new usb rule.")
|
|
177
|
+
|
|
178
|
+
# Ensure discovered usb devices are populated if required.
|
|
179
|
+
# Devices connected via USB must be enquired via *IDN?
|
|
180
|
+
if discovered_devices is not None:
|
|
181
|
+
try:
|
|
182
|
+
index = 0
|
|
183
|
+
cmd = "*IDN?"
|
|
184
|
+
# Create a temporary list to ensure nothing is overwritten.
|
|
185
|
+
temp_discovered_devices_list: List[DiscoveredDevice] = []
|
|
186
|
+
for key, value in usb_modules.items():
|
|
187
|
+
# Ensure to skip any locked modules.
|
|
188
|
+
if key != "USB:???":
|
|
189
|
+
idn_info = IDNInfo()
|
|
190
|
+
fix_idn_info = FixtureIDNInfo()
|
|
191
|
+
device_net_info = DeviceNetworkInfo()
|
|
192
|
+
discovered_device = DiscoveredDevice(idn_info, fix_idn_info, device_net_info)
|
|
193
|
+
temp_discovered_devices_list.append(discovered_device)
|
|
194
|
+
quarch_device = quarchDevice(key)
|
|
195
|
+
response = quarch_device.send_command(cmd)
|
|
196
|
+
is_idn_valid = temp_discovered_devices_list[index].idn_info.parse_idn_response(response)
|
|
197
|
+
# Cleanup connection to module
|
|
198
|
+
quarch_device.close_connection()
|
|
199
|
+
del quarch_device
|
|
200
|
+
if is_idn_valid:
|
|
201
|
+
index += 1
|
|
202
|
+
else:
|
|
203
|
+
temp_discovered_devices_list.remove(discovered_device)
|
|
204
|
+
|
|
205
|
+
discovered_devices.extend(temp_discovered_devices_list)
|
|
206
|
+
except Exception as e:
|
|
207
|
+
logger.debug(str(e))
|
|
172
208
|
|
|
173
209
|
return usb_modules
|
|
174
210
|
|
|
@@ -176,43 +212,48 @@ def list_USB(debuPrint=False):
|
|
|
176
212
|
'''
|
|
177
213
|
List all Quarch devices found over LAN, using a UDP broadcast scan
|
|
178
214
|
'''
|
|
179
|
-
def list_network(target_conn="all", debugPring=False, lanTimeout=1, ipAddressLookup=None):
|
|
180
215
|
|
|
181
|
-
ipList = socket.gethostbyname_ex(socket.gethostname())
|
|
182
|
-
logging.debug(os.path.basename(__file__) + ": Discovered the following interfaces: " + str(ipList))
|
|
183
|
-
retVal={}
|
|
184
|
-
for ip in ipList[2]:
|
|
185
|
-
# Create and configure the socket for broadcast.
|
|
186
|
-
mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
187
|
-
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
|
188
|
-
mySocket.settimeout(lanTimeout)
|
|
189
216
|
|
|
190
|
-
|
|
217
|
+
def list_network(target_conn="all", debugPrint=False, lanTimeout=1, ipAddressLookup=None, discovered_devices: Optional[List[DiscoveredDevice]] = None):
|
|
218
|
+
retVal = {}
|
|
219
|
+
lan_modules = dict()
|
|
220
|
+
specifiedDevice = None
|
|
221
|
+
moduleFound = None
|
|
222
|
+
mySocket = None
|
|
223
|
+
ip_module = None
|
|
224
|
+
module_name = None
|
|
225
|
+
# Broadcast the message.
|
|
226
|
+
logger.debug("Broadcast LAN discovery message for UDP scan to all network interfaces")
|
|
227
|
+
ipList = socket.gethostbyname_ex(socket.gethostname())
|
|
228
|
+
ipList[2].append("")
|
|
229
|
+
logger.debug(os.path.basename(__file__) + ": Discovered the following interfaces: " + str(ipList))
|
|
191
230
|
|
|
192
|
-
|
|
231
|
+
for ip in ipList[2]:
|
|
232
|
+
logger.debug(os.path.basename(__file__) + ": Broadcasting on : " + ip)
|
|
233
|
+
try:
|
|
234
|
+
mySocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
235
|
+
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
|
236
|
+
mySocket.settimeout(lanTimeout)
|
|
237
|
+
mySocket.bind((ip, 56732))
|
|
238
|
+
except Exception as err:
|
|
239
|
+
logger.debug("Error while trying to bind to network interfaces: " + " Error: " + str(err))
|
|
193
240
|
|
|
194
241
|
if ipAddressLookup is not None:
|
|
195
242
|
# Attempts to find the device through UDP then REST
|
|
196
|
-
specifiedDevice = lookupDevice(str(ipAddressLookup).strip(), mySocket, lan_modules )
|
|
197
|
-
|
|
198
|
-
|
|
243
|
+
specifiedDevice, moduleFound = lookupDevice(str(ipAddressLookup).strip(), mySocket, lan_modules, moduleFound)
|
|
199
244
|
|
|
200
|
-
# Broadcast the message.
|
|
201
|
-
logging.debug("Broadcast LAN discovery message for UDP scan")
|
|
202
|
-
mySocket.bind((ip,56732))
|
|
203
245
|
mySocket.sendto(b'Discovery: Who is out there?\0\n', ('255.255.255.255', 30303))
|
|
204
|
-
#mySocket.sendto(b'Discovery: Who is out there?\0\n', ('255.255.255.255', 30303)) #56732
|
|
205
|
-
|
|
206
246
|
counter = 0
|
|
207
|
-
|
|
208
247
|
# Receive messages until timeout.
|
|
209
248
|
while True:
|
|
210
249
|
network_modules = {}
|
|
250
|
+
msg_received = None
|
|
211
251
|
counter += 1
|
|
212
252
|
# Receive raw message until timeout, then break.
|
|
213
253
|
try:
|
|
214
|
-
msg_received = mySocket.recvfrom(
|
|
215
|
-
except:
|
|
254
|
+
msg_received = mySocket.recvfrom(1024)
|
|
255
|
+
except Exception as e:
|
|
256
|
+
logger.debug(str(e))
|
|
216
257
|
# check if any a device was targeted directly and allow parse
|
|
217
258
|
if specifiedDevice is not None:
|
|
218
259
|
msg_received = specifiedDevice
|
|
@@ -221,11 +262,21 @@ def list_network(target_conn="all", debugPring=False, lanTimeout=1, ipAddressLoo
|
|
|
221
262
|
break
|
|
222
263
|
cont = 0
|
|
223
264
|
|
|
224
|
-
# print(msg_received)
|
|
225
265
|
# Used split \r\n since values of 13 or 10 were looked at as /r and /n when using splitlines
|
|
226
266
|
# This fixes for all cases except if 13 is followed by 10.
|
|
227
267
|
splits = msg_received[0].split(b"\r\n")
|
|
228
268
|
del splits[-1]
|
|
269
|
+
|
|
270
|
+
# Decode the discovered device and extend the provided discovered_devices list if required
|
|
271
|
+
if discovered_devices is not None:
|
|
272
|
+
idn_info = IDNInfo()
|
|
273
|
+
fix_idn_info = FixtureIDNInfo()
|
|
274
|
+
device_net_info = DeviceNetworkInfo()
|
|
275
|
+
discovered_device: DiscoveredDevice = DiscoveredDevice(idn_info, fix_idn_info, device_net_info)
|
|
276
|
+
discovered_device.device_info = decode_locate_packet(splits)
|
|
277
|
+
discovered_device.populate_device_info()
|
|
278
|
+
discovered_devices.append(discovered_device)
|
|
279
|
+
|
|
229
280
|
for lines in splits:
|
|
230
281
|
if cont <= 1:
|
|
231
282
|
index = cont
|
|
@@ -234,14 +285,10 @@ def list_network(target_conn="all", debugPring=False, lanTimeout=1, ipAddressLoo
|
|
|
234
285
|
else:
|
|
235
286
|
index = repr(lines[0]).replace("'", "")
|
|
236
287
|
data = repr(lines[1:]).replace("'", "").replace("b", "")
|
|
237
|
-
|
|
238
288
|
network_modules[index] = data
|
|
239
|
-
|
|
240
289
|
module_name = get_user_level_serial_number(network_modules)
|
|
241
|
-
|
|
242
|
-
|
|
290
|
+
logger.debug("Found UDP response: " + module_name)
|
|
243
291
|
ip_module = msg_received[1][0].strip()
|
|
244
|
-
|
|
245
292
|
try:
|
|
246
293
|
# Add a QTL before modules without it.
|
|
247
294
|
if "QTL" not in module_name.decode("utf-8"):
|
|
@@ -252,52 +299,61 @@ def list_network(target_conn="all", debugPring=False, lanTimeout=1, ipAddressLoo
|
|
|
252
299
|
module_name = "QTL" + module_name
|
|
253
300
|
|
|
254
301
|
# Checks if there's a value in the TELNET key.
|
|
255
|
-
if
|
|
302
|
+
if target_conn.lower() == "all" or target_conn.lower() == "telnet":
|
|
256
303
|
if network_modules.get("\\x8a") or network_modules.get("138"):
|
|
257
304
|
# Append the information to the list.
|
|
258
305
|
lan_modules["TELNET:" + ip_module] = module_name
|
|
259
|
-
|
|
306
|
+
logger.debug("Found Telnet module: " + module_name)
|
|
260
307
|
|
|
261
308
|
# Checks if there's a value in the REST key.
|
|
262
|
-
if
|
|
309
|
+
if target_conn.lower() == "all" or target_conn.lower() == "rest":
|
|
263
310
|
if network_modules.get("\\x84") or network_modules.get("132"):
|
|
264
311
|
# Append the information to the list.
|
|
265
312
|
lan_modules["REST:" + ip_module] = module_name
|
|
266
|
-
|
|
313
|
+
logger.debug("Found REST module: " + module_name)
|
|
267
314
|
|
|
268
315
|
# Checks if there's a value in the TCP key.
|
|
269
|
-
if
|
|
316
|
+
if target_conn.lower() == "all" or target_conn.lower() == "tcp":
|
|
270
317
|
if network_modules.get("\\x85") or network_modules.get("133"):
|
|
271
318
|
# Append the information to the list.
|
|
272
319
|
lan_modules["TCP:" + ip_module] = module_name
|
|
273
|
-
|
|
274
|
-
|
|
320
|
+
logger.debug("Found TCP module: " + module_name)
|
|
275
321
|
mySocket.close()
|
|
276
|
-
|
|
277
|
-
|
|
322
|
+
if ipAddressLookup is not None:
|
|
323
|
+
if moduleFound is None:
|
|
324
|
+
printText("IP Scan failed, no module found.")
|
|
325
|
+
else:
|
|
326
|
+
printText("IP Scan succeeded, module found: " + moduleFound)
|
|
327
|
+
logger.debug("Finished UDP scan")
|
|
328
|
+
retVal.update(lan_modules)
|
|
278
329
|
return retVal
|
|
279
330
|
|
|
280
331
|
|
|
281
|
-
''''''
|
|
282
332
|
def get_user_level_serial_number(network_modules):
|
|
333
|
+
"""
|
|
334
|
+
|
|
335
|
+
:param network_modules:
|
|
336
|
+
:return:
|
|
337
|
+
"""
|
|
283
338
|
list_of_multi_module_units = ["1995"] # List of modules that require enclosure number + Port to be displayed.
|
|
339
|
+
module_name = None
|
|
284
340
|
|
|
285
341
|
# Filter the raw message to get the module and ip address.
|
|
286
342
|
if "134" in network_modules.keys():
|
|
287
|
-
module_name = network_modules.get("134").strip()
|
|
343
|
+
module_name = network_modules.get("134").strip() # enclosure number only
|
|
288
344
|
for module in list_of_multi_module_units:
|
|
289
345
|
if module in module_name:
|
|
290
|
-
module_name += "-" + network_modules.get("135").strip()
|
|
346
|
+
module_name += "-" + network_modules.get("135").strip() # enclosure number with port
|
|
291
347
|
break
|
|
292
348
|
elif "\\x86" in network_modules.keys():
|
|
293
349
|
module_name = network_modules.get("\\x86").strip() # enclosure number only
|
|
294
350
|
for module in list_of_multi_module_units:
|
|
295
351
|
if module in module_name:
|
|
296
|
-
module_name += "-" + network_modules.get("\\x87").strip()
|
|
352
|
+
module_name += "-" + network_modules.get("\\x87").strip() # enclosure number with port
|
|
297
353
|
break
|
|
298
354
|
else:
|
|
299
355
|
if "131" in network_modules.keys():
|
|
300
|
-
module_name = module_name = network_modules.get("131").strip()
|
|
356
|
+
module_name = module_name = network_modules.get("131").strip() # serial number
|
|
301
357
|
elif "\\x83" in network_modules.keys():
|
|
302
358
|
module_name = module_name = network_modules.get("\\x83").strip() # serial number
|
|
303
359
|
|
|
@@ -305,93 +361,120 @@ def get_user_level_serial_number(network_modules):
|
|
|
305
361
|
|
|
306
362
|
|
|
307
363
|
''''''
|
|
308
|
-
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def lookupDevice(ipAddressLookup, mySocket, lan_modules, module_found):
|
|
367
|
+
specifiedDevice = None
|
|
309
368
|
try:
|
|
310
|
-
printText("Ipaddress lookup " + ipAddressLookup)
|
|
311
369
|
# For future reference, 0 is the C terminator for a string
|
|
370
|
+
timeout = mySocket.gettimeout()
|
|
371
|
+
logger.debug("Ipaddress lookup =" + ipAddressLookup + " timeout = " + str(timeout))
|
|
372
|
+
|
|
312
373
|
mySocket.sendto(b'Discovery: Who is out there?\0\n', (str(ipAddressLookup).strip(), 30303))
|
|
313
374
|
specifiedDevice = mySocket.recvfrom(256)
|
|
314
375
|
# Check to see if the response contains the connection protocol
|
|
315
|
-
|
|
316
|
-
# If not allow it to fall-back to REST
|
|
317
|
-
specifiedDevice = None
|
|
318
|
-
else:
|
|
319
|
-
# Exit as device was found correctly
|
|
320
|
-
return specifiedDevice
|
|
376
|
+
return specifiedDevice
|
|
321
377
|
except Exception as e:
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
# Return if there's an error
|
|
325
|
-
return None
|
|
378
|
+
logger.debug("Error during UDP lookup of IP address " + str(ipAddressLookup) + " Error: " + str(e))
|
|
379
|
+
logger.debug("No Quarch module found at this address. Please check the IP address and that you can ping it.\r\n")
|
|
326
380
|
|
|
327
|
-
if specifiedDevice is None:
|
|
381
|
+
if specifiedDevice is None: #Only True if TCP not found or errored
|
|
328
382
|
try:
|
|
329
383
|
restCon = connection_ReST.ReSTConn(str(ipAddressLookup).replace("\r\n", ""))
|
|
330
|
-
restDevice = restCon.sendCommand("*
|
|
384
|
+
restDevice = restCon.sendCommand("*enclosure?") #Try use enclosure for PPMs
|
|
385
|
+
if "fail" in restDevice.lower(): # This will fail nicely for other modules
|
|
386
|
+
restDevice = restCon.sendCommand("*serial?") # and serial number will be used in place.
|
|
331
387
|
if not str(restDevice).startswith("QTL"):
|
|
332
388
|
restDevice = "QTL" + restDevice
|
|
389
|
+
# Exit as device was found correctly
|
|
333
390
|
# Add the item to list
|
|
334
391
|
lan_modules["REST:" + str(ipAddressLookup).replace("\r\n", "")] = restDevice
|
|
335
|
-
|
|
392
|
+
module_found = restDevice
|
|
393
|
+
specifiedDevice = None # Don't return rest connection, to bypass tcp parsing.
|
|
336
394
|
except Exception as e:
|
|
337
|
-
|
|
395
|
+
logger.debug("Error During REST scan of IP address " + str(ipAddressLookup) + " Error: " + str(e))
|
|
396
|
+
logger.debug("Please check the IP address and that you can ping it.\r\n")
|
|
397
|
+
try:
|
|
398
|
+
# Keep for debugging purposes
|
|
399
|
+
# from threading import Thread
|
|
400
|
+
# t = Thread(target=connection_TCP.TCPConn, args=(str(ipAddressLookup).replace("\r\n", ""),))
|
|
401
|
+
# t.daemon = True
|
|
402
|
+
# t.start()
|
|
403
|
+
# t.join(50)
|
|
404
|
+
# if t.is_alive():
|
|
405
|
+
# raise TimeoutError("Timeout during TCP Connection attempt.")
|
|
406
|
+
|
|
407
|
+
tcpCon = connection_TCP.TCPConn(str(ipAddressLookup).replace("\r\n", ""))
|
|
408
|
+
tcpDevice = tcpCon.sendCommand("*enclosure?") #Try use enclosure for PPMs
|
|
409
|
+
if "fail" in tcpDevice.lower(): # This will fail nicely for other modules
|
|
410
|
+
tcpDevice = tcpCon.sendCommand("*serial?") # and serial number will be used in place.
|
|
411
|
+
if not str(tcpDevice).startswith("QTL"):
|
|
412
|
+
tcpDevice = "QTL" + tcpDevice
|
|
413
|
+
# Exit as device was found correctly
|
|
414
|
+
# Add the item to list
|
|
415
|
+
lan_modules["TCP:" + str(ipAddressLookup).replace("\r\n", "")] = tcpDevice
|
|
416
|
+
module_found = tcpDevice
|
|
417
|
+
specifiedDevice = None # Don't return tcp connection, to bypass tcp parsing.
|
|
418
|
+
except Exception as e:
|
|
419
|
+
logger.debug("Error During TCP scan of IP address " + str(ipAddressLookup) + " Error: " + str(e))
|
|
420
|
+
logger.debug("Please check the IP address and that you can ping it.\r\n")
|
|
338
421
|
|
|
339
422
|
# Needs to return None so previous method will not attempt another lookup.
|
|
340
|
-
return
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
Takes in the connection target and returns the serial number of a module found on the standard scan.
|
|
345
|
-
|
|
346
|
-
Parameters
|
|
347
|
-
----------
|
|
348
|
-
connectionTarget= : str
|
|
349
|
-
The connection target of the module you would like to know the serial number of.
|
|
350
|
-
|
|
351
|
-
Returns
|
|
352
|
-
-------
|
|
353
|
-
ret_val : str
|
|
354
|
-
The Serial number of the supplied device.
|
|
355
|
-
|
|
356
|
-
"""
|
|
423
|
+
return specifiedDevice, module_found
|
|
424
|
+
return None
|
|
425
|
+
|
|
426
|
+
|
|
357
427
|
def getSerialNumberFromConnectionTarget(connectionTarget):
|
|
428
|
+
"""
|
|
429
|
+
Takes in the connection target and returns the serial number of a module found on the standard scan.
|
|
430
|
+
|
|
431
|
+
Parameters
|
|
432
|
+
----------
|
|
433
|
+
connectionTarget= : str
|
|
434
|
+
The connection target of the module you would like to know the serial number of.
|
|
435
|
+
|
|
436
|
+
Returns
|
|
437
|
+
-------
|
|
438
|
+
ret_val : str
|
|
439
|
+
The Serial number of the supplied device.
|
|
440
|
+
|
|
441
|
+
"""
|
|
358
442
|
myDict = scanDevices(favouriteOnly=False)
|
|
359
|
-
for k,v in myDict.items():
|
|
443
|
+
for k, v in myDict.items():
|
|
360
444
|
if k == connectionTarget:
|
|
361
445
|
return v
|
|
362
446
|
return None
|
|
363
447
|
|
|
364
448
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
"""
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
if connection_preference == None:
|
|
449
|
+
def get_connection_target(module_string, scan_dictionary=None, connection_preference=None, include_conn_type=True):
|
|
450
|
+
"""
|
|
451
|
+
Takes in the connection type and serial number of a module and returns the connection target.
|
|
452
|
+
|
|
453
|
+
Parameters
|
|
454
|
+
----------
|
|
455
|
+
module_string= : str
|
|
456
|
+
The connection type and serial number combination eg. TCP:QTL1999-05-005.
|
|
457
|
+
|
|
458
|
+
scan_dictionary= :dict, optional
|
|
459
|
+
A scan dictionary can be passed so that a scan does not need to take place on every call.
|
|
460
|
+
This would be advised if calling this for every item in a list of serial numbers.
|
|
461
|
+
|
|
462
|
+
connection_preference= : list str, optional
|
|
463
|
+
The preference of which connection type to prioratise if none it given.
|
|
464
|
+
Defaults to "USB", "TCP", "SERIAL", "REST", "TELNET" in that order.
|
|
465
|
+
|
|
466
|
+
include_conn_type = : boolean, optional
|
|
467
|
+
Decided whether the connection type will appear in the return value eg. TCP:192.168.1.1 vs 192.168.1.1
|
|
468
|
+
|
|
469
|
+
Returns
|
|
470
|
+
-------
|
|
471
|
+
ret_val : str
|
|
472
|
+
The Connection target of the supplied device.
|
|
473
|
+
"""
|
|
474
|
+
logger.debug("Getting connection target for : " + str(module_string))
|
|
475
|
+
if connection_preference is None:
|
|
393
476
|
connection_preference = ["USB", "TCP", "SERIAL", "REST", "TELNET"]
|
|
394
|
-
module_string.replace("::", ":")
|
|
477
|
+
module_string.replace("::", ":") #QIS/QPS format to QuarchPy format
|
|
395
478
|
delimeter_pos = module_string.find(":")
|
|
396
479
|
if delimeter_pos == -1:
|
|
397
480
|
con_type = None
|
|
@@ -399,18 +482,18 @@ def get_connection_target(module_string ,scan_dictionary=None, connection_prefer
|
|
|
399
482
|
else:
|
|
400
483
|
con_type = module_string[:delimeter_pos]
|
|
401
484
|
serial_number = module_string[delimeter_pos + 1:].lower()
|
|
402
|
-
if serial_number.find("qtl")
|
|
403
|
-
serial_number=serial_number.replace("qtl","")
|
|
485
|
+
if serial_number.find("qtl") != -1:
|
|
486
|
+
serial_number = serial_number.replace("qtl", "")
|
|
404
487
|
if scan_dictionary is None:
|
|
405
|
-
|
|
406
|
-
scan_dictionary = scanDevices(favouriteOnly=False,filterStr=[serial_number])
|
|
488
|
+
logger.debug("Scanning for devices...")
|
|
489
|
+
scan_dictionary = scanDevices(favouriteOnly=False, filterStr=[serial_number])
|
|
407
490
|
|
|
408
|
-
ret_val="Fail Module Not Found"
|
|
491
|
+
ret_val = "Fail Module Not Found"
|
|
409
492
|
|
|
410
493
|
if con_type is None:
|
|
411
494
|
connection_found = False
|
|
412
495
|
for con_type in connection_preference:
|
|
413
|
-
if connection_found
|
|
496
|
+
if not connection_found:
|
|
414
497
|
for k, v in scan_dictionary.items():
|
|
415
498
|
if k.__contains__(con_type):
|
|
416
499
|
ret_val = k
|
|
@@ -418,7 +501,7 @@ def get_connection_target(module_string ,scan_dictionary=None, connection_prefer
|
|
|
418
501
|
else:
|
|
419
502
|
for k, v in scan_dictionary.items():
|
|
420
503
|
if k.lower().__contains__(con_type.lower()):
|
|
421
|
-
ret_val=k
|
|
504
|
+
ret_val = k
|
|
422
505
|
|
|
423
506
|
if not include_conn_type and not ret_val.__contains__("Fail"):
|
|
424
507
|
delimeter_pos = ret_val.find(":")
|
|
@@ -430,6 +513,8 @@ def get_connection_target(module_string ,scan_dictionary=None, connection_prefer
|
|
|
430
513
|
'''
|
|
431
514
|
Scans for Quarch modules across the given interface(s). Returns a dictionary of module addresses and serial numbers
|
|
432
515
|
'''
|
|
516
|
+
|
|
517
|
+
|
|
433
518
|
def filter_module_type(module_type_filter, found_devices):
|
|
434
519
|
"""
|
|
435
520
|
Used in scandevices to filter modules by their type.
|
|
@@ -452,24 +537,43 @@ def filter_module_type(module_type_filter, found_devices):
|
|
|
452
537
|
return filtered_devices
|
|
453
538
|
|
|
454
539
|
|
|
540
|
+
def scan_mDNS(mdnsListener, zeroconf=None):
|
|
541
|
+
from zeroconf import ServiceBrowser, Zeroconf
|
|
542
|
+
if zeroconf is None:
|
|
543
|
+
zeroconf = Zeroconf()
|
|
544
|
+
listener = mdnsListener
|
|
545
|
+
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
|
|
546
|
+
return browser
|
|
547
|
+
|
|
548
|
+
|
|
455
549
|
'''
|
|
456
550
|
Scans for Quarch modules across the given interface(s). Returns a dictionary of module addresses and serial numbers
|
|
457
551
|
'''
|
|
458
|
-
|
|
459
|
-
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly=True, filterStr=None, module_type_filter=None, ipAddressLookup=None, discovered_devices=None):
|
|
460
555
|
foundDevices = dict()
|
|
461
556
|
scannedArrays = list()
|
|
462
557
|
|
|
558
|
+
# Setup mdns with zeroconf
|
|
559
|
+
# Ensure listener/zeroconf instance stay persistent (ensures only one thread is used for each scan cycle)
|
|
560
|
+
mdns_listener = MyListener().get_instance()
|
|
561
|
+
zeroconf = mdns_listener.get_zeroconf()
|
|
562
|
+
# Setup new mdns discovery service for every scan cycle
|
|
563
|
+
browser = scan_mDNS(mdns_listener, zeroconf)
|
|
564
|
+
# Set target_conn
|
|
565
|
+
mdns_listener.target_conn = target_conn.lower()
|
|
566
|
+
|
|
463
567
|
if target_conn.lower() == "all":
|
|
464
|
-
foundDevices = list_USB()
|
|
568
|
+
foundDevices = list_USB(discovered_devices=discovered_devices)
|
|
465
569
|
foundDevices = mergeDict(foundDevices, list_serial())
|
|
466
570
|
try:
|
|
467
|
-
#This will fail if the test machine is not connected to a network
|
|
468
|
-
foundDevices = mergeDict(foundDevices, list_network("all", ipAddressLookup=ipAddressLookup, lanTimeout=lanTimeout))
|
|
571
|
+
# This will fail if the test machine is not connected to a network
|
|
572
|
+
foundDevices = mergeDict(foundDevices, list_network("all", ipAddressLookup=ipAddressLookup, lanTimeout=lanTimeout, discovered_devices=discovered_devices))
|
|
573
|
+
foundDevices = mergeDict(foundDevices, mdns_listener.get_found_devices())
|
|
469
574
|
except Exception as e:
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
# print(foundDevices)
|
|
575
|
+
logger.error(e)
|
|
576
|
+
logger.warning("Network scan failed, check network connection")
|
|
473
577
|
|
|
474
578
|
if target_conn.lower() == "serial":
|
|
475
579
|
foundDevices = list_serial()
|
|
@@ -479,24 +583,25 @@ def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly
|
|
|
479
583
|
|
|
480
584
|
if target_conn.lower() == "tcp" or target_conn.lower() == "rest" or target_conn.lower() == "telnet":
|
|
481
585
|
foundDevices = list_network(target_conn, ipAddressLookup=ipAddressLookup, lanTimeout=lanTimeout)
|
|
586
|
+
foundDevices = mergeDict(foundDevices, mdns_listener.get_found_devices())
|
|
482
587
|
|
|
483
|
-
if
|
|
484
|
-
for k, v in foundDevices.items():
|
|
485
|
-
if
|
|
588
|
+
if scanInArray:
|
|
589
|
+
for k, v in foundDevices.items(): # k=Connection target, v=serial number
|
|
590
|
+
if k not in scannedArrays:
|
|
486
591
|
scannedArrays.append(k)
|
|
487
|
-
if
|
|
592
|
+
if isThisAnArrayController(v):
|
|
488
593
|
try:
|
|
489
594
|
myQuarchDevice = quarchDevice(k)
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
foundDevices = mergeDict(foundDevices,
|
|
493
|
-
|
|
595
|
+
myArrayController = quarchArray(myQuarchDevice)
|
|
596
|
+
scannedDevices = myArrayController.scanSubModules()
|
|
597
|
+
foundDevices = mergeDict(foundDevices, scannedDevices)
|
|
598
|
+
myArrayController.close_connection()
|
|
494
599
|
except Exception as e:
|
|
495
|
-
|
|
496
|
-
|
|
600
|
+
logger.debug(e, exc_info=True)
|
|
601
|
+
logger.debug("Cannot get serial number. Quarch device may be in use by another program.")
|
|
497
602
|
foundDevices[k] = "DEVICE IN USE"
|
|
498
603
|
|
|
499
|
-
if
|
|
604
|
+
if favouriteOnly:
|
|
500
605
|
|
|
501
606
|
# Sort list in order of connection type preference. Can be changed by changing position in conPref list. This must be done so that it is in the correct format for picking the favourite connections.
|
|
502
607
|
index = 0
|
|
@@ -513,7 +618,7 @@ def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly
|
|
|
513
618
|
favConFoundDevices = {}
|
|
514
619
|
index = 0
|
|
515
620
|
for k, v in sortedFoundDevices.items():
|
|
516
|
-
if
|
|
621
|
+
if favConFoundDevices == {} or not v in favConFoundDevices.values():
|
|
517
622
|
favConFoundDevices[k] = v
|
|
518
623
|
foundDevices = favConFoundDevices
|
|
519
624
|
|
|
@@ -521,24 +626,28 @@ def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly
|
|
|
521
626
|
sortedFoundDevices = {}
|
|
522
627
|
sortedFoundDevices = sorted(foundDevices.items(), key=operator.itemgetter(1))
|
|
523
628
|
foundDevices = dict(sortedFoundDevices)
|
|
524
|
-
if filterStr
|
|
629
|
+
if filterStr is not None:
|
|
525
630
|
filteredDevices = {}
|
|
526
631
|
for k, v in foundDevices.items():
|
|
527
632
|
for j in filterStr:
|
|
528
|
-
if (
|
|
633
|
+
if (
|
|
634
|
+
j in v or "LOCKED MODULE" in v): #show locked modules too incase the module you are looking for is on the system but is locked
|
|
529
635
|
filteredDevices[k] = v
|
|
530
636
|
foundDevices = filteredDevices
|
|
531
637
|
|
|
532
638
|
# used to filter module via type ( Power / Drive / ...)
|
|
533
639
|
if module_type_filter:
|
|
534
640
|
foundDevices = filter_module_type(module_type_filter, foundDevices)
|
|
535
|
-
|
|
641
|
+
# Cancels the mdns discovery service (required to close active thread)
|
|
642
|
+
browser.cancel()
|
|
536
643
|
return foundDevices
|
|
537
644
|
|
|
538
645
|
|
|
539
646
|
'''
|
|
540
647
|
Prints out a list of Quarch devices nicely onto the terminal, numbering each unit
|
|
541
648
|
'''
|
|
649
|
+
|
|
650
|
+
|
|
542
651
|
def listDevices(scanDictionary):
|
|
543
652
|
if not scanDictionary:
|
|
544
653
|
printText("No quarch devices found to display")
|
|
@@ -553,80 +662,70 @@ def listDevices(scanDictionary):
|
|
|
553
662
|
'''
|
|
554
663
|
Requests the user to select one of the devices in the given list
|
|
555
664
|
'''
|
|
556
|
-
def userSelectDevice(scanDictionary=None, scanFilterStr=None,favouriteOnly=True, message=None, title=None, nice=False, additionalOptions = None, target_conn="all"):
|
|
557
|
-
if User_interface.instance != None and User_interface.instance.selectedInterface == "testcenter":
|
|
558
|
-
nice = False
|
|
559
|
-
if message is None: message = "Please select a quarch device"
|
|
560
|
-
if title is None: title = "Select a Device"
|
|
561
665
|
|
|
562
|
-
|
|
666
|
+
|
|
667
|
+
def userSelectDevice(scanDictionary=None, scanFilterStr=None, favouriteOnly=True, message=None, title=None, nice=False, additionalOptions=None, target_conn="all"):
|
|
668
|
+
if User_interface.instance is not None and User_interface.instance.selectedInterface == "testcenter":
|
|
669
|
+
nice = False
|
|
670
|
+
if message is None:
|
|
671
|
+
message = "Please select a quarch device"
|
|
672
|
+
if title is None:
|
|
673
|
+
title = "Select a Device"
|
|
674
|
+
ip_address = None
|
|
675
|
+
while True:
|
|
563
676
|
# Scan first, if no list is supplied
|
|
564
|
-
if
|
|
677
|
+
if scanDictionary is None:
|
|
565
678
|
printText("Scanning for devices...")
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
679
|
+
if ip_address is None:
|
|
680
|
+
scanDictionary = scanDevices(filterStr=scanFilterStr, favouriteOnly=favouriteOnly, target_conn=target_conn)
|
|
681
|
+
else:
|
|
682
|
+
scanDictionary = scanDevices(filterStr=scanFilterStr, favouriteOnly=favouriteOnly, target_conn=target_conn, ipAddressLookup=ip_address)
|
|
570
683
|
|
|
684
|
+
if len(scanDictionary) < 1:
|
|
685
|
+
scanDictionary["***No Devices Found***"] = "***No Devices Found***"
|
|
571
686
|
|
|
572
|
-
if nice:
|
|
573
|
-
if additionalOptions is None:
|
|
687
|
+
if nice: # Prepare the data for niceListSelection using displayTable().
|
|
688
|
+
if additionalOptions is None:
|
|
689
|
+
additionalOptions = ["Specify IP Address", "Rescan", "Quit"]
|
|
574
690
|
tempList = []
|
|
575
|
-
tempEl = []
|
|
576
691
|
for k, v in scanDictionary.items():
|
|
577
|
-
tempEl = []
|
|
578
|
-
tempEl.append(v)
|
|
692
|
+
tempEl = [v]
|
|
579
693
|
charPos = k.find(":")
|
|
580
694
|
tempEl.append(k)
|
|
581
695
|
tempList.append(tempEl)
|
|
582
|
-
adOp =[]
|
|
696
|
+
adOp = []
|
|
583
697
|
for option in additionalOptions:
|
|
584
|
-
adOp.append([option]*2)
|
|
698
|
+
adOp.append([option] * 2) # Put option in all columns
|
|
585
699
|
#adOp.append([option,"-"])
|
|
586
700
|
userStr = listSelection(title, message, tempList, additionalOptions=adOp, indexReq=True, nice=nice, tableHeaders=["Selection", "Description"])
|
|
587
|
-
userStr = userStr[2]
|
|
701
|
+
userStr = userStr[2] #With the data formatted in this way the ConnTarget will always be in userStr[2]
|
|
588
702
|
|
|
589
|
-
else:
|
|
703
|
+
else: # Prepare data for old style selection or testCenter
|
|
590
704
|
devicesString = []
|
|
591
705
|
for k, v in scanDictionary.items():
|
|
592
706
|
charPos = k.find(":")
|
|
593
707
|
devicesString.append(k + '=' + v + ": " + k[:charPos])
|
|
594
708
|
devicesString = ','.join(devicesString)
|
|
595
|
-
if additionalOptions is None
|
|
596
|
-
additionalOptions = "Rescan=Rescan,Quit=Quit"
|
|
597
|
-
userStr = listSelection(title=title,message=message,selectionList=devicesString,
|
|
709
|
+
if additionalOptions is None:
|
|
710
|
+
additionalOptions = "Specify IP Address=IP Scan,Rescan=Rescan,Quit=Quit"
|
|
711
|
+
userStr = listSelection(title=title, message=message, selectionList=devicesString,
|
|
712
|
+
additionalOptions=additionalOptions)
|
|
598
713
|
|
|
599
714
|
# Process the user response
|
|
600
|
-
if
|
|
715
|
+
if userStr.lower() in 'quit':
|
|
601
716
|
return "quit"
|
|
602
|
-
elif
|
|
717
|
+
elif userStr.lower() in 'rescan':
|
|
718
|
+
ip_address = None
|
|
603
719
|
scanDictionary = None
|
|
604
720
|
favouriteOnly = True
|
|
605
|
-
elif
|
|
721
|
+
elif userStr.lower() in 'all conn types':
|
|
722
|
+
ip_address = None
|
|
723
|
+
scanDictionary = None
|
|
724
|
+
favouriteOnly = False
|
|
725
|
+
elif userStr.lower() in 'specify ip address':
|
|
726
|
+
ip_address = requestDialog("Please input IP Address of the module you would like to connect to: ")
|
|
606
727
|
scanDictionary = None
|
|
607
728
|
favouriteOnly = False
|
|
608
729
|
else:
|
|
609
730
|
# Return the address string of the selected module
|
|
610
731
|
return userStr
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
#Not used but could come in usefull in near future.
|
|
614
|
-
# def userSelectAndReturnDevice(scanDictionary=None, scanFilterStr=None,favouriteOnly=True, message=None, title=None, nice=True, additionalOptions =["rescan","all conn types", "quit"], target_conn="all"):
|
|
615
|
-
# scanDictionary = scanDevices()
|
|
616
|
-
# connectionTarget = userSelectDevice(scanDictionary, scanFilterStr, favouriteOnly, message, title, nice,
|
|
617
|
-
# additionalOptions, target_conn)
|
|
618
|
-
# serialNumber = getSerialNumberFromConnectionTarget(connectionTarget)
|
|
619
|
-
#
|
|
620
|
-
# if connectionTarget.__contains__("<") and connectionTarget.__contains__(">"):
|
|
621
|
-
# connectionTarget, portNumber = connectionTarget.split("<")
|
|
622
|
-
# portNumber = portNumber[:-1]
|
|
623
|
-
# myDevice = quarchDevice(connectionTarget)
|
|
624
|
-
# myArrayController = quarchArray(myDevice)
|
|
625
|
-
# mySubDevice = myArrayController.getSubDevice(portNumber)
|
|
626
|
-
# myDevice = mySubDevice
|
|
627
|
-
# elif(serialNumber.lower().__contains__("qtl1999") or serialNumber.lower().__contains__("qtl1995") or serialNumber.lower().__contains__("qtl2312")):
|
|
628
|
-
# myDevice = quarchPPM(quarchDevice(connectionTarget))
|
|
629
|
-
#
|
|
630
|
-
# else:
|
|
631
|
-
# myDevice = quarchDevice(connectionTarget)
|
|
632
|
-
# return myDevice
|