Estou procurando abstrações em C ++ para pontos ou pinos de E / S de hardware. Coisas como in_pin, out_pin, inout_pin, talvez open_collector_pin, etc.
Certamente eu mesmo posso criar esse conjunto de abstrações, então não estou procurando o tipo de respostas 'ei, você pode fazer desta maneira', mas sim o 'olhar para esta biblioteca que foi usada neste e este projeto'.
O Google não apareceu nada, talvez porque não sei como os outros chamariam isso.
Meu objetivo é criar bibliotecas de E / S baseadas nesses pontos, mas também fornecê-los, por isso seria fácil, por exemplo, conectar um HD44780 LCd aos pinos de E / S do chip ou a um I2C (ou SPI) Extensor de E / S ou qualquer outro ponto que possa ser controlado de alguma forma, sem nenhuma alteração na classe do LCD.
Eu sei que isso está no limite da eletrônica / software, desculpe se ele não pertence aqui.
@leon: fiação Esse é um grande pacote de software, vou precisar olhar mais de perto. Mas parece que eles não usam uma abstração de pinos como eu quero. Por exemplo, na implementação do teclado, vejo
digitalWrite(columnPins[c], LOW); // Activate the current column.
Isso implica que há uma função (digitalWrite) que sabe gravar em um pino de E / S. Isso torna impossível adicionar um novo tipo de pino de E / S (por exemplo, um que esteja em um MCP23017, portanto ele deve ser gravado via I2C) sem reescrever a função digitalWrite.
@Oli: pesquisei no Google um exemplo de IO do Arduino, mas eles parecem usar a mesma abordagem da biblioteca Wiring:
int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}