Android 14 เปิดตัวฟีเจอร์การเข้าถึงระยะไกลใหม่ ซึ่งช่วยให้พาร์ทเนอร์ปลุกระบบ Android ในรถจากระยะไกลเพื่อสั่งการได้ เฉพาะงานที่ต้องการ เช่น หากต้องการเรียกใช้ โหมดโรงรถข้ามคืนเพื่อใช้ซอฟต์แวร์ อัปเดต ต้องมีคอมโพเนนต์ที่ไม่ใช่ Android หลายรายการสำหรับต้นทางถึงปลายทาง Android จะไม่ให้คำจำกัดความหรือติดตั้งใช้งานสำหรับอุปกรณ์ที่ไม่ใช่ Android (ความรับผิดชอบนี้เป็นของคุณ)
ดูข้อมูลเพิ่มเติมได้ที่ส่วนต่อไปนี้
เวิร์กโฟลว์ เวิร์กโฟลว์ระหว่างคอมโพเนนต์หลายรายการในตัวอย่าง สำหรับการลงทะเบียนลูกค้าและการส่งมอบงาน
เขียนไคลเอ็นต์งานระยะไกล ใช้การเข้าถึงจากระยะไกล และดูวิธีเขียนไคลเอ็นต์งานระยะไกล
การใช้งานผู้ให้บริการ องค์ประกอบของผู้ให้บริการใน สถาปัตยกรรมตัวอย่างเพื่อสนับสนุนการเข้าถึงระยะไกล
รีเซ็ตเป็นค่าเริ่มต้นและโอนการเป็นเจ้าของ ดูวิธีจัดการ รีเซ็ตเป็นค่าเริ่มต้นและโอนการเป็นเจ้าของรถ
ทดสอบไคลเอ็นต์การเข้าถึงระยะไกล ดูวิธีทดสอบการเข้าถึงระยะไกล
สถาปัตยกรรม
เนื้อหาต่อไปนี้สันนิษฐานว่ามีการใช้สถาปัตยกรรมตัวอย่างต่อไปนี้ ซึ่ง เป็นเรื่องสมมติและอาจไม่ได้สะท้อนถึงสถาปัตยกรรมที่แท้จริง OEM ควรปรับตัว การนำไปใช้งานจริงกับสถาปัตยกรรมพาหนะและเซิร์ฟเวอร์
รูปที่ 1 สถาปัตยกรรมตัวอย่าง
สถาปัตยกรรมตัวอย่างประกอบด้วยองค์ประกอบของฮาร์ดแวร์ต่อไปนี้
ส่วนประกอบฮาร์ดแวร์ | คำอธิบาย |
---|---|
ผู้ประมวลผลข้อมูลแอป | โปรเซสเซอร์ที่ใช้ Android Android อาจทำงานบนหน่วยความจำเสมือน (VM) (ไม่ใช่ฮาร์ดแวร์จริง) ในโปรเซสเซอร์นี้ |
โปรเซสเซอร์ของยานพาหนะ | ผู้ประมวลผลข้อมูลมีหน้าที่ควบคุมพลังงานของแอป ผู้ประมวลผลข้อมูล |
หน่วยควบคุมเทเลเมติกส์ (TCU) | โปรเซสเซอร์ในรถยนต์สามารถรับข้อความระยะไกลจาก ระบบคลาวด์ ระบบถือว่า TCU เปิดอยู่หรืออยู่ในโหมดใช้พลังงานต่ำเสมอ ใช้ ข้อความระยะไกลสำหรับปลุก TCU |
เซิร์ฟเวอร์การปลุกระบบ | เซิร์ฟเวอร์ระยะไกลที่ทำงานในระบบคลาวด์และมีหน้าที่ การสื่อสารกับ TCU ในรถเพื่อออกคำสั่งปลุกระบบ |
เซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์งานระยะไกลทำงานในระบบคลาวด์และโต้ตอบกับผู้คนและ จัดการงานระยะไกล |
สถาปัตยกรรมตัวอย่างประกอบด้วยองค์ประกอบของซอฟต์แวร์ ทั้งหมดนี้ ซึ่งทำงานใน Android ได้แก่
คอมโพเนนต์ของซอฟต์แวร์ใน Android | คำอธิบาย |
---|---|
บริการรถยนต์ | บริการเฟรมเวิร์ก AAOS ที่มี API การเข้าถึงระยะไกล |
ไคลเอ็นต์งานระยะไกล | ผู้ให้บริการเป็นผู้เขียน
Service
ที่ดำเนินงานทางไกลได้ ระบบ Android 1 ระบบสามารถเรียกใช้
ไคลเอ็นต์งานระยะไกล |
HAL การเข้าถึงจากระยะไกล | ต้องมีการติดตั้งใช้งานสำหรับการเข้าถึงระยะไกล เลเยอร์ Abstraction สำหรับการสื่อสารระหว่าง AAOS และผู้ใช้ที่ไม่ได้ใช้ Android เช่น TCU |
คอมโพเนนต์ของซอฟต์แวร์ที่ไม่ใช่ Android จะอธิบายต่อไปนี้
คอมโพเนนต์ของซอฟต์แวร์ที่ไม่ใช่ Android | คำอธิบาย |
---|---|
ไคลเอ็นต์การปลุก | ซอฟต์แวร์ที่ทำงานบน TCU ซึ่งจะรักษาการเชื่อมต่ออายุการใช้งานยาวนานกับ เซิร์ฟเวอร์การปลุกระบบ อุปกรณ์ยังคงเชื่อมต่อกับ HAL ของการเข้าถึงระยะไกล เพื่อทำงานทางไกลไปที่บริการรถยนต์ |
การใช้งานเซิร์ฟเวอร์ปลุกระบบ | เซิร์ฟเวอร์ที่สื่อสารกับไคลเอ็นต์การปลุกระบบที่ทำงานอยู่บน TCU กระป๋อง ส่งคำขอการปลุกระบบไปยังไคลเอ็นต์การปลุก |
การใช้งานเซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์ที่จัดการงานระยะไกล ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์นี้เพื่อ ปัญหาและตรวจสอบงานระยะไกล |
ขั้นตอนการทำงาน
ส่วนนี้จะแสดงขั้นตอนในเวิร์กโฟลว์ตัวอย่าง
ตัวอย่างเวิร์กโฟลว์
เวิร์กโฟลว์โดยละเอียดอาจมีลักษณะดังต่อไปนี้
ผู้ใช้จอดรถในโรงรถ
พาร์ทเนอร์ต้องการอัปเดตยานพาหนะข้ามคืนเมื่อโต้ตอบกับยานพาหนะ มีโอกาสน้อยมาก
เซิร์ฟเวอร์ระบบคลาวด์ของพาร์ทเนอร์ส่งงานระยะไกลของระบบอัปเดตไปยังรถยนต์ โดยเฉพาะอย่างยิ่ง หน่วยควบคุมทางไกล (TCU)
TCU ของรถยนต์ปลุกระบบหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) ของ Android และ บริการ OEM จะทริกเกอร์โหมด Garage
Android ใช้โหมด Garage เพื่อดาวน์โหลดและติดตั้งอัปเดตผ่าน Google Play
หลังจากใช้การอัปเดต Android จะทำเครื่องหมายงานว่าเสร็จสมบูรณ์ และ การเชื่อมต่อสิ้นสุดลงหรือถึงระยะหมดเวลาที่ระบุไว้
เวิร์กโฟลว์โดยละเอียด
มีขั้นตอนสำคัญ 2 ขั้นตอนสำหรับการเข้าถึงจากระยะไกล วิธีแรกคือ ลงทะเบียนไคลเอ็นต์ ซึ่งจะลิงก์ผู้ใช้กับรีโมตที่ต้องการ งานไคลเอ็นต์ที่กำลังทำงานบนยานพาหนะที่เฉพาะเจาะจง อีกลิงก์หนึ่งคือการส่งงาน คือการนำส่งงานระยะไกลสำหรับผู้ใช้ที่เจาะจงไปยังงานระยะไกลดังกล่าว ลูกค้าที่วิ่งบนยานพาหนะคันนั้นๆ
ลงทะเบียนลูกค้า
หากต้องการใช้ฟีเจอร์การเข้าถึงจากระยะไกล ผู้ใช้ต้องเปิดไคลเอ็นต์งานระยะไกล แอปอย่างน้อย 1 ครั้งและดำเนินการลงทะเบียนลูกค้าให้เสร็จสิ้น (ข้อความตัวหนา หมายถึงงานที่ AAOS ใช้งาน) ดังนี้
เมื่อเปิดเครื่อง บริการรถยนต์จะรับข้อมูลของรถจากการเข้าถึงจากระยะไกล HAL
เมื่อเปิดเครื่อง บริการรถยนต์จะเปิดตัวไคลเอ็นต์งานระยะไกลทั้งหมดโดยอิงตาม Intent-filter และสิทธิ์
เมื่อไคลเอ็นต์งานระยะไกลเริ่มทำงาน ไคลเอ็นต์งานระยะไกลจะลงทะเบียนตัวเองกับ ศูนย์บริการรถยนต์
บริการรถยนต์แจ้งไคลเอ็นต์งานระยะไกลเกี่ยวกับการจดทะเบียน เช่น รหัสยานพาหนะและรหัสไคลเอ็นต์ รหัสไคลเอ็นต์ไม่ซ้ำกัน และมอบหมายโดยศูนย์บริการรถยนต์ให้กับลูกค้ารายนี้ ไม่เหมือนใครแน่นอน ในหมู่ไคลเอ็นต์งานระยะไกลทั้งหมดในรถคันเดียวกัน
ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกลผ่านไคลเอ็นต์งานระยะไกลและ เปิดใช้ฟีเจอร์การเข้าถึงระยะไกลสำหรับรถคันนี้ โดยทั่วไปขั้นตอนนี้ จะต้องมีการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์งานระยะไกล
ไคลเอ็นต์งานระยะไกลจะอัปโหลดข้อมูลของผู้ใช้พร้อมกับรหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์งานระยะไกล และขอให้ลิงก์ผู้ใช้กับ ลูกค้ารายหนึ่งและรถยนต์คันนี้
หรือขั้นตอนนี้อาจต้องใช้การตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพิ่มเติม จากผู้ใช้
เซิร์ฟเวอร์งานระยะไกลต้องตรวจสอบสิทธิ์ว่ารหัสยานพาหนะที่ระบุไว้ใน คำขอตรงกับรหัสยานพาหนะของผู้ส่ง ซึ่งทำได้ผ่าน และการรับรองพาหนะ
คุณต้องลงทะเบียนลูกค้าตามกระบวนการลงทะเบียน ยกเว้นการรีเซ็ตเป็นค่าเริ่มต้น 1 ครั้งต่อผู้ใช้ 1 รายต่อยานพาหนะ 1 คัน รหัสไคลเอ็นต์จัดเก็บไว้ในเครื่องในบริการรถยนต์ และยังคงเป็นเหมือนเดิมสำหรับลูกค้ารายเดียวกัน
รูปที่ 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>
ไคลเอ็นต์งานระยะไกลควรลงทะเบียนตัวเองกับบริการรถยนต์ระหว่างการสร้าง
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 จัดการวงจรชีวิตของบริษัทเอง บริการรถยนต์มีผลผูกพันกับบริการนี้ระหว่าง เริ่มต้นระบบและเมื่อมีงานระยะไกลมาถึง บริการรถยนต์จะเลิกเชื่อมโยงกับบริการนี้เมื่อ งานนี้เสร็จสมบูรณ์แล้ว ดูข้อมูลเพิ่มเติมได้ที่ การจัดการวงจรของบริการ
ไคลเอ็นต์งานระยะไกลทำงานในฐานะผู้ใช้ระบบจึงไม่มีสิทธิ์เข้าถึง ข้อมูลที่เจาะจงผู้ใช้
ตัวอย่างต่อไปนี้แสดงวิธีจัดการกับ Callback ที่ลงทะเบียน
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 การเข้าถึงจากระยะไกล
เลเยอร์ Abstractionion ของฮาร์ดแวร์สำหรับการเข้าถึงจากระยะไกล (HAL) เป็นสิ่งที่ผู้ให้บริการนำมาใช้ ชั้นแอบสแตรกชันสําหรับการสื่อสารระหว่าง 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 ที่เรียกใช้เมื่อมีการของานระยะไกล |
โปรดดู
การใช้งานข้อมูลอ้างอิง
กับ TCU ภายนอก การใช้งานนี้ใช้สตรีมการอ่านระยะยาวเพื่อ
รับงานระยะไกลและรองรับคำสั่ง debug
ต่อไปนี้
dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default
HAL ยานพาหนะ
หากต้องการรองรับฟีเจอร์การเข้าถึงจากระยะไกล VHAL ต้องรองรับพร็อพเพอร์ตี้ต่อไปนี้
ชั้น | คำอธิบาย |
---|---|
SHUTDOWN_REQUEST |
ขอให้ปิดระบบเครื่องเสียง |
VEHICLE_IN_USE |
|
ดูข้อมูลเพิ่มเติมได้ที่ คุณสมบัติของระบบที่รองรับ
โหมดปิดเสียง
คุณลักษณะการเข้าถึงระยะไกลต้องใช้โหมดปิดเสียงเพื่อให้รถยนต์ สามารถเปิดเครื่องในโหมดปิดเสียงเพื่อดำเนินงานระยะไกลเมื่อไม่มีผู้ใช้อยู่ ด้วย โหมดปิดเสียงจะทำให้อุปกรณ์ AAOS เริ่มทำงานโดยปิดจอแสดงผลและเสียงไว้
โหมดปิดเสียงจะควบคุมผ่านไฟล์ sysfs
ของเคอร์เนลของ Linux จำนวน 2 ไฟล์
ชั้น | คำอธิบาย |
---|---|
/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 ที่เฉพาะเจาะจงตามรหัสรถ
- รายงานสถานะของรถยนต์ เช่น ออนไลน์ ออฟไลน์ หรือผ่าน ไปยังเซิร์ฟเวอร์งานระยะไกลได้
ในการใช้งานจริง เซิร์ฟเวอร์การปลุกระบบจะสามารถผสานการทำงานกับรีโมต เซิร์ฟเวอร์งาน
เซิร์ฟเวอร์งานระยะไกล
โดยเซิร์ฟเวอร์งานระยะไกลจะจัดการงานระยะไกลเหล่านี้
ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์เพื่อเริ่มงานระยะไกลใหม่และตรวจสอบ งานระยะไกล
ใช้เซิร์ฟเวอร์การปลุกระบบระยะไกลเพื่อปลุกระบบโปรเซสเซอร์ของแอป ยานพาหนะ
โต้ตอบกับไคลเอ็นต์งานระยะไกลที่วิ่งอยู่ในรถ
จัดเก็บข้อมูลการลงทะเบียนลูกค้า การดำเนินการนี้จะเชื่อมโยงผู้ใช้ที่เฉพาะเจาะจง ไปยังไคลเอ็นต์งานระยะไกลที่เจาะจงในรถคันนั้นๆ
โดยทั่วไปแล้วเป็นข้อมูลงานที่ส่งผ่านเซิร์ฟเวอร์งานระยะไกลไปยังการปลุกระบบ ไปยัง TCU ของรถ และสุดท้ายแล้วก็ไปยังไคลเอ็นต์งานระยะไกล รหัสงาน ไคลเอ็นต์งานระยะไกลจะใช้รหัสงานเพื่อดึงข้อมูลรายละเอียด ข้อมูลจากเซิร์ฟเวอร์งานระยะไกล
ข้อกำหนดด้านความเป็นส่วนตัวและความปลอดภัย
งาน | เงื่อนไข | ข้อกำหนด |
---|---|---|
TCU (ไคลเอ็นต์การปลุกระบบ) | ต้อง |
|
เซิร์ฟเวอร์การปลุกระบบ | ต้อง |
|
ไคลเอ็นต์งานระยะไกล | ต้อง |
|
เซิร์ฟเวอร์งานระยะไกล | ต้อง |
|
การรีเซ็ตเป็นค่าเริ่มต้นและการโอนการเป็นเจ้าของ
หากผู้ใช้รีเซ็ตเป็นค่าเริ่มต้น รหัสไคลเอ็นต์ที่จัดเก็บไว้ในบริการรถยนต์จะเป็น ล้างข้อมูลแล้ว แต่เซิร์ฟเวอร์ (เซิร์ฟเวอร์งานระยะไกลและเซิร์ฟเวอร์การปลุกระบบระยะไกล) ไม่ได้แจ้งให้ทราบ เซิร์ฟเวอร์จะเก็บรักษาการแมปจากรหัสไคลเอ็นต์ที่หมดอายุแล้วไปยัง ยานพาหนะ ดังนั้นหากผู้ใช้เริ่มงานระยะไกลใหม่สำหรับยานพาหนะ ใช้รหัสไคลเอ็นต์ที่หมดอายุแล้ว รถยนต์ถูกปลุกแล้ว แต่งานระยะไกล ดำเนินการไม่ได้เนื่องจากไคลเอ็นต์ของงานระยะไกลมีรหัสไคลเอ็นต์ที่แตกต่างจาก ไม่ตรงกัน
ต่อไปนี้เป็นคำอธิบายการใช้งานที่เป็นไปได้สำหรับการรีเซ็ตเป็นค่าเริ่มต้น
เมื่อผู้ใช้ทำการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการจะแจ้งให้ผู้ใช้ลงชื่อเข้าสู่ระบบ เซิร์ฟเวอร์งานระยะไกล และยกเลิกการลิงก์รถยนต์จากบัญชีของตนหากผู้ใช้มี ที่เคยลิงก์กับรถมาก่อนหน้านี้ ไม่มีการรับประกันว่าอุปกรณ์จะมีเครือข่าย ในระหว่างที่มีการรีเซ็ตเป็นค่าเริ่มต้นได้ ดังนั้น การส่งคำขอยกเลิกการลิงก์ ที่เวลารีเซ็ตเป็นค่าเริ่มต้นจากอุปกรณ์อาจดำเนินการไม่ได้
เมื่อมีการโอนการเป็นเจ้าของรถ คุณควรดำเนินการบางอย่าง ดำเนินการเพื่อให้แน่ใจว่าเจ้าของคนก่อนจะไม่สามารถออกงานระยะไกลให้กับ ยานพาหนะ เช่น ระบบอาจขอให้เจ้าของใหม่ดำเนินการดังนี้
ทำการรีเซ็ตเป็นค่าเริ่มต้น การทำเช่นนี้จะช่วยให้มั่นใจว่าระบบสร้างรหัสไคลเอ็นต์ใหม่ หลัง ขั้นตอนนี้ เจ้าของคนก่อนหน้าจะยังคงปลุกระบบรถได้ แต่ไม่สามารถ ทำงานทางไกลได้นานขึ้น
เปิดแอปไคลเอ็นต์สำหรับงานระยะไกล แล้วทำตาม กระบวนการยกเลิกการลงทะเบียนไคลเอ็นต์เพื่อยกเลิกการลิงก์ยานพาหนะ จากบัญชีของเจ้าของคนก่อน เจ้าของใหม่สามารถทำตามการจดทะเบียน ขั้นตอนของลูกค้าในการเชื่อมโยงยานพาหนะกับบัญชีของตนและเปลี่ยน บัญชีที่ลิงก์ก่อนหน้านี้
เจ้าของใหม่สามารถใช้ขั้นตอนลงทะเบียนลูกค้าเพื่อ ลิงก์รถยนต์กับบัญชีของผู้ใช้และแทนที่บัญชีที่ลิงก์ก่อนหน้านี้
ทดสอบไคลเอ็นต์งานระยะไกล
เรามี HAL การเข้าถึงระยะไกลสำหรับการอ้างอิง
default
ไดเรกทอรีเพื่อทดสอบไคลเอ็นต์งานระยะไกล คุณใช้ debug
ต่อไปนี้ได้
เพื่อแทรกงานระยะไกลปลอมลงใน HAL ซึ่งส่งต่อไปยัง
ไคลเอ็นต์งานระยะไกล หากคุณระบุรหัสไคลเอ็นต์ที่ถูกต้อง คุณจะสามารถรับสิทธิ์
ใช้รหัสโดยการบันทึกข้อมูลการลงทะเบียนในไคลเอ็นต์งานระยะไกล
การใช้งานของคุณ
adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]