Szukam abstrakcji C ++ dla sprzętowych punktów We / Wy lub pinów. Rzeczy takie jak in_pin, out_pin, inout_pin, może open_collector_pin itp.
Z pewnością mogę wymyślić taki zestaw abstrakcji, więc nie szukam odpowiedzi typu „hej, możesz to zrobić w ten sposób”, ale raczej „spójrz na tę bibliotekę, która została użyta w tym i tamtym oraz ten projekt'.
Google niczego nie wykrył, może dlatego, że nie wiem, jak nazywaliby to inni.
Moim celem jest zbudowanie bibliotek we / wy, które są oparte na takich punktach, ale także zapewniają takie punkty, więc łatwo byłoby na przykład podłączyć HD44780 LCd do styków we / wy układu lub do I2C (lub SPI) Wzmacniacz I / O lub dowolny inny punkt, którym można jakoś sterować, bez żadnych zmian w klasie LCD.
Wiem, że jest to na granicy elektroniki / oprogramowania, przepraszam, jeśli tu nie należy.
@leon: wiring To jest duży pakiet oprogramowania, muszę się bliżej przyjrzeć. Wygląda jednak na to, że nie używają abstrakcji w taki sposób, jak chcę. Na przykład w implementacji klawiatury widzę
digitalWrite(columnPins[c], LOW); // Activate the current column.
Oznacza to, że istnieje jedna funkcja (digitalWrite), która wie, jak pisać na pinie we / wy. Uniemożliwia to dodanie nowego typu styku we / wy (na przykład takiego, który jest na MCP23017, więc musi być zapisany przez I2C) bez przepisywania funkcji digitalWrite.
@Oli: przejrzałem przykład Arduino IO, ale wydaje się, że używam tego samego podejścia co biblioteka Wiring:
int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}