Zebra Bioptic Color Camera SDK For Linux  1.0.0-17
All Classes Functions Variables Enumerations Enumerator
zebra_camera.h
1 /*
2  * ©2019 Zebra Technologies Corp. and/or its affiliates.
3  */
4 #ifndef ZEBRA_CAMERA_H_
5 #define ZEBRA_CAMERA_H_
6 
7 #include <memory>
8 #include <vector>
9 #include <string>
10 #include <mutex>
11 #include <cstdint>
12 
13 #include "camera_enums.h"
14 #include "camera_types.h"
15 #include "device_manager_types.h"
16 
17 namespace zebra {
18 namespace camera_sdk {
19 
20 class UvcDeviceAdapter;
21 class VideoFrameSink;
22 class FirmwareUpdater;
23 
27 class ZebraCamera {
28  friend class ZebraCameraManager;
29  friend class VideoFrameSink;
30  friend class FirmwareUpdater;
31  template <typename T, CameraPropertyId ID> friend class Property;
32  template <typename T, CameraPropertyId ID> friend class PropertyAuto;
33 public:
34  virtual ~ZebraCamera();
35 
36  // Expert level API
45  std::vector<uint8_t> GetProperty(Get function, uint8_t unit_or_terminal_id, uint8_t property_id);
46 
55  void SetProperty(Set function, uint8_t unit_or_terminal_id, uint8_t property_id, std::vector<uint8_t> value);
56 
64  AttributeInfo GetPropertyInfo(uint8_t unit_or_terminal_id, uint8_t property_id);
65 
72  bool IsPropertySupported(uint8_t unit_or_terminal_id, uint8_t property_id);
73 
74  // Asset tracking API
79  std::string GetSerialNumber();
80 
85  std::string GetModelNumber();
86 
91  std::string GetDateOfManufacture();
92 
97  std::string GetDateOfFirstProgram();
98 
103  std::string GetFirstServiceDate();
104 
109  std::string GetFirmwareVersion();
110 
115  std::string GetHardwareVersion();
116 
117  // Video API
122  std::vector<FrameType> GetSupportedFrameTypes();
123 
129 
139  void SetCurrentFrameType(FrameType frame_type);
140 
146 
152 
158 
164 
170 
176 
182 
188 
194 
200 
201  // Miscellaneous
205  void SetDefaults();
206 
210  void WriteToFlash();
211 
216 
217  // Standard properties of the Processing Unit
250 
251  // Standard properties of the Camera Terminal
256 
257  // Extended properties
270 
271 private:
272  ZebraCamera(std::unique_ptr<UvcDeviceAdapter> uvc_device_adapter);
273  // Disable copy construction
274  ZebraCamera(const ZebraCamera&) = delete;
275 
276  // Notify the observers of relevant image event.
277  void DispatchContinuousImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
278  void DispatchSnapshotImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
279  void DispatchProduceImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
280  void DispatchDecodeImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
281 
282  // Notify the observers of the decode session status change event.
283  void DispatchDecodeSessionStatusChangeEvent(DecodeSessionStatus status);
284 
285  // Starts streaming if there are image event observers.
286  void StartStreaming();
287  // Stops streaming if there are no image event observers.
288  void StopStreaming();
289 
290  std::string GetAssetTrackingPropertyValue(uint8_t property_id);
291 
292 private:
293  zebra::DeviceInfo camera_info_;
294  std::unique_ptr<UvcDeviceAdapter> uvc_device_adapter_;
295 
296  std::mutex image_event_listeners_mutex_;
297  std::vector<std::reference_wrapper<ContinuousImageEventListener>> continuous_image_listeners_;
298  std::vector<std::reference_wrapper<SnapshotImageEventListener>> snapshot_image_listeners_;
299  std::vector<std::reference_wrapper<ProduceImageEventListener>> produce_image_listeners_;
300  std::vector<std::reference_wrapper<DecodeImageEventListener>> decode_image_listeners_;
301 
302  std::mutex session_status_event_listeners_mutex_;
303  std::vector<std::reference_wrapper<DecodeSessionStatusChangeEventListener>> decode_session_status_change_listeners_;
304 
305  std::shared_ptr<VideoFrameSink> video_sink_;
306 };
307 
308 } /* namespace camera_sdk */
309 } /* namespace zebra */
310 
311 #endif /* ZEBRA_CAMERA_H_ */
zebra::camera_sdk::ProduceImageEventListener
Definition: camera_types.h:175
zebra::camera_sdk::ZebraCamera::Gamma
Property< int16_t, CameraPropertyId::GAMMA > Gamma
Definition: zebra_camera.h:237
zebra::camera_sdk::ZebraCamera::GetCurrentFrameType
FrameType GetCurrentFrameType()
zebra::camera_sdk::ZebraCamera::GetPropertyInfo
AttributeInfo GetPropertyInfo(uint8_t unit_or_terminal_id, uint8_t property_id)
zebra::camera_sdk::PropertyEx< VideoMode, CameraPropertyId::VIDEO_MODE >
zebra::camera_sdk::ImageEventData
Definition: camera_types.h:35
zebra::camera_sdk::ZebraCamera::Sharpness
Property< int16_t, CameraPropertyId::SHARPNESS > Sharpness
Definition: zebra_camera.h:233
zebra::camera_sdk::ZebraCamera::VideoModeSetting
PropertyEx< VideoMode, CameraPropertyId::VIDEO_MODE > VideoModeSetting
Definition: zebra_camera.h:261
zebra::camera_sdk::Image
Definition: camera_types.h:64
zebra::camera_sdk::FrameType
Definition: camera_types.h:43
zebra::camera_sdk::ZebraCamera::Saturation
Property< int16_t, CameraPropertyId::SATURATION > Saturation
Definition: zebra_camera.h:229
zebra::camera_sdk::ImageEventMetaData
Definition: camera_types.h:53
zebra::camera_sdk::ZebraCamera::IlluminationModeSetting
PropertyEx< IlluminationMode, CameraPropertyId::ILLUMINATION_MODE > IlluminationModeSetting
Definition: zebra_camera.h:265
zebra::camera_sdk::PropertyAuto
Definition: camera_types.h:265
zebra::camera_sdk::Property
Definition: camera_types.h:206
zebra::camera_sdk::ZebraCamera
Definition: zebra_camera.h:27
zebra::camera_sdk::ZebraCamera::RemoveDecodeSessionStatusChangeEventListener
void RemoveDecodeSessionStatusChangeEventListener(DecodeSessionStatusChangeEventListener &listener)
zebra::camera_sdk::ZebraCamera::AddProduceImageEventListener
void AddProduceImageEventListener(ProduceImageEventListener &listener)
zebra::camera_sdk::SnapshotImageEventListener
Definition: camera_types.h:168
zebra::camera_sdk::ZebraCamera::AddContinuousImageEventListener
void AddContinuousImageEventListener(ContinuousImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::SetProperty
void SetProperty(Set function, uint8_t unit_or_terminal_id, uint8_t property_id, std::vector< uint8_t > value)
zebra::camera_sdk::ZebraCamera::Brightness
Property< int16_t, CameraPropertyId::BRIGHTNESS > Brightness
Definition: zebra_camera.h:221
zebra::camera_sdk::ZebraCamera::GetDateOfFirstProgram
std::string GetDateOfFirstProgram()
zebra::camera_sdk::ZebraCamera::AddDecodeImageEventListener
void AddDecodeImageEventListener(DecodeImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::AddSnapshotImageEventListener
void AddSnapshotImageEventListener(SnapshotImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::PowerUserModeSetting
PropertyEx< PowerUserMode, CameraPropertyId::POWER_USER_MODE > PowerUserModeSetting
Definition: zebra_camera.h:269
zebra::camera_sdk::ZebraCamera::RemoveDecodeImageEventListener
void RemoveDecodeImageEventListener(DecodeImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::RemoveSnapshotImageEventListener
void RemoveSnapshotImageEventListener(SnapshotImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::GetProperty
std::vector< uint8_t > GetProperty(Get function, uint8_t unit_or_terminal_id, uint8_t property_id)
zebra::camera_sdk::ContinuousImageEventListener
Definition: camera_types.h:161
zebra::camera_sdk::AttributeInfo
Definition: camera_types.h:191
zebra::camera_sdk::DecodeSessionStatusChangeEventListener
Definition: camera_types.h:151
zebra::camera_sdk::ZebraCamera::SetCurrentFrameType
void SetCurrentFrameType(FrameType frame_type)
zebra::camera_sdk::ZebraCamera::GetSupportedFrameTypes
std::vector< FrameType > GetSupportedFrameTypes()
zebra::camera_sdk::ZebraCamera::Gain
Property< int16_t, CameraPropertyId::GAIN > Gain
Definition: zebra_camera.h:249
zebra::camera_sdk::ZebraCamera::GetModelNumber
std::string GetModelNumber()
zebra::camera_sdk::ZebraCamera::IsPropertySupported
bool IsPropertySupported(uint8_t unit_or_terminal_id, uint8_t property_id)
zebra::camera_sdk::ZebraCamera::GetFirstServiceDate
std::string GetFirstServiceDate()
zebra::camera_sdk::ZebraCamera::WhiteBalanceComponent
PropertyAuto< WhiteBalance, CameraPropertyId::WHITE_BALANCE_COMPONENT > WhiteBalanceComponent
Definition: zebra_camera.h:241
zebra::camera_sdk::ZebraCameraManager
Definition: zebra_camera_manager.h:61
zebra::camera_sdk::DecodeImageEventListener
Definition: camera_types.h:182
zebra::camera_sdk::ZebraCamera::GetDateOfManufacture
std::string GetDateOfManufacture()
zebra::camera_sdk::ZebraCamera::GetHardwareVersion
std::string GetHardwareVersion()
zebra::camera_sdk::ZebraCamera::SetDefaults
void SetDefaults()
zebra::camera_sdk::ZebraCamera::WriteToFlash
void WriteToFlash()
zebra::camera_sdk::ZebraCamera::GetFirmwareVersion
std::string GetFirmwareVersion()
zebra::camera_sdk::ZebraCamera::RemoveContinuousImageEventListener
void RemoveContinuousImageEventListener(ContinuousImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::AddDecodeSessionStatusChangeEventListener
void AddDecodeSessionStatusChangeEventListener(DecodeSessionStatusChangeEventListener &listener)
zebra::camera_sdk::ZebraCamera::AbsoluteExposureTime
PropertyAuto< uint32_t, CameraPropertyId::EXPOSURE_TIME_ABSOLUTE > AbsoluteExposureTime
Definition: zebra_camera.h:255
zebra::camera_sdk::ZebraCamera::GetSerialNumber
std::string GetSerialNumber()
zebra::camera_sdk::ZebraCamera::CaptureSnapshot
Image CaptureSnapshot()
zebra::camera_sdk::ZebraCamera::RemoveProduceImageEventListener
void RemoveProduceImageEventListener(ProduceImageEventListener &listener)
zebra::camera_sdk::ZebraCamera::Contrast
PropertyAuto< int16_t, CameraPropertyId::CONTRAST > Contrast
Definition: zebra_camera.h:225
zebra::camera_sdk::ZebraCamera::BacklightCompensation
Property< int16_t, CameraPropertyId::BACKLIGHT_COMPENSATION > BacklightCompensation
Definition: zebra_camera.h:245
zebra::DeviceInfo
Definition: device_manager_types.h:15