Mực nang: Kiểm soát môi trường

Trang này mô tả cách kiểm soát môi trường trong thiết bị Mực ống bằng cách sử dụng API REST hoặc giao diện dòng lệnh. Ví dụ: bạn có thể sửa đổi Tín hiệu Wi-Fi hoặc cập nhật vị trí GPS của thiết bị Mực ống.

Dịch vụ

Lệnh cvd env cung cấp các dịch vụ sau để kiểm soát Môi trường mực nang:

Dịch vụ Mô tả
GnssGrpcProxy Kiểm soát GNSS đối với dữ liệu định vị vị trí con nhộng của chúng tôi.
OpenwrtControlService Kiểm soát Openwrt, một điểm truy cập Wi-Fi được ảo hoá nhà cung cấp tính năng Wi-Fi cho mực ống.
WmediumdService Điều khiển Wmediumd, một trình mô phỏng phương tiện không dây cho tính năng Wi-Fi mực ống.

Kiểm soát môi trường bằng API REST

Phần này mô tả cách kiểm soát môi trường bằng API Nghỉ thông qua điểm cuối của dịch vụ <https://localhost:1443>.

Liệt kê các dịch vụ hoặc phương thức có sẵn

Để nhận danh sách tất cả dịch vụ, hãy gửi yêu cầu GET đến URL sau kèm một mã thiết bị.

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

Để nhận danh sách tất cả phương thức của một dịch vụ, hãy gửi yêu cầu GET đến URL sau kèm theo ID thiết bị và tên dịch vụ.

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

Để lấy thông tin chi tiết về một phương thức, chẳng hạn như yêu cầu hoặc phản hồi thông báo loại thông báo, hãy gửi yêu cầu GET đến URL sau kèm theo mã thiết bị, tên dịch vụ và tên phương thức.

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

Nhận thông tin chi tiết về yêu cầu và loại phản hồi

Để nhận thông tin chi tiết về loại yêu cầu hoặc tin nhắn phản hồi, hãy gửi GET yêu cầu URL sau đây kèm theo mã thiết bị, tên dịch vụ và loại thông báo yêu cầu hoặc thông báo phản hồi. Thao tác này in tất cả tên và loại của mỗi trong thư. Sau đó, bạn có thể sử dụng thông tin này để viết Thông báo proto ở định dạng JSON để gửi yêu cầu RPC.

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

Gửi yêu cầu RPC để thực hiện các thay đổi đối với môi trường

Để gửi yêu cầu RPC nhằm gọi một phương thức của một dịch vụ có proto theo định dạng JSON, gửi yêu cầu POST đến URL sau kèm theo mã thiết bị, một dịch vụ và tên phương thức. Proto theo định dạng JSON phải được đưa vào trong nội dung.

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

Trường hợp sử dụng mẫu

Sau đây là một trường hợp sử dụng mẫu của API Nghỉ để sửa đổi Wi-Fi cường độ tín hiệu bằng cách gọi SetTxpower.

  1. Xác định tên dịch vụ, tên phương thức và loại thông báo yêu cầu để sửa đổi cường độ tín hiệu Wi-Fi.

    1. Nhận danh sách tất cả dịch vụ hiện có bằng cách gửi yêu cầu GET đến URL sau.

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

      Đây là một câu trả lời mẫu.

      {"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
      
    2. Nhận danh sách phương thức cho WmediumdService bằng cách gửi yêu cầu GET vào URL sau.

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

      Đây là một câu trả lời mẫu.

      {"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
      
    3. Nhận thông tin về các loại thông báo phản hồi và yêu cầu cho SetTxpower bằng cách gửi yêu cầu GET đến URL sau.

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

      Đây là một câu trả lời mẫu.

      {"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
      
  2. Nhận thông tin chi tiết về yêu cầu wmediumdserver.SetTxpowerRequest bằng cách gửi một yêu cầu GET đến URL sau.

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

    Đây là một câu trả lời mẫu.

    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Gửi yêu cầu RPC đến dịch vụ WmediumdService để sửa đổi Wi-Fi cường độ tín hiệu đến mức mong muốn bằng cách gửi yêu cầu POST đến URL này với nội dung yêu cầu sau.

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

    Đây là một câu trả lời mẫu.

    {}
    

Kiểm soát môi trường bằng dòng lệnh

Phần này mô tả các lệnh con dùng được cho lệnh CLI cvd env. Để biết thêm thông tin, hãy xuất thông báo trợ giúp bằng cvd help env.

Liệt kê các dịch vụ hoặc phương thức có sẵn

Để xem danh sách tất cả các dịch vụ, hãy sử dụng cvd env ls mà không có đối số nào.

cvd env ls

Để xem danh sách tất cả phương thức cho một dịch vụ, hãy thêm tên của làm đối số.

cvd env ls SERVICE_NAME

Để nhận thông tin chi tiết như các loại thông báo yêu cầu hoặc phản hồi của bao gồm cả tên dịch vụ và tên phương thức.

cvd env ls SERVICE_NAME METHOD_NAME

Nhận thông tin chi tiết về yêu cầu và loại phản hồi

Để nhận thông tin chi tiết về loại yêu cầu hoặc thông báo phản hồi, hãy sử dụng Lệnh cvd env type. Lệnh này in tất cả tên và loại của mỗi trường trong tin nhắn đó. Sau đó, bạn có thể sử dụng thông tin này để ghi tệp có định dạng JSON thông báo proto để gửi yêu cầu RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

Gửi yêu cầu RPC để thực hiện các thay đổi đối với môi trường

Để gửi yêu cầu RPC nhằm gọi một phương thức của một dịch vụ có proto theo định dạng JSON, dùng lệnh cvd enc call. Khi yêu cầu RPC chấm dứt, giao diện in thông báo Rpc succeeded with OK status và trả lời (nếu có) bao gồm cả giá trị.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

Trường hợp sử dụng mẫu

Sau đây là một trường hợp sử dụng mẫu của lệnh CLI cvd env để sửa đổi cường độ tín hiệu Wi-Fi bằng cách gọi SetTxpower.

  1. Xác định tên dịch vụ, tên phương thức và loại thông báo yêu cầu để sửa đổi cường độ tín hiệu Wi-Fi.

    Nhận danh sách tất cả dịch vụ hiện có.

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

    Nhận danh sách các phương thức cho WmediumdService.

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

    Nhận thông tin về các loại thông báo phản hồi và yêu cầu cho SetTxpower.

    cvd env ls WmediumdService SetTxpower
    (Omitted)
    {
      "request_type" : "wmediumdserver.SetTxpowerRequest",
      "response_type" : "google.protobuf.Empty"
    }
    
  2. Nhận thông tin chi tiết về yêu cầu wmediumdserver.SetTxpowerRequest loại tin nhắn.

    cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
    (Omitted)
    message SetTxpowerRequest {
      string mac_address = 1;
      int32 tx_power = 2;
    }
    
  3. Gửi yêu cầu RPC đến dịch vụ WmediumdService để sửa đổi Wi-Fi cường độ tín hiệu đến mức mong muốn.

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