Каракатица: контроль окружающей среды

На этой странице описывается, как управлять средой в устройстве Cuttlefish с помощью REST API или интерфейса командной строки. Например, вы можете изменить сигнал Wi-Fi или обновить местоположение GPS устройства Cuttlefish.

Услуги

Команда cvd env предоставляет следующие службы для управления средой Cuttlefish:

Услуги Описание
GnssGrpcProxy Управляет GNSS для функции геолокации Cuttlefish.
OpenwrtControlService Управляет Openwrt , поставщиком виртуализированной точки доступа Wi-Fi для функции Cuttlefish Wi-Fi.
WmediumdService Управляет Wmediumd — беспроводным симулятором среды для функции Cuttlefish Wi-Fi.
CasimirControlService Управляет Casimir , симулятором внешних устройств NFC.

Управляйте средой с помощью REST API

В этом разделе описывается, как управлять средой с помощью Rest API через конечную точку службы <https://localhost:1443> .

Перечислите доступные услуги или методы

Чтобы получить список всех служб, отправьте GET запрос на следующий URL-адрес с идентификатором устройства.

https://localhost:1443/devices/DEVICE_ID/services

Чтобы получить список всех методов для службы, отправьте запрос GET на следующий URL-адрес с идентификатором устройства и именем службы.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME

Чтобы получить подробную информацию о методе, например о типах сообщений запроса или ответа, отправьте запрос GET на следующий URL-адрес, указав идентификатор устройства, имя службы и имя метода.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME

Получите подробную информацию о типах запросов и ответов

Чтобы получить подробную информацию о типе сообщения запроса или ответа, отправьте запрос GET на следующий URL с идентификатором устройства, именем службы и типом сообщения запроса или ответа. Это выведет все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания сообщения proto в формате JSON для отправки запроса RPC.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type

Отправить запрос RPC для внесения изменений в среду

Чтобы отправить запрос RPC для вызова метода службы с помощью прототипа в формате JSON, отправьте запрос POST на следующий URL с идентификатором устройства, именем службы и именем метода. Прототип в формате JSON должен быть включен в тело.

https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME

Пример использования

Ниже приведен пример использования Rest API для изменения уровня сигнала Wi-Fi путем вызова SetTxpower .

  1. Определите имя службы, имя метода и имя типа сообщения-запроса для изменения мощности сигнала Wi-Fi.

    1. Получите список всех доступных сервисов, отправив GET запрос на следующий URL-адрес.

      https://localhost:1443/devices/cvd-1/services
      

      Это пример ответа.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Получите список методов для WmediumdService , отправив запрос GET на следующий URL.

      https://localhost:1443/devices/cvd-1/services/WmediumdService
      

      Это пример ответа.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Получите информацию о типах сообщений запроса и ответа для метода SetTxpower , отправив запрос GET на следующий URL-адрес.

      https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
      

      Это пример ответа.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Получите подробную информацию о типе сообщения запроса wmediumdserver.SetTxpowerRequest , отправив запрос GET на следующий URL-адрес.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
    

    Это пример ответа.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Отправьте RPC-запрос службе WmediumdService , чтобы изменить уровень сигнала Wi-Fi до желаемого уровня, отправив POST запрос на этот URL-адрес со следующим телом запроса.

    https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
    
    {"mac_address":"42:00:00:00:00:00", "tx_power":1}
    

    Это пример ответа.

    {}
    

Управляйте средой с помощью командной строки

В этом разделе описываются подкоманды, доступные для команды CLI cvd env . Для получения дополнительных сведений распечатайте сообщение справки с помощью cvd help env .

Перечислите доступные услуги или методы

Чтобы получить список всех служб, используйте cvd env ls без аргументов.

cvd env ls

Чтобы получить список всех методов службы, включите имя службы в качестве аргумента.

cvd env ls SERVICE_NAME

Чтобы получить подробную информацию, например о типах сообщений запроса или ответа метода, укажите имя службы и имя метода.

cvd env ls SERVICE_NAME METHOD_NAME

Получите подробную информацию о типах запросов и ответов

Чтобы получить подробную информацию о типе сообщения запроса или ответа, используйте команду cvd env type . Эта команда выводит все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания сообщения proto в формате JSON для отправки запроса RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Отправить запрос RPC для внесения изменений в среду

Чтобы отправить запрос RPC для вызова метода службы с помощью форматированного JSON proto, используйте команду cvd enc call . Когда запрос RPC завершается, интерфейс выводит сообщение Rpc succeeded with OK status и, если доступно, ответное сообщение, включающее значения.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Пример использования

Ниже приведен пример использования команды CLI cvd env для изменения мощности сигнала Wi-Fi путем вызова SetTxpower .

  1. Определите имя службы, имя метода и имя типа сообщения-запроса для изменения мощности сигнала Wi-Fi.

    Получите список всех доступных услуг.

    cvd env ls
    (Omitted)
    {
      "services" :
      [
        "OpenwrtControlService",
        "EchoService",
        "GnssGrpcProxy",
        "WmediumdService"
      ]
    }

    Получить список методов для WmediumdService .

    cvd env ls WmediumdService
    (Omitted)
    {
      "methods" :
      [
        "ListStations",
        "LoadConfig",
        "ReloadConfig",
        "SetCivicloc",
        "SetLci",
        "SetPosition",
        "SetSnr",
        "SetTxpower",
        "StartPcap",
        "StopPcap"
      ]
    }

    Получите информацию о типах сообщений запроса и ответа для метода SetTxpower .

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
  2. Получите подробную информацию о типе сообщения запроса wmediumdserver.SetTxpowerRequest .

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
  3. Отправьте запрос RPC в службу WmediumdService , чтобы изменить уровень сигнала Wi-Fi до желаемого уровня.

    cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}"
    (Omitted)
    Rpc succeeded with OK status
    {}