arduino / arduino/ArduinoCore-API

SPI API add void transfer(const void *tx_buffer, void *rx_buffer, size_t count);

Ouverte
#243 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.