32using namespace keyple::core::util;
33using namespace keyple::core::util::cpp;
36const std::map<const int, const std::shared_ptr<StatusProperties>>
37 CmdCardAppendRecord::STATUS_TABLE = initStatusTable();
41 const std::vector<uint8_t>& newRecordData)
46 const uint8_t cla = calypsoCard->getCardClass().getValue();
47 const uint8_t p1 = 0x00;
48 const uint8_t p2 = (sfi == 0) ? 0x00 : sfi * 8;
52 std::make_shared<ApduRequestAdapter>(
55 std::stringstream extraInfo;
56 extraInfo <<
"SFI:" << sfi <<
"h";
73const std::map<const int, const std::shared_ptr<StatusProperties>>
74 CmdCardAppendRecord::initStatusTable()
76 std::map<const int, const std::shared_ptr<StatusProperties>> m =
80 std::make_shared<StatusProperties>(
"P1 or P2 value not supported.",
83 std::make_shared<StatusProperties>(
"Lc value not supported.",
84 typeid(CardDataAccessException))});
86 std::make_shared<StatusProperties>(
"Too many modifications in session.",
87 typeid(CardSessionBufferOverflowException))});
89 std::make_shared<StatusProperties>(
"The current EF is not a Cyclic EF.",
90 typeid(CardDataAccessException))});
92 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (no session, " \
94 typeid(CardSecurityContextException))});
96 std::make_shared<StatusProperties>(
"Access forbidden (Never access mode, DF is " \
97 "invalidated, etc..).",
98 typeid(CardAccessForbiddenException))});
100 std::make_shared<StatusProperties>(
"Command not allowed (no current EF).",
101 typeid(CardDataAccessException))});
103 std::make_shared<StatusProperties>(
"File not found.",
104 typeid(CardDataAccessException))});
109const 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
void parseApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override
std::shared_ptr< CalypsoCardAdapter > getCalypsoCard() const
uint8_t getInstructionByte() const
static const CalypsoCardCommand APPEND_RECORD
bool isSessionBufferUsed() const override
CmdCardAppendRecord(const std::shared_ptr< CalypsoCardAdapter > calypsoCard, const uint8_t sfi, const std::vector< uint8_t > &newRecordData)
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
void parseApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override