ตั้งค่าการเข้าถึงระยะไกล

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 กระป๋อง ส่งคำขอการปลุกระบบไปยังไคลเอ็นต์การปลุก
การใช้งานเซิร์ฟเวอร์งานระยะไกล เซิร์ฟเวอร์ที่จัดการงานระยะไกล ผู้ใช้โต้ตอบกับเซิร์ฟเวอร์นี้เพื่อ ปัญหาและตรวจสอบงานระยะไกล

ขั้นตอนการทำงาน

ส่วนนี้จะแสดงขั้นตอนในเวิร์กโฟลว์ตัวอย่าง

ตัวอย่างเวิร์กโฟลว์

เวิร์กโฟลว์โดยละเอียดอาจมีลักษณะดังต่อไปนี้

  1. ผู้ใช้จอดรถในโรงรถ

  2. พาร์ทเนอร์ต้องการอัปเดตยานพาหนะข้ามคืนเมื่อโต้ตอบกับยานพาหนะ มีโอกาสน้อยมาก

  3. เซิร์ฟเวอร์ระบบคลาวด์ของพาร์ทเนอร์ส่งงานระยะไกลของระบบอัปเดตไปยังรถยนต์ โดยเฉพาะอย่างยิ่ง หน่วยควบคุมทางไกล (TCU)

  4. TCU ของรถยนต์ปลุกระบบหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) ของ Android และ บริการ OEM จะทริกเกอร์โหมด Garage

  5. Android ใช้โหมด Garage เพื่อดาวน์โหลดและติดตั้งอัปเดตผ่าน Google Play

  6. หลังจากใช้การอัปเดต Android จะทำเครื่องหมายงานว่าเสร็จสมบูรณ์ และ การเชื่อมต่อสิ้นสุดลงหรือถึงระยะหมดเวลาที่ระบุไว้

เวิร์กโฟลว์โดยละเอียด

มีขั้นตอนสำคัญ 2 ขั้นตอนสำหรับการเข้าถึงจากระยะไกล วิธีแรกคือ ลงทะเบียนไคลเอ็นต์ ซึ่งจะลิงก์ผู้ใช้กับรีโมตที่ต้องการ งานไคลเอ็นต์ที่กำลังทำงานบนยานพาหนะที่เฉพาะเจาะจง อีกลิงก์หนึ่งคือการส่งงาน คือการนำส่งงานระยะไกลสำหรับผู้ใช้ที่เจาะจงไปยังงานระยะไกลดังกล่าว ลูกค้าที่วิ่งบนยานพาหนะคันนั้นๆ

ลงทะเบียนลูกค้า

หากต้องการใช้ฟีเจอร์การเข้าถึงจากระยะไกล ผู้ใช้ต้องเปิดไคลเอ็นต์งานระยะไกล แอปอย่างน้อย 1 ครั้งและดำเนินการลงทะเบียนลูกค้าให้เสร็จสิ้น (ข้อความตัวหนา หมายถึงงานที่ AAOS ใช้งาน) ดังนี้

  1. เมื่อเปิดเครื่อง บริการรถยนต์จะรับข้อมูลของรถจากการเข้าถึงจากระยะไกล HAL

  2. เมื่อเปิดเครื่อง บริการรถยนต์จะเปิดตัวไคลเอ็นต์งานระยะไกลทั้งหมดโดยอิงตาม Intent-filter และสิทธิ์

  3. เมื่อไคลเอ็นต์งานระยะไกลเริ่มทำงาน ไคลเอ็นต์งานระยะไกลจะลงทะเบียนตัวเองกับ ศูนย์บริการรถยนต์

  4. บริการรถยนต์แจ้งไคลเอ็นต์งานระยะไกลเกี่ยวกับการจดทะเบียน เช่น รหัสยานพาหนะและรหัสไคลเอ็นต์ รหัสไคลเอ็นต์ไม่ซ้ำกัน และมอบหมายโดยศูนย์บริการรถยนต์ให้กับลูกค้ารายนี้ ไม่เหมือนใครแน่นอน ในหมู่ไคลเอ็นต์งานระยะไกลทั้งหมดในรถคันเดียวกัน

  5. ผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์งานระยะไกลผ่านไคลเอ็นต์งานระยะไกลและ เปิดใช้ฟีเจอร์การเข้าถึงระยะไกลสำหรับรถคันนี้ โดยทั่วไปขั้นตอนนี้ จะต้องมีการตรวจสอบสิทธิ์ผ่านเซิร์ฟเวอร์งานระยะไกล

  6. ไคลเอ็นต์งานระยะไกลจะอัปโหลดข้อมูลของผู้ใช้พร้อมกับรหัสยานพาหนะ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์งานระยะไกล และขอให้ลิงก์ผู้ใช้กับ ลูกค้ารายหนึ่งและรถยนต์คันนี้

    หรือขั้นตอนนี้อาจต้องใช้การตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพิ่มเติม จากผู้ใช้

    เซิร์ฟเวอร์งานระยะไกลต้องตรวจสอบสิทธิ์ว่ารหัสยานพาหนะที่ระบุไว้ใน คำขอตรงกับรหัสยานพาหนะของผู้ส่ง ซึ่งทำได้ผ่าน และการรับรองพาหนะ

