Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Feature Request: Refactor SPI to allow alternative implementations (e.g., Software SPI)

Abierto
#9,293 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
embedded-iot

Línea de trabajo

Comienza leyendo ESP8266AVRISP.cpp y la implementación principal de SPIClass, centrándote en las llamadas directas a SPI.begin() y SPI.transfer(), así como en la dependencia global de SPI. Compara el diseño existente de hardware SPI con la implementación propuesta de Software SPI. Se considerará completado cuando ESP8266AVRISP pueda usar una implementación alternativa de SPI inyectada en lugar de estar vinculada a los pines de hardware SPI.

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

Descripción

The problem

Currently, the core SPIClass is a concrete implementation tied directly to the hardware SPI peripheral (HSPI).

Libraries included in this repository, such as ESP8266AVRISP, are hard-coded to use the global SPI instance. For example, ESP8266AVRISP.cpp directly calls SPI.begin() and SPI.transfer().

This creates a problem: it's impossible to use ESP8266AVRISP (or other similarly-coded libraries) if the hardware SPI pins (GPIO 12, 13, 14) are already in use by another device. It also prevents the use of a "bit-bang" (software) SPI implementation on arbitrary pins.

My goal is to add a Software SPI implementation and be able to use it with the ESP8266AVRISP library.

Proposed solution

I propose refactoring the SPI ecosystem to allow for "Dependency Injection," where a library (like ESP8266AVRISP) accepts an SPI implementation in its constructor instead of being hard-coded to the global SPI object.

My contribution

I have working solution with modified ESP8266AVRISP which use software SPI implementation I made. I can make PR if this propose is accepted

Lenguaje dominante
C++
Estrellas
16.7k
Forks
13.1k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de esp8266/Arduino

Todos los issues de esp8266/Arduino

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.