14#include "keyple/card/generic/GenericCardResourceProfileExtensionAdapter.hpp"
16#include "keyple/core/util/KeypleAssert.hpp"
17#include "keyple/core/util/cpp/exception/Exception.hpp"
18#include "keypop/reader/selection/CardSelectionManager.hpp"
19#include "keypop/reader/selection/CardSelectionResult.hpp"
20#include "keypop/reader/selection/spi/IsoSmartCard.hpp"
26using keyple::core::util::Assert;
27using keyple::core::util::cpp::exception::Exception;
28using keypop::reader::selection::CardSelectionManager;
29using keypop::reader::selection::CardSelectionResult;
30using keypop::reader::selection::spi::IsoSmartCard;
32GenericCardResourceProfileExtensionAdapter::
33 GenericCardResourceProfileExtensionAdapter(
34 std::shared_ptr<IsoCardSelector> cardSelector,
35 std::shared_ptr<GenericCardSelectionExtension>
36 genericCardSelectionExtension)
37: mGenericCardSelection(
38 std::dynamic_pointer_cast<GenericCardSelectionExtensionAdapter>(
39 genericCardSelectionExtension))
40, mCardSelector(cardSelector)
42 Assert::getInstance().notNull(
43 genericCardSelectionExtension,
"genericCardSelectionExtension");
46std::shared_ptr<SmartCard>
47GenericCardResourceProfileExtensionAdapter::matches(
48 std::shared_ptr<CardReader> reader,
49 std::shared_ptr<ReaderApiFactory> readerApiFactory)
51 if (!reader->isCardPresent()) {
55 std::shared_ptr<CardSelectionManager> genericCardSelectionManager(
56 readerApiFactory->createCardSelectionManager());
57 genericCardSelectionManager->prepareSelection(
58 mCardSelector, mGenericCardSelection);
59 std::shared_ptr<CardSelectionResult> genericCardSelectionResult =
nullptr;
62 genericCardSelectionResult
63 = genericCardSelectionManager->processCardSelectionScenario(reader);
64 }
catch (
const Exception& e) {
65 mLogger->error(
"Card selection failed: %\n", e.getMessage(), e);
68 if (genericCardSelectionResult !=
nullptr) {
69 return genericCardSelectionResult->getActiveSmartCard();
75std::shared_ptr<SmartCard>
76GenericCardResourceProfileExtensionAdapter::matches(
77 std::shared_ptr<SmartCard> smartCard)
79 if (std::dynamic_pointer_cast<IsoSmartCard>(smartCard) ==
nullptr) {