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.