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 import xdc.rov.ViewInfo;
38 import xdc.runtime.Assert;
39
40 import ti.sysbios.knl.Event;
41
42 /*!
43 * ======== SyncEvent ========
44 * Implements ISync using events.
45 *
46 * Module that implements {@link xdc.runtime.knl.ISync} using
47 * {@link ti.sysbios.knl.Event}
48 *
49 * This module uses {@link ti.sysbios.knl.Event#post} to implement
50 * {@link xdc.runtime.knl.ISync#signal}
51 *
52 * The implementation of {@link xdc.runtime.knl.ISync#wait} is empty
53 * and returns
54 * FALSE for timeout, since with events the pend call is made outside.
55 *
56 * Modules like {@link ti.sdo.io.Stream} use an ISync.Handle for
57 * selecting the synchronization mechanism. This allows Stream to be
58 * independent of the synchronization mechanism.
59 *
60 * An instance of SyncEvent requires an Event.Handle. When given a null
61 * Event.Handle, SynEvent will assert.
62 */
63
64 module SyncEvent inherits xdc.runtime.knl.ISync
65 {
66
67 /*!
68 * ======== BasicView ========
69 * @_nodoc
70 */
71 metaonly struct BasicView {
72 String label;
73 String EventHandle;
74 UInt EventId;
75 String pendedTask;
76 }
77
78 /*!
79 * ======== rovViewInfo ========
80 * @_nodoc
81 */
82 @Facet
83 metaonly config ViewInfo.Instance rovViewInfo =
84 ViewInfo.create({
85 viewMap: [
86 [
87 'Basic',
88 {
89 type: ViewInfo.INSTANCE,
90 viewInitFxn: 'viewInitBasic',
91 structName: 'BasicView'
92 }
93 ],
94 ]
95 });
96
97 /*!
98 * Assert when baseHandle is null
99 */
100 config Assert.Id A_nullHandle = {
101 msg: "A_nullHandle: Null handle passed to create"
102 };
103
104 instance:
105 /*!
106 * Event handle must be provided.
107 */
108 config Event.Handle event = null;
109
110 /*! Event id to be when signal() gets invoked. */
111 config UInt eventId = Event.Id_00;
112
113 internal:
114
115
116 struct Instance_State {
117 Event.Handle evt;
118 UInt evtId;
119 };
120
121 }