/** Constructor with initial values.
 * @param ini_skill_string initial value for skill_string
 */
SkillerInterface::ExecSkillContinuousMessage::ExecSkillContinuousMessage(const char * ini_skill_string) : Message("ExecSkillContinuousMessage")
{
  data_size = sizeof(ExecSkillContinuousMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (ExecSkillContinuousMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  strncpy(data->skill_string, ini_skill_string, 1024);
  add_fieldinfo(IFT_STRING, "skill_string", 1024, data->skill_string);
}
Exemplo n.º 2
0
/** Constructor with initial values.
 * @param ini_enabled initial value for enabled
 */
RobotinoSensorInterface::SetBumperEStopEnabledMessage::SetBumperEStopEnabledMessage(const bool ini_enabled) : Message("SetBumperEStopEnabledMessage")
{
  data_size = sizeof(SetBumperEStopEnabledMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetBumperEStopEnabledMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  data->enabled = ini_enabled;
  add_fieldinfo(IFT_BOOL, "enabled", 1, &data->enabled);
}
/** Constructor with initial values.
 * @param ini_enabled initial value for enabled
 */
SpeechRecognitionInterface::SetEnabledMessage::SetEnabledMessage(const bool ini_enabled) : Message("SetEnabledMessage")
{
  data_size = sizeof(SetEnabledMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetEnabledMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  data->enabled = ini_enabled;
  add_fieldinfo(IFT_BOOL, "enabled", 1, &data->enabled);
}
Exemplo n.º 4
0
/** Constructor with initial values.
 * @param ini_graph_colored initial value for graph_colored
 */
SkillerDebugInterface::SetGraphColoredMessage::SetGraphColoredMessage(const bool ini_graph_colored) : Message("SetGraphColoredMessage")
{
    data_size = sizeof(SetGraphColoredMessage_data_t);
    data_ptr  = malloc(data_size);
    memset(data_ptr, 0, data_size);
    data      = (SetGraphColoredMessage_data_t *)data_ptr;
    data_ts   = (message_data_ts_t *)data_ptr;
    data->graph_colored = ini_graph_colored;
    add_fieldinfo(IFT_BOOL, "graph_colored", 1, &data->graph_colored);
}
Exemplo n.º 5
0
/** Constructor with initial values.
 * @param ini_graph_dir initial value for graph_dir
 */
SkillerDebugInterface::SetGraphDirectionMessage::SetGraphDirectionMessage(const GraphDirectionEnum ini_graph_dir) : Message("SetGraphDirectionMessage")
{
    data_size = sizeof(SetGraphDirectionMessage_data_t);
    data_ptr  = malloc(data_size);
    memset(data_ptr, 0, data_size);
    data      = (SetGraphDirectionMessage_data_t *)data_ptr;
    data_ts   = (message_data_ts_t *)data_ptr;
    data->graph_dir = ini_graph_dir;
    add_fieldinfo(IFT_ENUM, "graph_dir", 1, &data->graph_dir, "GraphDirectionEnum");
}
Exemplo n.º 6
0
/** Constructor with initial values.
 * @param ini_graph_fsm initial value for graph_fsm
 */
SkillerDebugInterface::SetGraphMessage::SetGraphMessage(const char * ini_graph_fsm) : Message("SetGraphMessage")
{
    data_size = sizeof(SetGraphMessage_data_t);
    data_ptr  = malloc(data_size);
    memset(data_ptr, 0, data_size);
    data      = (SetGraphMessage_data_t *)data_ptr;
    data_ts   = (message_data_ts_t *)data_ptr;
    strncpy(data->graph_fsm, ini_graph_fsm, 32);
    add_fieldinfo(IFT_STRING, "graph_fsm", 32, data->graph_fsm);
}
Exemplo n.º 7
0
/** Constructor */
TestInterface::SetTestStringMessage::SetTestStringMessage() : Message("SetTestStringMessage")
{
  data_size = sizeof(SetTestStringMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetTestStringMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  enum_map_TestEnum[(int)TEST_ENUM_1] = "TEST_ENUM_1";
  enum_map_TestEnum[(int)TEST_ENUM_2] = "TEST_ENUM_2";
  add_fieldinfo(IFT_STRING, "test_string", 30, data->test_string);
}
Exemplo n.º 8
0
/** Constructor */
SkillerDebugInterface::SkillerDebugInterface() : Interface()
{
  data_size = sizeof(SkillerDebugInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (SkillerDebugInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  enum_map_GraphDirectionEnum[(int)GD_TOP_BOTTOM] = "GD_TOP_BOTTOM";
  enum_map_GraphDirectionEnum[(int)GD_BOTTOM_TOP] = "GD_BOTTOM_TOP";
  enum_map_GraphDirectionEnum[(int)GD_LEFT_RIGHT] = "GD_LEFT_RIGHT";
  enum_map_GraphDirectionEnum[(int)GD_RIGHT_LEFT] = "GD_RIGHT_LEFT";
  add_fieldinfo(IFT_STRING, "graph_fsm", 32, data->graph_fsm);
  add_fieldinfo(IFT_STRING, "graph", 8192, data->graph);
  add_fieldinfo(IFT_ENUM, "graph_dir", 1, &data->graph_dir, "GraphDirectionEnum", &enum_map_GraphDirectionEnum);
  add_fieldinfo(IFT_BOOL, "graph_colored", 1, &data->graph_colored);
  add_messageinfo("SetGraphMessage");
  add_messageinfo("SetGraphDirectionMessage");
  add_messageinfo("SetGraphColoredMessage");
  unsigned char tmp_hash[] = {0xcf, 0x3d, 0x2f, 0xf8, 0x80, 0x6e, 0x8f, 0xf4, 0x81, 0xa6, 0x7f, 0xd9, 0xb0, 0x29, 0xfc, 0x62};
  set_hash(tmp_hash);
}
/** Constructor */
LocalizerControlInterface::LocalizerControlInterface() : Interface()
{
  data_size = sizeof(LocalizerControlInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (LocalizerControlInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_STRING, "map_name", 30, data->map_name);
  add_messageinfo("ResetMessage");
  unsigned char tmp_hash[] = {0xa4, 0xe8, 0x69, 0x11, 0x29, 0x30, 0xf2, 0xcb, 0xe5, 0xf4, 00, 0x35, 0x19, 0x58, 0x54, 0xfb};
  set_hash(tmp_hash);
}
Exemplo n.º 10
0
/** Constructor */
LocalizationInterface::LocalizationInterface() : Interface()
{
  data_size = sizeof(LocalizationInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (LocalizationInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_STRING, "map", 64, data->map);
  add_messageinfo("SetInitialPoseMessage");
  unsigned char tmp_hash[] = {0x7f, 0x9, 0xec, 0xd1, 00, 0x3f, 0x3, 0xb7, 0x95, 0xce, 0xe, 0x1d, 0x6f, 0x48, 0x6c, 0xad};
  set_hash(tmp_hash);
}
Exemplo n.º 11
0
/** Constructor with initial values.
 * @param ini_test_int initial value for test_int
 */
TestInterface::SetTestIntMessage::SetTestIntMessage(const int32_t ini_test_int) : Message("SetTestIntMessage")
{
  data_size = sizeof(SetTestIntMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetTestIntMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  data->test_int = ini_test_int;
  enum_map_TestEnum[(int)TEST_ENUM_1] = "TEST_ENUM_1";
  enum_map_TestEnum[(int)TEST_ENUM_2] = "TEST_ENUM_2";
  add_fieldinfo(IFT_INT32, "test_int", 1, &data->test_int);
}
Exemplo n.º 12
0
/** Constructor */
SkillerInterface::SkillerInterface() : Interface()
{
  data_size = sizeof(SkillerInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (SkillerInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_STRING, "skill_string", 1024, data->skill_string);
  add_fieldinfo(IFT_STRING, "error", 128, data->error);
  add_fieldinfo(IFT_UINT32, "exclusive_controller", 1, &data->exclusive_controller);
  add_fieldinfo(IFT_ENUM, "status", 1, &data->status, "SkillStatusEnum");
  add_fieldinfo(IFT_BOOL, "continuous", 1, &data->continuous);
  add_messageinfo("ExecSkillMessage");
  add_messageinfo("ExecSkillContinuousMessage");
  add_messageinfo("RestartInterpreterMessage");
  add_messageinfo("StopExecMessage");
  add_messageinfo("AcquireControlMessage");
  add_messageinfo("ReleaseControlMessage");
  unsigned char tmp_hash[] = {0x36, 0x80, 0x24, 0x37, 0x4d, 0x96, 0x6e, 0xb4, 0xf9, 0x73, 0xb0, 0x83, 0x4b, 0xb5, 0xa5, 0xd1};
  set_hash(tmp_hash);
}
Exemplo n.º 13
0
/** Constructor */
SkillerDebugInterface::SetGraphColoredMessage::SetGraphColoredMessage() : Message("SetGraphColoredMessage")
{
  data_size = sizeof(SetGraphColoredMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetGraphColoredMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  enum_map_GraphDirectionEnum[(int)GD_TOP_BOTTOM] = "GD_TOP_BOTTOM";
  enum_map_GraphDirectionEnum[(int)GD_BOTTOM_TOP] = "GD_BOTTOM_TOP";
  enum_map_GraphDirectionEnum[(int)GD_LEFT_RIGHT] = "GD_LEFT_RIGHT";
  enum_map_GraphDirectionEnum[(int)GD_RIGHT_LEFT] = "GD_RIGHT_LEFT";
  add_fieldinfo(IFT_BOOL, "graph_colored", 1, &data->graph_colored);
}
Exemplo n.º 14
0
/** Constructor with initial values.
 * @param ini_graph_fsm initial value for graph_fsm
 */
SkillerDebugInterface::SetGraphMessage::SetGraphMessage(const char * ini_graph_fsm) : Message("SetGraphMessage")
{
  data_size = sizeof(SetGraphMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetGraphMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  strncpy(data->graph_fsm, ini_graph_fsm, 32);
  enum_map_GraphDirectionEnum[(int)GD_TOP_BOTTOM] = "GD_TOP_BOTTOM";
  enum_map_GraphDirectionEnum[(int)GD_BOTTOM_TOP] = "GD_BOTTOM_TOP";
  enum_map_GraphDirectionEnum[(int)GD_LEFT_RIGHT] = "GD_LEFT_RIGHT";
  enum_map_GraphDirectionEnum[(int)GD_RIGHT_LEFT] = "GD_RIGHT_LEFT";
  add_fieldinfo(IFT_STRING, "graph_fsm", 32, data->graph_fsm);
}
Exemplo n.º 15
0
/** Constructor with initial values.
 * @param ini_graph_dir initial value for graph_dir
 */
SkillerDebugInterface::SetGraphDirectionMessage::SetGraphDirectionMessage(const GraphDirectionEnum ini_graph_dir) : Message("SetGraphDirectionMessage")
{
  data_size = sizeof(SetGraphDirectionMessage_data_t);
  data_ptr  = malloc(data_size);
  memset(data_ptr, 0, data_size);
  data      = (SetGraphDirectionMessage_data_t *)data_ptr;
  data_ts   = (message_data_ts_t *)data_ptr;
  data->graph_dir = ini_graph_dir;
  enum_map_GraphDirectionEnum[(int)GD_TOP_BOTTOM] = "GD_TOP_BOTTOM";
  enum_map_GraphDirectionEnum[(int)GD_BOTTOM_TOP] = "GD_BOTTOM_TOP";
  enum_map_GraphDirectionEnum[(int)GD_LEFT_RIGHT] = "GD_LEFT_RIGHT";
  enum_map_GraphDirectionEnum[(int)GD_RIGHT_LEFT] = "GD_RIGHT_LEFT";
  add_fieldinfo(IFT_ENUM, "graph_dir", 1, &data->graph_dir, "GraphDirectionEnum", &enum_map_GraphDirectionEnum);
}
Exemplo n.º 16
0
/** Constructor */
RobotinoSensorInterface::RobotinoSensorInterface() : Interface()
{
  data_size = sizeof(RobotinoSensorInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (RobotinoSensorInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_FLOAT, "mot_velocity", 3, &data->mot_velocity);
  add_fieldinfo(IFT_INT32, "mot_position", 3, &data->mot_position);
  add_fieldinfo(IFT_FLOAT, "mot_current", 3, &data->mot_current);
  add_fieldinfo(IFT_BOOL, "bumper", 1, &data->bumper);
  add_fieldinfo(IFT_FLOAT, "distance", 9, &data->distance);
  add_fieldinfo(IFT_BOOL, "digital_in", 8, &data->digital_in);
  add_fieldinfo(IFT_FLOAT, "analog_in", 8, &data->analog_in);
  add_fieldinfo(IFT_BOOL, "bumper_estop_enabled", 1, &data->bumper_estop_enabled);
  add_messageinfo("SetBumperEStopEnabledMessage");
  unsigned char tmp_hash[] = {0x3f, 0x22, 0xb4, 0xc5, 0xe8, 0x9c, 0xd9, 0xa8, 0x90, 0x80, 0x23, 0xb2, 0x55, 0xed, 0xfd, 0x52};
  set_hash(tmp_hash);
}
Exemplo n.º 17
0
/** Constructor */
Position2DTrackInterface::Position2DTrackInterface() : Interface()
{
  data_size = sizeof(Position2DTrackInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (Position2DTrackInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_FLOAT, "track_x_positions", 30, &data->track_x_positions);
  add_fieldinfo(IFT_FLOAT, "track_y_positions", 30, &data->track_y_positions);
  add_fieldinfo(IFT_INT32, "track_timestamps", 30, &data->track_timestamps);
  add_fieldinfo(IFT_BOOL, "valid", 1, &data->valid);
  add_fieldinfo(IFT_UINT32, "length", 1, &data->length);
  add_fieldinfo(IFT_UINT32, "track_id", 1, &data->track_id);
  unsigned char tmp_hash[] = {0xcd, 0xb8, 0x68, 0x14, 0xff, 0x3, 0xe4, 0xc4, 0x20, 0x43, 0x44, 0xb8, 0x86, 0x87, 0xa3, 0x4c};
  set_hash(tmp_hash);
}
Exemplo n.º 18
0
/** Constructor */
SwitchInterface::SwitchInterface() : Interface()
{
  data_size = sizeof(SwitchInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (SwitchInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_BOOL, "enabled", 1, &data->enabled);
  add_fieldinfo(IFT_FLOAT, "value", 1, &data->value);
  add_fieldinfo(IFT_FLOAT, "history", 1, &data->history);
  add_fieldinfo(IFT_UINT32, "short_activations", 1, &data->short_activations);
  add_fieldinfo(IFT_UINT32, "long_activations", 1, &data->long_activations);
  add_fieldinfo(IFT_UINT32, "activation_count", 1, &data->activation_count);
  add_messageinfo("SetMessage");
  add_messageinfo("EnableSwitchMessage");
  add_messageinfo("DisableSwitchMessage");
  add_messageinfo("EnableDurationMessage");
  unsigned char tmp_hash[] = {0xa7, 0xa4, 0xc, 0x19, 0x66, 0xa4, 0x87, 0x6b, 0xa9, 0x32, 0x95, 0x40, 0xc7, 0x82, 0x75, 0x6d};
  set_hash(tmp_hash);
}
Exemplo n.º 19
0
/** Constructor */
NavPathInterface::NavPathInterface() : Interface()
{
  data_size = sizeof(NavPathInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (NavPathInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_STRING, "path_node_1", 64, data->path_node_1);
  add_fieldinfo(IFT_STRING, "path_node_2", 64, data->path_node_2);
  add_fieldinfo(IFT_STRING, "path_node_3", 64, data->path_node_3);
  add_fieldinfo(IFT_STRING, "path_node_4", 64, data->path_node_4);
  add_fieldinfo(IFT_STRING, "path_node_5", 64, data->path_node_5);
  add_fieldinfo(IFT_STRING, "path_node_6", 64, data->path_node_6);
  add_fieldinfo(IFT_STRING, "path_node_7", 64, data->path_node_7);
  add_fieldinfo(IFT_STRING, "path_node_8", 64, data->path_node_8);
  add_fieldinfo(IFT_STRING, "path_node_9", 64, data->path_node_9);
  add_fieldinfo(IFT_STRING, "path_node_10", 64, data->path_node_10);
  add_fieldinfo(IFT_STRING, "path_node_11", 64, data->path_node_11);
  add_fieldinfo(IFT_STRING, "path_node_12", 64, data->path_node_12);
  add_fieldinfo(IFT_STRING, "path_node_13", 64, data->path_node_13);
  add_fieldinfo(IFT_STRING, "path_node_14", 64, data->path_node_14);
  add_fieldinfo(IFT_STRING, "path_node_15", 64, data->path_node_15);
  add_fieldinfo(IFT_STRING, "path_node_16", 64, data->path_node_16);
  add_fieldinfo(IFT_STRING, "path_node_17", 64, data->path_node_17);
  add_fieldinfo(IFT_STRING, "path_node_18", 64, data->path_node_18);
  add_fieldinfo(IFT_STRING, "path_node_19", 64, data->path_node_19);
  add_fieldinfo(IFT_STRING, "path_node_20", 64, data->path_node_20);
  add_fieldinfo(IFT_STRING, "path_node_21", 64, data->path_node_21);
  add_fieldinfo(IFT_STRING, "path_node_22", 64, data->path_node_22);
  add_fieldinfo(IFT_STRING, "path_node_23", 64, data->path_node_23);
  add_fieldinfo(IFT_STRING, "path_node_24", 64, data->path_node_24);
  add_fieldinfo(IFT_STRING, "path_node_25", 64, data->path_node_25);
  add_fieldinfo(IFT_STRING, "path_node_26", 64, data->path_node_26);
  add_fieldinfo(IFT_STRING, "path_node_27", 64, data->path_node_27);
  add_fieldinfo(IFT_STRING, "path_node_28", 64, data->path_node_28);
  add_fieldinfo(IFT_STRING, "path_node_29", 64, data->path_node_29);
  add_fieldinfo(IFT_STRING, "path_node_30", 64, data->path_node_30);
  add_fieldinfo(IFT_STRING, "path_node_31", 64, data->path_node_31);
  add_fieldinfo(IFT_STRING, "path_node_32", 64, data->path_node_32);
  add_fieldinfo(IFT_STRING, "path_node_33", 64, data->path_node_33);
  add_fieldinfo(IFT_STRING, "path_node_34", 64, data->path_node_34);
  add_fieldinfo(IFT_STRING, "path_node_35", 64, data->path_node_35);
  add_fieldinfo(IFT_STRING, "path_node_36", 64, data->path_node_36);
  add_fieldinfo(IFT_STRING, "path_node_37", 64, data->path_node_37);
  add_fieldinfo(IFT_STRING, "path_node_38", 64, data->path_node_38);
  add_fieldinfo(IFT_STRING, "path_node_39", 64, data->path_node_39);
  add_fieldinfo(IFT_STRING, "path_node_40", 64, data->path_node_40);
  add_fieldinfo(IFT_UINT32, "path_length", 1, &data->path_length);
  unsigned char tmp_hash[] = {0x9d, 0xe, 0xdb, 0x61, 0x65, 0x94, 0x3d, 0x7a, 0x87, 0x95, 0x8f, 0x85, 0x87, 0xa4, 0x5f, 0x61};
  set_hash(tmp_hash);
}
Exemplo n.º 20
0
/** Constructor */
HumanSkeletonProjectionInterface::HumanSkeletonProjectionInterface() : Interface()
{
  data_size = sizeof(HumanSkeletonProjectionInterface_data_t);
  data_ptr  = malloc(data_size);
  data      = (HumanSkeletonProjectionInterface_data_t *)data_ptr;
  data_ts   = (interface_data_ts_t *)data_ptr;
  memset(data_ptr, 0, data_size);
  add_fieldinfo(IFT_FLOAT, "horizontal_fov", 1, &data->horizontal_fov);
  add_fieldinfo(IFT_FLOAT, "vertical_fov", 1, &data->vertical_fov);
  add_fieldinfo(IFT_UINT32, "res_x", 1, &data->res_x);
  add_fieldinfo(IFT_UINT32, "res_y", 1, &data->res_y);
  add_fieldinfo(IFT_UINT16, "max_depth", 1, &data->max_depth);
  add_fieldinfo(IFT_FLOAT, "proj_com", 2, &data->proj_com);
  add_fieldinfo(IFT_FLOAT, "proj_head", 2, &data->proj_head);
  add_fieldinfo(IFT_FLOAT, "proj_neck", 2, &data->proj_neck);
  add_fieldinfo(IFT_FLOAT, "proj_torso", 2, &data->proj_torso);
  add_fieldinfo(IFT_FLOAT, "proj_waist", 2, &data->proj_waist);
  add_fieldinfo(IFT_FLOAT, "proj_left_collar", 2, &data->proj_left_collar);
  add_fieldinfo(IFT_FLOAT, "proj_left_shoulder", 2, &data->proj_left_shoulder);
  add_fieldinfo(IFT_FLOAT, "proj_left_elbow", 2, &data->proj_left_elbow);
  add_fieldinfo(IFT_FLOAT, "proj_left_wrist", 2, &data->proj_left_wrist);
  add_fieldinfo(IFT_FLOAT, "proj_left_hand", 2, &data->proj_left_hand);
  add_fieldinfo(IFT_FLOAT, "proj_left_fingertip", 2, &data->proj_left_fingertip);
  add_fieldinfo(IFT_FLOAT, "proj_right_collar", 2, &data->proj_right_collar);
  add_fieldinfo(IFT_FLOAT, "proj_right_shoulder", 2, &data->proj_right_shoulder);
  add_fieldinfo(IFT_FLOAT, "proj_right_elbow", 2, &data->proj_right_elbow);
  add_fieldinfo(IFT_FLOAT, "proj_right_wrist", 2, &data->proj_right_wrist);
  add_fieldinfo(IFT_FLOAT, "proj_right_hand", 2, &data->proj_right_hand);
  add_fieldinfo(IFT_FLOAT, "proj_right_fingertip", 2, &data->proj_right_fingertip);
  add_fieldinfo(IFT_FLOAT, "proj_left_hip", 2, &data->proj_left_hip);
  add_fieldinfo(IFT_FLOAT, "proj_left_knee", 2, &data->proj_left_knee);
  add_fieldinfo(IFT_FLOAT, "proj_left_ankle", 2, &data->proj_left_ankle);
  add_fieldinfo(IFT_FLOAT, "proj_left_foot", 2, &data->proj_left_foot);
  add_fieldinfo(IFT_FLOAT, "proj_right_hip", 2, &data->proj_right_hip);
  add_fieldinfo(IFT_FLOAT, "proj_right_knee", 2, &data->proj_right_knee);
  add_fieldinfo(IFT_FLOAT, "proj_right_ankle", 2, &data->proj_right_ankle);
  add_fieldinfo(IFT_FLOAT, "proj_right_foot", 2, &data->proj_right_foot);
  unsigned char tmp_hash[] = {0x71, 0xb2, 0x40, 0x3e, 0xa, 0x85, 0xd5, 0xcc, 0x77, 0xeb, 0xf2, 0xf1, 0xa9, 0x9c, 0xec, 0xf3};
  set_hash(tmp_hash);
}