diff options
Diffstat (limited to 'libvehiclenetwork/native/IVehicleNetworkListener.cpp')
-rw-r--r-- | libvehiclenetwork/native/IVehicleNetworkListener.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libvehiclenetwork/native/IVehicleNetworkListener.cpp b/libvehiclenetwork/native/IVehicleNetworkListener.cpp index b8579dcf6d..cd79515926 100644 --- a/libvehiclenetwork/native/IVehicleNetworkListener.cpp +++ b/libvehiclenetwork/native/IVehicleNetworkListener.cpp @@ -35,6 +35,7 @@ enum { ON_EVENTS = IBinder::FIRST_CALL_TRANSACTION, ON_HAL_ERROR, ON_HAL_RESTART, + ON_PROPERTY_SET, }; class BpVehicleNetworkListener : public BpInterface<IVehicleNetworkListener> @@ -78,6 +79,17 @@ public: data.writeInt32(inMocking ? 1 : 0); remote()->transact(ON_HAL_RESTART, data, &reply); } + + virtual void onPropertySet(const vehicle_prop_value_t& value) { + Parcel data, reply; + data.writeInterfaceToken(IVehicleNetworkListener::getInterfaceDescriptor()); + status_t r = VehiclePropValueBinderUtil::writeToParcel(data, value); + if (r != NO_ERROR) { + ALOGE("onPropertySet: failed to write to parcel: %d", r); + return; + } + remote()->transact(ON_PROPERTY_SET, data, &reply); + } }; IMPLEMENT_META_INTERFACE(VehicleNetworkListener, "com.android.car.vehiclenetwork.IVehicleNetworkListener"); @@ -133,6 +145,17 @@ status_t BnVehicleNetworkListener::onTransact(uint32_t code, const Parcel& data, onHalRestart(inMocking); return NO_ERROR; } break; + case ON_PROPERTY_SET: { + CHECK_INTERFACE(IVehicleNetworkListener, data, reply); + ScopedVehiclePropValue value; + r = VehiclePropValueBinderUtil::readFromParcel(data, &value.value); + if (r == NO_ERROR) { + onPropertySet(value.value); + } else { + ALOGE("onPropertySet: failed to read from parcel: %d", r); + } + return r; + } break; default: return BBinder::onTransact(code, data, reply, flags); } |