Program Listing for File raw_data_pa.hpp
↰ Return to documentation for file (/tmp/ws/src/ublox/ublox_gps/include/ublox_gps/raw_data_pa.hpp
)
//==============================================================================
// Copyright (c) 2019, Peter Weissig, TU Chemnitz
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the Flight Systems and Automatic Control group,
// TU Darmstadt, nor the names of its contributors may be used to
// endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//==============================================================================
// This file is an addon from TUC-ProAut (https://github.com/TUC-ProAut/).
// It was created to log all data from the ublox to a logfile and to publish
// the data as ros messages. This is used by our group to also evaluate the
// measured data with the rtklib.
#ifndef UBLOX_GPS_RAW_DATA_PA_HPP
#define UBLOX_GPS_RAW_DATA_PA_HPP
// STL
#include <fstream>
#include <string>
// ROS includes
#include <rclcpp/rclcpp.hpp>
// ROS messages
#include <std_msgs/msg/u_int8_multi_array.hpp>
namespace ublox_node {
class RawDataStreamPa final : public rclcpp::Node {
public:
explicit RawDataStreamPa(bool is_ros_subscriber = false);
void getRosParams();
bool isEnabled();
void initialize();
void ubloxCallback(const unsigned char* data,
std::size_t size);
private:
void msgCallback(const std_msgs::msg::UInt8MultiArray::SharedPtr msg);
std_msgs::msg::UInt8MultiArray str2uint8(const std::string & str);
void publishMsg(const std::string & str);
void saveToFile(const std::string & str);
std::string file_dir_;
std::string file_name_;
std::ofstream file_handle_;
bool flag_publish_;
bool is_ros_subscriber_;
rclcpp::Publisher<std_msgs::msg::UInt8MultiArray>::SharedPtr raw_pub_;
rclcpp::Subscription<std_msgs::msg::UInt8MultiArray>::SharedPtr raw_data_stream_sub_;
};
} // namespace ublox_node
#endif