31using namespace keyple::core::util;
34const std::map<const int, const std::shared_ptr<StatusProperties>>
35 CmdCardWriteRecord::STATUS_TABLE = initStatusTable();
39 const uint8_t recordNumber,
40 const std::vector<uint8_t>& newRecordData)
43 mRecordNumber(recordNumber),
46 const uint8_t cla = calypsoCardClass.
getValue();
47 const uint8_t p2 = (sfi == 0) ? 0x04 : sfi * 8 + 4;
50 std::make_shared<ApduRequestAdapter>(
57 std::stringstream extraInfo;
58 extraInfo <<
"SFI:" << sfi <<
"h, "
59 <<
"REC:" << recordNumber;
84const std::map<const int, const std::shared_ptr<StatusProperties>>
85 CmdCardWriteRecord::initStatusTable()
87 std::map<const int, const std::shared_ptr<StatusProperties>> m =
91 std::make_shared<StatusProperties>(
"Too many modifications in session.",
94 std::make_shared<StatusProperties>(
"Lc value not supported.",
95 typeid(CardDataAccessException))});
97 std::make_shared<StatusProperties>(
"Wrong EF type (not a Linear EF, or Cyclic EF " \
98 "with Record Number 01h).",
99 typeid(CardDataAccessException))});
101 std::make_shared<StatusProperties>(
"Security conditions not fulfilled (no session, " \
102 "wrong key, encryption required).",
103 typeid(CardSecurityContextException))});
105 std::make_shared<StatusProperties>(
"Access forbidden (Never access mode, DF is " \
106 "invalidated, etc..).",
107 typeid(CardAccessForbiddenException))});
109 std::make_shared<StatusProperties>(
"Command not allowed (no current EF).",
110 typeid(CardDataAccessException))});
112 std::make_shared<StatusProperties>(
"File not found.",
113 typeid(CardDataAccessException))});
115 std::make_shared<StatusProperties>(
"Record is not found (record index is 0 or " \
117 typeid(CardDataAccessException))});
119 std::make_shared<StatusProperties>(
"P2 value not supported.",
120 typeid(CardIllegalParameterException))});
125const 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
static const CalypsoCardCommand WRITE_RECORD
uint8_t getInstructionByte() const
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
uint8_t getRecordNumber() const
bool isSessionBufferUsed() const override
const std::vector< uint8_t > & getData() const
CmdCardWriteRecord(const CalypsoCardClass calypsoCardClass, const uint8_t sfi, const uint8_t recordNumber, const std::vector< uint8_t > &newRecordData)