O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

SPI Slave

Este módulo inclui a abstração da plataforma para comunicação do escravo SPI.

Resumo

Typedefs

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Indica que uma transação SPI foi concluída com o comprimento fornecido.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Invocado depois que um retorno de chamada de conclusão de transação é chamado e retorna TRUE para fazer qualquer processamento adicional necessário.

Funções

otPlatSpiSlaveDisable (void)
void
Desligue e desative a interface do escravo SPI.
otPlatSpiSlaveEnable (otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inicialize a interface do escravo SPI.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Prepare os dados para a próxima transação SPI.

Typedefs

otPlatSpiSlaveTransactionCompleteCallback

bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)

Indica que uma transação SPI foi concluída com o comprimento fornecido.

Os dados gravados no escravo foram gravados no ponteiro indicado pelo argumento aInputBuf para a chamada anterior de otPlatSpiSlavePrepareTransaction() .

Depois que essa função é chamada, otPlatSpiSlavePrepareTransaction() é inválido e deve ser chamado novamente para que a próxima transação seja válida.

Observe que esta função é sempre chamada no final de uma transação, mesmo se otPlatSpiSlavePrepareTransaction() ainda não tiver sido chamado. Nesses casos, aOutputBufLen e aInputBufLen serão zero.

Este retorno de chamada pode ser chamado a partir do contexto ISR. O valor de retorno desta função indica se algum processamento adicional é necessário. Se TRUE for retornado, a implementação do driver spi-slave da plataforma deve invocar o retorno de chamada do processo de transação ( aProcessCallback definido em otPlatSpiSlaveEnable() ) que, ao contrário deste retorno de chamada, deve ser chamado a partir do mesmo contexto do sistema operacional em que qualquer outra API / retorno de chamada OpenThread é chamado.

Detalhes
Parâmetros
[in] aContext
Ponteiro de contexto passado para otPlatSpiSlaveEnable() .
[in] aOutputBuf
Valor de aOutputBuf da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Valor de aOutputBufLen da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Valor de aInputBuf da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Valor de aInputBufLen da última chamada para otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Comprimento da transação concluída, em bytes.
Devoluções
TRUE se após esta chamada retornar a plataforma deve invocar o callback do processo aProcessCallback , FALSE se não houver nada para processar e não há necessidade de invocar o callback do processo.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Invocado depois que um retorno de chamada de conclusão de transação é chamado e retorna TRUE para fazer qualquer processamento adicional necessário.

Ao contrário de otPlatSpiSlaveTransactionCompleteCallback que pode ser chamado de qualquer contexto do sistema operacional (por exemplo, ISR), esse retorno de chamada DEVE ser chamado do mesmo contexto do sistema operacional que qualquer outra API / retorno de chamada OpenThread.

Detalhes
Parâmetros
[in] aContext
Ponteiro de contexto passado para otPlatSpiSlaveEnable() .

Funções

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Desligue e desative a interface do escravo SPI.

otPlatSpiSlaveEnable

otError otPlatSpiSlaveEnable(
  otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,
  otPlatSpiSlaveTransactionProcessCallback aProcessCallback,
  void *aContext
)

Inicialize a interface do escravo SPI.

Observe que o escravo SPI não está totalmente pronto até que uma transação seja preparada usando otPlatSPISlavePrepareTransaction() .

Se otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all bytes 0xFF` e descartará todos os bytes recebidos.

Detalhes
Parâmetros
[in] aCompleteCallback
Ponteiro para retorno de chamada completo da transação.
[in] aProcessCallback
Ponteiro para processar o retorno de chamada.
[in] aContext
Ponteiro de contexto a ser passado para retornos de chamada.
Valores Retornados
OT_ERROR_NONE
A interface SPI Slave foi habilitada com sucesso.
OT_ERROR_ALREADY
A interface SPI Slave já está habilitada.
OT_ERROR_FAILED
Falha ao habilitar a interface SPI Slave.

otPlatSpiSlavePrepareTransaction

otError otPlatSpiSlavePrepareTransaction(
  uint8_t *aOutputBuf,
  uint16_t aOutputBufLen,
  uint8_t *aInputBuf,
  uint16_t aInputBufLen,
  bool aRequestTransactionFlag
)

Prepare os dados para a próxima transação SPI.

Os ponteiros de dados DEVEM permanecer válidos até que o retorno de chamada completo da transação seja chamado pelo driver escravo SPI ou até depois da próxima chamada para otPlatSpiSlavePrepareTransaction() .

Esta função pode ser chamada mais de uma vez antes que o mestre SPI inicie a transação. Cada chamada bem-sucedida para esta função fará com que os valores anteriores das chamadas anteriores sejam descartados.

Não chamar essa função após uma transação concluída é o mesmo que se essa função fosse chamada anteriormente com ambos os comprimentos de buffer definidos como zero e aRequestTransactionFlag definido como false .

Uma vez que aOutputBufLen bytes de aOutputBuf foi cronometrado, o pino MISO deve ser definido alto até que o mestre termine a transação SPI. Isso é o equivalente funcional de preencher o final de aOutputBuf com bytes 0xFF até o comprimento da transação.

Depois que os bytes aInputBufLen de aInputBuf tiverem sido sincronizados a partir do MOSI, todos os valores subsequentes do pino MOSI serão ignorados até que o mestre SPI conclua a transação.

Observe que mesmo se aInputBufLen ou aOutputBufLen (ou ambos) forem esgotados antes que o mestre SPI conclua uma transação, o tamanho em andamento da transação ainda deve ser monitorado para ser passado para o retorno de chamada completo da transação. Por exemplo, se aInputBufLen for igual a 10 e aOutputBufLen igual a 20 e o mestre SPI aOutputBufLen 30 bytes, o valor 30 será passado para o retorno de chamada completo da transação.

Se um ponteiro NULL for passado como aOutputBuf ou aInputBuf isso significa que esse ponteiro de buffer não deve mudar de seu valor anterior / atual. Nesse caso, o argumento de comprimento correspondente deve ser ignorado. Por exemplo, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) altera o ponteiro do buffer de entrada e seu comprimento, mas mantém o ponteiro do buffer de saída igual ao anterior.

Qualquer chamada para esta função enquanto uma transação está em andamento fará com que todos os argumentos sejam ignorados e o valor de retorno seja OT_ERROR_BUSY .

Detalhes
Parâmetros
[in] aOutputBuf
Dados a serem gravados no pino MISO
[in] aOutputBufLen
Tamanho do buffer de saída, em bytes
[in] aInputBuf
Dados a serem lidos do pin MOSI
[in] aInputBufLen
Tamanho do buffer de entrada, em bytes
[in] aRequestTransactionFlag
Definido como verdadeiro se a interrupção do host deve ser definida
Valores Retornados
OT_ERROR_NONE
A transação foi preparada com sucesso.
OT_ERROR_BUSY
Uma transação está em andamento.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () não foi chamado.