[asterisk-commits] oej: branch group/multiparking r104051 - /team/group/multiparking/main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Feb 23 09:30:14 CST 2008
Author: oej
Date: Sat Feb 23 09:30:13 2008
New Revision: 104051
URL: http://svn.digium.com/view/asterisk?view=rev&rev=104051
Log:
Build configuration
Modified:
team/group/multiparking/main/features.c
Modified: team/group/multiparking/main/features.c
URL: http://svn.digium.com/view/asterisk/team/group/multiparking/main/features.c?view=diff&rev=104051&r1=104050&r2=104051
==============================================================================
--- team/group/multiparking/main/features.c (original)
+++ team/group/multiparking/main/features.c Sat Feb 23 09:30:13 2008
@@ -143,7 +143,7 @@
int parkfindnext;
int parkingtime; /*!< Default parking time */
struct parkeduser *occupiedlots;
- char parkmohclass[MAX_MUSICCLASS]; /*!< Music class used for parking */
+ char mohclass[MAX_MUSICCLASS]; /*!< Music class used for parking */
struct parkinglot_parklist parkings; /*!< List of active parkings in this parkinglot */
};
@@ -2683,8 +2683,11 @@
confvar = confvar->next;
}
- if (!var) /* Default parking lot */
+ if (!var) { /* Default parking lot */
ast_copy_string(parkinglot->parking_con, "parkedcalls", sizeof(parkinglot->parking_con));
+ ast_copy_string(parkinglot->parking_con_dial, "park-dial", sizeof(parkinglot->parking_con_dial));
+ ast_copy_string(parkinglot->mohclass, "default", sizeof(parkinglot->mohclass));
+ }
/* Check for errors */
if (ast_strlen_zero(parkinglot->parking_con)) {
@@ -2770,21 +2773,39 @@
strcpy(old_parking_con, parking_con);
}
+ if (default_parkinglot) {
+ strcpy(old_parking_con, default_parkinglot->parking_con);
+ } else {
+ default_parkinglot = build_parkinglot(DEFAULT_PARKINGLOT, NULL);
+ if (default_parkinglot) {
+ ASTOBJ_WRLOCK(default_parkinglot);
+ default_parkinglot->parking_start = 701;
+ default_parkinglot->parking_stop = 750;
+ default_parkinglot->parking_offset = 0;
+ default_parkinglot->parkfindnext = 0;
+ default_parkinglot->parkingtime = 0;
+ default_parkinglot->occupiedlots = NULL;
+ }
+ }
+ if (default_parkinglot) {
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Configuration of default parkinglot done.\n");
+ } else {
+ ast_log(LOG_ERROR, "Configuration of default parkinglot failed.\n");
+ return -1;
+ }
+
+
/* Reset to defaults */
- strcpy(parking_con, "parkedcalls");
- strcpy(parking_con_dial, "park-dial");
strcpy(parking_ext, "700");
strcpy(pickup_ext, "*8");
- strcpy(parkmohclass, "default");
courtesytone[0] = '\0';
strcpy(xfersound, "beep");
strcpy(xferfailsound, "pbx-invalid");
- parking_start = 701;
- parking_stop = 750;
- parkfindnext = 0;
adsipark = 0;
comebacktoorigin = 1;
- parkaddhints = 0;
+
+ parkaddhints = 0; /*! MVANBAAK-OEJ: Should these be move to the parkinglot structure????? */
parkedcalltransfers = 0;
parkedcallreparking = 0;
@@ -2804,7 +2825,7 @@
if (!strcasecmp(var->name, "parkext")) {
ast_copy_string(parking_ext, var->value, sizeof(parking_ext));
} else if (!strcasecmp(var->name, "context")) {
- ast_copy_string(parking_con, var->value, sizeof(parking_con));
+ ast_copy_string(default_parkinglot->parking_con, var->value, sizeof(default_parkinglot->parking_con));
} else if (!strcasecmp(var->name, "parkingtime")) {
if ((sscanf(var->value, "%d", &parkingtime) != 1) || (parkingtime < 1)) {
ast_log(LOG_WARNING, "%s is not a valid parkingtime\n", var->value);
@@ -2814,12 +2835,14 @@
} else if (!strcasecmp(var->name, "parkpos")) {
if (sscanf(var->value, "%d-%d", &start, &end) != 2) {
ast_log(LOG_WARNING, "Format for parking positions is a-b, where a and b are numbers at line %d of features.conf\n", var->lineno);
- } else {
- parking_start = start;
- parking_stop = end;
+ } else if (default_parkinglot) {
+ default_parkinglot->parking_start = start;
+ default_parkinglot->parking_stop = end;
+ } else
+ ast_log(LOG_WARNING, "No default parking lot!\n");
}
} else if (!strcasecmp(var->name, "findslot")) {
- parkfindnext = (!strcasecmp(var->value, "next"));
+ default_parkinglot->parkfindnext = (!strcasecmp(var->value, "next"));
} else if (!strcasecmp(var->name, "parkinghints")) {
parkaddhints = ast_true(var->value);
} else if (!strcasecmp(var->name, "parkedcalltransfers")) {
@@ -2886,7 +2909,7 @@
} else if (!strcasecmp(var->name, "comebacktoorigin")) {
comebacktoorigin = ast_true(var->value);
} else if (!strcasecmp(var->name, "parkedmusicclass")) {
- ast_copy_string(parkmohclass, var->value, sizeof(parkmohclass));
+ ast_copy_string(default_parkinglot->mohclass, var->value, sizeof(default_parkinglot->mohclass));
}
}
@@ -2982,6 +3005,16 @@
ctg = NULL;
while ((ctg = ast_category_browse(cfg, ctg))) {
+ /* Is this a parkinglot definition ? */
+ if (!strncasecmp(ctg, "parkinglot_", strlen("parkinglot_"))) {
+ ast_debug(2, "Found configuration section %s, assume parking context\n", ctg);
+ if(!build_parkinglot(ctg, ast_variable_browse(cfg, ctg)))
+ ast_log(LOG_ERROR, "Could not build parking lot %s. Configuration error.\n", ctg);
+ else
+ ast_debug(1, "Configured parking context %s\n", ctg);
+ continue;
+ }
+ /* No, check if it's a group */
for (i = 0; i < ARRAY_LEN(categories); i++) {
if (!strcasecmp(categories[i], ctg))
break;
@@ -3020,15 +3053,17 @@
ast_debug(1, "Removed old parking extension %s@%s\n", old_parking_ext, old_parking_con);
}
- if (!(con = ast_context_find(parking_con)) && !(con = ast_context_create(NULL, parking_con, registrar))) {
- ast_log(LOG_ERROR, "Parking context '%s' does not exist and unable to create\n", parking_con);
- return -1;
+ if (!(con = ast_context_find(default_parkinglot->parking_con))) {
+ if (!(con = ast_context_create(NULL, default_parkinglot->parking_con, registrar))) {
+ ast_log(LOG_ERROR, "Parking context '%s' does not exist and unable to create\n", default_parkinglot->parking_con);
+ return -1;
+ }
}
res = ast_add_extension2(con, 1, ast_parking_ext(), 1, NULL, NULL, parkcall, NULL, NULL, registrar);
if (parkaddhints)
- park_add_hints(parking_con, parking_start, parking_stop);
+ park_add_hints(default_parkinglot->parking_con, default_parkinglot->parking_start, default_parkinglot->parking_stop);
if (!res)
- notify_metermaids(ast_parking_ext(), parking_con, AST_DEVICE_INUSE);
+ notify_metermaids(ast_parking_ext(), default_parkinglot->parking_con, AST_DEVICE_INUSE);
return res;
}
More information about the asterisk-commits
mailing list