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.