亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? api.c

?? Visuabaic interface with com connect to computer
?? C
字號:
// This file has been prepared for Doxygen automatic documentation generation.
/*! \file ********************************************************************
*
* Atmel Corporation
*
* - File              : AVR_api.c
* - Compiler          : IAR EWAAVR 4.11a
*
* - Support mail      : avr@atmel.com
*
* - Supported devices : All devices with a UART/USART can be used.
*                       The example is written for ATmega128
*
* - AppNote           : AVR323 - Interfacing GSM modems
*
* - Description       : Example of how to use AT-Commands to control a GSM modem
*
* $Revision: 1.1 $
* $Date: Tuesday, November 08, 2005 12:26:20 UTC $
*****************************************************************************/

//Used for SPLINT
#ifdef S_SPLINT_S
  #include"splint.h"
#endif


//Includes
#include<avr/io.h> 
#include<avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

#include"UART.h"
#include"ZIP.h"
#include"HEADER.h"
#include"TOOLS.h"
#include"API.h"


//! Extern flag from AVRSMS_com.c
extern int rx_ack;

//! Message buffer for coded and decoded messages
unsigned char msgbuff[161];

//! AT-Command set used
const unsigned char const ATE0[]                    = "ATE0\r\n";                         //!< Echo off
const unsigned char const AT_CNMI[]                = "AT+CNMI=1,1,,,1\r\n";              //!< Identification of new sms
const unsigned char const AT_CPMS[]                = "AT+CPMS=\"ME\",\"ME\",\"ME\"\r\n"; //!< Preferred storage
const unsigned char const AT_CMGD[]                = "AT+CMGD=";                         //!< Delete message at index
const unsigned char const AT_CMGR[]                = "AT+CMGR=";                         //!< Read from index
const unsigned char const AT_CMGS[]                 = "AT+CMGS=";                         //!< Send mmessage
const unsigned char const CRLF[]                   = "\r\n";                             //!< Carrige return Line feed


//! Function prototype
int API_check_acknowledge( void );  //Checks acknowledge from phone


/*! \brief Used to setup the connected GSM modem
 *
 *  This function will send AT-Commands to the phone. These commands
 *  will setup the phone to:
 *  -Use correct storage, AT+CPMS
 *  -Indicate new message, AT+CNMI
 *  -Turn echo off, ATE0
 *
 *  \param    void
 *
 *  \retval   1 Success
 *  \retval   0 Error with echo off
 *  \retval   -1 Error with preferred storage
 *  \retval   -2 Error with indication
 */
int API_phoneinit( void )
{

    COM_rx_reset( );                            //Reset system
    COM_setSearchString( OK_ );                 //Set OK to be search string
    COM_putsf( ATE0 );                          //Send turn echo off
    COM_rx_on( );                               //Receiver on

    if( API_check_acknowledge( ) > 0 )          //Echo off = OK
    {
        COM_putsf(AT_CPMS);                     //Send preferred storage
        COM_rx_on( );                           //Receiver on

        if( API_check_acknowledge( ) > 0 )      //Preferred storage = OK
        {
        COM_putsf(AT_CNMI);                     //Send preferred indication of new messages
        COM_rx_on( );                           //Receiver on

            if( API_check_acknowledge( ) > 0 )  //Preferred indication = OK
            {
                return 1;
            }

            else                                //Preferred indication != OK
            {
                return -2;
            }
        }

        else                                    //Preferred storage != OK
        {
            return -1;
        }
    }

    else                                        //Echo off != OK
    {
        return 0;
    }
}


/*! \brief Delete a message from a given index
 *
 *  This function will use the "AT+CMGD" command to delete
 *  the message @ index
 *
 *  \param    index index to delete from
 *
 *  \retval   1 Success
 *  \retval   0 Error
 */
