IVGCVSW-4270 Change .dot file name to start with netId

* .dot file will start with the same number as the associated input
  and output tensor dump files

Change-Id: Ic64539854c2b8c34a7034fa18a142b2dfe67df7d
Signed-off-by: Jim Flynn <jim.flynn@arm.com>

IVGCVSW-4271 Add getSupportedOperations marker file

* Also fix segfault in previous graph dump code

Change-Id: I01915f47ae17d89ad3595430d073a17b1a1fda58
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/ArmnnDriverImpl.cpp b/ArmnnDriverImpl.cpp
index 9fe2c0e..14af3c0 100644
--- a/ArmnnDriverImpl.cpp
+++ b/ArmnnDriverImpl.cpp
@@ -131,7 +131,7 @@
 
     // Export the optimized network graph to a dot file if an output dump directory
     // has been specified in the drivers' arguments.
-    ExportNetworkGraphToDotFile<HalModel>(*optNet, options.GetRequestInputsAndOutputsDumpDir(), model);
+    std::string dotGraphFileName = ExportNetworkGraphToDotFile(*optNet, options.GetRequestInputsAndOutputsDumpDir());
 
     // Load it into the runtime.
     armnn::NetworkId netId = 0;
@@ -150,6 +150,12 @@
         return ErrorStatus::NONE;
     }
 
+    // Now that we have a networkId for the graph rename the dump file to use it
+    // so that we can associate the graph file and the input/output tensor dump files
+    RenameGraphDotFile(dotGraphFileName,
+                       options.GetRequestInputsAndOutputsDumpDir(),
+                       netId);
+
     sp<ArmnnPreparedModel<HalPolicy>> preparedModel(
             new ArmnnPreparedModel<HalPolicy>(
                     netId,
@@ -191,7 +197,31 @@
                                                                 const HalModel& model,
                                                                 HalGetSupportedOperations_cb cb)
 {
-    ALOGV("ArmnnDriverImpl::getSupportedOperations()");
+    std::stringstream ss;
+    ss << "ArmnnDriverImpl::getSupportedOperations()";
+    std::string fileName;
+    std::string timestamp;
+    if (!options.GetRequestInputsAndOutputsDumpDir().empty())
+    {
+        timestamp = GetFileTimestamp();
+        fileName = boost::str(boost::format("%1%/%2%_getSupportedOperations.txt")
+                          % options.GetRequestInputsAndOutputsDumpDir()
+                          % timestamp);
+        ss << " : " << fileName;
+    }
+    ALOGV(ss.str().c_str());
+
+    if (!options.GetRequestInputsAndOutputsDumpDir().empty())
+    {
+        //dump the marker file
+        std::ofstream fileStream;
+        fileStream.open(fileName, std::ofstream::out | std::ofstream::trunc);
+        if (fileStream.good())
+        {
+            fileStream << timestamp << std::endl;
+        }
+        fileStream.close();
+    }
 
     vector<bool> result;