mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00

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.
59 lines
2.3 KiB
C
59 lines
2.3 KiB
C
/*
|
|
* 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
|