diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp index 3c404aeaf..89340ba38 100644 --- a/backend/genesys/gl124.cpp +++ b/backend/genesys/gl124.cpp @@ -397,6 +397,9 @@ static void gl124_send_slope_table(Genesys_Device* dev, int table_nr, DBG (DBG_io, "%s: %s\n", __func__, msg); } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } // slope table addresses are fixed dev->interface->write_ahb(0x10000000 + 0x4000 * table_nr, steps * 2, table.data()); } diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index 16aeca952..0657bc93a 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -841,6 +841,9 @@ static void gl646_send_slope_table(Genesys_Device* dev, int table_nr, table[i * 2 + 1] = slope_table[i] >> 8; } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } dev->interface->write_buffer(0x3c, start_address + table_nr * 0x100, table.data(), steps * 2); } diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index 6a68b4d6d..abac67297 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -573,6 +573,9 @@ static void gl841_send_slope_table(Genesys_Device* dev, int table_nr, DBG(DBG_io, "%s: %s\n", __func__, msg); } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } dev->interface->write_buffer(0x3c, start_address + table_nr * 0x200, table.data(), steps * 2); } diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index 8f8786544..a05c5b908 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -717,6 +717,10 @@ static void gl843_send_slope_table(Genesys_Device* dev, int table_nr, DBG(DBG_io, "%s: %s\n", __func__, msg); } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } + // slope table addresses are fixed : 0x40000, 0x48000, 0x50000, 0x58000, 0x60000 // XXX STEF XXX USB 1.1 ? sanei_genesys_write_0x8c (dev, 0x0f, 0x14); dev->interface->write_gamma(0x28, 0x40000 + 0x8000 * table_nr, table.data(), steps * 2, diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp index 16401c322..9bcfd5f1a 100644 --- a/backend/genesys/gl846.cpp +++ b/backend/genesys/gl846.cpp @@ -296,6 +296,9 @@ static void gl846_send_slope_table(Genesys_Device* dev, int table_nr, DBG (DBG_io, "%s: %s\n", __func__, msg); } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } // slope table addresses are fixed dev->interface->write_ahb(0x10000000 + 0x4000 * table_nr, steps * 2, table.data()); } diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index 17b3c885b..0a55e7e0c 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -317,6 +317,9 @@ static void gl847_send_slope_table(Genesys_Device* dev, int table_nr, DBG (DBG_io, "%s: %s\n", __func__, msg); } + if (dev->interface->is_mock()) { + dev->interface->record_slope_table(table_nr, slope_table); + } // slope table addresses are fixed dev->interface->write_ahb(0x10000000 + 0x4000 * table_nr, steps * 2, table.data()); } diff --git a/backend/genesys/scanner_interface.h b/backend/genesys/scanner_interface.h index b0540301e..03c713249 100644 --- a/backend/genesys/scanner_interface.h +++ b/backend/genesys/scanner_interface.h @@ -48,6 +48,7 @@ #include #include #include +#include namespace genesys { @@ -99,6 +100,8 @@ public: virtual void record_progress_message(const char* msg) = 0; + virtual void record_slope_table(unsigned table_nr, const std::vector& steps) = 0; + virtual void record_key_value(const std::string& key, const std::string& value) = 0; virtual void test_checkpoint(const std::string& name) = 0; diff --git a/backend/genesys/scanner_interface_usb.cpp b/backend/genesys/scanner_interface_usb.cpp index 6e9c51b5c..d4d83dd99 100644 --- a/backend/genesys/scanner_interface_usb.cpp +++ b/backend/genesys/scanner_interface_usb.cpp @@ -494,6 +494,13 @@ void ScannerInterfaceUsb::record_progress_message(const char* msg) sanei_usb_testing_record_message(msg); } +void ScannerInterfaceUsb::record_slope_table(unsigned table_nr, + const std::vector& steps) +{ + (void) table_nr; + (void) steps; +} + void ScannerInterfaceUsb::record_key_value(const std::string& key, const std::string& value) { (void) key; diff --git a/backend/genesys/scanner_interface_usb.h b/backend/genesys/scanner_interface_usb.h index 3cfd303f2..06b51ffb0 100644 --- a/backend/genesys/scanner_interface_usb.h +++ b/backend/genesys/scanner_interface_usb.h @@ -82,6 +82,8 @@ public: void record_progress_message(const char* msg) override; + void record_slope_table(unsigned table_nr, const std::vector& steps) override; + void record_key_value(const std::string& key, const std::string& value) override; void test_checkpoint(const std::string& name) override; diff --git a/backend/genesys/test_scanner_interface.cpp b/backend/genesys/test_scanner_interface.cpp index b594e6428..12f726f32 100644 --- a/backend/genesys/test_scanner_interface.cpp +++ b/backend/genesys/test_scanner_interface.cpp @@ -183,6 +183,17 @@ void TestScannerInterface::sleep_us(unsigned microseconds) (void) microseconds; } +void TestScannerInterface::record_slope_table(unsigned table_nr, + const std::vector& steps) +{ + slope_tables_[table_nr] = steps; +} + +std::map>& TestScannerInterface::recorded_slope_tables() +{ + return slope_tables_; +} + void TestScannerInterface::record_progress_message(const char* msg) { last_progress_message_ = msg; diff --git a/backend/genesys/test_scanner_interface.h b/backend/genesys/test_scanner_interface.h index 709283565..acf0f6d4a 100644 --- a/backend/genesys/test_scanner_interface.h +++ b/backend/genesys/test_scanner_interface.h @@ -90,6 +90,10 @@ public: const std::string& last_progress_message() const; + void record_slope_table(unsigned table_nr, const std::vector& steps) override; + + std::map>& recorded_slope_tables(); + void record_key_value(const std::string& key, const std::string& value) override; std::map& recorded_key_values(); @@ -106,6 +110,9 @@ private: TestUsbDevice usb_dev_; TestCheckpointCallback checkpoint_callback_; + + std::map> slope_tables_; + std::string last_progress_message_; std::map key_values_; }; diff --git a/testsuite/backend/genesys/session_config_test.cpp b/testsuite/backend/genesys/session_config_test.cpp index d1631c4eb..42c3066df 100644 --- a/testsuite/backend/genesys/session_config_test.cpp +++ b/testsuite/backend/genesys/session_config_test.cpp @@ -212,6 +212,18 @@ void build_checkpoint(const genesys::Genesys_Device& dev, << "iface.cached_fe_regs: " << genesys::format_indent_braced_list(4, iface.cached_fe_regs()) << "\n\n" << "iface.last_progress_message: " << iface.last_progress_message() << "\n\n"; + out << "iface.slope_tables: {\n"; + for (const auto& kv : iface.recorded_slope_tables()) { + out << " " << kv.first << ": {"; + for (unsigned i = 0; i < kv.second.size(); ++i) { + if (i % 10 == 0) { + out << "\n "; + } + out << ' ' << kv.second[i]; + } + out << "\n }\n"; + } + out << "}\n"; if (iface.recorded_key_values().empty()) { out << "iface.recorded_key_values: []\n"; } else { @@ -221,6 +233,7 @@ void build_checkpoint(const genesys::Genesys_Device& dev, } out << "}\n"; } + iface.recorded_key_values().clear(); out << "\n"; }