คุณต้องลงทะเบียนลูกค้าตามกระบวนการลงทะเบียน ยกเว้นการรีเซ็ตเป็นค่าเริ่มต้น 1 ครั้งต่อผู้ใช้ 1 รายต่อยานพาหนะ 1 คัน รหัสไคลเอ็นต์จัดเก็บไว้ในเครื่องในบริการรถยนต์ และยังคงเป็นเหมือนเดิมสำหรับลูกค้ารายเดียวกัน

ภาพ

รูปที่ 2 ลงทะเบียนลูกค้า

ยกเลิกการลงทะเบียนไคลเอ็นต์

ผู้ใช้สามารถยกเลิกการลิงก์ยานพาหนะจากบัญชีของตนจากยานพาหนะหรือจาก เซิร์ฟเวอร์งานระยะไกล

  • บนยานพาหนะ ผู้ใช้จะเปิดแอปไคลเอ็นต์ของงานระยะไกลและปัญหาได้ คำขอยกเลิกการลิงก์เพื่อยกเลิกการลิงก์รถยนต์คันนี้จากผู้ใช้ที่ลิงก์ไว้ก่อนหน้านี้ บัญชี

  • ในเซิร์ฟเวอร์งานระยะไกล ผู้ใช้จะลงชื่อเข้าสู่ระบบบัญชีและยกเลิกการลิงก์ได้ ยานพาหนะที่ลิงก์ก่อนหน้านี้จากบัญชีนี้

หากผู้ใช้ยกเลิกการลิงก์รถยนต์จากบัญชี เซิร์ฟเวอร์งานระยะไกลจะต้อง นำการจับคู่ที่จัดเก็บไว้สำหรับผู้ใช้ที่ระบุออก

ส่งงาน

ในระบบคลาวด์

  1. ผู้ใช้ใช้เซิร์ฟเวอร์งานระยะไกลเพื่อส่งงานระยะไกลไปยัง ยานพาหนะ

  2. เซิร์ฟเวอร์งานระยะไกลจะแมปรหัสผู้ใช้กับรหัสยานพาหนะและรหัสไคลเอ็นต์ ทั้งนี้ ส่งข้อมูลงาน รหัสรถยนต์ และรหัสไคลเอ็นต์ไปยังเซิร์ฟเวอร์การปลุกระบบ

  3. เซิร์ฟเวอร์การปลุกระบบจะค้นหา TCU ที่เฉพาะเจาะจงสำหรับรหัสรถ (โดยสมมติว่า ลงทะเบียน TCU เรียบร้อยแล้ว) และส่งข้อมูลงานและรหัสไคลเอ็นต์ไปยัง TCU

บนยานพาหนะ (ข้อความตัวหนาระบุงานที่ดำเนินการโดย AAOS):

  1. TCU รับงานระยะไกลจากเซิร์ฟเวอร์ระยะไกล

  2. หากตัวประมวลผลแอป (AP) ที่ใช้ AAOS ปิดอยู่ TCU จะใช้ ระบบประมวลผลในยานพาหนะ (VP) เพื่อปลุกระบบ AP

  3. บริการรถยนต์รับงานจาก TCU

  4. บริการรถยนต์กระจายงานไปยังไคลเอ็นต์งานระยะไกลที่เกี่ยวข้อง

  5. ไคลเอ็นต์งานระยะไกลรับและดำเนินงานนั้น

    (ไม่บังคับ) เซิร์ฟเวอร์งานของไคลเอ็นต์งานระยะไกลเพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับงาน และเรียกใช้งานนั้น

  6. (ไม่บังคับ) บริการไคลเอ็นต์ของงานระยะไกลจะรายงานผลลัพธ์งานไปยังเซิร์ฟเวอร์งาน

  7. ไคลเอ็นต์งานระยะไกลจะแจ้งให้ Car Service ทราบเมื่องานเสร็จสมบูรณ์แล้ว

  8. หากจำเป็น บริการรถยนต์จะคืนค่าสถานะพลังงานของรถ

ภาพ

รูปที่ 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
  • ตรวจจับว่ารถยนต์ใช้งานอยู่หรือไม่
  • หลังจากที่ผู้ใช้ปลดล็อกรถหรือเมื่อผู้ใช้เข้าใกล้ ยานพาหนะ ควรเป็น true
  • ระยะเวลาที่เจาะจงหลังจากผู้ใช้ปิดรถหรือเมื่อ ล็อกรถยนต์ไว้ ควรเป็น false
  • เมื่อ true AAOS ไม่พยายามปิดการทำงาน เมื่อทำงานทางไกลเสร็จแล้ว

ดูข้อมูลเพิ่มเติมได้ที่ คุณสมบัติของระบบที่รองรับ

โหมดปิดเสียง

คุณลักษณะการเข้าถึงระยะไกลต้องใช้โหมดปิดเสียงเพื่อให้รถยนต์ สามารถเปิดเครื่องในโหมดปิดเสียงเพื่อดำเนินงานระยะไกลเมื่อไม่มีผู้ใช้อยู่ ด้วย โหมดปิดเสียงจะทำให้อุปกรณ์ 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 (ไคลเอ็นต์การปลุกระบบ) ต้อง
  • ตรวจสอบสิทธิ์เซิร์ฟเวอร์การปลุกระบบ
  • เชื่อถือรหัส
เซิร์ฟเวอร์การปลุกระบบ ต้อง
  • อนุญาตให้เชื่อมต่อเฉพาะเซิร์ฟเวอร์งานระยะไกลในรายการที่อนุญาต
  • ตรวจสอบสิทธิ์ไคลเอ็นต์การปลุกระบบ
  • ส่งข้อความปลุกระบบไปยังยานพาหนะเป้าหมายเท่านั้น
ไคลเอ็นต์งานระยะไกล ต้อง
  • ตรวจสอบสิทธิ์ผู้ใช้ระหว่างการลงทะเบียน
  • ตรวจสอบสิทธิ์เซิร์ฟเวอร์งานระยะไกล
  • ปฏิบัติตามข้อกำหนดด้านความปลอดภัยทั้งหมดสำหรับบริการของ Android ตัวอย่างเช่น สิทธิ์ที่จำกัด
เซิร์ฟเวอร์งานระยะไกล ต้อง
  • ต้องตรวจสอบสิทธิ์เซิร์ฟเวอร์การปลุกระบบ
  • ระบุเอกสารรับรองของยานพาหนะ กล่าวคือ ตรวจสอบว่ายานพาหนะ บัตรประจำตัวที่ระบุในคำขอตรงกับรหัสยานพาหนะของผู้ส่ง หากเป็นยานพาหนะ การรับรองเป็นไปไม่ได้ ต้องใช้วิธีอื่นเพื่อยืนยันว่า ผู้ใช้ปัจจุบันเป็นเจ้าของรถ
  • ตรวจสอบสิทธิ์ข้อมูลประจำตัวของผู้ใช้
  • ปฏิบัติตามข้อกำหนดด้านความปลอดภัยทั้งหมดสำหรับเซิร์ฟเวอร์ที่จัดการผู้ใช้

การรีเซ็ตเป็นค่าเริ่มต้นและการโอนการเป็นเจ้าของ

หากผู้ใช้รีเซ็ตเป็นค่าเริ่มต้น รหัสไคลเอ็นต์ที่จัดเก็บไว้ในบริการรถยนต์จะเป็น ล้างข้อมูลแล้ว แต่เซิร์ฟเวอร์ (เซิร์ฟเวอร์งานระยะไกลและเซิร์ฟเวอร์การปลุกระบบระยะไกล) ไม่ได้แจ้งให้ทราบ เซิร์ฟเวอร์จะเก็บรักษาการแมปจากรหัสไคลเอ็นต์ที่หมดอายุแล้วไปยัง ยานพาหนะ ดังนั้นหากผู้ใช้เริ่มงานระยะไกลใหม่สำหรับยานพาหนะ ใช้รหัสไคลเอ็นต์ที่หมดอายุแล้ว รถยนต์ถูกปลุกแล้ว แต่งานระยะไกล ดำเนินการไม่ได้เนื่องจากไคลเอ็นต์ของงานระยะไกลมีรหัสไคลเอ็นต์ที่แตกต่างจาก ไม่ตรงกัน

ต่อไปนี้เป็นคำอธิบายการใช้งานที่เป็นไปได้สำหรับการรีเซ็ตเป็นค่าเริ่มต้น

เมื่อผู้ใช้ทำการรีเซ็ตเป็นค่าเริ่มต้น ผู้ให้บริการจะแจ้งให้ผู้ใช้ลงชื่อเข้าสู่ระบบ เซิร์ฟเวอร์งานระยะไกล และยกเลิกการลิงก์รถยนต์จากบัญชีของตนหากผู้ใช้มี ที่เคยลิงก์กับรถมาก่อนหน้านี้ ไม่มีการรับประกันว่าอุปกรณ์จะมีเครือข่าย ในระหว่างที่มีการรีเซ็ตเป็นค่าเริ่มต้นได้ ดังนั้น การส่งคำขอยกเลิกการลิงก์ ที่เวลารีเซ็ตเป็นค่าเริ่มต้นจากอุปกรณ์อาจดำเนินการไม่ได้

เมื่อมีการโอนการเป็นเจ้าของรถ คุณควรดำเนินการบางอย่าง ดำเนินการเพื่อให้แน่ใจว่าเจ้าของคนก่อนจะไม่สามารถออกงานระยะไกลให้กับ ยานพาหนะ เช่น ระบบอาจขอให้เจ้าของใหม่ดำเนินการดังนี้

  • ทำการรีเซ็ตเป็นค่าเริ่มต้น การทำเช่นนี้จะช่วยให้มั่นใจว่าระบบสร้างรหัสไคลเอ็นต์ใหม่ หลัง ขั้นตอนนี้ เจ้าของคนก่อนหน้าจะยังคงปลุกระบบรถได้ แต่ไม่สามารถ ทำงานทางไกลได้นานขึ้น

  • เปิดแอปไคลเอ็นต์สำหรับงานระยะไกล แล้วทำตาม กระบวนการยกเลิกการลงทะเบียนไคลเอ็นต์เพื่อยกเลิกการลิงก์ยานพาหนะ จากบัญชีของเจ้าของคนก่อน เจ้าของใหม่สามารถทำตามการจดทะเบียน ขั้นตอนของลูกค้าในการเชื่อมโยงยานพาหนะกับบัญชีของตนและเปลี่ยน บัญชีที่ลิงก์ก่อนหน้านี้

  • เจ้าของใหม่สามารถใช้ขั้นตอนลงทะเบียนลูกค้าเพื่อ ลิงก์รถยนต์กับบัญชีของผู้ใช้และแทนที่บัญชีที่ลิงก์ก่อนหน้านี้

ทดสอบไคลเอ็นต์งานระยะไกล

เรามี HAL การเข้าถึงระยะไกลสำหรับการอ้างอิง default ไดเรกทอรีเพื่อทดสอบไคลเอ็นต์งานระยะไกล คุณใช้ debug ต่อไปนี้ได้ เพื่อแทรกงานระยะไกลปลอมลงใน HAL ซึ่งส่งต่อไปยัง ไคลเอ็นต์งานระยะไกล หากคุณระบุรหัสไคลเอ็นต์ที่ถูกต้อง คุณจะสามารถรับสิทธิ์ ใช้รหัสโดยการบันทึกข้อมูลการลงทะเบียนในไคลเอ็นต์งานระยะไกล การใช้งานของคุณ

adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]