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