diff options
Diffstat (limited to 'modules/remote-hip/examples')
-rw-r--r-- | modules/remote-hip/examples/SConscript | 4 | ||||
-rw-r--r-- | modules/remote-hip/examples/hip_transfer_data.cpp | 51 |
2 files changed, 54 insertions, 1 deletions
diff --git a/modules/remote-hip/examples/SConscript b/modules/remote-hip/examples/SConscript index cb9eb65..71bb98f 100644 --- a/modules/remote-hip/examples/SConscript +++ b/modules/remote-hip/examples/SConscript @@ -29,8 +29,10 @@ hip_objects = []; #objects_static = [] examples_env.hip_info = examples_hip_env.Program('#bin/hip_device_info', ['hip_device_info.cpp', env.library_static, hip_objects]); +examples_env.hip_transfer = examples_hip_env.Program('#bin/hip_transfer_data', ['hip_transfer_data.cpp', env.library_static, hip_objects]); + # Set Alias -env.examples = [examples_env.hip_info]; +env.examples = [examples_env.hip_info, examples_env.hip_transfer]; env.Alias('examples', env.examples); if env["build_examples"]: diff --git a/modules/remote-hip/examples/hip_transfer_data.cpp b/modules/remote-hip/examples/hip_transfer_data.cpp new file mode 100644 index 0000000..49ff856 --- /dev/null +++ b/modules/remote-hip/examples/hip_transfer_data.cpp @@ -0,0 +1,51 @@ +#include "../c++/remote.hpp" +#include "../c++/transfer.hpp" + +#include <iostream> + +namespace sch { +using namespace saw::schema; +} + +saw::error_or<void> real_main(){ + using namespace saw; + + remote<rmt::Hip> rmt; + + auto eo_addr = rmt.parse_address(0); + if(eo_addr.is_error()){ + return std::move(eo_addr.get_error()); + } + auto& addr = eo_addr.get_value(); + + auto eo_dat_srv = rmt.data_listen<sch::Int16, encode::Native>(*addr); + if(eo_dat_srv.is_error()){ + return std::move(eo_dat_srv.get_error()); + } + auto& dat_srv = eo_dat_srv.get_value(); + + data<sch::Int16> val{42}; + + id<sch::Int16> id_val{0u}; + auto eo_send = dat_srv->send(val, id_val); + if(eo_send.is_error()){ + return std::move(eo_send.get_error()); + } + + return make_void(); +} + +int main(){ + auto eov = real_main(); + if(eov.is_error()){ + auto& err = eov.get_error(); + std::cerr<<"Error: "<<err.get_category(); + auto err_msg = err.get_message(); + if(err_msg.size() > 0u){ + std::cerr<<" - "<<err_msg; + } + std::cerr<<"\n"<<std::endl; + return err.get_id(); + } + return 0; +} |