22#include "ByteArrayUtil.h"
23#include "IllegalArgumentException.h"
29using namespace keyple::core::util;
30using namespace keyple::core::util::cpp::exception;
34const std::map<const int, const std::shared_ptr<StatusProperties>>
35 CmdSamReadEventCounter::STATUS_TABLE = initStatusTable();
41 mCounterOperationType(counterOperationType),
43 target : (target - 1) * 9)
49 if (counterOperationType == CounterOperationType::READ_SINGLE_COUNTER) {
51 p2 =
static_cast<uint8_t
>(0x81 + target);
55 p2 =
static_cast<uint8_t
>(0xE0 + target);
59 std::make_shared<ApduRequestAdapter>(
63const std::map<const int, const std::shared_ptr<StatusProperties>>
64 CmdSamReadEventCounter::initStatusTable()
66 std::map<const int, const std::shared_ptr<StatusProperties>> m =
70 std::make_shared<StatusProperties>(
"An event counter cannot be incremented.",
73 std::make_shared<StatusProperties>(
"Incorrect P2.",
74 typeid(CalypsoSamIllegalParameterException))});
76 std::make_shared<StatusProperties>(
"Correct execution with warning: data not signed.",
82const std::map<const int, const std::shared_ptr<StatusProperties>>&
94 const std::vector<uint8_t> dataOut = apduResponse->getDataOut();
96 if (mCounterOperationType == CounterOperationType::READ_SINGLE_COUNTER) {
99 ByteArrayUtil::extractInt(dataOut, 9, 3,
false));
103 for (
int i = 0; i < 9; i++) {
106 mFirstEventCounterNumber + i,
107 ByteArrayUtil::extractInt(dataOut, 8 + (3 * i), 3,
false));
virtual bool isSuccessful() const final
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
const std::shared_ptr< CalypsoSamAdapter > getCalypsoSam() const
void parseApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override
static const CalypsoSamCommand READ_EVENT_COUNTER
uint8_t getInstructionByte() const override
void parseApduResponse(std::shared_ptr< ApduResponseApi > apduResponse) override
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
CmdSamReadEventCounter(std::shared_ptr< CalypsoSamAdapter > calypsoSam, const CounterOperationType counterOperationType, const int target)
static uint8_t getClassByte(const ProductType productType)