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

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. Car Service จะแจ้งข้อมูลการลงทะเบียน รวมถึงรหัสยานพาหนะและรหัสลูกค้า ให้แก่ไคลเอ็นต์งานระยะไกล รหัสไคลเอ็นต์จะมีลักษณะเฉพาะตัวและกำหนดโดยบริการรถเช่าให้กับไคลเอ็นต์รายนี้ รับประกันว่าชื่อนี้จะไม่เหมือนใครในบรรดาไคลเอ็นต์งานระยะไกลทั้งหมดในยานพาหนะคันเดียวกัน

  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 (ไคลเอ็นต์การปลุก)

คอมโพเนนต์ในระบบคลาวด์

เซิร์ฟเวอร์ Wake-up

เซิร์ฟเวอร์การปลุกจะสื่อสารกับไคลเอ็นต์การปลุกใน 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]