summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot2018-05-20 02:26:30 -0500
committerandroid-build-team Robot2018-05-20 02:26:30 -0500
commit205c8100fd44a0cd185af04c6d2089a4851eda85 (patch)
tree93844851e79982bc8be1409f9d79883f6004b6d4
parent0f85276fdd6392dfd0a0ee13e8d9fdefc5f6f30b (diff)
parentcce4c95c1c4bd47ffb1c35605afc90fa288611e2 (diff)
downloadplatform-hardware-interfaces-205c8100fd44a0cd185af04c6d2089a4851eda85.tar.gz
platform-hardware-interfaces-205c8100fd44a0cd185af04c6d2089a4851eda85.tar.xz
platform-hardware-interfaces-205c8100fd44a0cd185af04c6d2089a4851eda85.zip
Snap for 4793185 from cce4c95c1c4bd47ffb1c35605afc90fa288611e2 to pi-release
Change-Id: Ia503eccd16693022b312749277fa6b09d0bd3caa
-rw-r--r--audio/4.0/types.hal6
-rw-r--r--audio/core/2.0/vts/functional/Android.bp5
-rw-r--r--audio/core/4.0/vts/functional/Android.bp5
-rw-r--r--audio/effect/2.0/vts/functional/Android.bp5
-rw-r--r--audio/effect/4.0/vts/functional/Android.bp5
-rw-r--r--automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h47
-rw-r--r--automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp5
-rw-r--r--broadcastradio/1.0/types.hal6
-rw-r--r--camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp4
-rw-r--r--current.txt15
-rw-r--r--graphics/bufferqueue/1.0/IGraphicBufferProducer.hal2
-rw-r--r--graphics/common/1.1/types.hal2
-rw-r--r--graphics/composer/2.1/IComposerClient.hal4
-rw-r--r--graphics/composer/2.1/types.hal18
-rw-r--r--graphics/mapper/2.0/IMapper.hal4
-rw-r--r--graphics/mapper/2.0/types.hal12
-rw-r--r--keymaster/3.0/types.hal20
-rw-r--r--radio/1.1/ISap.hal9
-rw-r--r--radio/1.2/ISap.hal9
-rw-r--r--tv/cec/1.0/types.hal2
-rw-r--r--usb/1.1/IUsb.hal14
-rw-r--r--wifi/1.0/IWifiP2pIface.hal4
-rw-r--r--wifi/1.2/default/OWNERS2
23 files changed, 102 insertions, 103 deletions
diff --git a/audio/4.0/types.hal b/audio/4.0/types.hal
index 7b2035bc..6b46b103 100644
--- a/audio/4.0/types.hal
+++ b/audio/4.0/types.hal
@@ -184,9 +184,9 @@ struct AudioMicrophoneCoordinate {
184 * Simple processing as constant gain adjustment must be DIRECT. 184 * Simple processing as constant gain adjustment must be DIRECT.
185 */ 185 */
186enum AudioMicrophoneChannelMapping : uint32_t { 186enum AudioMicrophoneChannelMapping : uint32_t {
187 UNUSED = 0, /** Channel not used */ 187 UNUSED = 0, /* Channel not used */
188 DIRECT = 1, /** Channel used and signal not processed */ 188 DIRECT = 1, /* Channel used and signal not processed */
189 PROCESSED = 2, /** Channel used and signal has some process */ 189 PROCESSED = 2, /* Channel used and signal has some process */
190}; 190};
191 191
192/** 192/**
diff --git a/audio/core/2.0/vts/functional/Android.bp b/audio/core/2.0/vts/functional/Android.bp
index f3b2ca72..d1ddaff9 100644
--- a/audio/core/2.0/vts/functional/Android.bp
+++ b/audio/core/2.0/vts/functional/Android.bp
@@ -25,9 +25,8 @@ cc_test {
25 "android.hardware.audio.common.test.utility", 25 "android.hardware.audio.common.test.utility",
26 "android.hardware.audio@2.0", 26 "android.hardware.audio@2.0",
27 "android.hardware.audio.common@2.0", 27 "android.hardware.audio.common@2.0",
28 "libxml2",
29 ],
30 shared_libs: [
31 "libicuuc", 28 "libicuuc",
29 "libicuuc_stubdata",
30 "libxml2",
32 ], 31 ],
33} 32}
diff --git a/audio/core/4.0/vts/functional/Android.bp b/audio/core/4.0/vts/functional/Android.bp
index dde3e7b0..22c5493d 100644
--- a/audio/core/4.0/vts/functional/Android.bp
+++ b/audio/core/4.0/vts/functional/Android.bp
@@ -25,10 +25,9 @@ cc_test {
25 "android.hardware.audio.common.test.utility", 25 "android.hardware.audio.common.test.utility",
26 "android.hardware.audio@4.0", 26 "android.hardware.audio@4.0",
27 "android.hardware.audio.common@4.0", 27 "android.hardware.audio.common@4.0",
28 "libxml2",
29 ],
30 shared_libs: [
31 "libicuuc", 28 "libicuuc",
29 "libicuuc_stubdata",
30 "libxml2",
32 ], 31 ],
33 header_libs: [ 32 header_libs: [
34 "android.hardware.audio.common.util@all-versions", 33 "android.hardware.audio.common.util@all-versions",
diff --git a/audio/effect/2.0/vts/functional/Android.bp b/audio/effect/2.0/vts/functional/Android.bp
index f5a49b33..51d2e11a 100644
--- a/audio/effect/2.0/vts/functional/Android.bp
+++ b/audio/effect/2.0/vts/functional/Android.bp
@@ -27,10 +27,9 @@ cc_test {
27 "android.hardware.audio.effect@2.0", 27 "android.hardware.audio.effect@2.0",
28 "android.hidl.allocator@1.0", 28 "android.hidl.allocator@1.0",
29 "android.hidl.memory@1.0", 29 "android.hidl.memory@1.0",
30 "libxml2",
31 ],
32 shared_libs: [
33 "libeffectsconfig", 30 "libeffectsconfig",
34 "libicuuc", 31 "libicuuc",
32 "libicuuc_stubdata",
33 "libxml2",
35 ], 34 ],
36} 35}
diff --git a/audio/effect/4.0/vts/functional/Android.bp b/audio/effect/4.0/vts/functional/Android.bp
index 92b5db74..96ded69d 100644
--- a/audio/effect/4.0/vts/functional/Android.bp
+++ b/audio/effect/4.0/vts/functional/Android.bp
@@ -27,11 +27,10 @@ cc_test {
27 "android.hardware.audio.effect@4.0", 27 "android.hardware.audio.effect@4.0",
28 "android.hidl.allocator@1.0", 28 "android.hidl.allocator@1.0",
29 "android.hidl.memory@1.0", 29 "android.hidl.memory@1.0",
30 "libxml2",
31 ],
32 shared_libs: [
33 "libeffectsconfig", 30 "libeffectsconfig",
34 "libicuuc", 31 "libicuuc",
32 "libicuuc_stubdata",
33 "libxml2",
35 ], 34 ],
36 header_libs: [ 35 header_libs: [
37 "android.hardware.audio.common.util@all-versions", 36 "android.hardware.audio.common.util@all-versions",
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
index 012af1e0..c1f80f41 100644
--- a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
@@ -41,6 +41,10 @@ constexpr int VEHICLE_MAP_SERVICE = (int)VehicleProperty::VEHICLE_MAP_SERVICE;
41constexpr int WHEEL_TICK = (int)VehicleProperty::WHEEL_TICK; 41constexpr int WHEEL_TICK = (int)VehicleProperty::WHEEL_TICK;
42constexpr int ALL_WHEELS = 42constexpr int ALL_WHEELS =
43 (int)(Wheel::LEFT_FRONT | Wheel::RIGHT_FRONT | Wheel::LEFT_REAR | Wheel::RIGHT_REAR); 43 (int)(Wheel::LEFT_FRONT | Wheel::RIGHT_FRONT | Wheel::LEFT_REAR | Wheel::RIGHT_REAR);
44constexpr int HVAC_LEFT = (int)(VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_2_LEFT |
45 VehicleAreaSeat::ROW_2_CENTER);
46constexpr int HVAC_RIGHT = (int)(VehicleAreaSeat::ROW_1_RIGHT | VehicleAreaSeat::ROW_2_RIGHT);
47constexpr int HVAC_ALL = HVAC_LEFT | HVAC_RIGHT;
44 48
45/** 49/**
46 * This property is used for test purpose to generate fake events. Here is the test package that 50 * This property is used for test purpose to generate fake events. Here is the test package that
@@ -273,8 +277,7 @@ const ConfigDeclaration kVehicleProperties[]{
273 {.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON), 277 {.config = {.prop = toInt(VehicleProperty::HVAC_POWER_ON),
274 .access = VehiclePropertyAccess::READ_WRITE, 278 .access = VehiclePropertyAccess::READ_WRITE,
275 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 279 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
276 .areaConfigs = {VehicleAreaConfig{ 280 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}},
277 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}},
278 // TODO(bryaneyler): Ideally, this is generated dynamically from 281 // TODO(bryaneyler): Ideally, this is generated dynamically from
279 // kHvacPowerProperties. 282 // kHvacPowerProperties.
280 .configArray = 283 .configArray =
@@ -297,66 +300,56 @@ const ConfigDeclaration kVehicleProperties[]{
297 {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_DEFROST_ON), 300 {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
298 .access = VehiclePropertyAccess::READ_WRITE, 301 .access = VehiclePropertyAccess::READ_WRITE,
299 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 302 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
300 .areaConfigs = {VehicleAreaConfig{ 303 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
301 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
302 .initialValue = {.int32Values = {0}}}, 304 .initialValue = {.int32Values = {0}}},
303 305
304 {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON), 306 {.config = {.prop = toInt(VehicleProperty::HVAC_RECIRC_ON),
305 .access = VehiclePropertyAccess::READ_WRITE, 307 .access = VehiclePropertyAccess::READ_WRITE,
306 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 308 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
307 .areaConfigs = {VehicleAreaConfig{ 309 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
308 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
309 .initialValue = {.int32Values = {1}}}, 310 .initialValue = {.int32Values = {1}}},
310 311
311 {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON), 312 {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
312 .access = VehiclePropertyAccess::READ_WRITE, 313 .access = VehiclePropertyAccess::READ_WRITE,
313 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 314 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
314 .areaConfigs = {VehicleAreaConfig{ 315 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
315 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
316 .initialValue = {.int32Values = {0}}}, 316 .initialValue = {.int32Values = {0}}},
317 317
318 {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON), 318 {.config = {.prop = toInt(VehicleProperty::HVAC_AC_ON),
319 .access = VehiclePropertyAccess::READ_WRITE, 319 .access = VehiclePropertyAccess::READ_WRITE,
320 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 320 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
321 .areaConfigs = {VehicleAreaConfig{ 321 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
322 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
323 .initialValue = {.int32Values = {1}}}, 322 .initialValue = {.int32Values = {1}}},
324 323
325 {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_AC_ON), 324 {.config = {.prop = toInt(VehicleProperty::HVAC_MAX_AC_ON),
326 .access = VehiclePropertyAccess::READ_WRITE, 325 .access = VehiclePropertyAccess::READ_WRITE,
327 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 326 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
328 .areaConfigs = {VehicleAreaConfig{ 327 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
329 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
330 .initialValue = {.int32Values = {0}}}, 328 .initialValue = {.int32Values = {0}}},
331 329
332 {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON), 330 {.config = {.prop = toInt(VehicleProperty::HVAC_AUTO_ON),
333 .access = VehiclePropertyAccess::READ_WRITE, 331 .access = VehiclePropertyAccess::READ_WRITE,
334 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 332 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
335 .areaConfigs = {VehicleAreaConfig{ 333 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
336 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
337 .initialValue = {.int32Values = {1}}}, 334 .initialValue = {.int32Values = {1}}},
338 335
339 {.config = {.prop = toInt(VehicleProperty::HVAC_DUAL_ON), 336 {.config = {.prop = toInt(VehicleProperty::HVAC_DUAL_ON),
340 .access = VehiclePropertyAccess::READ_WRITE, 337 .access = VehiclePropertyAccess::READ_WRITE,
341 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 338 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
342 .areaConfigs = {VehicleAreaConfig{ 339 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
343 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
344 .initialValue = {.int32Values = {0}}}, 340 .initialValue = {.int32Values = {0}}},
345 341
346 {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED), 342 {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_SPEED),
347 .access = VehiclePropertyAccess::READ_WRITE, 343 .access = VehiclePropertyAccess::READ_WRITE,
348 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 344 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
349 .areaConfigs = {VehicleAreaConfig{ 345 .areaConfigs = {VehicleAreaConfig{
350 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT), 346 .areaId = HVAC_ALL, .minInt32Value = 1, .maxInt32Value = 7}}},
351 .minInt32Value = 1,
352 .maxInt32Value = 7}}},
353 .initialValue = {.int32Values = {3}}}, 347 .initialValue = {.int32Values = {3}}},
354 348
355 {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION), 349 {.config = {.prop = toInt(VehicleProperty::HVAC_FAN_DIRECTION),
356 .access = VehiclePropertyAccess::READ_WRITE, 350 .access = VehiclePropertyAccess::READ_WRITE,
357 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 351 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
358 .areaConfigs = {VehicleAreaConfig{ 352 .areaConfigs = {VehicleAreaConfig{.areaId = HVAC_ALL}}},
359 .areaId = (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)}}},
360 .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}}, 353 .initialValue = {.int32Values = {toInt(VehicleHvacFanDirection::FACE)}}},
361 354
362 {.config = {.prop = toInt(VehicleProperty::HVAC_STEERING_WHEEL_HEAT), 355 {.config = {.prop = toInt(VehicleProperty::HVAC_STEERING_WHEEL_HEAT),
@@ -370,17 +363,13 @@ const ConfigDeclaration kVehicleProperties[]{
370 .access = VehiclePropertyAccess::READ_WRITE, 363 .access = VehiclePropertyAccess::READ_WRITE,
371 .changeMode = VehiclePropertyChangeMode::ON_CHANGE, 364 .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
372 .areaConfigs = {VehicleAreaConfig{ 365 .areaConfigs = {VehicleAreaConfig{
373 .areaId = toInt(VehicleAreaSeat::ROW_1_LEFT), 366 .areaId = HVAC_LEFT, .minFloatValue = 16, .maxFloatValue = 32,
374 .minFloatValue = 16,
375 .maxFloatValue = 32,
376 }, 367 },
377 VehicleAreaConfig{ 368 VehicleAreaConfig{
378 .areaId = toInt(VehicleAreaSeat::ROW_1_RIGHT), 369 .areaId = HVAC_RIGHT, .minFloatValue = 16, .maxFloatValue = 32,
379 .minFloatValue = 16,
380 .maxFloatValue = 32,
381 }}}, 370 }}},
382 .initialAreaValues = {{toInt(VehicleAreaSeat::ROW_1_LEFT), {.floatValues = {16}}}, 371 .initialAreaValues = {{HVAC_LEFT, {.floatValues = {16}}},
383 {toInt(VehicleAreaSeat::ROW_1_RIGHT), {.floatValues = {20}}}}}, 372 {HVAC_RIGHT, {.floatValues = {20}}}}},
384 373
385 {.config = 374 {.config =
386 { 375 {
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp
index fb541958..07695bfe 100644
--- a/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/EmulatedVehicleHal.cpp
@@ -139,10 +139,11 @@ StatusCode EmulatedVehicleHal::set(const VehiclePropValue& propValue) {
139 return status; 139 return status;
140 } 140 }
141 } else if (mHvacPowerProps.count(propValue.prop)) { 141 } else if (mHvacPowerProps.count(propValue.prop)) {
142 // TODO(75328113): this should be handled by property status
143 auto hvacPowerOn = mPropStore->readValueOrNull( 142 auto hvacPowerOn = mPropStore->readValueOrNull(
144 toInt(VehicleProperty::HVAC_POWER_ON), 143 toInt(VehicleProperty::HVAC_POWER_ON),
145 (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT)); 144 (VehicleAreaSeat::ROW_1_LEFT | VehicleAreaSeat::ROW_1_RIGHT |
145 VehicleAreaSeat::ROW_2_LEFT | VehicleAreaSeat::ROW_2_CENTER |
146 VehicleAreaSeat::ROW_2_RIGHT));
146 147
147 if (hvacPowerOn && hvacPowerOn->value.int32Values.size() == 1 148 if (hvacPowerOn && hvacPowerOn->value.int32Values.size() == 1
148 && hvacPowerOn->value.int32Values[0] == 0) { 149 && hvacPowerOn->value.int32Values[0] == 0) {
diff --git a/broadcastradio/1.0/types.hal b/broadcastradio/1.0/types.hal
index 8c3ec119..259c7c9e 100644
--- a/broadcastradio/1.0/types.hal
+++ b/broadcastradio/1.0/types.hal
@@ -136,7 +136,8 @@ struct Properties {
136 uint32_t numAudioSources; 136 uint32_t numAudioSources;
137 /** the hardware supports capture of audio source from audio HAL */ 137 /** the hardware supports capture of audio source from audio HAL */
138 bool supportsCapture; 138 bool supportsCapture;
139 vec<BandConfig> bands; /** band descriptors */ 139 /** band descriptors */
140 vec<BandConfig> bands;
140}; 141};
141 142
142enum MetadataType : int32_t { 143enum MetadataType : int32_t {
@@ -229,6 +230,7 @@ struct ProgramInfo {
229 */ 230 */
230 uint32_t signalStrength; 231 uint32_t signalStrength;
231 232
232 vec<MetaData> metadata; /** Metadata: PTY, song title etc. */ 233 /** Metadata: PTY, song title etc. */
234 vec<MetaData> metadata;
233}; 235};
234 236
diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
index baffc787..ff7c0ee8 100644
--- a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
+++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
@@ -1013,6 +1013,10 @@ bool CameraHidlTest::DeviceCb::processCaptureResultLocked(const CaptureResult& r
1013 1013
1014 isPartialResult = 1014 isPartialResult =
1015 (results.partialResult < request->numPartialResults); 1015 (results.partialResult < request->numPartialResults);
1016 } else if (resultSize > 0) {
1017 request->collectedResult.append(reinterpret_cast<const camera_metadata_t*>(
1018 resultMetadata.data()));
1019 isPartialResult = false;
1016 } 1020 }
1017 1021
1018 hasInputBufferInRequest = request->hasInputBuffer; 1022 hasInputBufferInRequest = request->hasInputBuffer;
diff --git a/current.txt b/current.txt
index 7d630d27..fb784d50 100644
--- a/current.txt
+++ b/current.txt
@@ -250,6 +250,7 @@ f4945e397b5dea41bb64518dfde59be71245d8a125fd1e0acffeb57ac7b08fed android.hardwar
250c8bc853546dd55584611def2a9fa1d99f657e3366c976d2f60fe6b8aa6d2cb87 android.hardware.thermal@1.1::IThermalCallback 250c8bc853546dd55584611def2a9fa1d99f657e3366c976d2f60fe6b8aa6d2cb87 android.hardware.thermal@1.1::IThermalCallback
251 251
252# ABI preserving changes to HALs during Android P 252# ABI preserving changes to HALs during Android P
2539e7a0b650d0e461ece2cfec0e1072abf8676f592b41a7fb48f01e88fc3c8f780 android.hardware.broadcastradio@1.0::types
253eaeb3e4f3237430a7fdc206bffdf844713f5682990b2d49ea24392e15b5d343f android.hardware.broadcastradio@2.0::ITunerCallback 254eaeb3e4f3237430a7fdc206bffdf844713f5682990b2d49ea24392e15b5d343f android.hardware.broadcastradio@2.0::ITunerCallback
2542804120c1f8522ad15feb7695fe5eece527d399b406c671ea99618194118c316 android.hardware.broadcastradio@2.0::types 2552804120c1f8522ad15feb7695fe5eece527d399b406c671ea99618194118c316 android.hardware.broadcastradio@2.0::types
255cf72ff5a52bfa4d08e9e1000cf3ab5952a2d280c7f13cdad5ab7905c08050766 android.hardware.camera.metadata@3.2::types 256cf72ff5a52bfa4d08e9e1000cf3ab5952a2d280c7f13cdad5ab7905c08050766 android.hardware.camera.metadata@3.2::types
@@ -258,10 +259,21 @@ cf72ff5a52bfa4d08e9e1000cf3ab5952a2d280c7f13cdad5ab7905c08050766 android.hardwar
258fb92e2b40f8e9d494e8fd3b4ac18499a3216342e7cff160714c3bbf3660b6e79 android.hardware.gnss@1.0::IGnssConfiguration 259fb92e2b40f8e9d494e8fd3b4ac18499a3216342e7cff160714c3bbf3660b6e79 android.hardware.gnss@1.0::IGnssConfiguration
259251594ea9b27447bfa005ebd806e58fb0ae4aad84a69938129c9800ec0c64eda android.hardware.gnss@1.0::IGnssMeasurementCallback 260251594ea9b27447bfa005ebd806e58fb0ae4aad84a69938129c9800ec0c64eda android.hardware.gnss@1.0::IGnssMeasurementCallback
2604e7169919d24fbe5573e5bcd683d0bd7abf553a4e6c34c41f9dfc1e12050db07 android.hardware.gnss@1.0::IGnssNavigationMessageCallback 2614e7169919d24fbe5573e5bcd683d0bd7abf553a4e6c34c41f9dfc1e12050db07 android.hardware.gnss@1.0::IGnssNavigationMessageCallback
262190ea4898809de6cf379afe318f5fa9564686157b24d9a2d7f5698b0c977d8b2 android.hardware.graphics.bufferqueue@1.0::IGraphicBufferProducer
26325892789b50eb673506b6c5a2cdab5d9aa428d41608aab10280cc898538b524a android.hardware.graphics.composer@2.1::IComposerClient
264e205dd30f5ff99445b706a901de8ebc46c379e9d7c1921d6a327ed2082cfa83d android.hardware.graphics.composer@2.1::types
265a46251718abfada458dc64c41ce94915757bf6c87cfa2d9e99cfb01fa8e32331 android.hardware.graphics.mapper@2.0::IMapper
266bd33ac23c57b4a07632691d2191bc2c93930f57e62f4ccf459748fdaa5c0f480 android.hardware.graphics.mapper@2.0::types
267ad8a28ca3a5549fb9bc24cf5f80ac8f660cc27be885210d76266780aa52ddb8d android.hardware.keymaster@3.0::types
2615804ca86611d72e5481f022b3a0c1b334217f2e4988dad25730c42af2d1f4d1c android.hardware.neuralnetworks@1.0::IDevice 2685804ca86611d72e5481f022b3a0c1b334217f2e4988dad25730c42af2d1f4d1c android.hardware.neuralnetworks@1.0::IDevice
26212e8dca4ab7d8aadd0ef8f1b438021938e2396139e85db2ed65783b08800aa52 android.hardware.neuralnetworks@1.0::IExecutionCallback 26912e8dca4ab7d8aadd0ef8f1b438021938e2396139e85db2ed65783b08800aa52 android.hardware.neuralnetworks@1.0::IExecutionCallback
26318e6885e184fe48401c2c53f1d1b8bfb07240f40c81ae6b9d2e336fca6efdbb7 android.hardware.neuralnetworks@1.0::types 27018e6885e184fe48401c2c53f1d1b8bfb07240f40c81ae6b9d2e336fca6efdbb7 android.hardware.neuralnetworks@1.0::types
264d4840db8efabdf1e4b344fc981cd36e5fe81a39aff6e199f6d06c1c8da413efd android.hardware.radio@1.0::types 271d4840db8efabdf1e4b344fc981cd36e5fe81a39aff6e199f6d06c1c8da413efd android.hardware.radio@1.0::types
272f96cbc59dfe16c8d0c2a7e06db24d8738a6328b6e90f7b8e1640ea2b4600debd android.hardware.radio@1.1::ISap
2732d86929794795e5c70f4fdb5073485fd05835c9c6f496116687c3d9f32e6df3e android.hardware.radio@1.2::ISap
274905a4af79c8329b39d8b11b08f015137216bb078b427b6986f32884a04bc1bec android.hardware.tv.cec@1.0::types
275aebcd9ff2da05c9d4c439916f40dfd219ba7629919007cb981ebf150064b4f82 android.hardware.usb@1.1::IUsb
276e29fb1941b40a990676f8e9c676a38761defd890b81a9c034608eb7ba6496023 android.hardware.wifi@1.0::IWifiP2pIface
265b280c4704dfcc548a9bf127b59b7c3578f460c50cce70a06b66fe0df8b27cff0 android.hardware.wifi@1.0::types 277b280c4704dfcc548a9bf127b59b7c3578f460c50cce70a06b66fe0df8b27cff0 android.hardware.wifi@1.0::types
266 278
267# HALs released in Android P 279# HALs released in Android P
@@ -272,7 +284,7 @@ be3dc9baed45a0d330152eca3ca24fa419b375b20a41644c88d4fb46b72784d2 android.hardwar
272d5de64e66b95f135dd42492250a309134b8227203ef3524440798c66b6f5a392 android.hardware.audio@4.0::IStreamIn 284d5de64e66b95f135dd42492250a309134b8227203ef3524440798c66b6f5a392 android.hardware.audio@4.0::IStreamIn
273888ac906461327fa0bd93854d5109be8c292a33afdb467164826970a8bd5b789 android.hardware.audio@4.0::IStreamOut 285888ac906461327fa0bd93854d5109be8c292a33afdb467164826970a8bd5b789 android.hardware.audio@4.0::IStreamOut
27415f6ae78e73344c8e7d68847ef03caec64fcd9f951bbcf59957d1712c247fcff android.hardware.audio@4.0::IStreamOutCallback 28615f6ae78e73344c8e7d68847ef03caec64fcd9f951bbcf59957d1712c247fcff android.hardware.audio@4.0::IStreamOutCallback
275e8abfc73b7f3c2095ea4fad83b5f42bced4315de2abcc3199376af880dac451b android.hardware.audio@4.0::types 28761f0eaa4d08547d039e9b1dd7c82abe2c004286d1b9b8153c2491ff46a8a63ca android.hardware.audio@4.0::types
2765d47a2ad2c136b8aba067dd45bb10d0ad390dd76340764154f580658f98f4fe6 android.hardware.audio.common@4.0::types 2885d47a2ad2c136b8aba067dd45bb10d0ad390dd76340764154f580658f98f4fe6 android.hardware.audio.common@4.0::types
277b04b6b364938b80008e61fa2e318bc299622433e57c2e1f6cfba332a3f6e3f15 android.hardware.audio.effect@4.0::IAcousticEchoCancelerEffect 289b04b6b364938b80008e61fa2e318bc299622433e57c2e1f6cfba332a3f6e3f15 android.hardware.audio.effect@4.0::IAcousticEchoCancelerEffect
2781c17d4ece5c8ba3f7a646a305ee0dd109b0d51372e1bd585812e513cd40e1852 android.hardware.audio.effect@4.0::IAutomaticGainControlEffect 2901c17d4ece5c8ba3f7a646a305ee0dd109b0d51372e1bd585812e513cd40e1852 android.hardware.audio.effect@4.0::IAutomaticGainControlEffect
@@ -326,6 +338,7 @@ a830336ac8627d6432cfafb1b884343ad9f885dee0a5323e380e6d3c519156b8 android.hardwar
3261a07d1383e847c3deb696ec7a2c9e33b9683772945660448a010b18063da67a4 android.hardware.gnss@1.1::IGnssMeasurement 3381a07d1383e847c3deb696ec7a2c9e33b9683772945660448a010b18063da67a4 android.hardware.gnss@1.1::IGnssMeasurement
32783e7a10ff3702147bd7ffa04567b20d407a3b16bbb7705644af44d919afe9103 android.hardware.gnss@1.1::IGnssMeasurementCallback 33983e7a10ff3702147bd7ffa04567b20d407a3b16bbb7705644af44d919afe9103 android.hardware.gnss@1.1::IGnssMeasurementCallback
3280b96e0254e2168cfecb30c1ed5fb42681652cc00faa68c6e07568fafe64d1d50 android.hardware.graphics.common@1.1::types 3400b96e0254e2168cfecb30c1ed5fb42681652cc00faa68c6e07568fafe64d1d50 android.hardware.graphics.common@1.1::types
3417d2cef99c838fb58038de8bbfd3cdb76ff4797241987077721715297f8d45e34 android.hardware.graphics.common@1.1::types # b/78135149
329d9b40a5b09962a5a0780b10fe33a4e607e69e2e088fc83de88a584115b7cb1c0 android.hardware.graphics.composer@2.2::IComposer 342d9b40a5b09962a5a0780b10fe33a4e607e69e2e088fc83de88a584115b7cb1c0 android.hardware.graphics.composer@2.2::IComposer
330e7717f2ff2f6db43b24370ff08e14cd353da3004b32b17740e4a7ed4894b7e45 android.hardware.graphics.composer@2.2::IComposerClient 343e7717f2ff2f6db43b24370ff08e14cd353da3004b32b17740e4a7ed4894b7e45 android.hardware.graphics.composer@2.2::IComposerClient
331dd83be076b6b3f10ed62ab34d8c8b95f2415961fb785200eb842e7bfb2b0ee92 android.hardware.graphics.mapper@2.1::IMapper 344dd83be076b6b3f10ed62ab34d8c8b95f2415961fb785200eb842e7bfb2b0ee92 android.hardware.graphics.mapper@2.1::IMapper
diff --git a/graphics/bufferqueue/1.0/IGraphicBufferProducer.hal b/graphics/bufferqueue/1.0/IGraphicBufferProducer.hal
index 87bb814a..c59a16cc 100644
--- a/graphics/bufferqueue/1.0/IGraphicBufferProducer.hal
+++ b/graphics/bufferqueue/1.0/IGraphicBufferProducer.hal
@@ -546,7 +546,7 @@ interface IGraphicBufferProducer {
546 */ 546 */
547 disconnect( 547 disconnect(
548 int32_t api, 548 int32_t api,
549 DisconnectMode mode /** = DisconnectMode::API */ 549 DisconnectMode mode /* = DisconnectMode::API */
550 ) generates ( 550 ) generates (
551 Status status 551 Status status
552 ); 552 );
diff --git a/graphics/common/1.1/types.hal b/graphics/common/1.1/types.hal
index 5dca4829..423cf449 100644
--- a/graphics/common/1.1/types.hal
+++ b/graphics/common/1.1/types.hal
@@ -124,7 +124,7 @@ enum BufferUsage : @1.0::BufferUsage {
124 /** buffer contains a complete mipmap hierarchy */ 124 /** buffer contains a complete mipmap hierarchy */
125 GPU_MIPMAP_COMPLETE = 1ULL << 26, 125 GPU_MIPMAP_COMPLETE = 1ULL << 26,
126 126
127 /** bits 27 and 32-47 must be zero and are reserved for future versions */ 127 /* bits 27 and 32-47 must be zero and are reserved for future versions */
128}; 128};
129 129
130@export(name="android_dataspace_v1_1_t", value_prefix="HAL_DATASPACE_", 130@export(name="android_dataspace_v1_1_t", value_prefix="HAL_DATASPACE_",
diff --git a/graphics/composer/2.1/IComposerClient.hal b/graphics/composer/2.1/IComposerClient.hal
index f2ff932f..5ad46f01 100644
--- a/graphics/composer/2.1/IComposerClient.hal
+++ b/graphics/composer/2.1/IComposerClient.hal
@@ -1138,7 +1138,7 @@ interface IComposerClient {
1138 SET_LAYER_Z_ORDER = 0x40a << OPCODE_SHIFT, 1138 SET_LAYER_Z_ORDER = 0x40a << OPCODE_SHIFT,
1139 SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT = 0x40b << OPCODE_SHIFT, 1139 SET_PRESENT_OR_VALIDATE_DISPLAY_RESULT = 0x40b << OPCODE_SHIFT,
1140 1140
1141 /** 0x800 - 0xfff are reserved for vendor extensions */ 1141 /* 0x800 - 0xfff are reserved for vendor extensions */
1142 /** 0x1000 - 0xffff are reserved */ 1142 /* 0x1000 - 0xffff are reserved */
1143 }; 1143 };
1144}; 1144};
diff --git a/graphics/composer/2.1/types.hal b/graphics/composer/2.1/types.hal
index 9f0dd8bc..eb0a73bb 100644
--- a/graphics/composer/2.1/types.hal
+++ b/graphics/composer/2.1/types.hal
@@ -18,15 +18,15 @@ package android.hardware.graphics.composer@2.1;
18 18
19/** Return codes from all functions. */ 19/** Return codes from all functions. */
20enum Error : int32_t { 20enum Error : int32_t {
21 NONE = 0, /** no error */ 21 NONE = 0, /* no error */
22 BAD_CONFIG = 1, /** invalid Config */ 22 BAD_CONFIG = 1, /* invalid Config */
23 BAD_DISPLAY = 2, /** invalid Display */ 23 BAD_DISPLAY = 2, /* invalid Display */
24 BAD_LAYER = 3, /** invalid Layer */ 24 BAD_LAYER = 3, /* invalid Layer */
25 BAD_PARAMETER = 4, /** invalid width, height, etc. */ 25 BAD_PARAMETER = 4, /* invalid width, height, etc. */
26 /** 5 is reserved */ 26 /* 5 is reserved */
27 NO_RESOURCES = 6, /** temporary failure due to resource contention */ 27 NO_RESOURCES = 6, /* temporary failure due to resource contention */
28 NOT_VALIDATED = 7, /** validateDisplay has not been called */ 28 NOT_VALIDATED = 7, /* validateDisplay has not been called */
29 UNSUPPORTED = 8, /** permanent failure */ 29 UNSUPPORTED = 8, /* permanent failure */
30}; 30};
31 31
32typedef uint32_t Config; 32typedef uint32_t Config;
diff --git a/graphics/mapper/2.0/IMapper.hal b/graphics/mapper/2.0/IMapper.hal
index 4ee206bc..45661357 100644
--- a/graphics/mapper/2.0/IMapper.hal
+++ b/graphics/mapper/2.0/IMapper.hal
@@ -155,7 +155,7 @@ interface IMapper {
155 * @param cpuUsage specifies one or more CPU usage flags to request. 155 * @param cpuUsage specifies one or more CPU usage flags to request.
156 * @param accessRegion is the portion of the buffer that the client 156 * @param accessRegion is the portion of the buffer that the client
157 * intends to access. 157 * intends to access.
158 * @param acquireFence, when non-empty, is a handle containing a file 158 * @param acquireFence when non-empty, is a handle containing a file
159 * descriptor referring to a sync fence object, which will be 159 * descriptor referring to a sync fence object, which will be
160 * signaled when it is safe for the mapper to lock the buffer. If 160 * signaled when it is safe for the mapper to lock the buffer. If
161 * it is already safe to lock, acquireFence is empty. 161 * it is already safe to lock, acquireFence is empty.
@@ -191,7 +191,7 @@ interface IMapper {
191 * @param cpuUsage specifies one or more CPU usage flags to request. 191 * @param cpuUsage specifies one or more CPU usage flags to request.
192 * @param accessRegion is the portion of the buffer that the client 192 * @param accessRegion is the portion of the buffer that the client
193 * intends to access. 193 * intends to access.
194 * @param acquireFence, when non-empty, is a handle containing a file 194 * @param acquireFence when non-empty, is a handle containing a file
195 * descriptor referring to a sync fence object, which will be 195 * descriptor referring to a sync fence object, which will be
196 * signaled when it is safe for the mapper to lock the buffer. If 196 * signaled when it is safe for the mapper to lock the buffer. If
197 * it is already safe to lock, acquireFence is empty. 197 * it is already safe to lock, acquireFence is empty.
diff --git a/graphics/mapper/2.0/types.hal b/graphics/mapper/2.0/types.hal
index e9b2f3a7..2291f700 100644
--- a/graphics/mapper/2.0/types.hal
+++ b/graphics/mapper/2.0/types.hal
@@ -17,14 +17,14 @@
17package android.hardware.graphics.mapper@2.0; 17package android.hardware.graphics.mapper@2.0;
18 18
19enum Error : int32_t { 19enum Error : int32_t {
20 NONE = 0, /** no error */ 20 NONE = 0, /* no error */
21 BAD_DESCRIPTOR = 1, /** invalid BufferDescriptor */ 21 BAD_DESCRIPTOR = 1, /* invalid BufferDescriptor */
22 BAD_BUFFER = 2, /** invalid buffer handle */ 22 BAD_BUFFER = 2, /* invalid buffer handle */
23 BAD_VALUE = 3, /** invalid width, height, etc. */ 23 BAD_VALUE = 3, /* invalid width, height, etc. */
24 /* 4 is reserved */ 24 /* 4 is reserved */
25 NO_RESOURCES = 5, /** temporary failure due to resource contention */ 25 NO_RESOURCES = 5, /* temporary failure due to resource contention */
26 /* 6 is reserved */ 26 /* 6 is reserved */
27 UNSUPPORTED = 7, /** permanent failure */ 27 UNSUPPORTED = 7, /* permanent failure */
28}; 28};
29 29
30/** 30/**
diff --git a/keymaster/3.0/types.hal b/keymaster/3.0/types.hal
index 6dad23e4..72f7d473 100644
--- a/keymaster/3.0/types.hal
+++ b/keymaster/3.0/types.hal
@@ -17,17 +17,17 @@
17package android.hardware.keymaster@3.0; 17package android.hardware.keymaster@3.0;
18 18
19enum TagType : uint32_t { 19enum TagType : uint32_t {
20 INVALID = 0 << 28, /** Invalid type, used to designate a tag as uninitialized */ 20 INVALID = 0 << 28, /* Invalid type, used to designate a tag as uninitialized */
21 ENUM = 1 << 28, 21 ENUM = 1 << 28,
22 ENUM_REP = 2 << 28, /** Repeatable enumeration value. */ 22 ENUM_REP = 2 << 28, /* Repeatable enumeration value. */
23 UINT = 3 << 28, 23 UINT = 3 << 28,
24 UINT_REP = 4 << 28, /** Repeatable integer value */ 24 UINT_REP = 4 << 28, /* Repeatable integer value */
25 ULONG = 5 << 28, 25 ULONG = 5 << 28,
26 DATE = 6 << 28, 26 DATE = 6 << 28,
27 BOOL = 7 << 28, 27 BOOL = 7 << 28,
28 BIGNUM = 8 << 28, 28 BIGNUM = 8 << 28,
29 BYTES = 9 << 28, 29 BYTES = 9 << 28,
30 ULONG_REP = 10 << 28, /** Repeatable long value */ 30 ULONG_REP = 10 << 28, /* Repeatable long value */
31}; 31};
32 32
33enum Tag : uint32_t { 33enum Tag : uint32_t {
@@ -254,12 +254,12 @@ enum KeyBlobUsageRequirements : uint32_t {
254 * Possible purposes of a key (or pair). 254 * Possible purposes of a key (or pair).
255 */ 255 */
256enum KeyPurpose : uint32_t { 256enum KeyPurpose : uint32_t {
257 ENCRYPT = 0, /** Usable with RSA, EC and AES keys. */ 257 ENCRYPT = 0, /* Usable with RSA, EC and AES keys. */
258 DECRYPT = 1, /** Usable with RSA, EC and AES keys. */ 258 DECRYPT = 1, /* Usable with RSA, EC and AES keys. */
259 SIGN = 2, /** Usable with RSA, EC and HMAC keys. */ 259 SIGN = 2, /* Usable with RSA, EC and HMAC keys. */
260 VERIFY = 3, /** Usable with RSA, EC and HMAC keys. */ 260 VERIFY = 3, /* Usable with RSA, EC and HMAC keys. */
261 DERIVE_KEY = 4, /** Usable with EC keys. */ 261 DERIVE_KEY = 4, /* Usable with EC keys. */
262 WRAP_KEY = 5, /** Usable with wrapping keys. */ 262 WRAP_KEY = 5, /* Usable with wrapping keys. */
263}; 263};
264 264
265/** 265/**
diff --git a/radio/1.1/ISap.hal b/radio/1.1/ISap.hal
index edcf176a..0cabccc1 100644
--- a/radio/1.1/ISap.hal
+++ b/radio/1.1/ISap.hal
@@ -18,8 +18,7 @@ package android.hardware.radio@1.1;
18 18
19import @1.0::ISap; 19import @1.0::ISap;
20 20
21interface ISap extends @1.0::ISap { 21/**
22 /** 22 * Empty top level interface.
23 * Empty top level interface. 23 */
24 */ 24interface ISap extends @1.0::ISap {};
25};
diff --git a/radio/1.2/ISap.hal b/radio/1.2/ISap.hal
index 757027ce..65f9b848 100644
--- a/radio/1.2/ISap.hal
+++ b/radio/1.2/ISap.hal
@@ -18,8 +18,7 @@ package android.hardware.radio@1.2;
18 18
19import @1.1::ISap; 19import @1.1::ISap;
20 20
21interface ISap extends @1.1::ISap { 21/**
22 /** 22 * Empty top level interface.
23 * Empty top level interface. 23 */
24 */ 24interface ISap extends @1.1::ISap {};
25};
diff --git a/tv/cec/1.0/types.hal b/tv/cec/1.0/types.hal
index a1853a31..c734c4d7 100644
--- a/tv/cec/1.0/types.hal
+++ b/tv/cec/1.0/types.hal
@@ -193,7 +193,7 @@ enum OptionKey : int32_t {
193 */ 193 */
194 SYSTEM_CEC_CONTROL = 3, 194 SYSTEM_CEC_CONTROL = 3,
195 195
196 /** Option 4 not used */ 196 /* Option 4 not used */
197}; 197};
198 198
199struct CecMessage { 199struct CecMessage {
diff --git a/usb/1.1/IUsb.hal b/usb/1.1/IUsb.hal
index 9cedea0c..606928bf 100644
--- a/usb/1.1/IUsb.hal
+++ b/usb/1.1/IUsb.hal
@@ -18,11 +18,9 @@ package android.hardware.usb@1.1;
18 18
19import android.hardware.usb@1.0; 19import android.hardware.usb@1.0;
20 20
21interface IUsb extends android.hardware.usb@1.0::IUsb { 21/*
22 /** 22 * The setCallback function in V1_0 is used to register the V1_1
23 * The setCallback function in V1_0 is used to register the V1_1 23 * IUsbCallback object as well. The implementation can use the
24 * IUsbCallback object as well. The implementation can use the 24 * castFrom method to cast the IUsbCallback object.
25 * castFrom method to cast the IUsbCallback object. 25 */
26 */ 26interface IUsb extends android.hardware.usb@1.0::IUsb {};
27};
28
diff --git a/wifi/1.0/IWifiP2pIface.hal b/wifi/1.0/IWifiP2pIface.hal
index 243748ff..b9085911 100644
--- a/wifi/1.0/IWifiP2pIface.hal
+++ b/wifi/1.0/IWifiP2pIface.hal
@@ -21,6 +21,4 @@ import IWifiIface;
21/** 21/**
22 * Interface used to represent a single NAN iface. 22 * Interface used to represent a single NAN iface.
23 */ 23 */
24interface IWifiP2pIface extends IWifiIface { 24interface IWifiP2pIface extends IWifiIface {};
25 /** TODO(rpius): Add methods to the interface. */
26};
diff --git a/wifi/1.2/default/OWNERS b/wifi/1.2/default/OWNERS
index 2878acc7..8bfb1488 100644
--- a/wifi/1.2/default/OWNERS
+++ b/wifi/1.2/default/OWNERS
@@ -1,2 +1,2 @@
1rpius@google.com 1rpius@google.com
2quiche@google.com 2etancohen@google.com