Keyple Card Calypso C++ Library 2.2.5.6
Reference Terminal Reader API for C++
CmdCardSelectFile.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2023 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional information regarding *
5 * copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the terms of the Eclipse *
8 * Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0 *
9 * *
10 * SPDX-License-Identifier: EPL-2.0 *
11 **************************************************************************************************/
12
13#pragma once
14
15#include <cstdint>
16#include <map>
17#include <memory>
18#include <vector>
19
20/* Calypsonet Terminal Calypso */
21#include "SelectFileControl.h"
22#include "CalypsoCard.h"
23
24/* Calypsonet Terminal Cardf */
25#include "ApduResponseApi.h"
26
27/* Keyple Card Calypso */
28#include "AbstractCardCommand.h"
29#include "CalypsoCardAdapter.h"
30#include "CalypsoCardClass.h"
31#include "CalypsoCardCommand.h"
32
33/* Keyple Core Util */
34#include "LoggerFactory.h"
35
36namespace keyple {
37namespace card {
38namespace calypso {
39
40using namespace calypsonet::terminal::card;
41using namespace calypsonet::terminal::calypso;
42using namespace calypsonet::terminal::calypso::card;
43using namespace keyple::core::util::cpp;
44
46
57public:
67 CmdCardSelectFile(const std::shared_ptr<CalypsoCardAdapter> calypsoCard,
68 const SelectFileControl selectFileControl);
69
79 CmdCardSelectFile(const CalypsoCardClass calypsoCardClass,
80 const SelectFileControl selectFileControl);
81
91 CmdCardSelectFile(const std::shared_ptr<CalypsoCardAdapter> calypsoCard, const uint16_t lid);
92
103 CmdCardSelectFile(const CalypsoCardClass calypsoCardClass,
104 const CalypsoCard::ProductType productType,
105 const uint16_t lid);
106
107
113 void parseApduResponse(const std::shared_ptr<ApduResponseApi> apduResponse) override;
114
123 static void parseProprietaryInformation(const std::vector<uint8_t>& dataOut,
124 const std::shared_ptr<CalypsoCardAdapter> calypsoCard);
125
132 bool isSessionBufferUsed() const override;
133
140 static const std::vector<uint8_t> getProprietaryInformation(
141 const std::vector<uint8_t>& dataOut);
142
148 const std::map<const int, const std::shared_ptr<StatusProperties>>& getStatusTable() const
149 override;
150
151private:
155 const std::shared_ptr<Logger> mLogger = LoggerFactory::getLogger(typeid(CmdCardSelectFile));
156
160 static const CalypsoCardCommand mCommand;
161
165 static const std::map<const int, const std::shared_ptr<StatusProperties>> STATUS_TABLE;
166
170 static const int TAG_PROPRIETARY_INFORMATION;
171
175 static const std::map<const int, const std::shared_ptr<StatusProperties>> initStatusTable();
176
184 void buildCommand(const CalypsoCardClass calypsoCardClass,
185 const SelectFileControl selectFileControl);
186
195 void buildCommand(const CalypsoCardClass calypsoCardClass,
196 const CalypsoCard::ProductType productType,
197 const uint16_t lid);
198
208 static const std::shared_ptr<DirectoryHeader> createDirectoryHeader(
209 const std::vector<uint8_t>& proprietaryInformation,
210 const std::shared_ptr<CalypsoCardAdapter> calypsoCard);
211
221 static const std::shared_ptr<FileHeaderAdapter> createFileHeader(
222 const std::vector<uint8_t>& proprietaryInformation,
223 const std::shared_ptr<CalypsoCardAdapter> calypsoCard);
224
232 static ElementaryFile::Type getEfTypeFromCardValue(const uint8_t efType);
233};
234
235}
236}
237}
CmdCardSelectFile(const std::shared_ptr< CalypsoCardAdapter > calypsoCard, const SelectFileControl selectFileControl)
const std::map< const int, const std::shared_ptr< StatusProperties > > & getStatusTable() const override
static void parseProprietaryInformation(const std::vector< uint8_t > &dataOut, const std::shared_ptr< CalypsoCardAdapter > calypsoCard)
static const std::vector< uint8_t > getProprietaryInformation(const std::vector< uint8_t > &dataOut)
void parseApduResponse(const std::shared_ptr< ApduResponseApi > apduResponse) override
AbstractApduCommand::StatusProperties StatusProperties
CalypsoSam::ProductType ProductType