Sto scrivendo un pezzo di software in python che comunicherà con un gruppo di dispositivi tramite un bus I2C. Ognuno di questi dispositivi avrà bisogno di una sorta di modulo o classe per gestire la comunicazione e la conversione dei dati in modo ragionevole. Le operazioni eseguite da ciascuno dei moduli del dispositivo sono drasticamente diverse.
La mia preoccupazione principale è il controllo del bus I2C. Temo che condividendo il bus, ad esempio avendo ciascuno dei moduli dispositivo istanziare un nuovo oggetto di controllo bus I2C si ottenga un codice che è difficile da seguire e non sono sicuro di come questi oggetti potrebbero comunicare se c'è un interrupt nel bus . Tuttavia, non condividendolo, temo che finirò con una enorme classe di controllo che è difficile da mantenere ed estendere.
Se mi avvicino alla classe di controllo, ognuno dei moduli del dispositivo dovrebbe contenere una mappa di operazioni, come OrderedDict
o un elenco di tuple di funzioni con valori o intervalli di risultati previsti. L'oggetto di controllo I2C potrebbe quindi iterare quel dizionario, scrivere e leggere i risultati dal bus e passare alla funzione successiva se il risultato è nell'intervallo previsto. Sembra un progetto di macchina statale, ma non sono sicuro di poter davvero generalizzare tutte le operazioni.
Suppongo che la mia domanda si riduce a qualcuno ha un buon suggerimento per un modello di progettazione ?