00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "asterisk.h"
00029
00030 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 114243 $")
00031
00032 #include "asterisk/lock.h"
00033 #include "asterisk/file.h"
00034 #include "asterisk/channel.h"
00035 #include "asterisk/pbx.h"
00036 #include "asterisk/module.h"
00037 #include "asterisk/translate.h"
00038 #include "asterisk/image.h"
00039 #include "asterisk/callerid.h"
00040
00041 static char *app2 = "SetCallerPres";
00042
00043 static char *synopsis2 = "Set CallerID Presentation";
00044
00045
00046 static char *descrip2 =
00047 " SetCallerPres(presentation): Set Caller*ID presentation on a call.\n"
00048 " Valid presentations are:\n"
00049 "\n"
00050 " allowed_not_screened : Presentation Allowed, Not Screened\n"
00051 " allowed_passed_screen : Presentation Allowed, Passed Screen\n"
00052 " allowed_failed_screen : Presentation Allowed, Failed Screen\n"
00053 " allowed : Presentation Allowed, Network Number\n"
00054 " prohib_not_screened : Presentation Prohibited, Not Screened\n"
00055 " prohib_passed_screen : Presentation Prohibited, Passed Screen\n"
00056 " prohib_failed_screen : Presentation Prohibited, Failed Screen\n"
00057 " prohib : Presentation Prohibited, Network Number\n"
00058 " unavailable : Number Unavailable\n"
00059 "\n"
00060 ;
00061
00062 static int setcallerid_pres_exec(struct ast_channel *chan, void *data)
00063 {
00064 int pres = -1;
00065 static int deprecated = 0;
00066
00067 if (!deprecated) {
00068 deprecated = 1;
00069 ast_log(LOG_WARNING, "SetCallerPres is deprecated. Please use Set(CALLERPRES()=%s) instead.\n", (char *)data);
00070 }
00071
00072
00073 if (sscanf(data, "%d", &pres) != 1 || pres < 0 || pres > 255 || (pres & 0x9c)) {
00074 pres = ast_parse_caller_presentation(data);
00075 }
00076
00077 if (pres < 0) {
00078 ast_log(LOG_WARNING, "'%s' is not a valid presentation (see 'show application SetCallerPres')\n",
00079 (char *) data);
00080 return 0;
00081 }
00082
00083 chan->cid.cid_pres = pres;
00084 return 0;
00085 }
00086
00087 static int unload_module(void)
00088 {
00089 return ast_unregister_application(app2);
00090 }
00091
00092 static int load_module(void)
00093 {
00094 return ast_register_application(app2, setcallerid_pres_exec, synopsis2, descrip2);
00095 }
00096
00097 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Set CallerID Presentation Application");