[audio_core] Don't log canceled WakeupEvent

When WakeupEvent signals with an error, AudioCore logs in the SysLog
at level ERROR. With this CL, we don't log anything if the specific
error is ZX_ERR_CANCELED, as part of an overall effort to eliminate
ERROR log messages that can normally occur without indicating failure.

Subsequent CLs that add new test binaries need not opt out of the
default behavior that treats ERRORs as test failures.

Bug: 52651
Test: logging-only

Change-Id: Ie4024a19f6007148a20033579882c1cda0078a66
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/443654
Reviewed-by: Tim Detwiler <tjdetwiler@google.com>
Reviewed-by: Tom Bergan <tombergan@google.com>
Commit-Queue: Martin Puryear <mpuryear@google.com>
Testability-Review: Tom Bergan <tombergan@google.com>
diff --git a/src/media/audio/audio_core/wakeup_event.cc b/src/media/audio/audio_core/wakeup_event.cc
index 52609ef..d06bf252 100644
--- a/src/media/audio/audio_core/wakeup_event.cc
+++ b/src/media/audio/audio_core/wakeup_event.cc
@@ -43,9 +43,13 @@
 void WakeupEvent::OnSignals(async_dispatcher_t* dispatcher, async::WaitBase* wait,
                             zx_status_t status, const zx_packet_signal_t* signal) {
   if (status != ZX_OK) {
-    FX_PLOGS(ERROR, status) << "Async wait failed";
+    // Cancellation is normal behavior
+    if (status != ZX_ERR_CANCELED) {
+      FX_PLOGS(ERROR, status) << "Async wait failed";
+    }
     return;
   }
+
   if (signal->observed & kWakeupEventSignal) {
     // Deassert first so that the process handler can reassert if necessary.
     status = DeassertWakeupEventSignal(event_);
@@ -69,4 +73,5 @@
     }
   }
 }
+
 }  // namespace media::audio