** **
\*****************************************************************************/
-#include <stdio.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
#include "main.h"
VBOX_STATE_DELETE_DONE, /* tell that message is delete */
};
-char *months_english[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
-char *months_german[] = {"Jan","Feb","Maer","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"};
+const char *months_english[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
+const char *months_german[] = {"Jan","Feb","Maer","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"};
struct vbox_menu {
- char digit;
- char *english;
- char *german;
- } vbox_menu[] = {
+ const char digit;
+ const char *english;
+ const char *german;
+} vbox_menu[] = {
{'1', "<< previous", "<< zurueck"},
{'2', "-> play", "-> anhoeren"},
{'3', ">> next", ">> vor"},
{'9', "X delete", "X loeschen"},
{'0', "* call", "* anrufen"},
{'\0', NULL, NULL}
- };
+};
/*
* initialize the vbox. this is called at process_dialing(), when the VBOX_PLAY
{
int language = e_ext.vbox_language;
struct route_param *rparam;
- struct message *message;
+ struct lcr_msg *message;
struct port_list *portlist = ea_endpoint->ep_portlist;
/* get extension */
- SCPY(e_vbox, e_terminal);
+ SCPY(e_vbox, e_ext.number);
if ((rparam = routeparam(e_action, PARAM_EXTENSION)))
SCPY(e_vbox, rparam->string_value);
if (e_vbox[0] == '\0')
/* connect, but still accept more digits */
new_state(EPOINT_STATE_IN_OVERLAP);
- if (e_terminal[0])
+ if (e_ext.number[0])
e_dtmf = 1;
message = message_create(ea_endpoint->ep_serial, portlist->port_id, EPOINT_TO_PORT, MESSAGE_CONNECT);
message_put(message);
- logmessage(message);
+ logmessage(message->type, &message->param, portlist->port_id, DIRECTION_OUT);
/* initialize the vbox */
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) initializing answering vbox state\n", ea_endpoint->ep_serial);
e_vbox_index_num = 0;
- SPRINT(filename, "%s/%s/%s/vbox/index", INSTALL_DATA, options.extensions_dir, e_vbox);
+ SPRINT(filename, "%s/%s/vbox/index", EXTENSION_DATA, e_vbox);
if (!(fp = fopen(filename, "r")))
{
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) no files in index\n", ea_endpoint->ep_serial);
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) removing entrie #%d\n", ea_endpoint->ep_serial, num);
- SPRINT(filename1, "%s/%s/%s/vbox/index", INSTALL_DATA, options.extensions_dir, e_vbox);
- SPRINT(filename2, "%s/%s/%s/vbox/index-temp", INSTALL_DATA, options.extensions_dir, e_vbox);
+ SPRINT(filename1, "%s/%s/vbox/index", EXTENSION_DATA, e_vbox);
+ SPRINT(filename2, "%s/%s/vbox/index-temp", EXTENSION_DATA, e_vbox);
if (!(fpr = fopen(filename1, "r")))
{
return;
if (e_vbox_state == VBOX_STATE_RECORD_RECORD)
{
- if (e_extdialing[0] == '1')
+ if (e_extdialing[0] == '1' || e_extdialing[0] == '0')
{
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) stopping recording of announcement.\n", ea_endpoint->ep_serial);
port = find_port_id(portlist->port_id);
if (port)
- port->close_record(6000); /* append beep */
+ port->close_record((e_extdialing[0]=='1')?6000:0, 2000); /* append beep */
goto record_ask;
}
goto done;
port = find_port_id(portlist->port_id);
if (port)
{
- port->close_record(6000); /* append beep */
- port->open_record(CODEC_MONO, 1, 5000, e_terminal, 0, "", 0); /* record announcement, skip the first 5000 samples */
+ port->close_record(0,0);
+ port->open_record(CODEC_MONO, 1, 4000, e_ext.number, 0, "", 0); /* record announcement, skip the first 4000 samples */
}
e_vbox_state = VBOX_STATE_RECORD_RECORD;
if (e_ext.vbox_language)
case '1':
PDEBUG(DEBUG_EPOINT, "EPOINT(%d) do store/delete.\n", ea_endpoint->ep_serial);
- SPRINT(filename, "%s/%s/%s/vbox/%s", INSTALL_DATA, options.extensions_dir, e_vbox, e_vbox_index_file);
+ SPRINT(filename, "%s/%s/vbox/%s", EXTENSION_DATA, e_vbox, e_vbox_index_file);
/* move file */
if (e_vbox_state == VBOX_STATE_STORE_ASK)
{
- SPRINT(filename, "%s/%s/%s/recordings", INSTALL_DATA, options.extensions_dir, e_vbox);
+ SPRINT(filename, "%s/%s/recordings", EXTENSION_DATA, e_vbox);
if (mkdir(filename, 0755) < 0)
{
if (errno != EEXIST)
goto done;
}
}
- SPRINT(filename2, "%s/%s/%s/recordings/%s", INSTALL_DATA, options.extensions_dir, e_vbox, e_vbox_index_file);
+ SPRINT(filename2, "%s/%s/recordings/%s", EXTENSION_DATA, e_vbox, e_vbox_index_file);
rename(filename, filename2);
e_vbox_state = VBOX_STATE_STORE_DONE;
if (e_ext.vbox_language)
if (e_vbox_index_callerid[0]!='\0' && !!strcmp(e_vbox_index_callerid,"anonymous") && !!strcmp(e_vbox_index_callerid,"unknown"))
{
set_tone(portlist, "dialing");
- SPRINT(e_dialinginfo.number, "extern:%s", e_vbox_index_callerid);
- e_extdialing = e_dialinginfo.number;
+ SPRINT(e_dialinginfo.id, "extern:%s", e_vbox_index_callerid);
+ e_extdialing = e_dialinginfo.id;
e_action = NULL;
process_dialing();
return;
if (e_vbox_display_refresh && e_ext.vbox_display!=VBOX_DISPLAY_OFF)
{
char counter[32];
- struct message *message;
+ struct lcr_msg *message;
SPRINT(counter, "%02d:%02d", e_vbox_counter/60, e_vbox_counter%60);
if (e_vbox_counter_max)
e_vbox_display_refresh = 0;
message = message_create(ea_endpoint->ep_serial, ea_endpoint->ep_portlist->port_id, EPOINT_TO_PORT, MESSAGE_NOTIFY);
SPRINT(message->param.notifyinfo.display, e_vbox_display, counter);
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s pending display:%s\n", ea_endpoint->ep_serial, e_terminal, message->param.notifyinfo.display);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s pending display:%s\n", ea_endpoint->ep_serial, e_ext.number, message->param.notifyinfo.display);
message_put(message);
- logmessage(message);
+ logmessage(message->type, &message->param, ea_endpoint->ep_portlist->port_id, DIRECTION_OUT);
}
}
char buffer[32];
int language = e_ext.vbox_language;
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s end of file during state: %d\n", ea_endpoint->ep_serial, e_terminal, e_vbox_state);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s end of file during state: %d\n", ea_endpoint->ep_serial, e_ext.number, e_vbox_state);
switch(e_vbox_state)
{
break;
default:
- PERROR("vbox_message_eof(ep%d): terminal %s unknown state: %d\n", ea_endpoint->ep_serial, e_terminal, e_vbox_state);
+ PERROR("vbox_message_eof(ep%d): terminal %s unknown state: %d\n", ea_endpoint->ep_serial, e_ext.number, e_vbox_state);
}
}
* set the given vbox-tone with full path (without appending)
* the tone is played and after eof, a message is received
*/
-void EndpointAppPBX::set_tone_vbox(char *tone)
+void EndpointAppPBX::set_tone_vbox(const char *tone)
{
- struct message *message;
+ struct lcr_msg *message;
if (tone == NULL)
tone = "";
PERROR("EPOINT(%d) no portlist\n", ea_endpoint->ep_serial);
}
message = message_create(ea_endpoint->ep_serial, ea_endpoint->ep_portlist->port_id, EPOINT_TO_PORT, MESSAGE_VBOX_TONE);
- SCPY(message->param.tone.dir, (char *)((e_ext.vbox_language)?"vbox_german":"vbox_english"));
+ SCPY(message->param.tone.dir, ((e_ext.vbox_language) ? "vbox_german" : "vbox_english"));
SCPY(message->param.tone.name, tone);
message_put(message);
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set tone '%s'\n", ea_endpoint->ep_serial, e_terminal, tone);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set tone '%s'\n", ea_endpoint->ep_serial, e_ext.number, tone);
}
* the current counter value is also received by a message
* set the offset in seconds of the current recording
*/
-void EndpointAppPBX::set_play_vbox(char *file, int offset)
+void EndpointAppPBX::set_play_vbox(const char *file, int offset)
{
char filename[256];
- struct message *message;
+ struct lcr_msg *message;
- SPRINT(filename, "%s/%s/%s/vbox/%s", INSTALL_DATA, options.extensions_dir, e_vbox, file);
+ SPRINT(filename, "%s/%s/vbox/%s", EXTENSION_DATA, e_vbox, file);
/* remove .wav */
if (!strcmp(filename+strlen(filename)-4, ".wav")) /* filename is always more than 4 digits long */
message->param.play.offset = offset;
message_put(message);
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set play '%s'\n", ea_endpoint->ep_serial, e_terminal, filename);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set play '%s'\n", ea_endpoint->ep_serial, e_ext.number, filename);
}
*/
void EndpointAppPBX::set_play_speed(int speed)
{
- struct message *message;
+ struct lcr_msg *message;
if (!ea_endpoint->ep_portlist)
{
message->param.speed = speed;
message_put(message);
- PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set speed '%d'\n", ea_endpoint->ep_serial, e_terminal, speed);
+ PDEBUG(DEBUG_EPOINT, "EPOINT(%d) terminal %s set speed '%d'\n", ea_endpoint->ep_serial, e_ext.number, speed);
}