int API_deletemsg( int index )
{

    COM_rx_reset( );                    //Reset system
    COM_setSearchString( OK_ );         //Set OK to be search string
    COM_putsf( AT_CMGD );               //Delete message
    COM_put_integer( index );           //@index
    COM_putsf( CRLF );                  //CR+LF
    COM_rx_on( );                       //Receiver on

    if( API_check_acknowledge( ) > 0 )  //Delete = OK
    {
        return 1;
    }

    else                                //Delete != OK
    {
        return 0;
    }
}


/*! \brief Send message
 *
 *  This function will take your user defined message, encode this
 *  text, add the header information found in AVRSMS_header.h.
 *  If successful, the message will be forwarded to the connected GSM modem
 *
 *  \param    *msg unsigned char pointer user defined message
 *
 *  \retval   1 Success, message sent
 *  \retval   0 Error doing compression
 *  \retval  -1 No "> " from phone
 *  \retval  -2 No message sent acknowledge
 */
int API_sendmsg( unsigned char *msg )
{

  //! Local variables
  int payload_len, len;                                           //Total length of message, and length of user text
  unsigned char payload_len_c[3], jump;

  //Init
  payload_len = len = 0;
  payload_len_c[0] = jump = '\0';

  //If necessary turn interrupts off
  if( ( payload_len = ZIP_compress( msg, &jump, msgbuff) ) == 0 ) //Convert user text to pdu format
  {
    return 0;                                                     //Something wrong happend during compression
  }

  //Compression ok
  else
  {
    ZIP_itoh(payload_len, &payload_len_c[0]);                     //Convert Integer payload to hex in string format
    len = HEADER_LEN + payload_len - jump;                        //Calculate overall length

    COM_rx_reset( );                                              //Clear rx_buff
    COM_setSearchString( READY_ );                                //Set "> " to be search string
    COM_putsf( AT_CMGS );                                         //Send message
    COM_put_integer( len );                                       //append length
    COM_putsf( CRLF );                                            //CR+LF
    COM_rx_on( );                                                 //Receiver on

    //Append payload
    if( API_check_acknowledge() > 0 )                             //Wait for acknowledge = "> "
    {
      COM_rx_reset( );                                            //Clear rx_buff
      COM_setSearchString( OK_ );                                 //Set "OK" to be search string
      COM_putsf( PDU_HEADER );
      COM_puts( payload_len_c );
      COM_puts( msgbuff );
      COM_putchar( 26 );
      COM_rx_on( );                                               //Receiver on

      if( API_check_acknowledge() > 0 )                           //Acknowledge = OK
      {
        return 1;
      }

      else                                                        //Acknowledge != OK
      {
        return -2;
      }

    }

    else                                                          //Acknowledge != "> "
    {
        return -1;
    }
  }
}


/*! \brief Read message from a given index
 *
 *  This function is used to read a newly arrived message
 *  from a given index. The message is decoded, and stored
 *  in the msgbuff.
 *
 *  \param    ind index to read message from
 *
 *  \retval   i Length of new message
 *  \retval   0 Error, No acknowledge from phone
 */
int API_readmsg( int ind )
{

    //! Local variables
    unsigned char *encodedmsg;                      //Pointer to encoded message
    int i;

    //Init
    encodedmsg = '\0';
    i = 0;

    COM_rx_reset( );                                //Reset system
    COM_setSearchString( OK_ );                     //Set OK to be search string
    COM_putsf( AT_CMGR );                           //Read message
    COM_put_integer( ind );                         //@index
    COM_putsf( CRLF );                              //CR+LF
    COM_rx_on( );                                   //Receiver on, wait for acknowledge

    if( API_check_acknowledge() > 0 )               //Read = OK
    {
        encodedmsg = TOOLS__decodeCMGR( ind );      //Get encoded message from the data returned from the phone
        i = ZIP_decompress( encodedmsg, msgbuff );  //Decompress this message

        //COM_puts( msgbuff );                      //Could be used during test, where the GSM modem is switched with a terminal application

        return i;
    }

    else                                            //Read != OK
    {
        return 0;
    }
}


