Un wrapper SDK del dispositivo dovrebbe standardizzare le convenzioni di chiamata preservando le differenze reali tra i dispositivi. I nomi API corrispondenti non definiscono la semantica dei parametri, la proprietà del buffer o gli stati di errore. Quello che segue è un metodo di progettazione dell'adattatore, non un'affermazione secondo cui dispositivi arbitrari sono già stati integrati.
Definire prima la semantica dei parametri
| Campo | Informazioni richieste | Problema da evitare |
|---|---|---|
| Identificatore | Nome dell'applicazione, mappatura del dispositivo e modalità applicabile | Nomi identici con significati diversi |
| Tipo e unità | Unità intere, in virgola mobile, enumerazioni, booleane ed esplicite | Copia di numeri con unità incompatibili |
| Capacità di accesso | Sola lettura o scrittura, intervallo dinamico e dipendenze di stato | Scrittura di parametri che non possono cambiare durante l'acquisizione dell'immagine |
| Enumerazioni e valori predefiniti | Valori effettivi supportati e rilettura | Segnalazione delle impostazioni non supportate come riuscita |
| Condizioni di attivazione | Se è necessario arrestare, riavviare o riconnettersi | Supponendo che i frame utilizzino una nuova impostazione immediatamente dopo il ritorno della chiamata |
Fai di più che rinominare i campi. Restituisce stati identificabili per le funzioni non supportate. Definire la conversione e l'arrotondamento per le unità compatibili. Verifica la rilettura, lo stato del dispositivo e le modifiche dell'immagine in base alle funzionalità dell'SDK di destinazione.
Durata dei dati frame
Documentare se l'SDK del fornitore, l'adattatore o il chiamante alloca un buffer, per quanto tempo rimane leggibile, quando deve essere rilasciato o restituito, se è consentito l'uso multithread e se avviene la copia. Dimensioni, formato, falcata e lunghezza valida insieme descrivono i dati dell'immagine; non dare per scontato file fitte.
Non passare un puntatore di callback asincrono a un'attività downstream di lunga durata senza confermarne la durata. L'arresto dell'acquisizione delle immagini, la disconnessione e la distruzione del dispositivo richiedono anche un ordine per i frame in sospeso, i callback in coda e il rilascio delle risorse.
Stati e origini degli errori
Considerare stati separati di disconnessione, connessione, configurazione, acquisizione, arresto e guasto, con chiamate consentite e condizioni di transizione. Esprimi timeout, disconnessione, parametri non supportati, carenze di buffer ed errori di analisi separatamente. Conserva il codice di errore del fornitore e il contesto insieme al codice di errore del wrapper.
Verifica più di un esempio
Per dispositivi e versioni specifici, testare i limiti dei parametri, l'avvio e l'arresto ripetuti, i timeout dei frame, il ritorno del buffer, le chiamate simultanee e la riconnessione. Registrare il motivo per cui non è stato possibile inserire un errore o non era supportato. Fornisci documentazione API, tabelle di errori, istruzioni di creazione, esempi e record di test concordati.
Servizi correlati: SDK per dispositivi di visione E acquisizione di immagini di immagini incorporate.