Een SDK-wrapper voor apparaten moet de oproepconventies standaardiseren en tegelijkertijd de echte verschillen tussen apparaten behouden. Overeenkomende API-namen definiëren geen parametersemantiek, buffereigendom of foutstatussen. Het volgende is een adapterontwerpmethode, en geen claim dat willekeurige apparaten al zijn geïntegreerd.
Definieer eerst de parametersemantiek
| Veld | Vereiste informatie | Probleem om te vermijden |
|---|---|---|
| Identificatie | Applicatienaam, apparaattoewijzing en toepasselijke modus | Identieke namen met verschillende betekenissen |
| Soort en eenheid | Geheel getal, drijvende komma, opsomming, Booleaanse en expliciete eenheden | Nummers kopiëren met incompatibele eenheden |
| Toegangsmogelijkheden | Alleen-lezen of beschrijfbaar, dynamisch bereik en statusafhankelijkheden | Schrijven van parameters die niet kunnen veranderen tijdens het vastleggen van afbeeldingen |
| Opsommingen en standaardwaarden | Werkelijke ondersteunde waarden en teruglezing | Rapporteert niet-ondersteunde instellingen als succesvol |
| Activeringsvoorwaarden | Of het nu gaat om stoppen, herstarten of opnieuw verbinden | Ervan uitgaande dat frames een nieuwe instelling gebruiken onmiddellijk nadat een oproep terugkeert |
Doe meer dan alleen velden hernoemen. Retourneert identificeerbare statussen voor niet-ondersteunde functies. Definieer conversie en afronding voor compatibele eenheden. Controleer teruglezing, apparaatstatus en beeldwijzigingen volgens de mogelijkheden van de doel-SDK.
Levensduur van framegegevens
Documenteer of de SDK, adapter of caller van de leverancier een buffer toewijst, hoe lang deze leesbaar blijft, wanneer deze moet worden vrijgegeven of geretourneerd, of cross-thread-gebruik is toegestaan en of er wordt gekopieerd. Afmetingen, formaat, rijstap en geldige lengte beschrijven samen beeldgegevens; ga niet uit van dicht opeengepakte rijen.
Geef geen asynchrone callback pointer door aan een langlopende downstream-taak zonder de levensduur ervan te bevestigen. Voor het afsluiten van beeldopnamen, het verbreken van de verbinding en het vernietigen van apparaten is ook een bestelling nodig voor openstaande frames, terugbellen in de wachtrij en het vrijgeven van bronnen.
Statussen en oorsprong van fouten
Denk aan afzonderlijke statussen van verbroken, verbonden, geconfigureerd, verwerven, stoppen en fouten, met toegestane oproepen en overgangsomstandigheden. Express time-outs, ontkoppeling, niet-ondersteunde parameters, buffertekorten en parseringsfouten afzonderlijk. Bewaar de foutcode en context van de leverancier naast de foutcode van de wrapper.
Verifieer meer dan een voorbeeld
Voor gespecificeerde apparaten en versies: testparametergrenzen, herhaald starten en stoppen, frametime-outs, bufferretour, gelijktijdige oproepen en opnieuw verbinden. Leg vast waarom een fout niet kon worden geïnjecteerd of niet werd ondersteund. Lever API-documentatie, fouttabellen, bouwinstructies, voorbeelden en overeengekomen testrecords.
Gerelateerde diensten: SDK's voor vision-apparaten En ingebedde afbeelding afbeelding vastleggen.