diff options
-rw-r--r-- | applications/message_handler/message_handler.cpp | 27 | ||||
-rw-r--r-- | applications/message_handler/message_handler.hpp | 1 |
2 files changed, 26 insertions, 2 deletions
diff --git a/applications/message_handler/message_handler.cpp b/applications/message_handler/message_handler.cpp index a634c16..f06d056 100644 --- a/applications/message_handler/message_handler.cpp +++ b/applications/message_handler/message_handler.cpp @@ -117,7 +117,7 @@ bool getNetwork(const uint32_t index, void *&data, size_t &size) { #endif default: - printf("Error: Network model index out of range. index=%u\n", index); + printf("Error: Network model index out of range. index=%" PRIu32 "\n", index); return true; } @@ -131,7 +131,7 @@ bool getNetwork(const ethosu_core_network_buffer &buffer, void *&data, size_t &s case ETHOSU_CORE_NETWORK_INDEX: return getNetwork(buffer.index, data, size); default: - printf("Error: Unsupported network model type. type=%u\n", buffer.type); + printf("Error: Unsupported network model type. type=%" PRIu32 "\n", buffer.type); return true; } } @@ -293,6 +293,19 @@ bool IncomingMessageHandler::handleMessage() { } break; } + case ETHOSU_CORE_MSG_CANCEL_INFERENCE_REQ: { + ethosu_core_cancel_inference_req req; + if (!inputMessageQueue.read(req)) { + sendErrorAndResetQueue(ETHOSU_CORE_MSG_ERR_INVALID_PAYLOAD, "CancelInferenceReq. Failed to read payload"); + break; + } + printf("Msg: CancelInferenceReq. user_arg=0x%" PRIx64 ", inference_handle=0x%" PRIx64 "\n", + req.user_arg, + req.inference_handle); + + sendCancelInferenceRsp(req.user_arg, ETHOSU_CORE_STATUS_ERROR); + break; + } case ETHOSU_CORE_MSG_NETWORK_INFO_REQ: { ethosu_core_network_info_req req; if (!inputMessageQueue.read(req)) { @@ -393,6 +406,16 @@ void IncomingMessageHandler::sendFailedInferenceRsp(uint64_t userArg, uint32_t s mailbox.sendMessage(); } } +void IncomingMessageHandler::sendCancelInferenceRsp(uint64_t userArg, uint32_t status) { + ethosu_core_cancel_inference_rsp cancellation; + cancellation.user_arg = userArg; + cancellation.status = status; + if (!outputMessageQueue.write(ETHOSU_CORE_MSG_CANCEL_INFERENCE_RSP, cancellation)) { + printf("ERROR: Msg: Failed to write cancel inference response. No mailbox message sent\n"); + } else { + mailbox.sendMessage(); + } +} void IncomingMessageHandler::readCapabilties(ethosu_core_msg_capabilities_rsp &rsp) { rsp = {}; diff --git a/applications/message_handler/message_handler.hpp b/applications/message_handler/message_handler.hpp index 60787e8..fa79205 100644 --- a/applications/message_handler/message_handler.hpp +++ b/applications/message_handler/message_handler.hpp @@ -59,6 +59,7 @@ private: void sendNetworkInfoRsp(uint64_t userArg, EthosU::ethosu_core_network_buffer &network); void sendInferenceRsp(EthosU::ethosu_core_inference_rsp &inference); void sendFailedInferenceRsp(uint64_t userArg, uint32_t status); + void sendCancelInferenceRsp(uint64_t userArg, uint32_t status); void readCapabilties(EthosU::ethosu_core_msg_capabilities_rsp &rsp); MessageQueue::QueueImpl inputMessageQueue; |