aboutsummaryrefslogtreecommitdiff
path: root/libvehiclenetwork/native/IVehicleNetworkListener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libvehiclenetwork/native/IVehicleNetworkListener.cpp')
-rw-r--r--libvehiclenetwork/native/IVehicleNetworkListener.cpp23
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);
}