17 #include <sys/types.h> 21 #define HILO(x) (x##_hi << 8 | x##_lo) 22 #define HILOHILO(x) (x##_hi_hi << 24 | x##_hi_lo << 16 | x##_lo_hi << 8 | x##_lo_lo) 23 #define BCD_TIME_TO_SECONDS(x) ((3600 * ((10*((x##_h & 0xF0)>>4)) + (x##_h & 0xF))) + \ 24 (60 * ((10*((x##_m & 0xF0)>>4)) + (x##_m & 0xF))) + \ 25 ((10*((x##_s & 0xF0)>>4)) + (x##_s & 0xF))) 41 void assign(
const unsigned char*data,
int size,
bool doCopy=
true);
72 virtual void assign(
const unsigned char*data,
int size) = 0;
76 {
return u_int16_t((data[index] << 8) | data[index+1]); }
78 {
return u_int32_t((data[index] << 24) | (data[index+1] << 16) | (data[index+2] << 8) | data[index+3]); }
110 virtual void assign(
const unsigned char*data,
int size);
117 virtual void assign(
const unsigned char*data,
int size);
134 virtual void Parse() = 0;
141 time_t
getTime(
unsigned char date_hi,
unsigned char date_lo,
unsigned char timehr,
unsigned char timemi,
unsigned char timese);
142 time_t
getDuration(
unsigned char timehr,
unsigned char timemi,
unsigned char timese);
143 inline unsigned char bcdToDec(
unsigned char b) {
return (
unsigned char)(((b >> 4) & 0x0F) * 10 + (b & 0x0F)); }
149 CRC32(
const char *d,
int len, u_int32_t CRCvalue=0xFFFFFFFF);
151 static bool isValid(
const char *d,
int len, u_int32_t CRCvalue=0xFFFFFFFF) {
return crc32(d, len, CRCvalue) == 0; }
152 static u_int32_t crc32(
const char *d,
int len, u_int32_t CRCvalue);
154 static u_int32_t crc_table[256];
u_int32_t FourBytes(const int index) const
time_t getTime(unsigned char date_hi, unsigned char date_lo, unsigned char timehr, unsigned char timemi, unsigned char timese)
const T * getData(int offset) const
CharArray & operator=(const CharArray &source)
static bool isValid(const char *d, int len, u_int32_t CRCvalue=0xFFFFFFFF)
time_t getDuration(unsigned char timehr, unsigned char timemi, unsigned char timese)
void setPointerAndOffset(const T *&p, int &offset) const
bool operator==(const char *string) const
void assign(const unsigned char *data, int size, bool doCopy=true)
CharArray operator+(const int offset) const
unsigned char operator[](const int index) const
unsigned char bcdToDec(unsigned char b)
bool checkSize(int offset)
u_int16_t TwoBytes(const int index) const
const T * getData() const
const unsigned char * data
const unsigned char * getData(int offset) const
void addOffset(int offset)
u_int32_t FourBytes(const int index) const
u_int16_t TwoBytes(const int index) const
const unsigned char * getData() const
virtual void assign(const unsigned char *data, int size)=0