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)18void 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