דיונון: בקרת סביבה

בדף הזה מוסבר איך לשלוט בסביבה במכשיר Cuttlefish באמצעות ה-API ל-REST או ממשק שורת הפקודה. לדוגמה, אפשר לשנות את אותות ה-Wi-Fi או לעדכן את מיקום ה-GPS של מכשיר Cuttlefish.

שירותים

באמצעות הפקודה cvd env תוכלו לשלוט בסביבה של Cuttlefish באמצעות השירותים הבאים:

שירותים תיאור
GnssGrpcProxy שולטת ב-GNSS בשביל תכונת המיקום הגיאוגרפי של הדיונון.
OpenwrtControlService המדיניות הזו שולטת ב-Openwrt, ספק גישה וירטואלי של Wi-Fi לתכונת ה-Wi-Fi של Cuttlefish.
WmediumdService קובעת את התנהגות Wmediumd, סימולטור של אמצעי תקשורת אלחוטי לתכונת ה-Wi-Fi של Cuttlefish.
CasimirControlService קובע את המדיניות של Casimir, סימולטור למכשירי NFC חיצוניים.

שליטה בסביבה באמצעות ה-API ל-REST

בקטע הזה מוסבר איך לשלוט בסביבה באמצעות API ל-REST דרך נקודת הקצה של השירות <https://localhost:1443>.

הצגת רשימה של השירותים או השיטות הזמינות

כדי לקבל רשימה של כל השירותים, שולחים בקשת GET לכתובת ה-URL הבאה עם מזהה מכשיר.

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

כדי לקבל רשימה של כל השיטות בשירות מסוים, צריך לשלוח בקשת GET לכתובת ה-URL הבאה, עם מזהה המכשיר ושם השירות.

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

כדי לקבל מידע מפורט על method מסוימת, כמו סוגי ההודעה של הבקשה או התשובה, צריך לשלוח בקשת GET לכתובת ה-URL הבאה עם מזהה מכשיר, שם שירות ושם ה-method.

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 לקריאה לשיטה של שירות עם Proto בפורמט JSON, צריך לשלוח בקשת POST לכתובת ה-URL הבאה עם מזהה מכשיר, שם שירות ושם שיטה. צריך לכלול את ה-proto בפורמט JSON בגוף ההודעה.

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

תרחיש לדוגמה

בדוגמה הבאה מוצג תרחיש לדוגמה לשימוש ב-API ל-REST כדי לשנות את עוצמת האות של ה-Wi-Fi באמצעות קריאה ל-SetTxpower.

  1. קובעים את שם השירות, שם ה-method והשם של סוג הודעת הבקשה לשינוי עוצמת אות ה-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. כדי לשנות את עוצמת האות של ה-Wi-Fi לרמה הרצויה, שולחים בקשת RPC לשירות WmediumdService. לשם כך, שולחים בקשת POST לכתובת ה-URL הזו עם גוף הבקשה הבא.

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

    זוהי דוגמה לתגובה.

    {}
    

שליטה בסביבה באמצעות שורת הפקודה

בקטע הזה מתוארות פקודות המשנה שזמינות לפקודת cvd env CLI. לפרטים נוספים, מדפיסים את הודעת העזרה באמצעות cvd help env.

פירוט השירותים או השיטות הזמינים

כדי לקבל רשימה של כל השירותים, משתמשים ב-cvd env ls ללא ארגומנטים.

cvd env ls

כדי לקבל רשימה של כל השיטות של שירות, צריך לכלול את שם השירות כארגומנטים.

cvd env ls SERVICE_NAME

כדי לקבל מידע מפורט, כמו סוגי ההודעות של הבקשה או התשובה של שיטת API, צריך לכלול את שם השירות ואת שם השיטה.

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 לקריאה ל-method של שירות עם proto בפורמט JSON, משתמשים בפקודה cvd enc call. כשבקשת ה-RPC מסתיימת, הממשק מדפיס את ההודעה Rpc succeeded with OK status, ואם אפשר, גם הודעת תגובה עם ערכים.

cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO

תרחיש לדוגמה

בדוגמה הבאה מוצגת שימוש לדוגמה בפקודה cvd env ב-CLI כדי לשנות את עוצמת האות של ה-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"
      ]
    }

    קבלת מידע על סוגי הודעות הבקשה והתשובות ב-method 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
    {}