1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32
33 34 35
36
37 package ti.uia.sysbios;
38
39 import xdc.runtime.Assert;
40 import ti.uia.runtime.UIAPacket;
41 import ti.sysbios.knl.Semaphore;
42 import ti.sysbios.knl.Clock;
43 import ti.sysbios.knl.Task;
44 import ti.sysbios.knl.Event;
45 import ti.sdo.ipc.MessageQ;
46 import ti.sysbios.syncs.SyncEvent;
47
48 /*!
49 * ======== IpcMP ========
50 */
51
52 @ModuleStartup
53
54 module IpcMP inherits ti.uia.runtime.IServiceMgrSupport
55 {
56 /*!
57 * Assert raised IpcMP interaction gets unexpected failure
58 */
59 config Assert.Id A_IpcMPFailure = {
60 msg: "A_IpcMPFailure: Unexpected failure with the IpcMP"
61 };
62
63 /*!
64 * SharedRegion used to allocate messages
65 */
66 config Int sharedRegionId = 0;
67
68
69
70 /*!
71 * @_nodoc
72 * ======== rxTaskFxn ========
73 * Function used for the transfer agent Task.
74 */
75 @DirectCall
76 Void rxTaskFxn(UArg arg0, UArg arg1);
77
78 /*!
79 * @_nodoc
80 * ======== transferAgentFxn ========
81 * Function used for the transfer agent Task.
82 */
83 @DirectCall
84 Void transferAgentFxn(UArg arg0, UArg arg1);
85
86 /*!
87 * @_nodoc
88 * ======== clockFxn ========
89 * Function used for the RTA Agent's Clock instance.
90 *
91 * The Agent C code does not contain any references to this function, so
92 * this function has been made public and nodoc'd, rather than being made
93 * internal, so that it does not fall away in a ROM build.
94 */
95 @DirectCall
96 Void clockFxn(UArg arg0);
97
98 /*!
99 * @_nodoc
100 * ======== start ========
101 */
102 @DirectCall
103 Int start(UArg arg, UInt16 value);
104
105 /*!
106 * ======== doNotPlugIpc ========
107 * Work-around for Syslink bug SDOCM00077375
108 *
109 * Only call if you are using Syslink version 2.00.00.66
110 */
111 metaonly Void doNotPlugIpc();
112
113 internal:
114 /*!
115 * ======== period ========
116 * Stored as ticks
117 */
118 config UInt32 period[];
119
120 /*!
121 * ======== scheduled ========
122 * Stored as ticks
123 */
124 config UInt32 scheduled[];
125
126 /*!
127 * ======== reqEnergy ========
128 */
129 config Bool reqEnergy[];
130
131 /*!
132 * ======== createRxTask ========
133 */
134 config Bool createRxTask = false;
135
136 /*!
137 * @_nodoc
138 * ======== start ========
139 */
140 @DirectCall
141 Int startOrig(Ptr *ptr, UInt16 value);
142
143 /*!
144 * ======== giveEnergy ========
145 */
146 @DirectCall
147 Void giveEnergy();
148
149 /*!
150 * ======== handleMsg ========
151 */
152 @DirectCall
153 Void handleMsg(Ptr msg);
154
155 /*!
156 * ======== prime ========
157 */
158 @DirectCall
159 Void prime(Ptr handle, Int size, Int count);
160
161 /*!
162 * ======== registerWithMaster ========
163 */
164 @DirectCall
165 Void registerWithMaster();
166
167 /*!
168 * ======== requestEvents ========
169 */
170 @DirectCall
171 Void requestEvents();
172
173 /*!
174 * ======== Module_State ========
175 */
176 struct Module_State {
177 Event.Handle event;
178 Clock.Handle clock;
179 Ptr freeEventMQ;
180 Ptr freeMsgMQ;
181 Ptr routerMQ;
182 UInt32 masterMQ;
183 Ptr incomingMsgMQ;
184 UInt32 replyMQ[];
185 SyncEvent.Handle syncEvent01;
186 Task.Handle transferAgentHandle;
187 Ptr transportMsgHandle;
188 Ptr transportEventHandle;
189 Semaphore.Handle releaseTasksSem;
190 Int numMSGPacketsSent;
191 Int numEventPacketsSent;
192 Bool master;
193 Bool masterRunning;
194 };
195 }
196
197 198 199 200 201