Go to the documentation of this file.
18 #ifndef ROS_NODE_HANDLE_H_
19 #define ROS_NODE_HANDLE_H_
28 #define SYNC_SECONDS 5
30 #define MODE_FIRST_FF 0
39 #define MODE_PROTOCOL_VER 1
40 #define PROTOCOL_VER1 0xff // through groovy
41 #define PROTOCOL_VER2 0xfe // in hydro
42 #define PROTOCOL_VER PROTOCOL_VER2
45 #define MODE_SIZE_CHECKSUM 4 // checksum for msg size received from size L and H
46 #define MODE_TOPIC_L 5 // waiting for topic id
47 #define MODE_TOPIC_H 6
48 #define MODE_MESSAGE 7
49 #define MODE_MSG_CHECKSUM 8 // checksum for msg and topic id
52 #define MSG_TIMEOUT 20 //20 milliseconds to recieve all of message data
76 template<
class Hardware,
77 int MAX_SUBSCRIBERS=25,
78 int MAX_PUBLISHERS=25,
104 for(
unsigned int i=0; i< MAX_PUBLISHERS; i++)
107 for(
unsigned int i=0; i< MAX_SUBSCRIBERS; i++)
110 for(
unsigned int i=0; i< INPUT_SIZE; i++)
113 for(
unsigned int i=0; i< OUTPUT_SIZE; i++)
290 t.
data.sec += offset/1000;
291 t.
data.nsec += (offset%1000)*1000000UL;
302 current_time.nsec = (ms%1000)*1000000UL +
nsec_offset;
311 nsec_offset = new_now.nsec - (ms%1000)*1000000UL + 1000000000UL;
322 for(
int i = 0; i < MAX_PUBLISHERS; i++){
325 p.id_ = i+100+MAX_SUBSCRIBERS;
334 template<
typename MsgT>
336 for(
int i = 0; i < MAX_SUBSCRIBERS; i++){
347 template<
typename MReq,
typename MRes>
350 for(
int i = 0; i < MAX_SUBSCRIBERS; i++){
361 template<
typename MReq,
typename MRes>
364 for(
int i = 0; i < MAX_SUBSCRIBERS; i++){
378 for(i = 0; i < MAX_PUBLISHERS; i++)
390 for(i = 0; i < MAX_SUBSCRIBERS; i++)
424 for(
int i =5; i<l+7; i++)
429 if( l <= OUTPUT_SIZE ){
433 logerror(
"Message from device dropped: message larger than buffer.");
443 void log(
char byte,
const char * msg){
480 uint16_t end_time =
hardware_.time() + time_out;
483 if (
hardware_.time() > end_time)
return false;
493 for(
int i=0; i<length; i++)
504 for(
int i=0; i<length; i++)
515 for(
int i=0; i<length; i++)
ROSTIME_DECL void normalizeSecNSec(uint32_t &sec, uint32_t &nsec)
void logwarn(const char *msg)
void syncTime(uint8_t *data)
bool getParam(const char *name, int *param, int length=1)
void logfatal(const char *msg)
bool getParam(const char *name, float *param, int length=1)
virtual int deserialize(unsigned char *inbuffer)
#define MODE_MSG_CHECKSUM
bool subscribe(Subscriber< MsgT > &s)
virtual bool connected()=0
void initNode(char *portName)
uint8_t message_in[INPUT_SIZE]
bool advertise(Publisher &p)
Publisher * publishers[MAX_PUBLISHERS]
void log(char byte, const char *msg)
const char * message_type
void logerror(const char *msg)
#define MODE_PROTOCOL_VER
uint32_t last_msg_timeout_time
Subscriber_ * subscribers[MAX_SUBSCRIBERS]
void setNow(Time &new_now)
virtual void callback(unsigned char *data)=0
rosserial_msgs::RequestParamResponse req_param_resp
bool getParam(const char *name, char **param, int length=1)
virtual int publish(int id, const Msg *msg)=0
bool advertiseService(ServiceServer< MReq, MRes > &srv)
uint8_t message_out[OUTPUT_SIZE]
virtual int publish(int id, const Msg *msg)
void logdebug(const char *msg)
T param(const std::string ¶m_name, const T &default_val)
bool serviceClient(ServiceClient< MReq, MRes > &srv)
#define MODE_SIZE_CHECKSUM
virtual int deserialize(unsigned char *inbuffer)
void loginfo(const char *msg)
bool requestParam(const char *name, int time_out=1000)
uint32_t last_sync_receive_time
cob_hand_bridge
Author(s): Mathias Lüdtke
autogenerated on Fri Aug 2 2024 09:40:56