main: cleanup command handling
Change-Id: I7b07bb13948607b40365411c16510073d33ba57b
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/ipmi.cpp b/ipmi.cpp
index b9a8943..fad2049 100644
--- a/ipmi.cpp
+++ b/ipmi.cpp
@@ -20,6 +20,27 @@
#include "flash-ipmi.hpp"
#include "ipmi.hpp"
+IpmiFlashHandler getCommandHandler(FlashSubCmds command)
+{
+ static const std::unordered_map<FlashSubCmds, IpmiFlashHandler>
+ subHandlers = {
+ {FlashSubCmds::flashStartTransfer, startTransfer},
+ {FlashSubCmds::flashDataBlock, dataBlock},
+ {FlashSubCmds::flashDataFinish, dataFinish},
+ {FlashSubCmds::flashStartHash, startHash},
+ {FlashSubCmds::flashHashData, hashBlock},
+ {FlashSubCmds::flashHashFinish, hashFinish},
+ };
+
+ auto results = subHandlers.find(command);
+ if (results == subHandlers.end())
+ {
+ return nullptr;
+ }
+
+ return results->second;
+}
+
bool validateRequestLength(FlashSubCmds command, size_t requestLen)
{
static const std::unordered_map<FlashSubCmds, size_t> minimumLengths = {