diff --git a/batch/eeprom/DM2088_R0M0E0_oak_d_poe_af.json b/batch/eeprom/DM2088_R0M0E0_oak_d_poe_af.json new file mode 100644 index 000000000..6d043f7a1 --- /dev/null +++ b/batch/eeprom/DM2088_R0M0E0_oak_d_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "DM2088", + "boardRev": "R0M0E0", + "productName": "OAK-D PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC000", + "boardOptions": 1, + "version": 7 +} diff --git a/batch/Maxwell/DM9095_R3M2E4_oak_d_lite.json b/batch/eeprom/DM9095_R3M2E4_oak_d_lite.json similarity index 100% rename from batch/Maxwell/DM9095_R3M2E4_oak_d_lite.json rename to batch/eeprom/DM9095_R3M2E4_oak_d_lite.json diff --git a/batch/Maxwell/DM9098_R3M2E3_oak_d_s2_af.json b/batch/eeprom/DM9098_R3M2E3_oak_d_s2_af.json similarity index 100% rename from batch/Maxwell/DM9098_R3M2E3_oak_d_s2_af.json rename to batch/eeprom/DM9098_R3M2E3_oak_d_s2_af.json diff --git a/batch/Maxwell/DM9098_R3M2E3_oak_d_s2_ff.json b/batch/eeprom/DM9098_R3M2E3_oak_d_s2_ff.json similarity index 100% rename from batch/Maxwell/DM9098_R3M2E3_oak_d_s2_ff.json rename to batch/eeprom/DM9098_R3M2E3_oak_d_s2_ff.json diff --git a/batch/Maxwell/DM9098_R3M2E3_oak_d_w.json b/batch/eeprom/DM9098_R3M2E3_oak_d_w.json similarity index 100% rename from batch/Maxwell/DM9098_R3M2E3_oak_d_w.json rename to batch/eeprom/DM9098_R3M2E3_oak_d_w.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_af.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_af.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_af.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_af.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_af_pb.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_af_pb.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_af_pb.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_af_pb.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#1.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#1.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#1.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#1.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#2.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#2.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#2.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#2.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_w.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_w.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_w.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_w.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_pro_w_ov9782.json b/batch/eeprom/DM9098_R6M2E6_oak_d_pro_w_ov9782.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_pro_w_ov9782.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_pro_w_ov9782.json diff --git a/batch/Maxwell/DM9098_R6M2E6_oak_d_s2_af.json b/batch/eeprom/DM9098_R6M2E6_oak_d_s2_af.json similarity index 100% rename from batch/Maxwell/DM9098_R6M2E6_oak_d_s2_af.json rename to batch/eeprom/DM9098_R6M2E6_oak_d_s2_af.json diff --git a/batch/Maxwell/NG2094_R0M0E0_oak_d_pro_w_dev b/batch/eeprom/NG2094_R0M0E0_oak_d_pro_w_dev.json similarity index 100% rename from batch/Maxwell/NG2094_R0M0E0_oak_d_pro_w_dev rename to batch/eeprom/NG2094_R0M0E0_oak_d_pro_w_dev.json diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_af.json b/batch/eeprom/NG9093_R2M0E3_oak_1_af.json new file mode 100644 index 000000000..98b69f64b --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_ff.json b/batch/eeprom/NG9093_R2M0E3_oak_1_ff.json new file mode 100644 index 000000000..16e9d8c5e --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C01M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 Lite FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_ff_c09.json b/batch/eeprom/NG9093_R2M0E3_oak_1_ff_c09.json new file mode 100644 index 000000000..a8b994951 --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_ff_c09.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C03M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 FF-C09", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_lite_c05.json b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_c05.json new file mode 100644 index 000000000..478f4a4ba --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_c05.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C03M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 Lite C05", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_lite_ff.json b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_ff.json new file mode 100644 index 000000000..16e9d8c5e --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C01M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 Lite FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_lite_w.json b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_w.json new file mode 100644 index 000000000..c4ee13030 --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_lite_w.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C01M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 Lite W", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_max.json b/batch/eeprom/NG9093_R2M0E3_oak_1_max.json new file mode 100644 index 000000000..47e7ff6c9 --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_max.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C02M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 MAX", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9093_R2M0E3_oak_1_w.json b/batch/eeprom/NG9093_R2M0E3_oak_1_w.json new file mode 100644 index 000000000..aaf94f2e3 --- /dev/null +++ b/batch/eeprom/NG9093_R2M0E3_oak_1_w.json @@ -0,0 +1,12 @@ +{ + "batchName": "Maxwell", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9093", + "boardRev": "R2M0E3", + "productName": "OAK-1 W", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC000", + "boardOptions": 0, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_af.json b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_af.json new file mode 100644 index 000000000..b448cc791 --- /dev/null +++ b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "Leonardo", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R3M2E2", + "productName": "OAK-D Pro PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC000", + "boardOptions": 3, + "version": 7 +} \ No newline at end of file diff --git a/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_custom.json b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_custom.json new file mode 100644 index 000000000..e05f9fc4b --- /dev/null +++ b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_custom.json @@ -0,0 +1,12 @@ +{ + "batchName": "Leonardo", + "batchTime": 0, + "boardConf": "IR-C01M00-00", + "boardName": "NG9097", + "boardRev": "R3M2E2", + "productName": "OAK-D Pro PoE Custom", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC001", + "boardOptions": 3, + "version": 7 +} \ No newline at end of file diff --git a/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_ff.json b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_ff.json new file mode 100644 index 000000000..d9716b615 --- /dev/null +++ b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_poe_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "Leonardo", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R3M2E2", + "productName": "OAK-D Pro PoE FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC000", + "boardOptions": 3, + "version": 7 +} \ No newline at end of file diff --git a/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe.json b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe.json new file mode 100644 index 000000000..685e3b03e --- /dev/null +++ b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe.json @@ -0,0 +1,12 @@ +{ + "batchName": "Leonardo", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R3M2E2", + "productName": "OAK-D Pro-W PoE", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC000", + "boardOptions": 3, + "version": 7 +} \ No newline at end of file diff --git a/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe_custom.json b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe_custom.json new file mode 100644 index 000000000..c35669219 --- /dev/null +++ b/batch/eeprom/NG9097_R3M2E2_oak_d_pro_w_poe_custom.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C02M00-00", + "boardName": "NG9097", + "boardRev": "R3M2E2", + "productName": "OAK-D Pro-W PoE Custom", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_af.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_af.json new file mode 100644 index 000000000..e8a44e546 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M01-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_ff.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_ff.json new file mode 100644 index 000000000..b40a5d4bf --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M01-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro PoE FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_w_poe.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_w_poe.json new file mode 100644 index 000000000..c7cd8cf03 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_w_poe.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M01-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro W PoE", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_af.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_af.json new file mode 100644 index 000000000..e4bad528d --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D S2 PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_ff.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_ff.json new file mode 100644 index 000000000..960ba8386 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D S2 PoE FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_w_poe.json b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_w_poe.json new file mode 100644 index 000000000..5a3f32c46 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BMI270_oak_d_w_poe.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D W PoE", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 7, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_af.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_af.json new file mode 100644 index 000000000..f845c749f --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_ff.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_ff.json new file mode 100644 index 000000000..5debdc14b --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro PoE FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_w_poe.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_w_poe.json new file mode 100644 index 000000000..490212549 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_w_poe.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "IR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D Pro W PoE", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_af.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_af.json new file mode 100644 index 000000000..1d9a95579 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_af.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D S2 PoE AF", + "boardCustom": "", + "hardwareConf": "F0-FV00-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_ff.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_ff.json new file mode 100644 index 000000000..063861626 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_ff.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D S2 PoE FF", + "boardCustom": "", + "hardwareConf": "F1-FV00-BC001", + "boardOptions": 3, + "version": 7 +} diff --git a/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_w_poe.json b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_w_poe.json new file mode 100644 index 000000000..475565758 --- /dev/null +++ b/batch/eeprom/NG9097_R4M2E3_BNO086_oak_d_w_poe.json @@ -0,0 +1,12 @@ +{ + "batchName": "", + "batchTime": 0, + "boardConf": "nIR-C00M00-00", + "boardName": "NG9097", + "boardRev": "R4M2E3", + "productName": "OAK-D W PoE", + "boardCustom": "", + "hardwareConf": "F1-FV01-BC001", + "boardOptions": 3, + "version": 7 +} \ No newline at end of file diff --git a/batch/oak_1.json b/batch/oak_1.json new file mode 100644 index 000000000..103a38d09 --- /dev/null +++ b/batch/oak_1.json @@ -0,0 +1,33 @@ +{ + "title": "OAK-1", + "description": "OAK-1", + "image": "images/oak_1.jpg", + "test_type": "OAK-1", + "variants": [ + { + "title":"OAK-1 AF (NG9093 R2M0E3)", + "description": "OAK-1 with Auto Focus", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_af.json" + }, + { + "title":"OAK-1 FF C09 (NG9093 R2M0E3)", + "description": "OAK-1 with Fixed Focus C09", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_af.json" + }, + { + "title":"OAK-1 FF (NG9093 R2M0E3)", + "description": "OAK-1 with Fixed Focus", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_ff.json" + }, + { + "title":"OAK-1 Max (NG9093 R2M0E3)", + "description": "OAK-1 Max", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_max.json" + }, + { + "title":"OAK-1 W (NG9093 R2M0E3)", + "description": "OAK-1 Wide Lens", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_w.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_lite.json b/batch/oak_d_lite.json new file mode 100644 index 000000000..39e82a48d --- /dev/null +++ b/batch/oak_d_lite.json @@ -0,0 +1,31 @@ +{ + "title": "OAK-D Lite", + "description": "OAK-D Lite", + "image": "images/oak_d_lite.jpg", + "test_type": "OAK-D-LITE", + "variants": [ + { + "title":"OAK-D Lite (DM9095 R3M2E4)", + "description": "OAK-D Lite, based on DM9095 R3M2E4 board", + "eeprom":"eeprom/DM9095_R3M2E4_oak_d_lite.json" + }, + { + "title":"OAK-1 Lite C05 (NG9093 R2M0E3)", + "description": "OAK-1 Lite C05 based on NG9093 R2M0E3 board", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_lite_c05.json", + "test_type": "OAK-1-LITE" + }, + { + "title":"OAK-1 Lite W (NG9093 R2M0E3)", + "description": "OAK-1 Lite Wide Lens based on NG9093 R2M0E3 board", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_lite_w.json", + "test_type": "OAK-1-LITE" + }, + { + "title":"OAK-1 Lite FF (NG9093 R2M0E3)", + "description": "OAK-1 Lite Fixed Focus based on NG9093 R2M0E3 board", + "eeprom":"eeprom/NG9093_R2M0E3_oak_1_lite_ff.json", + "test_type": "OAK-1-LITE" + } + ] +} diff --git a/batch/oak_d_poe.json b/batch/oak_d_poe.json new file mode 100644 index 000000000..f9cd66e94 --- /dev/null +++ b/batch/oak_d_poe.json @@ -0,0 +1,13 @@ +{ + "title": "OAK-D PoE", + "description": "OAK-D PoE", + "image": "images/oak_d_poe.jpg", + "test_type": "OAK-D-POE", + "variants": [ + { + "title":"OAK-D PoE AF (DM2088 R0M0E0)", + "description": "OAK-D PoE with AutoFocus, based on DM2088 R0M0E0", + "eeprom":"eeprom/DM2088_R0M0E0_oak_d_poe_af.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_pro.json b/batch/oak_d_pro.json new file mode 100644 index 000000000..2798b77da --- /dev/null +++ b/batch/oak_d_pro.json @@ -0,0 +1,48 @@ +{ + "title": "OAK-D Pro", + "description": "OAK-D Pro (Series 2)", + "image": "images/oak_d_pro.jpg", + "test_type": "OAK-D-PRO", + "variants": [ + { + "title":"OAK-D Pro AF PB (DM9098 R6M2E6)", + "description": "OAK-D Pro, AutoFocus, with picoblade connector", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_af_pb.json" + }, + { + "title":"OAK-D Pro AF (DM9098 R6M2E6)", + "description": "OAK-D Pro AutoFocus", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_af.json" + }, + { + "title":"OAK-D Pro FF PB #1 (DM9098 R6M2E6)", + "description": "OAK-D Pro, Fixed Focus, with picoblade connector", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#1.json" + }, + { + "title":"OAK-D Pro FF PB #2 (DM9098 R6M2E6)", + "description": "OAK-D Pro, Fixed Focus, with picoblade connector", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_ff_pb_ff#2.json" + }, + { + "title":"OAK-D Pro FF (DM9098 R6M2E6)", + "description": "OAK-D Pro, Fixed Focus", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_ff.json" + }, + { + "title":"OAK-D Pro W-OV9782 (DM9098 R6M2E6)", + "description": "OAK-D Pro Wide with center OV9782 camera", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_w_ov9782.json" + }, + { + "title":"OAK-D Pro W (DM9098 R6M2E6)", + "description": "OAK-D Pro Wide with center IMX378 camera", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_pro_w.json" + }, + { + "title":"OAK-D Pro W Dev (NG2094 R0M0E0)", + "description": "OAK-D Pro Wide dev, based on NG2094 R0M0E0", + "eeprom":"eeprom/NG2094_R0M0E0_oak_d_pro_w_dev.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_pro_poe.json b/batch/oak_d_pro_poe.json new file mode 100644 index 000000000..c3cf393e7 --- /dev/null +++ b/batch/oak_d_pro_poe.json @@ -0,0 +1,58 @@ +{ + "title": "OAK-D Pro PoE", + "description": "OAK-D Pro PoE", + "image": "images/oak_d_pro.jpg", + "test_type": "OAK-D-PRO-POE", + "variants": [ + { + "title":"OAK-D Pro PoE AF (NG9097 R3M2E2)", + "description": "OAK-D Pro PoE AutoFocus based on NG9097 R3M2E2", + "eeprom":"eeprom/NG9097_R3M2E2_oak_d_pro_poe_af.json" + }, + { + "title":"OAK-D Pro PoE AF (NG9097 R4M2E3 BMI270)", + "description": "OAK-D Pro PoE AutoFocus based on NG9097 R4M2E3 and BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_af.json" + }, + { + "title":"OAK-D Pro PoE AF (NG9097 R4M2E3 BNO086)", + "description": "OAK-D Pro PoE AutoFocus based on NG9097 R4M2E3 and BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_af.json" + }, + { + "title":"OAK-D Pro PoE FF (NG9097 R3M2E2)", + "description": "OAK-D Pro PoE FixedFocus based on NG9097 R3M2E2", + "eeprom":"eeprom/NG9097_R3M2E2_oak_d_pro_poe_ff.json" + }, + { + "title":"OAK-D Pro PoE FF (NG9097 R4M2E3 BMI270)", + "description": "OAK-D Pro PoE FixedFocus based on NG9097 R4M2E3 and BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_poe_ff.json" + }, + { + "title":"OAK-D Pro PoE FF (NG9097 R4M2E3 BNO086)", + "description": "OAK-D Pro PoE FixedFocus based on NG9097 R4M2E3 and BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_poe_ff.json" + }, + { + "title":"OAK-D Pro W PoE (NG9097 R3M2E2)", + "description": "OAK-D Pro PoE WideLens based on NG9097 R3M2E2", + "eeprom":"eeprom/NG9097_R3M2E2_oak_d_pro_w_poe.json" + }, + { + "title":"OAK-D Pro W PoE (NG9097 R4M2E3 BMI270)", + "description": "OAK-D Pro PoE WideLens based on NG9097 R4M2E3 and BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_pro_w_poe.json" + }, + { + "title":"OAK-D Pro PoE FF (NG9097 R4M2E3 BNO086)", + "description": "OAK-D Pro PoE WideLens based on NG9097 R4M2E3 and BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_pro_w_poe.json" + }, + { + "title":"OAK-D Pro W PoE Custom (NG9097 R3M2E2)", + "description": "OAK-D Pro PoE Custom based on NG9097 R3M2E2", + "eeprom":"eeprom/NG9097_R3M2E2_oak_d_pro_w_poe_custom.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_s2.json b/batch/oak_d_s2.json new file mode 100644 index 000000000..612e16aca --- /dev/null +++ b/batch/oak_d_s2.json @@ -0,0 +1,24 @@ +{ + "title": "OAK-D S2", + "description": "OAK-D Series 2", + "image": "images/oak_d_s2.jpg", + "test_type": "OAK-D", + "variants": [ + { + "title":"OAK-D S2 AF (DM9098 R3M2E3)", + "description": "OAK-D Series 2, AutoFocus, based on DM9098 R3M2E3 board", + "eeprom":"eeprom/DM9098_R3M2E3_oak_d_s2_af.json" + }, + { + "title":"OAK-D S2 AF (DM9098 R6M2E6)", + "description": "OAK-D Series 2, AutoFocus, based on DM9098 R6M2E6 board, with PMIC IC", + "test_type": "OAK-D", + "eeprom":"eeprom/DM9098_R6M2E6_oak_d_s2_af.json" + }, + { + "title":"OAK-D S2 FF (DM9098 R3M2E3)", + "description": "OAK-D Series 2, Fixed Focus, based on DM9098 R3M2E3 board", + "eeprom":"eeprom/DM9098_R3M2E3_oak_d_s2_ff.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_s2_poe.json b/batch/oak_d_s2_poe.json new file mode 100644 index 000000000..21a9e7d33 --- /dev/null +++ b/batch/oak_d_s2_poe.json @@ -0,0 +1,28 @@ + { + "title": "OAK-D S2 PoE", + "description": "OAK-D Series 2 PoE", + "image": "images/oak_d_s2_poe.jpg", + "test_type": "OAK-D-POE", + "variants": [ + { + "title":"OAK-D S2 AF PoE (NG9097 R4M2E3 BMI270)", + "description": "OAK-D Series 2, AutoFocus, based on NG9097 R4M2E3 board with BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_af.json" + }, + { + "title":"OAK-D S2 AF PoE (NG9097 R4M2E3 BNO086)", + "description": "OAK-D Series 2, AutoFocus, based on NG9097 R4M2E3 board with BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_af.json" + }, + { + "title":"OAK-D S2 FF PoE (NG9097 R4M2E3 BMI270)", + "description": "OAK-D Series 2, FixedFocus, based on NG9097 R4M2E3 board with BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_s2_poe_ff.json" + }, + { + "title":"OAK-D S2 FF PoE (NG9097 R4M2E3 BNO086)", + "description": "OAK-D Series 2, FixedFocus, based on NG9097 R4M2E3 board with BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_s2_poe_ff.json" + } + ] +} \ No newline at end of file diff --git a/batch/oak_d_w_poe.json b/batch/oak_d_w_poe.json new file mode 100644 index 000000000..164169944 --- /dev/null +++ b/batch/oak_d_w_poe.json @@ -0,0 +1,18 @@ + { + "title": "OAK-D W PoE", + "description": "OAK-D W PoE", + "image": "images/oak_d_w_poe.jpg", + "test_type": "OAK-D-POE", + "variants": [ + { + "title":"OAK-D W PoE (NG9097 R4M2E3 BMI270)", + "description": "OAK-D WideLens PoE, based on NG9097 R4M2E3 board with BMI270 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BMI270_oak_d_w_poe.json" + }, + { + "title":"OAK-D W PoE (NG9097 R4M2E3 BNO086)", + "description": "OAK-D WideLens PoE, based on NG9097 R4M2E3 board with BNO086 IMU", + "eeprom":"eeprom/NG9097_R4M2E3_BNO086_oak_d_w_poe.json" + } + ] +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 4eb12234c..fda6341f7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,4 +12,4 @@ opencv-contrib-python==4.4.0.46 ; platform_machine == "armv6l" or platform_machi --extra-index-url https://artifacts.luxonis.com/artifactory/luxonis-depthai-data-local/wheels/ pyqt5>5,<5.15.6 ; platform_machine != "armv6l" and platform_machine != "armv7l" and platform_machine != "aarch64" --extra-index-url https://artifacts.luxonis.com/artifactory/luxonis-python-snapshot-local/ -depthai==2.16.0.0.dev+9d15b2a23834a09c3f07e4439d40ff3ae77bad2a +depthai==2.16.0.0.dev+e3e6a1f9040d7591e47e05a81f3632df7f09f4f2 diff --git a/test_ui.py b/test_ui.py index ecc4c69e1..ce379729a 100755 --- a/test_ui.py +++ b/test_ui.py @@ -16,6 +16,7 @@ import json, time from pathlib import Path import cv2 +import glob # Try setting native cv2 image format, otherwise RGB888 colorMode = QtGui.QImage.Format_RGB888 @@ -26,10 +27,14 @@ FPS = 10 -BATCH_DIR = Path(__file__).resolve().parent / 'batch' +DEVICE_DIR = Path(__file__).resolve().parent / 'batch' test_result = { 'usb3_res': '', + 'nor_flash_res': '', + 'bootloader_flash_res': '', + 'imu_upgrade_res': '', + 'imu_test_res': '', 'eeprom_res': '', 'rgb_cam_res': '', 'jpeg_enc_res': '', @@ -41,6 +46,7 @@ 'eeprom_data': '', 'nor_flash_res': '', } + OAK_KEYS = { 'OAK-1': ['usb3_res', 'rgb_cam_res', 'jpeg_enc_res', 'prew_out_rgb_res'], 'OAK-D': ['usb3_res', 'rgb_cam_res', 'jpeg_enc_res', 'prew_out_rgb_res', 'left_cam_res', 'right_cam_res','left_strm_res', 'right_strm_res'], @@ -61,25 +67,29 @@ 'OAK-D-PRO-POE': ['jpeg_enc', 'prew_out_rgb', 'left_strm', 'right_strm', 'ir_light'], } - -OAK_D_LABELS = '
\
- USB3
\
- EEPROM write test
\
- RGB Camera connected
\
- JPEG Encoding Stream
\
- preview-out-rgb Stream
\
- left camera connected
\
- right camera connected
\
- left Stream
\
- right Stream
\
- USB3
\
- EEPROM write test
\
- RGB Camera connected
\
- JPEG Encoding Stream
\
- preview-out-rgb Stream
\ + USB3 {br_command} \ + EEPROM write test {br_command} \ + NOR Flash {br_command} \ + Bootloader Flash {br_command} \ + IMU Upgrade {br_command} \ + IMU test {br_command} \ + RGB Camera connected {br_command} \ + JPEG Encoding Stream {br_command} \ + preview-out-rgb Stream {br_command} \ + left camera connected {br_command} \ + right camera connected {br_command} \ + left Stream {br_command} \ + right Stream {br_command}
' + + +OAK_ONE_LABELS = f'\ + USB3 {br_command} \ + EEPROM write test {br_command} \ + RGB Camera connected {br_command} \ + JPEG Encoding Stream {br_command} \ + preview-out-rgb Stream {br_command} \
' CSV_HEADER = { 'OAK-1': '"Device ID","Device Type","Timestamp","USB3","RGB camera connect","JPEG Encoding","RGB Stream","JPEG Encoding Operator","RGB Encoding Operator"', @@ -110,7 +120,7 @@ def clear_test_results(): update_res = True imu_upgrade = True -class DepthAICamera(): +class DepthAICamera: def __init__(self): global update_res self.pipeline = dai.Pipeline() @@ -125,6 +135,10 @@ def __init__(self): self.camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P) self.camRgb.preview.link(self.xoutRgb.input) self.camRgb.setFps(FPS) + if 'max' in variant_desc_label.lower(): + print('On a MAX board (IMX582), setting 4K res') + self.camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_4_K) + self.camRgb.setIspScale(1, 2) # # TMP TMP TMP - IMU update simulation # script = self.pipeline.create(dai.node.Script) @@ -152,15 +166,12 @@ def __init__(self): self.imu = self.pipeline.create(dai.node.IMU) self.xoutIMU = self.pipeline.create(dai.node.XLinkOut) self.xoutIMU.setStreamName("IMU") - if 'lite' in test_type: - self.imu.enableFirmwareUpdate(True) - self.imu.enableIMUSensor(dai.IMUSensor.ACCELEROMETER_RAW, 500) + self.imu.enableFirmwareUpdate(True) + self.imu.enableIMUSensor([dai.IMUSensor.ACCELEROMETER_RAW, dai.IMUSensor.GYROSCOPE_RAW], 500) self.imu.setBatchReportThreshold(1) self.imu.setMaxBatchReports(10) self.imu.out.link(self.xoutIMU.input) - - self.videoEnc = self.pipeline.create(dai.node.VideoEncoder) self.camRgb.video.link(self.videoEnc.input) self.xoutJpeg = self.pipeline.create(dai.node.XLinkOut) @@ -168,7 +179,7 @@ def __init__(self): self.videoEnc.setDefaultProfilePreset(self.camRgb.getFps(), dai.VideoEncoderProperties.Profile.MJPEG) self.xoutJpeg.setStreamName("jpeg") - if test_type != 'OAK-1': + if 'OAK-1' not in test_type: self.camLeft = self.pipeline.create(dai.node.MonoCamera) self.xoutLeft = self.pipeline.create(dai.node.XLinkOut) self.xoutLeft.setStreamName("left") @@ -186,8 +197,7 @@ def __init__(self): self.camRight.setFps(10) usb_speed = dai.UsbSpeed.SUPER - # if test_type == 'OAK-D-PRO-POE': - if 'poe' in eepromDataJson['productName'].lower(): + if 'POE' in test_type: usb_speed = dai.UsbSpeed.HIGH self.device = dai.Device(dai.OpenVINO.VERSION_2021_4, usb_speed) @@ -253,8 +263,7 @@ def __init__(self): except RuntimeError: test_result['usb3_res'] = 'FAIL' - # if test_type == 'OAK-D-PRO-POE': - if 'poe' in eepromDataJson['productName'].lower(): + if 'POE' in test_type: test_result['usb3_res'] = 'SKIP' self.start_queue() @@ -293,8 +302,22 @@ def start_queue(self): self.qJpeg = self.device.getOutputQueue(name="jpeg", maxSize=1, blocking=False) except RuntimeError: test_result['jpeg_enc_res'] = 'FAIL' + try: + self.qImu = self.device.getOutputQueue(name='IMU', maxSize=1, blocking=False) + except RuntimeError: + test_result['imu'] = 'FAIL' update_res = True + def get_imu(self): + in_imu = self.qImu.tryGet() + if in_imu is None: + print('empty packet') + return None + imu_packet = in_imu.packets[0] + accel = imu_packet.acceleroMeter + gyro = imu_packet.gyroscope + return accel, gyro + def get_image(self, cam_type): global update_res image = None @@ -403,80 +426,133 @@ def flash_eeprom(self): eepromDataJson = None calib_path = None +selectedDeviceInfo = "" class Ui_CalibrateSelect(QtWidgets.QDialog): def __init__(self): global eepromDataJson global calib_path super().__init__() - x = os.walk(BATCH_DIR) - print(x) - self.batches = [] - self.jsons = {} - for x in os.walk(BATCH_DIR): - self.batches = sorted(x[1]) - break - for batch in self.batches: - for js in os.walk(BATCH_DIR/batch): - self.jsons[batch] = sorted(js[2]) - print(js) - - self.batch_combo = QtWidgets.QComboBox(self) - self.batch_combo.setGeometry(QtCore.QRect(100, 20, 141, 32)) - self.batch_combo.addItems(self.batches) - self.batch_combo.currentTextChanged.connect(self.batches_changed) + + # Create list of devices data + self.device_jsons = [] + # Create "representational (title)" data + self.device_titles = [] + + # Get all devices + devices = glob.glob(f'{DEVICE_DIR}/*.json') + # Retrieve all information + for dev in devices: + with open(dev, 'r') as f: + j = json.load(f) + self.device_jsons.append(j) + self.device_titles.append(j["title"]) + + self.device_dropdown = QtWidgets.QComboBox(self) + self.device_dropdown.addItems(self.device_titles) + self.device_dropdown.currentTextChanged.connect(self.device_changed) self.json_combo = QtWidgets.QComboBox(self) - self.json_combo.setGeometry(QtCore.QRect(100, 70, 261, 32)) - self.json_combo.addItems(self.jsons[self.batches[0]]) - self.json_combo.currentTextChanged.connect(self.json_changed) + self.json_combo.currentTextChanged.connect(self.variant_changed) self.setObjectName("CalibrateSelect") - self.resize(386, 192) self.buttonBox = QtWidgets.QDialogButtonBox(self) - self.buttonBox.setGeometry(QtCore.QRect(70, 130, 191, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) - self.buttonBox.setObjectName("buttonBox") + self.buttonBox.accepted.connect(self.accept) + self.buttonBox.rejected.connect(self.reject) + self.batch_label = QtWidgets.QLabel(self) - self.batch_label.setGeometry(QtCore.QRect(10, 20, 51, 27)) font = QtGui.QFont() font.setPointSize(12) self.batch_label.setFont(font) - self.batch_label.setObjectName("batch_label") + self.batch_label.setObjectName("device_label") + + self.device_desc_label = QtWidgets.QLabel(self) + self.device_desc_label.setObjectName("device_desc_label") + self.json_label = QtWidgets.QLabel(self) - self.json_label.setGeometry(QtCore.QRect(10, 70, 77, 27)) + self.json_label.setGeometry(QtCore.QRect(10, 150, 77, 27)) font = QtGui.QFont() font.setPointSize(12) self.json_label.setFont(font) self.json_label.setObjectName("json_label") - self.buttonBox.accepted.connect(self.accept) - self.buttonBox.rejected.connect(self.reject) + + self.variant_desc_label = QtWidgets.QLabel(self) + QtCore.QMetaObject.connectSlotsByName(self) _translate = QtCore.QCoreApplication.translate - self.batch_label.setText(_translate("CalibrateSelect", "Batch")) - self.json_label.setText(_translate("CalibrateSelect", "JSON file")) + self.batch_label.setText(_translate("CalibrateSelect", "Device")) + self.json_label.setText(_translate("CalibrateSelect", "Variant")) self.setWindowTitle(_translate("CalibrateSelect", "Dialog")) - calib_path = BATCH_DIR / self.batch_combo.currentText() / self.json_combo.currentText() - with open(calib_path) as jfile: - eepromDataJson = json.load(jfile) - def batches_changed(self): + # Set layout + layout = QtWidgets.QFormLayout() + layout.addRow(self.batch_label, self.device_dropdown) + layout.addRow(QtWidgets.QLabel("Description"), self.device_desc_label) + layout.addRow(self.json_label, self.json_combo) + layout.addRow(QtWidgets.QLabel("Description"), self.variant_desc_label) + layout.addRow(QtWidgets.QLabel("Description"), self.variant_desc_label) + layout.addRow(self.buttonBox) + layout.setRowWrapPolicy(layout.RowWrapPolicy.WrapLongRows) + self.setLayout(layout) + + # Refresh devices + self.device_changed() + + def device_changed(self): global calib_path global eepromDataJson - print("Batches changed!") + print("Devices changed!") + + curDevice = self.device_jsons[self.device_dropdown.currentIndex()] + variantIndex = self.json_combo.currentIndex() + + # Create "representational (title)" data for variants + variant_titles = [] + for variant in curDevice["variants"]: + variant_titles.append(variant["title"]) + + # Update variants combobox self.json_combo.clear() - self.json_combo.addItems(self.jsons[self.batch_combo.currentText()]) - calib_path = BATCH_DIR / self.batch_combo.currentText() / self.json_combo.currentText() - with open(calib_path) as jfile: - eepromDataJson = json.load(jfile) + self.json_combo.addItems(variant_titles) + # Update desc + self.device_desc_label.setText(curDevice["description"]) + if variantIndex >= 0 and variantIndex < len(curDevice["variants"]): + self.variant_desc_label.setText(curDevice["variants"][variantIndex]["description"]) - def json_changed(self): + # Refresh variants + self.variant_changed() + + + def variant_changed(self): global eepromDataJson global calib_path - calib_path = BATCH_DIR / self.batch_combo.currentText() / self.json_combo.currentText() - with open(calib_path) as jfile: - eepromDataJson = json.load(jfile) + global selectedDeviceInfo + + curDevice = self.device_jsons[self.device_dropdown.currentIndex()] + variantIndex = self.json_combo.currentIndex() + global variant_desc_label + variant_desc_label = "" + # Update desc + if variantIndex >= 0 and variantIndex < len(curDevice["variants"]): + self.variant_desc_label.setText(curDevice["variants"][variantIndex]["description"]) + variant_desc_label = curDevice["variants"][variantIndex]["description"] + + # Load test_type, first from "device" + global test_type + test_type = curDevice['test_type'] + + # Load eeprom data if available + if len(curDevice['variants']) > variantIndex: + # Load test_type, if variant also has it selected, override + if 'test_type' in curDevice['variants'][variantIndex]: + test_type = curDevice['variants'][variantIndex]["test_type"] + calib_path = DEVICE_DIR / curDevice['variants'][variantIndex]["eeprom"] + with open(calib_path) as jfile: + eepromDataJson = json.load(jfile) + + selectedDeviceInfo = curDevice['variants'][variantIndex]['title'] class Camera(QtWidgets.QWidget): def __init__(self, get_image, camera_format, title='Camera', location=(0, 0)): @@ -514,7 +590,7 @@ def update_image(self): WIDTH = 766 -HEIGHT = 717 +HEIGHT = 980 def test_connexion(): @@ -595,12 +671,12 @@ def __init__(self): self.MB_END = "