Compile errors Giga R1 RPC library Compatibility?

Hi, I am getting started with a project that will use the M4 and M7 cores of my Giga R1. I get compile errors from the RPC.h library when programing both cores.
"WARNING: library openamp claims to run on mbed, mbed_portenta, mbed_nicla, mbed_opta architecture(s) and may be incompatible with your current board which runs on mbed_giga architecture(s)."

Please advise

Hi @pe2-wabtec It's a stock library that just hasn't had its library.properties updated. You can add ,mbed_giga yourself if the warning is annoying. RPC works on the GIGA but I don't use it as performance is poor.

1 Like

The Error is more complicated than that. Here is the full error.

WARNING: library openamp claims to run on mbed, mbed_portenta, mbed_nicla, mbed_opta architecture(s) and may be incompatible with your current board which runs on mbed_giga architecture(s).
In file included from C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/object.hpp:15:0,
                 from C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack.hpp:23,
                 from C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/dispatcher.h:12,
                 from C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\RPC\src/RPC.h:15,
                 from C:\Documents\Arduino\GIGA_SPI_Display_M7\GIGA_SPI_Display_M7.ino:5:
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/object.hpp: In instantiation of 'const clmdep_msgpack::v2::object& clmdep_msgpack::v1::adaptor::convert<T, Enabler>::operator()(const clmdep_msgpack::v2::object&, T&) const [with T = EventData; Enabler = void]':
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/adaptor/adaptor_base.hpp:58:49:   required from 'typename std::enable_if<(! std::is_array< <template-parameter-1-1> >::value), const clmdep_msgpack::v2::object&>::type clmdep_msgpack::v1::operator>>(const clmdep_msgpack::v2::object&, T&) [with T = EventData; typename std::enable_if<(! std::is_array< <template-parameter-1-1> >::value), const clmdep_msgpack::v2::object&>::type = const clmdep_msgpack::v2::object&]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/object.hpp:549:31:   required from 'typename std::enable_if<((! std::is_array< <template-parameter-1-1> >::value) && (! std::is_pointer<_Tp>::value)), T&>::type clmdep_msgpack::v1::object::convert(T&) const [with T = EventData; typename std::enable_if<((! std::is_array< <template-parameter-1-1> >::value) && (! std::is_pointer<_Tp>::value)), T&>::type = EventData&]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v2/object_fwd.hpp:60:56:   required from 'T& clmdep_msgpack::v2::object::convert(T&) const [with T = EventData]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/adaptor/cpp11/tuple.hpp:97:13:   required from 'static void clmdep_msgpack::v1::StdTupleConverter<Tuple, N>::convert(const clmdep_msgpack::v2::object&, Tuple&) [with Tuple = std::tuple<EventData>&; unsigned int N = 1]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/adaptor/cpp11/tuple.hpp:126:65:   required from 'const clmdep_msgpack::v2::object& clmdep_msgpack::v1::adaptor::convert<std::tuple<_Tps ...> >::operator()(const clmdep_msgpack::v2::object&, std::tuple<_Tps ...>&) const [with Args = {EventData}]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/adaptor/adaptor_base.hpp:58:49:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v2/object_fwd.hpp:60:56:   required from 'T& clmdep_msgpack::v2::object::convert(T&) const [with T = std::tuple<EventData>]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/dispatcher.inl:37:13:   required from 'rpc::detail::dispatcher::bind(const string&, F, const rpc::detail::tags::void_result&, const rpc::detail::tags::nonzero_arg&)::<lambda(const clmdep_msgpack::v2::object&)> [with F = void (*)(EventData)]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/dispatcher.inl:33:37:   required from 'struct rpc::detail::dispatcher::bind(const string&, F, const rpc::detail::tags::void_result&, const rpc::detail::tags::nonzero_arg&) [with F = void (*)(EventData); std::__cxx11::string = std::__cxx11::basic_string<char>]::<lambda(const struct clmdep_msgpack::v2::object&)>'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/dispatcher.inl:33:23:   required from 'void rpc::detail::dispatcher::bind(const string&, F, const rpc::detail::tags::void_result&, const rpc::detail::tags::nonzero_arg&) [with F = void (*)(EventData); std::__cxx11::string = std::__cxx11::basic_string<char>]'
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/dispatcher.inl:7:5:   required from 'void rpc::detail::dispatcher::bind(const string&, F) [with F = void (*)(EventData); std::__cxx11::string = std::__cxx11::basic_string<char>]'
C:\Documents\Arduino\GIGA_SPI_Display_M7\GIGA_SPI_Display_M7.ino:75:48:   required from here
C:\Users\...\AppData\Local\Arduino15\packages\arduino\hardware\mbed_giga\4.2.1\libraries\rpclib\src/rpc/msgpack/v1/object.hpp:213:7: error: 'struct EventData' has no member named 'msgpack_unpack'
     v.msgpack_unpack(o.convert());
     ~~^~~~~~~~~~~~~~

exit status 1

Compilation error: exit status 1

Do the rpc examples compile ok?

I found my problem. Still haven't found a solution. I am trying to use the RPC Sensor example to pass a structure. I have the M4 core read data for an outside sensor and place it in a structure. Then move that structured data to the M7 as needed.