@@ -17,10 +17,14 @@ namespace cdw = candlewick;
1717namespace pin = pinocchio;
1818using cdw::multibody::Visualizer;
1919
20- constexpr std::string_view CMD_SEND_MODELS = " send_models" ;
21- constexpr std::string_view CMD_SEND_STATE = " state_update" ;
22- constexpr std::string_view CMD_SEND_CAM_POSE = " send_cam_pose" ;
23- constexpr std::string_view CMD_CLEAN = " cmd_clean" ;
20+ #define CANDLEWICK_RUNTIME_DEFINE_COMMAND (name ) \
21+ constexpr std::string_view CMD_##name = #name
22+
23+ CANDLEWICK_RUNTIME_DEFINE_COMMAND (send_models);
24+ CANDLEWICK_RUNTIME_DEFINE_COMMAND (send_state);
25+ CANDLEWICK_RUNTIME_DEFINE_COMMAND (send_cam_pose);
26+ CANDLEWICK_RUNTIME_DEFINE_COMMAND (clean);
27+
2428using RowMat4d = Eigen::Matrix<pin::context::Scalar, 4 , 4 , Eigen::RowMajor>;
2529
2630msgpack::object_handle get_handle_from_zmq_msg (zmq::message_t &&msg) {
@@ -92,7 +96,7 @@ bool handle_first_message(zmq::socket_ref sock, ApplicationContext &app_ctx) {
9296 return false ;
9397
9498 auto msg_header = msgs[0 ].to_string_view ();
95- if (msg_header == CMD_SEND_MODELS ) {
99+ if (msg_header == CMD_send_models ) {
96100 msgpack::object_handle oh = get_handle_from_zmq_msg (std::move (msgs[1 ]));
97101 auto obj = oh.get ();
98102 std::array<std::string, 2 > model_strings;
@@ -108,7 +112,7 @@ bool handle_first_message(zmq::socket_ref sock, ApplicationContext &app_ctx) {
108112 return true ;
109113 } else {
110114 SDL_Log (" First message must have header \' %s\' , got \' %s\' . Retry." ,
111- CMD_SEND_MODELS .data (), msg_header.data ());
115+ CMD_send_models .data (), msg_header.data ());
112116 continue ;
113117 }
114118 }
@@ -125,7 +129,7 @@ void run_main_loop(Visualizer &viz, ApplicationContext &app_ctx) {
125129 if (rec) {
126130 // route through message headers
127131 auto header = msgs[0 ].to_string_view ();
128- if (header == CMD_SEND_STATE ) {
132+ if (header == CMD_send_state ) {
129133 auto oh = get_handle_from_zmq_msg (std::move (msgs[1 ]));
130134 msgpack::object obj = oh.get ();
131135 std::tuple<ArrayMessage, std::optional<ArrayMessage>> arrays;
@@ -145,14 +149,14 @@ void run_main_loop(Visualizer &viz, ApplicationContext &app_ctx) {
145149 zmq::recv_flags::dontwait);
146150 if (rec) {
147151 auto header = msgs[0 ].to_string_view ();
148- if (header == CMD_SEND_CAM_POSE ) {
152+ if (header == CMD_send_cam_pose ) {
149153 auto oh = get_handle_from_zmq_msg (std::move (msgs[1 ]));
150154 msgpack::object obj = oh.get ();
151155 ArrayMessage M_msg = obj.as <ArrayMessage>();
152156 auto M = get_eigen_view_from_spec<RowMat4d>(M_msg);
153157 viz.setCameraPose (M);
154158 app_ctx.sync_sock .send (zmq::str_buffer (" ok" ));
155- } else if (header == CMD_CLEAN ) {
159+ } else if (header == CMD_clean ) {
156160 viz.clean ();
157161 app_ctx.sync_sock .send (zmq::str_buffer (" ok" ));
158162 }
@@ -183,7 +187,7 @@ int main(int argc, char **argv) {
183187 zmq::socket_t &state_sock = app_ctx.state_sock ;
184188 sync_sock.bind (std::format (" tcp://{:s}:{:d}" , hostname, port));
185189 state_sock.bind (std::format (" tcp://{:s}:{:d}" , hostname, port + 2 ));
186- state_sock.set (zmq::sockopt::subscribe, CMD_SEND_STATE );
190+ state_sock.set (zmq::sockopt::subscribe, CMD_send_state );
187191
188192 std::string endpoint;
189193 endpoint = sync_sock.get (zmq::sockopt::last_endpoint);
0 commit comments