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

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

שירותים

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

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

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

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

תרחיש לדוגמה

הדוגמה הבאה היא תרחיש לדוגמה לשימוש ב-Rest API לשינוי רשת ה-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. יש לשלוח בקשת 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

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

cvd env ls SERVICE_NAME METHOD_NAME

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

כדי לקבל מידע מפורט לגבי סוג ההודעה של בקשה או תשובה, צריך להשתמש הפקודה cvd env type. הפקודה הזו מדפיסה את כל השמות והסוגים של כל שדה בהודעה. לאחר מכן אפשר להשתמש במידע הזה כדי לכתוב קובץ בפורמט JSON הודעת פרוטו לשליחת בקשת RPC.

cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME

שליחה של בקשת RPC לביצוע שינויים בסביבה

כדי לשלוח בקשת RPC לקריאה לשיטה של שירות עם 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. קובעים את שם השירות, שם ה-method וסוג הודעת הבקשה שם לשינוי עוצמת אות ה-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
    {}