• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "DeactivateTimelineReportingCommandHandler.hpp"
7 
8 #include <armnn/Exceptions.hpp>
9 #include <fmt/format.h>
10 
11 
12 namespace armnn
13 {
14 
15 namespace profiling
16 {
17 
operator ()(const arm::pipe::Packet & packet)18 void DeactivateTimelineReportingCommandHandler::operator()(const arm::pipe::Packet& packet)
19 {
20     ProfilingState currentState = m_StateMachine.GetCurrentState();
21 
22     switch ( currentState )
23     {
24         case ProfilingState::Uninitialised:
25         case ProfilingState::NotConnected:
26         case ProfilingState::WaitingForAck:
27             throw RuntimeException(fmt::format(
28                     "Deactivate Timeline Reporting Command Handler invoked while in a wrong state: {}",
29                     GetProfilingStateName(currentState)));
30         case ProfilingState::Active:
31             if (!(packet.GetPacketFamily() == 0u && packet.GetPacketId() == 7u))
32             {
33                 throw armnn::Exception(std::string("Expected Packet family = 0, id = 7 but received family =")
34                                        + std::to_string(packet.GetPacketFamily())
35                                        +" id = " + std::to_string(packet.GetPacketId()));
36             }
37 
38             m_TimelineReporting.store(false);
39 
40             // Notify Backends
41             m_BackendNotifier.NotifyBackendsForTimelineReporting();
42 
43             break;
44         default:
45             throw RuntimeException(fmt::format("Unknown profiling service state: {}",
46                                    static_cast<int>(currentState)));
47     }
48 }
49 
50 } // namespace profiling
51 
52 } // namespace armnn
53 
54