#include <sys/socket.h>
#include <sys/un.h>
#include <curses.h>
+#include "config.h"
char socket_name[128];
apppbx->e_dialinginfo.sending_complete = 1;
apppbx->new_state(PORT_STATE_OUT_SETUP);
- apppbx->out_setup();
+ apppbx->out_setup(0);
return(0);
}
/*
* this function is called for response whenever a call state changes.
*/
-void admin_call_response(int adminid, int message, const char *connected, int cause, int location, int notify)
+void admin_call_response(int adminid, int message, const char *connected, int cause, int location, int notify_progress)
{
struct admin_list *admin;
struct admin_queue *response, **responsep; /* response pointer */
SCPY(response->am[0].u.call.callerid, connected);
response->am[0].u.call.cause = cause;
response->am[0].u.call.location = location;
- response->am[0].u.call.notify = notify;
+ response->am[0].u.call.notify_progress = notify_progress;
/* attach to response chain */
*responsep = response;
struct interface *interface;
struct interface_port *ifport;
struct mISDNport *mISDNport;
+ struct select_channel *selchannel;
int i;
int num;
int anybusy;
response->am[num].u.i.slip_rx = mISDNport->slip_rx;
/* channels */
response->am[num].u.i.channels = mISDNport->b_num;
- /* channel info */
+ /* channel selection */
+ selchannel = ifport->out_channel;
+ if (ifport->channel_force)
+ SCAT(response->am[num].u.i.out_channel, "force");
+ while (selchannel) {
+ if (response->am[num].u.i.out_channel[0])
+ SCAT(response->am[num].u.i.out_channel, ",");
+ switch (selchannel->channel) {
+ case CHANNEL_NO:
+ SCAT(response->am[num].u.i.out_channel, "no");
+ break;
+ case CHANNEL_ANY:
+ SCAT(response->am[num].u.i.out_channel, "any");
+ break;
+ case CHANNEL_FREE:
+ SCAT(response->am[num].u.i.out_channel, "free");
+ break;
+ default:
+ SPRINT(strchr(response->am[num].u.i.out_channel, '\0'), "%d", selchannel->channel);
+ }
+ selchannel = selchannel->next;
+ }
+ selchannel = ifport->in_channel;
+ while (selchannel) {
+ switch (selchannel->channel) {
+ case CHANNEL_FREE:
+ SCAT(response->am[num].u.i.in_channel, "free");
+ break;
+ default:
+ SPRINT(strchr(response->am[num].u.i.in_channel, '\0'), "%d", selchannel->channel);
+ }
+ selchannel = selchannel->next;
+ }
+ /* channel state */
i = 0;
anybusy = 0;
while(i < mISDNport->b_num) {
response->am[num].u.p.state = ADMIN_STATE_IDLE;
}
/* isdn */
- if ((port->p_type&PORT_CLASS_mISDN_MASK) == PORT_CLASS_mISDN_DSS1) {
+ if ((port->p_type & PORT_CLASS_mISDN_MASK) == PORT_CLASS_DSS1) {
response->am[num].u.p.isdn = 1;
pdss1 = (class Pdss1 *)port;
response->am[num].u.p.isdn_chan = pdss1->p_m_b_channel;