Android 14 เปิดตัวฟีเจอร์การเข้าถึงระยะไกลแบบใหม่ ที่ช่วยให้พาร์ทเนอร์ปลุกระบบ Android ในรถจากระยะไกลเพื่อทำงานบางอย่างได้ เช่น เรียกใช้โหมดโรงรถข้ามคืนเพื่อใช้การอัปเดตซอฟต์แวร์ ต้องมีคอมโพเนนต์ที่ไม่ใช่ Android หลายรายการสำหรับขั้นตอนการทำงานตั้งแต่ต้นจบ Android ไม่ได้กำหนดหรือระบุการใช้งานสำหรับคอมโพเนนต์ที่ไม่ใช่ Android (คุณมีหน้าที่รับผิดชอบในส่วนนี้)
ดูข้อมูลเพิ่มเติมได้ที่ส่วนต่อไปนี้
เวิร์กโฟลว์ เวิร์กโฟลว์ระหว่างคอมโพเนนต์หลายรายการในสถาปัตยกรรมตัวอย่างสำหรับการลงทะเบียนลูกค้าและการส่งงาน
เขียนไคลเอ็นต์งานระยะไกล ใช้การเข้าถึงจากระยะไกล และดูวิธีเขียนไคลเอ็นต์งานระยะไกล
การติดตั้งใช้งานของผู้ให้บริการ คอมโพเนนต์ของผู้ให้บริการในสถาปัตยกรรมตัวอย่างเพื่อรองรับการเข้าถึงจากระยะไกล
การรีเซ็ตเป็นค่าเริ่มต้นและการโอนการเป็นเจ้าของ ดูวิธีจัดการกับการรีเซ็ตเป็นค่าเริ่มต้นและการโอนความเป็นเจ้าของยานพาหนะ
ทดสอบไคลเอ็นต์การเข้าถึงระยะไกล ดูวิธีทดสอบฟีเจอร์ การเข้าถึงระยะไกล
สถาปัตยกรรม
เนื้อหาต่อไปนี้สันนิษฐานว่ามีการใช้สถาปัตยกรรมตัวอย่างต่อไปนี้ ซึ่งเป็นเรื่องสมมติและอาจไม่ได้แสดงสถาปัตยกรรมจริง OEM ควรปรับการใช้งานจริงให้เหมาะกับสถาปัตยกรรมยานพาหนะและเซิร์ฟเวอร์ของตน
รูปที่ 1 สถาปัตยกรรมตัวอย่าง
สถาปัตยกรรมตัวอย่างประกอบด้วยองค์ประกอบของฮาร์ดแวร์ต่อไปนี้
คอมโพเนนต์ฮาร์ดแวร์ | คำอธิบาย |
---|---|
หน่วยประมวลผลแอป | โปรเซสเซอร์ที่ใช้ Android Android อาจทำงานบนหน่วยความจำเสมือน (VM) (ไม่ใช่บนฮาร์ดแวร์จริง) ในโปรเซสเซอร์นี้ |
ผู้ประมวลผลยานพาหนะ | โปรเซสเซอร์ที่ควบคุมพลังงานสําหรับตัวประมวลผลแอป |
หน่วยควบคุมเทเลมาติกส์ (TCU) | โปรเซสเซอร์ในรถสามารถรับข้อความระยะไกลจากระบบคลาวด์ได้เสมอ ระบบจะถือว่า TCU เปิดอยู่หรืออยู่ในโหมดพลังงานต่ำเสมอ ใช้ข้อความระยะไกลเพื่อปลุกระบบ TCU |
เซิร์ฟเวอร์การปลุก | เซิร์ฟเวอร์ระยะไกลที่ทำงานในระบบคลาวด์และมีหน้าที่สื่อสารกับ TCU ในรถเพื่อออกคำสั่งเริ่มต้น |
เซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์งานระยะไกลจะทำงานในระบบคลาวด์และโต้ตอบกับผู้คน รวมถึงจัดการงานระยะไกล |
สถาปัตยกรรมตัวอย่างประกอบด้วยองค์ประกอบซอฟต์แวร์ต่อไปนี้ ซึ่งทั้งหมดทำงานบน Android
คอมโพเนนต์ของซอฟต์แวร์ใน Android | คำอธิบาย |
---|---|
บริการรถยนต์ | บริการเฟรมเวิร์ก AAOS ที่มี API การเข้าถึงจากระยะไกล |
ไคลเอ็นต์งานระยะไกล | คลาสที่เขียนโดยผู้ให้บริการ
Service
ซึ่งจะดำเนินการระยะไกล ระบบ Android 1 ระบบสามารถเรียกใช้ไคลเอ็นต์งานระยะไกลได้หลายรายการ |
HAL การเข้าถึงจากระยะไกล | ต้องมีการติดตั้งใช้งานสำหรับการเข้าถึงระยะไกล เลเยอร์การแยกแยะสำหรับการสื่อสารระหว่าง AAOS กับคอมโพเนนต์ที่ไม่ใช่ Android เช่น TCU |
องค์ประกอบซอฟต์แวร์ที่ไม่ใช้ Android มีคำอธิบายอยู่ด้านล่างนี้
คอมโพเนนต์ซอฟต์แวร์ที่ไม่เป็นของ Android | คำอธิบาย |
---|---|
ไคลเอ็นต์การปลุก | ซอฟต์แวร์ที่ทำงานบน TCU ที่รักษาการเชื่อมต่ออายุการใช้งานยาวนานกับเซิร์ฟเวอร์ปลุกระบบ และยังรักษาการเชื่อมต่อกับ HAL การเข้าถึงจากระยะไกลเพื่อส่งงานระยะไกลไปยังบริการของรถยนต์ |
การติดตั้งใช้งานเซิร์ฟเวอร์ Wake-Up | เซิร์ฟเวอร์ที่สื่อสารกับไคลเอ็นต์การปลุกที่ทำงานบน TCU ส่งคำขอปลุกไปยังไคลเอ็นต์การปลุกได้ |
การติดตั้งใช้งานเซิร์ฟเวอร์งานระยะไกล | เซิร์ฟเวอร์ที่จัดการงานระยะไกล ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์นี้เพื่อออกคำสั่งและตรวจสอบงานระยะไกล |
ขั้นตอนการทำงาน
ส่วนนี้จะแสดงขั้นตอนในเวิร์กโฟลว์ตัวอย่าง
เวิร์กโฟลว์ตัวอย่าง
เวิร์กโฟลว์โดยละเอียดอาจมีลักษณะดังต่อไปนี้
ผู้ใช้จอดรถในโรงรถ
พาร์ทเนอร์พยายามอัปเดตยานพาหนะในช่วงกลางคืนเมื่อมีโอกาสที่ยานพาหนะจะโต้ตอบน้อย
เซิร์ฟเวอร์ระบบคลาวด์ของพาร์ทเนอร์ส่งงานระยะไกลของระบบอัปเดตไปยังรถยนต์ โดยเฉพาะตัวควบคุมเทเลมาติก (TCU)
TCU ของยานพาหนะจะปลุกระบบควบคุมอิเล็กทรอนิกส์ (ECU) ของ Android และบริการ OEM จะทริกเกอร์โหมดโรงรถ
Android จะเปิดใช้โหมดโรงรถเพื่อดาวน์โหลดและติดตั้งอัปเดตผ่าน Google Play
หลังจากใช้การอัปเดต Android จะทำเครื่องหมายงานว่าเสร็จแล้วและสิ้นสุดการเชื่อมต่อหรือถึงระยะหมดเวลาที่ระบุไว้
เวิร์กโฟลว์โดยละเอียด
การเข้าถึงจากระยะไกลจำเป็นต้องทำตามขั้นตอนสำคัญ 2 ขั้นตอน ขั้นตอนแรกคือการลงทะเบียนไคลเอ็นต์ ซึ่งก็คือการลิงก์ผู้ใช้ที่เฉพาะเจาะจงกับไคลเอ็นต์งานระยะไกลที่เฉพาะเจาะจงซึ่งทำงานในยานพาหนะหนึ่งๆ อีกอย่างคือการส่งงาน ซึ่งก็คือการนำส่งงานระยะไกลสำหรับผู้ใช้ที่เฉพาะเจาะจงไปยังไคลเอ็นต์งานระยะไกลที่เฉพาะเจาะจงซึ่งทำงานในยานพาหนะหนึ่งๆ
ลงทะเบียนไคลเอ็นต์
หากต้องการใช้ฟีเจอร์การเข้าถึงระยะไกล ผู้ใช้ต้องเปิดแอปไคลเอ็นต์ของงานระยะไกลอย่างน้อย 1 ครั้ง จากนั้นดำเนินขั้นตอนการลงทะเบียนลูกค้าให้เสร็จสิ้น (ข้อความตัวหนาแสดงงานที่ AAOS ใช้) ดังนี้
เมื่อเปิดเครื่อง บริการรถยนต์จะรับข้อมูลรถจากการเข้าถึงระยะไกล HAL
เมื่อบูตเครื่อง บริการรถยนต์จะเปิดไคลเอ็นต์งานระยะไกลทั้งหมดตามตัวกรอง Intent และสิทธิ์
เมื่อไคลเอ็นต์งานระยะไกลเริ่มต้นขึ้น ไคลเอ็นต์งานระยะไกลจะลงทะเบียนกับบริการรถยนต์
บริการรถยนต์จะแจ้งเตือนไคลเอ็นต์งานระยะไกลเกี่ยวกับข้อมูลการลงทะเบียน รวมถึงรหัสรถและรหัสไคลเอ็นต์ รหัสไคลเอ็นต์จะมีลักษณะเฉพาะตัวและกำหนดโดยบริการรถเช่าให้กับลูกค้ารายนี้ ซึ่งรับประกันว่าไม่ซ้ำกันในกลุ่มไคลเอ็นต์งานระยะไกลทั้งหมดในยานพาหนะคันเดียวกัน
ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกลผ่านไคลเอ็นต์งานระยะไกลและเปิดใช้ฟีเจอร์การเข้าถึงจากระยะไกลสำหรับยานพาหนะนี้ โดยทั่วไปขั้นตอนนี้จะมีการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์งานระยะไกล
ไคลเอ็นต์งานระยะไกลจะอัปโหลดข้อมูลของผู้ใช้พร้อมกับรหัสพาหนะและรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์งานระยะไกล และขอให้ลิงก์ผู้ใช้กับไคลเอ็นต์นี้และรถคันนี้
ขั้นตอนนี้อาจเกี่ยวข้องกับการตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพิ่มเติมจากผู้ใช้ (ไม่บังคับ)
เซิร์ฟเวอร์งานระยะไกลต้องตรวจสอบสิทธิ์ว่ารหัสยานพาหนะที่ระบุไว้ในคำขอตรงกับรหัสยานพาหนะของผู้ส่ง ซึ่งทำได้ผ่านเอกสารรับรองของยานพาหนะ
คุณจะต้องลงทะเบียนลูกค้า 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;
}
บริการรถยนต์จะจัดการวงจรของบริการ บริการรถยนต์จะเชื่อมโยงกับบริการนี้ระหว่างการเริ่มต้นและเมื่อมีงานระยะไกลเข้ามา บริการรถยนต์จะยกเลิกการเชื่อมโยงกับบริการนี้เมื่องานเสร็จสมบูรณ์ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อการจัดการวงจรชีวิตของบริการ
ไคลเอ็นต์งานระยะไกลจะทํางานในฐานะผู้ใช้ระบบ จึงไม่มีสิทธิ์เข้าถึงข้อมูลเฉพาะผู้ใช้
ตัวอย่างต่อไปนี้แสดงวิธีจัดการการเรียกกลับที่ลงทะเบียน
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) คือเลเยอร์การแยกแยะที่ใช้โดยผู้ให้บริการสำหรับการสื่อสารระหว่าง AAOS กับ ECU อื่น (เช่น TCU) จำเป็นสำหรับการรองรับฟีเจอร์การเข้าถึงระยะไกล แต่ไม่จำเป็นต้องติดตั้งใช้งานหากไม่ได้ติดตั้งใช้งานฟีเจอร์การเข้าถึงจากระยะไกล
อินเทอร์เฟซจะกำหนดที่ IRemoteAccess.aidl และมีวิธีการต่อไปนี้
ชั้น | คำอธิบาย |
---|---|
String getVehicleId() |
รับรหัสยานพาหนะที่ไม่ซ้ำกันซึ่งเซิร์ฟเวอร์การปลุกสามารถจดจำได้ |
String getWakeupServiceName() |
รับชื่อสำหรับเซิร์ฟเวอร์การปลุกระยะไกล |
String getProcessorId() |
รับรหัสผู้ประมวลผลข้อมูลที่ไม่ซ้ำกันซึ่งจดจำได้เมื่อเปิดใช้ไคลเอ็นต์ |
void setRemoteTaskCallback(IRemoteTaskCallback callback)
ตั้งค่าการเรียกกลับที่จะเรียกใช้เมื่อมีการของานระยะไกล |
|
void clearRemoteTaskCallback() |
ล้างการเรียกกลับงานระยะไกลที่ตั้งไว้ก่อนหน้านี้ |
void notifyApStateChange(in ApState state)
ตรวจจับว่าผู้ประมวลผลข้อมูลแอปพร้อมรับงานจากระยะไกลหรือไม่ |
อินเทอร์เฟซการเรียกกลับจะกำหนดที่ 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 ไปยัง 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 (Wake-up Client) | ต้อง |
|
เซิร์ฟเวอร์การปลุกระบบ | ต้อง |
|
ไคลเอ็นต์งานระยะไกล | ต้อง |
|
เซิร์ฟเวอร์งานระยะไกล | ต้อง |
|
การรีเซ็ตเป็นค่าเริ่มต้นและการโอนการเป็นเจ้าของ
หากผู้ใช้รีเซ็ตเป็นค่าเริ่มต้น ระบบจะล้างรหัสไคลเอ็นต์ที่จัดเก็บไว้ในบริการรถยนต์ แต่เซิร์ฟเวอร์ (เซิร์ฟเวอร์งานระยะไกลและเซิร์ฟเวอร์การปลุกระยะไกล) จะไม่ได้รับการแจ้งเตือน เซิร์ฟเวอร์จะเก็บการแมปจากรหัสไคลเอ็นต์ที่หมดอายุแล้วกับยานพาหนะไว้ ด้วยเหตุนี้ หากผู้ใช้เริ่มงานระยะไกลใหม่สำหรับยานพาหนะ ระบบจะใช้รหัสไคลเอ็นต์ที่หมดอายุ ปลุกระบบพาหนะแล้ว แต่งานระยะไกลดำเนินการไม่ได้ เนื่องจากไคลเอ็นต์งานระยะไกลมีรหัสไคลเอ็นต์ที่ไม่ตรงกัน
ต่อไปนี้เป็นวิธีหนึ่งในการรีเซ็ตเป็นค่าเริ่มต้น
เมื่อผู้ใช้ทำการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการจะแจ้งให้ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกล และยกเลิกการลิงก์รถยนต์จากบัญชีของตนหากผู้ใช้เคยลิงก์รถไว้ก่อนหน้านี้ ไม่มีการรับประกันว่าอุปกรณ์จะเข้าถึงเครือข่ายได้ในช่วงที่ทำการรีเซ็ตเป็นค่าเริ่มต้น ดังนั้น การส่งคำขอยกเลิกการลิงก์จากอุปกรณ์เมื่อรีเซ็ตเป็นค่าเริ่มต้นจึงอาจไม่สามารถทำได้
เมื่อใดก็ตามที่มีการโอนการเป็นเจ้าของยานพาหนะ คุณควรดำเนินการบางอย่างเพื่อให้มั่นใจว่าเจ้าของคนก่อนไม่สามารถออกคำสั่งระยะไกลไปยังยานพาหนะได้อีกต่อไป เช่น ระบบอาจขอให้เจ้าของใหม่ดำเนินการดังนี้
ทำการรีเซ็ตเป็นค่าเริ่มต้น วิธีนี้ช่วยให้มั่นใจได้ว่าระบบจะสร้างรหัสไคลเอ็นต์ขึ้นมาใหม่ หลังจากขั้นตอนนี้ เจ้าของคนก่อนจะยังคงปลุกรถได้ แต่จะดำเนินการจากระยะไกลไม่ได้อีกต่อไป
เปิดแอปไคลเอ็นต์งานระยะไกลและทำตามกระบวนการยกเลิกการลงทะเบียนไคลเอ็นต์เพื่อยกเลิกการลิงก์รถจากบัญชีของเจ้าของคนก่อน เจ้าของใหม่สามารถทำตามขั้นตอนการลงทะเบียนลูกค้าเพื่อลิงก์รถยนต์กับบัญชีของตนเองและแทนที่บัญชีที่ลิงก์ก่อนหน้านี้ได้
เจ้าของใหม่สามารถใช้กระบวนการลงทะเบียนลูกค้าเพื่อลิงก์ยานพาหนะกับบัญชีของตนและแทนที่บัญชีที่ลิงก์ไว้ก่อนหน้านี้
ทดสอบไคลเอ็นต์งานระยะไกล
เรามีไดเรกทอรี HAL การเข้าถึงจากระยะไกลที่ใช้อ้างอิงdefault
เพื่อทดสอบไคลเอ็นต์งานระยะไกล คุณใช้คำสั่ง debug
ต่อไปนี้เพื่อแทรกงานระยะไกลปลอมลงใน HAL ได้ ซึ่งระบบจะส่งต่อไปยังไคลเอ็นต์งานระยะไกลหากคุณระบุรหัสไคลเอ็นต์ที่ถูกต้อง คุณดูรหัสไคลเอ็นต์ได้โดยบันทึกข้อมูลการลงทะเบียนในการติดตั้งใช้งานไคลเอ็นต์งานระยะไกล
adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]