Costrutti per il wrapping di una macchina a stati dell'hardware

2

Sto utilizzando un componente hardware con un'API C ben definita. L'hardware è di stato, con le chiamate API pertinenti che devono essere nell'ordine corretto affinché l'hardware funzioni correttamente. Le chiamate API stesse ritorneranno sempre, restituendo un flag che avvisa se la chiamata ha avuto successo o, in caso contrario, perché no. L'hardware non verrà lasciato in uno stato non definito. In effetti, l'API chiama in modo indiretto lo stato corrente dell'hardware se lo stato non è corretto per eseguire una determinata operazione. Sembra essere uno stile abbastanza comune dell'API dell'hardware.

La mia domanda è questa: esiste un modello di progettazione ben definito per il wrapping di una macchina di stato hardware in un linguaggio di alto livello, tale da mantenere la coerenza?

Il mio sviluppo è in Python. Preferisco idealmente che la macchina dello stato dell'hardware sia astratta a una macchina a stati molto più semplice e racchiusa in un oggetto che rappresenta l'hardware. Non sono sicuro di cosa dovrebbe accadere se si tenta di creare più oggetti che rappresentano lo stesso pezzo di hardware.

Mi scuso per la leggera vaghezza, non sono molto ben informato in questo settore e quindi sto anche cercando assistenza per la descrizione!

    
posta Henry Gomersall 09.07.2012 - 00:17
fonte

2 risposte

1

Quindi, in realtà, si desidera solo un wrapper orientato agli oggetti attorno a un'API C ed è ancora possibile che un altro oggetto che utilizza questo oggetto chiami i suoi metodi in modo inappropriato? Molti linguaggi OO incluso Python (sebbene io non ne sia un esperto) supportano il concetto di eccezioni per questo. Prendi in considerazione qualcosa come lanciare InvalidStateException se il codice client chiama un metodo non valido nello stato corrente.

Se si desidera impedire più istanze di questo oggetto, è possibile implementare il modello di progettazione Singleton.

    
risposta data 09.07.2012 - 05:47
fonte
0

Cosa c'è che non va semplicemente tenendo traccia dello stato in int ? Quindi, su ogni chiamata dell'API, controlli se l'operazione è consentita nello stato corrente, anche se questo può diventare noioso se ci sono decine o più stati.

Se senti davvero la necessità di seguire tutti gli schemi del design, forse il Pattern di stato ti interesserebbe.

    
risposta data 09.07.2012 - 01:16
fonte

Leggi altre domande sui tag