MultiSenseChannel.hh
Go to the documentation of this file.
00001 
00037 #ifndef LibMultiSense_MultiSenseChannel_hh
00038 #define LibMultiSense_MultiSenseChannel_hh
00039 
00040 #include <stdint.h>
00041 #include <string>
00042 #include <vector>
00043 
00044 #include "MultiSenseTypes.hh"
00045 
00046 namespace crl {
00047 namespace multisense {
00048 
00069 class MULTISENSE_API Channel {
00070 public:
00071 
00083     static Channel* Create(const std::string& sensorAddress);
00084 
00093     static void Destroy(Channel *instanceP);
00094 
00098     virtual ~Channel() {};
00099 
00108     static const char *statusString(Status status);
00109 
00110 
00150     virtual Status addIsolatedCallback(image::Callback callback,
00151                                        DataSource      imageSourceMask,
00152                                        void           *userDataP=NULL) = 0;
00153 
00178     virtual Status addIsolatedCallback(lidar::Callback callback,
00179                                        void           *userDataP=NULL) = 0;
00180 
00204     virtual Status addIsolatedCallback(pps::Callback   callback,
00205                                        void           *userDataP=NULL) = 0;
00206 
00232     virtual Status addIsolatedCallback(imu::Callback   callback,
00233                                        void           *userDataP=NULL) = 0;
00234 
00235 
00246     virtual Status removeIsolatedCallback(image::Callback callback) = 0;
00247 
00258     virtual Status removeIsolatedCallback(lidar::Callback callback) = 0;
00259 
00270     virtual Status removeIsolatedCallback(pps::Callback   callback) = 0;
00271 
00282     virtual Status removeIsolatedCallback(imu::Callback   callback) = 0;
00283 
00302     virtual void  *reserveCallbackBuffer()                 = 0;
00303 
00316     virtual Status releaseCallbackBuffer(void *referenceP) = 0;
00317 
00339     virtual Status networkTimeSynchronization(bool enabled) = 0;
00340 
00360     virtual Status startStreams     (DataSource mask)  = 0;
00361 
00376     virtual Status stopStreams      (DataSource mask)  = 0;
00377 
00388     virtual Status getEnabledStreams(DataSource& mask) = 0;
00389 
00390 
00418     virtual Status startDirectedStream(const DirectedStream& stream) = 0;
00419 
00447     virtual Status startDirectedStreams(const std::vector<DirectedStream>& streams) = 0;
00448 
00463     virtual Status stopDirectedStream (const DirectedStream& stream) = 0;
00464 
00480     virtual Status getDirectedStreams (std::vector<DirectedStream>& streams) = 0;
00481 
00499     virtual Status maxDirectedStreams (uint32_t& maximum) = 0;
00500 
00501 
00502 
00503 
00516     virtual Status setTriggerSource    (TriggerSource s)                    = 0;
00517 
00532     virtual Status setMotorSpeed       (float rpm)                          = 0;
00533 
00545     virtual Status getLightingConfig   (lighting::Config& c)                = 0;
00546 
00558     virtual Status setLightingConfig   (const lighting::Config& c)          = 0;
00559 
00569     virtual Status getSensorVersion    (VersionType& version)               = 0;
00570 
00580     virtual Status getApiVersion       (VersionType& version)               = 0;
00581 
00593     virtual Status getVersionInfo      (system::VersionInfo& v)             = 0;
00594 
00606     virtual Status getImageConfig      (image::Config& c)                   = 0;
00607 
00619     virtual Status setImageConfig      (const image::Config& c)             = 0;
00620 
00633     virtual Status getImageCalibration (image::Calibration& c)              = 0;
00634 
00646     virtual Status setImageCalibration (const image::Calibration& c)        = 0;
00647 
00660     virtual Status getLidarCalibration (lidar::Calibration& c)              = 0;
00661 
00673     virtual Status setLidarCalibration (const lidar::Calibration& c)        = 0;
00674 
00691     virtual Status getImageHistogram   (int64_t frameId,  // from last 20 images, left only
00692                                         image::Histogram& histogram)        = 0;
00693 
00694 
00707     virtual Status getDeviceModes      (std::vector<system::DeviceMode>& m) = 0;
00708 
00724     virtual Status getMtu              (int32_t& mtu)                       = 0;
00725 
00735     virtual Status setMtu              (int32_t mtu)                        = 0;
00736 
00749     virtual Status getNetworkConfig    (system::NetworkConfig& c)           = 0;
00750 
00761     virtual Status setNetworkConfig    (const system::NetworkConfig& c)     = 0;
00762 
00775     virtual Status getDeviceInfo       (system::DeviceInfo& info)           = 0;
00776 
00791     virtual Status setDeviceInfo       (const std::string& key,
00792                                         const system::DeviceInfo& i)        = 0;
00793 
00807     virtual Status flashBitstream      (const std::string& file)            = 0;
00808 
00822     virtual Status flashFirmware       (const std::string& file)            = 0;
00823 
00834     virtual Status verifyBitstream     (const std::string& file)            = 0;
00835 
00846     virtual Status verifyFirmware      (const std::string& file)            = 0;
00847 
00848     //
00849     // IMU configuration.
00850     //
00851     // Detailed info may be queried, and configuration may be queried or set.
00852     //
00853     // See imu::Details and imu::Config classes for more information.
00854     //
00855     // 'samplesPerMessage' is the number of samples (aggregate from all IMU types)
00856     // that the sensor will queue internally before putting on the wire.
00857     // Note that low settings combined with high IMU sensor rates may interfere
00858     // with the acquisition and transmission of image and lidar data.
00859     //
00860     // For setImuConfig():
00861     //
00862     //    Set 'storeSettingsInFlash' to true to have the configuration saved in
00863     //    non-volatile flash on the sensor head.
00864     //
00865     //    Set 'samplesPerMessage' to zero for the sensor to keep its current
00866     //    samplesPerMessage setting.
00867     //
00868     //    IMU streams must be restarted for any configuration changes to be
00869     //    reflected.
00870 
00886     virtual Status getImuInfo          (uint32_t& maxSamplesPerMesage,
00887                                         std::vector<imu::Info>& info)       = 0;
00888 
00905     virtual Status getImuConfig        (uint32_t& samplesPerMessage,
00906                                         std::vector<imu::Config>& c)        = 0;
00907 
00928     virtual Status setImuConfig        (bool storeSettingsInFlash,
00929                                         uint32_t samplesPerMessage,
00930                                         const std::vector<imu::Config>& c)  = 0;
00931 
00949     virtual Status getLargeBufferDetails(uint32_t& bufferCount,
00950                                          uint32_t& bufferSize) = 0;
00971     virtual Status setLargeBuffers      (const std::vector<uint8_t*>& buffers,
00972                                          uint32_t                     bufferSize) = 0;
00973 
00983     virtual Status getLocalUdpPort(uint16_t& port) = 0;
00984 };
00985 
00986 
00987 }; // namespace multisense
00988 }; // namespace crl
00989 
00990 #endif // LibMultiSense_MultiSenseChannel_hh


multisense_lib
Author(s):
autogenerated on Thu Aug 27 2015 14:01:11