Metadados do pacote de serviços

Nesta página, explicamos como usar os campos de metadados obrigatórios e opcionais do pacote de serviços.

Metadados obrigatórios

O modelo de execução do pacote de serviços exige que cada pacote defina os seguintes metadados:

sdv_service_bundle_metadata {
  # Name of the service bundle.
  #
  # Must follow SDV service naming convention rules.
  # Ref: https:/automotive/sdv/core-areas/naming-conventions
  #
  # When using VSIDL catalog and middleware generation, this name must be
  # equal to the service bundle name defined in the catalog.
  name: "TheNameOfTheServiceBundle"

  # Service Bundle Version Number.
  # Must be non-negative number.
  version_number: 1

  # Service Bundle Version Name.
  # Must be non-empty string.
  version_name: "1.0 alpha"

  # Path to the native library to be loaded as service bundle.
  # Must be the relative path from the APEX root directory
  native_library_path: "lib64/libservice_bundle.so"
}
# Service bundle one.
sdv_service_bundle_metadata {
  name: "ServiceBundleOne"
  ...
}
# Service bundle two.
sdv_service_bundle_metadata {
  name: "ServiceBundleTwo"
  ...
}

Metadados opcionais

Os metadados opcionais oferecem suporte a recursos específicos da SDV.

Metadados de orquestração

A configuração de orquestração do SDV oferece um mecanismo para controlar o comportamento de inicialização e desligamento dos pacotes de serviços. Ela define um conjunto de regras que determinam quando e como as ações são realizadas nas instâncias de pacotes de serviços. Essas regras são baseadas em modos personalizados, de veículo e de energia.

Para associar uma configuração de orquestração ao pacote de serviços, forneça o caminho para o módulo prebuilt_etc no campo opcional orchestration_config_path:

sdv_service_bundle_metadata {
  ...
  # Path to the orchestration config file.
  # Warning: Shall be relative path to the APEX root directory.
  orchestration_config_path: "etc/configuration/orchestration/configuration.textproto"
}

Caminho da política de autorização

A política de autorização do SDV oferece um mecanismo para declarar permissões para o pacote de serviços. A política de autorização define quais ações o pacote de serviços pode realizar (como publicar, assinar, veicular ou chamar).

Para associar uma política de autorização ao pacote de serviços, forneça o caminho para o módulo prebuilt_etc no campo opcional authorization_policy_path:

sdv_service_bundle_metadata {
  ...
  # Path to the authorization policy file.
  # Warning: Shall be relative path to the APEX root directory.
  authorization_policy_path: "etc/authz/permissions.textproto"
}

Metadados do provedor VSIDL

Os metadados do provedor VSIDL fazem parte de um mecanismo para integrar pacotes de serviços com agentes de plataformas de diagnóstico e SOME/IP.

Para associar metadados de um provedor VSIDL a um pacote de serviços, forneça o caminho para os arquivos prebuilt_etc que contêm metadados gerados no campo opcional vsidl_schemas_path / diagnostics_config_path / (somente APEX de configuração SOME/IP) external_service_bundle_metadata_path:

sdv_service_bundle_metadata {
  ...
  # Path to the file with protobuf schemas extracted from bundle's VSIDL definition.
  # Warning: Must be relative path to the APEX root directory.
  vsidl_schemas_path: "etc/vsidl_provider/TheNameOfTheServiceBundle-vsidl-config.binpb"

  # Path to the diagnostics config file.
  # Warning: Shall be relative path to the APEX root directory.
  diagnostics_config_path: "etc/vsidl_provider/TheNameOfTheServiceBundle-diag-config.binpb"

  # Path to the SOME/IP config file. To be used in SOME/IP configuration apex only.
  # Warning: Must be relative path to the APEX root directory.
  external_protocol_mapping_path: "etc/vsidl_provider/someip-config.binpb"
}

Para saber mais, consulte Visão geral do provedor VSIDL.

Metadados de tag de registro

O atributo de tag de registro especifica o identificador exclusivo dos registros gerados pelo pacote de serviços. Se esse atributo não for definido, uma tag padrão será gerada automaticamente usando o nome do pacote, o nome do pacote de serviço e o nome da instância. Para ter clareza ideal, defina uma tag de registro concisa e exclusiva.

Metadados personalizados

Com os metadados personalizados, os OEMs e fornecedores podem definir alguns metadados específicos do pacote de serviços.

sdv_service_bundle_metadata {
  ...
  # Custom service bundle metadata map.
  # Key is a string, value is a string.
  #
  # 1st custom metadata value.
  custom_metadata {
    key: "question"
    value: "Answer to the Ultimate Question of Life, the Universe, and Everything"
  }
  # 2nd custom metadata value.
  custom_metadata {
    key: "answer" value: "42"
  }
}
sdv_service_bundle_metadata {
  ...
  # Custom metadata values are stored in etc/.
  custom_metadata {
    key: "path_to_custom_metadata"
    value: "etc/configuration/file"
  }
}

Exemplo completo

# proto-file: //system/software_defined_vehicle/core_services/service_bundles_registry/proto/sdv_service_bundles_manifest.proto
# proto-message: SdvServiceBundleManifestEntry

# SDV service bundle.
sdv_service_bundle_metadata {
  # Name of the service bundle.
  # Must follow SDV service naming convention rules.
  name: "TheNameOfTheServiceBundle"

  # Service Bundle Version Number.
  # Must be non-negative number.
  version_number: 42

  # Service Bundle Version Name.
  # Must be non-empty string.
  version_name: "42.0.beta"

  # Path to the native library to be loaded as service bundle.
  # Must be the relative path from the APEX root directory.
  native_library_path: "lib64/libservice_bundle.so"

  # The log tag used for Android logging for the service bundle.
  # If not specified, a tag derived from service bundle FQIN will be used.
  log_tag: "current_service_bundle"

  # Path to the orchestration config file.
  # Warning: Shall be relative path to the APEX root directory.
  orchestration_config_path: "etc/configuration/orchestration/configuration.textproto"

  # Path to the file with protobuf schemas extracted from bundle's VSIDL definition.
  # Warning: Must be relative path to the APEX root directory.
  vsidl_schemas_path: "etc/vsidl_provider/TheNameOfTheServiceBundle-vsidl-config.binpb"

  # Path to the diagnostics config file.
  # Warning: Must be relative path to the APEX root directory.
  diagnostics_config_path: "etc/vsidl_provider/TheNameOfTheServiceBundle-diag-config.binpb"

  # Path to the SOME/IP config file. To be used in SOME/IP configuration apex only.
  # Warning: Must be relative path to the APEX root directory.
  external_protocol_mapping_path: "etc/vsidl_provider/someip-config.binpb"

  # Custom service bundle metadata string.
  # Key is a string, value is a string.
  custom_metadata {
    key: "key" value: "value"
  }

  # Custom metadata values are stored in etc/.
  custom_metadata {
    key: "path_to_custom_metadata"
    value: "etc/configuration/file"
  }
}

Referências