blob: aa02e041c1c30bdea91ab142c9dad178311d8d91 [file] [log] [blame]
Piotr Krysik9e2e8352018-02-27 12:16:25 +01001/*
2 * crc64gen.h
3 *
4 * Copyright (C) 2011 Sylvain Munaut <tnt@246tNt.com>
5 *
6 * All Rights Reserved
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23#pragma once
24
25/*! \addtogroup crcgen
26 * @{
27 */
28
29/*! \file crc64gen.h
30 * Osmocom generic CRC routines (for max 64 bits poly) header
31 */
32
33
34#include <stdint.h>
35#include <osmocom/core/bits.h>
36
37
38/*! \brief structure describing a given CRC code of max 64 bits */
39struct osmo_crc64gen_code {
40 int bits; /*!< \brief Actual number of bits of the CRC */
41 uint64_t poly; /*!< \brief Polynom (normal representation, MSB omitted */
42 uint64_t init; /*!< \brief Initialization value of the CRC state */
43 uint64_t remainder; /*!< \brief Remainder of the CRC (final XOR) */
44};
45
46uint64_t osmo_crc64gen_compute_bits(const struct osmo_crc64gen_code *code,
47 const ubit_t *in, int len);
48int osmo_crc64gen_check_bits(const struct osmo_crc64gen_code *code,
49 const ubit_t *in, int len, const ubit_t *crc_bits);
50void osmo_crc64gen_set_bits(const struct osmo_crc64gen_code *code,
51 const ubit_t *in, int len, ubit_t *crc_bits);
52
53
54/*! @} */
55
56/* vim: set syntax=c: */