LibLogicalAccess  2.5.0
An Open Source RFID Library
Loading...
Searching...
No Matches
format.hpp
Go to the documentation of this file.
1
7#ifndef LOGICALACCESS_FORMAT_HPP
8#define LOGICALACCESS_FORMAT_HPP
9
10#include <memory>
11#include <boost/utility.hpp>
12
16
18
20#include <list>
21
22namespace logicalaccess
23{
27typedef enum {
28 FT_UNKNOWN = 0x00,
35 FT_ASCII = 0x08,
42 FT_CUSTOM = 0x10,
43 FT_RAW = 0xFF
45
46bool LLA_CORE_API FieldSortPredicate(const std::shared_ptr<DataField> &lhs,
47 const std::shared_ptr<DataField> &rhs);
48
52class LLA_CORE_API Format : public XmlSerializable
53{
54 public:
60 Format();
61
65 Format(const Format &other) = delete; // non construction-copyable
66 Format &operator=(const Format &) = delete; // non copyable
67
68 virtual ~Format() = default;
69
74 virtual unsigned int getDataLength() const = 0;
75
80 virtual std::string getName() const = 0;
81
87 virtual ByteVector getLinearData() const = 0;
88
94 virtual void setLinearData(const ByteVector &data) = 0;
95
101 virtual size_t getSkeletonLinearData(ByteVector &data) const = 0;
102
108 virtual void setSkeletonLinearData(const ByteVector &data) = 0;
109
114 virtual FormatType getType() const = 0;
115
121 static std::shared_ptr<Format> getByFormatType(FormatType type);
122
127 virtual std::vector<std::string> getValuesFieldList() const;
128
134 virtual unsigned int getFieldLength(const std::string &field) const;
135
141 virtual bool checkSkeleton(std::shared_ptr<Format> format) const = 0;
142
152 static unsigned char calculateParity(const BitsetStream &data, ParityType parityType,
153 std::vector<unsigned int> positions);
154
159 virtual ByteVector getIdentifier();
160
165 virtual std::vector<std::shared_ptr<DataField>> getFieldList();
166
171 virtual void setFieldList(std::vector<std::shared_ptr<DataField>> fields);
172
176 std::shared_ptr<DataField> getFieldFromName(std::string field) const;
177
178 bool isRepeatable() const;
179
180 void setRepeatable(bool v);
181
182 protected:
186 std::list<std::shared_ptr<DataField>> d_fieldList;
187
193};
194}
195
196#endif /* LOGICALACCESS_FORMAT_HPP */
Definition: BitsetStream.hpp:15
A format.
Definition: format.hpp:53
virtual void setLinearData(const ByteVector &data)=0
Set linear data.
virtual void setSkeletonLinearData(const ByteVector &data)=0
Set skeleton linear data.
virtual FormatType getType() const =0
Get the format type.
virtual size_t getSkeletonLinearData(ByteVector &data) const =0
Get skeleton linear data.
bool is_repeatable_
Definition: format.hpp:192
Format & operator=(const Format &)=delete
std::list< std::shared_ptr< DataField > > d_fieldList
The field list.
Definition: format.hpp:186
virtual ByteVector getLinearData() const =0
Get linear data.
Format(const Format &other)=delete
Remove copy.
virtual unsigned int getDataLength() const =0
Get data length in bits.
virtual ~Format()=default
virtual bool checkSkeleton(std::shared_ptr< Format > format) const =0
Check the current format skeleton with another format.
virtual std::string getName() const =0
Get the format name.
A Xml Serializable base class. Add Xml serialization to a class.
Definition: xmlserializable.hpp:54
Data field.
Data type.
std::vector< uint8_t > ByteVector
Definition: lla_fwd.hpp:80
Logging header.
Definition: asn1.hpp:9
FormatType
Format type.
Definition: format.hpp:27
@ FT_ASCII
Definition: format.hpp:35
@ FT_DATACLOCK
Definition: format.hpp:37
@ FT_WIEGANDFLEXIBLE
Definition: format.hpp:34
@ FT_CUSTOM
Definition: format.hpp:42
@ FT_WIEGAND26
Definition: format.hpp:29
@ FT_HIDHONEYWELL
Definition: format.hpp:39
@ FT_WIEGAND37FACILITY
Definition: format.hpp:33
@ FT_FASCN200BIT
Definition: format.hpp:38
@ FT_WIEGAND34
Definition: format.hpp:30
@ FT_GETRONIK40BIT
Definition: format.hpp:40
@ FT_BARIUM_FERRITE_PCSC
Definition: format.hpp:41
@ FT_WIEGAND34FACILITY
Definition: format.hpp:31
@ FT_WIEGAND37
Definition: format.hpp:32
@ FT_WIEGAND35
Definition: format.hpp:36
@ FT_RAW
Definition: format.hpp:43
@ FT_UNKNOWN
Definition: format.hpp:28
bool LLA_CORE_API FieldSortPredicate(const std::shared_ptr< DataField > &lhs, const std::shared_ptr< DataField > &rhs)
Definition: format.cpp:38
ParityType
Parity type.
Definition: datatype.hpp:19