Conexão e inicialização do hardware
É necessário estabelecer uma conexão com a unidade de aceleração de hardware por meio de XDspConnect. O chamador define os requisitos da conexão usando os seguintes parâmetros:-
baseBuffer - Um ponteiro para a memória alocada pelo usuário, suficiente para armazenar os buffers de entrada, de saída e/ou de multiplicador de bloco que serão passados ao hardware. Essa memória deve ser alocada por meio de XMemAlloc com estes atributos: XALLOC_MEMTYPE_PHYSICAL_CACHEABLE, XALLOC_PAGESIZE_64KB, XALLOC_ALIGNMENT_64K. Esses atributos devem ser definidos usando
MAKE_XALLOC_ATTRIBUTES(), conforme mostrado no exemplo abaixo. Essa memória não deve ser liberada até que a chamada de XDspDisconnect seja bem-sucedida. Esse buffer deve ter pelo menos 64KB de tamanho. - baseBufferLength - O comprimento do baseBuffer em bytes. Esse buffer deve ter pelo menos 64KB.
- aggregateImpulseResponseInSeconds - Representa a duração total de todas as respostas ao impulso individuais que serão ativadas simultaneamente usando XDspActivate com XDspProcessType::Convolution. Se esse valor for 0, nenhum fluxo com XDspProcessType::Convolution poderá ser ativado.
- handle - um ponteiro para o XDspClientHandle que armazenará o identificador retornado por esta chamada.
Ativação e desativação de fluxos
Depois que a conexão com o dispositivo for estabelecida, o chamador deverá enviar um comando de ativação de fluxo para iniciar uma convolução, FFT ou IFFT. O chamador deve especificar o XDspProcessType, a contagem de quadros do bloco, a contagem de canais, o comprimento da resposta ao impulso em floats e um ponteiro para os dados da resposta ao impulso no domínio da frequência em XDspActivationParameters. Somente fluxos mono ou estéreo são permitidos. Para XDspProcessType::ForwardFourierTransform e XDspProcessType::inverseFourierTransform, XDspActivationParameters::impulseResponse deve ser nullptr e XDspActivationParameters::impulseResponseLengthInFloats = 0. XDspActivationOptions deve ser definido adequadamente. Veja a seguir o código para ativar um fluxo para a Forward Fourier Transform; o código é semelhante para a Inverse Fourier Transform.- Preencha o buffer de entrada com exatamente blockFrameCount de dados.
- Preencha o XDspCommand com os valores apropriados e com buffers de entrada e saída alinhados em 16 bytes.
- Chame XDspSubmitCommand para enviar o comando ao hardware. Essa função retorna um número de sequência de comando que pode ser usado para acompanhar o número de comandos enviados ao hardware.
