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/quarchQPS.py
CHANGED
|
@@ -1,379 +1,856 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import logging
|
|
3
|
+
logger = logging.getLogger(__name__)
|
|
4
|
+
import time
|
|
5
|
+
from io import StringIO
|
|
6
|
+
from typing_extensions import Optional, Union, List, Any, Literal
|
|
7
|
+
import enum
|
|
8
|
+
|
|
9
|
+
# Third-party imports
|
|
10
|
+
try:
|
|
11
|
+
import pandas as pd
|
|
12
|
+
except ImportError:
|
|
13
|
+
pd = None # type: ignore
|
|
14
|
+
|
|
15
|
+
# Local application imports
|
|
1
16
|
from quarchpy.device import quarchDevice
|
|
2
|
-
from quarchpy.
|
|
3
|
-
import os, time, datetime, sys, logging
|
|
17
|
+
from quarchpy.user_interface.user_interface import requestDialog
|
|
4
18
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
from io import StringIO
|
|
19
|
+
def qpsNowStr() -> str:
|
|
20
|
+
"""
|
|
21
|
+
Gets the current time as milliseconds since the Unix epoch.
|
|
9
22
|
|
|
10
|
-
|
|
11
|
-
|
|
23
|
+
Returns:
|
|
24
|
+
str: The current time as a string representing milliseconds
|
|
25
|
+
since the epoch.
|
|
26
|
+
"""
|
|
27
|
+
return str(current_milli_time())
|
|
12
28
|
|
|
13
|
-
# Using standard Unix time, milliseconds since the epoch (midnight 1 January 1970 UTC)
|
|
14
|
-
# Should avoid issues with time zones and summer time correction but the local and host
|
|
15
|
-
# clocks should still be synchronised
|
|
16
|
-
def qpsNowStr():
|
|
17
|
-
return current_milli_time() # datetime supports microseconds
|
|
18
29
|
|
|
30
|
+
# --- Main Classes ---
|
|
19
31
|
|
|
20
32
|
class quarchQPS(quarchDevice):
|
|
21
|
-
|
|
33
|
+
"""
|
|
34
|
+
Represents a Quarch Power Supply (QPS) device, extending quarchDevice.
|
|
22
35
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
Handles interaction specific to QPS modules, including stream management.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, quarchDevice: quarchDevice):
|
|
40
|
+
"""
|
|
41
|
+
Initializes the quarchQPS wrapper using an existing quarchDevice object.
|
|
26
42
|
|
|
43
|
+
Args:
|
|
44
|
+
quarchDevice (quarchDevice): An initialized instance of
|
|
45
|
+
the base quarchDevice class containing connection details.
|
|
46
|
+
|
|
47
|
+
Raises:
|
|
48
|
+
AttributeError: If the provided quarchDevice is not a valid QPS connection.
|
|
49
|
+
"""
|
|
50
|
+
super().__init__(quarchDevice.ConString, ConType=quarchDevice.ConType)
|
|
51
|
+
self.quarchDevice = quarchDevice
|
|
27
52
|
self.connectionObj = quarchDevice.connectionObj
|
|
28
|
-
self.IP_address = quarchDevice.connectionObj.qps.host
|
|
29
|
-
self.port_number = quarchDevice.connectionObj.qps.port
|
|
30
53
|
|
|
31
|
-
|
|
54
|
+
if not hasattr(self.connectionObj, 'qps'):
|
|
55
|
+
raise AttributeError("The provided quarchDevice is not a valid QPS connection.")
|
|
56
|
+
self.IP_address = self.connectionObj.qps.host
|
|
57
|
+
self.port_number = self.connectionObj.qps.port
|
|
58
|
+
|
|
59
|
+
# --- Public API Methods ---
|
|
60
|
+
|
|
61
|
+
def start_stream(self, directory: str, user_input: bool = True, stream_duration: str = "") -> 'quarchStream':
|
|
62
|
+
"""
|
|
63
|
+
Initializes and starts a Quarch data stream.
|
|
64
|
+
|
|
65
|
+
This method creates a quarchStream object, which handles the setup
|
|
66
|
+
and management of the data stream for the QPS application.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
directory (str): The target directory where stream data will be saved.
|
|
70
|
+
user_input (bool, optional): Controls user interaction on failure.
|
|
71
|
+
If True (default), prompts the user. If False, raises an
|
|
72
|
+
Exception on failure.
|
|
73
|
+
stream_duration (str, optional): Defines the requested duration for the
|
|
74
|
+
stream. An empty string (default) signifies an indefinite stream.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
quarchStream: An instance of the quarchStream class representing and
|
|
78
|
+
managing the active stream.
|
|
32
79
|
"""
|
|
33
|
-
|
|
34
|
-
|
|
80
|
+
return quarchStream(self, directory, user_input, stream_duration)
|
|
81
|
+
|
|
82
|
+
def startStream(self, directory: str, unserInput: bool = True, streamDuration: str = "") -> 'quarchStream':
|
|
35
83
|
"""
|
|
36
|
-
|
|
37
|
-
return quarchStream(self.quarchDevice, directory, unserInput)
|
|
84
|
+
DEPRECATED: Use start_stream instead.
|
|
38
85
|
|
|
86
|
+
Args:
|
|
87
|
+
directory (str): The target directory where stream data will be saved.
|
|
88
|
+
unserInput (bool, optional): Controls user interaction on failure.
|
|
89
|
+
streamDuration (str, optional): Defines the requested duration.
|
|
39
90
|
|
|
91
|
+
Returns:
|
|
92
|
+
quarchStream: An instance of the quarchStream class.
|
|
93
|
+
"""
|
|
94
|
+
return self.start_stream(directory, unserInput, streamDuration)
|
|
40
95
|
|
|
41
|
-
|
|
42
96
|
|
|
43
97
|
class quarchStream:
|
|
44
|
-
|
|
98
|
+
"""
|
|
99
|
+
Manages an active data stream from a Quarch QPS device.
|
|
100
|
+
|
|
101
|
+
Instantiation automatically attempts to start the stream. Provides methods to
|
|
102
|
+
control and monitor the stream.
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
def __init__(self, quarchQPS: quarchQPS, directory: str, unserInput: bool = True, streamDuration: str = ""):
|
|
106
|
+
"""
|
|
107
|
+
Initializes and attempts to start a data stream from the connected device.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
quarchQPS (quarchQPS): The quarchQPS object to stream from.
|
|
111
|
+
directory (str): The target directory for the stream data.
|
|
112
|
+
unserInput (bool, optional): Controls user interaction if the initial
|
|
113
|
+
stream start command fails. Defaults to True.
|
|
114
|
+
streamDuration (str, optional): Requested stream duration. Defaults to "".
|
|
115
|
+
|
|
116
|
+
Raises:
|
|
117
|
+
Exception: If starting the stream fails and `unserInput` is False.
|
|
118
|
+
"""
|
|
45
119
|
self.connectionObj = quarchQPS.connectionObj
|
|
46
|
-
self.IP_address = quarchQPS.
|
|
47
|
-
self.port_number = quarchQPS.
|
|
120
|
+
self.IP_address = quarchQPS.IP_address
|
|
121
|
+
self.port_number = quarchQPS.port_number
|
|
48
122
|
self.ConString = quarchQPS.ConString
|
|
49
123
|
self.ConType = quarchQPS.ConType
|
|
50
|
-
|
|
51
|
-
response = self.startQPSStream(directory)
|
|
52
|
-
if
|
|
53
|
-
return
|
|
54
|
-
else:
|
|
124
|
+
|
|
125
|
+
response = self.startQPSStream(directory, streamDuration)
|
|
126
|
+
if "fail:" in response.lower():
|
|
55
127
|
if unserInput is False:
|
|
56
128
|
raise Exception(response)
|
|
57
129
|
else:
|
|
58
|
-
self.failCheck(response)
|
|
130
|
+
self.failCheck(response, streamDuration)
|
|
131
|
+
|
|
132
|
+
# --- Public API Methods ---
|
|
133
|
+
|
|
134
|
+
def start_qps_stream(self, new_directory: str, stream_duration: str = "") -> str:
|
|
135
|
+
"""
|
|
136
|
+
Sends the command to start the QPS stream.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
new_directory (str): The path for the stream data.
|
|
140
|
+
stream_duration (str, optional): The duration for the stream. Defaults to "".
|
|
59
141
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
142
|
+
Returns:
|
|
143
|
+
str: The response from the QPS system.
|
|
144
|
+
"""
|
|
145
|
+
command = f'$start stream "{new_directory}" {stream_duration}'.strip()
|
|
146
|
+
response = self.connectionObj.qps.sendCmdVerbose(command)
|
|
147
|
+
if "Error" in response:
|
|
148
|
+
logger.debug("Initial start stream command failed with 'Error', retrying once.")
|
|
149
|
+
response = self.connectionObj.qps.sendCmdVerbose(command)
|
|
63
150
|
return response
|
|
64
151
|
|
|
65
|
-
def
|
|
66
|
-
|
|
152
|
+
def startQPSStream(self, newDirectory: str, streamDuration: str = "") -> str:
|
|
153
|
+
"""
|
|
154
|
+
DEPRECATED: Use start_qps_stream instead.
|
|
155
|
+
|
|
156
|
+
Args:
|
|
157
|
+
newDirectory (str): The path to the directory where the stream data should be saved.
|
|
158
|
+
streamDuration (str, optional): The duration for which the stream should run.
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
str: The response message from the QPS system.
|
|
162
|
+
"""
|
|
163
|
+
return self.start_qps_stream(newDirectory, streamDuration)
|
|
164
|
+
|
|
165
|
+
def fail_check(self, response: str, stream_duration: str) -> str:
|
|
166
|
+
"""
|
|
167
|
+
Handles recoverable failures during stream startup.
|
|
168
|
+
|
|
169
|
+
Currently handles "Directory already exists" by prompting for a new name.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
response (str): The failure response message from the server.
|
|
173
|
+
stream_duration (str): The stream duration, for retrying.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
str: The successful response after a retry.
|
|
177
|
+
|
|
178
|
+
Raises:
|
|
179
|
+
Exception: If the failure is not a known, handled type.
|
|
180
|
+
"""
|
|
67
181
|
while "fail:" in response.lower():
|
|
68
182
|
if "Fail: Directory already exists" in response:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
else:
|
|
74
|
-
newDir = raw_input()
|
|
75
|
-
response = self.startQPSStream( newDir)
|
|
76
|
-
else: # If its a failure we don't know how to handle.
|
|
77
|
-
raise Exception(response)
|
|
183
|
+
new_dir = requestDialog(message=f"{response}\nPlease enter a new file name:")
|
|
184
|
+
response = self.start_qps_stream(new_dir, stream_duration)
|
|
185
|
+
else:
|
|
186
|
+
raise Exception(f"Unhandled QPS stream start failure: {response}")
|
|
78
187
|
return response
|
|
79
188
|
|
|
80
|
-
def
|
|
189
|
+
def failCheck(self, response: str, streamDuration: str) -> str:
|
|
190
|
+
"""
|
|
191
|
+
DEPRECATED: Use fail_check instead.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
response (str): The response message from a stream start attempt.
|
|
195
|
+
streamDuration (str): The duration for the stream, needed for retry attempts.
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
str: The successful response message after a retry.
|
|
199
|
+
|
|
200
|
+
Raises:
|
|
201
|
+
Exception: If the response contains an unhandled failure.
|
|
202
|
+
"""
|
|
203
|
+
return self.fail_check(response, streamDuration)
|
|
204
|
+
|
|
205
|
+
def get_stats(self, format: str = "df") -> Union[pd.DataFrame, List[List[str]], None]:
|
|
81
206
|
"""
|
|
82
|
-
|
|
207
|
+
Retrieves statistics from the QPS device.
|
|
208
|
+
|
|
209
|
+
Args:
|
|
210
|
+
format (str, optional): The desired output format ("df" for pandas
|
|
211
|
+
DataFrame, "list" for list of lists). Defaults to "df".
|
|
212
|
+
|
|
213
|
+
Returns:
|
|
214
|
+
Union[pd.DataFrame, List[List[str]], None]: Statistics data in the
|
|
215
|
+
specified format, or None if pandas is required but not found.
|
|
83
216
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
df = : dataframe
|
|
87
|
-
The response text from QPS. If successful "ok. Saving stats to : file_name" otherwise returns the exception thrown
|
|
217
|
+
Raises:
|
|
218
|
+
Exception: If the QPS command fails.
|
|
88
219
|
"""
|
|
89
220
|
command_response = self.connectionObj.qps.sendCmdVerbose("$get stats", timeout=60).strip()
|
|
90
221
|
if command_response.startswith("Fail"):
|
|
91
222
|
raise Exception(command_response)
|
|
92
223
|
|
|
93
224
|
if format == "df":
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
pd.set_option('display.max_columns', None)
|
|
99
|
-
pd.set_option('display.width', 1024)
|
|
100
|
-
except Exception as e:
|
|
101
|
-
logging.error(e)
|
|
102
|
-
logging.warning("pandas not imported correctly. Continuing")
|
|
103
|
-
pass
|
|
225
|
+
if pd is None:
|
|
226
|
+
logger.error("Pandas is not installed, cannot return DataFrame.")
|
|
227
|
+
return None
|
|
228
|
+
|
|
104
229
|
test_data = StringIO(command_response)
|
|
105
|
-
retVal = pd.read_csv(test_data, sep=",", header=[0, 1], error_bad_lines=False)
|
|
106
|
-
elif format == "list":
|
|
107
|
-
retVal = []
|
|
108
|
-
for line in command_response.replace("\r\n","\n").split("\n"):
|
|
109
|
-
row = []
|
|
110
|
-
for element in line.split(","):
|
|
111
|
-
row.append(element)
|
|
112
|
-
retVal.append(row)
|
|
113
230
|
|
|
114
|
-
|
|
231
|
+
df = pd.read_csv(test_data, sep=",", header=[0, 1], on_bad_lines="skip")
|
|
115
232
|
|
|
233
|
+
return df
|
|
116
234
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
235
|
+
elif format == "list":
|
|
236
|
+
ret_val = []
|
|
237
|
+
for line in command_response.replace("\r\n", "\n").split("\n"):
|
|
238
|
+
row = [element for element in line.split(",")]
|
|
239
|
+
ret_val.append(row)
|
|
240
|
+
return ret_val
|
|
120
241
|
|
|
121
|
-
|
|
122
|
-
----------
|
|
123
|
-
file-name= : str, optional
|
|
124
|
-
The absolute path of the file you would like to save the csv to. If left empty then a filename will be give.
|
|
125
|
-
Default location is the path of the executable.
|
|
126
|
-
Returns
|
|
127
|
-
-------
|
|
128
|
-
command_response : str or None
|
|
242
|
+
return None
|
|
129
243
|
|
|
130
|
-
|
|
244
|
+
def stats_to_csv(self, file_name: str = "", poll_till_complete: bool = False,
|
|
245
|
+
check_interval: float = 0.5, timeout: int = 60) -> str:
|
|
131
246
|
"""
|
|
132
|
-
|
|
247
|
+
Commands the QPS device to save its current statistics to a CSV file.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
file_name (str, optional): Absolute path for the CSV file on the QPS
|
|
251
|
+
device's filesystem. Defaults to "".
|
|
252
|
+
poll_till_complete (bool, optional): If True, waits for the export
|
|
253
|
+
to finish. Defaults to False.
|
|
254
|
+
check_interval (float, optional): Seconds between status checks when
|
|
255
|
+
polling. Defaults to 0.5.
|
|
256
|
+
timeout (int, optional): Max seconds to wait for polling to complete.
|
|
257
|
+
Defaults to 60.
|
|
258
|
+
|
|
259
|
+
Returns:
|
|
260
|
+
str: The initial response from the QPS device.
|
|
261
|
+
|
|
262
|
+
Raises:
|
|
263
|
+
Exception: If the initial QPS command fails.
|
|
264
|
+
TimeoutError: If polling is enabled and times out.
|
|
265
|
+
"""
|
|
266
|
+
cmd = f'$stats to csv "{file_name}"'
|
|
267
|
+
command_response = self.connectionObj.qps.sendCmdVerbose(cmd, timeout=60)
|
|
268
|
+
|
|
133
269
|
if command_response.startswith("Fail"):
|
|
134
270
|
raise Exception(command_response)
|
|
271
|
+
|
|
272
|
+
if poll_till_complete:
|
|
273
|
+
start_time = time.monotonic()
|
|
274
|
+
while check_export_status(self.get_stats_export_status()):
|
|
275
|
+
if (time.monotonic() - start_time) > timeout:
|
|
276
|
+
raise TimeoutError(f"QPS CSV Export of stats timed out after {timeout} seconds")
|
|
277
|
+
time.sleep(check_interval)
|
|
278
|
+
|
|
135
279
|
return command_response
|
|
136
280
|
|
|
137
|
-
def
|
|
138
|
-
|
|
139
|
-
Returns the QPS statistics information over a specific time ignoring any set annotations.
|
|
140
|
-
|
|
141
|
-
Parameters
|
|
142
|
-
----------
|
|
143
|
-
start_time = : str
|
|
144
|
-
The time in seconds you would like the stats to start this can be in integer or string format.
|
|
145
|
-
or using the following format to specify daysDhours:minutes:seconds.milliseconds
|
|
146
|
-
xxxDxx:xx:xx.xxxx
|
|
147
|
-
end_time = : str
|
|
148
|
-
The time in seconds you would like the stats to stop this can be in integer or string format
|
|
149
|
-
or using the following format to specify daysDhours:minutes:seconds.milliseconds
|
|
150
|
-
xxxDxx:xx:xx.xxxx
|
|
151
|
-
Returns
|
|
152
|
-
-------
|
|
153
|
-
df = : dataframe
|
|
154
|
-
The response text from QPS. If successful "ok. Saving stats to : file_name" otherwise returns the exception thrown
|
|
281
|
+
def stats_to_CSV(self, file_name: str = "", poll_till_complete: bool = False,
|
|
282
|
+
check_interval: float = 0.5, timeout: int = 60) -> str:
|
|
155
283
|
"""
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
284
|
+
DEPRECATED: Use stats_to_csv instead.
|
|
285
|
+
|
|
286
|
+
Args:
|
|
287
|
+
file_name (str, optional): The absolute path for the CSV file. Defaults to "".
|
|
288
|
+
poll_till_complete (bool, optional): If True, polls until the export is
|
|
289
|
+
finished. Defaults to False.
|
|
290
|
+
check_interval (float, optional): Time in seconds between status checks
|
|
291
|
+
when polling. Defaults to 0.5.
|
|
292
|
+
timeout (int, optional): Max time in seconds to wait for polling. Defaults to 60.
|
|
293
|
+
|
|
294
|
+
Returns:
|
|
295
|
+
str: The initial response message from the QPS device.
|
|
296
|
+
"""
|
|
297
|
+
return self.stats_to_csv(file_name, poll_till_complete, check_interval, timeout)
|
|
298
|
+
|
|
299
|
+
def get_custom_stats_range(self, start_time: Union[int, str], end_time: Union[int, str]) -> Optional[pd.DataFrame]:
|
|
300
|
+
"""
|
|
301
|
+
Retrieves statistics from the QPS device for a specified time range.
|
|
302
|
+
|
|
303
|
+
Args:
|
|
304
|
+
start_time (Union[int, str]): The start time for stats calculation.
|
|
305
|
+
end_time (Union[int, str]): The end time for stats calculation.
|
|
306
|
+
|
|
307
|
+
Returns:
|
|
308
|
+
Optional[pd.DataFrame]: A DataFrame containing the stats.
|
|
309
|
+
|
|
310
|
+
Raises:
|
|
311
|
+
ImportError: If the pandas library is not installed.
|
|
312
|
+
Exception: If the QPS command fails or data parsing fails.
|
|
313
|
+
"""
|
|
314
|
+
if pd is None:
|
|
315
|
+
logger.warning("pandas not imported correctly. Required for get_custom_stats_range.")
|
|
316
|
+
raise ImportError("pandas library is required for get_custom_stats_range")
|
|
317
|
+
|
|
318
|
+
command_response = self.connectionObj.qps.sendCmdVerbose(
|
|
319
|
+
f"$get custom stats range {start_time} {end_time}", timeout=60)
|
|
320
|
+
|
|
166
321
|
if command_response.startswith("Fail"):
|
|
167
322
|
raise Exception(command_response)
|
|
323
|
+
|
|
168
324
|
test_data = StringIO(command_response)
|
|
169
325
|
try:
|
|
170
|
-
df = pd.read_csv(test_data, sep=",", header=[0,1])
|
|
326
|
+
df = pd.read_csv(test_data, sep=",", header=[0, 1], on_bad_lines="skip")
|
|
171
327
|
except Exception as e:
|
|
172
|
-
|
|
328
|
+
logger.error(f"Unable to create pandas data frame from command response: {command_response}")
|
|
173
329
|
raise e
|
|
174
330
|
return df
|
|
175
331
|
|
|
176
|
-
def
|
|
332
|
+
def take_snapshot(self) -> str:
|
|
177
333
|
"""
|
|
178
|
-
|
|
334
|
+
Triggers the QPS device to capture an immediate snapshot.
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
str: The response from the QPS device.
|
|
338
|
+
|
|
339
|
+
Raises:
|
|
340
|
+
Exception: If the command fails.
|
|
179
341
|
"""
|
|
180
342
|
command_response = self.connectionObj.qps.sendCmdVerbose("$take snapshot")
|
|
181
343
|
if command_response.startswith("Fail"):
|
|
182
344
|
raise Exception(command_response)
|
|
183
|
-
return
|
|
345
|
+
return command_response
|
|
184
346
|
|
|
185
|
-
def
|
|
347
|
+
def takeSnapshot(self) -> str:
|
|
186
348
|
"""
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
349
|
+
DEPRECATED: Use take_snapshot instead.
|
|
350
|
+
|
|
351
|
+
Returns:
|
|
352
|
+
str: The response message from the QPS device.
|
|
353
|
+
"""
|
|
354
|
+
return self.take_snapshot()
|
|
355
|
+
|
|
356
|
+
def get_stream_state(self) -> str:
|
|
357
|
+
"""
|
|
358
|
+
Queries the QPS application for its current stream processing state.
|
|
359
|
+
|
|
360
|
+
Returns:
|
|
361
|
+
str: The stream state as reported by the QPS application.
|
|
362
|
+
|
|
363
|
+
Raises:
|
|
364
|
+
Exception: If the command fails.
|
|
191
365
|
"""
|
|
192
366
|
command_response = self.connectionObj.qps.sendCmdVerbose("$stream state")
|
|
193
367
|
if command_response.startswith("Fail"):
|
|
194
368
|
raise Exception(command_response)
|
|
195
|
-
return
|
|
196
|
-
|
|
197
|
-
def addAnnotation(self, title, annotationTime = 0, extraText="", yPos="", titleColor ="", annotationColor = "", annotationType = "", annotationGroup =""):
|
|
198
|
-
"""
|
|
199
|
-
Adds a custom annotation to stream with given parameters.
|
|
200
|
-
|
|
201
|
-
Parameters
|
|
202
|
-
----------
|
|
203
|
-
title= : str
|
|
204
|
-
The title appears next to the annotation in the stream
|
|
205
|
-
extraText= : str, optional
|
|
206
|
-
The additional text that can be viewed when selecting the annotation
|
|
207
|
-
yPos : str, optional
|
|
208
|
-
The percetange of how high up the screen the annotation should appear 0 is the bottom and 100 the top
|
|
209
|
-
titleColor : str, optional
|
|
210
|
-
The color of the text next to the annotation in hex format 000000 to FFFFFF
|
|
211
|
-
annotationColor : str, optional
|
|
212
|
-
The color of the annotation marker in hex format 000000 to FFFFFF
|
|
213
|
-
annotationGroup : str, optional
|
|
214
|
-
The group the annotation belongs to
|
|
215
|
-
annotationTime : int, optional
|
|
216
|
-
The time in milliseconds after the start of the stream at which the annotation should be placed. 0 will plot the annotation live at the most recent sample
|
|
217
|
-
|
|
218
|
-
Returns
|
|
219
|
-
-------
|
|
220
|
-
command_response : str or None
|
|
221
|
-
|
|
222
|
-
The response text from QPS. "ok" if annotation successfully added
|
|
223
|
-
"""
|
|
224
|
-
annotationTime = str(annotationTime)
|
|
225
|
-
annotationType = annotationType.lower()
|
|
226
|
-
if annotationType == "" or annotationType == "annotation":
|
|
227
|
-
annotationType = "annotate"
|
|
228
|
-
elif annotationType == "comment":
|
|
229
|
-
pass # already in the correct format for command
|
|
230
|
-
else:
|
|
231
|
-
retString = "Fail annotationType must be 'annotation' or 'comment'"
|
|
232
|
-
logging.warning(retString)
|
|
233
|
-
return retString
|
|
369
|
+
return command_response
|
|
234
370
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
else:
|
|
239
|
-
annotationString = "<"
|
|
371
|
+
def getStreamState(self) -> str:
|
|
372
|
+
"""
|
|
373
|
+
DEPRECATED: Use get_stream_state instead.
|
|
240
374
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
375
|
+
Returns:
|
|
376
|
+
str: The stream state reported by the QPS application.
|
|
377
|
+
"""
|
|
378
|
+
return self.get_stream_state()
|
|
379
|
+
|
|
380
|
+
def add_annotation(self, title: str, annotation_time: Union[int, str] = 0, extra_text: str = "",
|
|
381
|
+
y_pos: Union[int, str] = "",
|
|
382
|
+
title_color: str = "", annotation_color: str = "", annotation_type: str = "annotate",
|
|
383
|
+
time_format: str = "unix") -> str:
|
|
384
|
+
"""
|
|
385
|
+
Adds a custom annotation marker to the active QPS stream.
|
|
386
|
+
|
|
387
|
+
Args:
|
|
388
|
+
title (str): The primary text label for the annotation.
|
|
389
|
+
annotation_time (Union[int, str], optional): When the annotation appears. Defaults to 0 ("now").
|
|
390
|
+
extra_text (str, optional): Additional text for the annotation. Defaults to "".
|
|
391
|
+
y_pos (Union[int, str], optional): Vertical position (0-100). Defaults to "".
|
|
392
|
+
title_color (str, optional): Hex color for the title. Defaults to "".
|
|
393
|
+
annotation_color (str, optional): Hex color for the marker. Defaults to "".
|
|
394
|
+
annotation_type (str, optional): "annotate" or "comment". Defaults to "annotate".
|
|
395
|
+
time_format (str, optional): "unix" or "elapsed". Defaults to "unix".
|
|
396
|
+
|
|
397
|
+
Returns:
|
|
398
|
+
str: The response message from the QPS device.
|
|
399
|
+
"""
|
|
400
|
+
time_val = str(annotation_time)
|
|
401
|
+
if any(c.isalpha() for c in time_val):
|
|
402
|
+
time_format = "elapsed"
|
|
403
|
+
if time_val.startswith("e"):
|
|
404
|
+
time_val = time_val[1:] + "s"
|
|
405
|
+
elif time_val == "0":
|
|
406
|
+
time_val = qpsNowStr()
|
|
407
|
+
time_format = "unix"
|
|
408
|
+
|
|
409
|
+
title = title.replace("\n", "\\n")
|
|
410
|
+
extra_text = extra_text.replace("\n", "\\n")
|
|
411
|
+
|
|
412
|
+
cmd = f'$stream annotation add time={time_val} text="{title}"'
|
|
413
|
+
if extra_text:
|
|
414
|
+
cmd += f' extraText="{extra_text}"'
|
|
415
|
+
if y_pos != "":
|
|
416
|
+
cmd += f' yPos={y_pos}'
|
|
417
|
+
if annotation_type:
|
|
418
|
+
cmd += f' type={annotation_type}'
|
|
419
|
+
if annotation_color:
|
|
420
|
+
cmd += f' colour={annotation_color}'
|
|
421
|
+
if title_color:
|
|
422
|
+
cmd += f' textColour={title_color}'
|
|
423
|
+
if time_format:
|
|
424
|
+
cmd += f' timeFormat={time_format}'
|
|
425
|
+
|
|
426
|
+
return self.connectionObj.qps.sendCmdVerbose(cmd)
|
|
427
|
+
|
|
428
|
+
def addAnnotation(self, title: str, annotationTime: Union[int, str] = 0, extraText: str = "",
|
|
429
|
+
yPos: Union[int, str] = "",
|
|
430
|
+
titleColor: str = "", annotationColor: str = "", annotationType: str = "",
|
|
431
|
+
annotationGroup: str = "", timeFormat: str = "unix") -> str:
|
|
432
|
+
"""
|
|
433
|
+
DEPRECATED: Use add_annotation instead.
|
|
434
|
+
|
|
435
|
+
Args:
|
|
436
|
+
title (str): The primary text label for the annotation.
|
|
437
|
+
annotationTime (Union[int, str], optional): Timestamp. Defaults to 0 ("now").
|
|
438
|
+
extraText (str, optional): Additional text. Defaults to "".
|
|
439
|
+
yPos (Union[int, str], optional): Vertical position (0-100). Defaults to "".
|
|
440
|
+
titleColor (str, optional): Hex color for the title. Defaults to "".
|
|
441
|
+
annotationColor (str, optional): Hex color for the marker. Defaults to "".
|
|
442
|
+
annotationType (str, optional): "annotate" or "comment". Defaults to "".
|
|
443
|
+
annotationGroup (str, optional): Not used. Defaults to "".
|
|
444
|
+
timeFormat (str, optional): "unix" or "elapsed". Defaults to "unix".
|
|
445
|
+
|
|
446
|
+
Returns:
|
|
447
|
+
str: The response message from the QPS device.
|
|
448
|
+
"""
|
|
449
|
+
current_type = annotationType.lower()
|
|
450
|
+
if current_type == "" or current_type == "annotation":
|
|
451
|
+
current_type = "annotate"
|
|
452
|
+
|
|
453
|
+
return self.add_annotation(title, annotation_time=annotationTime, extra_text=extraText, y_pos=yPos,
|
|
454
|
+
title_color=titleColor, annotation_color=annotationColor,
|
|
455
|
+
annotation_type=current_type, time_format=timeFormat)
|
|
456
|
+
|
|
457
|
+
def add_comment(self, title: str, comment_time: Union[int, str] = 0, **kwargs: Any) -> str:
|
|
458
|
+
"""
|
|
459
|
+
Adds a 'comment' type annotation to the QPS stream.
|
|
460
|
+
|
|
461
|
+
This is a convenience wrapper for `add_annotation` that sets the type to 'comment'.
|
|
462
|
+
|
|
463
|
+
Args:
|
|
464
|
+
title (str): The text label for the comment.
|
|
465
|
+
comment_time (Union[int, str], optional): The timestamp. Defaults to 0.
|
|
466
|
+
**kwargs: Other arguments accepted by `add_annotation`.
|
|
467
|
+
|
|
468
|
+
Returns:
|
|
469
|
+
str: The response message from the QPS device.
|
|
470
|
+
"""
|
|
471
|
+
kwargs['annotation_type'] = 'comment'
|
|
472
|
+
return self.add_annotation(title, annotation_time=comment_time, **kwargs)
|
|
473
|
+
|
|
474
|
+
def addComment(self, title: str, commentTime: Union[int, str] = 0, extraText: str = "", yPos: Union[int, str] = "",
|
|
475
|
+
titleColor: str = "", commentColor: str = "", annotationType: str = "",
|
|
476
|
+
annotationGroup: str = "", timeFormat: str = "unix") -> str:
|
|
477
|
+
"""
|
|
478
|
+
DEPRECATED: Use add_comment instead.
|
|
479
|
+
|
|
480
|
+
Args:
|
|
481
|
+
title (str): The text label for the comment.
|
|
482
|
+
commentTime (Union[int, str], optional): The timestamp. Defaults to 0.
|
|
483
|
+
extraText (str, optional): Additional text. Defaults to "".
|
|
484
|
+
yPos (Union[int, str], optional): Vertical position (0-100). Defaults to "".
|
|
485
|
+
titleColor (str, optional): Hex color for the title. Defaults to "".
|
|
486
|
+
commentColor (str, optional): Hex color for the comment marker. Defaults to "".
|
|
487
|
+
annotationType (str, optional): Overridden to 'comment'. Defaults to "".
|
|
488
|
+
annotationGroup (str, optional): Not used. Defaults to "".
|
|
489
|
+
timeFormat (str, optional): "unix" or "elapsed". Defaults to "unix".
|
|
490
|
+
|
|
491
|
+
Returns:
|
|
492
|
+
str: The response message from the QPS device.
|
|
493
|
+
"""
|
|
494
|
+
return self.add_comment(title, comment_time=commentTime, extraText=extraText, yPos=yPos,
|
|
495
|
+
titleColor=titleColor, commentColor=commentColor,
|
|
496
|
+
timeFormat=timeFormat)
|
|
497
|
+
|
|
498
|
+
def save_csv(self, file_path: str, lines_per_file: Optional[Union[int, str]] = None, use_cr: Optional[bool] = None,
|
|
499
|
+
delimiter: Optional[str] = None, timeout: int = 180, poll_till_complete: bool = False,
|
|
500
|
+
check_interval: float = 0.5) -> str:
|
|
501
|
+
"""
|
|
502
|
+
Commands the QPS device to save the stream data to a CSV file.
|
|
503
|
+
|
|
504
|
+
Args:
|
|
505
|
+
file_path (str): Target file path on the QPS device's filesystem.
|
|
506
|
+
lines_per_file (Optional[Union[int, str]], optional): Max lines per file. Defaults to None.
|
|
507
|
+
use_cr (Optional[bool], optional): True for CRLF, False for LF. Defaults to None.
|
|
508
|
+
delimiter (Optional[str], optional): Field delimiter for the CSV. Defaults to None.
|
|
509
|
+
timeout (int, optional): Timeout in seconds. Defaults to 180.
|
|
510
|
+
poll_till_complete (bool, optional): If True, waits for export to finish. Defaults to False.
|
|
511
|
+
check_interval (float, optional): Seconds between status checks when polling. Defaults to 0.5.
|
|
512
|
+
|
|
513
|
+
Returns:
|
|
514
|
+
str: The initial response from the QPS device.
|
|
515
|
+
|
|
516
|
+
Raises:
|
|
517
|
+
TimeoutError: If polling is enabled and the export does not complete in time.
|
|
297
518
|
"""
|
|
298
519
|
args = ""
|
|
520
|
+
if lines_per_file is not None:
|
|
521
|
+
args += f" -l{lines_per_file}"
|
|
522
|
+
if use_cr is not None:
|
|
523
|
+
args += " -cyes" if use_cr else " -cno"
|
|
524
|
+
if delimiter is not None:
|
|
525
|
+
args += f" -s{delimiter}"
|
|
526
|
+
|
|
527
|
+
command = f'$save csv "{file_path}" {args}'.strip()
|
|
528
|
+
command_response = self.connectionObj.qps.sendCmdVerbose(command, timeout=timeout)
|
|
529
|
+
|
|
530
|
+
if poll_till_complete:
|
|
531
|
+
start_time = time.monotonic()
|
|
532
|
+
while check_export_status(self.get_stream_export_status()):
|
|
533
|
+
if (time.monotonic() - start_time) > timeout:
|
|
534
|
+
raise TimeoutError(f"Stream export to CSV timed out after {timeout} seconds")
|
|
535
|
+
logger.debug("Waiting for stream export to complete...")
|
|
536
|
+
time.sleep(check_interval)
|
|
299
537
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
538
|
+
return command_response
|
|
539
|
+
|
|
540
|
+
def saveCSV(self, filePath: str, linesPerFile: Optional[Union[int, str]] = None, cr: Optional[bool] = None,
|
|
541
|
+
delimiter: Optional[str] = None, timeout: int = 180, pollTillComplete: bool = False,
|
|
542
|
+
checkInterval: float = 0.5) -> str:
|
|
543
|
+
"""
|
|
544
|
+
DEPRECATED: Use save_csv instead.
|
|
545
|
+
|
|
546
|
+
Args:
|
|
547
|
+
filePath (str): The target file path on the QPS device's filesystem.
|
|
548
|
+
linesPerFile (Optional[Union[int, str]], optional): Max lines per file. Defaults to None.
|
|
549
|
+
cr (Optional[bool], optional): True for CRLF, False for LF line endings. Defaults to None.
|
|
550
|
+
delimiter (Optional[str], optional): Field delimiter for the CSV. Defaults to None.
|
|
551
|
+
timeout (int, optional): Timeout in seconds. Defaults to 180.
|
|
552
|
+
pollTillComplete (bool, optional): If True, waits for export to finish. Defaults to False.
|
|
553
|
+
checkInterval (float, optional): Seconds between status checks when polling. Defaults to 0.5.
|
|
554
|
+
|
|
555
|
+
Returns:
|
|
556
|
+
str: The initial response from the QPS device.
|
|
557
|
+
"""
|
|
558
|
+
return self.save_csv(filePath, linesPerFile, cr, delimiter, timeout, pollTillComplete, checkInterval)
|
|
309
559
|
|
|
310
|
-
|
|
311
|
-
|
|
560
|
+
def create_channel(self, channel_name: str, channel_group: str, base_units: str, use_prefix: bool) -> str:
|
|
561
|
+
"""
|
|
562
|
+
Creates a new custom data channel on the QPS device.
|
|
312
563
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
usePrefix = "yes"
|
|
564
|
+
Args:
|
|
565
|
+
channel_name (str): The name for the new channel.
|
|
566
|
+
channel_group (str): The group to associate the channel with (e.g., "Voltage").
|
|
567
|
+
base_units (str): The fundamental unit for the channel (e.g., "V", "A").
|
|
568
|
+
use_prefix (bool): If True, allows channel prefixes (e.g., 'm' for milli).
|
|
319
569
|
|
|
320
|
-
|
|
570
|
+
Returns:
|
|
571
|
+
str: The response from the QPS device.
|
|
572
|
+
"""
|
|
573
|
+
prefix_str = "yes" if use_prefix else "no"
|
|
574
|
+
command = f"$create channel {channel_name} {channel_group} {base_units} {prefix_str}"
|
|
575
|
+
return self.connectionObj.qps.sendCmdVerbose(command)
|
|
321
576
|
|
|
322
|
-
def
|
|
323
|
-
|
|
577
|
+
def createChannel(self, channelName: str, channelGroup: str, baseUnits: str, usePrefix: bool) -> str:
|
|
578
|
+
"""
|
|
579
|
+
DEPRECATED: Use create_channel instead.
|
|
324
580
|
|
|
325
|
-
|
|
326
|
-
|
|
581
|
+
Args:
|
|
582
|
+
channelName (str): The name for the new channel.
|
|
583
|
+
channelGroup (str): The group to associate the channel with.
|
|
584
|
+
baseUnits (str): The fundamental unit for the channel.
|
|
585
|
+
usePrefix (bool): If True, allows channel prefixes.
|
|
327
586
|
|
|
328
|
-
|
|
329
|
-
|
|
587
|
+
Returns:
|
|
588
|
+
str: The response message from the QPS device.
|
|
589
|
+
"""
|
|
590
|
+
return self.create_channel(channelName, channelGroup, baseUnits, usePrefix)
|
|
591
|
+
|
|
592
|
+
def hide_channel(self, channel_specifier: str) -> str:
|
|
593
|
+
"""
|
|
594
|
+
Hides a specified channel from the QPS stream view.
|
|
595
|
+
|
|
596
|
+
Args:
|
|
597
|
+
channel_specifier (str): The identifier of the channel to hide (e.g., "5v:voltage").
|
|
598
|
+
|
|
599
|
+
Returns:
|
|
600
|
+
str: The response from the QPS device.
|
|
601
|
+
"""
|
|
602
|
+
return self.connectionObj.qps.sendCmdVerbose(f"$hide channel {channel_specifier}")
|
|
603
|
+
|
|
604
|
+
def hideChannel(self, channelSpecifier: str) -> str:
|
|
605
|
+
"""
|
|
606
|
+
DEPRECATED: Use hide_channel instead.
|
|
607
|
+
|
|
608
|
+
Args:
|
|
609
|
+
channelSpecifier (str): The identifier of the channel to hide.
|
|
610
|
+
|
|
611
|
+
Returns:
|
|
612
|
+
str: The response message from the QPS device.
|
|
613
|
+
"""
|
|
614
|
+
return self.hide_channel(channelSpecifier)
|
|
615
|
+
|
|
616
|
+
def show_channel(self, channel_specifier: str) -> str:
|
|
617
|
+
"""
|
|
618
|
+
Shows (un-hides) a specified channel in the QPS stream view.
|
|
330
619
|
|
|
331
|
-
|
|
620
|
+
Args:
|
|
621
|
+
channel_specifier (str): The identifier of the channel to show.
|
|
622
|
+
|
|
623
|
+
Returns:
|
|
624
|
+
str: The response from the QPS device.
|
|
625
|
+
"""
|
|
626
|
+
return self.connectionObj.qps.sendCmdVerbose(f"$show channel {channel_specifier}")
|
|
627
|
+
|
|
628
|
+
def showChannel(self, channelSpecifier: str) -> str:
|
|
629
|
+
"""
|
|
630
|
+
DEPRECATED: Use show_channel instead.
|
|
631
|
+
|
|
632
|
+
Args:
|
|
633
|
+
channelSpecifier (str): The identifier of the channel to show.
|
|
634
|
+
|
|
635
|
+
Returns:
|
|
636
|
+
str: The response message from the QPS device.
|
|
637
|
+
"""
|
|
638
|
+
return self.show_channel(channelSpecifier)
|
|
639
|
+
|
|
640
|
+
def channels(self) -> List[str]:
|
|
641
|
+
"""
|
|
642
|
+
Retrieves the list of available channels from QPS, split into a list of strings.
|
|
643
|
+
|
|
644
|
+
Returns:
|
|
645
|
+
list[str]: A list where each element is a channel identifier string.
|
|
646
|
+
"""
|
|
332
647
|
return self.connectionObj.qps.sendCmdVerbose("$channels").splitlines()
|
|
333
|
-
|
|
334
|
-
def
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
648
|
+
|
|
649
|
+
def myChannels(self) -> str:
|
|
650
|
+
"""
|
|
651
|
+
DEPRECATED: Use channels instead.
|
|
652
|
+
|
|
653
|
+
Retrieves the list of available channels from QPS as a single raw string.
|
|
654
|
+
|
|
655
|
+
Returns:
|
|
656
|
+
str: The raw response string from the QPS '$channels' command.
|
|
657
|
+
"""
|
|
658
|
+
return self.connectionObj.qps.sendCmdVerbose("$channels")
|
|
659
|
+
|
|
660
|
+
def hide_all_default_channels(self) -> None:
|
|
661
|
+
"""
|
|
662
|
+
Hides a predefined list of common default QPS/PAM channels.
|
|
663
|
+
|
|
664
|
+
Note:
|
|
665
|
+
This list is hardcoded and might not be exhaustive for all hardware.
|
|
666
|
+
"""
|
|
667
|
+
default_channels = [
|
|
668
|
+
"3.3v:voltage", "3v3:voltage", "5v:voltage", "12v:voltage",
|
|
669
|
+
"3.3v:current", "3v3:current", "5v:current", "12v:current",
|
|
670
|
+
"3.3v:power", "3v3:power", "5v:power", "12v:power", "tot:power",
|
|
671
|
+
"perst#:digital", "wake#:digital", "clkreq#:digital",
|
|
672
|
+
"smclk:digital", "smdat:digital"
|
|
673
|
+
]
|
|
674
|
+
for channel in default_channels:
|
|
675
|
+
try:
|
|
676
|
+
self.hide_channel(channel)
|
|
677
|
+
except Exception as e:
|
|
678
|
+
logger.warning(f"Failed to hide default channel '{channel}': {e}")
|
|
679
|
+
|
|
680
|
+
def hideAllDefaultChannels(self) -> None:
|
|
681
|
+
"""
|
|
682
|
+
DEPRECATED: Use hide_all_default_channels instead.
|
|
683
|
+
|
|
684
|
+
Hides a predefined list of common default QPS/PAM channels.
|
|
685
|
+
"""
|
|
686
|
+
self.hide_all_default_channels()
|
|
687
|
+
|
|
688
|
+
def add_data_point(self, channel_name: str, group_name: str, data_value: Union[int, float],
|
|
689
|
+
data_point_time: Union[int, str] = 0, time_format: str = "unix") -> None:
|
|
690
|
+
"""
|
|
691
|
+
Adds a single data point to a specified custom channel.
|
|
692
|
+
|
|
693
|
+
Args:
|
|
694
|
+
channel_name (str): The name of the custom channel.
|
|
695
|
+
group_name (str): The group associated with the channel.
|
|
696
|
+
data_value (Union[int, float]): The numeric value of the data point.
|
|
697
|
+
data_point_time (Union[int, str], optional): Timestamp for the data point.
|
|
698
|
+
Defaults to 0 (current time).
|
|
699
|
+
time_format (str, optional): "unix" or "elapsed". Defaults to "unix".
|
|
700
|
+
"""
|
|
701
|
+
if data_point_time == 0:
|
|
702
|
+
timestamp = qpsNowStr()
|
|
703
|
+
time_format = "unix"
|
|
375
704
|
else:
|
|
376
|
-
|
|
705
|
+
timestamp = str(data_point_time)
|
|
706
|
+
|
|
707
|
+
command = (f"$stream data add {channel_name} {group_name} "
|
|
708
|
+
f"{timestamp} {data_value} {time_format}")
|
|
709
|
+
|
|
710
|
+
self.connectionObj.qps.sendCmdVerbose(command)
|
|
711
|
+
|
|
712
|
+
def addDataPoint(self, channelName: str, groupName: str, dataValue: Union[int, float],
|
|
713
|
+
dataPointTime: Union[int, str] = 0, timeFormat: str = "unix") -> None:
|
|
714
|
+
"""
|
|
715
|
+
DEPRECATED: Use add_data_point instead.
|
|
716
|
+
|
|
717
|
+
Adds a single data point to a specified custom channel in the QPS stream.
|
|
718
|
+
|
|
719
|
+
Args:
|
|
720
|
+
channelName (str): The name of the custom channel to add data to.
|
|
721
|
+
groupName (str): The group associated with the channel (must match creation).
|
|
722
|
+
dataValue (int or float): The numeric value of the data point.
|
|
723
|
+
dataPointTime (int or str, optional): The timestamp for the data point.
|
|
724
|
+
timeFormat (str, optional): The format of the given time ["elapsed"|"unix"].
|
|
725
|
+
"""
|
|
726
|
+
self.add_data_point(channelName, groupName, dataValue, dataPointTime, timeFormat)
|
|
727
|
+
|
|
728
|
+
def get_stream_export_status(self) -> str:
|
|
729
|
+
"""
|
|
730
|
+
Queries the QPS device for the status of the main stream data export process.
|
|
731
|
+
|
|
732
|
+
Returns:
|
|
733
|
+
str: The response string from QPS indicating the stream export status
|
|
734
|
+
"""
|
|
735
|
+
return self.connectionObj.qps.sendCmdVerbose("$stream export status")
|
|
736
|
+
|
|
737
|
+
def get_stats_export_status(self) -> str:
|
|
738
|
+
"""
|
|
739
|
+
Queries the QPS device for the status of the statistics data export process.
|
|
740
|
+
|
|
741
|
+
Returns:
|
|
742
|
+
str: The response string from QPS indicating the stats export status
|
|
743
|
+
"""
|
|
744
|
+
return self.connectionObj.qps.sendCmdVerbose("$stream stats export status")
|
|
745
|
+
|
|
746
|
+
def stop_stream(self, poll_till_complete: bool = False, check_interval: float = 0.1, timeout: int = 60) -> Literal[Status.OVERRUN, Status.STOPPED] | Any:
|
|
747
|
+
"""
|
|
748
|
+
Sends the command to stop the QPS data stream.
|
|
377
749
|
|
|
378
|
-
|
|
379
|
-
|
|
750
|
+
Args:
|
|
751
|
+
poll_till_complete (bool, optional): If True, waits for the stream to fully stop. Defaults to False.
|
|
752
|
+
check_interval (float, optional): Seconds between status checks when polling. Defaults to 0.1.
|
|
753
|
+
timeout (int, optional): Max seconds to wait for polling to complete. Defaults to 60.
|
|
754
|
+
|
|
755
|
+
Returns:
|
|
756
|
+
str: The final stream status if polling, otherwise the initial command response.
|
|
757
|
+
|
|
758
|
+
Raises:
|
|
759
|
+
Exception: If the stop command itself fails.
|
|
760
|
+
TimeoutError: If polling is enabled and times out.
|
|
761
|
+
"""
|
|
762
|
+
response = self.connectionObj.qps.sendCmdVerbose("$stop stream")
|
|
763
|
+
if response.startswith("Fail"):
|
|
764
|
+
raise Exception(response)
|
|
765
|
+
|
|
766
|
+
if poll_till_complete:
|
|
767
|
+
start_time = time.monotonic()
|
|
768
|
+
while True:
|
|
769
|
+
stream_state = self.get_stream_state().lower()
|
|
770
|
+
is_stopped = check_stream_stopped_status(stream_state)
|
|
771
|
+
if is_stopped:
|
|
772
|
+
return is_stopped
|
|
773
|
+
|
|
774
|
+
if (time.monotonic() - start_time) > timeout:
|
|
775
|
+
raise TimeoutError(f"Timeout ({timeout}s) waiting for stream to stop. Last state: {stream_state}")
|
|
776
|
+
|
|
777
|
+
logger.debug(f"Stream buffer still emptying: {stream_state}")
|
|
778
|
+
time.sleep(check_interval)
|
|
779
|
+
|
|
780
|
+
return response
|
|
781
|
+
|
|
782
|
+
def stopStream(self, pollTillComplete: bool = False, checkInterval: float = 0.1, timeout: int = 60) -> str:
|
|
783
|
+
"""
|
|
784
|
+
DEPRECATED: Use stop_stream instead.
|
|
785
|
+
|
|
786
|
+
Args:
|
|
787
|
+
pollTillComplete (bool, optional): If True, waits until the QPS stream
|
|
788
|
+
state is no longer "running". Defaults to False.
|
|
789
|
+
checkInterval (float, optional): Time in seconds between status checks
|
|
790
|
+
when polling. Defaults to 0.1.
|
|
791
|
+
timeout (int, optional): Maximum time in seconds to wait. Defaults to 60.
|
|
792
|
+
|
|
793
|
+
Returns:
|
|
794
|
+
str: The final checked stream status string ("STOPPED", "OVERRUN") if polling,
|
|
795
|
+
otherwise the initial response from the '$stop stream' command.
|
|
796
|
+
"""
|
|
797
|
+
return self.stop_stream(pollTillComplete, checkInterval, timeout)
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
# -------------------------------------
|
|
801
|
+
# Constants/Enums
|
|
802
|
+
# -------------------------------------
|
|
803
|
+
class Status(enum.Enum):
|
|
804
|
+
IN_PROGRESS = "IN PROGRESS"
|
|
805
|
+
COMPLETE = "COMPLETE"
|
|
806
|
+
STOPPED = "STOPPED"
|
|
807
|
+
OVERRUN = "OVERRUN"
|
|
808
|
+
OK = "OK"
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
# -------------------------------------
|
|
812
|
+
# API Utility Functions
|
|
813
|
+
# -------------------------------------
|
|
814
|
+
def current_milli_time():
|
|
815
|
+
return int(round(time.time() * 1000))
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
def current_second_time():
|
|
819
|
+
return int(round(time.time()))
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
# -------------------------------------
|
|
823
|
+
# Stream API Utility Functions
|
|
824
|
+
# -------------------------------------
|
|
825
|
+
def check_stream_status(stream_status):
|
|
826
|
+
# Check the stream status, so we know if anything went wrong during the capture period
|
|
827
|
+
if "stopped" in stream_status:
|
|
828
|
+
if "overrun" in stream_status:
|
|
829
|
+
return '\tStream interrupted due to internal device buffer has filled up'
|
|
830
|
+
elif "user" in stream_status:
|
|
831
|
+
return '\tStream interrupted due to max file size has being exceeded'
|
|
832
|
+
else:
|
|
833
|
+
return "\tStopped for unknown reason"
|
|
834
|
+
return "\t Stream running"
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
def check_stream_stopped_status(stream_status):
|
|
838
|
+
# Check the stream status, so we know if anything went wrong during the capture period
|
|
839
|
+
if "stopped" in stream_status:
|
|
840
|
+
if "overrun" in stream_status:
|
|
841
|
+
logger.warning('Stream interrupted due to internal device buffer has filled up')
|
|
842
|
+
return Status.OVERRUN
|
|
843
|
+
else:
|
|
844
|
+
return Status.STOPPED
|
|
845
|
+
return Status.IN_PROGRESS
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
# -------------------------------------
|
|
849
|
+
# QPS API Utility Functions
|
|
850
|
+
# -------------------------------------
|
|
851
|
+
def check_export_status(export_status):
|
|
852
|
+
if export_status == Status.COMPLETE:
|
|
853
|
+
return True
|
|
854
|
+
elif export_status == Status.IN_PROGRESS:
|
|
855
|
+
return False
|
|
856
|
+
return False
|