[camera] Improve logging of error codes

Change-Id: I1b72761ab539f08406a0d0d3765c6a62663b20e0
diff --git a/src/camera/camera_manager/video_device_client.cc b/src/camera/camera_manager/video_device_client.cc
index c9b8b8e..be7522c 100644
--- a/src/camera/camera_manager/video_device_client.cc
+++ b/src/camera/camera_manager/video_device_client.cc
@@ -43,14 +43,16 @@
   }
 
   zx::channel local, remote;
-  zx_status_t status = zx::channel::create(0u, &local, &remote);
-  FX_CHECK(status == ZX_OK) << "Failed to create channel. status " << status;
+  auto err = zx::channel::create(0u, &local, &remote);
+  if (err) {
+    FX_PLOGS(ERROR, err) << "Failed to create channel";
+    return nullptr;
+  }
 
   fzl::FdioCaller dev(std::move(dev_node));
-  zx_status_t res =
-      fuchsia_hardware_camera_DeviceGetChannel(dev.borrow_channel(), remote.release());
-  if (res != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to obtain channel (res " << res << ")";
+  err = fuchsia_hardware_camera_DeviceGetChannel(dev.borrow_channel(), remote.release());
+  if (err) {
+    FX_PLOGS(ERROR, err) << "Failed to obtain channel";
     return nullptr;
   }
 
@@ -142,7 +144,7 @@
   // since the camera manager does not retain control of the stream channel.
   zx_status_t status = zx::eventpair::create(0, &stream->stream_token_, driver_token);
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't create driver token. status: " << status;
+    FX_PLOGS(ERROR, status) << "Couldn't create driver token";
     return nullptr;
   }
   // Create a waiter that waits for the stream_token to be closed.
@@ -161,7 +163,7 @@
 
   status = stream->stream_token_waiter_->Begin(async_get_default_dispatcher());
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't begin stream_token_waiter_ wait. status: " << status;
+    FX_PLOGS(ERROR, status) << "Couldn't begin stream_token_waiter_ wait";
     return nullptr;
   }
 
diff --git a/src/camera/camera_manager2/camera_manager_app.cc b/src/camera/camera_manager2/camera_manager_app.cc
index 97e4464..286a2ea 100644
--- a/src/camera/camera_manager2/camera_manager_app.cc
+++ b/src/camera/camera_manager2/camera_manager_app.cc
@@ -24,11 +24,10 @@
   FX_LOGS(INFO) << "Starting";
 
   auto camera_manager = std::make_unique<CameraManagerApp>(std::move(context));
-
   zx_status_t status =
       camera_manager->context_->svc()->Connect(camera_manager->sysmem_allocator_.NewRequest());
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to connect to sysmem service. status " << status;
+    FX_PLOGS(ERROR, status) << "Failed to connect to sysmem service";
     return nullptr;
   }
 
@@ -36,7 +35,7 @@
   status = camera_manager->plug_detector_.Start(
       fbl::BindMember(camera_manager.get(), &CameraManagerApp::OnDeviceFound));
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to start plug_detector. status " << status;
+    FX_PLOGS(ERROR, status) << "Failed to start plug_detector";
     return nullptr;
   }
 
@@ -87,11 +86,7 @@
     fidl::InterfaceHandle<fuchsia::sysmem::BufferCollectionToken> token,
     fidl::InterfaceRequest<fuchsia::camera2::Stream> client_request,
     fuchsia::camera2::Manager::ConnectToStreamCallback callback) {
-  auto cleanup = fbl::MakeAutoCall([&callback]() {
-    FX_LOGS(ERROR) << "Failed to connect to stream";
-    ::fuchsia::sysmem::ImageFormat_2 ret;
-    callback(ret);
-  });
+  auto cleanup = fbl::MakeAutoCall([&callback]() { callback({}); });
 
   // 1: Check that the camera exists:
   auto device = GetActiveDevice(camera_id);
@@ -107,9 +102,10 @@
   // 3: Pick a config, stream and image_format_index
   zx_status_t status = device->MatchConstraints(constraints, &config_index, &stream_type);
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to match constraints. status: " << status;
+    FX_PLOGS(ERROR, status) << "Failed to match constraints";
     return;
   }
+
   FX_LOGS(INFO) << "Picked config " << config_index << " stream index: " << stream_type
                 << " format index: " << image_format_index;
   // Get configs from the device:
