1 /*
2 * Copyright (c) 2014-2015 Texas Instruments Incorporated - http://www.ti.com
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
33 /*
34 * ======== INetworkTransport.h ========
35 */
37 #ifndef INETWORKTRANSPORT_H
38 #define INETWORKTRANSPORT_H
40 #include <ITransport.h>
43 /*
44 * ======== INetworkTransport_Handle ========
45 * Opaque handle to interface instance object
46 */
47 typedef struct INetworkTransport_Object *INetworkTransport_Handle;
49 /*
50 * ======== INetworkTransport_TypeId ========
51 * Unique identifier for this interface
52 */
53 #define INetworkTransport_TypeId 0x03
55 /*
56 * ======== INetworkTransport_Fxns ========
57 * Interface virtual function table
58 */
59 typedef struct INetworkTransport_Fxns {
60 Int (*bind)(void *handle, UInt32 queueId);
61 Int (*unbind)(void *handle, UInt32 queueId);
62 Bool (*put)(void *handle, Ptr msg);
63 } INetworkTransport_Fxns;
65 /*
66 * ======== INetworkTransport_Object ========
67 * Abstract instance object
68 */
69 typedef struct INetworkTransport_Object {
70 ITransport_Object base; /* inheritance */
71 INetworkTransport_Fxns *fxns; /* virtual functions */
72 } INetworkTransport_Object;
74 /*
75 * ======== INetworkTransport_bind ========
76 * Instance function stub
77 */
78 static inline
79 Bool INetworkTransport_bind(INetworkTransport_Handle inst, UInt32 queueId)
80 {
81 INetworkTransport_Object *obj = (INetworkTransport_Object *)inst;
82 return (obj->fxns->bind((void *)inst, queueId));
83 }
85 /*
86 * ======== INetworkTransport_unbind ========
87 * Instance function stub
88 */
89 static inline
90 Bool INetworkTransport_unbind(INetworkTransport_Handle inst, UInt32 queueId)
91 {
92 INetworkTransport_Object *obj = (INetworkTransport_Object *)inst;
93 return (obj->fxns->unbind((void *)inst, queueId));
94 }
96 /*
97 * ======== INetworkTransport_put ========
98 * Instance function stub
99 */
100 static inline
101 Bool INetworkTransport_put(INetworkTransport_Handle inst, Ptr msg)
102 {
103 INetworkTransport_Object *obj = (INetworkTransport_Object *)inst;
104 return (obj->fxns->put((void *)inst, msg));
105 }
107 /*
108 * ======== INetworkTransport_upCast ========
109 * Instance converter
110 */
111 static inline
112 ITransport_Handle INetworkTransport_upCast(INetworkTransport_Handle inst)
113 {
114 INetworkTransport_Object *obj = (INetworkTransport_Object *)inst;
115 return ((ITransport_Handle)&obj->base);
116 }
118 /*
119 * ======== INetworkTransport_downCast ========
120 * Instance converter
121 */
122 static inline
123 INetworkTransport_Handle INetworkTransport_downCast(ITransport_Handle base)
124 {
125 return ((INetworkTransport_Handle)base);
126 }
128 #endif /* INETWORKTRANSPORT_H */