scan_data.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef SCAN_DATA_H__
00030 #define SCAN_DATA_H__
00031
00032 #if defined(WIN32)
00033 typedef unsigned char uint8_t;
00034 typedef unsigned int uint32_t;
00035 #if defined(HOKUYOAIST_STATIC)
00036 #define HOKUYOAIST_EXPORT
00037 #elif defined(hokuyoaist_EXPORTS)
00038 #define HOKUYOAIST_EXPORT __declspec(dllexport)
00039 #else
00040 #define HOKUYOAIST_EXPORT __declspec(dllimport)
00041 #endif
00042 #else
00043 #include <stdint.h>
00044 #define HOKUYOAIST_EXPORT
00045 #endif
00046
00047 #include <hokuyoaist/sensor_info.h>
00048
00049 #include <string>
00050
00055 namespace hokuyoaist
00056 {
00057
00058 class Sensor;
00059
00061 class HOKUYOAIST_EXPORT ScanData
00062 {
00063 public:
00064 friend class Sensor;
00065
00068 ScanData();
00085 ScanData(uint32_t* const ranges_buffer,
00086 unsigned int ranges_length,
00087 uint32_t* const intensities_buffer=0,
00088 unsigned int intensities_length=0);
00090 ScanData(ScanData const& rhs);
00091 ~ScanData();
00092
00098 const uint32_t* ranges() const
00099 { return ranges_; }
00101 const uint32_t* intensities() const
00102 { return intensities_; }
00104 unsigned int ranges_length() const { return ranges_length_; }
00106 unsigned int intensities_length() const { return intensities_length_; }
00111 bool get_error_status() const { return error_; }
00114 std::string error_code_to_string(uint32_t error_code);
00118 unsigned int laser_time_stamp() const { return laser_time_; }
00122 unsigned long long system_time_stamp() const { return system_time_; }
00124 LaserModel model() const { return model_; }
00126 bool buffers_provided() const { return buffers_provided_; }
00127
00136 ScanData& operator=(ScanData const& rhs);
00140 uint32_t operator[](unsigned int index);
00141
00143 std::string as_string();
00144
00146 void clean_up();
00147
00148 protected:
00149 uint32_t* ranges_;
00150 uint32_t* intensities_;
00151 unsigned int ranges_length_;
00152 unsigned int intensities_length_;
00153 bool error_;
00154 unsigned int laser_time_;
00155 unsigned long long system_time_;
00156 LaserModel model_;
00157 bool buffers_provided_;
00158
00159 void allocate_data(unsigned int length,
00160 bool include_intensities = false);
00161 void write_range(unsigned int index, uint32_t value);
00162 void write_intensity(unsigned int index, uint32_t value);
00163 };
00164
00165 }
00166
00169 #endif // SCAN_DATA_H__
00170