Asterisk - The Open Source Telephony Project
18.5.0
|
SMS application - ETSI ES 201 912 protocol 1 implementation. More...
#include "asterisk.h"
#include <dirent.h>
#include <ctype.h>
#include <sys/stat.h>
#include "asterisk/paths.h"
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/alaw.h"
#include "asterisk/callerid.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/format_cache.h"
Go to the source code of this file.
Data Structures | |
struct | sms_s |
Macros | |
#define | __OUT_FMT ast_format_slin |
#define | DIR_RX 1 |
#define | DIR_TX 2 |
#define | DLL2_ACK(h) ((h->framenumber & 1) ? DLL2_SMS_ACK1: DLL2_SMS_ACK1) |
#define | is16bit(dcs) ( ((dcs) & 0xC0) ? 0 : (((dcs) & 0xc) == 8) ) |
#define | is7bit(dcs) ( ((dcs) & 0xC0) ? (!((dcs) & 4) ) : (((dcs) & 0xc) == 0) ) |
#define | is8bit(dcs) ( ((dcs) & 0xC0) ? ( ((dcs) & 4) ) : (((dcs) & 0xc) == 4) ) |
#define | MAX_DEBUG_LEN 300 |
#define | MAXSAMPLES (800) |
#define | OSYNC_BITS 80 /* initial sync bits */ |
#define | SMSLEN 160 |
#define | SMSLEN_8 140 |
Typedefs | |
typedef signed short | output_t |
typedef struct sms_s | sms_t |
Enumerations | |
enum | message_types { DLL_SMS_MASK = 0x7f, DLL1_SMS_DATA = 0x11, DLL1_SMS_ERROR = 0x12, DLL1_SMS_EST = 0x13, DLL1_SMS_REL = 0x14, DLL1_SMS_ACK = 0x15, DLL1_SMS_NACK = 0x16, DLL1_SMS_COMPLETE = 0x80, DLL1_SMS_MORE = 0x00, DLL2_SMS_EST = 0x7f, DLL2_SMS_INFO_MO = 0x10, DLL2_SMS_INFO_MT = 0x11, DLL2_SMS_INFO_STA = 0x12, DLL2_SMS_NACK = 0x13, DLL2_SMS_ACK0 = 0x14, DLL2_SMS_ACK1 = 0x15, DLL2_SMS_ENQ = 0x16, DLL2_SMS_REL = 0x17, DLL2_SMS_COMPLETE = 0x00, DLL2_SMS_MORE = 0x80 } |
enum | sms_flags { OPTION_BE_SMSC = (1 << 0), OPTION_ANSWER = (1 << 1), OPTION_TWO = (1 << 2), OPTION_PAUSE = (1 << 3), OPTION_SRR = (1 << 4), OPTION_DCS = (1 << 5), OPTIONS_NO_LOG = (1 << 6) } |
enum | sms_opt_args { OPTION_ARG_PAUSE = 0, OPTION_ARG_ARRAY_SIZE } |
Functions | |
static void | adddata_proto2 (sms_t *h, unsigned char msg, char *data, int size) |
AST_MODULE_INFO_STANDARD_EXTENDED (ASTERISK_GPL_KEY, "SMS/PSTN handler") | |
static char * | isodate (time_t t, char *buf, int len) |
static, return a date/time in ISO format More... | |
static int | load_module (void) |
static void | numcpy (char *d, char *s) |
copy number, skipping non digits apart from leading + More... | |
static unsigned char | packaddress (unsigned char *o, char *i) |
store an address at o, and return number of bytes used More... | |
static void | packdate (unsigned char *o, time_t w) |
pack a date and return More... | |
static int | packsms (unsigned char dcs, unsigned char *base, unsigned int udhl, unsigned char *udh, int udl, unsigned short *ud) |
general pack, with length and data, returns number of bytes of target used More... | |
static int | packsms16 (unsigned char *o, int udhl, unsigned char *udh, int udl, unsigned short *ud) |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using 16 bit UCS-2 character codes The return value is the number of bytes packed in to o, which is internally limited to 140 o can be null, in which case this is used to validate or count only if the input contains invalid characters then the return value is -1 More... | |
static int | packsms7 (unsigned char *o, int udhl, unsigned char *udh, int udl, unsigned short *ud) |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using SMS 7 bit character codes More... | |
static int | packsms8 (unsigned char *o, int udhl, unsigned char *udh, int udl, unsigned short *ud) |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using 8 bit character codes. The return value is the number of bytes packed in to o, which is internally limited to 140. o can be null, in which case this is used to validate or count only. if the input contains invalid characters then the return value is -1 More... | |
static void | putdummydata_proto2 (sms_t *h) |
static struct dirent * | readdirqueue (DIR *d, char *queue) |
read dir skipping dot files... More... | |
static void * | sms_alloc (struct ast_channel *chan, void *sms_t_ptr) |
static void | sms_compose1 (sms_t *h, int more) |
compose a message for protocol 1 More... | |
static void | sms_compose2 (sms_t *h, int more) |
static void | sms_debug (int dir, sms_t *h) |
static int | sms_exec (struct ast_channel *chan, const char *data) |
static int | sms_generate (struct ast_channel *chan, void *data, int len, int samples) |
static unsigned char | sms_handleincoming (sms_t *h) |
handle the incoming message More... | |
static int | sms_handleincoming_proto2 (sms_t *h) |
sms_handleincoming_proto2: handle the incoming message More... | |
static char * | sms_hexdump (unsigned char buf[], int size, char *s) |
static void | sms_log (sms_t *h, char status) |
Log the output, and remove file. More... | |
static void | sms_messagerx (sms_t *h) |
static void | sms_messagerx2 (sms_t *h) |
static void | sms_messagetx (sms_t *h) |
static void | sms_nextoutgoing (sms_t *h) |
find and fill in next message, or send a REL if none waiting More... | |
static void | sms_process (sms_t *h, int samples, signed short *data) |
static void | sms_readfile (sms_t *h, char *fn) |
parse and delete a file More... | |
static void | sms_release (struct ast_channel *chan, void *data) |
static void | sms_writefile (sms_t *h) |
white a received text message to a file More... | |
static int | unload_module (void) |
static unsigned char | unpackaddress (char *o, unsigned char *i) |
unpack an address from i, return byte length, unpack to o More... | |
static struct timeval | unpackdate (unsigned char *i) |
unpack a date and return More... | |
static int | unpacksms (unsigned char dcs, unsigned char *i, unsigned char *udh, int *udhl, unsigned short *ud, int *udl, char udhi) |
general unpack - starts with length byte (octet or septet) and returns number of bytes used, inc length More... | |
static void | unpacksms16 (unsigned char *i, unsigned char l, unsigned char *udh, int *udhl, unsigned short *ud, int *udl, char udhi) |
unpacks bytes (16 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set More... | |
static void | unpacksms7 (unsigned char *i, unsigned char l, unsigned char *udh, int *udhl, unsigned short *ud, int *udl, char udhi) |
unpacks bytes (7 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set More... | |
static void | unpacksms8 (unsigned char *i, unsigned char l, unsigned char *udh, int *udhl, unsigned short *ud, int *udl, char udhi) |
unpacks bytes (8 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set. More... | |
static long | utf8decode (unsigned char **pp) |
Reads next UCS character from NUL terminated UTF-8 string and advance pointer. More... | |
Variables | |
static char * | app = "SMS" |
static const unsigned short | defaultalphabet [] |
static const unsigned short | escapes [] |
static char | log_file [255] |
static volatile unsigned char | message_ref |
static volatile unsigned int | seq |
static const struct ast_app_option | sms_options [128] = { [ 's' ] = { .flag = OPTION_BE_SMSC }, [ 'a' ] = { .flag = OPTION_ANSWER }, [ 't' ] = { .flag = OPTION_TWO }, [ 'r' ] = { .flag = OPTION_SRR }, [ 'o' ] = { .flag = OPTION_DCS }, [ 'n' ] = { .flag = OPTIONS_NO_LOG }, [ 'p' ] = { .flag = OPTION_PAUSE , .arg_index = OPTION_ARG_PAUSE + 1 }, } |
static struct ast_generator | smsgen |
static const signed short | wave [] |
static const output_t * | wave_out = wave |
SMS application - ETSI ES 201 912 protocol 1 implementation.
ES 201 912 SMS for PSTN/ISDN TS 123 040 Technical realization of SMS
Definition in file app_sms.c.
#define __OUT_FMT ast_format_slin |
Definition at line 149 of file app_sms.c.
Referenced by sms_exec(), and sms_generate().
#define DIR_RX 1 |
Definition at line 1483 of file app_sms.c.
Referenced by sms_debug(), and sms_messagerx().
#define DIR_TX 2 |
Definition at line 1484 of file app_sms.c.
Referenced by sms_messagetx().
#define DLL2_ACK | ( | h | ) | ((h->framenumber & 1) ? DLL2_SMS_ACK1: DLL2_SMS_ACK1) |
Referenced by sms_messagerx2().
#define is16bit | ( | dcs | ) | ( ((dcs) & 0xC0) ? 0 : (((dcs) & 0xc) == 8) ) |
Definition at line 283 of file app_sms.c.
Referenced by sms_exec(), and sms_readfile().
#define is7bit | ( | dcs | ) | ( ((dcs) & 0xC0) ? (!((dcs) & 4) ) : (((dcs) & 0xc) == 0) ) |
Definition at line 281 of file app_sms.c.
Referenced by packsms(), sms_exec(), sms_readfile(), and unpacksms().
#define is8bit | ( | dcs | ) | ( ((dcs) & 0xC0) ? ( ((dcs) & 4) ) : (((dcs) & 0xc) == 4) ) |
Definition at line 282 of file app_sms.c.
Referenced by packsms(), sms_exec(), sms_readfile(), and unpacksms().
#define MAX_DEBUG_LEN 300 |
Definition at line 1248 of file app_sms.c.
Referenced by sms_handleincoming_proto2(), and sms_hexdump().
#define MAXSAMPLES (800) |
Referenced by sms_generate().
#define OSYNC_BITS 80 /* initial sync bits */ |
Definition at line 152 of file app_sms.c.
Referenced by sms_messagetx().
#define SMSLEN 160 |
max SMS length
Definition at line 215 of file app_sms.c.
Referenced by packsms7(), sms_exec(), and sms_readfile().
#define SMSLEN_8 140 |
max SMS length for 8-bit char
Definition at line 216 of file app_sms.c.
Referenced by packsms16(), and packsms8().
enum message_types |
The SMS spec ETSI ES 201 912 defines two protocols with different message types. Also note that the high bit is used to indicate whether the message is complete or not, but in two opposite ways: for Protocol 1, 0x80 means that the message is complete; for Protocol 2, 0x00 means that the message is complete;
Definition at line 161 of file app_sms.c.
enum sms_flags |
Enumerator | |
---|---|
OPTION_BE_SMSC | |
OPTION_ANSWER | |
OPTION_TWO | |
OPTION_PAUSE | |
OPTION_SRR | |
OPTION_DCS | |
OPTIONS_NO_LOG |
Definition at line 1856 of file app_sms.c.
enum sms_opt_args |
Enumerator | |
---|---|
OPTION_ARG_PAUSE | |
OPTION_ARG_ARRAY_SIZE |
Definition at line 1866 of file app_sms.c.
|
static |
Add data to a protocol 2 message. Use the length field (h->omsg[1]) as a pointer to the next free position.
Definition at line 1188 of file app_sms.c.
References sms_s::omsg.
Referenced by putdummydata_proto2(), and sms_compose2().
AST_MODULE_INFO_STANDARD_EXTENDED | ( | ASTERISK_GPL_KEY | , |
"SMS/PSTN handler" | |||
) |
Referenced by load_module().
|
static |
static, return a date/time in ISO format
Definition at line 303 of file app_sms.c.
References ast_localtime(), ast_strftime(), buf, and NULL.
Referenced by sms_log(), and sms_writefile().
|
static |
Definition at line 2083 of file app_sms.c.
References app, ast_config_AST_LOG_DIR, AST_LIN2A, AST_MODULE_INFO_STANDARD_EXTENDED(), ast_register_application_xml, ASTERISK_GPL_KEY, log_file, sms_exec(), and wave.
|
static |
copy number, skipping non digits apart from leading +
Definition at line 288 of file app_sms.c.
Referenced by sms_readfile().
|
static |
store an address at o, and return number of bytes used
Definition at line 746 of file app_sms.c.
Referenced by sms_compose1().
|
static |
pack a date and return
Definition at line 553 of file app_sms.c.
References ast_localtime(), NULL, ast_tm::tm_gmtoff, ast_tm::tm_hour, ast_tm::tm_mday, ast_tm::tm_min, ast_tm::tm_mon, ast_tm::tm_sec, and ast_tm::tm_year.
Referenced by sms_compose1().
|
static |
general pack, with length and data, returns number of bytes of target used
Definition at line 520 of file app_sms.c.
References is7bit, is8bit, packsms16(), packsms7(), and packsms8().
Referenced by sms_compose1().
|
static |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using 16 bit UCS-2 character codes The return value is the number of bytes packed in to o, which is internally limited to 140 o can be null, in which case this is used to validate or count only if the input contains invalid characters then the return value is -1
Definition at line 485 of file app_sms.c.
References dummy(), NULL, SMSLEN_8, and sms_s::udhl.
Referenced by packsms(), sms_exec(), and sms_readfile().
|
static |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using SMS 7 bit character codes
Definition at line 369 of file app_sms.c.
References b, defaultalphabet, dummy(), escapes, NULL, SMSLEN, and sms_s::udhl.
Referenced by packsms(), sms_exec(), and sms_readfile().
|
static |
takes a binary header (udhl bytes at udh) and UCS-2 message (udl characters at ud) and packs in to o using 8 bit character codes. The return value is the number of bytes packed in to o, which is internally limited to 140. o can be null, in which case this is used to validate or count only. if the input contains invalid characters then the return value is -1
Definition at line 446 of file app_sms.c.
References dummy(), NULL, SMSLEN_8, and sms_s::udhl.
Referenced by packsms(), sms_exec(), and sms_readfile().
|
static |
Definition at line 1205 of file app_sms.c.
References adddata_proto2(), sms_s::udl, and sms_s::udtxt.
Referenced by sms_compose2().
|
static |
read dir skipping dot files...
Definition at line 1102 of file app_sms.c.
Referenced by sms_nextoutgoing().
|
static |
|
static |
compose a message for protocol 1
Definition at line 1400 of file app_sms.c.
References sms_s::da, sms_s::dcs, message_ref, sms_s::mr, sms_s::oa, sms_s::omsg, packaddress(), packdate(), packsms(), sms_s::pid, sms_s::rp, sms_s::scts, sms_s::smsc, sms_s::srr, sms_s::ud, sms_s::udh, sms_s::udhi, sms_s::udhl, sms_s::udl, and sms_s::vp.
Referenced by sms_nextoutgoing().
|
static |
Definition at line 1213 of file app_sms.c.
References adddata_proto2(), ast_localtime(), sms_s::da, NULL, sms_s::oa, sms_s::omsg, putdummydata_proto2(), sms_s::scts, sms_s::smsc, ast_tm::tm_hour, ast_tm::tm_mday, ast_tm::tm_min, and ast_tm::tm_mon.
Referenced by sms_nextoutgoing().
|
static |
Definition at line 1485 of file app_sms.c.
References ast_verb, DIR_RX, sms_s::ibytep, sms_s::imsg, and sms_s::omsg.
Referenced by sms_messagerx(), and sms_messagetx().
|
static |
Definition at line 1881 of file app_sms.c.
References __OUT_FMT, ast_activate_generator(), ast_answer(), AST_APP_ARG, ast_app_parse_options(), ast_channel_caller(), ast_channel_name(), ast_copy_string(), ast_deactivate_generator(), AST_DECLARE_APP_ARGS, ast_format_slin, AST_FRAME_VOICE, ast_frfree, ast_log, ast_read(), ast_set_read_format(), ast_set_write_format(), AST_STANDARD_APP_ARGS, AST_STATE_UP, ast_strdupa, ast_strlen_zero, ast_test_flag, ast_tvnow(), ast_verb, ast_waitfor(), sms_s::cli, d, sms_s::da, ast_frame::data, sms_s::dcs, DLL1_SMS_COMPLETE, DLL1_SMS_EST, DLL2_SMS_EST, done, sms_s::err, ast_flags::flags, sms_s::framenumber, ast_frame::frametype, sms_s::hangup, sms_s::ipc0, sms_s::ipc1, is16bit, is7bit, is8bit, LOG_ERROR, LOG_NOTICE, LOG_WARNING, sms_s::mr, sms_s::nolog, sms_s::oa, sms_s::omsg, sms_s::opause_0, OPTION_ANSWER, OPTION_ARG_ARRAY_SIZE, OPTION_ARG_PAUSE, OPTION_BE_SMSC, OPTION_DCS, OPTION_SRR, OPTION_TWO, options, OPTIONS_NO_LOG, packsms16(), packsms7(), packsms8(), parse(), sms_s::pid, sms_s::protocol, ast_frame::ptr, sms_s::queue, sms_s::rx, S_COR, S_OR, ast_frame::samples, sms_s::scts, sms_log(), sms_messagetx(), sms_options, sms_process(), sms_writefile(), sms_s::smsc, SMSLEN, sms_s::srr, sms_s::ud, sms_s::udh, sms_s::udhl, sms_s::udl, utf8decode(), and while().
Referenced by load_module().
|
static |
outgoing data are produced by this generator function, that reads from the descriptor whether it has data to send and which ones.
Definition at line 1604 of file app_sms.c.
References __OUT_FMT, ast_alloca, ast_channel_name(), AST_FRAME_VOICE, ast_frfree, AST_FRIENDLY_OFFSET, ast_log, ast_write(), buf, ast_frame::data, ast_frame::datalen, DLL2_SMS_EST, errno, ast_frame_subclass::format, ast_frame::frametype, LOG_WARNING, ast_frame::mallocd, MAXSAMPLES, sms_s::obitp, sms_s::obyte, sms_s::obyten, sms_s::obytep, ast_frame::offset, sms_s::omsg, sms_s::opause, sms_s::ophase, sms_s::ophasep, sms_s::oseizure, sms_s::osync, sms_s::protocol, ast_frame::ptr, ast_frame::samples, ast_frame::src, ast_frame::subclass, and wave_out.
|
static |
handle the incoming message
Definition at line 1112 of file app_sms.c.
References ast_copy_string(), ast_log, ast_tvnow(), sms_s::cli, sms_s::da, sms_s::dcs, sms_s::imsg, LOG_WARNING, sms_s::mr, sms_s::oa, sms_s::pid, sms_s::rp, sms_s::rx, sms_s::scts, sms_writefile(), sms_s::smsc, sms_s::srr, sms_s::ud, sms_s::udh, sms_s::udhi, sms_s::udhl, sms_s::udl, unpackaddress(), unpackdate(), unpacksms(), and sms_s::vp.
Referenced by sms_messagerx().
|
static |
sms_handleincoming_proto2: handle the incoming message
Definition at line 1262 of file app_sms.c.
References ast_copy_string(), ast_localtime(), ast_mktime(), ast_tvnow(), ast_verb, c, sms_s::da, sms_s::imsg, MAX_DEBUG_LEN, NULL, sms_s::oa, sms_s::omsg, sms_s::rx, sms_s::scts, sms_hexdump(), sms_messagetx(), sms_nextoutgoing(), sms_writefile(), ast_tm::tm_hour, ast_tm::tm_mday, ast_tm::tm_min, ast_tm::tm_mon, ast_tm::tm_sec, sms_s::ud, and sms_s::udl.
Referenced by sms_messagerx2().
|
static |
Definition at line 1249 of file app_sms.c.
References MAX_DEBUG_LEN.
Referenced by sms_handleincoming_proto2().
|
static |
Log the output, and remove file.
Definition at line 774 of file app_sms.c.
References AST_FILE_MODE, ast_log, buf, sms_s::da, errno, isodate(), log_file, LOG_WARNING, sms_s::mr, sms_s::nolog, NULL, sms_s::oa, sms_s::queue, sms_s::rx, S_OR, sms_s::smsc, sms_s::ud, and sms_s::udl.
Referenced by sms_exec(), sms_messagerx(), and sms_messagerx2().
|
static |
Definition at line 1503 of file app_sms.c.
References DIR_RX, sms_s::err, sms_s::hangup, sms_s::imsg, sms_s::omsg, sms_s::protocol, sms_debug(), sms_handleincoming(), sms_log(), sms_messagerx2(), sms_messagetx(), and sms_nextoutgoing().
Referenced by sms_process().
|
static |
Definition at line 1343 of file app_sms.c.
References ast_log, DLL2_ACK, DLL2_SMS_ACK0, DLL2_SMS_ACK1, DLL2_SMS_EST, DLL2_SMS_INFO_MO, DLL2_SMS_INFO_MT, DLL2_SMS_NACK, DLL2_SMS_REL, DLL_SMS_MASK, sms_s::hangup, sms_s::imsg, LOG_NOTICE, sms_s::omsg, sms_handleincoming_proto2(), sms_log(), sms_messagetx(), and sms_nextoutgoing().
Referenced by sms_messagerx().
|
static |
Definition at line 1561 of file app_sms.c.
References c, DIR_TX, sms_s::framenumber, len(), sms_s::obitp, sms_s::obyte, sms_s::obyten, sms_s::obytep, sms_s::omsg, sms_s::opause, sms_s::opause_0, sms_s::oseizure, sms_s::osync, OSYNC_BITS, sms_s::protocol, and sms_debug().
Referenced by sms_exec(), sms_handleincoming_proto2(), sms_messagerx(), sms_messagerx2(), sms_nextoutgoing(), and sms_process().
|
static |
find and fill in next message, or send a REL if none waiting
Definition at line 1442 of file app_sms.c.
References ast_config_AST_SPOOL_DIR, ast_mkdir(), d, sms_s::da, sms_s::oa, sms_s::omsg, sms_s::protocol, sms_s::queue, readdirqueue(), sms_s::rx, sms_s::sent_rel, sms_compose1(), sms_compose2(), sms_messagetx(), sms_readfile(), and sms_s::smsc.
Referenced by sms_handleincoming_proto2(), sms_messagerx(), and sms_messagerx2().
|
static |
Process an incoming frame, trying to detect the carrier and decode the message. The two frequencies are 1300 and 2100 Hz. The decoder detects the amplitude of the signal over the last few samples, filtering the absolute values with a lowpass filter. If the magnitude (h->imag) is large enough, multiply the signal by the two carriers, and compute the amplitudes m0 and m1. Record the current sample as '0' or '1' depending on which one is greater. The last 3 bits are stored in h->ibith, with the count of '1' bits in h->ibitt. XXX the rest is to be determined.
Definition at line 1712 of file app_sms.c.
References abs, ast_log, ast_verb, sms_s::err, sms_s::framenumber, sms_s::hangup, sms_s::ibitc, sms_s::ibith, sms_s::ibitl, sms_s::ibitn, sms_s::ibitt, sms_s::ibytec, sms_s::ibytep, sms_s::ibytev, sms_s::idle, sms_s::ierr, sms_s::imag, sms_s::imc0, sms_s::imc1, sms_s::ims0, sms_s::ims1, sms_s::imsg, sms_s::ipc0, sms_s::ipc1, sms_s::iphasep, sms_s::ips0, sms_s::ips1, LOG_NOTICE, sms_s::obyten, sms_s::omsg, sms_s::osync, sms_s::protocol, sms_s::sent_rel, sms_messagerx(), sms_messagetx(), and wave.
Referenced by sms_exec().
|
static |
parse and delete a file
Definition at line 827 of file app_sms.c.
References ast_log, ast_mktime(), ast_tvnow(), d, sms_s::da, sms_s::dcs, is16bit, is7bit, is8bit, LOG_NOTICE, LOG_WARNING, sms_s::mr, NULL, numcpy(), sms_s::oa, packsms16(), packsms7(), packsms8(), sms_s::pid, sms_s::rp, sms_s::rx, S, sms_s::scts, SMSLEN, sms_s::srr, ast_tm::tm_hour, ast_tm::tm_isdst, ast_tm::tm_mday, ast_tm::tm_min, ast_tm::tm_mon, ast_tm::tm_sec, ast_tm::tm_year, sms_s::ud, sms_s::udh, sms_s::udhi, sms_s::udhl, sms_s::udl, sms_s::udtxt, utf8decode(), and sms_s::vp.
Referenced by sms_nextoutgoing().
|
static |
|
static |
white a received text message to a file
Definition at line 998 of file app_sms.c.
References ast_config_AST_SPOOL_DIR, ast_copy_string(), ast_log, ast_mkdir(), ast_tvnow(), ast_tvzero(), buf, sms_s::da, sms_s::dcs, isodate(), LOG_NOTICE, sms_s::mr, NULL, sms_s::oa, sms_s::pid, sms_s::queue, sms_s::rp, sms_s::rx, sms_s::scts, seq, sms_s::smsc, sms_s::srr, sms_s::ud, sms_s::udh, sms_s::udhi, sms_s::udhl, sms_s::udl, and sms_s::vp.
Referenced by sms_exec(), sms_handleincoming(), and sms_handleincoming_proto2().
|
static |
Definition at line 2078 of file app_sms.c.
References app, and ast_unregister_application().
|
static |
unpack an address from i, return byte length, unpack to o
Definition at line 728 of file app_sms.c.
Referenced by sms_handleincoming().
|
static |
unpack a date and return
Definition at line 579 of file app_sms.c.
References ast_mktime(), NULL, ast_tm::tm_hour, ast_tm::tm_isdst, ast_tm::tm_mday, ast_tm::tm_min, ast_tm::tm_mon, ast_tm::tm_sec, and ast_tm::tm_year.
Referenced by sms_handleincoming().
|
static |
general unpack - starts with length byte (octet or septet) and returns number of bytes used, inc length
Definition at line 712 of file app_sms.c.
References is7bit, is8bit, unpacksms16(), unpacksms7(), and unpacksms8().
Referenced by sms_handleincoming().
|
static |
unpacks bytes (16 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set
Definition at line 684 of file app_sms.c.
References sms_s::ud.
Referenced by unpacksms().
|
static |
unpacks bytes (7 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set
Definition at line 602 of file app_sms.c.
References b, defaultalphabet, escapes, and sms_s::ud.
Referenced by unpacksms().
|
static |
unpacks bytes (8 bit encoding) at i, len l septets, and places in udh and ud setting udhl and udl. udh not used if udhi not set.
Definition at line 658 of file app_sms.c.
References sms_s::ud.
Referenced by unpacksms().
|
static |
Reads next UCS character from NUL terminated UTF-8 string and advance pointer.
Definition at line 315 of file app_sms.c.
Referenced by sms_exec(), and sms_readfile().
|
static |
Definition at line 124 of file app_sms.c.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 191 of file app_sms.c.
Referenced by packsms7(), and unpacksms7().
|
static |
Definition at line 204 of file app_sms.c.
Referenced by packsms7(), and unpacksms7().
|
static |
Definition at line 122 of file app_sms.c.
Referenced by load_module(), and sms_log().
|
static |
Definition at line 119 of file app_sms.c.
Referenced by sms_compose1().
|
static |
Definition at line 120 of file app_sms.c.
Referenced by ast_udptl_write(), parsing(), process_dtmf_cisco(), rtp_learning_rtp_seq_update(), rtp_learning_seq_init(), send_client(), send_retransmit(), sms_writefile(), and udptl_build_packet().
|
static |
Definition at line 1879 of file app_sms.c.
Referenced by sms_exec().
|
static |
|
static |
Definition at line 132 of file app_sms.c.
Referenced by load_module(), and sms_process().
Definition at line 148 of file app_sms.c.
Referenced by sms_generate().