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.