Предоставляет модулю Diagnostic Management текущий режим энергопотребления DoIP транспортного средства через интерфейс обратного вызова.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: afa4b2f1975cПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет модулю Diagnostic Management текущий режим энергопотребления DoIP транспортного средства через интерфейс обратного вызова.
Интерфейсный класс ara::diag::DoIPPowerMode позволяет приложениям предоставлять текущий режим энергопотребления DoIP модулю Diagnostic Management через функцию обратного вызова GetDoIPPowerMode()[SWS_DM_00734]. После инстанцирования обработчик должен быть активирован с помощью Offer() и перед уничтожением повторно дерегистрирован через StopOffer()[SWS_DM_00735], [SWS_DM_00736]. Будучи одиночным экземпляром, класс не поддерживает ни копирование, ни перемещение [SWS_DM_01645].
Контекст
Абстрактный класс ara::diag::DoIPPowerMode определяет интерфейс для предоставления текущего режима энергопотребления DoIP модулю Diagnostic Management (DM). В архитектурах транспортных средств, использующих диагностику по протоколу Internet Protocol (DoIP), коммуникационный протокол должен быть проинформирован о рабочем состоянии сети транспортного средства или электропитании. Прикладное программное обеспечение порождает конкретный класс обработчика от ara::diag::DoIPPowerMode и реализует опрос режима энергопотребления [SWS_DM_00734]. Партнерами по взаимодействию являются предоставляющее диагностическое приложение, предлагающее интерфейс, а также среда выполнения DM, которая делегирует этому обработчику входящие запросы [SWS_DM_00735].
Жизненный цикл
Экземпляры ara::diag::DoIPPowerMode создаются внутри приложения и идентифицируются через прототип порта, на который ссылается ara::core::InstanceSpecifier[SWS_DM_00732]. При вызове конструктора с помощью аргумента ConcurrencyType определяется, должен ли метод обратного вызова GetDoIPPowerMode() выполняться потокобезопасно (kConcurrent) или непотокобезопасно (kNotConcurrent) [SWS_DM_00732]. Сам конструктор реализован потокобезопасным [SWS_DM_00732].
Согласно спецификации экземпляр не может быть скопирован или перемещен: как конструктор копирования [SWS_DM_01645], так и конструктор перемещения [SWS_DM_01646], а также соответствующие операторы присваивания [SWS_DM_01643], [SWS_DM_01644] явно удалены (=delete).
После инстанцирования обработчик должен быть активирован с помощью Offer(), чтобы DM мог перенаправлять запросы [SWS_DM_00735]. Чтобы прекратить пересылку запросов, вызывается StopOffer()[SWS_DM_00736]. Виртуальный деструктор ~DoIPPowerMode()[SWS_DM_00733], а также Offer() и StopOffer() специфицированы как непотокобезопасные. Предположительно, перед вызовом деструктора всегда следует выполнять StopOffer(), чтобы корректно завершить ожидающие взаимодействия с DM. Вопрос Q-85ede935aa303c45 (открытый)
Путь использования
Типичное использование ara::diag::DoIPPowerMode следует фиксированной последовательности из инициализации, регистрации сервиса, циклического или основанного на событиях опроса режима и дерегистрации:
Приложение инстанцирует свой производный класс с подходящим InstanceSpecifier и желаемым ConcurrencyType[SWS_DM_00732].
Приложение активно регистрирует обработчик в модуле Diagnostic Management с помощью Offer()[SWS_DM_00735].
Как только протоколу DoIP требуется состояние, DM вызывает чисто виртуальную функцию GetDoIPPowerMode()[SWS_DM_00734]. Реализация возвращает ara::core::Future<PowerModeType>, разрешаемый асинхронно [SWS_DM_00734].
При завершении работы приложение вызывает StopOffer(), чтобы больше не принимать запросы [SWS_DM_00736].
Экземпляр освобождается через деструктор [SWS_DM_00733].
При вызове конструктора могут возникать документированные нарушения модели и сопоставления [SWS_DM_00732]:
InstanceSpecifierMappingIntegrityViolation: идентификатор не может быть разрешен в контексте исполняемого файла или не ссылается на элемент PortPrototype [SWS_DM_00732].
PortInterfaceMappingViolation: целевой PortPrototype не типизирован с помощью DiagnosticDoIPPowerModeInterface[SWS_DM_00732].
ProcessMappingViolation: ссылка на экземпляр существует, однако подходящий смоделированный процесс для среды выполнения отсутствует [SWS_DM_00732].
InstanceSpecifierAlreadyInUseViolation: InstanceSpecifier уже использовался для другого экземпляра в рамках того же процесса [SWS_DM_00732].
Если Offer() вызывается, когда сервис уже активно предлагается, метод возвращает код ошибки DiagOfferErrc::kAlreadyOffered через ara::core::Result[SWS_DM_00735]. Напротив, метод GetDoIPPowerMode() не определяет стандартизированных кодов ошибок [SWS_DM_00734].
Настоящее руководство основано на спецификации AUTOSAR для Adaptive Platform (Release R25-11). Все сведения и коды ошибок опираются на указанные требования SWS.
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 referenced by a pingViolation DiagnosticDoIpPowerModePortMapping needs to be typed by a DiagnosticDoIPPowerModeInterface. 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 DiagnosticDoIPPowerModeInterface
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.
This Offer will enable the DM to forward request messages to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5f8fb75036b6Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод Offer класса ara::diag::DoIPPowerMode служит для того, чтобы приложение Adaptive Application могло зарегистрировать и разрешить сервис для DoIP Power Mode в Diagnostic Management (DM) [SWS_DM_00735]. Вызов переводит DM в состояние, позволяющее пересылать входящие сообщения запросов этому обработчику [SWS_DM_00735]. Функция не ожидает входных параметров, не генерирует исключений (noexcept) и возвращает ara::core::Result<void> в качестве возвращаемого значения [SWS_DM_00735].
Пока Offer ещё не вызван предоставляющим приложением, DM отвечает на клиентские запросы информации о DoIP Power Mode значением состояния 0 («Not ready») согласно ISO 13400-2 [SWS_DM_01525]. Если обработчик зарегистрирован и DM требует актуальный Power Mode для ответа на сообщения DoIP, он запрашивает его через ara::diag::DoIPPowerMode::GetDoIPPowerMode[SWS_DM_00814].
В случае ошибки объект Result содержит соответствующий код ошибки. Если метод на соответствующем экземпляре уже ранее успешно вызывался, повторный вызов завершается неудачей и возвращает DiagOfferErrc::kAlreadyOffered с семантикой отката [SWS_DM_00735].
С точки зрения параллелизма функция специфицирована как непотокобезопасная (not thread-safe) [SWS_DM_00735]. Поэтому параллельные вызовы на одном и том же экземпляре должны синхронизироваться вызывающей стороной. Функция обеспечивает полную безопасность исключений (exception safe) [SWS_DM_00735].
Это указание по использованию было создано ИИ и основано на спецификациях релиза AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
This StopOffer will disable the forwarding of request messages from DM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2a0861404a22ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод StopOffer класса ara::diag::DoIPPowerMode отключает пересылку входящих сообщений диагностических запросов со стороны Diagnostic Management (DM) обработчику [SWS_DM_00736]. Функция предоставляется через заголовочный файл ara/diag/doip_power_mode.h, не имеет возвращаемого значения и не принимает параметров [SWS_DM_00736].
Для поведения при ошибках и среды выполнения действуют следующие детали спецификации:
Исключительная безопасность: функция объявлена как noexcept и определена как исключительно безопасная (exception safe) [SWS_DM_00736]. Исключения не генерируются, и коды ошибок не возвращаются.
Потокобезопасность: операция специфицирована как непотокобезопасная (not thread-safe) [SWS_DM_00736]. Интерпретация: если метод вызывается в многопоточных сценариях или параллельно с другими операциями экземпляра, вероятно, потребуется внешняя синхронизация со стороны приложения. Вопрос Q-1593f08472d584d1 (открытый)
Паттерн предоставления с Offer и StopOffer концептуально единообразно спроектирован в Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». Остановка пересылки DM-запросов через StopOffer аналогично применяется в других диагностических компонентах, например в ara::diag::DoIPGroupIdentification[SWS_DM_00726], ara::diag::DoIPActivationLine[SWS_DM_00837], ara::diag::GenericUDSService[SWS_DM_00620], ara::diag::DownloadService[SWS_DM_00793] и ara::diag::Authentication[SWS_DM_01131].
Это указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал