Zebra Bioptic Color Camera SDK For Linux  1.0.0-17
All Classes Functions Variables Enumerations Enumerator
zebra_camera_client_concrete.h
1 #ifndef ZEBRA_CAMERA_CLIENT_CONCRETE_H_
2 #define ZEBRA_CAMERA_CLIENT_CONCRETE_H_
3 
4 #include <mutex>
5 #include <map>
6 
7 #include "zebra_camera_client.h"
8 #include "zebra_camera_messenger.h"
9 
10 namespace zebra {
11 namespace camera_sdk {
12 
13 /*
14  * Zebra Camera Client.
15  */
17 {
19 public:
20  /*
21  * @param camera_id Specify camera id.
22  */
23  ZebraCameraClientConcrete(int camera_id);
24  virtual ~ZebraCameraClientConcrete();
25 
26  /*
27  * Overrides.
28  */
29  void SetProperty(Set function, uint8_t unit_or_terminal_id, uint8_t property_id, std::vector<uint8_t> value) override;
30  std::vector<uint8_t> GetProperty(Get function, uint8_t unit_or_terminal_id, uint8_t property_id) override;
31 
32  AttributeInfo GetPropertyInfo(uint8_t unit_or_terminal_id, uint8_t property_id) override;
33  bool IsPropertySupported(uint8_t unit_or_terminal_id, uint8_t property_id) override;
34 
35  bool IsAutoSupported(uint8_t unit_or_terminal_id, uint8_t property_id) override;
36  bool IsAutoEnabled(uint8_t unit_or_terminal_id, uint8_t property_id) override;
37  void AutoEnable(bool enable, uint8_t unit_or_terminal_id, uint8_t property_id) override;
38 
39  std::string GetSerialNumber() override;
40  std::string GetModelNumber() override;
41  std::string GetDateOfManufacture() override;
42  std::string GetDateOfFirstProgram() override;
43  std::string GetFirstServiceDate() override;
44  std::string GetFirmwareVersion() override;
45  std::string GetHardwareVersion() override;
46 
47  std::vector<FrameType> GetSupportedFrameTypes() override;
49  void SetCurrentFrameType(FrameType frame_type) override;
50 
53 
56 
59 
62 
65 
66  void SetDefaults() override;
67  void WriteToFlash() override;
68  Image CaptureSnapshot() override;
69 
70  /*
71  * @brief Helper to re-establish publisher-subscriber connection with the new camera_id.
72  * @param new_camera_id New camera_id returned by a successful reboot or a firmware install.
73  */
74  void UpdateCameraAfterRebootOrInstallFirmware(int new_camera_id);
75 
76 private:
77  /*
78  * @brief Helper method to make a property get operation.
79  * @param property_id Property id.
80  * @return Property value.
81  * @throw An exception in any failure.
82  */
83  std::string GetProperty(int property_id);
84 
85  /*
86  * Image event callbacks.
87  */
88  void OnContinuousImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
89  void OnSnapshotImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
90  void OnProduceImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
91  void OnDecodeImageEvent(ImageEventData image_data, ImageEventMetaData meta_data);
92 
93  void OnDecodeSessionStatusChanged(DecodeSessionStatus status);
94 
95 private:
99  int camera_id_;
100 
101  ZebraCameraMessenger messenger_;
102 
103  std::mutex image_event_listeners_mutex_;
104  std::vector<std::reference_wrapper<ContinuousImageEventListener>> continuous_image_listeners_;
105  std::vector<std::reference_wrapper<SnapshotImageEventListener>> snapshot_image_listeners_;
106  std::vector<std::reference_wrapper<ProduceImageEventListener>> produce_image_listeners_;
107  std::vector<std::reference_wrapper<DecodeImageEventListener>> decode_image_listeners_;
108 
109  std::mutex session_status_event_listeners_mutex_;
110  std::vector<std::reference_wrapper<DecodeSessionStatusChangeEventListener>> decode_session_status_change_listeners_;
111 
112 };
113 
114 } /* namespace camera_sdk */
115 } /* namespace zebra */
116 
117 #endif /* ZEBRA_CAMERA_CLIENT_CONCRETE_H_ */
zebra::camera_sdk::ProduceImageEventListener
Definition: camera_types.h:175
zebra::camera_sdk::ZebraCameraManagerClientConcrete
Definition: zebra_camera_manager_client_concrete.h:16
zebra::camera_sdk::ZebraCameraClient
Definition: zebra_camera_client.h:15
zebra::camera_sdk::ImageEventData
Definition: camera_types.h:35
zebra::camera_sdk::ZebraCameraClientConcrete::AddDecodeImageEventListener
void AddDecodeImageEventListener(DecodeImageEventListener &listener) override
zebra::camera_sdk::Image
Definition: camera_types.h:64
zebra::camera_sdk::FrameType
Definition: camera_types.h:43
zebra::camera_sdk::ZebraCameraClientConcrete::SetProperty
void SetProperty(Set function, uint8_t unit_or_terminal_id, uint8_t property_id, std::vector< uint8_t > value) override
zebra::camera_sdk::ZebraCameraClientConcrete::AddDecodeSessionStatusChangeEventListener
void AddDecodeSessionStatusChangeEventListener(DecodeSessionStatusChangeEventListener &listener) override
zebra::camera_sdk::ImageEventMetaData
Definition: camera_types.h:53
zebra::camera_sdk::ZebraCameraClientConcrete::RemoveContinuousImageEventListener
void RemoveContinuousImageEventListener(ContinuousImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::CaptureSnapshot
Image CaptureSnapshot() override
zebra::camera_sdk::ZebraCameraClientConcrete::AddContinuousImageEventListener
void AddContinuousImageEventListener(ContinuousImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetDateOfFirstProgram
std::string GetDateOfFirstProgram() override
zebra::camera_sdk::SnapshotImageEventListener
Definition: camera_types.h:168
zebra::camera_sdk::ZebraCameraClientConcrete
Definition: zebra_camera_client_concrete.h:17
zebra::camera_sdk::ZebraCameraClientConcrete::WriteToFlash
void WriteToFlash() override
zebra::camera_sdk::ZebraCameraClientConcrete::SetDefaults
void SetDefaults() override
zebra::camera_sdk::ZebraCameraClientConcrete::SetCurrentFrameType
void SetCurrentFrameType(FrameType frame_type) override
zebra::camera_sdk::ZebraCameraClientConcrete::AddSnapshotImageEventListener
void AddSnapshotImageEventListener(SnapshotImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetSupportedFrameTypes
std::vector< FrameType > GetSupportedFrameTypes() override
zebra::camera_sdk::ZebraCameraClientConcrete::RemoveSnapshotImageEventListener
void RemoveSnapshotImageEventListener(SnapshotImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::AddProduceImageEventListener
void AddProduceImageEventListener(ProduceImageEventListener &listener) override
zebra::camera_sdk::ContinuousImageEventListener
Definition: camera_types.h:161
zebra::camera_sdk::ZebraCameraClientConcrete::RemoveDecodeSessionStatusChangeEventListener
void RemoveDecodeSessionStatusChangeEventListener(DecodeSessionStatusChangeEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetProperty
std::vector< uint8_t > GetProperty(Get function, uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::AttributeInfo
Definition: camera_types.h:191
zebra::camera_sdk::DecodeSessionStatusChangeEventListener
Definition: camera_types.h:151
zebra::camera_sdk::ZebraCameraClientConcrete::GetFirmwareVersion
std::string GetFirmwareVersion() override
zebra::camera_sdk::ZebraCameraClientConcrete::RemoveDecodeImageEventListener
void RemoveDecodeImageEventListener(DecodeImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::IsAutoEnabled
bool IsAutoEnabled(uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::DecodeImageEventListener
Definition: camera_types.h:182
zebra::camera_sdk::ZebraCameraClientConcrete::GetModelNumber
std::string GetModelNumber() override
zebra::camera_sdk::ZebraCameraClientConcrete::IsPropertySupported
bool IsPropertySupported(uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetSerialNumber
std::string GetSerialNumber() override
zebra::camera_sdk::ZebraCameraClientConcrete::IsAutoSupported
bool IsAutoSupported(uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetPropertyInfo
AttributeInfo GetPropertyInfo(uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::ZebraCameraClientConcrete::RemoveProduceImageEventListener
void RemoveProduceImageEventListener(ProduceImageEventListener &listener) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetDateOfManufacture
std::string GetDateOfManufacture() override
zebra::camera_sdk::ZebraCameraClientConcrete::AutoEnable
void AutoEnable(bool enable, uint8_t unit_or_terminal_id, uint8_t property_id) override
zebra::camera_sdk::ZebraCameraClientConcrete::GetHardwareVersion
std::string GetHardwareVersion() override
zebra::camera_sdk::ZebraCameraClientConcrete::GetFirstServiceDate
std::string GetFirstServiceDate() override
zebra::camera_sdk::ZebraCameraClientConcrete::GetCurrentFrameType
FrameType GetCurrentFrameType() override