Fix bugs in power test nanoapp

1) Check if optional fields are present before accessing them
2) Fill in last endpoint ID
3) Log NAN actions so it's clear what the nanoapp is doing.

Bug: 223366840
Test: Call nanoapp via power test client
Change-Id: I265367083252fcca4fb9bc0da19a84f3f9a5eb48
diff --git a/apps/power_test/common/request_manager.cc b/apps/power_test/common/request_manager.cc
index e6ff02c..8539b68 100644
--- a/apps/power_test/common/request_manager.cc
+++ b/apps/power_test/common/request_manager.cc
@@ -325,6 +325,8 @@
 
 void RequestManager::handleNanIdResult(
     const struct chreWifiNanIdentifierEvent *event) {
+  LOGI("Received NAN ID result: ID %" PRIu32 " success %d", event->id,
+       event->result.success);
   auto builder = chre::MakeUnique<chre::ChreFlatBufferBuilder>();
   if (builder.isNull()) {
     LOG_OOM();
@@ -349,19 +351,27 @@
 }
 
 bool RequestManager::requestWifiNanSub(const WifiNanSubMessage *msg) {
-  chreWifiNanSubscribeConfig config;
+  chreWifiNanSubscribeConfig config{};
   config.subscribeType = msg->sub_type();
   config.service = reinterpret_cast<const char *>(msg->service_name()->data());
-  config.serviceSpecificInfo = msg->service_specific_info()->Data();
-  config.serviceSpecificInfoSize = msg->service_specific_info()->size();
-  config.matchFilter = msg->match_filter()->Data();
-  config.matchFilterLength = msg->match_filter()->size();
+  if (msg->service_specific_info()) {
+    config.serviceSpecificInfo = msg->service_specific_info()->Data();
+    config.serviceSpecificInfoSize = msg->service_specific_info()->size();
+  }
+  if (msg->match_filter()) {
+    config.matchFilter = msg->match_filter()->Data();
+    config.matchFilterLength = msg->match_filter()->size();
+  }
 
-  return chreWifiNanSubscribe(&config, nullptr /* cookie */);
+  bool success = chreWifiNanSubscribe(&config, nullptr /* cookie */);
+  LOGI("requestWifiNanSub success %d", success);
+  return success;
 }
 
 bool RequestManager::cancelWifiNanSub(uint32_t subscriptionId) {
-  return chreWifiNanSubscribeCancel(subscriptionId);
+  bool success = chreWifiNanSubscribeCancel(subscriptionId);
+  LOGI("cancelWifiNanSub success %d", success);
+  return success;
 }
 
 void RequestManager::handleMessageFromHost(
@@ -371,6 +381,7 @@
     LOGE("Host message from %" PRIu16 " has empty message",
          hostMessage.hostEndpoint);
   } else {
+    mLastHostEndpointId = hostMessage.hostEndpoint;
     switch (static_cast<MessageType>(hostMessage.messageType)) {
       case MessageType::TIMER_TEST: {
         const TimerMessage *msg;