20 #ifndef __can_string2__
21 #define __can_string2__
24 #include <yarp/os/LogStream.h>
25 #include <yarp/os/Log.h>
38 char text_buffer [256];
45 data_struct data[MAX_STRINGS];
73 inline char*
print(
int buffer_num);
99 for (
int i = 0; i < 256; i++)
data[buffer_num].text_buffer[i]=0;
100 data[buffer_num].complete=
false;
101 data[buffer_num].maybe_last_part=
false;
102 data[buffer_num].expected_length = 0;
103 data[buffer_num].board_id=0;
104 data[buffer_num].current_length = 0;
116 t = (
T*) (can_packet);
117 string_id = (t->data[1]>>4);
118 offset = (t->data[1]&0x0F);
119 data[string_id].board_id = char(t->id>>4&0xf);
123 yError(
"msg from board %d contains an ERROR! (>MAX_STRINGS)\r\n",
data[string_id ].board_id);
127 for (j=0 ; j<t->len-2; j++)
128 data[string_id].text_buffer[j+
offset*6]=t->data[j+2];
130 if (t->data[0]==ICUBCANPROTO_PER_MC_MSG__PRINT + 128)
132 data[string_id].maybe_last_part =
true;
133 data[string_id].expected_length=
offset*6+t->len-2;
136 if (
data[string_id].maybe_last_part)
138 data[string_id].current_length=ACE_OS::strlen(
data[string_id].text_buffer);
140 if (
data[string_id].expected_length==
data[string_id].current_length)
141 data[string_id].complete =
true;
164 if (
data[string_id].complete)
return string_id;
173 yDebug(
"msg from board %d: %s \r\n",
data[buffer_num].board_id ,
data[buffer_num].text_buffer);
175 return data[buffer_num].text_buffer;
void clear_string(int buffer_num)
Resets the string buffer.
int add_string(void *can_packet)
Process a string can packet.
char * print(int buffer_num)
Prints a string buffer.
~can_string2()
Destructor.
can_string2()
Default constructor.