]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/performance-audio-sr.git/blob - processor_audio_sdk_1_00_00_00/psdk_cust/ipc_3_43_00_00_eng/docs/cdoc/ti/ipc/namesrv/NameServerRemoteRpmsg-src.html
Move IPC 3.43.00.00 eng and PDK 1.0.1.0 eng to subfolders
[processor-sdk/performance-audio-sr.git] / processor_audio_sdk_1_00_00_00 / psdk_cust / ipc_3_43_00_00_eng / docs / cdoc / ti / ipc / namesrv / NameServerRemoteRpmsg-src.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html><head><title>module ti.ipc.namesrv.NameServerRemoteRpmsg</title>
3 <meta name="googlebot" content="noindex,nofollow">
4 <link rel="stylesheet" type="text/css" href="../../../src.css"/>
5 </head>
6 <body>
7 <pre class=src>
8      1    <span class="comment">/*
9 </span>     2    <span class="comment"> * Copyright (c) 2012-2013, Texas Instruments Incorporated
10 </span>     3    <span class="comment"> * All rights reserved.
11 </span>     4    <span class="comment"> *
12 </span>     5    <span class="comment"> * Redistribution and use in source and binary forms, with or without
13 </span>     6    <span class="comment"> * modification, are permitted provided that the following conditions
14 </span>     7    <span class="comment"> * are met:
15 </span>     8    <span class="comment"> *
16 </span>     9    <span class="comment"> * *  Redistributions of source code must retain the above copyright
17 </span>    10    <span class="comment"> *    notice, this list of conditions and the following disclaimer.
18 </span>    11    <span class="comment"> *
19 </span>    12    <span class="comment"> * *  Redistributions in binary form must reproduce the above copyright
20 </span>    13    <span class="comment"> *    notice, this list of conditions and the following disclaimer in the
21 </span>    14    <span class="comment"> *    documentation and/or other materials provided with the distribution.
22 </span>    15    <span class="comment"> *
23 </span>    16    <span class="comment"> * *  Neither the name of Texas Instruments Incorporated nor the names of
24 </span>    17    <span class="comment"> *    its contributors may be used to endorse or promote products derived
25 </span>    18    <span class="comment"> *    from this software without specific prior written permission.
26 </span>    19    <span class="comment"> *
27 </span>    20    <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28 </span>    21    <span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29 </span>    22    <span class="comment"> * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 </span>    23    <span class="comment"> * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
31 </span>    24    <span class="comment"> * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 </span>    25    <span class="comment"> * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33 </span>    26    <span class="comment"> * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
34 </span>    27    <span class="comment"> * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
35 </span>    28    <span class="comment"> * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
36 </span>    29    <span class="comment"> * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
37 </span>    30    <span class="comment"> * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 </span>    31    <span class="comment"> */</span>
39     32    <span class="comment">/*
40 </span>    33    <span class="comment"> *  ======== NameServerRemoteRpmsg.xdc ========
41 </span>    34    <span class="comment"> */</span>
42     35    
43     36    import xdc.runtime.Assert;
44     37    
45     38    import ti.sysbios.knl.Semaphore;
46     39    import ti.sysbios.gates.GateMutex;
47     40    import ti.sdo.utils.INameServerRemote;
48     41    
49     42    <span class="comment">/*
50 </span>    43    <span class="comment"> *  Used by NameServer to communicate to remote processors.
51 </span>    44    <span class="comment"> *
52 </span>    45    <span class="comment"> *  This module is used by {@link ti.sdo.utils.NameServer} to communicate
53 </span>    46    <span class="comment"> *  to remote processors using {@link ti.sdo.ipc.MessageQ}.
54 </span>    47    <span class="comment"> *  There needs to be one instance between each two cores in the system.
55 </span>    48    <span class="comment"> *  Interrupts must be enabled before using this module.
56 </span>    49    <span class="comment"> *
57 </span>    50    <span class="comment"> *  This NameServerRemote is tied to the TransportRpmsg transport, mainly
58 </span>    51    <span class="comment"> *  used beteen a Linux host and a BIOS core acting as slave.
59 </span>    52    <span class="comment"> */</span>
60     53    
61     54    @InstanceFinalize
62     55    
63     56    <span class=key>module</span> NameServerRemoteRpmsg <span class=key>inherits</span> ti.sdo.utils.INameServerRemote
64     57    {
65     58    
66     59        <span class="xdoc">/*!
67 </span>    60    <span class="xdoc">     *  ======== timeoutInMicroSecs ========
68 </span>    61    <span class="xdoc">     *  The timeout value in terms of microseconds
69 </span>    62    <span class="xdoc">     *
70 </span>    63    <span class="xdoc">     *  A NameServer request will return after this amout of time
71 </span>    64    <span class="xdoc">     *  without a response. The default timeout value is 1 s.
72 </span>    65    <span class="xdoc">     *  To not wait, use the value of '0'.  To wait forever, use '~(0)'.
73 </span>    66    <span class="xdoc">     */</span>
74     67        <span class=key>config</span> UInt timeoutInMicroSecs = 1000000;
75     68    
76     69        <span class="xdoc">/*!
77 </span>    70    <span class="xdoc">     *  Assert raised if too many characters in the name
78 </span>    71    <span class="xdoc">     */</span>
79     72        <span class=key>config</span> Assert.Id A_nameIsTooLong = {
80     73            msg: <span class="string">"Too many characters in name"</span>
81     74        };
82     75    
83     76    <span class=key>internal</span>:
84     77    
85     78        <span class="comment">/*
86 </span>    79    <span class="comment">     *  ======== timeout ========
87 </span>    80    <span class="comment">     *  The timeout value to pass into Semaphore_pend
88 </span>    81    <span class="comment">     *
89 </span>    82    <span class="comment">     *  This value is calculated based on timeoutInMicroSecs and the
90 </span>    83    <span class="comment">     *  SYSBIOS clock.tickPeriod.
91 </span>    84    <span class="comment">     */</span>
92     85        <span class=key>config</span> UInt timeout;
93     86    
94     87        <span class="xdoc">/*!
95 </span>    88    <span class="xdoc">     *  ======== Type ========
96 </span>    89    <span class="xdoc">     *  The type of the message
97 </span>    90    <span class="xdoc">     */</span>
98     91        <span class=key>enum</span> Type {
99     92            REQUEST =  0,
100     93            RESPONSE = 1
101     94        };
102     95    
103     96        <span class=key>struct</span> Instance_State {
104     97            UInt16              remoteProcId; <span class="comment">/* remote MultiProc id            */</span>
105     98        };
106     99    
107    100        <span class="comment">/* Module state */</span>
108    101        <span class=key>struct</span> Module_State {
109    102            Semaphore.Handle    semRemoteWait;  <span class="comment">/* sem to wait on remote proc    */</span>
110    103            GateMutex.Handle    gateMutex;      <span class="comment">/* gate to protect critical code */</span>
111    104            Ptr                 nsMsg;          <span class="comment">/* pointer to NameServer msg     */</span>
112    105            Int                 nsPort;         <span class="comment">/* Name Server port rpmsg addr   */</span>
113    106        };
114    107    }
115 </pre>
116 </body></html>