CRC
Checksum/CRC Utilities. More...
Modules |
|
Types | |
Checksum/CRC data types.
|
|
Functions |
|
gos_result_t | gos_crc_init (const gos_crc_config_t *config, gos_crc_context_t *context_ptr) |
Initialize CRC generation hardware.
More...
|
|
gos_result_t | gos_crc_deinit ( gos_crc_context_t context) |
De-initialize CRC generation hardware.
More...
|
|
gos_result_t | gos_crc_reset ( gos_crc_context_t context) |
Reset CRC hardware.
More...
|
|
gos_result_t | gos_crc_calculate ( gos_crc_context_t context, const void *buffer, uint32_t length, uint32_t *crc_ptr) |
Perform CRC calculation.
More...
|
|
gos_result_t | gos_crc_get_result ( gos_crc_context_t context, uint32_t *crc_ptr, uint32_t timeout_ms) |
Get result of CRC calculation.
More...
|
|
gos_result_t | gos_crc_direct_crc32 (const void *buffer, uint32_t length, uint32_t *crc_ptr) |
Perform a direct CRC32 calculation.
More...
|
|
Detailed Description
Checksum/CRC Utilities.
Function Documentation
◆ gos_crc_calculate()
gos_result_t gos_crc_calculate | ( | gos_crc_context_t |
context,
|
const void * |
buffer,
|
||
uint32_t |
length,
|
||
uint32_t * |
crc_ptr
|
||
) |
Perform CRC calculation.
This performs a CRC calculation on the given buffer with the previously allocated
context
.
gos_crc_init() must be called first to allocate the context.
If the
crc_ptr
argument is supplied, then this API blocks until the calculation is complete. The uint32_t buffer
crc_ptr
points to will be populated with the calculated result.
If the
crc_ptr
argument is NOT supplied (i.e. is NULL), then this API returns
GOS_PENDING
immediately and the CRC is calculated in the background using DMA. This allows the application/OS to perform other tasks while the CRC is calculated. Use
gos_crc_get_result()
to obtain the result of the background CRC calculation.
This API may be called multiple times to calculate a CRC across multiple buffers. If a background CRC is currently active, then this API will block until that background CRC completes.
Use gos_crc_reset() to reset the currently calculated CRC value. This effectively starts the CRC calculation from the beginning.
- Note
- If a background calculation is executed, then gos_crc_get_result() MUST eventually be called to release the hardware.
- Parameters
-
context
Pointer to allocated context buffer
Buffer to calculate CRC on length
Length of supplied buffer in bytes crc_ptr
Pointer to result, leave NULL to perform background calculation
- Returns
- gos_result_t result of API call, GOS_PENDING if background calculation is performed
◆ gos_crc_deinit()
gos_result_t gos_crc_deinit | ( | gos_crc_context_t |
context
|
) |
De-initialize CRC generation hardware.
- Parameters
-
context
Pointer to allocated context
- Returns
- gos_result_t result of API call
◆ gos_crc_direct_crc32()
gos_result_t gos_crc_direct_crc32 | ( | const void * |
buffer,
|
uint32_t |
length,
|
||
uint32_t * |
crc_ptr
|
||
) |
Perform a direct CRC32 calculation.
This calculates a CRC32 on the given buffer and returns the result in the supplied
crc_ptr
. This does not require an allocated context.
- Note
- This is intended for small calculations as it does NOT used DMA. For large calculations it is recommended to use gos_crc_calculate()
- Parameters
-
buffer
Buffer to calculate CRC32 on length
Length of supplied buffer in bytes crc_ptr
Pointer to hold result of calculated CRC32
- Returns
- gos_result_t result of API call
◆ gos_crc_get_result()
gos_result_t gos_crc_get_result | ( | gos_crc_context_t |
context,
|
uint32_t * |
crc_ptr,
|
||
uint32_t |
timeout_ms
|
||
) |
Get result of CRC calculation.
Get the result of the CRC calculation invoked with gos_crc_calculate()
If
gos_crc_calculate()
was invoked with a background calculation, then this blocks up to
timeout_ms
milliseconds for the calculation to complete. If
gos_crc_calculate()
was NOT invoked with a background calculation, this is immediately returns the result of the last calculation for this given context.
- Parameters
-
context
Pointer to allocated context crc_ptr
Pointer to hold calculation result timeout_ms
Time in milliseconds to wait for background calculation to complete
- Returns
- gos_result_t result of API call
◆ gos_crc_init()
gos_result_t gos_crc_init | ( | const gos_crc_config_t * |
config,
|
gos_crc_context_t * |
context_ptr
|
||
) |
Initialize CRC generation hardware.
Use gos_crc_deinit() to release the allocated buffer when it is no longer needed.
- Parameters
-
config
gos_crc_config_t Hardware configuration context_ptr
Pointer to hold allocate context, this should be used in all other CRC API calls
- Returns
- gos_result_t result of API call
◆ gos_crc_reset()
gos_result_t gos_crc_reset | ( | gos_crc_context_t |
context
|
) |
Reset CRC hardware.
This resets the currently calculated CRC value back to it initialization value specified in gos_crc_init() . This allows for calculating a new CRC with an exiting gos_crc_context_t
gos_crc_init() must be called first to allocate the context.
- Parameters
-
context
Pointer to allocated context
- Returns
- gos_result_t result of API call