Feature Request: Refactor SPI to allow alternative implementations (e.g., Software SPI)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- cpp
- Domaine
- embedded-iot
Piste de recherche
Commencez par lire ESP8266AVRISP.cpp et l’implémentation principale de SPIClass, en vous concentrant sur les appels directs à SPI.begin() et SPI.transfer(), ainsi que sur la dépendance globale à SPI. Comparez la conception SPI matérielle existante avec l’implémentation Software SPI proposée. Le travail sera considéré comme terminé lorsqu’ESP8266AVRISP pourra utiliser une implémentation SPI alternative injectée au lieu d’être liée aux broches SPI matérielles.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- C++
- Étoiles
- 16.7k
- Forks
- 13k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de esp8266/Arduino
-
Typo in Scan Class DocumentationPeut-être pris @MukundaKatta l’a pris il y a 202 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
-
[compiler Warnings]: Compile with `-Wconversion` and `-Wsign-conversion` brings up many WarningsOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
Toutes les issues de esp8266/Arduino
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
eclipse-score/lifecycle#929 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
colbymchenry/codegraph#3223 ·
Les mainteneurs répondent en général sous 1 jour