clocksteering.cpp
Go to the documentation of this file.
00001 // *****************************************************************************
00002 //
00003 // Copyright (c) 2017, Southwest Research Institute® (SwRI®)
00004 // All rights reserved.
00005 //
00006 // Redistribution and use in source and binary forms, with or without
00007 // modification, are permitted provided that the following conditions are met:
00008 //     * Redistributions of source code must retain the above copyright
00009 //       notice, this list of conditions and the following disclaimer.
00010 //     * Redistributions in binary form must reproduce the above copyright
00011 //       notice, this list of conditions and the following disclaimer in the
00012 //       documentation and/or other materials provided with the distribution.
00013 //     * Neither the name of Southwest Research Institute® (SwRI®) nor the
00014 //       names of its contributors may be used to endorse or promote products
00015 //       derived from this software without specific prior written permission.
00016 //
00017 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020 // ARE DISCLAIMED. IN NO EVENT SHALL SOUTHWEST RESEARCH INSTITUTE BE LIABLE FOR ANY
00021 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00022 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00023 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00024 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00025 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00026 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027 //
00028 // *****************************************************************************
00029 
00030 #include <novatel_gps_driver/parsers/clocksteering.h>
00031 #include <boost/make_shared.hpp>
00032 
00033 const std::string novatel_gps_driver::ClockSteeringParser::MESSAGE_NAME = "CLOCKSTEERING";
00034 
00035 uint32_t novatel_gps_driver::ClockSteeringParser::GetMessageId() const
00036 {
00037   return 0;
00038 }
00039 
00040 const std::string novatel_gps_driver::ClockSteeringParser::GetMessageName() const
00041 {
00042   return MESSAGE_NAME;
00043 }
00044 
00045 novatel_gps_msgs::ClockSteeringPtr novatel_gps_driver::ClockSteeringParser::ParseAscii(const novatel_gps_driver::NovatelSentence& sentence) throw(ParseException)
00046 {
00047   const size_t MIN_LENGTH = 8;
00048   // Check that the message is at least as long as a a ClockSteering with no satellites
00049   if (sentence.body.size() != MIN_LENGTH)
00050   {
00051     std::stringstream error;
00052     error << "Expected ClockSteering length >= " << MIN_LENGTH
00053           << ", actual length = " << sentence.body.size();
00054     throw ParseException(error.str());
00055   }
00056   novatel_gps_msgs::ClockSteeringPtr msg = boost::make_shared<novatel_gps_msgs::ClockSteering>();
00057 
00058   msg->source = sentence.body[0];
00059   msg->steering_state = sentence.body[1];
00060 
00061   if (!ParseUInt32(sentence.body[2], msg->period))
00062   {
00063     throw ParseException("Error parsing period in ClockSteering.");
00064   }
00065 
00066   if (!ParseDouble(sentence.body[3], msg->pulse_width))
00067   {
00068     throw ParseException("Error parsing pulse_width in ClockSteering.");
00069   }
00070 
00071   if (!ParseDouble(sentence.body[4], msg->bandwidth))
00072   {
00073     throw ParseException("Error parsing bandwidth in ClockSteering.");
00074   }
00075 
00076   if (!ParseFloat(sentence.body[5], msg->slope))
00077   {
00078     throw ParseException("Error parsing slope in ClockSteering.");
00079   }
00080 
00081   if (!ParseDouble(sentence.body[6], msg->offset))
00082   {
00083     throw ParseException("Error parsing offset in ClockSteering.");
00084   }
00085 
00086   if (!ParseDouble(sentence.body[7], msg->drift_rate))
00087   {
00088     throw ParseException("Error parsing drift_rate in ClockSteering.");
00089   }
00090 
00091   return msg;
00092 }


novatel_gps_driver
Author(s):
autogenerated on Wed Jul 3 2019 19:40:37