⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 澳洲人写的Cortex,包括uC_IP协议栈
💻 C
字号:
<HTML><HEAD><TITLE>/home/asysweb/public_html/cortex/examples/exmpl13/src/main.c</TITLE></HEAD><BODY><pre><font color="#6920ac">/****************************************************************************** startup.c - Accu-Vote startup code** Copyright (c) 1996 by Global Election Systems Inc.** The authors hereby grant permission to use, copy, modify, distribute,* and license this software and its documentation for any purpose, provided* that existing copyright notices are retained in all copies and that this* notice and the following disclaimer are included verbatim in any * distributions. No written agreement, license, or royalty fee is required* for any of the authorized uses.** THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** REVISION HISTORY** 97-02-12 Guy Lancaster &lt;lancasterg@acm.org&gt;, Global Election Systems Inc.*   Modified from 1.94m.*****************************************************************************/</font><b><font color='DarkGreen'>#include</font></b> <a href="plt_defs.h.FIND-INC"><font color="blue">"plt_defs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="stdio.h.FIND-INC"><font color="blue">"stdio.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="typedefs.h.FIND-INC"><font color="blue">"typedefs.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="avos.h.FIND-INC"><font color="blue">"avos.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="timer.h.FIND-INC"><font color="blue">"timer.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="rand.h.FIND-INC"><font color="blue">"rand.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="netbuf.h.FIND-INC"><font color="blue">"netbuf.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="time.h.FIND-INC"><font color="blue">"time.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="devio.h.FIND-INC"><font color="blue">"devio.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="butctrl.h.FIND-INC"><font color="blue">"butctrl.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="net.h.FIND-INC"><font color="blue">"net.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="startup.h.FIND-INC"><font color="blue">"startup.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="debug.h.FIND-INC"><font color="blue">"debug.h"</font></a><b><font color='DarkGreen'>#include</font></b> <a href="netppp.h.FIND-INC"><font color="blue">"netppp.h"</font></a><font color="#6920ac">/*************************/</font><font color="#6920ac">/*** LOCAL DEFINITIONS ***/</font><font color="#6920ac">/*************************/</font><font color="#6920ac">/* The main stack needs to be large enough to handle the main application *  plus all the interrupt handlers.  */</font><b><font color='DarkGreen'>#define</font></b> <font color="maroon"><a name="STACK_MAIN_SIZE">STACK_MAIN_SIZE</a></font> (12*1024)<font color="#6920ac">/***********************************/</font><font color="#6920ac">/*** LOCAL FUNCTION DECLARATIONS ***/</font><font color="#6920ac">/***********************************/</font><font size="+1"><i>static</i> <i>void</i> <a href="shutdown.FIND-FUNC">shutdown</a>(<i>void</i>);</font><font color="#6920ac">/*****************************/</font><font color="#6920ac">/*** LOCAL DATA STRUCTURES ***/</font><font color="#6920ac">/*****************************/</font><font color="#6920ac">/* None */</font><font color="#6920ac">/***********************************/</font><font color="#6920ac">/*** PUBLIC FUNCTION DEFINITIONS ***/</font><font color="#6920ac">/***********************************/</font><font color="#6920ac">/* * Initialize all subsystems and then call main(). */</font><font color="#6920ac">/* #pragma argsused */</font><font size="+1"><i>void</i> <b><font color="azure1"><a name="Main">Main</a></font></b>(<i>crtx_Int_t</i>  ArgC_a, <i>crtx_Void_t</i> *pArgV_a, <i>crtx_Void_t</i> *pEnvV_a){</font>       <i>crtx_Int_t</i>      ArgC;    <i>crtx_Void_t</i>     *pArgV;    <i>crtx_Void_t</i>     *pEnvV;        <i>int</i>             pppLink;    <i>int</i>             pppStatus;    <i>int</i>             if_up;          <font color="#6920ac">/* True when the interface is up. */</font>    ArgC  = ArgC_a;     <font color="#6920ac">/* to avoid compiler's warning */</font>    pArgV = pArgV_a;    <font color="#6920ac">/* ... */</font>    pEnvV = pEnvV_a;    <font color="#6920ac">/* ... */</font>    <font color="#6920ac">/* startup message */</font>    <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"\n%s (Version: %s)\n\n"</font>, <a href="syst_Copyright.FIND-FUNC">syst_Copyright</a>(), <a href="syst_VersionStr.FIND-FUNC">syst_VersionStr</a>());    <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST:uCIP: TCP/IP/PPP Stack Test Started (%d ticks/sec)  ...\n"</font>,           <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>(),            <a href="TICK_SYSTEM_TICKS_PER_SEC.FIND-DEF">TICK_SYSTEM_TICKS_PER_SEC</a>);    <font color="#6920ac">/* disable local echo */</font>    <a href="ioctl.FIND-FUNC">ioctl</a>(0, <a href="DISECHO.FIND-DEF">DISECHO</a>, <a href="NULL.FIND-DEF">NULL</a>);    <font color="#6920ac">/* disable conversion */</font>    <a href="ioctl.FIND-FUNC">ioctl</a>(0, <a href="SETCONV.FIND-DEF">SETCONV</a>, 0);    <a href="avosInit.FIND-FUNC">avosInit</a>(shutdown);     <font color="#6920ac">/* Start the OS services */</font>    <a href="netInit.FIND-FUNC">netInit</a>();              <font color="#6920ac">/* Initialize network subsystems. */</font>    <a href="task_Sleep.FIND-FUNC">task_Sleep</a>(10);         <font color="#6920ac">/* Let lower priority processes run. */</font>    <font color="#6920ac">/* if modem connection and/or login is required sendRecv() shall be used      * here */</font><font color="#6920ac">#if 0    sendRecv(...);#endif</font>     <font color="#6920ac">/* start debuging monitor */</font>    <a href="monStart.FIND-FUNC">monStart</a>();             <font color="#6920ac">/* Start the diagnostics monitor (if enabled) */</font>    <b>while</b> (1)    {        <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: Trying to establish ppp link ...\n"</font>,               <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());        <font color="#6920ac">/* open ppp link */</font>        <b>while</b> ((pppLink = <a href="pppOpen.FIND-FUNC">pppOpen</a>(0)) &lt; 0)        {            <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: Couldn't open PPP link: error=%d.\n"</font>,                   <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>(), pppLink);            <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: Allow pppMain task to finish.\n"</font>,                    <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());            <font color="#6920ac">/* allow pppMain task to terminate */</font>            <a href="task_Sleep.FIND-FUNC">task_Sleep</a>(<a href="MAXKILLDELAY.FIND-DEF">MAXKILLDELAY</a>*2);            <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: try open PPP connection again\n"</font>,                    <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());        }        <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: PPP interface is up.\n"</font>,                <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());        <font color="#6920ac">/* debugging monitor runs as a separated task constantly waiting for          * incomming tcp connections on port TCPPORT_ACCUVOTE (3031).          * When connected some commands are available to request some traces         * and PPP/TCP/IP statistics. Use telnet to connect on the above port */</font>        <b>while</b> (1)        {            <a href="task_Sleep.FIND-FUNC">task_Sleep</a>(<a href="MAXKILLDELAY.FIND-DEF">MAXKILLDELAY</a>*2+1);            <b>if</b> (<a href="pppIOCtl.FIND-FUNC">pppIOCtl</a>(pppLink, <a href="PPPCTLG_UPSTATUS.FIND-DEF">PPPCTLG_UPSTATUS</a>, &amp;if_up) == 0)            {                <b>if</b> (!if_up)                {                    <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: PPP interface is down.\n"</font>,                            <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());                    <b>break</b>;                }            }        }        <font color="#6920ac">/* close ppp link */</font>        pppStatus = <a href="pppClose.FIND-FUNC">pppClose</a>(pppLink);        <b>if</b> (pppStatus &lt; 0)        {            <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: Couldn't close PPP link: error=%d\n"</font>,                   <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>(), pppLink);            <a href="CRTX_EXCEPTION.FIND-DEF">CRTX_EXCEPTION</a> Error_Exc;        }        <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP: PPP connection is closed.\n"</font>,                <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());    } <font color="#6920ac">/* while (1) */</font>    <font color="#6920ac">/* completion message */</font>    <a href="printf.FIND-FUNC">printf</a>(<font color="DarkGreen">"%s[%d]:TEST: TCP/IP/PPP Stack Test Completed ...\n"</font>,           <a href="task_GetName.FIND-FUNC">task_GetName</a>(<a href="task_Self.FIND-FUNC">task_Self</a>()), <a href="task_Self.FIND-FUNC">task_Self</a>());<font color="blue">Error_Exc:</font>    <b>return</b>;}<font size="+1"><i>crtx_Void_t</i> <b><font color="azure1"><a name="crtx_Main">crtx_Main</a></font></b>(    <i>crtx_Int_t</i>  ArgC_a,     <i>crtx_Void_t</i> *pArgV_a,     <i>crtx_Void_t</i> *pEnvV_a){</font>    <a href="pltf_Init.FIND-FUNC">pltf_Init</a>(ArgC_a, pArgV_a, pEnvV_a);    <a href="#Main">Main</a>(ArgC_a, pArgV_a, pEnvV_a);}<font color="#6920ac">/**********************************/</font><font color="#6920ac">/*** LOCAL FUNCTION DEFINITIONS ***/</font><font color="#6920ac">/**********************************/</font><font color="#6920ac">/* * Shut down the system devices - This is the application shutdown function *  submitted to AVOS for use when halting the system.  *  We assume here that task switching is disabled and that no interrupt *  handler is going to undo what we've done here. */</font><font size="+1"><i>static</i> <i>void</i> <b><font color="azure1"><a name="shutdown">shutdown</a></font></b>(<i>void</i>){</font>    <b>return</b>;}</pre></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -