Android 14 เปิดตัวฟีเจอร์การเข้าถึงระยะไกลแบบใหม่ ซึ่งช่วยให้พาร์ทเนอร์สามารถปลุก Android ในรถยนต์จากระยะไกลเพื่อดำเนินการ งานที่เฉพาะเจาะจงได้ เช่น เพื่อเรียกใช้โหมดโรงรถข้ามคืนเพื่อใช้การอัปเดตซอฟต์แวร์ เวิร์กโฟลว์ตั้งแต่ต้นจนจบต้องใช้คอมโพเนนต์ที่ไม่ใช่ Android หลายรายการ Android ไม่ได้กำหนดหรือจัดเตรียมการติดตั้งใช้งานสำหรับคอมโพเนนต์ที่ไม่ใช่ Android (ความรับผิดชอบนี้เป็นของคุณ)
ดูข้อมูลเพิ่มเติมได้ที่ส่วนต่อไปนี้
เวิร์กโฟลว์ เวิร์กโฟลว์ระหว่างคอมโพเนนต์หลายรายการในสถาปัตยกรรมตัวอย่าง สำหรับการลงทะเบียนไคลเอ็นต์และการนำส่งงาน
เขียนไคลเอ็นต์งานระยะไกล ใช้การเข้าถึงจากระยะไกล และดูวิธีเขียนไคลเอ็นต์งานระยะไกล
การติดตั้งใช้งานของผู้ให้บริการ คอมโพเนนต์ของผู้ให้บริการใน สถาปัตยกรรมตัวอย่างเพื่อรองรับการเข้าถึงระยะไกล
การรีเซ็ตเป็นค่าเริ่มต้นและการโอนความเป็นเจ้าของ ดูวิธีจัดการ การรีเซ็ตเป็นค่าเริ่มต้นและการโอนความเป็นเจ้าของรถ
ทดสอบไคลเอ็นต์การเข้าถึงระยะไกล ดูวิธีทดสอบฟีเจอร์การเข้าถึงจากระยะไกล
สถาปัตยกรรม
เนื้อหาต่อไปนี้ถือว่าใช้สถาปัตยกรรมตัวอย่างต่อไปนี้ ซึ่งเป็นสถาปัตยกรรมสมมติและอาจไม่ตรงกับสถาปัตยกรรมจริง OEM ควรปรับ การใช้งานจริงให้เหมาะกับสถาปัตยกรรมยานพาหนะและเซิร์ฟเวอร์
รูปที่ 1 ตัวอย่างสถาปัตยกรรม
สถาปัตยกรรมตัวอย่างประกอบด้วยคอมโพเนนต์ฮาร์ดแวร์ต่อไปนี้
คอมโพเนนต์ฮาร์ดแวร์ | คำอธิบาย |
---|---|
ตัวประมวลผลแอป | โปรเซสเซอร์ที่เรียกใช้ Android Android อาจทำงานในหน่วยความจำเสมือน (VM) (ไม่ใช่ในฮาร์ดแวร์จริง) บนโปรเซสเซอร์นี้ |
โปรเซสเซอร์ยานพาหนะ | โปรเซสเซอร์ที่รับผิดชอบในการควบคุมพลังงานสำหรับโปรเซสเซอร์ของแอป |
หน่วยควบคุมเทเลเมติกส์ (TCU) | โปรเซสเซอร์ในรถยนต์รับข้อความจากระยะไกลจากระบบคลาวด์ได้เสมอ ระบบจะถือว่า TCU เปิดอยู่เสมอหรืออยู่ในโหมดใช้พลังงานต่ำ ใช้ ข้อความระยะไกลเพื่อปลุก TCU |
เซิร์ฟเวอร์ปลุก | เซิร์ฟเวอร์ระยะไกลที่ทำงานในระบบคลาวด์และมีหน้าที่ สื่อสารกับ TCU ในรถเพื่อออกคำสั่งปลุก |
เซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์งานระยะไกลทำงานในระบบคลาวด์และโต้ตอบกับผู้ใช้ รวมถึง จัดการงานระยะไกล |
สถาปัตยกรรมตัวอย่างประกอบด้วยคอมโพเนนต์ซอฟต์แวร์ต่อไปนี้ ซึ่งทั้งหมดทำงานบน Android
คอมโพเนนต์ซอฟต์แวร์ใน Android | คำอธิบาย |
---|---|
บริการรถยนต์ | บริการเฟรมเวิร์ก AAOS ที่มี API การเข้าถึงจากระยะไกล |
ไคลเอ็นต์งานระยะไกล | คลาสที่ผู้ให้บริการเขียนขึ้น
Service
ซึ่งเรียกใช้งานระยะไกล ระบบ Android หนึ่งระบบสามารถเรียกใช้ไคลเอ็นต์งานระยะไกลได้หลายรายการ
|
HAL การเข้าถึงจากระยะไกล | ต้องติดตั้งใช้งานสำหรับการเข้าถึงจากระยะไกล เลเยอร์การแยกรายละเอียดสำหรับการสื่อสารระหว่าง AAOS กับคอมโพเนนต์ที่ไม่ใช่ Android เช่น TCU |
องค์ประกอบซอฟต์แวร์ที่ไม่ใช่ Android มีคำอธิบายดังนี้
คอมโพเนนต์ซอฟต์แวร์ที่ไม่ใช่ Android | คำอธิบาย |
---|---|
ไคลเอ็นต์ปลุก | ซอฟต์แวร์ที่ทำงานบน TCU ซึ่งรักษาการเชื่อมต่อที่ใช้งานได้นานกับ เซิร์ฟเวอร์ปลุก นอกจากนี้ ยังคงรักษาการเชื่อมต่อกับ HAL การเข้าถึงจากระยะไกล เพื่อส่งงานจากระยะไกลไปยัง Car Service |
การใช้งานเซิร์ฟเวอร์ปลุก | เซิร์ฟเวอร์ที่สื่อสารกับไคลเอ็นต์การปลุกที่ทำงานบน TCU สามารถ ส่งคำขอปลุกไปยังไคลเอ็นต์ปลุก |
การติดตั้งใช้งานเซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์ที่จัดการงานระยะไกล ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์นี้เพื่อ ออกและตรวจสอบงานระยะไกล |
เวิร์กโฟลว์
ส่วนนี้แสดงขั้นตอนในเวิร์กโฟลว์ตัวอย่าง
เวิร์กโฟลว์ตัวอย่าง
เวิร์กโฟลว์โดยละเอียดอาจมีลักษณะดังนี้
ผู้ใช้จอดรถในโรงจอดรถ
พาร์ทเนอร์พยายามอัปเดตยานพาหนะในชั่วข้ามคืนเมื่อไม่น่าจะมีการโต้ตอบกับยานพาหนะ
เซิร์ฟเวอร์ระบบคลาวด์ของพาร์ทเนอร์จะส่งงานระยะไกลของระบบอัปเดตไปยังยานพาหนะ โดยเฉพาะอย่างยิ่ง หน่วยควบคุมการวัดและส่งข้อมูลทางไกล (TCU)
TCU ของรถจะเปิดหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) ของ Android และ บริการ OEM จะทริกเกอร์โหมดโรงรถ
Android จะเรียกใช้โหมดโรงรถเพื่อดาวน์โหลดและติดตั้งการอัปเดตผ่าน Google Play
หลังจากใช้การอัปเดตแล้ว Android จะทำเครื่องหมายว่างานเสร็จสมบูรณ์และ สิ้นสุดการเชื่อมต่อหรือถึงระยะหมดเวลาที่ระบุ
เวิร์กโฟลว์โดยละเอียด
การเข้าถึงระยะไกลต้องมีขั้นตอนสำคัญ 2 ขั้นตอน วิธีแรกคือการ ลงทะเบียนไคลเอ็นต์ ซึ่งเป็นการลิงก์ผู้ใช้ที่เฉพาะเจาะจงกับไคลเอ็นต์ งานระยะไกลที่เฉพาะเจาะจงซึ่งทำงานในยานพาหนะที่เฉพาะเจาะจง อีกอย่างคือการส่งมอบงาน ซึ่งเป็นการส่งมอบงานระยะไกลสำหรับผู้ใช้ที่เฉพาะเจาะจงไปยังไคลเอ็นต์งานระยะไกลที่เฉพาะเจาะจงซึ่งทำงานบนยานพาหนะที่เฉพาะเจาะจง
ลงทะเบียนไคลเอ็นต์
หากต้องการใช้ฟีเจอร์การเข้าถึงระยะไกล ผู้ใช้ต้องเปิดแอปไคลเอ็นต์งานระยะไกล อย่างน้อย 1 ครั้งและทําขั้นตอนการลงทะเบียนไคลเอ็นต์ให้เสร็จสมบูรณ์ (ข้อความตัวหนา ระบุงานที่ AAOS ดําเนินการ)
เมื่อเริ่มต้นระบบ Car Service จะรับข้อมูลยานพาหนะจาก HAL การเข้าถึงระยะไกล
เมื่อบูตขึ้นมา Car Service จะเปิดใช้ไคลเอ็นต์งานระยะไกลทั้งหมดตาม intent-filter และสิทธิ์
เมื่อไคลเอ็นต์งานระยะไกลเริ่มทำงาน ไคลเอ็นต์งานระยะไกลจะลงทะเบียนตัวเองกับ Car Service
Car Service จะแจ้งข้อมูลการลงทะเบียนให้ไคลเอ็นต์งานระยะไกลทราบ ซึ่งรวมถึงรหัสยานพาหนะและรหัสไคลเอ็นต์ รหัสไคลเอ็นต์จะไม่ซ้ำกัน และ Car Service จะกำหนดรหัสนี้ให้กับไคลเอ็นต์ รับประกันว่าจะเป็นค่าที่ไม่ซ้ำกัน ในบรรดาไคลเอ็นต์งานระยะไกลทั้งหมดในยานพาหนะคันเดียวกัน
ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกลผ่านไคลเอ็นต์งานระยะไกลและ เปิดใช้ฟีเจอร์การเข้าถึงระยะไกลสำหรับยานพาหนะนี้ โดยปกติขั้นตอนนี้ จะเกี่ยวข้องกับการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์งานระยะไกล
ไคลเอ็นต์ของงานระยะไกลจะอัปโหลดข้อมูลของผู้ใช้พร้อมกับรหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์ของงานระยะไกล และขอให้เซิร์ฟเวอร์ลิงก์ผู้ใช้กับ ไคลเอ็นต์และยานพาหนะที่เฉพาะเจาะจงนี้
ขั้นตอนนี้อาจเกี่ยวข้องกับการตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพิ่มเติมจากผู้ใช้ (ไม่บังคับ)
เซิร์ฟเวอร์งานระยะไกลต้องตรวจสอบสิทธิ์ว่ารหัสยานพาหนะที่ระบุในคำขอตรงกับรหัสยานพาหนะของผู้ส่ง ซึ่งทำได้ผ่านการรับรองยานพาหนะ
เว้นแต่จะมีการรีเซ็ตเป็นค่าเริ่มต้น กระบวนการลงทะเบียนไคลเอ็นต์จะต้องดำเนินการ 1 ครั้งต่อผู้ใช้ 1 คนต่อยานพาหนะ 1 คัน ระบบจะจัดเก็บ Client ID ไว้ในบริการรถยนต์ในเครื่อง และจะยังคงเหมือนเดิมสำหรับไคลเอ็นต์เดียวกัน
รูปที่ 2 ลงทะเบียนไคลเอ็นต์
ยกเลิกการลงทะเบียนไคลเอ็นต์
ผู้ใช้สามารถยกเลิกการลิงก์ยานพาหนะกับบัญชีได้จากยานพาหนะหรือจาก เซิร์ฟเวอร์งานระยะไกล โดยทำดังนี้
ในยานพาหนะ ผู้ใช้สามารถเปิดแอปไคลเอ็นต์งานระยะไกลและส่งคำขอเลิกการลิงก์เพื่อเลิกการลิงก์ยานพาหนะนี้กับบัญชีผู้ใช้ที่ลิงก์ไว้ก่อนหน้านี้
ในเซิร์ฟเวอร์งานระยะไกล ผู้ใช้จะเข้าสู่ระบบบัญชีและยกเลิกการลิงก์ ยานพาหนะที่ลิงก์ไว้ก่อนหน้านี้กับบัญชีนี้ได้
หากผู้ใช้ยกเลิกการลิงก์ยานพาหนะกับบัญชี เซิร์ฟเวอร์งานระยะไกลต้อง นำการจับคู่ที่จัดเก็บไว้สำหรับผู้ใช้รายนั้นออก
ส่งงาน
ในระบบคลาวด์
ผู้ใช้ใช้เซิร์ฟเวอร์งานระยะไกลเพื่อส่งงานระยะไกลไปยังยานพาหนะที่เฉพาะเจาะจง
เซิร์ฟเวอร์งานระยะไกลจะแมปรหัสผู้ใช้กับรหัสยานพาหนะและรหัสไคลเอ็นต์ โดยจะ ส่งข้อมูลงาน รหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์ปลุก
เซิร์ฟเวอร์การปลุกจะค้นหา TCU ที่เฉพาะเจาะจงสำหรับรหัสยานพาหนะ (สมมติว่าได้ลงทะเบียน TCU แล้ว) และส่งข้อมูลงานและรหัสไคลเอ็นต์ไปยัง TCU
ในยานพาหนะ (ข้อความตัวหนาแสดงถึงงานที่ AAOS ดำเนินการ) ให้ทำดังนี้
TCU จะรับงานระยะไกลจากเซิร์ฟเวอร์ระยะไกล
หากตัวประมวลผลแอป (AP) ที่เรียกใช้ AAOS ปิดอยู่ TCU จะใช้ ตัวประมวลผลยานพาหนะ (VP) เพื่อเปิด AP
บริการรถยนต์จะได้รับงานจาก TCU
บริการรถยนต์จะกระจายงานไปยังไคลเอ็นต์งานระยะไกลที่เกี่ยวข้อง
ไคลเอ็นต์งานระยะไกลจะรับและดำเนินการงาน
(ไม่บังคับ) ไคลเอ็นต์งานระยะไกลจะติดต่อเซิร์ฟเวอร์งานเพื่อดูรายละเอียดงานเพิ่มเติม และดำเนินการงาน
(ไม่บังคับ) บริการไคลเอ็นต์ของงานระยะไกลจะรายงานผลลัพธ์ของงานไปยังเซิร์ฟเวอร์งาน
ไคลเอ็นต์ของงานระยะไกลจะแจ้งให้ Car Service ทราบเมื่อดำเนินการเสร็จสมบูรณ์
หากจำเป็น บริการรถยนต์จะคืนค่าสถานะเปิด/ปิดของรถ
รูปที่ 3 ส่งงาน
เขียนไคลเอ็นต์งานระยะไกล
CarRemoteAccessManager
มี API สำหรับฟีเจอร์การเข้าถึงจากระยะไกล ดูข้อมูลเพิ่มเติมได้ที่
CarRemoteAccessManager
ไคลเอ็นต์งานระยะไกลคือบริการ Android ที่เรียกใช้งานระยะไกลและใช้
CarRemoteAccessManager
โดยต้องใช้ PERMISSION_USE_REMOTE_ACCESS
และ
PERMISSION_CONTROL_REMOTE_ACCESS
และต้องประกาศตัวกรอง Intent สำหรับ
RemoteTaskClientService
เช่น
<service android:name=".remoteaccess.RemoteTaskClientService"
android:directBootAware="true"
android:exported="true">
<intent-filter>
<action android:name="android.car.remoteaccess.RemoteTaskClientService" />
</intent-filter>
</service>
ไคลเอ็นต์ของงานระยะไกลควรลงทะเบียนกับ Car Service ในระหว่างการสร้าง
public final class RemoteTaskClientService extends Service {
@Override
public void onCreate() {
// mCar = Car.createCar()...
mRemoteAccessManager = (CarRemoteAccessManager)
mcar.getCarManager(Car.CAR_REMOTE_ACCESS_SERVICE);
if (mRemoteAccessManager == null) {
// Remote access feature is not supported.
return;
}
mRemoteAccessManager.setRemoteTaskClient(executor, mRemoteTaskClient);
}
}
ต้องลบล้างฟังก์ชัน onBind เพื่อแสดงผลเป็น null
@Override
public IBinder onBind(Intent intent) {
return null;
}
Car Service จะจัดการวงจรของตัวเอง Car Service จะเชื่อมโยงกับบริการนี้ในระหว่างการเริ่มต้นระบบและเมื่อมีงานระยะไกลเข้ามา Car Service จะยกเลิกการเชื่อมโยงกับบริการนี้เมื่อ งานเสร็จสมบูรณ์ ดูข้อมูลเพิ่มเติมได้ที่การจัดการวงจรของบริการ
ไคลเอ็นต์งานระยะไกลจะทำงานในฐานะผู้ใช้ระบบ จึงไม่มีสิทธิ์เข้าถึง ข้อมูลที่เฉพาะเจาะจงของผู้ใช้
ตัวอย่างต่อไปนี้แสดงวิธีจัดการการเรียกกลับที่ลงทะเบียนไว้
private final class RemoteTaskClient
implements CarRemoteAccessManager.RemoteTaskClientCallback {
@Override
public void onRegistrationUpdated(
RemoteTaskClientRegistrationInfo info) {
// Register to remote task server using info.
}
@Override
public void onRemoteTaskRequested(String taskId,
byte[] data, int remainingTimeSec) {
// Parses the data and execute the task.
// Report task result to remote task server.
mRemoteAccessManager.reportRemoteTaskDone(taskId);
}
@Override
public void onShutdownStarting(CompleteableRemoteTaskFuture future) {
// Stop the executing task.
// Clear the pending task queue.
future.complete();
}
}
การติดตั้งใช้งานของผู้ให้บริการ
ฟีเจอร์การเข้าถึงระยะไกลเป็นฟีเจอร์ที่ไม่บังคับและปิดใช้อยู่โดยค่าเริ่มต้น หากต้องการเปิดใช้ฟีเจอร์ ให้เพิ่ม RRO เช่นรายการต่อไปนี้
// res/xml/overlays.xml
<?xml version="1.0" encoding="utf-8"?>
<overlay>
<item target="array/config_allowed_optional_car_features" value="@array/config_allowed_optional_car_features" />
</overlay>
// res/values/config.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array translatable="false" name="config_allowed_optional_car_features">
<item>car_remote_access_service</item>
</string-array>
</resources>
// Android.bp
runtime_resource_overlay {
name: "RemoteAccessOverlay",
resource_dirs: ["res"],
manifest: "AndroidManifest.xml",
sdk_version: "current",
product_specific: true
}
หรือใช้คำสั่ง adb ต่อไปนี้ในบิลด์ userdebug/eng
adb shell cmd car_service enable-feature car_remote_access_service
ข้อกำหนดใน Android
HAL การเข้าถึงจากระยะไกล
Hardware Abstraction Layer (HAL) ของการเข้าถึงระยะไกลคือ Abstraction Layer ที่ผู้ให้บริการติดตั้งใช้งานสำหรับการสื่อสารระหว่าง AAOS กับ ECU อื่น (เช่น TCU) ซึ่งจำเป็นต่อการรองรับฟีเจอร์การเข้าถึงระยะไกล ไม่จำเป็นต้อง ติดตั้งใช้งานหากไม่ได้ติดตั้งใช้งานฟีเจอร์การเข้าถึงระยะไกล
อินเทอร์เฟซได้รับการกำหนดไว้ที่ IRemoteAccess.aidl และมีเมธอดต่อไปนี้
ชั้น | คำอธิบาย |
---|---|
String getVehicleId() |
รับรหัสยานพาหนะที่ไม่ซ้ำกันซึ่งเซิร์ฟเวอร์ปลุก จดจำได้ |
String getWakeupServiceName() |
รับชื่อสำหรับเซิร์ฟเวอร์ปลุกระยะไกล |
String getProcessorId() |
รับรหัสโปรเซสเซอร์ที่ไม่ซ้ำกันซึ่งไคลเอ็นต์จะจดจำได้เมื่อเปิดเครื่อง |
void setRemoteTaskCallback(IRemoteTaskCallback callback)
ตั้งค่า Callback ที่จะเรียกใช้เมื่อมีการขอ Task ระยะไกล |
|
void clearRemoteTaskCallback() |
ล้างการเรียกกลับของงานระยะไกลที่ตั้งค่าไว้ก่อนหน้านี้ |
void notifyApStateChange(in ApState state)
ตรวจหาว่าโปรเซสเซอร์แอปพร้อมรับงานจากระยะไกลหรือไม่ |
อินเทอร์เฟซ Callback มีการกำหนดไว้ที่
IRemoteTaskCallback.aid
ชั้น | คำอธิบาย |
---|---|
oneway void onRemoteTaskRequested(String clientId, in byte[] data)
Callback ที่เรียกใช้เมื่อมีการขอ Task ระยะไกล |
ดู
การติดตั้งใช้งานอ้างอิง
ด้วย TCU ภายนอก การติดตั้งใช้งานจะใช้สตรีมการอ่านที่มีอายุยาวเพื่อ
รับงานระยะไกลและรองรับคำสั่ง debug
ต่อไปนี้
dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default
HAL ยานพาหนะ
VHAL ต้องรองรับพร็อพเพอร์ตี้ต่อไปนี้เพื่อรองรับฟีเจอร์การเข้าถึงจากระยะไกล
ชั้น | คำอธิบาย |
---|---|
SHUTDOWN_REQUEST |
ขอให้ปิดเครื่องเฮดยูนิต |
VEHICLE_IN_USE |
|
ดูข้อมูลเพิ่มเติมได้ที่พร็อพเพอร์ตี้ของระบบที่รองรับ
โหมดปิดเสียง
ฟีเจอร์การเข้าถึงจากระยะไกลต้องรองรับโหมดปิดเสียงเพื่อให้รถ สามารถบูตในโหมดปิดเสียงเพื่อดำเนินการจากระยะไกลได้เมื่อไม่มีผู้ใช้ เมื่ออยู่ใน โหมดเงียบ อุปกรณ์ AAOS จะบูตขึ้นโดยปิดจอแสดงผลและเสียง
โหมดเงียบจะควบคุมผ่านsysfs
ไฟล์ 2 ไฟล์ในเคอร์เนล Linux
ชั้น | คำอธิบาย |
---|---|
/sys/kernel/silent_boot/pm_silentmode_kernel_state
แสดงโหมดปิดเสียงปัจจุบัน |
|
/sys/kernel/silent_boot/pm_silentmode_hw_state
แสดงสัญญาณฮาร์ดแวร์เพื่อตั้งค่าโหมดปิดเสียงใหม่ |
โปรเซสเซอร์ของยานพาหนะจะส่งสัญญาณ HW ไปยัง SoC ของ Android เพื่อเปิด/ปิดโหมดเงียบ
ระบบจะเขียนสัญญาณ (0 หรือ 1) ไปยัง
/sys/kernel/silent_boot/pm_silentmode_hw_state
จากนั้นเฟรมเวิร์ก AAOS จะอัปเดต
/sys/kernel/silent_boot/pm_silentmode_kernel_state
ตามนั้น ซึ่ง
แสดงถึงโหมดปิดเสียงปัจจุบัน โมดูล AAOS จะตรวจสอบ
/sys/kernel/silent_boot/pm_silentmode_kernel_state
เพื่อดูว่าระบบ
อยู่ในโหมดปิดเสียงหรือไม่
เมื่อได้รับงานจากระยะไกลและ AAOS บูตขึ้น โปรเซสเซอร์ของรถจะตั้งค่า โหมดเงียบและเริ่ม AAOS เพื่อให้ระบบบูตโดยปิดจอแสดงผล/เสียง
คอมโพเนนต์ที่ไม่ใช่ Android ในรถยนต์
โปรเซสเซอร์ยานพาหนะ
โปรเซสเซอร์ของยานพาหนะคือโปรเซสเซอร์ในยานพาหนะที่ควบคุมกำลังไฟ สำหรับโปรเซสเซอร์ของแอปที่ใช้ Android ได้ ในสถาปัตยกรรมตัวอย่าง TCU จะปลุกโปรเซสเซอร์แอปโดยการส่งสัญญาณไปยังโปรเซสเซอร์ ของยานพาหนะ
คอมโพเนนต์ที่ไม่ใช่ Android ในรถยนต์
TCU ของยานพาหนะจะรับข้อความจากระยะไกลได้เสมอ
ไคลเอ็นต์การปลุกจะทำงานบน TCU เพื่อให้มั่นใจว่าการเชื่อมต่อกับ เซิร์ฟเวอร์ปลุกระยะไกลจะใช้งานได้นาน
AAOS ที่ทำงานบน AP สามารถสื่อสารกับไคลเอ็นต์ปลุกที่ทำงานบน TCU ผ่าน HAL การเข้าถึงระยะไกลได้
รูปที่ 4 TCU (ไคลเอ็นต์ที่ใช้ปลุก)
คอมโพเนนต์ในระบบคลาวด์
เซิร์ฟเวอร์ปลุก
เซิร์ฟเวอร์ปลุกจะสื่อสารกับไคลเอ็นต์ปลุกใน TCU เพื่อทำสิ่งต่อไปนี้
- รักษาการเชื่อมต่อกับ TCU ของยานพาหนะให้ใช้งานได้นาน
- ค้นหา TCU ที่เฉพาะเจาะจงตามรหัสยานพาหนะ
- รายงานสถานะของยานพาหนะ เช่น ออนไลน์หรือออฟไลน์ หรือเวลาออนไลน์ล่าสุดไปยังเซิร์ฟเวอร์งานระยะไกล
ในการใช้งานจริง คุณสามารถผสานเซิร์ฟเวอร์ปลุกเข้ากับเซิร์ฟเวอร์งานระยะไกลได้
เซิร์ฟเวอร์งานระยะไกล
เซิร์ฟเวอร์งานระยะไกลจะจัดการงานระยะไกลเหล่านี้
ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์เพื่อเริ่มงานระยะไกลใหม่และตรวจสอบงานระยะไกล
ใช้เซิร์ฟเวอร์การปลุกจากระยะไกลเพื่อปลุกโปรเซสเซอร์ของแอปใน ยานพาหนะ
โต้ตอบกับไคลเอ็นต์ของงานระยะไกลที่ทำงานในยานพาหนะ
จัดเก็บข้อมูลการลงทะเบียนไคลเอ็นต์ ซึ่งจะเชื่อมโยงผู้ใช้ที่เฉพาะเจาะจง กับไคลเอ็นต์งานระยะไกลที่เฉพาะเจาะจงในยานพาหนะที่เฉพาะเจาะจง
โดยปกติแล้ว ข้อมูลงานที่ส่งผ่านเซิร์ฟเวอร์งานระยะไกลไปยังเซิร์ฟเวอร์การปลุก ไปยัง TCU ของยานพาหนะ และในที่สุดไปยังไคลเอ็นต์งานระยะไกลก็คือ รหัสงาน ไคลเอ็นต์งานระยะไกลใช้รหัสงานเพื่อดึงข้อมูลโดยละเอียดจากเซิร์ฟเวอร์งานระยะไกล
ข้อกำหนดด้านความเป็นส่วนตัวและความปลอดภัย
งาน | เงื่อนไข | ข้อกำหนด |
---|---|---|
TCU (ไคลเอ็นต์ที่เปิดเครื่อง) | ต้อง |
|
เซิร์ฟเวอร์ปลุก | ต้อง |
|
ไคลเอ็นต์งานระยะไกล | ต้อง |
|
เซิร์ฟเวอร์งานระยะไกล | ต้อง |
|
รีเซ็ตเป็นค่าเริ่มต้นและโอนการเป็นเจ้าของ
หากผู้ใช้รีเซ็ตเป็นค่าเริ่มต้น ระบบจะล้างรหัสไคลเอ็นต์ที่จัดเก็บไว้ใน Car Service แต่เซิร์ฟเวอร์ (เซิร์ฟเวอร์งานระยะไกลและเซิร์ฟเวอร์ปลุกระยะไกล) จะไม่ได้รับแจ้ง เซิร์ฟเวอร์จะเก็บการแมปรหัสไคลเอ็นต์ที่หมดอายุแล้วไว้กับ ยานพาหนะ ด้วยเหตุนี้ หากผู้ใช้เริ่มงานระยะไกลใหม่สำหรับยานพาหนะ ระบบจะใช้รหัสไคลเอ็นต์ที่หมดอายุ ระบบจะปลุกยานพาหนะ แต่ไม่สามารถดำเนินการกับงานระยะไกลได้เนื่องจากไคลเอ็นต์งานระยะไกลมีรหัสไคลเอ็นต์ที่แตกต่างกันซึ่งไม่ตรงกัน
ต่อไปนี้เป็นคำอธิบายการติดตั้งใช้งานที่เป็นไปได้สำหรับการรีเซ็ตเป็นค่าเริ่มต้น
เมื่อผู้ใช้ทำการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการจะแจ้งให้ผู้ใช้เข้าสู่ระบบ เซิร์ฟเวอร์งานระยะไกลและยกเลิกการลิงก์ยานพาหนะกับบัญชีของผู้ใช้ หากผู้ใช้ ลิงก์ยานพาหนะไว้ก่อนหน้านี้ ระบบไม่รับประกันว่าอุปกรณ์จะมีสิทธิ์เข้าถึงเครือข่าย ในระหว่างการรีเซ็ตเป็นค่าเริ่มต้น ดังนั้น การส่งคำขอยกเลิกการลิงก์ ในเวลาที่รีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นอาจทำไม่ได้
เมื่อใดก็ตามที่มีการโอนการเป็นเจ้าของรถยนต์ ควรดำเนินการบางอย่างเพื่อให้แน่ใจว่าเจ้าของคนก่อนจะไม่สามารถออกงานจากระยะไกลไปยังรถยนต์ได้อีก เช่น ระบบอาจขอให้เจ้าของคนใหม่ดำเนินการต่อไปนี้
ทำการรีเซ็ตเป็นค่าเริ่มต้น ซึ่งจะช่วยให้ระบบสร้างรหัสไคลเอ็นต์ใหม่ หลังจาก ขั้นตอนนี้ เจ้าของคนก่อนจะยังคงปลุกรถได้ แต่จะ สั่งงานจากระยะไกลไม่ได้อีกต่อไป
เปิดแอปไคลเอ็นต์ของงานระยะไกล แล้วทำตามกระบวนการยกเลิกการลงทะเบียนไคลเอ็นต์เพื่อยกเลิกการลิงก์ยานพาหนะ กับบัญชีของเจ้าของคนก่อน เจ้าของใหม่สามารถทำตามขั้นตอนการลงทะเบียนไคลเอ็นต์เพื่อลิงก์รถกับบัญชีของตนและแทนที่บัญชีที่ลิงก์ไว้ก่อนหน้านี้
เจ้าของใหม่สามารถใช้กระบวนการลงทะเบียนลูกค้าเพื่อลิงก์ยานพาหนะกับบัญชีของตนและแทนที่บัญชีที่ลิงก์ไว้ก่อนหน้านี้
ทดสอบไคลเอ็นต์งานระยะไกล
เรามีไดเรกทอรี HAL การเข้าถึงจากระยะไกลอ้างอิง
default
เพื่อทดสอบไคลเอ็นต์งานระยะไกล คุณสามารถใช้debug
คำสั่งต่อไปนี้เพื่อแทรกงานระยะไกลปลอมลงใน HAL ซึ่งจะส่งต่อไปยัง
ไคลเอ็นต์งานระยะไกลหากคุณระบุรหัสไคลเอ็นต์ที่ถูกต้อง คุณรับ Client
ID ได้โดยการบันทึกข้อมูลการลงทะเบียนในการติดตั้งใช้งานไคลเอ็นต์งานระยะไกล
adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]