@@ -134,7 +130,7 @@
   status =
       sysmem_allocator_->BindSharedCollection(std::move(token), sysmem_collection.NewRequest());
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to connect to BindSharedCollection.";
+    FX_PLOGS(ERROR, status) << "BindSharedCollection failed";
     return;
   }
 
@@ -142,7 +138,7 @@
   status = device->CreateStream(config_index, stream_type, image_format_index,
                                 std::move(sysmem_collection), std::move(client_request));
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to connect to create stream.";
+    FX_PLOGS(ERROR, status) << "CreateStream failed";
     return;
   }
 
diff --git a/src/camera/camera_manager2/test/camera_manager_test.cc b/src/camera/camera_manager2/test/camera_manager_test.cc
index 4762b82..2286677 100644
--- a/src/camera/camera_manager2/test/camera_manager_test.cc
+++ b/src/camera/camera_manager2/test/camera_manager_test.cc
@@ -114,10 +114,9 @@
 
   bool passed = false;
   bool stream_failure = false;
-  // Set an error handler so that if the stream fails, the test can be stopped:
   stream.set_error_handler([&stream_failure](zx_status_t status) {
     stream_failure = true;
-    FX_LOGS(ERROR) << "Stream failed with error " << status;
+    FX_PLOGS(ERROR, status) << "Stream failed with error ";
   });
   stream.events().OnFrameAvailable = [&passed](fuchsia::camera2::FrameAvailableInfo frame) {
     passed = true;
diff --git a/src/camera/camera_manager2/video_device_client.cc b/src/camera/camera_manager2/video_device_client.cc
index 02ff6b8f..33add24 100644
--- a/src/camera/camera_manager2/video_device_client.cc
+++ b/src/camera/camera_manager2/video_device_client.cc
@@ -16,7 +16,7 @@
 std::unique_ptr<VideoDeviceClient> VideoDeviceClient::Create(
     fidl::InterfaceHandle<fuchsia::camera2::hal::Controller> controller) {
   if (!controller.is_valid()) {
-    FX_LOGS(ERROR) << __func__ << " Received invalid InterfaceHandle.";
+    FX_LOGS(ERROR) << " Received invalid InterfaceHandle";
     return nullptr;
   }
 
@@ -26,8 +26,9 @@
   // Since the interface is synchronous, just gather info here.
   // TODO(41395): Handle the stalled driver scenario so that one bad device
   // doesn't hose the manager.
-  if (device->GetInitialInfo() != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't get configs or info for device";
+  auto err = device->GetInitialInfo();
+  if (err) {
+    FX_PLOGS(ERROR, err) << "Couldn't get configs or info for device";
     return nullptr;
   }
 
@@ -39,7 +40,7 @@
     fidl::InterfaceHandle<fuchsia::sysmem::BufferCollection> sysmem_collection,
     ::fidl::InterfaceRequest<::fuchsia::camera2::Stream> stream) {
   if (config_index >= configs_.size()) {
-    FX_LOGS(ERROR) << "Requested config " << config_index << " Does not exist.";
+    FX_LOGS(WARNING) << "Requested config " << config_index << " Does not exist.";
     return ZX_ERR_INVALID_ARGS;
   }
   if (stream_type >= configs_[config_index].stream_configs.size()) {
@@ -54,34 +55,33 @@
     return ZX_ERR_INVALID_ARGS;
   }
   if (!sysmem_collection.is_valid()) {
-    FX_LOGS(ERROR) << __func__ << " Received invalid InterfaceHandle for buffer collection.";
+    FX_LOGS(ERROR) << " Received invalid InterfaceHandle for buffer collection.";
     return ZX_ERR_INVALID_ARGS;
   }
   auto sysmem_collection_ptr = sysmem_collection.BindSync();
   auto &stream_config = configs_[config_index].stream_configs[stream_type];
   zx_status_t status = sysmem_collection_ptr->SetConstraints(true, stream_config.constraints);
-  if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to connect to SetConstraints.";
+  if (status) {
+    FX_PLOGS(ERROR, status) << "SetContraints failed";
     return status;
   }
 
   zx_status_t allocation_status = ZX_OK;
   fuchsia::sysmem::BufferCollectionInfo_2 buffer_collection_info{};
-  status =
-      sysmem_collection_ptr->WaitForBuffersAllocated(&allocation_status, &buffer_collection_info);
+  status = sysmem_collection_ptr->WaitForBuffersAllocated(&allocation_status, &buffer_collection_info);
   if (allocation_status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to allocate buffers.";
+    FX_PLOGS(ERROR, allocation_status) << "Failed to allocate buffers.";
     return allocation_status;
   }
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to call WaitForBuffersAllocated.";
+    FX_PLOGS(ERROR, status) << "WaitForBuffersAllocated failed";
     return status;
   }
 
   status = camera_control_->CreateStream(config_index, stream_type, image_format_index,
-                                         std::move(buffer_collection_info), std::move(stream));
+                                      std::move(buffer_collection_info), std::move(stream));
   if (status != ZX_OK) {
-    FX_LOGS(ERROR) << "Failed to call CreateStream.";
+    FX_PLOGS(ERROR, status) << "Failed to call CreateStream.";
     return status;
   }
 
@@ -159,14 +159,13 @@
 zx_status_t VideoDeviceClient::GetInitialInfo() {
   zx_status_t out_status;
   fidl::VectorPtr<fuchsia::camera2::hal::Config> out_configs;
-  zx_status_t fidl_status = camera_control_->GetConfigs(&out_configs, &out_status);
-
-  if (fidl_status != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't get Camera Configs. fidl status: " << fidl_status;
-    return fidl_status;
+  auto err = camera_control_->GetConfigs(&out_configs, &out_status);
+  if (err) {
+    FX_PLOGS(ERROR, err) << "Couldn't get Camera Configs";
+    return err;
   }
   if (out_status != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't get Camera Configs. status: " << out_status;
+    FX_PLOGS(ERROR, out_status) << "Couldn't get Camera Configs";
     return out_status;
   }
   if (!out_configs) {
@@ -210,10 +209,10 @@
   // now we have configs, copy the vector to member variable.
   configs_ = std::move(out_configs.value());
 
-  fidl_status = camera_control_->GetDeviceInfo(&device_info_);
-  if (fidl_status != ZX_OK) {
-    FX_LOGS(ERROR) << "Couldn't get device info for device ";
-    return fidl_status;
+  err = camera_control_->GetDeviceInfo(&device_info_);
+  if (err) {
+    FX_PLOGS(ERROR, err) << "Couldn't get device info for device ";
+    return err;
   }
   return ZX_OK;
 }
diff --git a/src/camera/drivers/controller/controller-protocol.cc b/src/camera/drivers/controller/controller-protocol.cc
index b33633a..0885800 100644
--- a/src/camera/drivers/controller/controller-protocol.cc
+++ b/src/camera/drivers/controller/controller-protocol.cc
@@ -90,7 +90,7 @@
   InternalConfigInfo* internal_config;
   status = GetInternalConfiguration(config_index, &internal_config);
   if (status != ZX_OK) {
-    FX_LOGST(ERROR, TAG) << "Unable to get Internal configuration" << status;
+    FX_PLOGST(ERROR, TAG, status) << "Unable to get Internal configuration";
     return;
   }
 
@@ -112,7 +112,7 @@
   // Configure the stream pipeline
   status = pipeline_manager_.ConfigureStreamPipeline(&info, stream);
   if (status != ZX_OK) {
-    FX_LOGST(ERROR, TAG) << "Unable to create Stream Pipeline" << status;
+    FX_PLOGST(ERROR, TAG, status) << "Unable to create Stream Pipeline";
     return;
   }
 
diff --git a/src/camera/drivers/virtual_camera/virtual_camera2_control.cc b/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
index c3cb25c..a90fe45 100644
--- a/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
+++ b/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
@@ -165,12 +165,12 @@
   // If we fail here we return, which drops the stream request, closing the channel.
   zx_status_t status = buffers_.Init(vmos.data(), buffer_collection.buffer_count);
   if (status != ZX_OK) {
-    FX_LOGST(ERROR, TAG) << "Init buffers failed!" << status;
+    FX_PLOGST(ERROR, TAG, status) << "Init buffers failed!";
     return;
   }
   status = buffers_.MapVmos();
   if (status != ZX_OK) {
-    FX_LOGST(ERROR, TAG) << "Map buffers failed!" << status;
+    FX_PLOGST(ERROR, TAG, status) << "Map buffers failed!";
     return;
   }