add support to KMM factory for inventory lists;

pull/86/head
Bryan Biedenkapp 11 months ago
parent 7dc90b577f
commit 79f00524ba

@ -44,6 +44,32 @@ std::unique_ptr<KMMFrame> KMMFactory::create(const uint8_t* data)
return decode(new KMMHello(), data); return decode(new KMMHello(), data);
case KMM_MessageType::INVENTORY_CMD: case KMM_MessageType::INVENTORY_CMD:
return decode(new KMMInventoryCommand(), data); return decode(new KMMInventoryCommand(), data);
case KMM_MessageType::INVENTORY_RSP:
{
std::unique_ptr<KMMFrame> frame = decode(new KMMInventoryResponseHeader(), data);
if (frame == nullptr) {
break;
}
KMMInventoryResponseHeader* header = static_cast<KMMInventoryResponseHeader*>(frame.get());
if (header == nullptr) {
break;
}
switch (header->getInventoryType()) {
case KMM_InventoryType::LIST_ACTIVE_KEYSET_IDS:
case KMM_InventoryType::LIST_INACTIVE_KEYSET_IDS:
return decode(new KMMInventoryResponseListKeysets(), data);
case KMM_InventoryType::LIST_ACTIVE_KEY_IDS:
case KMM_InventoryType::LIST_INACTIVE_KEY_IDS:
return decode(new KMMInventoryResponseListKeyIDs(), data);
default:
LogError(LOG_P25, "KMMFactory::create(), unknown KMM inventory type value, inventoryType = $%02X", header->getInventoryType());
break;
}
}
break;
case KMM_MessageType::MODIFY_KEY_CMD: case KMM_MessageType::MODIFY_KEY_CMD:
return decode(new KMMModifyKey(), data); return decode(new KMMModifyKey(), data);
default: default:

@ -23,6 +23,9 @@
#include "common/p25/kmm/KMMFrame.h" #include "common/p25/kmm/KMMFrame.h"
#include "common/p25/kmm/KMMHello.h" #include "common/p25/kmm/KMMHello.h"
#include "common/p25/kmm/KMMInventoryCommand.h" #include "common/p25/kmm/KMMInventoryCommand.h"
#include "common/p25/kmm/KMMInventoryResponseHeader.h"
#include "common/p25/kmm/KMMInventoryResponseListKeysets.h"
#include "common/p25/kmm/KMMInventoryResponseListKeyIDs.h"
#include "common/p25/kmm/KMMModifyKey.h" #include "common/p25/kmm/KMMModifyKey.h"
namespace p25 namespace p25

Loading…
Cancel
Save

Powered by TurnKey Linux.