Gestione degli errori per HID tramite SPI
Questo articolo illustra le procedure di rilevamento e gestione degli errori per HID su SPI. Gli errori nel bus SPI sono suddivisi nelle categorie seguenti:
- Errori del protocollo
- Errori di timeout
Errori del protocollo
Gli errori del protocollo sono ulteriormente caratterizzati nelle classificazioni seguenti:
- Errori di pacchetti brevi
- Errori a livello di bit
Errori di pacchetti brevi
Si verificano errori di pacchetto brevi quando l'host o il dispositivo non restituisce il numero di bit identificati nel campo richiesta e lunghezza del protocollo HID SPI. L'host è previsto un orologio nel numero specificato di bit. L'host non ha modo di sapere se il dispositivo ha interrotto l'invio di dati poiché l'host leggerà qualsiasi cosa accada sul bus. L'host deve controllare i campi di sincronizzazione e altri campi per verificare se i dati sono ragionevoli. Il comportamento host per i dati imprevisti o i dati non validi consiste nell'avviare una reimpostazione del dispositivo.
Errori a livello di bit
Gli errori a livello di bit possono verificarsi nel bus SPI. Questi errori sono in genere un risultato di rumore sul bus o l'interferenza da altri autobus nel sistema. Questa specifica non supporta CRC o altro meccanismo di rilevamento per gli errori a livello di bit nella riga di dati SPI.
È possibile che il parser host identifichi un report non valido e lo elimini. È responsabilità dello stack di driver HID host proteggere da un report non conforme al descrittore del report. Il comportamento host per i dati imprevisti consiste nell'avviare una reimpostazione del dispositivo.
Errori di timeout
Il protocollo HID su SPI è sequenziale con l'aspettativa che il dispositivo deve rispondere alle richieste host in modo tempestivo. Nella maggior parte dei casi, le risposte dal dispositivo all'host sono complete in pochi millisecondi. Nel caso in cui il dispositivo sia bloccato e non sia in grado di ripristinare se stesso, si verifica un ritardo di timeout forzato dopo il quale l'host può reimpostare il dispositivo e riavviare le operazioni.
TIMEOUT_HostInitiatedReset = 1 second
Gli host possono consentire ai metodi proprietari di modificare il valore di questo timeout per i dispositivi specifici, ma è obbligatorio per l'host supportare un valore di timeout.
Reimpostazione avviata dall'host
L'host può reimpostare il dispositivo per ristabilire la comunicazione con il dispositivo quando viene rilevato un errore. Questo meccanismo è destinato al ripristino degli errori e deve essere in risposta a un evento eccezionale, ad esempio la riattivazione della comunicazione con un dispositivo esposto a una scarica ESD.