Permite que a aplicação disponibilize dados de unidades de controle eletrônico para uploads UDS ao Diagnostic Management.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e2e1ae703412ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que a aplicação disponibilize dados de unidades de controle eletrônico para uploads UDS ao Diagnostic Management.
A classe ara::diag::UploadService serve como interface de serviço do lado da aplicação para o fornecimento de dados de unidades de controle eletrônico para uploads de diagnóstico externos conforme o UDS [SWS_DM_00797]. Após a ativação bem-sucedida via Offer(), o handler processa de forma assíncrona as solicitações consecutivas de iniciação de upload, transferência de blocos de dados e encerramento de transferência [SWS_DM_00802]. A instância de serviço não copiável suporta tanto transferências de dados por blocos quanto o cancelamento prematuro por meio de um handler de cancelamento. O handler confirma solicitações com erro por meio de códigos de retorno UDS negativos dentro das futures de resposta assíncronas.
Contexto
A classe ara::diag::UploadService define a interface de serviço central para operações de upload de diagnóstico dentro da AUTOSAR Adaptive Platform [SWS_DM_00797]. Ela atua como um handler do lado da aplicação para a leitura e o fornecimento de dados internos do veículo a equipamentos de teste externos, de acordo com o padrão de diagnóstico UDS (ISO 14229-1) [SWS_DM_00799].
Na arquitetura do sistema, ara::diag::UploadService interage essencialmente com dois parceiros: o cliente de diagnóstico externo (tester) e o daemon de diagnóstico da plataforma, o Diagnostic Management (DM) [SWS_DM_00799], [SWS_DM_00802]. O DM recebe requisições de serviço UDS recebidas, tais como RequestUpload, TransferData e RequestTransferExit no nível de protocolo, valida-as e encaminha as consultas técnicas para o manipulador registrado da aplicação [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. A instância da aplicação implementa os métodos virtuais da interface para ler e retornar os blocos de dados propriamente ditos da memória [SWS_DM_00800].
Diagrama de contexto: Integração do serviço de upload entre o cliente de diagnóstico, o Diagnostic Management e o manipulador da aplicação. Fontes: [SWS_DM_00797], [SWS_DM_00799], [SWS_DM_00802].
Ciclo de vida
Uma instância de ara::diag::UploadService é construída especificando-se um ara::core::InstanceSpecifier, bem como o comportamento de concorrência concurrencyType[SWS_DM_00797]. O especificador vincula a instância a um protótipo de porta modelado do tipo DiagnosticUploadInterface[SWS_DM_00797]. O construtor é especificado como seguro contra exceções e seguro para threads [SWS_DM_00797]. Para garantir uma atribuição inequívoca da instância de serviço, os construtores de cópia e de movimentação, bem como os operadores de atribuição, foram explicitamente excluídos [SWS_DM_01671], [SWS_DM_01672], [SWS_DM_01673], [SWS_DM_01674].
Após a instanciação, o serviço encontra-se inicialmente em estado inativo; o DM ainda não encaminha nenhuma requisição. O encaminhamento só é ativado por meio da chamada explícita de Offer()[SWS_DM_00802]. O encaminhamento de requisições pode ser interrompido a qualquer momento através de StopOffer()[SWS_DM_00803]. Tanto Offer() quanto StopOffer() são definidos como não seguros para threads e necessitam de sincronização externa em chamadas a partir de múltiplas threads [SWS_DM_00802], [SWS_DM_00803].
A destruição ocorre por meio do destrutor virtual ~UploadService(), que também não é seguro para threads [SWS_DM_00798]. Portanto, antes de liberar o objeto, o serviço deve ser cancelado de forma ordenada via StopOffer()[SWS_DM_00803]. Se os métodos virtuais de processamento devem ser executados internamente de forma segura para threads é determinado pelo ConcurrencyType configurado durante a construção (kConcurrent ou kNotConcurrent) [SWS_DM_00797], [SWS_DM_00799].
Caminho de utilização
O fluxo regular de uma sessão de upload ocorre em várias etapas consecutivas:
Disponibilização do serviço: a aplicação inicializa o manipulador e chama Offer() para receber requisições de diagnóstico recebidas do DM [SWS_DM_00802].
Requisitar upload (RequestUpload): ao chegar uma requisição UDS para iniciação de upload, o DM chama o método RequestUpload()[SWS_DM_00799]. O manipulador verifica o formato de dados, o formato de endereçamento, bem como o endereço e o comprimento de memória (memoryAddressAndSize). A região de memória passada permanece válida até que o ara::core::Future<void> retornado seja atendido ou o procedimento seja cancelado [SWS_DM_00799].
Transferir blocos de dados (UploadData): após a iniciação bem-sucedida, o tester envia requisições TransferData de UDS. O DM chama então repetidamente UploadData()[SWS_DM_00800]. A aplicação lê o bloco de dados solicitado e o retorna por meio de um ara::core::Future<OperationOutput>; os bytes em OperationOutput.responseData são colocados na resposta positiva atrás do contador de blocos [SWS_DM_00800]. Interpretação: o limite de buffer numBytesToReturn deve funcionar aqui como tamanho máximo de chunk para o buffer interno do DM, de modo que regiões de memória maiores sejam segmentadas sequencialmente por meio de chamadas consecutivas. Pergunta Q-6ede2e3041d99294 (aberta)
Finalizar transferência (RequestUploadExit): para concluir, o DM chama RequestUploadExit() e passa os parâmetros de transferência específicos do fabricante no transferRequestParameterRecord[SWS_DM_00801]. O manipulador valida a conclusão e retorna parâmetros de retorno opcionais no OperationOutput[SWS_DM_00801].
Desativar serviço: após a conclusão de todas as transações de upload ou durante o desligamento, a aplicação encerra o encaminhamento com StopOffer()[SWS_DM_00803].
Durante toda a transferência de dados, o manipulador recebe um objeto CancellationHandler. Através deste, pode-se consultar ativamente o status de cancelamento por meio de IsCanceled() ou registrar um callback por meio de SetNotifier(), caso o tester interrompa o diálogo prematuramente [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801].
Condições de erro podem ocorrer durante a construção, durante a ativação e durante o processamento de dados propriamente dito:
Violações de modelo e de configuração: se a configuração não coincidir com o modelo ARXML, ocorrem violações na chamada do construtor [SWS_DM_00797]. Entre elas estão InstanceSpecifierMappingIntegrityViolation (o especificador não faz referência a um PortPrototype), PortInterfaceMappingViolation (falta de vinculação via DiagnosticServiceGenericMapping), ProcessMappingViolation (nenhuma correspondência com o processo modelado), bem como InstanceSpecifierAlreadyInUseViolation (uso múltiplo do mesmo especificador dentro de um processo) [SWS_DM_00797].
Ativação múltipla do serviço: se Offer() for chamado enquanto o serviço já estiver sendo oferecido, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered no ara::core::Result<void>[SWS_DM_00802].
Respostas de erro UDS (Negative Response): se o manipulador não puder atender tecnicamente a uma requisição em RequestUpload(), UploadData() ou RequestUploadExit() (por exemplo, endereços de memória inválidos, erros de formato ou contadores de sequência inválidos), ele sinaliza isso disponibilizando um código de erro de DiagUdsNrcErrc no Future retornado [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. O DM gera então uma resposta negativa UDS padrão (NRC) para o equipamento de teste externo [SWS_DM_00799].
Este guia baseia-se exclusivamente na especificação da AUTOSAR Adaptive Platform Release R25-11.
This Offer will enable the DM to forward request messages to this handler.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: dce89cbe34efProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Utilização e semântica
A função membro síncrona Offer da classe ara::diag::UploadService ([SWS_DM_00802]) ativa o encaminhamento de solicitações de diagnóstico pelo Diagnostic Management (DM) para o manipulador registrado. A chamada não recebe parâmetros e declara a segurança contra exceções noexcept ([SWS_DM_00802]). O tipo de retorno é ara::core::Result<void>, por meio do qual a disponibilização bem-sucedida ou um erro ocorrido é representado ([SWS_DM_00802]).
Tratamento de erros e simultaneidade
Códigos de erro: caso o serviço já tenha sido oferecido anteriormente, a execução falha com o código de erro DiagOfferErrc::kAlreadyOffered ([SWS_DM_00802]); aqui se aplica a semântica de reversão.
Segurança de thread: a função é explicitamente especificada como not thread-safe ([SWS_DM_00802]). Chamadas concorrentes na mesma instância de serviço devem ser sincronizadas pelo lado da aplicação.
Interação no subsistema de diagnóstico
A operação integra-se ao padrão de disponibilização uniforme de manipuladores de diagnóstico adaptativos, como é utilizado, entre outros, em DownloadService ([SWS_DM_00792]) ou GenericUDSService ([SWS_DM_00619]). Enquanto a disponibilização não tiver sido realizada, o DM não encaminha mensagens de diagnóstico de entrada para o manipulador (cf. comportamentos análogos em [SWS_DM_01525]). Interpretação: a chamada de Offer deve ocorrer tipicamente durante a fase de inicialização da aplicação, antes que o tráfego de diagnóstico seja aceito. Pergunta Q-aba091d233b5e45b (aberta)
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Adaptive R25-11.
dataFormatIdentifier e addressAndLengthFormatIdentifier: Identificadores de formato UDS para dados, endereço de memória e indicações de comprimento.
memoryAddressAndSize: Um ara::core::Span com endereço e tamanho de memória, cuja validade é garantida até ao cumprimento da promise ou ao cancelamento do processamento.
metaInfo: Metainformações sobre o pedido de diagnóstico.
cancellationHandler: Serve para a consulta do estado de cancelamento via cancellationHandler.IsCanceled e para o registo de funções de notificação por meio de cancellationHandler.SetNotifier.
O processamento ocorre de forma assíncrona com o tipo de retorno ara::core::Future<void>[SWS_DM_00799].
Tratamento de erros
Em caso de erro, o ara::core::Future disponibiliza um código de erro UDS NRC adequado de acordo com a ISO 14229-1 através de DiagUdsNrcErrc, seguindo-se uma resposta negativa [SWS_DM_00799]. Em caso de resposta positiva, o Diagnostic Manager reporta o evento de segurança SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL ao IdsM [SWS_DM_02031]; em caso de resposta negativa, o evento SEV_UDS_REQUEST_UP_DOWNLOAD_FAILED[SWS_DM_02033].
Concorrência e interação
A função está declarada como noexcept e é segura contra exceções. A obrigatoriedade de o método ser implementado de forma segura para threads é condicional e definida através do ConcurrencyType passado no construtor [SWS_DM_00799].
Após a confirmação bem-sucedida de RequestUpload, a transferência de dados de upload propriamente dita é continuada em pedidos subsequentes do serviço UDS 0x36 (TransferData) através de UploadData[SWS_DM_00800][SWS_DM_01096].
Esta nota de utilização foi gerada por uma inteligência artificial com base na especificação AUTOSAR Adaptive R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataFormatIdentifier
UDS dataFormat Identifier
addressAndLengthFormatIdentifier
UDS addressAndLengthFormatIdentifier
memoryAddressAndSize
memoryAddress and memorySize part of the request. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c83d03772031ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Utilização e contexto de chamada
O método RequestUploadExit da classe ara::diag::UploadService (SWS Diagnostics §8.27.1.1.3.3 «RequestUploadExit») é chamado pela instância do servidor de diagnóstico quando o término de uma transferência de dados através do serviço UDS RequestTransferExit (0x37) deve ser processado [SWS_DM_00141], [SWS_DM_00801].
A interface recebe os seguintes parâmetros [SWS_DM_00801]:
transferRequestParameterRecord: Contém parâmetros específicos do fabricante para suporte da transferência no formato ara::core::Span<const std::uint8_t>. Os dados mantêm-se válidos até que a promise correspondente seja cumprida ou o processamento seja cancelado. Interpretação: a avaliação destes parâmetros deverá servir prioritariamente para validações específicas do fabricante na conclusão do upload. Pergunta Q-d3989837f58761d7 (aberta)
metaInfo: Passa metainformações do pedido de diagnóstico atual.
cancellationHandler: Permite a consulta do estado de cancelamento via cancellationHandler.IsCanceled() ou o registo de um callback de notificação por meio de cancellationHandler.SetNotifier().
Valores de retorno e tratamento de erros
A execução ocorre de forma assíncrona e devolve um ara::core::Future<OperationOutput>[SWS_DM_00801]. Em caso de sucesso, a future é cumprida com uma instância de OperationOutput. Os dados nela passados a partir de responseData são inseridos na resposta de diagnóstico positiva a seguir ao ID de serviço como transferResponseParameterRecord[SWS_DM_00796], [SWS_DM_00801]. Em caso de erro, a future deve ser concluída com um código de erro adequado de DiagUdsNrcErrc em conformidade com a ISO 14229-1 [SWS_DM_00801].
Simultaneidade e restrições
O método está especificado como noexcept[SWS_DM_00801]. O requisito de segurança de threads é condicional: se a função deve ser executada de forma segura para threads é determinado através do ConcurrencyType passado no construtor de UploadService[SWS_DM_00801].
Esta nota de utilização baseia-se nas especificações em AUTOSAR AP SWS Diagnostics R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
transferRequestParameterRecord
This parameter record contains parameter(s), which are required 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.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. 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.responseData 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.
This StopOffer will disable the forwarding of request messages from DM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e7cdc33ba5c7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método StopOffer() da classe ara::diag::UploadService ([SWS_DM_00803], declarado em #include "ara/diag/upload.h") desativa o encaminhamento de requisições de diagnóstico recebidas do Diagnostic Management (DM) para o serviço de upload. A função possui a assinatura void StopOffer() noexcept;, não recebe parâmetros e não retorna valor. A chamada ocorre de forma síncrona e encerra o encaminhamento de requisições imediatamente.
Tratamento de erros
A operação é especificada como segura contra exceções (exception safe) e declarada com o identificador noexcept[SWS_DM_00803]. Portanto, nenhuma exceção C++ é lançada. Códigos de erro ou mensagens de erro específicos não estão previstos para esta chamada.
Simultaneidade e restrições
De acordo com a especificação, StopOffer() não é seguro para threads (not thread-safe) [SWS_DM_00803]. A Adaptive Application chamadora deve, portanto, assegurar por conta própria que chamadas na mesma instância não ocorram de forma concorrente a partir de múltiplas threads sem sincronização externa. Em relação à ordem, o método tipicamente só deve ser chamado após uma oferta prévia do serviço, a fim de cancelá-lo de forma controlada. Pergunta Q-90ce659f307f54ca (aberta)
Interação
A interface alinha-se ao padrão uniforme de disponibilização do diagnóstico AUTOSAR Adaptive, que prevê métodos separados de ativação e desativação para instâncias de serviço AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». O método constitui a contraparte funcional de ara::diag::DownloadService::StopOffer ([SWS_DM_00793]), que está sujeito aos mesmos requisitos upstream. Funções de desativação análogas existem adicionalmente para outros componentes de diagnóstico, como rotinas genéricas ([SWS_DM_00558]), serviços UDS ([SWS_DM_00620]), bem como interfaces de autenticação ([SWS_DM_01131]).
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Adaptive R25-11.
Called for TransferData following a previous RequestUpload.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 0748aa4db498ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
numBytesToReturn: Especifica a quantidade de bytes que o Diagnostic Manager (DM) pode comportar no máximo para este bloco de dados devido ao seu tamanho de buffer interno ([SWS_DM_00800]). Interpretação: A aplicação provavelmente deve limitar rigorosamente o tamanho do bloco a este valor limite. Pergunta Q-89de95e70e1e6223 (aberta)
metaInfo: Disponibiliza metainformações sobre a solicitação de diagnóstico de entrada ([SWS_DM_00800]).
cancellationHandler: Serve para o monitoramento de conversas em andamento via cancellationHandler.IsCanceled(), bem como para o registro de notificações através de cancellationHandler.SetNotifier() no caso de um cancelamento ([SWS_DM_00800]).
O retorno ocorre de forma assíncrona através de ara::core::Future<OperationOutput> ([SWS_DM_00800]). Em caso de sucesso, os dados úteis fornecidos em OperationOutput.responseData ([SWS_DM_00796]) são posicionados diretamente após o contador blockSequenceCounter como transferResponseParameterRecord na resposta positiva ([SWS_DM_00800]).
Tratamento de erros e validação
Em caso de erro, o Future é resolvido com um código de erro apropriado (NRC) em conformidade com a ISO 14229-1 proveniente de DiagUdsNrcErrc ([SWS_DM_00800]). Com exceção de verificações básicas de NRC de acordo com [SWS_DM_00101] e [SWS_DM_00103], o Diagnostic Manager não realiza nenhuma validação adicional de serviço; todas as demais verificações de NRC exigidas devem ser implementadas pela própria aplicação chamada ([SWS_DM_01096]).
Simultaneidade e segurança de execução
A operação é segura para exceções (exception safe) ([SWS_DM_00800], AUTOSAR_AP_SWS_Diagnostics §8.27.1.1.3.5 «UploadData»). A segurança de thread é condicional: se UploadData precisa ser implementado de forma segura para threads é determinado através do ConcurrencyType passado no construtor de UploadService ([SWS_DM_00800]).
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
numBytesToReturn
number of bytes DM accepts (due to its internal buffer) for this chunk.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. 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 a negative response message). Data in OperationOutput.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.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticUploadInterface needs to be referenced by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticUploadInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
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