SHUTDOWN_REQUEST
What it is
Request the head unit to be shutdown.
<p>This is required for executing a task when the head unit is powered off (remote task feature). After the head unit is powered-on to execute the task, the head unit should be shutdown. The head unit will send this message once the task is finished.
<p>This is not for the case when a user wants to shutdown the head unit.
<p>This usually involves telling a separate system outside the head unit (e.g. a power controller) to prepare shutting down the head unit.
<p>Note that the external system must validate whether this request is valid by checking whether the vehicle is currently in use. If a user enters the vehicle after a SHUTDOWN_REQUEST is sent, then the system must ignore this request. It is recommended to store a VehicleInUse property in the power controller and exposes it through VEHICLE_IN_USE property. A shutdown request must be ignored if VehicleInUse is true.
<p>If allowed, the external system will start sending a shutdown signal to the head unit, which will cause VHAL to send SHUTDOWN_PREPARE message to Android. Android will then start the shut down process by handling the message.
<p>This property is only for issuing a request and only supports writing. Every time this property value is set, the request to shutdown will be issued no matter what the current property value is. The current property value is meaningless.
<p>Since this property is write-only, subscribing is not allowed and no property change event will be generated.
<p>The value to set indicates the shutdown option, it must be one of {@code VehicleApPowerStateShutdownParam}, e.g., VehicleApPowerStateShutdownParam.SLEEP_IMMEDIATELY. This shutdown option might not be honored if the system doesn't support such option. In such case, an error will not be returned.
<p>For configuration information, VehiclePropConfig.configArray must have bit flag combining values in {@code VehicleApPowerStateConfigFlag} to indicate which shutdown options are supported.
<p>Returns error if failed to send the shutdown request to the other system.
How the ID is built
A property ID is a 32-bit value packing four fields. Reading 0x11400f49 apart:
| Field | Mask | Value | Means |
|---|---|---|---|
| Group | 0xf0000000 | 0x10000000 | SYSTEM |
| Area | 0x0f000000 | 0x01000000 | GLOBAL |
| Type | 0x00ff0000 | 0x00400000 | INT32 |
| Ordinal | 0x0000ffff | 0x00000f49 | 0xf49 |
Reading it from an app
This property is defined in the HAL but is not exposed as a constant in android.car.VehiclePropertyIds, so it is not reachable through CarPropertyManager from an ordinary app. It is used by the platform, or by vendor code running with system privileges.

