diff --git a/CMakeLists.txt b/CMakeLists.txt index 6420174..ec3c3aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,8 +8,7 @@ include(FetchContent) FetchContent_Declare( viam-cpp-sdk GIT_REPOSITORY https://github.com/viamrobotics/viam-cpp-sdk.git - # temporary pin -- use release when possible - GIT_TAG 46ba29fe17a6887fd13deb4ef089a155e9730c55 + GIT_TAG 2e5fd316ce43410fb59778220fb53128d613892a # SOURCE_DIR ${CMAKE_SOURCE_DIR}/../viam-cpp-sdk CMAKE_ARGS -DVIAMCPPSDK_USE_DYNAMIC_PROTOS=ON FIND_PACKAGE_ARGS diff --git a/src/main.cpp b/src/main.cpp index b092a45..6b5da89 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,46 +1,25 @@ -#include +#include #include #include "wifi.hpp" using namespace viam::sdk; -class MyModule : public Generic { +class WifiSensor : public Sensor { public: - MyModule(Dependencies deps, ResourceConfig cfg) : Generic(cfg.name()) {} - AttributeMap do_command(AttributeMap command) { return read_wireless(); } - std::vector get_geometries() { return std::vector(); } + WifiSensor(Dependencies deps, ResourceConfig cfg) : Sensor(cfg.name()) {} + AttributeMap do_command(const AttributeMap& command) { return {}; } + std::vector get_geometries(const AttributeMap& extra) { return std::vector(); } + AttributeMap get_readings(const AttributeMap& extra) { return read_wireless(); } }; int main(int argc, char **argv) { - if (argc < 2) { - throw std::invalid_argument("Pass socket path as first argument"); - } - std::string socket_addr = argv[1]; - - set_logger_severity_from_args(argc, argv); - - SignalManager signals; - std::shared_ptr mr = std::make_shared( - ResourceType("MyModule"), Generic::static_api(), Model("viam", "wifi", "cpp"), - [](Dependencies deps, ResourceConfig cfg) { return std::make_shared(deps, cfg); } + Sensor::static_api(), Model("viam", "wifi", "cpp"), + [](Dependencies deps, ResourceConfig cfg) { return std::make_shared(deps, cfg); } ); - Registry::register_model(mr); - - // The `ModuleService_` must outlive the Server, so the declaration order here matters. - auto my_mod = std::make_shared(socket_addr); - auto server = std::make_shared(); - - my_mod->add_model_from_registry(server, mr->api(), mr->model()); - my_mod->start(server); - std::cout << "Module serving model " << mr->model().to_string() << ", listening on " - << socket_addr << std::endl; - - server->start(); - int sig = 0; - auto result = signals.wait(&sig); - server->shutdown(); + auto service = std::make_shared(argc, argv, std::vector>{mr}); + service->serve(); return 0; }