Um wrapper do SDK do dispositivo deve padronizar as convenções de chamada, preservando as diferenças reais entre os dispositivos. Os nomes de API correspondentes não definem a semântica dos parâmetros, a propriedade do buffer ou os estados de erro. O que se segue é um método de design de adaptador, não uma afirmação de que dispositivos arbitrários já foram integrados.
Defina a semântica dos parâmetros primeiro
| Campo | Informações necessárias | Problema a evitar |
|---|---|---|
| Identificador | Nome do aplicativo, mapeamento de dispositivos e modo aplicável | Nomes idênticos com significados diferentes |
| Tipo e unidade | Inteiro, ponto flutuante, enumeração, unidades booleanas e explícitas | Copiando números com unidades incompatíveis |
| Capacidade de acesso | Somente leitura ou gravação, faixa dinâmica e dependências de estado | Escrevendo parâmetros que não podem ser alterados durante a captura da imagem |
| Enumerações e padrões | Valores reais suportados e leitura | Relatando configurações não suportadas como bem-sucedidas |
| Condições de ativação | Se é necessário parar, reiniciar ou reconectar | Supondo que os frames usem uma nova configuração imediatamente após o retorno de uma chamada |
Faça mais do que renomear campos. Retorna estados identificáveis para funções não suportadas. Defina conversão e arredondamento para unidades compatíveis. Verifique a leitura, o estado do dispositivo e as alterações de imagem de acordo com os recursos do SDK de destino.
Vida útil dos dados do quadro
Documente se o SDK, adaptador ou chamador do fornecedor aloca um buffer, por quanto tempo ele permanece legível, quando deve ser liberado ou retornado, se o uso de thread cruzado é permitido e se ocorre cópia. Dimensões, formato, largura da linha e comprimento válido descrevem juntos os dados da imagem; não assuma linhas compactadas.
Não passe um ponteiro de retorno de chamada assíncrono para uma tarefa downstream de longa execução sem confirmar seu tempo de vida. O desligamento, a desconexão e a destruição do dispositivo de captura de imagens também exigem um pedido de quadros pendentes, retornos de chamada em fila e liberação de recursos.
Estados e origens de erro
Considere estados separados de desconectado, conectado, configurado, aquisição, parada e falha, com chamadas permitidas e condições de transição. Expresse tempos limite, desconexão, parâmetros não suportados, escassez de buffer e falhas de análise separadamente. Preserve o código de erro e o contexto do fornecedor junto com o código de erro do wrapper.
Verifique mais que um exemplo
Para dispositivos e versões especificados, limites de parâmetros de teste, início e parada repetidos, tempos limite de quadros, retorno de buffer, chamadas simultâneas e reconexão. Registre por que uma falha não pôde ser injetada ou não foi suportada. Forneça documentação de API, tabelas de erros, instruções de construção, exemplos e registros de testes acordados.
Serviços relacionados: SDKs de dispositivos de visão e captura de imagem de imagem incorporada.