00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "asterisk.h"
00025
00026 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 305838 $")
00027
00028 #include "asterisk/module.h"
00029 #include "asterisk/channel.h"
00030 #include "asterisk/ccss.h"
00031 #include "asterisk/pbx.h"
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 static int acf_cc_read(struct ast_channel *chan, const char *name, char *data,
00068 char *buf, size_t buf_len)
00069 {
00070 struct ast_cc_config_params *cc_params;
00071 int res;
00072
00073 ast_channel_lock(chan);
00074 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
00075 ast_channel_unlock(chan);
00076 return -1;
00077 }
00078
00079 res = ast_cc_get_param(cc_params, data, buf, buf_len);
00080 ast_channel_unlock(chan);
00081 return res;
00082 }
00083
00084 static int acf_cc_write(struct ast_channel *chan, const char *cmd, char *data,
00085 const char *value)
00086 {
00087 struct ast_cc_config_params *cc_params;
00088 int res;
00089
00090 ast_channel_lock(chan);
00091 if (!(cc_params = ast_channel_get_cc_config_params(chan))) {
00092 ast_channel_unlock(chan);
00093 return -1;
00094 }
00095
00096 res = ast_cc_set_param(cc_params, data, value);
00097 ast_channel_unlock(chan);
00098 return res;
00099 }
00100
00101 static struct ast_custom_function cc_function = {
00102 .name = "CALLCOMPLETION",
00103 .read = acf_cc_read,
00104 .write = acf_cc_write,
00105 };
00106
00107 static int unload_module(void)
00108 {
00109 return ast_custom_function_unregister(&cc_function);
00110 }
00111
00112 static int load_module(void)
00113 {
00114 return ast_custom_function_register(&cc_function) == 0 ? AST_MODULE_LOAD_SUCCESS : AST_MODULE_LOAD_DECLINE;
00115 }
00116
00117 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Call Control Configuration Function");