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

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

שירותים

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

שירותים תיאור
GnssGrpcProxy המדיניות הזו קובעת את השימוש ב-GNSS בתכונת המיקום הגיאוגרפי של Cuttlefish.
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 הבאה עם מזהה מכשיר, שם שירות ושם השיטה. ה-proto בפורמט 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}
    

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

    {}
    

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

בקטע הזה מתוארות פקודות המשנה שזמינות לפקודת cvd env CLI. לפרטים נוספים, מדפיסים את הודעת העזרה באמצעות 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 להפעלת method של שירות עם פרוטו בפורמט 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"
      ]
    }

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