arduino / arduino/ArduinoCore-API

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

Abierto
#243 0 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
C++
Estrellas
306
Forks
150
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

### 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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con api/HardwareSPI.h, en la declaración existente de transferencia con un solo búfer, y después lee la discusión enlazada para conocer el alcance previsto de la SPI API. Rastrea las implementaciones de la API y las rutas de verificación afectadas antes de cambiar la interfaz. Se considera terminado cuando la firma de transferencia virtual con dos búferes es compatible de forma coherente sin la solución alternativa del búfer temporal.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp
Área
api, embedded-iot
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.