Revision 4e9221c4

View differences:

src/server/joint_interface.cpp
104 104
//! return the timestamped float for the given joints position
105 105
TimestampedList JointInterface::get_ts_position(int joint_id){
106 106
    //lock the tsd_list for this access. by doing this we assure
107
    //that no other thread accessing this element can diturb the
107
    //that no other thread accessing this element can disturb the
108 108
    //following atomic instructions:
109 109
    mutex::scoped_lock scoped_lock(joint_ts_position_map_access_mutex);
110 110

  
src/server/server.cpp
98 98
    float loop_delay = 1000.0 / MOTION_UPDATERATE;
99 99
    boost::system_time timeout = get_system_time() + posix_time::milliseconds(loop_delay);
100 100

  
101
    //wait for incoming joint data:
102
    while (middleware->ok()){
103
        //mw tick
104
        middleware->tick();
105

  
106
        unsigned int incoming_data_count = joint_interface->get_and_clear_incoming_position_count();
107
        if (incoming_data_count == 0){
108
                incoming_data_count_invalid++;
109
                if (incoming_data_count_invalid >= MOTION_UPDATERATE){
110
                    printf("> waiting for joint data...\n");
111
                    incoming_data_count_invalid = 0;
112
                }
113
        }else{
114
            //fine, joint data is arriving, exit waiting loop
115
            break;
116
        }
117

  
118
        thread::sleep(timeout);
119
        timeout = get_system_time() + posix_time::milliseconds(loop_delay);
120
    }
121

  
122
    //fine, data is arriving, activate and run control loop:
101 123
    while (middleware->ok()){
102 124
        //mw tick
103 125
        middleware->tick();

Also available in: Unified diff