יצרני המכשירים צריכים לספק פרופיל כוח של רכיב
/frameworks/base/core/res/res/xml/power_profile.xml
כדי לקבוע ערכים לפרופילים של אספקת חשמל, צריך להשתמש בחומרה שמודדת את ההספק בשימוש במכשיר ולבצע את הפעולות השונות שעבורן יש צורך במידע. למדוד את צריכת החשמל במהלך פעולות אלה ולדווח את הערכים (שגוזרים הבדלים משימושים אחרים בעוצמה בסיסית, לפי הצורך).
המטרה של פרופיל צריכת החשמל היא להעריך את הירידה ברמת הטעינה של הסוללה בצורה הולמת, ולכן הערכים של פרופיל צריכת החשמל מוצגים במונחי זרם (אמפר). מסגרת Android מכפילה את הנוכחי בזמן שבו מערכת המשנה הייתה פעילה מחשב את ערך ה-mAh, שמשמש להערכת כמות הסוללה שהיישום או מערכת המשנה מתרוקנים.
מכשירים עם בקרי Bluetooth, מודם ו-Wi-Fi שפועלת בהם גרסת Android 7.0 ערך גבוה יותר יכול לספק ערכי עוצמה נוספים שהתקבלו מנתוני ערכת השבבים.
מכשירים עם מעבדים הטרוגניים
פרופיל צריכת האנרגיה של מכשירים עם ליבות CPU בארכיטקטורה הטרוגנית חייב לכלול את השדות הנוספים הבאים:
- המספר הכולל של יחידות המעבד (CPU) לכל אשכול (מבוטא ב-cpu.clusters.cores).
- מהירויות המעבד (CPU) שנתמכות על ידי כל אשכול.
- צריכת החשמל של המעבד (CPU) הפעיל לכל אשכול.
כדי להבחין בין צריכת החשמל של המעבד (CPU) הפעיל לבין מעבד (CPU) נתמך של אשכולות, מוסיפים את מספר האשכול לשם המערך. מספרי האשכולות מוקציים לפי סדר הליבות של המעבד (CPU) בעץ המכשיר של הליבה. עבור בארכיטקטורה הטרוגנית שיש בה שני (2) אשכולות עם ארבעה (4) ליבות:
- אשכול 0 מורכב מ-cpu0-3
- cluster1 מורכב מ-cpu4-7
ה-framework של Android משתמש במספרי הליבה של המעבד (CPU) כשקוראים נתונים סטטיסטיים
מ-sysfs
הקבצים ב:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
דוגמה למעבדי CPU ומהירויות של אשכולות:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
ערכי עוצמה
בטבלה הבאה מתוארות ההגדרות הזמינות של ערך אספקת החשמל. כדי להציג את קובץ לדוגמה ב-AOSP: power_profile.xml.
שם | תיאור | ערך לדוגמה | הערות |
---|---|---|---|
ambient.on | צריכת האנרגיה הנוספת כשהמסך במצב שינה/תאורה סביבתית/תמיד מופעל במקום במצב כבוי. | כ-100 מיליאמפר לשעה | - |
screen.on | צריכת האנרגיה הנוספת כשהמסך מופעל בהבהירות מינימלית. | 200 mA | כולל שלט מגע ותאורה אחורית של המסך. בהגדרת בהירות 0, ולא בהגדרה המינימלית של Android, שמשתנה בדרך כלל בין 10% ל-20%. |
screen.full. | צריכת חשמל נוספת כשהמסך מגיע לרמת בהירות מקסימלית, בהשוואה ל- במסך בבהירות המינימלית. | 100 מיליאמפר לשעה-300 מיליאמפר לשעה | כדי לחשב את צריכת החשמל של המסך, נוסף ערך חלקי של הערך הזה (על סמך בהירות המסך) לערך screen.on. |
wifi.on | חשמל נוסף בשימוש כשה-Wi-Fi מופעל אבל לא מקבל, בשידור או בסריקה. | 2 מיליאמפר לשעה | - |
wifi.active | צריכת אנרגיה נוספת במהלך העברה או קבלה בחיבור Wi-Fi. | 31 mA | - |
wifi.scan | צריכת חשמל נוספת בזמן סריקת Wi-Fi לאיתור נקודות גישה. | 100 mA | - |
אודיו | צריכת חשמל נוספת במהלך פענוח או קידוד אודיו באמצעות DSP. | בערך 10 mA | משמש לאודיו DSP. |
סרטון | מתח נוסף שנעשה בו שימוש במהלך פענוח וידאו דרך DSP. | כ-50 מיליאמפר לשעה | משמש לווידאו DSP. |
camera.avg | צריכת החשמל הממוצעת של מערכת המשנה של המצלמה במצלמה רגילה אפליקציה. | 600 מיליאמפר לשעה | מיועד כאומדן גס לאפליקציה שמריצה תצוגה מקדימה ולצלם כ-10 תמונות ברזולוציה מלאה בדקה. |
camera.flashlight | ההספק הממוצע שבו משתמש מודול הפלאש של המצלמה כשהוא מופעל. | 200 מיליאמפר לשעה | - |
gps.signalqualitybased | צריכת החשמל הנוספת של ה-GPS על סמך עוצמת האות. זוהי רשומה מרובת ערכים, אחת לכל עוצמת אות, מהחלשה לחזקה. | 30 מיליאמפר לשעה, 10 מיליאמפר לשעה | - |
gps.on | צריכת חשמל נוספת כשה-GPS מקבל אות. | 50 מיליאמפר לשעה | - |
radio.active | צריכת אנרגיה נוספת כשהמכשיר משדר או מקבל נתונים ברדיו הסלולרי. | 100 mA-300 mA | - |
radio.scanning | צריכת חשמל נוספת כשהרדיו הסלולרי עובר למגדל. | 1.2 מיליאמפר לשעה | - |
רדיו.on | צריכת אנרגיה נוספת כשהרדיו הסלולרי פועל. זוהי רשומה מרובת ערכים, אחת לכל עוצמת אות (אין אות, חלש, בינוני, חזק). | 1.2 מיליאמפר לשעה | מכשירי רדיו מסוימים מגבירות את אספקת החשמל כשהם מחפשים מגדל תקשורת, לזיהוי אות. הערכים יכולים להיות זהים או נמוכים עם אות גדל העוצמה. אם מציינים רק ערך אחד, אותו ערך משמש לכל נקודות החוזקה. אם מציינים שני ערכים, הראשון משמש לייצוג ללא אות, הערך השני משמש לכל שאר החוזקות, וכן הלאה. |
bluetooth.controller.idle | ערך ממוצע של צריכת הסוללה (mA) הנוכחית של בקר ה-Bluetooth כשהוא לא פעיל. | - | הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש מספר מצבי קבלה או שידור, הערך הממוצע
לוקח את המדינות האלה. בנוסף, המערכת אוספת עכשיו נתונים של סריקות Bluetooth ו-Low Energy (LE). ב-Android מגרסה 7.0 ואילך, כבר לא נעשה שימוש בערכי ההספק של Bluetooth עבור bluetooth.active (שמשמש להפעלת אודיו דרך Bluetooth A2DP) ו-bluetooth.on (שמשמש כש-Bluetooth מופעל אבל לא פעיל). |
bluetooth.controller.rx | ערך ממוצע של רצף נוכחי (mA) של בקר ה-Bluetooth בזמן הקבלה. | - | |
Bluetooth.controller.tx | רמת הטעינה הנוכחית הממוצעת (mA) של בקר ה-Bluetooth במהלך השידור. | - | |
Bluetooth.controller.voltage, | מתח הפעלה ממוצע (mV) של בקר ה-Bluetooth. | - | |
modem.controller.sleep | צריכת הזרם הממוצעת (mA) של בקר המודם במצב שינה. | 0 mA | הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קבלה, המערכת מחשבת את הממוצע של המצבים האלה. אם יש מספר מצבי שידור, כולל תמיכה בציון ערך לכל מצב שידור החל מ-Android 9. |
modem.controller.idle | ערך ממוצע של רצף (mA) של בקר המודם כשהוא לא פעיל. | - | |
modem.controller.rx | צריכת הזרם הממוצעת (mA) של בקר המודם במצב קבלה. | - | |
modem.controller.tx | צריכת הזרם הממוצעת (mA) של בקר המודם במהלך שידור ברמות שונות של הספק RF. זוהי רשומה מרובת ערכים עם ערך אחד לכל רמת עוצמת שידור. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | מתח הפעלה ממוצע (mV) של בקר המודם. | - | |
wifi.controller.idle | צריכת הזרם הממוצעת (mA) של בקר ה-Wi-Fi במצב חוסר פעילות. | - | הערכים האלה לא מוערכים, אלא נלקחים מגיליון הנתונים של הבקר. אם יש כמה מצבי קליטה או שידור, המערכת מחשבת את הממוצע של המצבים האלה. |
wifi.controller.rx | ערך ממוצע של זרם (mA) של בקר ה-Wi-Fi בזמן הקבלה. | - | |
wifi.controller.tx | צריכת הזרם הממוצעת (mA) של בקר ה-Wi-Fi במהלך שידור. | - | |
wifi.controller.voltage | מתח ההפעלה הממוצע (mV) של בקר ה-Wi-Fi. | - | |
cpu.speeds | זוהי רשומה עם מספר ערכים שמפרטת את כל מהירויות המעבד האפשריות ב-KHz. | 125,000 KHz, 250,000 KHz, 500,000 KHz, 1000,00 KHz, 1500,000 KHz | מספר הרשומות והסדר שלהן חייבים להתאים לרשומות mA ב-cpu.active. |
cpu.idle | צריכת החשמל הכוללת של המערכת כשמעבדי ה-CPU (וה-SoC) נמצאים במצב השהיה של המערכת. | 3 מיליאמפר לשעה | - |
cpu.awake | צריכת חשמל נוספת כשמעבדי ה-CPU נמצאים במצב זמן השהיה לצורכי תזמון (לולאת זמן השהיה בליבה). המערכת לא נמצאת במצב השהיה של המערכת. | 50 mA | יכול להיות שבפלטפורמה יש יותר ממצב אחד של חוסר פעילות שנמצא בשימוש עם הבדלים רמות של צריכת חשמל; בחירת מצב לא פעיל מייצג למשך זמן ארוך יותר פרקי זמן של חוסר פעילות במתזמן הבקשות (כמה אלפיות שנייה). בודקים את תרשים צריכת החשמל בציוד המדידה ובוחרים דגימות שבהן צריכת החשמל של המעבד היא הנמוכה ביותר, ומבטלים דגימות עם צריכת חשמל גבוהה יותר שבהן המעבד יצא ממצב מנוחה. |
cpu.active | צריכת החשמל הנוספת של מעבדים כשהם פועלים במהירויות שונות. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | הערך מייצג את הכוח שבו משתמשים המסילות של המעבד כשהן פועלות במהירויות שונות. יש להגדיר את המהירות המקסימלית בליבה (kernel) לכל אחת מהמהירויות והאטב המותרים של המעבד במהירות הזאת. המספר והסדר של הרשומות תואמים את המספר והסדר של הרשומות ב-cpu.speeds. |
cpu.clusters.cores | מספר הליבות בכל אשכול של מעבדים. | 4, 2 | נדרשת רק במכשירים עם ארכיטקטורות מעבדים הטרוגניות. מספר הרשומות והסדר צריכים להתאים למספר הרשומות באשכול של cpu.active ו-cpu.speeds. הערך הראשון מייצג את מספר ליבות המעבד באשכול cluster0, הערך השני מייצג את מספר ליבות המעבד באשכול cluster1 וכן הלאה. |
battery.capacity | קיבולת הסוללה הכוללת במיליאמפר לשעה. | 3,000 mAh | - |
סריקות Bluetooth ו-Low Energy (LE)
במכשירים עם Android 7.0, המערכת אוספת נתונים עבור צריכת אנרגיה נמוכה (LE) סריקות ותנועה ברשת Bluetooth (כגון RFCOMM ו-L2CAP) ושיוכים הפעילויות האלה באמצעות האפליקציה שמתחילה את התהליך. סריקות Bluetooth משויכות באפליקציה שביצעה את הסריקה, אבל סריקות בכמות גדולה לא מתבצעות (וגם משויכים לאפליקציית ה-Bluetooth). באפליקציה N אלפיות השנייה, עלות הסריקה היא N אלפיות השנייה של זמן rx ו-N אלפיות השנייה של זמן tx; כל הזמן שנותר לבקר הוקצה ל- תנועה ברשת או אפליקציית Bluetooth.