1 /****************************************************************************** 2 * 3 * Copyright 2020 NXP 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 #pragma once 20 #include <EseTransport.h> 21 22 #include <memory> 23 24 #define transportFactory (EseTransportFactory::getInstance()) 25 typedef std::shared_ptr<EseTransport> spTransport; 26 enum transportIntf { SPI, UNKNOWN }; 27 28 extern spTransport gpTransportObj; 29 class EseTransportFactory { 30 /***************************************************************************** 31 ** 32 ** Function EseTransportFactory 33 ** 34 ** Description Constructor for transportFactory. This will be private to 35 ** support singleton 36 ** 37 ** Parameters none 38 ** 39 ** Returns none 40 ****************************************************************************/ 41 EseTransportFactory(); 42 43 public: 44 /***************************************************************************** 45 ** 46 ** Function getInstance 47 ** 48 ** Description returns the static instance of TransportFactory 49 ** 50 ** Parameters none 51 ** 52 ** Returns TransportFactory instance 53 ****************************************************************************/ 54 static EseTransportFactory& getInstance(); 55 56 /***************************************************************************** 57 ** 58 ** Function getTransport 59 ** 60 ** Description selects and returns transport channel based on the input 61 ** parameter 62 ** 63 ** Parameters Required transport Type 64 ** 65 ** Returns Selected transport channel 66 ****************************************************************************/ 67 spTransport getTransport(transportIntf transportType); 68 }; 69