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 de escravos 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 especificado.
otPlatSpiSlaveTransactionProcessCallback)(void *aContext) typedef
void(*
Invocado após um callback completo de transação ser chamado e retorna TRUE para fazer qualquer outro processamento necessário.

Functions

otPlatSpiSlaveDisable(void)
void
Encerra e desativa a interface de SPI slave.
otPlatSpiSlaveEnable(otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inicialize a interface de 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 do 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 especificado.

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

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

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

Esse callback pode ser chamado no contexto do ISR. O valor de retorno dessa função indica se algum processamento adicional é necessário. Se TRUE for retornado, a implementação do driver escravo spi-pa da plataforma precisará invocar o callback do processo de transações (aProcessCallback definido em otPlatSpiSlaveEnable()), que, diferentemente desse callback, precisa ser chamado no mesmo contexto do SO que qualquer outro callback/API OpenThread seja chamado.

Detalhes
Parâmetros
[in] aContext
Ponteiro do contexto transmitido 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
Duração da transação concluída, em bytes.
Retorna
TRUE se, depois dessa chamada de retorno, a plataforma invocar o callback do processo aProcessCallback, FALSE se não houver nada para processar e não for necessário invocar o callback do processo.

OtPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Invocado após um callback completo de transação ser chamado e retorna TRUE para fazer qualquer outro processamento necessário.

Ao contrário de otPlatSpiSlaveTransactionCompleteCallback, que pode ser chamado em qualquer contexto do SO (por exemplo, ISR), esse callback PRECISA ser chamado a partir do mesmo contexto de SO que qualquer outra API/callback do OpenThread.

Detalhes
Parâmetros
[in] aContext
Ponteiro do contexto transmitido para otPlatSpiSlaveEnable().

Functions

OtPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Encerra e desativa a interface de SPI slave.

OtPlatSpiSlaveEnable

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

Inicialize a interface de escravo SPI.

O escravo SPI não estará 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 all0xFF` e descartar todos os bytes recebidos.

Detalhes
Parâmetros
[in] aCompleteCallback
Callback completo do ponteiro para a transação.
[in] aProcessCallback
Ponteiro para processar retorno de chamada.
[in] aContext
Ponteiro do contexto a ser transmitido para callbacks.
Valores de retorno
OT_ERROR_NONE
A interface SPI Slave foi ativada.
OT_ERROR_ALREADY
A interface SPI Slave já está ativada.
OT_ERROR_FAILED
Falha ao ativar a interface do 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 do SPI.

Os ponteiros de dados PRECISAM permanecer válidos até que o callback de transação concluído seja chamado pelo driver escravo do SPI ou até a próxima chamada para otPlatSpiSlavePrepareTransaction().

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

Não chamar essa função após uma transação concluída é como se ela tivesse sido chamada anteriormente com os comprimentos do buffer definidos como zero e aRequestTransactionFlag definido como false.

Depois que os aOutputBufLen bytes de aOutputBuf forem esgotados, o pino MISO será definido como alto até que o mestre termine a transação do SPI. Esse é o equivalente funcional do preenchimento do fim de aOutputBuf com 0xFF bytes até a duração da transação.

Depois que aInputBufLen bytes de aInputBuf forem transferidos do relógio de MOSI, todos os valores subsequentes do pino MOSI serão ignorados até que o mestre do SPI conclua a transação.

Observe que, mesmo que aInputBufLen ou aOutputBufLen (ou ambos) se esgotem antes que o mestre da SPI conclua uma transação, o tamanho contínuo da transação ainda precisa ser rastreado para ser transmitido para o retorno de chamada completo da transação. Por exemplo, se aInputBufLen for igual a 10 e aOutputBufLen for igual a 20 e o mestre do SPI registrar um tempo limite de 30 bytes, o valor 30 será transmitido para a chamada de retorno de transação concluída.

Se um ponteiro de NULL for transmitido como aOutputBuf ou aInputBuf, isso significa que esse ponteiro de buffer não mudará do valor anterior/atual. Nesse caso, o argumento de tamanho correspondente precisa 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 como antes.

Qualquer chamada para essa função enquanto uma transação estiver 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 alfinete MISO
[in] aOutputBufLen
Tamanho do buffer de saída, em bytes
[in] aInputBuf
Dados a serem lidos no alfinete MOSI
[in] aInputBufLen
Tamanho do buffer de entrada, em bytes
[in] aRequestTransactionFlag
Definir como "true" se a interrupção do host precisar ser definida
Valores de retorno
OT_ERROR_NONE
A transação foi preparada.
OT_ERROR_BUSY
Uma transação está em andamento.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable() não foi chamado.

Recursos

Os tópicos de referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para saber mais ou contribuir com nossa documentação, consulte Recursos.