33using namespace keyple::core::util;
34using namespace keyple::core::util::cpp;
36const std::map<const int, const std::shared_ptr<StatusProperties>>
37 CmdCardIncreaseOrDecrease::STATUS_TABLE = initStatusTable();
40 const bool isDecreaseCommand,
43 const uint8_t counterNumber,
44 const int incDecValue)
49 mCounterNumber(counterNumber),
50 mIncDecValue(incDecValue)
52 const uint8_t cla = calypsoCardClass.
getValue();
58 std::vector<uint8_t> valueBuffer(3);
59 valueBuffer[0] = ((incDecValue >> 16) & 0xFF);
60 valueBuffer[1] = ((incDecValue >> 8) & 0xFF);
61 valueBuffer[2] = (incDecValue & 0xFF);
63 const uint8_t p2 = sfi * 8;
67 std::make_shared<ApduRequestAdapter>(
75 std::stringstream extraInfo;
76 extraInfo <<
"SFI:" << sfi <<
"h, "
77 <<
"COUNTER:" << mCounterNumber <<
", ";
78 if (isDecreaseCommand) {
79 extraInfo <<
"DECREMENT";
81 extraInfo <<
"INCREMENT";
83 extraInfo <<
":" << incDecValue;
100 return mCounterNumber;
108const std::map<const int, const std::shared_ptr<StatusProperties>>
109 CmdCardIncreaseOrDecrease::initStatusTable()
111 std::map<const int, const std::shared_ptr<StatusProperties>> m =
115 std::make_shared<StatusProperties>(
"Too many modifications in session.",
118 std::make_shared<StatusProperties>(
"Lc value not supported.",
119 typeid(CardIllegalParameterException))});
121 std::make_shared<StatusProperties>(
"The current EF is not a Counters or Simulated " \
123 typeid(CardDataAccessException))});
125 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (no session, " \
126 "wrong key, encryption required).",
127 typeid(CardSecurityContextException))});
129 std::make_shared<StatusProperties>(
"Access forbidden (Never access mode, DF is " \
130 "invalidated, etc.)",
131 typeid(CardAccessForbiddenException))});
133 std::make_shared<StatusProperties>(
"Command not allowed (no current EF).",
134 typeid(CardDataAccessException))});
136 std::make_shared<StatusProperties>(
"Overflow error.",
137 typeid(CardDataOutOfBoundsException))});
139 std::make_shared<StatusProperties>(
"File not found.",
140 typeid(CardDataAccessException))});
142 std::make_shared<StatusProperties>(
"P1 or P2 value not supported.",
143 typeid(CardDataAccessException))});
145 std::make_shared<StatusProperties>(
"Successful execution (possible only in ISO7816 " \
152const std::map<const int, const std::shared_ptr<StatusProperties>>&
static const std::map< const int, const std::shared_ptr< StatusProperties > > STATUS_TABLE
virtual void addSubName(const std::string &subName) final
virtual void setApduRequest(const std::shared_ptr< ApduRequestAdapter > apduRequest) final
const CalypsoCardCommand & getCommandRef() const override
bool isSessionBufferUsed() const override
CmdCardIncreaseOrDecrease(const bool isDecreaseCommand, const CalypsoCardClass calypsoCardClass, const uint8_t sfi, const uint8_t counterValue, const int incDecValue)
uint8_t getCounterNumber() const
int getIncDecValue() const
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override