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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smsc_at.c

?? gnu的專業(yè)網(wǎng)關(guān)smpp協(xié)議支持源代碼。
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* * smsc_at.c - implement interface to wireless modems using AT commands * * Yann Muller, Nick Clarey - 3G Lab, 2001. *  * Ericsson code by Chris Blown 30/01/2001 - Hinterlands Aust. * * Make sure your kannel configuration file contains the following lines * to be able to use the AT SMSC: *     group = smsc *     smsc = at *     modemtype = wavecom | premicell | siemens | siemens-tc35 | falcom | *                 nokiaphone | ericsson *     device = /dev/xxx  */#include <errno.h>#include <stdarg.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <ctype.h>#include <termios.h>#include <sys/time.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <sys/ioctl.h>#include <time.h>#include "gwlib/gwlib.h"#include "gwlib/charset.h"#include "smsc.h"#include "smsc_p.h"#include "sms.h"#ifndef CRTSCTS#define CRTSCTS 0#endif/* The number of times to attempt to send a message should sending fail */#define RETRY_SEND 3/****************************************************************************** * Prototypes for private functions */static int at_data_read(int fd, Octstr *ostr);static int send_modem_command(int fd, char *cmd, int multiline);static int pdu_extract(SMSCenter *smsc, Octstr **ostr);static Msg *pdu_decode(Octstr *data);static Msg *pdu_decode_deliver_sm(Octstr *data);static int pdu_encode(Msg *msg, unsigned char *pdu, SMSCenter *smsc);static Octstr *convertpdu(Octstr *pdutext);static int hexchar(int hexc);static int encode7bituncompressed(Octstr *input, unsigned char *encoded, int offset);static int encode8bituncompressed(Octstr *input, unsigned char *encoded);static void decode7bituncompressed(Octstr *input, int len, Octstr *decoded, int offset);static int numtext(int num);/****************************************************************************** * Types of GSM modems (as used in kannel.conf: at_type=xxxx) */#define WAVECOM         "wavecom"#define PREMICELL       "premicell"#define SIEMENS         "siemens"#define SIEMENS_TC35	"siemens-tc35"#define FALCOM          "falcom"#define NOKIAPHONE      "nokiaphone"#define ERICSSON        "ericsson"/****************************************************************************** * Message types defines */#define AT_DELIVER_SM   0#define AT_SUBMIT_SM    1/****************************************************************************** * type of phone number defines */#define PNT_UNKNOWN     0#define PNT_INTER       1#define PNT_NATIONAL    2/****************************************************************************** * Open the connection * * returns the file descriptor (fd) if ok, -1 on failure */static int at_open_connection(SMSCenter *smsc) {        int fd = -1;        struct termios tios;        int ret;                fd = open(smsc->at_serialdevice, O_RDWR|O_NONBLOCK|O_NOCTTY);        if(fd == -1) {                error(errno, "at_open_data_link: error opening the character device <%s>",                      smsc->at_serialdevice);                return -1;        }        tcgetattr(fd, &tios);        if((strcmp(smsc->at_modemtype, SIEMENS) == 0) 	   || (strcmp(smsc->at_modemtype, SIEMENS_TC35) == 0)           || (strcmp(smsc->at_modemtype, NOKIAPHONE) == 0)) {                cfsetospeed(&tios, B19200);  /* check radio pad parameter*/                cfsetispeed(&tios, B19200);        } else {                cfsetospeed(&tios, B9600);  /* check radio pad parameter*/                cfsetispeed(&tios, B9600);        }        kannel_cfmakeraw(&tios);        /* parameters:         * IGNBRK, IGNPAR: ignore BREAK and PARITY errors         * INPCK: enable parity check         * CSIZE: for CS8         * HUPCL: hang up on close         * CREAD: enable receiver         * CRTSCTS: enable flow control */        tios.c_iflag |= IGNBRK | IGNPAR | INPCK;        tios.c_cflag |= CSIZE | HUPCL | CREAD | CRTSCTS;        if (strcmp(smsc->at_modemtype, NOKIAPHONE) == 0)                tios.c_cflag ^= PARODD;        tios.c_cflag |=CS8;        ret = tcsetattr(fd, TCSANOW, &tios); /* apply changes now */        if(ret == -1){                error(errno,"at_data_link: fail to set termios attribute");                goto error;        }        tcflush(fd, TCIOFLUSH);        return fd;   error:        return -1;}/****************************************************************************** * Open the (Virtual) SMSCenter */SMSCenter *at_open(char *serialdevice, char *modemtype, char *pin,                   char *validityperiod, int alt_dcs) {        SMSCenter *smsc;        char setpin[20];        int ret;                smsc = smscenter_construct();        if(smsc == NULL)                goto error;        smsc->type = SMSC_TYPE_AT;        smsc->at_serialdevice = gw_strdup(serialdevice);        if (validityperiod != NULL)                smsc->at_validityperiod = gw_strdup(validityperiod);        smsc->at_modemtype = gw_strdup(modemtype);        if(pin)                smsc->at_pin = gw_strdup(pin);        smsc->at_received = list_create();        smsc->at_inbuffer = octstr_create("");	smsc->at_alt_dcs = alt_dcs;                smsc->at_fd = at_open_connection(smsc);        if (smsc->at_fd < 0)                goto error;        /* Nokia 7110 and 6210 need some time between opening         * the connection and sending the first AT commands */        if (strcmp(smsc->at_modemtype, NOKIAPHONE) == 0)                 sleep(1);	/* lets initialize the modem to a safe state */        send_modem_command(smsc->at_fd, "AT", 0);        send_modem_command(smsc->at_fd, "AT&F", 0);        send_modem_command(smsc->at_fd, "AT", 0);	        /* Turn Echo off on the modem: we don't need it */        if(send_modem_command(smsc->at_fd, "ATE0", 0) == -1) 	{ 		/* ok that was the first command we tried. */                goto error;	}	/* Let's collect some information from modem */	if(send_modem_command(smsc->at_fd, "ATI", 0) == -1)	    goto error;	sleep(1);	if(send_modem_command(smsc->at_fd, "ATI1", 0) == -1)	    goto error;	sleep(1);	if(send_modem_command(smsc->at_fd, "ATI2", 0) == -1)	    goto error;	sleep(1);	if(send_modem_command(smsc->at_fd, "ATI3", 0) == -1)	    goto error;	sleep(1);	if(send_modem_command(smsc->at_fd, "ATI4", 0) == -1)	    goto error;	sleep(1);        /* Check does the modem require a PIN and, if so, send it         * This is not supported by the Nokia Premicell */        if(strcmp(smsc->at_modemtype, PREMICELL) != 0) {                ret = send_modem_command(smsc->at_fd, "AT+CPIN?", 0);                 if(ret == -1)                        goto error;                if(ret == -2) {                        if(smsc->at_pin == NULL)                                goto error;                        sprintf(setpin, "AT+CPIN=%s", smsc->at_pin);                        if(send_modem_command(smsc->at_fd, setpin, 0) == -1)                                goto error;                }        }        /* Set the modem to PDU mode and autodisplay of new messages */        if(send_modem_command(smsc->at_fd, "AT+CMGF=0", 0) == -1)                goto error;	sleep(1);        /* The Ericsson GM12 modem requires different new message          * indication options from the other modems */         if(strcmp(smsc->at_modemtype, ERICSSON) == 0) {                if(send_modem_command(smsc->at_fd, "AT+CNMI=3,2,0,0", 0) == -1)                        goto error;        }        else if(strcmp(smsc->at_modemtype, SIEMENS_TC35) == 0) {                if(send_modem_command(smsc->at_fd, "AT+CSMS=1", 0) == -1)                        goto error;                if(send_modem_command(smsc->at_fd, "AT+CNMI=1,2,0,0,1",0)== -1)			goto error;	}        else {                if(send_modem_command(smsc->at_fd, "AT+CNMI=1,2,0,0,0", 0) == -1)                        goto error;        }                        sprintf(smsc->name, "AT: %s", smsc->at_serialdevice);                 info(0, "AT SMSC successfully opened.");        return smsc;   error:        return NULL;}/****************************************************************************** * Re-Open the AT (Virtual) SMSCenter */int at_reopen(SMSCenter *smsc) {        /* Do we really have an open connection to start with? */        if (smsc->at_fd == -1) {                info(0, "trying to close already closed AT, ignoring");        }        /* If we do, then try to close the file descriptor */        else if (close(smsc->at_fd) == -1) {                /* This situation could occur as a result of errors not being reported until                   the serial connection is closed. Supposing we do get here, we                   should reset the at_fd value to -1 to stop infinitely retrying the close. We                   also need to printing out the error message reported, just in case it's                   significant.                */                smsc->at_fd = -1;                error(errno, "Attempt to close connection to modem `%s' failed. Forcing reset.",                      smsc->at_serialdevice);        }        /* Reopen the connection. Note that the at_open_connection call returns           a file descriptor, which we should set in the smsc structure */        smsc->at_fd = at_open_connection(smsc);        /* Supposing that failed */        if (smsc->at_fd == -1) {                error(0, "Attempt to open connection to modem '%s' failed.",                      smsc->at_serialdevice);                /* Give up */                return -1;        }        /* Report success */        return 0;}/****************************************************************************** * Close the SMSCenter */int at_close(SMSCenter *smsc) {        /* Do we really have an open connection to start with? */        if (smsc->at_fd == -1) {                info(0, "trying to close already closed AT, ignoring");        }        /* If we do, then try to close the file descriptor */        else if (close(smsc->at_fd) == -1) {                error(errno, "Attempt to close connection to modem `%s' failed. Forcing reset.",                      smsc->at_serialdevice);        }                /* Our file descriptor can now be safely declared closed */        smsc->at_fd = -1;                /* Deallocate any miscellany */        smscenter_destruct(smsc);        /* Report success */        return 0;}/****************************************************************************** * Check for pending messages */int at_pending_smsmessage(SMSCenter *smsc) {        Octstr *pdu = NULL;        int ret=0;        Msg *msg = NULL;        /* Receive raw data */        ret = at_data_read(smsc->at_fd, smsc->at_inbuffer);        if(ret == -1) {                ret = at_reopen(smsc);                if(ret == -1) goto error;                return 0;        }         ret = 0;        while( pdu_extract(smsc, &pdu) == 1) {                msg = pdu_decode(pdu);                if(msg != NULL) {                        list_append(smsc->at_received, (void *)msg);                        ret = 1;                }                octstr_destroy(pdu);        }        if(list_len(smsc->at_received) > 0)                ret = 1;        return ret;  error:        error(errno,"at_pending message: device error");        return -1;}/****************************************************************************** * Send a message */int at_submit_msg(SMSCenter *smsc, Msg *msg) {        unsigned char command[500], pdu[500];        int ret = -1;         char sc[3];        int retries = RETRY_SEND;        /* Some modem types need a '00' prepended to the PDU         * to indicate to use the default SC.         * NB: This extra padding is not counted in the CMGS byte count */        sc[0] = '\0';        if((strcmp(smsc->at_modemtype, WAVECOM ) == 0) ||            (strcmp(smsc->at_modemtype, SIEMENS ) == 0) ||           (strcmp(smsc->at_modemtype, SIEMENS_TC35 ) == 0) ||

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 欧美日韩国产另类一区| 一区二区欧美国产| 久久网站最新地址| 欧美日韩国产高清一区二区三区 | 国产精品一区二区男女羞羞无遮挡 | 激情久久久久久久久久久久久久久久| 最新日韩在线视频| 久久综合九色综合久久久精品综合 | 在线观看91精品国产麻豆| 97久久精品人人爽人人爽蜜臀| 极品美女销魂一区二区三区免费| 夜夜爽夜夜爽精品视频| 国产欧美日韩不卡| 精品99999| 日韩欧美一二三四区| 欧美日韩国产综合草草| 91免费版在线| 不卡高清视频专区| 成人夜色视频网站在线观看| 精品一区二区三区免费| 欧美aaaaa成人免费观看视频| 亚洲精品日韩一| 国产精品伦理一区二区| 国产欧美日韩亚州综合| 国产欧美综合色| 国产日韩精品一区二区三区| 久久久久青草大香线综合精品| 欧美videofree性高清杂交| 91精品国产综合久久精品麻豆| 在线观看国产精品网站| 欧美影视一区二区三区| 欧美性视频一区二区三区| 一本色道久久综合亚洲91| 97se狠狠狠综合亚洲狠狠| 99久久99久久久精品齐齐| 97久久久精品综合88久久| 一本在线高清不卡dvd| 一本一本久久a久久精品综合麻豆| 岛国精品一区二区| voyeur盗摄精品| 91久久精品网| 欧美军同video69gay| 欧美一区二区福利在线| 日韩免费看网站| 久久久久一区二区三区四区| 中文字幕精品—区二区四季| 亚洲欧洲国产日本综合| 亚洲精品成人a在线观看| 亚洲一区二区三区四区五区黄| 五月天中文字幕一区二区| 日韩黄色免费电影| 精品亚洲国产成人av制服丝袜 | 亚洲欧美日韩国产手机在线| 亚洲色大成网站www久久九九| 1区2区3区精品视频| 亚洲一区自拍偷拍| 秋霞国产午夜精品免费视频| 韩国精品在线观看| av电影在线观看完整版一区二区| 色诱亚洲精品久久久久久| 亚洲国产综合视频在线观看| 亚洲高清在线精品| 欧美日韩黄色影视| 制服丝袜日韩国产| 久久色在线观看| 综合久久久久久| 日韩二区在线观看| 国产福利91精品一区二区三区| 99在线精品观看| 69堂国产成人免费视频| 久久久久久久久久久久久久久99 | 欧美精品一二三四| 久久久亚洲精品石原莉奈 | 精品一区二区三区免费毛片爱| 国产风韵犹存在线视精品| 欧美性生活影院| 久久男人中文字幕资源站| 亚洲精品五月天| 国模一区二区三区白浆| 91网上在线视频| 日韩欧美一级精品久久| 亚洲免费观看高清完整| 麻豆免费看一区二区三区| 99久久精品国产导航| 樱花草国产18久久久久| 亚洲一区二区精品久久av| 久久中文字幕电影| 亚洲特黄一级片| 美女国产一区二区三区| 91在线观看地址| 欧美精品一区视频| 亚洲综合色丁香婷婷六月图片| 国产一区二区三区久久悠悠色av| 色综合久久久久综合体桃花网| 欧美精品一区二区三区久久久| 亚洲免费三区一区二区| 国产高清亚洲一区| 欧美精品 国产精品| 中文字幕视频一区二区三区久| 久久疯狂做爰流白浆xx| 欧美性xxxxxxxx| 中文字幕一区二区三区不卡在线| 美女国产一区二区| 欧美精品三级在线观看| 亚洲欧美另类小说| 成人综合婷婷国产精品久久| 欧美成人vps| 日韩精品亚洲一区二区三区免费| www.av精品| 欧美激情一区在线| 国产又黄又大久久| 精品日韩av一区二区| 婷婷久久综合九色综合伊人色| 99久久国产综合色|国产精品| 久久久99免费| 国产最新精品免费| 欧美性色黄大片| 日韩码欧中文字| 成人性生交大片免费看中文| 精品久久久久久久久久久久包黑料| 香蕉成人伊视频在线观看| 91性感美女视频| 国产精品高潮呻吟| 成人性生交大片免费看在线播放| 精品国产一区二区精华| 久久精品国产亚洲高清剧情介绍| 欧美福利电影网| 日本人妖一区二区| 日韩一级高清毛片| 麻豆精品在线播放| 精品欧美久久久| 国产一区二区三区高清播放| 精品sm捆绑视频| 国产高清无密码一区二区三区| 国产日本欧美一区二区| 懂色一区二区三区免费观看| 国产精品午夜在线观看| 99精品在线观看视频| 亚洲人成伊人成综合网小说| 色美美综合视频| 五月天久久比比资源色| 678五月天丁香亚洲综合网| 日韩国产精品久久久久久亚洲| 欧美色成人综合| 色偷偷一区二区三区| 欧美国产成人精品| 国产精品亚洲第一区在线暖暖韩国| 久久综合视频网| 成人免费高清在线| 亚洲精品成人天堂一二三| 欧美日韩视频专区在线播放| 日本午夜一区二区| 精品欧美乱码久久久久久| 国产91精品一区二区麻豆亚洲| 中文字幕不卡一区| 91久久人澡人人添人人爽欧美| 亚洲成人一区二区| 久久综合九色综合久久久精品综合| 丁香另类激情小说| 夜夜嗨av一区二区三区四季av| 欧美伦理电影网| 国产精品99久久久久久久vr| 中文字幕免费观看一区| 欧美影院一区二区| 狠狠色丁香久久婷婷综| 综合久久久久久| 欧美一区二区视频在线观看2020 | 日韩精品中文字幕一区二区三区 | 卡一卡二国产精品 | 国产激情精品久久久第一区二区| 美腿丝袜一区二区三区| 成人精品鲁一区一区二区| 精品在线一区二区三区| 国产日韩精品一区二区三区在线| 91免费观看在线| 免费成人美女在线观看.| 欧美激情在线看| 91麻豆精品国产91久久久资源速度 | 欧美老女人在线| 国产v日产∨综合v精品视频| 亚洲尤物在线视频观看| 久久久久久99久久久精品网站| 91精品1区2区| 国产精品影视在线| 性感美女久久精品| 日本一二三不卡| 欧美电视剧在线看免费| 色综合久久综合| 国产精品一区二区黑丝| 五月激情丁香一区二区三区| 中文字幕一区免费在线观看| 日韩女优av电影| 欧美色成人综合| 97精品电影院| 国产精品系列在线播放| 老司机一区二区| 婷婷国产v国产偷v亚洲高清| 中文字幕一区二区不卡| 国产亚洲一区二区三区|