8 #define DRIPLINE_EXAMPLES_API_EXPORTS 13 #include "signal_handler.hh" 18 using scarab::param_array;
19 using scarab::param_node;
20 using scarab::param_ptr_t;
22 using std::placeholders::_1;
24 LOGGER(
dlog,
"oscillator_service_hub" );
31 hub( a_config,
"osc_svc_hub" ),
33 f_return( RETURN_SUCCESS )
50 scarab::signal_handler t_sig_hand;
51 t_sig_hand.add_cancelable(
this );
61 catch( std::exception& e )
63 LERROR(
dlog,
"Exception caught: " << e.what() );
67 if( scarab::signal_handler::get_exited() )
69 f_return = scarab::signal_handler::get_return_code();
77 f_oscillator.set_frequency( a_request->payload()[
"values"][0]().as_double() );
78 return a_request->reply(
dl_success(),
"Frequency set" );
83 param_ptr_t t_reply_payload(
new param_node() );
84 param_node& t_reply_node = t_reply_payload->as_node();
85 t_reply_node.add(
"value", f_oscillator.get_frequency() );
86 return a_request->reply(
dl_success(),
"Get request succeeded", std::move(t_reply_payload) );
92 f_oscillator.set_amplitude( a_request->payload()[
"values"][0]().as_double() );
93 return a_request->reply(
dl_success(),
"Amplitude set" );
98 param_ptr_t t_reply_payload(
new param_node() );
99 param_node& t_reply_node = t_reply_payload->as_node();
100 t_reply_node.add(
"value", f_oscillator.get_amplitude() );
101 return a_request->reply(
dl_success(),
"Get request succeeded", std::move(t_reply_payload) );
133 param_ptr_t t_reply_payload(
new param_node() );
134 param_node& t_reply_node = t_reply_payload->as_node();
135 t_reply_node.add(
"value", f_oscillator.in_phase().second );
136 return a_request->reply(
dl_success(),
"Get request succeeded", std::move(t_reply_payload) );
141 param_ptr_t t_reply_payload(
new param_node() );
142 param_node& t_reply_node = t_reply_payload->as_node();
143 t_reply_node.add(
"value", f_oscillator.quadrature().second );
144 return a_request->reply(
dl_success(),
"Get request succeeded", std::move(t_reply_payload) );
149 param_ptr_t t_reply_payload(
new param_node() );
150 param_node& t_reply_node = t_reply_payload->as_node();
151 param_array t_iq_param;
152 t_iq_param.push_back( f_oscillator.iq().second.real() );
153 t_iq_param.push_back( f_oscillator.iq().second.imag() );
154 t_reply_node.add(
"value", std::move(t_iq_param) );
155 return a_request->reply(
dl_success(),
"Get request succeeded", std::move(t_reply_payload) );
reply_ptr_t handle_get_amplitude_request(const request_ptr_t a_request)
reply_ptr_t handle_get_quadrature_request(const request_ptr_t a_request)
virtual unsigned rc_value() const
std::shared_ptr< msg_request > request_ptr_t
void register_get_handler(const std::string &a_key, const handler_func_t &a_func)
Sets a get request handler function.
Dripline-specific errors.
virtual ~oscillator_service_hub()
Service class aimed at adding a Dripline API to an existing codebase.
reply_ptr_t handle_set_amplitude_request(const request_ptr_t a_request)
reply_ptr_t handle_get_frequency_request(const request_ptr_t a_request)
reply_ptr_t handle_get_iq_request(const request_ptr_t a_request)
reply_ptr_t handle_set_frequency_request(const request_ptr_t a_request)
static scarab::logger dlog("agent")
void register_set_handler(const std::string &a_key, const handler_func_t &a_func)
Sets a set request handler function.
std::shared_ptr< msg_reply > reply_ptr_t
reply_ptr_t handle_get_in_phase_request(const request_ptr_t a_request)
static scarab::logger dlog("oscillator_service_hub")
oscillator_service_hub(const scarab::param_node &a_config=scarab::param_node())