📄 avrgsm__com_8c.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>AVR323 Interfacing GSM modems: AVRGSM_com.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>AVRGSM_FILES/AVRGSM_com.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>Atmel Corporation<p><ul><li>File : AVR_com.c</li><li>Compiler : IAR EWAAVR 4.11a</li></ul><p><ul><li>Support mail : <a href="mailto:avr@atmel.com">avr@atmel.com</a></li></ul><p><ul><li>Supported devices : All devices with a UART/USART can be used. The example is written for ATmega128</li></ul><p><ul><li>AppNote : AVR323 - Interfacing GSM modems</li></ul><p><ul><li>Description : Example of how to use AT-Commands to control a GSM modem</li></ul><p><dl compact><dt><b>Revision</b></dt><dd>1.2 </dd></dl><dl compact><dt><b>Date</b></dt><dd>Wednesday, January 26, 2005 10:43:44 UTC </dd></dl><p>Definition in file <a class="el" href="AVRGSM__com_8c-source.html">AVRGSM_com.c</a>.<p><code>#include <ioavr.h></code><br><code>#include <inavr.h></code><br><code>#include "<a class="el" href="AVRGSM__com_8h-source.html">AVRGSM_com.h</a>"</code><br><p>Include dependency graph for AVRGSM_com.c:<p><center><img src="AVRGSM__com_8c__incl.png" border="0" usemap="#AVRGSM_com.c_map" alt="Include dependency graph"></center><map name="AVRGSM_com.c_map"><area href="AVRGSM__com_8h.html" shape="rect" coords="177,7,303,34" alt=""></map><p><a href="AVRGSM__com_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char * </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a23">COM_gets</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to receive buffer. <a href="#a23"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a12">COM_init</a> (unsigned int baudrate)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">USART0 initialization. <a href="#a12"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a19">COM_put_integer</a> (int i)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">This method will print an integer in the range +-(10^5 - 1 ). <a href="#a19"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a18">COM_putchar</a> (unsigned char data)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Adapted putchar method...no need for interrup driven tx-isr. <a href="#a18"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a20">COM_puts</a> (unsigned char *str)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Print unsigned char string. <a href="#a20"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a21">COM_putsf</a> (const unsigned char __flash *fstr)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Print const unsigned char __flash string. <a href="#a21"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a15">COM_rx_off</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">RX interrupt disable. <a href="#a15"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a14">COM_rx_on</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">RX interrupt enable. <a href="#a14"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a13">COM_rx_reset</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Reset receive interrupt. <a href="#a13"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a16">COM_setSearchString</a> (unsigned char Response)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Set desired search string. <a href="#a16"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a22">COM_trim</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Remove trailing O, K, and <br>. <a href="#a22"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>__interrupt void </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a17">USART0_RX_interrupt</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Receive interrupt routine. <a href="#a17"></a><br><br></td></tr><tr><td colspan=2><br><h2>Variables</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a7">CMTI</a> [] = "+CMTI: "</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">New Message arrived. <a href="#a7"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a9">CR_LF</a> [] = "\r\n"</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Carrige Return Line Feed. <a href="#a9"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a6">OK</a> [] = "OK\r\n"</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">"OK" <a href="#a6"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a8">READY</a> [] = "> "</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Phone ready to receive text message. <a href="#a8"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a1">rx_ack</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Extern flag from AVRSMS_com.c. <a href="#a1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a2">rx_buffer</a> [RX_BUFFER_SIZE]</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">private buffer <a href="#a2"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a4">rx_i</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Buffer counter. <a href="#a4"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a0">rx_overflow</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Overflow and acknowledge flag. <a href="#a0"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a5">rx_wr_i</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Buffer write index. <a href="#a5"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash * </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a10">searchFor</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Flash pointer. <a href="#a10"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a3">searchStr</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Private pointer. <a href="#a3"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const unsigned char __flash * </td><td class="memItemRight" valign=bottom><a class="el" href="AVRGSM__com_8c.html#a11">searchStrings</a> [4] = {<a class="el" href="AVRGSM__com_8c.html#a6">OK</a>, <a class="el" href="AVRGSM__com_8c.html#a7">CMTI</a>, <a class="el" href="AVRGSM__com_8c.html#a8">READY</a>, <a class="el" href="AVRGSM__com_8c.html#a9">CR_LF</a>}</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize pointer. <a href="#a11"></a><br><br></td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="a23" doxytag="AVRGSM_com.c::COM_gets" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> unsigned char* COM_gets </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">void </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Return pointer to receive buffer. <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>void</em> </td><td></td></tr> </table></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>rx_buffer</em> </td><td>Pointer to receive buffer </td></tr> </table></dl><p>Definition at line <a class="el" href="AVRGSM__com_8c-source.html#l00317">317</a> of file <a class="el" href="AVRGSM__com_8c-source.html">AVRGSM_com.c</a>.<p>References <a class="el" href="AVRGSM__com_8c-source.html#l00037">rx_buffer</a>.<p>Referenced by <a class="el" href="AVRGSM__tools_8c-source.html#l00080">TOOLS__decodeCMGR()</a>, and <a class="el" href="AVRGSM__tools_8c-source.html#l00039">TOOLS_decodeCMTI()</a>.<p><pre class="fragment"><div>00318 {00319 <span class="keywordflow">return</span> <a class="code" href="AVRGSM__com_8c.html#a2">rx_buffer</a>;00320 }</div></pre> </td> </tr></table><a class="anchor" name="a12" doxytag="AVRGSM_com.c::COM_init" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void COM_init </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">unsigned int </td> <td class="mdname1" valign="top" nowrap> <em>baudrate</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>USART0 initialization. <p>This function set correct baurate and functionality of the USART0. See data sheet for more details.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>input</em> </td><td>Desired baudrate...see datasheet</td></tr> </table></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>void</em> </td><td></td></tr> </table></dl><p>Definition at line <a class="el" href="AVRGSM__com_8c-source.html#l00066">66</a> of file <a class="el" href="AVRGSM__com_8c-source.html">AVRGSM_com.c</a>.<p>References <a class="el" href="AVRGSM__com_8c-source.html#l00085">COM_rx_reset()</a>.<p>Referenced by <a class="el" href="main_8c-source.html#l00206">Initialization()</a>.<p><pre class="fragment"><div>00067 {00068 00069 UBRR0H = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) (baudrate>>8); <span class="comment">//Setting baudrate</span>00070 UBRR0L = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) baudrate; <span class="comment">//Setting baudrate</span>00071 00072 UCSR0B = ( 1 << RXEN0 ) | ( 1 << TXEN0 ); <span class="comment">//Enable receiver and transmitter</span>00073 UCSR0C = ( 1 << USBS0 ) | ( 1 << UCSZ01 ) | ( 1 << UCSZ00 ); <span class="comment">//8N1...see Datasheet for more information</span>00074 00075 <a class="code" href="AVRGSM__com_8c.html#a13">COM_rx_reset</a>(); <span class="comment">//Reset buffers etc.</span>00076 }</div></pre><p>Here is the call graph for this function:<p><center><img src="AVRGSM__com_8c_a12_cgraph.png" border="0" usemap="#AVRGSM__com_8c_a12_cgraph_map" alt=""></center><map name="AVRGSM__com_8c_a12_cgraph_map"><area href="AVRGSM__com_8c.html#a13" shape="rect" coords="135,7,244,33" alt=""></map> </td> </tr></table><a class="anchor" name="a19" doxytag="AVRGSM_com.c::COM_put_integer" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void COM_put_integer </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">int </td> <td class="mdname1" valign="top" nowrap> <em>i</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>This method will print an integer in the range +-(10^5 - 1 ). <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>i</em> </td><td>integer to be printed</td></tr> </table></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>void</em> </td><td></td></tr> </table></dl><p>Local variables <p>Definition at line <a class="el" href="AVRGSM__com_8c-source.html#l00224">224</a> of file <a class="el" href="AVRGSM__com_8c-source.html">AVRGSM_com.c</a>.<p>References <a class="el" href="AVRGSM__com_8c-source.html#l00198">COM_putchar()</a>.<p>Referenced by <a class="el" href="AVRGSM__api_8c-source.html#l00125">API_deletemsg()</a>, <a class="el" href="AVRGSM__api_8c-source.html#l00232">API_readmsg()</a>, and <a class="el" href="AVRGSM__api_8c-source.html#l00160">API_sendmsg()</a>.<p><pre class="fragment"><div>00225 {00226 00228 <span class="keywordtype">int</span> ii;00229 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> int_buf[5];00230 00231 <span class="keywordflow">if</span> (i < 0) <span class="comment">//Integer is negative</span>00232 {00233 i = -i; <span class="comment">//Convert to positive Integer</span>00234 <a class="code" href="AVRGSM__com_8h.html#a12">COM_putchar</a>(<span class="charliteral">'-'</span>); <span class="comment">//Print - sign</span>00235 }00236 00237 <span class="keywordflow">for</span> (ii=0; ii < 5; ) <span class="comment">//Convert Integer to char array</span>00238 {00239 int_buf[ii++] = <span class="charliteral">'0'</span>+ i % 10; <span class="comment">//Find carry using modulo operation</span>00240 i = i / 10; <span class="comment">//Move towards MSB</span>00241 }00242 <span class="keywordflow">do</span>{ ii--; }<span class="keywordflow">while</span>( (int_buf[ii] == <span class="charliteral">'0'</span>) && (ii != 0) ); <span class="comment">//Remove leading 0's</span>00243 <span class="keywordflow">do</span>{ <a class="code" href="AVRGSM__com_8h.html#a12">COM_putchar</a>( int_buf[ii--] ); }<span class="keywordflow">while</span> (ii >= 0); <span class="comment">//Print int->char array convertion</span>00244
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -