msi_plessey.hpp
1 #pragma once
2 
3 #include "reader_common_1d_config_base.hpp"
4 
5 namespace Cvb
6 {
7  CVB_BEGIN_INLINE_NS
8 
9  namespace Barcode
10  {
11  using namespace Internal;
12 
13 
15 
18  {
19  public:
20 
22 
28  {
29  if(checkDigit_ != checkDigit)
30  SetDirty();
31  checkDigit_ = checkDigit;
32  }
33 
35 
41  {
42  return checkDigit_;
43  }
44 
45 
46  protected:
47  MsiPlesseyCheckDigit checkDigit_;
48 
49  public:
50  virtual Symbology Type() const override { return Symbology::MsiPlessey; }
51 
53 
59  static std::unique_ptr<MsiPlessey> FromHandle(const HandleGuard<ReaderConfig>& guard, bool& isActiveOut)
60  {
61  auto pConfig = std::unique_ptr<MsiPlessey>(new MsiPlessey());
62  isActiveOut = pConfig->ReadFromHandle(guard);
63  return pConfig;
64  }
65 
66  protected:
67  virtual bool ReadFromHandle_(const HandleGuard<ReaderConfig>& guard) override
68  {
69  CExports::cvbbool_t active;
70  short tmpCheckDigit;
71  CVB_CALL_CAPI(CvcBcGetMSIPlessey(reinterpret_cast<std::intptr_t>(guard.Handle()),
72  &active,
73  &minDigits_,
74  &maxDigits_,
75  checkQuietzone_.Ptr(),
76  &tmpCheckDigit,
77  transmitCheckDigit_.Ptr(),
78  inverse_.Ptr()
79  ));
80  checkDigit_ = static_cast<MsiPlesseyCheckDigit>(tmpCheckDigit);
81  return SmartBool(active);
82  }
83 
84  virtual void WriteToHandle_(bool active, HandleGuard<ReaderConfig>& guard) override
85  {
86  Internal::DoResCall([&]()
87  {
88  return CVB_CALL_CAPI(CvcBcSetMSIPlessey(reinterpret_cast<std::intptr_t>(guard.Handle()),
89  SmartBool(active),
90  minDigits_,
91  maxDigits_,
92  checkQuietzone_,
93  static_cast<short>(checkDigit_),
94  transmitCheckDigit_,
95  inverse_
96  ));
97  });
98  }
99  protected:
100  MsiPlessey()
101  : ReaderCommon1DConfigBase()
102  {
103  }
104 
105  };
106 
107  using MsiPlesseyPtr = std::shared_ptr<MsiPlessey>;
108  }
109 
110  CVB_END_INLINE_NS
111 }
STL class.
Symbology
The symbologies supported by Barcode.
Definition: barcode.hpp:96
MsiPlesseyCheckDigit
Available check digits for MSI Plessey codes.
Definition: barcode.hpp:163
static std::unique_ptr< MsiPlessey > FromHandle(const HandleGuard< ReaderConfig > &guard, bool &isActiveOut)
Create object from handle.
Definition: msi_plessey.hpp:59
Root namespace for the Image Manager interface.
Definition: version.hpp:11
MsiPlesseyCheckDigit CheckDigit() const
Returns whether to evaluate/ignore check digit.
Definition: msi_plessey.hpp:40
Configuration to access parameters of MsiPlessey.
Definition: msi_plessey.hpp:17
STL class.
Configuration to access parameters of ReaderCommon1DConfigBase.
Definition: reader_common_1d_config_base.hpp:18
virtual Symbology Type() const override
Symbology of configuration object.
Definition: msi_plessey.hpp:50
void SetCheckDigit(MsiPlesseyCheckDigit checkDigit)
Evaluate/ignore check digit.
Definition: msi_plessey.hpp:27