54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
#ifndef _VNDATA_ERROR_DETECTION_H_
|
|
#define _VNDATA_ERROR_DETECTION_H_
|
|
|
|
#include <cstddef>
|
|
#include <string>
|
|
|
|
#include "int.h"
|
|
|
|
namespace vn {
|
|
namespace data {
|
|
namespace integrity {
|
|
|
|
/// \brief Helpful class for working with 8-bit checksums.
|
|
class Checksum8
|
|
{
|
|
|
|
// Public Methods /////////////////////////////////////////////////////////
|
|
|
|
public:
|
|
|
|
/// \brief Computes the 8-bit checksum of the provided data.
|
|
///
|
|
/// \param[in] data The data array to compute the 8-bit checksum for.
|
|
/// \param[in] length The length of data bytes from the array to compute
|
|
/// the checksum over.
|
|
/// \return The computed checksum.
|
|
static uint8_t compute(const char data[], size_t length);
|
|
|
|
};
|
|
|
|
/// \brief Helpful class for working with 16-bit CRCs.
|
|
class Crc16
|
|
{
|
|
|
|
// Public Methods /////////////////////////////////////////////////////////
|
|
|
|
public:
|
|
|
|
/// \brief Computes the 16-bit CRC of the provided data.
|
|
///
|
|
/// \param[in] data The data array to compute the 16-bit CRC for.
|
|
/// \param[in] length The length of data bytes from the array to compute
|
|
/// the CRC over.
|
|
/// \return The computed CRC.
|
|
static uint16_t compute(const char data[], size_t length);
|
|
|
|
};
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|