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 จะกำหนดรหัสนี้ให้กับไคลเอ็นต์ รับประกันว่าจะเป็นค่าที่ไม่ซ้ำกัน ในบรรดาไคลเอ็นต์งานระยะไกลทั้งหมดในยานพาหนะคันเดียวกัน
ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกลผ่านไคลเอ็นต์งานระยะไกลและ เปิดใช้ฟีเจอร์การเข้าถึงระยะไกลสำหรับยานพาหนะนี้ โดยปกติขั้นตอนนี้ จะเกี่ยวข้องกับการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์งานระยะไกล
ไคลเอ็นต์งานระยะไกลจะอัปโหลดข้อมูลของผู้ใช้พร้อมกับรหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์งานระยะไกล และขอให้เซิร์ฟเวอร์ลิงก์ผู้ใช้กับ ไคลเอ็นต์และยานพาหนะที่เฉพาะเจาะจงนี้
ขั้นตอนนี้อาจเกี่ยวข้องกับการตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพิ่มเติมจากผู้ใช้ (ไม่บังคับ)
เซิร์ฟเวอร์งานระยะไกลต้องตรวจสอบสิทธิ์ว่ารหัสยานพาหนะที่ระบุใน คำขอตรงกับรหัสยานพาหนะของผู้ส่ง ซึ่งทำได้ผ่าน การรับรองยานพาหนะ
เว้นแต่จะมีการรีเซ็ตเป็นค่าเริ่มต้น กระบวนการลงทะเบียนไคลเอ็นต์จะต้องดำเนินการ 1 ครั้งต่อผู้ใช้ 1 คนต่อยานพาหนะ 1 คัน ระบบจะจัดเก็บ Client ID ไว้ในเครื่องใน Car Service และจะยังคงเหมือนเดิมสำหรับไคลเอ็นต์รายเดียวกัน
รูปที่ 2 ลงทะเบียนไคลเอ็นต์
ยกเลิกการลงทะเบียนไคลเอ็นต์
ผู้ใช้สามารถยกเลิกการลิงก์ยานพาหนะกับบัญชีได้จากยานพาหนะหรือจาก เซิร์ฟเวอร์งานระยะไกล โดยทำดังนี้
ในยานพาหนะ ผู้ใช้สามารถเปิดแอปไคลเอ็นต์งานระยะไกลและส่งคำขอเลิก ลิงก์เพื่อเลิกการลิงก์ยานพาหนะนี้กับบัญชีผู้ใช้ที่ลิงก์ไว้ก่อนหน้านี้ ได้
ในเซิร์ฟเวอร์งานระยะไกล ผู้ใช้จะเข้าสู่ระบบบัญชีของตนเองและยกเลิกการลิงก์ ยานพาหนะที่ลิงก์ไว้ก่อนหน้านี้กับบัญชีนี้ได้
หากผู้ใช้ยกเลิกการลิงก์ยานพาหนะกับบัญชี เซิร์ฟเวอร์งานระยะไกลจะต้อง นำการจับคู่ที่จัดเก็บไว้สำหรับผู้ใช้รายนั้นออก
ส่งงาน
ในระบบคลาวด์
ผู้ใช้ใช้เซิร์ฟเวอร์งานระยะไกลเพื่อส่งงานระยะไกลไปยังยานพาหนะที่เฉพาะเจาะจง
เซิร์ฟเวอร์งานระยะไกลจะแมปรหัสผู้ใช้กับรหัสยานพาหนะและรหัสไคลเอ็นต์ โดยจะ ส่งข้อมูลงาน รหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์ปลุก
เซิร์ฟเวอร์การปลุกจะค้นหา TCU ที่เฉพาะเจาะจงสำหรับรหัสรถยนต์ (สมมติว่าได้ลงทะเบียน TCU แล้ว) และส่งข้อมูลงานและรหัสไคลเอ็นต์ไปยัง TCU
ในยานพาหนะ (ข้อความตัวหนาแสดงถึงงานที่ AAOS ดำเนินการ)
TCU รับงานระยะไกลจากเซิร์ฟเวอร์ระยะไกล
หากตัวประมวลผลแอป (AP) ที่เรียกใช้ AAOS ปิดอยู่ TCU จะใช้ ตัวประมวลผลยานพาหนะ (VP) เพื่อเปิด AP
Car Service จะรับงานจาก 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 การเข้าถึงจากระยะไกล
ระดับชั้นการจัดการฮาร์ดแวร์โดยตรง (HAL) ของการเข้าถึงระยะไกลคือ Abstraction Layer ที่ผู้ให้บริการติดตั้งใช้งานสำหรับการสื่อสารระหว่าง AAOS กับ ECU อื่น (เช่น TCU) ซึ่งจำเป็นต่อการรองรับฟีเจอร์การเข้าถึงระยะไกล ไม่จำเป็นต้อง ติดตั้งใช้งานหากไม่ได้ติดตั้งใช้งานฟีเจอร์การเข้าถึงระยะไกล
อินเทอร์เฟซกำหนดไว้ที่ IRemoteAccess.aidl และมีเมธอดต่อไปนี้
| ชั้น | คำอธิบาย |
|---|---|
String getVehicleId() |
รับรหัสยานพาหนะที่ไม่ซ้ำกันซึ่งเซิร์ฟเวอร์ปลุก จดจำได้ |
String getWakeupServiceName() |
รับชื่อเซิร์ฟเวอร์ปลุกระยะไกล |
String getProcessorId() |
รับรหัสโปรเซสเซอร์ที่ไม่ซ้ำกันซึ่งไคลเอ็นต์จะจดจำได้เมื่อเปิดเครื่อง |
void setRemoteTaskCallback(IRemoteTaskCallback callback)
ตั้งค่าการเรียกกลับที่จะเรียกใช้เมื่อมีการขอให้ทำงานจากระยะไกล |
|
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 ไปยัง Android SoC เพื่อเปิด/ปิดโหมด
เงียบ ระบบจะเขียนสัญญาณ (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 ที่เฉพาะเจาะจงตามรหัสยานพาหนะ
- รายงานสถานะของยานพาหนะ เช่น ออนไลน์หรือออฟไลน์ หรือเวลาออนไลน์ล่าสุดไปยังเซิร์ฟเวอร์งานระยะไกล
ในการใช้งานจริง คุณสามารถผสานเซิร์ฟเวอร์ปลุกเข้ากับเซิร์ฟเวอร์งานระยะไกลได้
เซิร์ฟเวอร์งานระยะไกล
เซิร์ฟเวอร์งานระยะไกลจะจัดการงานระยะไกลเหล่านี้
ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์เพื่อเริ่มงานระยะไกลใหม่และตรวจสอบ งานระยะไกล
ใช้เซิร์ฟเวอร์การปลุกจากระยะไกลเพื่อปลุกโปรเซสเซอร์แอปใน ยานพาหนะ
โต้ตอบกับไคลเอ็นต์งานระยะไกลที่ทำงานในยานพาหนะ
จัดเก็บข้อมูลการลงทะเบียนไคลเอ็นต์ ซึ่งจะเชื่อมโยงผู้ใช้ที่เฉพาะเจาะจง กับไคลเอ็นต์งานระยะไกลที่เฉพาะเจาะจงในยานพาหนะที่เฉพาะเจาะจง
โดยปกติแล้ว ข้อมูลงานที่ส่งผ่านเซิร์ฟเวอร์งานระยะไกลไปยังเซิร์ฟเวอร์ Wake-up ไปยัง 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]