bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (byteStream.size() < length+2) { //std::cout << "kobuki_node: kobuki_inertia: deserialise failed. not enough byte stream." << std::endl; return false; } unsigned char header_id, length_packed; buildVariable(header_id, byteStream); buildVariable(length_packed, byteStream); if( header_id != Header::GpInput ) return false; if( length_packed != length ) return false; buildVariable(data.digital_input, byteStream); //for (unsigned int i = 0; i < data.analog_input.size(); ++i) // It's actually sending seven 16-bit variables. // 0-3 : the analog pin inputs // 4 : ??? // 5-6 : 0 for (unsigned int i = 0; i < 4; ++i) { buildVariable(data.analog_input[i], byteStream); } for (unsigned int i = 0; i < 3; ++i) { uint16_t dummy; buildVariable(dummy, byteStream); } //showMe(); return constrain(); }
bool CoreSensors::deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { //ROS_WARN_STREAM("kobuki_node: kobuki_default: deserialise failed. empty byte stream."); return false; } unsigned char header_id, length; buildVariable(header_id, byteStream); buildVariable(length, byteStream); buildVariable(data.time_stamp, byteStream); buildVariable(data.bumper, byteStream); buildVariable(data.wheel_drop, byteStream); buildVariable(data.cliff, byteStream); buildVariable(data.left_encoder, byteStream); buildVariable(data.right_encoder, byteStream); buildVariable(data.left_pwm, byteStream); buildVariable(data.right_pwm, byteStream); buildVariable(data.buttons, byteStream); buildVariable(data.charger, byteStream); buildVariable(data.battery, byteStream); buildVariable(data.over_current, byteStream); return true; }
// methods bool serialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { printf("kobuki_node: kobuki_udid: serialise failed. empty byte stream."); return false; } unsigned char length = 12; buildBytes(Header::UniqueDeviceID, byteStream); buildBytes(length, byteStream); buildBytes(data.udid0, byteStream); buildBytes(data.udid1, byteStream); buildBytes(data.udid2, byteStream); return true; }
bool serialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { printf("kobuki_node: kobuki_cliff: serialise failed. empty byte stream."); return false; } unsigned char length = 6; buildBytes(Header::Cliff, byteStream); buildBytes(length, byteStream); buildBytes(data.bottom[0], byteStream); buildBytes(data.bottom[1], byteStream); buildBytes(data.bottom[2], byteStream); return true; }
bool serialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { //ROS_WARN_STREAM("kobuki_node: three_axis_gyro: serialise failed. empty byte stream."); return false; } unsigned char length = 2 + 2 * data.followed_data_length; buildBytes(Header::ThreeAxisGyro, byteStream); buildBytes(length, byteStream); buildBytes(data.frame_id, byteStream); buildBytes(data.followed_data_length, byteStream); for (unsigned int i=0; i<data.followed_data_length; i++) buildBytes(data.data[i], byteStream); return true; }
bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { printf("kobuki_node: kobuki_udid: deserialise failed. empty byte stream."); return false; } unsigned char header_id, length; buildVariable(header_id, byteStream); buildVariable(length, byteStream); buildVariable(data.udid0, byteStream); buildVariable(data.udid1, byteStream); buildVariable(data.udid2, byteStream); //showMe(); return constrain(); }
bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { //ROS_WARN_STREAM("kobuki_node: three_axis_gyro: deserialise failed. empty byte stream."); return false; } unsigned char header_id, length; buildVariable(header_id, byteStream); buildVariable(length, byteStream); buildVariable(data.frame_id, byteStream); buildVariable(data.followed_data_length, byteStream); for (unsigned int i=0; i<data.followed_data_length; i++) buildVariable(data.data[i], byteStream); return true; }
bool serialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { //ROS_WARN_STREAM("kobuki_node: kobuki_inertia: serialise failed. empty byte stream."); return false; } unsigned char length = 7; buildBytes(Header::Inertia, byteStream); buildBytes(length, byteStream); buildBytes(data.angle, byteStream); buildBytes(data.angle_rate, byteStream); buildBytes(data.acc[0], byteStream); buildBytes(data.acc[1], byteStream); buildBytes(data.acc[2], byteStream); return true; }
bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (!(byteStream.size() > 0)) { //ROS_WARN_STREAM("kobuki_node: kobuki_inertia: deserialise failed. empty byte stream."); return false; } unsigned char header_id, length; buildVariable(header_id, byteStream); buildVariable(length, byteStream); buildVariable(data.angle, byteStream); buildVariable(data.angle_rate, byteStream); buildVariable(data.acc[0], byteStream); buildVariable(data.acc[1], byteStream); buildVariable(data.acc[2], byteStream); return true; }
bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (byteStream.size() < length+2) { //std::cout << "kobuki_node: kobuki_cliff: deserialise failed. not enough byte stream." << std::endl; return false; } unsigned char header_id, length_packed; buildVariable(header_id, byteStream); buildVariable(length_packed, byteStream); if( header_id != Header::Cliff ) return false; if( length_packed != length ) return false; buildVariable(data.bottom[0], byteStream); buildVariable(data.bottom[1], byteStream); buildVariable(data.bottom[2], byteStream); //showMe(); return constrain(); }
bool deserialise(ecl::PushAndPop<unsigned char> & byteStream) { if (byteStream.size() < length+2) { //std::cout << "kobuki_node: kobuki_udid: deserialise failed. not enough byte stream." << std::endl; return false; } unsigned char header_id, length_packed; buildVariable(header_id, byteStream); buildVariable(length_packed, byteStream); if( header_id != Header::UniqueDeviceID ) return false; if( length_packed != length ) return false; buildVariable(data.udid0, byteStream); buildVariable(data.udid1, byteStream); buildVariable(data.udid2, byteStream); //showMe(); return constrain(); }