Permite que aplicações disponibilizem ativamente conteúdos de arquivos e diretórios em solicitações de leitura UDS.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 1ed24b3e3197ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que aplicações disponibilizem ativamente conteúdos de arquivos e diretórios em solicitações de leitura UDS.
A classe ara::diag::DataTransferReadByPushHandler serve como interface base para transferências de leitura UDS, nas quais a aplicação empacota e disponibiliza ativamente conteúdos de arquivos [SWS_DM_01515]. Os blocos de dados são passados sequencialmente através de Read() e a sessão de transferência é subsequentemente encerrada de forma ordenada através de ExitRead()[SWS_DM_01523]. Cada manipulador está estritamente vinculado a exatamente uma sessão de transferência, razão pela qual as operações de cópia são impedidas. Como condição essencial de ciclo de vida, a instância não pode, em hipótese alguma, ser destruída antes da chamada de ExitRead()[SWS_DM_01519].
Contexto
A classe ara::diag::DataTransferReadByPushHandler atua como classe base e de interface para transferências de dados de diagnóstico iniciadas por solicitações como RequestReadFile ou RequestReadDirectory[SWS_DM_01515]. O padrão de transmissão subjacente baseia-se no princípio push: os dados de arquivos ou diretórios são empacotados ativamente pela implementação específica da aplicação e passados ao gerenciamento de diagnóstico (Diagnostic Management, DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 «Class: DataTransferReadByPushHandler». A interação ocorre entre o cliente UDS externo, o componente de plataforma ara::diag e a implementação concreta do manipulador da aplicação.
Como DataTransferReadByPushHandler é projetada como uma classe base abstrata, o construtor sem parâmetros possui visibilidade protegida (protected) [SWS_DM_01516]. A instanciação ocorre no contexto de uma classe derivada dentro da aplicação. As instâncias estão estritamente vinculadas a exatamente uma sessão de transferência de arquivos ("one way usage"); consequentemente, o construtor de cópia [SWS_DM_01518] bem como o operador de atribuição por cópia [SWS_DM_01521] estão explicitamente excluídos (=delete). Uma transferência de posse é possível por meio de operações de movimentação, pois o construtor de movimentação [SWS_DM_01517] e a atribuição por movimentação [SWS_DM_01520] existem como implementações padrão e estão declarados como com segurança de exceção (noexcept).
Para a destruição do manipulador, a especificação define uma pré-condição estrita: uma instância não pode, sob hipótese alguma, ser destruída antes que a sessão tenha sido encerrada através da chamada de ExitRead()[SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 «Destructor». No que tange à concorrência, os métodos virtuais da classe estão especificados como não thread-safe ("not thread-safe") [SWS_DM_01522], [SWS_DM_01523], razão pela qual acessos simultâneos precisam ser sincronizados ou executados sequencialmente pela plataforma.
Caminho de utilização
O fluxo operacional divide-se na disponibilização repetitiva de fragmentos de dados e no encerramento ordenado da sessão. Após a inicialização do processo de leitura, ara::diag chama repetidamente o método Read()[SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 «Read». Nessa etapa, o framework passa uma diretriz para o tamanho de retorno recomendado em bytes (recommended_number_bytes_to_return) a fim de obter uma taxa de transferência ideal, bem como o contexto de solicitação (MetaInfo) e um CancellationHandler. A aplicação gera o pacote de dados e transfere sua propriedade através de um ara::core::Future<ara::core::Vector<ara::core::Byte>> para o Diagnostic Management, que insere os dados úteis após o contador sequencial de blocos na mensagem de resposta UDS [SWS_DM_01522].
Assim que todos os blocos de dados tiverem sido transmitidos ou a sessão deva ser finalizada, ara::diag chama o método ExitRead()[SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 «ExitRead». Além do motivo do término (DataTransferExitType exit_type), parâmetros de solicitação específicos do fabricante são passados através de transfer_request_parameter_record. O tempo de vida dessa extensão de parâmetros está obrigatoriamente acoplado até que a promise associada seja cumprida ou o processamento seja cancelado [SWS_DM_01523]. Após o retorno do conjunto final de parâmetros de resposta através da Future, a transferência é considerada finalizada, cumprindo a condição para a destruição segura do objeto manipulador [SWS_DM_01519].
Diagrama de sequência: sequência típica de interação entre Diagnostic Management e manipulador durante a transferência de leitura e o encerramento da transferência. Fontes: [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Cenários de erro
Se ocorrer um erro durante a montagem de blocos de dados ou no encerramento da sessão, ele será reportado assincronamente por meio do respectivo ara::core::Future. Em vez de uma estrutura de resposta positiva, o future é fornecido com um código de erro (ara::core::ErrorCode) do escopo DiagUdsNrcErrc, que corresponde a um identificador de resposta negativa apropriado (Negative Response Code, NRC) conforme a ISO 14229-1 [SWS_DM_01522], [SWS_DM_01523].
Se o diálogo de diagnóstico for interrompido ou o cliente enviar uma solicitação de cancelamento, o CancellationHandler passado entra em ação. A implementação pode consultar o status atual de cancelamento através de cancellation_handler.IsCanceled() ou registrar por meio de cancellation_handler.SetNotifier() uma função de retorno de chamada que é acionada mediante o cancelamento da conversação [SWS_DM_01522], [SWS_DM_01523]. O cumprimento ou o cancelamento da promise marca simultaneamente o fim da validade do conjunto de parâmetros em ExitRead()[SWS_DM_01523].
Este guia baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: eefe02828ffeProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método virtual ExitRead encerra uma sessão de transmissão de dados em andamento no contexto do manipulador de diagnóstico [SWS_DM_01523]. A função opera de forma assíncrona e retorna um ara::core::Future com os dados de resposta como vetor de bytes SWS Diagnostics §8.10.3.1.3.1 «ExitRead».
Parâmetros e contexto de chamada
exit_type (DataTransferExitType): especifica o motivo do encerramento da transmissão [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): contém parâmetros específicos do fabricante para apoiar a transferência de dados. Os dados subjacentes devem permanecer válidos até que a promise correspondente seja satisfeita ou o processamento seja cancelado [SWS_DM_01523].
meta_info (MetaInfo const &): passa metainformações da requisição de diagnóstico [SWS_DM_01523].
cancellation_handler (CancellationHandler): serve para verificar o status de cancelamento mediante IsCanceled() ou para registrar uma função de callback via SetNotifier() em caso de cancelamento da sessão [SWS_DM_01523].
Tratamento de erros e valores de retorno
Em caso de sucesso, o Future disponibiliza os dados de saída, que são posicionados como transferResponseParameterRecord na resposta UDS positiva após o SID [SWS_DM_01523]. Em caso de falha, o Future é completado com um Negative Response Code (NRC) adequado de DiagUdsNrcErrc de acordo com a ISO 14229-1 [SWS_DM_01523].
Concorrência e ciclo de vida
O método é especificado como seguro para exceções (exception safe), mas explicitamente não seguro para threads (not thread-safe) [SWS_DM_01523]. Em relação ao ciclo de vida do objeto, existe uma condição vinculativa de ordem: uma instância de DataTransferReadByPushHandler não pode, de forma alguma, ser destruída antes da chamada de ExitRead()[SWS_DM_01519]. Requisitos análogos aplicam-se a classes de manipulador correlatas na transferência de dados [SWS_DM_01510][SWS_DM_01499].
Este texto foi gerado por uma IA com base na especificação AUTOSAR Adaptive R25-11.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fcd7efa833dfProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método puramente virtual Read da classe ara::diag::DataTransferReadByPushHandler destina-se à leitura assíncrona de blocos de dados de informações de arquivo ou diretório a partir da aplicação [SWS_DM_01522]. A aplicação compõe o respectivo chunk de dados e transfere sua propriedade como ara::core::Vector<ara::core::Byte> para o módulo de diagnóstico.
Utilização e contexto de chamada
A chamada é realizada pelo Diagnostic Server para a disponibilização de dados de resposta para clientes UDS por meio do arquivo de cabeçalho ara/diag/data_transfer.h[SWS_DM_01522]. O método espera três parâmetros:
recommended_number_bytes_to_return: o número recomendado de bytes para vazão ideal. Presumivelmente, este valor orienta-se pelo tamanho interno do buffer ou da PDU do Diagnostic Management. Pergunta Q-1a8c1270b192b96f (aberta)
meta_info: metainformações adicionais da requisição de diagnóstico de entrada (MetaInfo).
cancellation_handler: permite consultar o status de cancelamento via cancellation_handler.IsCanceled() ou registrar uma notificação mediante cancellation_handler.SetNotifier() em caso de interrupções de conexão.
Como valor de retorno serve um ara::core::Future<ara::core::Vector<ara::core::Byte>>. Em caso de processamento bem-sucedido, os dados são embutidos como transferResponseParameterRecord após o contador de sequência na mensagem de resposta positiva [SWS_DM_01522].
Tratamento de erros e simultaneidade
Se o processamento falhar, a future é satisfeita com um código de erro de DiagUdsNrcErrc, que mapeia uma NRC adequada de acordo com a ISO 14229-1 [SWS_DM_01522]. Se a interface ainda não for oferecida, ou não for mais oferecida, pelo serviço mediante offer(), o Diagnostic Manager responde à requisição com NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. O método é especificado como seguro para exceções (exception safe), porém não seguro para threads (not thread-safe) [SWS_DM_01522], motivo pelo qual chamadas simultâneas devem ser sincronizadas pelo lado da aplicação.
Interação
O princípio push desta interface complementa mecanismos de leitura alternativos do módulo de diagnóstico: o procedimento pull via ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] com região de memória predefinida, bem como a disponibilização de uma região de memória compartilhada mediante ReleaseHandler[SWS_DM_01504].
The recommended number of bytes to send back to DM in order to
bytes_to_return
get optimum data throughput.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to ReadPushOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in ReadPushOutput.responseData will be placed after block SequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão