Version 0.1.7 from FTP
[asterisk/asterisk.git] / include / asterisk / callerid.h
1 /*
2  * Asterisk -- A telephony toolkit for Linux.
3  *
4  * CallerID Generation support 
5  * 
6  * Copyright (C) 1999, Mark Spencer
7  *
8  * Mark Spencer <markster@linux-support.net>
9  *
10  * This program is free software, distributed under the terms of
11  * the GNU General Public License.
12  *
13  * Includes code and algorithms from the Zapata library.
14  *
15  */
16
17 #ifndef _CALLERID_H
18 #define _CALLERID_H
19
20 #define MAX_CALLERID_SIZE 32000
21
22 #define CID_PRIVATE_NAME                (1 << 0)
23 #define CID_PRIVATE_NUMBER              (1 << 1)
24 #define CID_UNKNOWN_NAME                (1 << 2)
25 #define CID_UNKNOWN_NUMBER              (1 << 3)
26
27 struct callerid_state;
28 typedef struct callerid_state CIDSTATE;
29
30 /* CallerID Initialization */
31 extern void callerid_init(void);
32
33 /* Generates a CallerID FSK stream in ulaw
34    format suitable for transmission.  Assumes 8000 Hz.  Use NULL
35    for no number or "P" for "private".  If "buf" is supplied it will
36    use that buffer instead of allocating its own.  "buf" must be
37    at least 32000 bytes in size if you want to be sure you dont
38    have an overrun however.  Returns # of bytes written to buffer.
39    Use "O" or "P" in name */
40 extern int callerid_generate(unsigned char *buf, char *number, char *name, int flags);
41
42 /* Create a callerID state machine */
43 extern struct callerid_state *callerid_new(void);
44
45 /* Read samples into the state machine.  Returns -1 on error, 0 for "needs more samples", and 1 for
46    callerID stuff complete */
47 extern int callerid_feed(struct callerid_state *cid, unsigned char *buf, int samples);
48
49 /* Extract info out of callerID state machine.  Flags are listed above */
50 void callerid_get(struct callerid_state *cid, char **number, char **name, int *flags);
51
52 /* Free a callerID state */
53 extern void callerid_free(struct callerid_state *cid);
54
55 /* Generate Caller-ID spill from the "callerid" field of asterisk (in e-mail address like format) */
56 extern int ast_callerid_generate(unsigned char *buf, char *astcid);
57
58 /* Destructively parse inbuf into name and location (or number) */
59 extern int ast_callerid_parse(char *inbuf, char **name, char **location);
60
61 /* Shrink a phone number in place to just digits (more accurately it just removes ()'s, .'s, and -'s...  */
62 extern void ast_shrink_phone_number(char *n);
63
64 /* Check if a string consists only of digits.  Returns non-zero if so */
65 extern int ast_isphonenumber(char *n);
66 #endif