test test test
snake-test/mbed/hal/crc_api.h@0:e4c5e6ec922e, 2020-05-25 (annotated)
- Committer:
- mohamedmoawya
- Date:
- Mon May 25 19:06:11 2020 +0000
- Revision:
- 0:e4c5e6ec922e
snake game tteest
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mohamedmoawya | 0:e4c5e6ec922e | 1 | /** \addtogroup hal */ |
mohamedmoawya | 0:e4c5e6ec922e | 2 | /** @{*/ |
mohamedmoawya | 0:e4c5e6ec922e | 3 | /* mbed Microcontroller Library |
mohamedmoawya | 0:e4c5e6ec922e | 4 | * Copyright (c) 2018 ARM Limited |
mohamedmoawya | 0:e4c5e6ec922e | 5 | * |
mohamedmoawya | 0:e4c5e6ec922e | 6 | * Licensed under the Apache License, Version 2.0 (the "License"); |
mohamedmoawya | 0:e4c5e6ec922e | 7 | * you may not use this file except in compliance with the License. |
mohamedmoawya | 0:e4c5e6ec922e | 8 | * You may obtain a copy of the License at |
mohamedmoawya | 0:e4c5e6ec922e | 9 | * |
mohamedmoawya | 0:e4c5e6ec922e | 10 | * http://www.apache.org/licenses/LICENSE-2.0 |
mohamedmoawya | 0:e4c5e6ec922e | 11 | * |
mohamedmoawya | 0:e4c5e6ec922e | 12 | * Unless required by applicable law or agreed to in writing, software |
mohamedmoawya | 0:e4c5e6ec922e | 13 | * distributed under the License is distributed on an "AS IS" BASIS, |
mohamedmoawya | 0:e4c5e6ec922e | 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
mohamedmoawya | 0:e4c5e6ec922e | 15 | * See the License for the specific language governing permissions and |
mohamedmoawya | 0:e4c5e6ec922e | 16 | * limitations under the License. |
mohamedmoawya | 0:e4c5e6ec922e | 17 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 18 | #ifndef MBED_CRC_HAL_API_H |
mohamedmoawya | 0:e4c5e6ec922e | 19 | #define MBED_CRC_HAL_API_H |
mohamedmoawya | 0:e4c5e6ec922e | 20 | |
mohamedmoawya | 0:e4c5e6ec922e | 21 | #include <stdbool.h> |
mohamedmoawya | 0:e4c5e6ec922e | 22 | #include <stddef.h> |
mohamedmoawya | 0:e4c5e6ec922e | 23 | #include <stdint.h> |
mohamedmoawya | 0:e4c5e6ec922e | 24 | |
mohamedmoawya | 0:e4c5e6ec922e | 25 | /** CRC Polynomial value |
mohamedmoawya | 0:e4c5e6ec922e | 26 | * |
mohamedmoawya | 0:e4c5e6ec922e | 27 | * Different polynomial values supported |
mohamedmoawya | 0:e4c5e6ec922e | 28 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 29 | typedef enum crc_polynomial { |
mohamedmoawya | 0:e4c5e6ec922e | 30 | POLY_OTHER = 0, |
mohamedmoawya | 0:e4c5e6ec922e | 31 | POLY_8BIT_CCITT = 0x07, // x8+x2+x+1 |
mohamedmoawya | 0:e4c5e6ec922e | 32 | POLY_7BIT_SD = 0x9, // x7+x3+1; |
mohamedmoawya | 0:e4c5e6ec922e | 33 | POLY_16BIT_CCITT = 0x1021, // x16+x12+x5+1 |
mohamedmoawya | 0:e4c5e6ec922e | 34 | POLY_16BIT_IBM = 0x8005, // x16+x15+x2+1 |
mohamedmoawya | 0:e4c5e6ec922e | 35 | POLY_32BIT_ANSI = 0x04C11DB7, // x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 |
mohamedmoawya | 0:e4c5e6ec922e | 36 | POLY_32BIT_REV_ANSI = 0xEDB88320 |
mohamedmoawya | 0:e4c5e6ec922e | 37 | } crc_polynomial_t; |
mohamedmoawya | 0:e4c5e6ec922e | 38 | |
mohamedmoawya | 0:e4c5e6ec922e | 39 | typedef struct crc_mbed_config { |
mohamedmoawya | 0:e4c5e6ec922e | 40 | /** CRC Polynomial. Example polynomial: 0x21 = 0010_0011 = x^5+x+1 */ |
mohamedmoawya | 0:e4c5e6ec922e | 41 | uint32_t polynomial; |
mohamedmoawya | 0:e4c5e6ec922e | 42 | /** CRC Bit Width */ |
mohamedmoawya | 0:e4c5e6ec922e | 43 | uint32_t width; |
mohamedmoawya | 0:e4c5e6ec922e | 44 | /** Initial seed value for the computation. */ |
mohamedmoawya | 0:e4c5e6ec922e | 45 | uint32_t initial_xor; |
mohamedmoawya | 0:e4c5e6ec922e | 46 | /** Final xor value for the computation. */ |
mohamedmoawya | 0:e4c5e6ec922e | 47 | uint32_t final_xor; |
mohamedmoawya | 0:e4c5e6ec922e | 48 | /** Reflect bits on input. */ |
mohamedmoawya | 0:e4c5e6ec922e | 49 | bool reflect_in; |
mohamedmoawya | 0:e4c5e6ec922e | 50 | /** Reflect bits in final result before returning. */ |
mohamedmoawya | 0:e4c5e6ec922e | 51 | bool reflect_out; |
mohamedmoawya | 0:e4c5e6ec922e | 52 | } crc_mbed_config_t; |
mohamedmoawya | 0:e4c5e6ec922e | 53 | |
mohamedmoawya | 0:e4c5e6ec922e | 54 | #ifdef DEVICE_CRC |
mohamedmoawya | 0:e4c5e6ec922e | 55 | |
mohamedmoawya | 0:e4c5e6ec922e | 56 | #ifdef __cplusplus |
mohamedmoawya | 0:e4c5e6ec922e | 57 | extern "C" { |
mohamedmoawya | 0:e4c5e6ec922e | 58 | #endif |
mohamedmoawya | 0:e4c5e6ec922e | 59 | |
mohamedmoawya | 0:e4c5e6ec922e | 60 | /** |
mohamedmoawya | 0:e4c5e6ec922e | 61 | * \defgroup hal_crc Hardware CRC |
mohamedmoawya | 0:e4c5e6ec922e | 62 | * |
mohamedmoawya | 0:e4c5e6ec922e | 63 | * The Hardware CRC HAL API provides a low-level interface to the Hardware CRC |
mohamedmoawya | 0:e4c5e6ec922e | 64 | * module of a target platform. |
mohamedmoawya | 0:e4c5e6ec922e | 65 | * |
mohamedmoawya | 0:e4c5e6ec922e | 66 | * # Defined behaviour |
mohamedmoawya | 0:e4c5e6ec922e | 67 | * |
mohamedmoawya | 0:e4c5e6ec922e | 68 | * * Function hal_crc_is_supported() returns true if platform supports hardware |
mohamedmoawya | 0:e4c5e6ec922e | 69 | * CRC for the given polynomial/width - verified by test ::crc_is_supported_test. |
mohamedmoawya | 0:e4c5e6ec922e | 70 | * * Function hal_crc_is_supported() returns false if platform does not support hardware |
mohamedmoawya | 0:e4c5e6ec922e | 71 | * CRC for the given polynomial/width - verified by test ::crc_is_supported_test. |
mohamedmoawya | 0:e4c5e6ec922e | 72 | * * Function hal_crc_is_supported() returns false if given pointer to configuration |
mohamedmoawya | 0:e4c5e6ec922e | 73 | * structure is undefined (NULL) - verified by test ::crc_is_supported_invalid_param_test. |
mohamedmoawya | 0:e4c5e6ec922e | 74 | * * If CRC module does not support one of the following settings: initial_xor, final_xor |
mohamedmoawya | 0:e4c5e6ec922e | 75 | * reflect_in, reflect_out, then these operations should be handled by the driver |
mohamedmoawya | 0:e4c5e6ec922e | 76 | * - Verified by test ::crc_calc_single_test. |
mohamedmoawya | 0:e4c5e6ec922e | 77 | * * Platform which supports hardware CRC must be able to handle at least one of the predefined |
mohamedmoawya | 0:e4c5e6ec922e | 78 | * polynomial/width configurations that can be constructed in the MbedCRC class: POLY_8BIT_CCITT, |
mohamedmoawya | 0:e4c5e6ec922e | 79 | * POLY_7BIT_SD, POLY_16BIT_CCITT, POLY_16BIT_IBM, POLY_32BIT_ANSI |
mohamedmoawya | 0:e4c5e6ec922e | 80 | * - verified by test ::crc_is_supported_test, ::crc_calc_single_test. |
mohamedmoawya | 0:e4c5e6ec922e | 81 | * * Function hal_crc_compute_partial_start() configures CRC module with the given configuration |
mohamedmoawya | 0:e4c5e6ec922e | 82 | * - Verified by test ::crc_calc_single_test. |
mohamedmoawya | 0:e4c5e6ec922e | 83 | * * Calling hal_crc_compute_partial_start() without finalising the |
mohamedmoawya | 0:e4c5e6ec922e | 84 | * CRC calculation overrides the current configuration - Verified by test ::crc_reconfigure_test. |
mohamedmoawya | 0:e4c5e6ec922e | 85 | * * Function hal_crc_compute_partial() writes data to the CRC module - verified by test ::crc_calc_single_test. |
mohamedmoawya | 0:e4c5e6ec922e | 86 | * * Function hal_crc_compute_partial() can be call multiple times in succession in order to |
mohamedmoawya | 0:e4c5e6ec922e | 87 | * provide additional data to CRC module - verified by test ::crc_calc_multi_test. |
mohamedmoawya | 0:e4c5e6ec922e | 88 | * * Function hal_crc_compute_partial() does nothing if pointer to buffer is undefined or |
mohamedmoawya | 0:e4c5e6ec922e | 89 | * data length is equal to 0 - verified by test ::crc_compute_partial_invalid_param_test. |
mohamedmoawya | 0:e4c5e6ec922e | 90 | * * Function hal_crc_get_result() returns the checksum result from the CRC module |
mohamedmoawya | 0:e4c5e6ec922e | 91 | * - verified by tests ::crc_calc_single_test, ::crc_calc_multi_test, ::crc_reconfigure_test. |
mohamedmoawya | 0:e4c5e6ec922e | 92 | * |
mohamedmoawya | 0:e4c5e6ec922e | 93 | * # Undefined behaviour |
mohamedmoawya | 0:e4c5e6ec922e | 94 | * |
mohamedmoawya | 0:e4c5e6ec922e | 95 | * * Calling hal_crc_compute_partial_start() function with invalid (unsupported) polynomial. |
mohamedmoawya | 0:e4c5e6ec922e | 96 | * * Calling hal_crc_compute_partial() or hal_crc_get_result() functions before hal_crc_compute_partial_start(). |
mohamedmoawya | 0:e4c5e6ec922e | 97 | * * Calling hal_crc_get_result() function multiple times. |
mohamedmoawya | 0:e4c5e6ec922e | 98 | * |
mohamedmoawya | 0:e4c5e6ec922e | 99 | * # Non-functional requirements |
mohamedmoawya | 0:e4c5e6ec922e | 100 | * |
mohamedmoawya | 0:e4c5e6ec922e | 101 | * * CRC configuration provides the following settings: |
mohamedmoawya | 0:e4c5e6ec922e | 102 | * * polynomial - CRC Polynomial, |
mohamedmoawya | 0:e4c5e6ec922e | 103 | * * width - CRC bit width, |
mohamedmoawya | 0:e4c5e6ec922e | 104 | * * initial_xor - seed value for the computation, |
mohamedmoawya | 0:e4c5e6ec922e | 105 | * * final_xor - final xor value for the computation, |
mohamedmoawya | 0:e4c5e6ec922e | 106 | * * reflect_in - reflect bits on input, |
mohamedmoawya | 0:e4c5e6ec922e | 107 | * * reflect_out - reflect bits in final result before returning. |
mohamedmoawya | 0:e4c5e6ec922e | 108 | * |
mohamedmoawya | 0:e4c5e6ec922e | 109 | * # Potential bugs |
mohamedmoawya | 0:e4c5e6ec922e | 110 | * |
mohamedmoawya | 0:e4c5e6ec922e | 111 | * @{ |
mohamedmoawya | 0:e4c5e6ec922e | 112 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 113 | |
mohamedmoawya | 0:e4c5e6ec922e | 114 | /** |
mohamedmoawya | 0:e4c5e6ec922e | 115 | * \defgroup hal_crc_tests crc hal tests |
mohamedmoawya | 0:e4c5e6ec922e | 116 | * The crc HAL tests ensure driver conformance to defined behaviour. |
mohamedmoawya | 0:e4c5e6ec922e | 117 | * |
mohamedmoawya | 0:e4c5e6ec922e | 118 | * To run the crc hal tests use the command: |
mohamedmoawya | 0:e4c5e6ec922e | 119 | * |
mohamedmoawya | 0:e4c5e6ec922e | 120 | * mbed test -t <toolchain> -m <target> -n tests-mbed_hal-crc* |
mohamedmoawya | 0:e4c5e6ec922e | 121 | * |
mohamedmoawya | 0:e4c5e6ec922e | 122 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 123 | |
mohamedmoawya | 0:e4c5e6ec922e | 124 | /** Determine if the current platform supports hardware CRC for given polynomial |
mohamedmoawya | 0:e4c5e6ec922e | 125 | * |
mohamedmoawya | 0:e4c5e6ec922e | 126 | * The purpose of this function is to inform the CRC Platform API whether the |
mohamedmoawya | 0:e4c5e6ec922e | 127 | * current platform has a hardware CRC module and that it can support the |
mohamedmoawya | 0:e4c5e6ec922e | 128 | * requested polynomial. |
mohamedmoawya | 0:e4c5e6ec922e | 129 | * |
mohamedmoawya | 0:e4c5e6ec922e | 130 | * Supported polynomials are restricted to the named polynomials that can be |
mohamedmoawya | 0:e4c5e6ec922e | 131 | * constructed in the MbedCRC class, POLY_8BIT_CCITT, POLY_7BIT_SD, |
mohamedmoawya | 0:e4c5e6ec922e | 132 | * POLY_16BIT_CCITT, POLY_16BIT_IBM and POLY_32BIT_ANSI. |
mohamedmoawya | 0:e4c5e6ec922e | 133 | * |
mohamedmoawya | 0:e4c5e6ec922e | 134 | * The current platform must support the given polynomials default parameters |
mohamedmoawya | 0:e4c5e6ec922e | 135 | * in order to return a true response. These include: reflect in, reflect out, |
mohamedmoawya | 0:e4c5e6ec922e | 136 | * initial xor and final xor. For example, POLY_32BIT_ANSI requires an initial |
mohamedmoawya | 0:e4c5e6ec922e | 137 | * and final xor of 0xFFFFFFFF, and reflection of both input and output. If any |
mohamedmoawya | 0:e4c5e6ec922e | 138 | * of these settings cannot be configured, the polynomial is not supported. |
mohamedmoawya | 0:e4c5e6ec922e | 139 | * |
mohamedmoawya | 0:e4c5e6ec922e | 140 | * This function is thread safe; it safe to call from multiple contexts if |
mohamedmoawya | 0:e4c5e6ec922e | 141 | * required. |
mohamedmoawya | 0:e4c5e6ec922e | 142 | * |
mohamedmoawya | 0:e4c5e6ec922e | 143 | * \param config Contains CRC configuration parameters for initializing the |
mohamedmoawya | 0:e4c5e6ec922e | 144 | * hardware CRC module. For example, polynomial and initial seed |
mohamedmoawya | 0:e4c5e6ec922e | 145 | * values. |
mohamedmoawya | 0:e4c5e6ec922e | 146 | * |
mohamedmoawya | 0:e4c5e6ec922e | 147 | * \return True if running if the polynomial is supported, false if not. |
mohamedmoawya | 0:e4c5e6ec922e | 148 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 149 | bool hal_crc_is_supported(const crc_mbed_config_t *config); |
mohamedmoawya | 0:e4c5e6ec922e | 150 | |
mohamedmoawya | 0:e4c5e6ec922e | 151 | /** Initialize the hardware CRC module with the given polynomial |
mohamedmoawya | 0:e4c5e6ec922e | 152 | * |
mohamedmoawya | 0:e4c5e6ec922e | 153 | * After calling this function, the CRC HAL module is ready to receive data |
mohamedmoawya | 0:e4c5e6ec922e | 154 | * using the hal_crc_compute_partial() function. The CRC module on the board |
mohamedmoawya | 0:e4c5e6ec922e | 155 | * is configured internally with the specified configuration and is ready |
mohamedmoawya | 0:e4c5e6ec922e | 156 | * to receive data. |
mohamedmoawya | 0:e4c5e6ec922e | 157 | * |
mohamedmoawya | 0:e4c5e6ec922e | 158 | * The platform configures itself based on the default configuration |
mohamedmoawya | 0:e4c5e6ec922e | 159 | * parameters of the input polynomial. |
mohamedmoawya | 0:e4c5e6ec922e | 160 | * |
mohamedmoawya | 0:e4c5e6ec922e | 161 | * This function must be called before calling hal_crc_compute_partial(). |
mohamedmoawya | 0:e4c5e6ec922e | 162 | * |
mohamedmoawya | 0:e4c5e6ec922e | 163 | * This function must be called with a valid polynomial supported by the |
mohamedmoawya | 0:e4c5e6ec922e | 164 | * platform. The polynomial must be checked for support using the |
mohamedmoawya | 0:e4c5e6ec922e | 165 | * hal_crc_is_supported() function. |
mohamedmoawya | 0:e4c5e6ec922e | 166 | * |
mohamedmoawya | 0:e4c5e6ec922e | 167 | * Calling hal_crc_compute_partial_start() multiple times without finalizing the |
mohamedmoawya | 0:e4c5e6ec922e | 168 | * CRC calculation with hal_crc_get_result() overrides the current |
mohamedmoawya | 0:e4c5e6ec922e | 169 | * configuration and state, and the intermediate result of the computation is |
mohamedmoawya | 0:e4c5e6ec922e | 170 | * lost. |
mohamedmoawya | 0:e4c5e6ec922e | 171 | * |
mohamedmoawya | 0:e4c5e6ec922e | 172 | * This function is not thread safe. A CRC calculation must not be started from |
mohamedmoawya | 0:e4c5e6ec922e | 173 | * two different threads or contexts at the same time; calling this function |
mohamedmoawya | 0:e4c5e6ec922e | 174 | * from two different contexts may lead to configurations being overwritten and |
mohamedmoawya | 0:e4c5e6ec922e | 175 | * results being lost. |
mohamedmoawya | 0:e4c5e6ec922e | 176 | * |
mohamedmoawya | 0:e4c5e6ec922e | 177 | * \param config Contains CRC configuration parameters for initializing the |
mohamedmoawya | 0:e4c5e6ec922e | 178 | * hardware CRC module. For example, polynomial and initial seed |
mohamedmoawya | 0:e4c5e6ec922e | 179 | * values. |
mohamedmoawya | 0:e4c5e6ec922e | 180 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 181 | void hal_crc_compute_partial_start(const crc_mbed_config_t *config); |
mohamedmoawya | 0:e4c5e6ec922e | 182 | |
mohamedmoawya | 0:e4c5e6ec922e | 183 | /** Writes data to the current CRC module. |
mohamedmoawya | 0:e4c5e6ec922e | 184 | * |
mohamedmoawya | 0:e4c5e6ec922e | 185 | * Writes input data buffer bytes to the CRC data register. The CRC module |
mohamedmoawya | 0:e4c5e6ec922e | 186 | * must interpret the data as an array of bytes. |
mohamedmoawya | 0:e4c5e6ec922e | 187 | * |
mohamedmoawya | 0:e4c5e6ec922e | 188 | * The final transformations are not applied to the data; the CRC module must |
mohamedmoawya | 0:e4c5e6ec922e | 189 | * retain the intermediate result so that additional calls to this function |
mohamedmoawya | 0:e4c5e6ec922e | 190 | * can be made, appending the additional data to the calculation. |
mohamedmoawya | 0:e4c5e6ec922e | 191 | * |
mohamedmoawya | 0:e4c5e6ec922e | 192 | * To obtain the final result of the CRC calculation, hal_crc_get_result() is |
mohamedmoawya | 0:e4c5e6ec922e | 193 | * called to apply the final transformations to the data. |
mohamedmoawya | 0:e4c5e6ec922e | 194 | * |
mohamedmoawya | 0:e4c5e6ec922e | 195 | * If the function is passed an undefined pointer, or the size of the buffer is |
mohamedmoawya | 0:e4c5e6ec922e | 196 | * specified to be 0, this function does nothing and returns. |
mohamedmoawya | 0:e4c5e6ec922e | 197 | * |
mohamedmoawya | 0:e4c5e6ec922e | 198 | * This function can be called multiple times in succession. This can be used |
mohamedmoawya | 0:e4c5e6ec922e | 199 | * to calculate the CRC result of streamed data. |
mohamedmoawya | 0:e4c5e6ec922e | 200 | * |
mohamedmoawya | 0:e4c5e6ec922e | 201 | * This function is not thread safe. There is only one instance of the CRC |
mohamedmoawya | 0:e4c5e6ec922e | 202 | * module active at a time. Calling this function from multiple contexts |
mohamedmoawya | 0:e4c5e6ec922e | 203 | * appends different data to the same, single instance of the module, which causes an |
mohamedmoawya | 0:e4c5e6ec922e | 204 | * erroneous value to be calculated. |
mohamedmoawya | 0:e4c5e6ec922e | 205 | * |
mohamedmoawya | 0:e4c5e6ec922e | 206 | * \param data Input data stream to be written into the CRC calculation |
mohamedmoawya | 0:e4c5e6ec922e | 207 | * \param size Size of the data stream in bytes |
mohamedmoawya | 0:e4c5e6ec922e | 208 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 209 | void hal_crc_compute_partial(const uint8_t *data, const size_t size); |
mohamedmoawya | 0:e4c5e6ec922e | 210 | |
mohamedmoawya | 0:e4c5e6ec922e | 211 | /* Reads the checksum result from the CRC module. |
mohamedmoawya | 0:e4c5e6ec922e | 212 | * |
mohamedmoawya | 0:e4c5e6ec922e | 213 | * Reads the final checksum result for the final checksum value. The returned |
mohamedmoawya | 0:e4c5e6ec922e | 214 | * value is cast as an unsigned 32-bit integer. The actual size of the returned |
mohamedmoawya | 0:e4c5e6ec922e | 215 | * result depends on the polynomial used to configure the CRC module. |
mohamedmoawya | 0:e4c5e6ec922e | 216 | * |
mohamedmoawya | 0:e4c5e6ec922e | 217 | * Additional transformations that are used in the default configuration of the |
mohamedmoawya | 0:e4c5e6ec922e | 218 | * input polynomial are applied to the result before it is returned from this |
mohamedmoawya | 0:e4c5e6ec922e | 219 | * function. These transformations include: the final xor being appended to the |
mohamedmoawya | 0:e4c5e6ec922e | 220 | * calculation, and the result being reflected if required. |
mohamedmoawya | 0:e4c5e6ec922e | 221 | * |
mohamedmoawya | 0:e4c5e6ec922e | 222 | * Calling this function multiple times is undefined. The first call to this |
mohamedmoawya | 0:e4c5e6ec922e | 223 | * function returns the final result of the CRC calculation. The return |
mohamedmoawya | 0:e4c5e6ec922e | 224 | * value on successive calls is undefined because the contents of the register after |
mohamedmoawya | 0:e4c5e6ec922e | 225 | * accessing them is platform-specific. |
mohamedmoawya | 0:e4c5e6ec922e | 226 | * |
mohamedmoawya | 0:e4c5e6ec922e | 227 | * This function is not thread safe. There is only one instance of the CRC |
mohamedmoawya | 0:e4c5e6ec922e | 228 | * module active at a time. Calling this function from multiple contexts may |
mohamedmoawya | 0:e4c5e6ec922e | 229 | * return incorrect data or affect the current state of the module. |
mohamedmoawya | 0:e4c5e6ec922e | 230 | * |
mohamedmoawya | 0:e4c5e6ec922e | 231 | * \return The final CRC checksum after the reflections and final calculations |
mohamedmoawya | 0:e4c5e6ec922e | 232 | * have been applied. |
mohamedmoawya | 0:e4c5e6ec922e | 233 | */ |
mohamedmoawya | 0:e4c5e6ec922e | 234 | uint32_t hal_crc_get_result(void); |
mohamedmoawya | 0:e4c5e6ec922e | 235 | |
mohamedmoawya | 0:e4c5e6ec922e | 236 | /**@}*/ |
mohamedmoawya | 0:e4c5e6ec922e | 237 | |
mohamedmoawya | 0:e4c5e6ec922e | 238 | #ifdef __cplusplus |
mohamedmoawya | 0:e4c5e6ec922e | 239 | }; |
mohamedmoawya | 0:e4c5e6ec922e | 240 | #endif |
mohamedmoawya | 0:e4c5e6ec922e | 241 | |
mohamedmoawya | 0:e4c5e6ec922e | 242 | #endif // DEVICE_CRC |
mohamedmoawya | 0:e4c5e6ec922e | 243 | #endif // MBED_CRC_HAL_API_H |
mohamedmoawya | 0:e4c5e6ec922e | 244 | |
mohamedmoawya | 0:e4c5e6ec922e | 245 | /**@}*/ |