arduino / arduino/ArduinoCore-API
SPI API add void transfer(const void *tx_buffer, void *rx_buffer, size_t count);
- Langage dominant
- C++
- Étoiles
- 306
- Forks
- 150
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### API component
SPI API
### Description
SPI API add
```
virtual void transfer(const void *tx_buffer, void *rx_buffer, size_t count);
```
[Expand SPI API and Functionality for High Speed Devices](https://github.com/arduino/ArduinoCore-API/discussions/189)
### Is this a breaking change?
Unlikely
### Additional information
This is really a missing API method, it doesn't make sense to have only a single buffer for both transmit and receive, as DMA hardware normally works in 2 buffers.
The plain old
https://github.com/arduino/ArduinoCore-API/blob/master/api/HardwareSPI.h#L112
```
virtual void transfer(void *buf, size_t count) = 0;
```
forces hacks such as:
- allocate a temporary buffer
- do the DMA transfers receiving into the temporary buffer
- copy that temporary buffer data back into the address pointed by *buf*
wasting both memory and cpu cycles
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par api/HardwareSPI.h, au niveau de la déclaration existante du transfert avec un seul tampon, puis lisez la discussion liée pour comprendre la portée prévue de la SPI API. Suivez les implémentations de l’API et les chemins de vérification concernés avant de modifier l’interface. C’est terminé lorsque la signature de transfert virtuelle avec deux tampons est prise en charge de manière cohérente, sans le contournement par tampon temporaire.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- api, embedded-iot
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100