Opakowanie zestawu SDK urządzenia powinno standaryzować konwencje wywoływania, zachowując jednocześnie rzeczywiste różnice między urządzeniami. Pasujące nazwy API nie definiują semantyki parametrów, własności bufora ani stanów błędów. Poniżej przedstawiono metodę projektowania adaptera, a nie twierdzenie, że dowolne urządzenia zostały już zintegrowane.

Najpierw zdefiniuj semantykę parametrów

Pole Wymagane informacje Problem, którego należy unikać
Identyfikator Nazwa aplikacji, mapowanie urządzeń i odpowiedni tryb Identyczne nazwy o różnych znaczeniach
Typ i jednostka Liczba całkowita, zmiennoprzecinkowa, wyliczenie, jednostki logiczne i jawne Kopiowanie liczb o niezgodnych jednostkach
Możliwość dostępu Tylko do odczytu lub do zapisu, zakres dynamiczny i zależności stanu Zapisywanie parametrów, których nie można zmienić podczas przechwytywania obrazu
Wyliczenia i wartości domyślne Rzeczywiste obsługiwane wartości i odczyt Zgłoszenie nieobsługiwanych ustawień zakończyło się pomyślnie
Warunki aktywacji Czy wymagane jest zatrzymanie, ponowne uruchomienie lub ponowne podłączenie Zakładając, że ramki korzystają z nowego ustawienia natychmiast po powrocie połączenia

Zrób coś więcej niż zmianę nazw pól. Zwraca możliwe do zidentyfikowania stany dla nieobsługiwanych funkcji. Zdefiniuj konwersję i zaokrąglanie dla zgodnych jednostek. Sprawdź odczyt, stan urządzenia i zmiany obrazu zgodnie z możliwościami docelowego zestawu SDK.

Żywotność danych ramki

Udokumentuj, czy dostawca SDK, adapter lub obiekt wywołujący przydziela bufor, jak długo pozostaje on czytelny, kiedy należy go zwolnić lub zwrócić, czy dozwolone jest użycie międzywątkowe i czy występuje kopiowanie. Wymiary, format, krok w rzędzie i prawidłowa długość razem opisują dane obrazu; nie zakładaj ciasno upakowanych rzędów.

Nie przekazuj asynchronicznego wskaźnika wywołania zwrotnego do długotrwałego zadania podrzędnego bez potwierdzenia jego istnienia. Zatrzymywanie przechwytywania obrazu, odłączanie i niszczenie urządzeń również wymagają zamówienia zaległych ramek, wywołań zwrotnych w kolejce i zwolnienia zasobów.

Stany i źródła błędów

Rozważ oddzielne stany: rozłączony, podłączony, skonfigurowany, pozyskiwania, zatrzymania i awarii, z dozwolonymi wywołaniami i warunkami przejścia. Ekspresowe przekroczenia limitu czasu, rozłączenie, nieobsługiwane parametry, braki bufora i błędy analizowania osobno. Zachowaj kod błędu dostawcy i kontekst obok kodu błędu opakowania.

Sprawdź więcej niż przykład

Dla określonych urządzeń i wersji, granice parametrów testowych, wielokrotne uruchamianie i zatrzymywanie, przekroczenie limitu czasu ramki, powrót bufora, równoczesne wywołania i ponowne połączenie. Zapisz, dlaczego nie można było wstrzyknąć błędu lub był on nieobsługiwany. Dostarcz dokumentację API, tabele błędów, instrukcje kompilacji, przykłady i uzgodnione zapisy testów.

Powiązane usługi: SDK urządzeń wizyjnych I osadzony obraz przechwytywania obrazu.