24 #include <interfaces/LaserClusterInterface.h>
26 #include <core/exceptions/software.h>
44 LaserClusterInterface::LaserClusterInterface() : Interface()
46 data_size =
sizeof(LaserClusterInterface_data_t);
47 data_ptr = malloc(data_size);
48 data = (LaserClusterInterface_data_t *)data_ptr;
49 data_ts = (interface_data_ts_t *)data_ptr;
50 memset(data_ptr, 0, data_size);
51 enum_map_SelectionMode[(int)SELMODE_MIN_ANGLE] =
"SELMODE_MIN_ANGLE";
52 enum_map_SelectionMode[(int)SELMODE_MIN_DIST] =
"SELMODE_MIN_DIST";
53 add_fieldinfo(IFT_FLOAT,
"max_x", 1, &data->max_x);
54 add_fieldinfo(IFT_ENUM,
"selection_mode", 1, &data->selection_mode,
"SelectionMode", &enum_map_SelectionMode);
55 add_messageinfo(
"SetMaxXMessage");
56 add_messageinfo(
"SetSelectionModeMessage");
57 unsigned char tmp_hash[] = {0xad, 0xf8, 0x6e, 0xe7, 0x17, 0x56, 0x8a, 0xfb, 0xf9, 0xad, 0x3e, 0xba, 0xd, 0x15, 0xce, 0xde};
62 LaserClusterInterface::~LaserClusterInterface()
71 LaserClusterInterface::tostring_SelectionMode(
SelectionMode value)
const
74 case SELMODE_MIN_ANGLE:
return "SELMODE_MIN_ANGLE";
75 case SELMODE_MIN_DIST:
return "SELMODE_MIN_DIST";
76 default:
return "UNKNOWN";
86 LaserClusterInterface::max_x()
const
96 LaserClusterInterface::maxlenof_max_x()
const
107 LaserClusterInterface::set_max_x(
const float new_max_x)
119 LaserClusterInterface::selection_mode()
const
129 LaserClusterInterface::maxlenof_selection_mode()
const
141 LaserClusterInterface::set_selection_mode(
const SelectionMode new_selection_mode)
143 data_changed |=
change_field(data->selection_mode, new_selection_mode);
148 LaserClusterInterface::create_message(
const char *type)
const
150 if ( strncmp(
"SetMaxXMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
152 }
else if ( strncmp(
"SetSelectionModeMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
156 "message type for this interface type.", type);
165 LaserClusterInterface::copy_values(
const Interface *other)
170 type(), other->
type());
172 memcpy(data, oi->data,
sizeof(LaserClusterInterface_data_t));
176 LaserClusterInterface::enum_tostring(
const char *enumtype,
int val)
const
178 if (strcmp(enumtype,
"SelectionMode") == 0) {
195 LaserClusterInterface::SetMaxXMessage::SetMaxXMessage(
const float ini_max_x) :
Message(
"SetMaxXMessage")
197 data_size =
sizeof(SetMaxXMessage_data_t);
200 data = (SetMaxXMessage_data_t *)
data_ptr;
202 data->max_x = ini_max_x;
210 data_size =
sizeof(SetMaxXMessage_data_t);
213 data = (SetMaxXMessage_data_t *)
data_ptr;
234 data = (SetMaxXMessage_data_t *)
data_ptr;
293 data_size =
sizeof(SetSelectionModeMessage_data_t);
296 data = (SetSelectionModeMessage_data_t *)
data_ptr;
298 data->selection_mode = ini_selection_mode;
301 add_fieldinfo(
IFT_ENUM,
"selection_mode", 1, &data->selection_mode,
"SelectionMode", &enum_map_SelectionMode);
306 data_size =
sizeof(SetSelectionModeMessage_data_t);
309 data = (SetSelectionModeMessage_data_t *)
data_ptr;
313 add_fieldinfo(
IFT_ENUM,
"selection_mode", 1, &data->selection_mode,
"SelectionMode", &enum_map_SelectionMode);
330 data = (SetSelectionModeMessage_data_t *)
data_ptr;