root / quad2 / arduino / src / ros_lib / rosgraph_msgs / Log.h @ c1426757
History | View | Annotate | Download (5.12 KB)
1 | c1426757 | Tom Mullins | #ifndef _ROS_rosgraph_msgs_Log_h
|
---|---|---|---|
2 | #define _ROS_rosgraph_msgs_Log_h
|
||
3 | |||
4 | #include <stdint.h> |
||
5 | #include <string.h> |
||
6 | #include <stdlib.h> |
||
7 | #include "ros/msg.h" |
||
8 | #include "std_msgs/Header.h" |
||
9 | #include "rosgraph_msgs/byte.h" |
||
10 | |||
11 | namespace rosgraph_msgs |
||
12 | { |
||
13 | |||
14 | class Log : public ros::Msg |
||
15 | { |
||
16 | public:
|
||
17 | std_msgs::Header header; |
||
18 | rosgraph_msgs::byte level; |
||
19 | char * name;
|
||
20 | char * msg;
|
||
21 | char * file;
|
||
22 | char * function;
|
||
23 | uint32_t line; |
||
24 | uint8_t topics_length; |
||
25 | char* st_topics;
|
||
26 | char* * topics;
|
||
27 | enum { DEBUG = 1 }; |
||
28 | enum { INFO = 2 }; |
||
29 | enum { WARN = 4 }; |
||
30 | enum { ERROR = 8 }; |
||
31 | enum { FATAL = 16 }; |
||
32 | |||
33 | virtual int serialize(unsigned char *outbuffer) const |
||
34 | { |
||
35 | int offset = 0; |
||
36 | offset += this->header.serialize(outbuffer + offset); |
||
37 | offset += this->level.serialize(outbuffer + offset); |
||
38 | uint32_t * length_name = (uint32_t *)(outbuffer + offset); |
||
39 | *length_name = strlen( (const char*) this->name); |
||
40 | offset += 4;
|
||
41 | memcpy(outbuffer + offset, this->name, *length_name); |
||
42 | offset += *length_name; |
||
43 | uint32_t * length_msg = (uint32_t *)(outbuffer + offset); |
||
44 | *length_msg = strlen( (const char*) this->msg); |
||
45 | offset += 4;
|
||
46 | memcpy(outbuffer + offset, this->msg, *length_msg); |
||
47 | offset += *length_msg; |
||
48 | uint32_t * length_file = (uint32_t *)(outbuffer + offset); |
||
49 | *length_file = strlen( (const char*) this->file); |
||
50 | offset += 4;
|
||
51 | memcpy(outbuffer + offset, this->file, *length_file); |
||
52 | offset += *length_file; |
||
53 | uint32_t * length_function = (uint32_t *)(outbuffer + offset); |
||
54 | *length_function = strlen( (const char*) this->function); |
||
55 | offset += 4;
|
||
56 | memcpy(outbuffer + offset, this->function, *length_function); |
||
57 | offset += *length_function; |
||
58 | *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF; |
||
59 | *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF; |
||
60 | *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF; |
||
61 | *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF; |
||
62 | offset += sizeof(this->line);
|
||
63 | *(outbuffer + offset++) = topics_length; |
||
64 | *(outbuffer + offset++) = 0;
|
||
65 | *(outbuffer + offset++) = 0;
|
||
66 | *(outbuffer + offset++) = 0;
|
||
67 | for( uint8_t i = 0; i < topics_length; i++){ |
||
68 | uint32_t * length_topicsi = (uint32_t *)(outbuffer + offset); |
||
69 | *length_topicsi = strlen( (const char*) this->topics[i]); |
||
70 | offset += 4;
|
||
71 | memcpy(outbuffer + offset, this->topics[i], *length_topicsi); |
||
72 | offset += *length_topicsi; |
||
73 | } |
||
74 | return offset;
|
||
75 | } |
||
76 | |||
77 | virtual int deserialize(unsigned char *inbuffer) |
||
78 | { |
||
79 | int offset = 0; |
||
80 | offset += this->header.deserialize(inbuffer + offset); |
||
81 | offset += this->level.deserialize(inbuffer + offset); |
||
82 | uint32_t length_name = *(uint32_t *)(inbuffer + offset); |
||
83 | offset += 4;
|
||
84 | for(unsigned int k= offset; k< offset+length_name; ++k){ |
||
85 | inbuffer[k-1]=inbuffer[k];
|
||
86 | } |
||
87 | inbuffer[offset+length_name-1]=0; |
||
88 | this->name = (char *)(inbuffer + offset-1); |
||
89 | offset += length_name; |
||
90 | uint32_t length_msg = *(uint32_t *)(inbuffer + offset); |
||
91 | offset += 4;
|
||
92 | for(unsigned int k= offset; k< offset+length_msg; ++k){ |
||
93 | inbuffer[k-1]=inbuffer[k];
|
||
94 | } |
||
95 | inbuffer[offset+length_msg-1]=0; |
||
96 | this->msg = (char *)(inbuffer + offset-1); |
||
97 | offset += length_msg; |
||
98 | uint32_t length_file = *(uint32_t *)(inbuffer + offset); |
||
99 | offset += 4;
|
||
100 | for(unsigned int k= offset; k< offset+length_file; ++k){ |
||
101 | inbuffer[k-1]=inbuffer[k];
|
||
102 | } |
||
103 | inbuffer[offset+length_file-1]=0; |
||
104 | this->file = (char *)(inbuffer + offset-1); |
||
105 | offset += length_file; |
||
106 | uint32_t length_function = *(uint32_t *)(inbuffer + offset); |
||
107 | offset += 4;
|
||
108 | for(unsigned int k= offset; k< offset+length_function; ++k){ |
||
109 | inbuffer[k-1]=inbuffer[k];
|
||
110 | } |
||
111 | inbuffer[offset+length_function-1]=0; |
||
112 | this->function = (char *)(inbuffer + offset-1); |
||
113 | offset += length_function; |
||
114 | this->line |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); |
||
115 | this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); |
||
116 | this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); |
||
117 | this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); |
||
118 | offset += sizeof(this->line);
|
||
119 | uint8_t topics_lengthT = *(inbuffer + offset++); |
||
120 | if(topics_lengthT > topics_length)
|
||
121 | this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); |
||
122 | offset += 3;
|
||
123 | topics_length = topics_lengthT; |
||
124 | for( uint8_t i = 0; i < topics_length; i++){ |
||
125 | uint32_t length_st_topics = *(uint32_t *)(inbuffer + offset); |
||
126 | offset += 4;
|
||
127 | for(unsigned int k= offset; k< offset+length_st_topics; ++k){ |
||
128 | inbuffer[k-1]=inbuffer[k];
|
||
129 | } |
||
130 | inbuffer[offset+length_st_topics-1]=0; |
||
131 | this->st_topics = (char *)(inbuffer + offset-1); |
||
132 | offset += length_st_topics; |
||
133 | memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); |
||
134 | } |
||
135 | return offset;
|
||
136 | } |
||
137 | |||
138 | const char * getType(){ return "rosgraph_msgs/Log"; }; |
||
139 | const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; }; |
||
140 | |||
141 | }; |
||
142 | |||
143 | } |
||
144 | #endif |