In the EMW3080B_SPI::TransmitReceive()/Transmit()/Receive() functions there now appears to be an issue with the receive buffer not being a CacheAlignedBuffer structure pointer in the SPI::transfer() call but so far my C++ knowledge/searching hasn’t lead me to how to fix the following:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp: In member function ‘int32_t EMW3080B_SPI::TransmitReceive(uint8_t*, uint8_t*, uint32_t, uint32_t)’:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:203:18: error: no matching function for call to ‘EMW3080B_SPI::transfer(const uint8_t*, int, uint8_t*&, int, mbed::Callback<void(int)>, int)’
[build] 203 | SPI::transfer((const uint8_t ) txdata, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] In file included from C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/mbed.h:66,
[build] from C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.h:23,
[build] from C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:20:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 481 | transfer(const WordT tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:203:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka ‘unsigned char*’}
[build] 203 | SPI::transfer((const uint8_t ) txdata, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const std::nullptr_t, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 490 | transfer(const std::nullptr_t tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:203:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka ‘unsigned char*’}
[build] 203 | SPI::transfer((const uint8_t ) txdata, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, std::nullptr_t*, int, const mbed::event_callback_t&, int)’
[build] 497 | transfer(const WordT tx_buffer, int tx_length, std::nullptr_t rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:203:60: note: cannot convert ‘rxdata’ (type 'uint8_t’ {aka 'unsigned char’}) to type ‘std::nullptr_t*’
[build] 203 | SPI::transfer((const uint8_t ) txdata, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ^~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp: In member function 'int32_t EMW3080B_SPI::Transmit(uint8_t, uint32_t, uint32_t)‘:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:217:18: error: no matching function for call to ‘EMW3080B_SPI::transfer(const uint8_t*, int, uint8_t*, int, mbed::Callback<void(int)>, int)’
[build] 217 | SPI::transfer((const uint8_t ) txdata, (int) datalen, (uint8_t )NULL, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 481 | transfer(const WordT tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:217:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka 'unsigned char’}
[build] 217 | SPI::transfer((const uint8_t ) txdata, (int) datalen, (uint8_t )NULL, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const std::nullptr_t, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 490 | transfer(const std::nullptr_t tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:217:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka 'unsigned char’}
[build] 217 | SPI::transfer((const uint8_t ) txdata, (int) datalen, (uint8_t )NULL, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, std::nullptr_t, int, const mbed::event_callback_t&, int)’
[build] 497 | transfer(const WordT tx_buffer, int tx_length, std::nullptr_t rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:217:60: note: cannot convert ‘0’ (type 'uint8_t’ {aka 'unsigned char’}) to type ‘std::nullptr_t*’
[build] 217 | SPI::transfer((const uint8_t ) txdata, (int) datalen, (uint8_t )NULL, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp: In member function 'int32_t EMW3080B_SPI::Receive(uint8_t, uint32_t, uint32_t)':
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:229:18: error: no matching function for call to 'EMW3080B_SPI::transfer(const uint8_t, int, uint8_t*&, int, mbed::Callback<void(int)>, int)’
[build] 229 | SPI::transfer((const uint8_t ) NULL, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 481 | transfer(const WordT tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:481:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:229:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka ‘unsigned char*’}
[build] 229 | SPI::transfer((const uint8_t ) NULL, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const std::nullptr_t, int, mbed::CacheAlignedBuffer&, int, const mbed::event_callback_t&, int)’
[build] 490 | transfer(const std::nullptr_t tx_buffer, int tx_length, CacheAlignedBuffer &rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:490:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:229:18: note: mismatched types ‘mbed::CacheAlignedBuffer’ and 'uint8_t’ {aka ‘unsigned char*’}
[build] 229 | SPI::transfer((const uint8_t ) NULL, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: candidate: 'template typename std::enable_if<std::is_integral<_Tp>::value, int>::type mbed::SPI::transfer(const WordT, int, std::nullptr_t*, int, const mbed::event_callback_t&, int)’
[build] 497 | transfer(const WordT tx_buffer, int tx_length, std::nullptr_t rx_buffer, int rx_length, const event_callback_t &callback, int event = SPI_EVENT_COMPLETE)
[build] | ^~~~~~~~
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/drivers/include/drivers/SPI.h:497:5: note: template argument deduction/substitution failed:
[build] C:/Users/tim/Mbed Programs/mbed-ce/hello/mbed-os/connectivity/drivers/wifi/TARGET_STM/COMPONENT_EMW3080B/EMW3080B_SPI.cpp:229:58: note: cannot convert ‘rxdata’ (type 'uint8_t’ {aka 'unsigned char’}) to type ‘std::nullptr_t*’
[build] 229 | SPI::transfer((const uint8_t *) NULL, (int) datalen, rxdata, (int) datalen, callback(this, &EMW3080B_SPI::spi_handler), SPI_EVENT_COMPLETE);
[build] | ^~~~~~
[build] ninja: build stopped: subcommand failed.