mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-27 10:24:04 +00:00
feat(driver): BitScrambler support
This adds an assembler for the BitScrambler assembly language, plus unit tests for it. It also adds the loopback driver, which can do BitScrambler operations on memory-to-memory transfers. Documentation is also included.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "driver/bitscrambler.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Create handle for BitScrambler in loopback mode
|
||||
*
|
||||
* @note Use bitscrambler_free to free created handle.
|
||||
*
|
||||
* @param[out] handle BitScrambler handle
|
||||
* @param attach_to Peripheral to attach to. One of SOC_BITSCRAMBLER_ATTACH_. The BitScrambler
|
||||
* must be attached to some peripheral, even in loopback mode. This peripheral does not
|
||||
* need to be initialized for the BitScrambler to work. However, it can be initialized
|
||||
* and will work as normal, with the exception that DMA functionality for this peripheral
|
||||
* cannot be used.
|
||||
* @param max_transfer_sz_bytes Maximum transfer size, in bytes, of either the incoming or outgoing data
|
||||
* fed to bitscrambler_loopback_run.
|
||||
*
|
||||
* @returns
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_NO_MEM: No memory available
|
||||
* - ESP_ERR_NOT_FOUND: No free hardware channel available
|
||||
* - ESP_ERR_INVALID_ARG: Invalid argument passed to function
|
||||
* - ESP_FAIL: Bitscrambler object creation failed because of some other error
|
||||
*/
|
||||
esp_err_t bitscrambler_loopback_create(bitscrambler_handle_t *handle, int attach_to, size_t max_transfer_sz_bytes);
|
||||
|
||||
/**
|
||||
* @brief Run Bitscrambler program on a data buffer
|
||||
*
|
||||
* @param bs BitScrambler handle. This BitScrambler should have a program loaded using
|
||||
* bitscrambler_load_program()
|
||||
* @param buffer_in Data to feed into the BitScrambler
|
||||
* @param length_bytes_in Size of the data in buffer_in, in bytes
|
||||
* @param buffer_out Buffer for BitScrambler to write processed data to
|
||||
* @param length_bytes_out Size of output buffer
|
||||
* @param[out] bytes_written Pointer to variable to store the size of actual data written
|
||||
* to output buffer. Can be NULL if not needed.
|
||||
*
|
||||
* @returns
|
||||
* - ESP_OK
|
||||
* - ESP_ERR_INVALID_SIZE if a buffer size exceeds max_transfer_sz_bytes
|
||||
* - ESP_ERR_TIMEOUT if BitScrambler program does not complete
|
||||
*/
|
||||
esp_err_t bitscrambler_loopback_run(bitscrambler_handle_t bs, void *buffer_in, size_t length_bytes_in, void *buffer_out, size_t length_bytes_out, size_t *bytes_written);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user