/*! \brief Check acknowledge returned from phone
 *
 *  This function is very important. It checks if an acknowledge
 *  has been received from the phone. A counting loop is also
 *  included to avoid waiting for a acknowledge that never arrives.
 *
 *  \param    void
 *
 *  \retval   1 Success, correct acknowledge
 *  \retval   0 Error, returned "ERROR" or timed out
 */
int API_check_acknowledge( void )
{

    //! Local variables
    static unsigned int i, ii;
	_delay_ms(1000);
	_delay_ms(1000);
	_delay_ms(1000);
	_delay_ms(1000);
	_delay_ms(1000); 
    for( i = 0; ( rx_ack == 0 ) && ( i < 65535 ); i++ ) //Wait loop
    {
        for( ii = 0; ii < 10; ii++ )
        {
            ;
        }
    }
	    if( rx_ack > 0 )                                    //Everything worked out fine...rx turned off
    {
        rx_ack = 0;                                     //Reset flag
        return 1;
    }

    else                                                //A timeout could result from no acknowledge, wrong acknowledge or buffer overrun
    {
        COM_rx_off( );                                  //Receiver off
        COM_rx_reset( );                                //Reset buffer and interrupt routine
        return 0;                                       //Timed out, or wrong acknowledge from phone
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩日av一区二区| 国产一区二区三区在线观看精品 | 精品视频在线看| 97国产精品videossex| 不卡在线观看av| av影院午夜一区| 在线观看中文字幕不卡| 欧美中文字幕一二三区视频| 在线观看91av| 精品国产免费一区二区三区香蕉| 日韩欧美久久久| 久久午夜电影网| 亚洲欧美在线视频| 丝袜亚洲另类欧美| 久草这里只有精品视频| 粉嫩av亚洲一区二区图片| 色综合天天做天天爱| 欧美精品少妇一区二区三区| 欧美成人r级一区二区三区| 欧美国产禁国产网站cc| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲乱码一区二区三区在线观看| 亚洲在线免费播放| 黄色小说综合网站| 91一区一区三区| 欧美本精品男人aⅴ天堂| 国产精品伦理在线| 五月激情丁香一区二区三区| 久久99久久久欧美国产| 91小视频在线免费看| 这里只有精品免费| 最新热久久免费视频| 免费高清视频精品| av一二三不卡影片| 日韩欧美一区二区不卡| 国产精品毛片久久久久久| 日韩国产欧美在线播放| 不卡的av电影| 久久影院视频免费| 亚洲成人www| 99国产精品久久久久| 欧美va天堂va视频va在线| 亚洲免费在线播放| 国产suv精品一区二区6| 91精品在线观看入口| 成人欧美一区二区三区小说| 日韩精品成人一区二区三区| av一区二区三区黑人| 精品国产免费一区二区三区香蕉| 亚洲一区二区精品视频| 国产.欧美.日韩| 日韩免费高清电影| 婷婷一区二区三区| 91成人免费电影| 中文字幕一区二区三区在线播放| 久久成人av少妇免费| 欧美一区二视频| 亚洲第一狼人社区| 欧美视频中文一区二区三区在线观看| 国产欧美一区二区精品秋霞影院 | 国产一区二区三区精品欧美日韩一区二区三区| 99麻豆久久久国产精品免费 | 午夜一区二区三区在线观看| 99久久99久久精品免费看蜜桃| 精品国产伦一区二区三区观看方式| 亚洲电影第三页| 欧美午夜一区二区| 一区二区三区加勒比av| 91麻豆国产福利在线观看| 国产精品剧情在线亚洲| 豆国产96在线|亚洲| 欧美国产丝袜视频| 成人精品小蝌蚪| 亚洲欧洲日本在线| 成人91在线观看| 中文字幕一区在线| 色8久久精品久久久久久蜜| 亚洲色图视频网站| 欧美性生活久久| 亚洲va国产天堂va久久en| 欧美日韩国产精品自在自线| 亚洲成人av一区二区| 91精品国产美女浴室洗澡无遮挡| 日日摸夜夜添夜夜添国产精品| 7777精品伊人久久久大香线蕉完整版 | 九九九久久久精品| 精品久久五月天| 国产激情一区二区三区四区| 国产欧美日韩三级| 色综合天天性综合| 亚洲综合免费观看高清完整版 | 国产乱人伦偷精品视频免下载| 久久综合久久鬼色| a美女胸又www黄视频久久| 亚洲综合男人的天堂| 日韩免费电影一区| 不卡在线观看av| 肉肉av福利一精品导航| 久久久午夜精品| 色欧美乱欧美15图片| 美国十次综合导航| 国产精品久久久久久户外露出| 91免费看片在线观看| 蜜芽一区二区三区| 一色屋精品亚洲香蕉网站| 欧美日本在线播放| 国产成人在线视频播放| 亚洲一二三级电影| 久久日韩粉嫩一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 日本va欧美va欧美va精品| 欧美激情一区二区三区不卡| 欧美性一二三区| 成人国产免费视频| 日韩国产精品久久久久久亚洲| 国产精品麻豆视频| 日韩欧美国产综合| 色综合天天综合网国产成人综合天| 日本不卡一二三| 亚洲欧洲中文日韩久久av乱码| 91精品一区二区三区久久久久久| 99热精品一区二区| 国产精品一区在线观看你懂的| 洋洋av久久久久久久一区| 久久久综合网站| 日韩小视频在线观看专区| 欧美中文字幕亚洲一区二区va在线 | 欧美喷水一区二区| 99久久国产综合精品麻豆| 韩国av一区二区三区在线观看| 亚洲国产精品欧美一二99| 1000精品久久久久久久久| 久久夜色精品国产噜噜av| 欧美成人a∨高清免费观看| 欧美色图在线观看| 91美女片黄在线观看91美女| 国产超碰在线一区| 国内精品久久久久影院色 | 国产精品麻豆久久久| 26uuu欧美| 精品久久久三级丝袜| 欧美一区二区三区人| 欧美日韩精品一区二区三区蜜桃| 色偷偷88欧美精品久久久| 99精品国产99久久久久久白柏 | 欧美日韩美女一区二区| 在线视频欧美精品| 91视频精品在这里| av爱爱亚洲一区| 91网页版在线| 欧美性色aⅴ视频一区日韩精品| 91亚洲精品一区二区乱码| 99这里只有久久精品视频| 波多野结衣精品在线| 91浏览器在线视频| 色欧美乱欧美15图片| 欧美日韩国产首页在线观看| 欧美日韩一区成人| 日韩一区二区三区四区| 日韩欧美www| 国产欧美精品一区二区三区四区| 日本一区二区在线不卡| 中文字幕亚洲视频| 亚洲欧美日韩一区| 午夜精品久久久久久| 久久成人麻豆午夜电影| 成人自拍视频在线观看| 94-欧美-setu| 91福利区一区二区三区| 欧美一区二区三区影视| 久久久精品影视| 亚洲精品亚洲人成人网在线播放| 婷婷中文字幕一区三区| 国产在线视视频有精品| 99久久久久久| 91精品国产色综合久久ai换脸 | 1区2区3区国产精品| 亚洲成va人在线观看| 蜜臀91精品一区二区三区| 风间由美一区二区av101| 91在线一区二区三区| 91麻豆精品国产91久久久久| 久久蜜桃一区二区| 亚洲永久免费视频| 国产一区二区在线视频| 色中色一区二区| 2020国产精品| 亚洲动漫第一页| 国产成人丝袜美腿| 欧美日韩免费电影| 国产精品久线在线观看| 麻豆91精品91久久久的内涵| 99精品久久久久久| 亚洲精品在线电影| 亚洲一区二区成人在线观看| 国产99久久久国产精品免费看| 欧美午夜电影在线播放| 国产馆精品极品| 亚洲高清视频中文字幕| 久久精品久久99精品久久|