Registra o status, o progresso percentual e o código de erro de uma subentidade em atualizações de software baseadas em SOVD.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 86b478c2c357ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Registra o status, o progresso percentual e o código de erro de uma subentidade em atualizações de software baseadas em SOVD.
A estrutura ara::diag::SovdSwUpdate::SubProgress encapsula o progresso atual, o status e eventuais erros de uma entidade específica durante uma atualização de software baseada em SOVD ([SWS_DM_01896]). Nela, rotinas de atualização registram o componente a ser atualizado, atualizam o progresso percentual e transmitem o estado geral para o gerenciamento de diagnóstico. Se a atualização falhar, o campo error especifica o código de erro ocorrido, enquanto permanece desconsiderado no fluxo regular ([SWS_DM_01901]). Como SubProgress é um tipo de valor de dados puro sem sincronização interna, a modificação concorrente requer proteção pelo lado da aplicação.
Contexto
A estrutura ara::diag::SovdSwUpdate::SubProgress faz parte da interface C++ para atualizações de software baseadas em SOVD no módulo diag da AUTOSAR Adaptive Platform ([SWS_DM_01896], AUTOSAR_AP_SWS_Diagnostics §8.58.3 «Struct: SubProgress»). No âmbito do Service-Oriented Vehicle Diagnostics (SOVD), os processos de atualização podem consistir em várias etapas parciais paralelas ou sequenciais. SubProgress assume a responsabilidade de mapear o estado de processamento de um subcomponente específico durante a atualização. Entre os parceiros de interação estão rotinas de atualização internas de diagnóstico, que executam atualizações parciais, bem como instâncias de controle de nível superior, que coordenam o progresso geral de uma atualização e o reportam a ferramentas de diagnóstico externas.
entity: Um ara::core::String que nomeia a entidade que está sendo atualizada no momento ([SWS_DM_01898]).
status: Um valor do tipo SovdUpdateStatus que representa o status atual da atualização ([SWS_DM_01899]).
progress: Um valor opcional do tipo ara::core::Optional<std::uint8_t> para o progresso em porcentagem ([SWS_DM_01900]).
error: Um código de erro do tipo ara::core::ErrorCode para a especificação de erros ocorridos em caso de falha ([SWS_DM_01901]).
Ciclo de vida
Projetada como struct, SubProgress possui semântica de valor (AUTOSAR_AP_SWS_Diagnostics §8.58.3.1 «Public Member Variables»). Uma instância é tipicamente criada na pilha ou dentro de um contêiner de estado de nível superior assim que uma nova etapa parcial é iniciada no processamento da atualização. No início, o componente gerenciador atribui à instância o identificador da entidade de destino por meio de entity ([SWS_DM_01898]) e define o status inicial em status ([SWS_DM_01899]).
Durante a execução, o progresso percentual e as mudanças de status são continuamente atualizados na estrutura. Após a conclusão ou o cancelamento da atualização parcial, a estrutura é transmitida ou lida e, finalmente, destruída de forma automática ao sair do escopo. Como a especificação não define métodos próprios ou primitivas de sincronização, a estrutura provavelmente funciona como um mero detentor de dados sem segurança de thread própria (interpretação). Pergunta Q-92b3fcc698f7bab8 (aberta) Portanto, um acesso concorrente por múltiplas threads exige sincronização do lado da aplicação.
Caminho de utilização
O fluxo regular para o relato de progresso é dividido em uma sequência fixa de etapas:\nPrimeiro, a lógica de atualização em execução instancia um objeto do tipo SubProgress e define o identificador da entidade em questão em entity ([SWS_DM_01898]). Ao mesmo tempo, o valor inicial para status é definido, por exemplo, para sinalizar o início do processamento ([SWS_DM_01899]). Em etapas contínuas, a lógica grava periodicamente o progresso em porcentagem no campo progress ([SWS_DM_01900], AUTOSAR_AP_SWS_Diagnostics §8.58.3.1.3 «progress»). Como progress está declarado como ara::core::Optional, o campo permanece vazio enquanto o progresso ainda estiver indeterminado. Por fim, a estrutura é transmitida para a interface central SovdSwUpdate, para que clientes SOVD externos possam consultar o status ([SWS_DM_01896]).
No caso de irregularidades ou erros durante o processamento de uma subentidade, o cenário de erro da estrutura entra em ação. Se ocorrer um erro, o valor em status muda para um estado de erro ([SWS_DM_01899]). De acordo com [SWS_DM_01901], a variável error especifica o código de erro exato apenas se o status for de falha («Specifies the error if status is failed»). Isso representa um acoplamento lógico obrigatório entre status e error: os destinatários da estrutura só podem avaliar o campo error como significativo se status realmente reportar um estado de falha; caso contrário, o conteúdo provavelmente será desconsiderado ou representará um valor padrão (interpretação). Pergunta Q-3caa7622672dcb8e (aberta)
Outro cenário de erro diz respeito a progressos indeterminados: se a entidade de processamento não puder determinar um valor percentual concreto ou se o cálculo for interrompido prematuramente, o campo opcional progress permanece sem valor (ara::core::nullopt), o que impede que valores numéricos inválidos sejam interpretados erroneamente como uma indicação percentual ([SWS_DM_01900]).
Este guia baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11 e resume os requisitos para a estrutura ara::diag::SovdSwUpdate::SubProgress.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão