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

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

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

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

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

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

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

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

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

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

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

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

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

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

ลงทะเบียนไคลเอ็นต์

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

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

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

  3. เมื่อไคลเอ็นต์งานระยะไกลเริ่มต้นขึ้น ไคลเอ็นต์งานระยะไกลจะลงทะเบียนกับบริการรถยนต์

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

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

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

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

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

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

ภาพ

รูปที่ 2 ลงทะเบียนไคลเอ็นต์

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

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

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

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

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

ส่งงาน

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

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

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

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

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

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

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

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

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

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

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

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

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

  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;
}

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

ไคลเอ็นต์งานระยะไกลจะทํางานในฐานะผู้ใช้ระบบ จึงไม่มีสิทธิ์เข้าถึงข้อมูลเฉพาะผู้ใช้

ตัวอย่างต่อไปนี้แสดงวิธีจัดการการเรียกกลับที่ลงทะเบียน

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

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

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

ต่อไปนี้เป็นวิธีหนึ่งในการรีเซ็ตเป็นค่าเริ่มต้น

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

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

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

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

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

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

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

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