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

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

Услуги

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

Услуги Описание
GnssGrpcProxy Управляет GNSS для функции геолокации каракатицы.
OpenwrtControlService Управляет Openwrt , поставщиком виртуализированных точек доступа Wi-Fi для функции Wi-Fi Cuttlefish.
WmediumdService Управляет Wmediumd , симулятором беспроводной среды для функции Wi-Fi Cuttlefish.
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-адресу с идентификатором устройства, именем службы и типом сообщения запроса или ответа. При этом печатаются все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания прототипа сообщения в формате 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 . Эта команда печатает все имена и типы каждого поля в сообщении. Затем вы можете использовать эту информацию для написания прототипа сообщения в формате JSON для отправки запроса RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

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

Чтобы отправить запрос RPC на вызов метода службы с прототипом в формате JSON, используйте команду 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
    {}