aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-06-07 21:13:35 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-06-07 21:13:35 +0000
commit23f1ab6215f38fe2426ea0e084a18cf3cce90f65 (patch)
tree1533432b127f3b2949bf2778d48423050bd4cec4 /channels
parent42120ed17692a8210049b3b636758c443774be9a (diff)
save 168 bytes per zaptel channel private structure (using bitfields)
save 28 bytes per zaptel subchannel structure (using bitfields) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5878 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_zap.c219
1 files changed, 112 insertions, 107 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 1fa4d4a8e..c46dce26c 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -368,42 +368,42 @@ static int r2prot = -1;
struct zt_pri {
pthread_t master; /* Thread of master */
ast_mutex_t lock; /* Mutex */
- char idleext[AST_MAX_EXTENSION]; /* Where to idle extra calls */
- char idlecontext[AST_MAX_EXTENSION]; /* What context to use for idle */
- char idledial[AST_MAX_EXTENSION]; /* What to dial before dumping */
+ char idleext[AST_MAX_EXTENSION]; /* Where to idle extra calls */
+ char idlecontext[AST_MAX_EXTENSION]; /* What context to use for idle */
+ char idledial[AST_MAX_EXTENSION]; /* What to dial before dumping */
int minunused; /* Min # of channels to keep empty */
int minidle; /* Min # of "idling" calls to keep active */
int nodetype; /* Node type */
int switchtype; /* Type of switch to emulate */
- int nsf; /* Network-Specific Facilities */
+ int nsf; /* Network-Specific Facilities */
int dialplan; /* Dialing plan */
int localdialplan; /* Local dialing plan */
- char internationalprefix[10]; /* country access code ('00' for european dialplans) */
- char nationalprefix[10]; /* area access code ('0' for european dialplans) */
- char localprefix[20]; /* area access code + area code ('0'+area code for european dialplans) */
- char privateprefix[20]; /* for private dialplans */
- char unknownprefix[20]; /* for unknown dialplans */
- int dchannels[NUM_DCHANS]; /* What channel are the dchannels on */
+ char internationalprefix[10]; /* country access code ('00' for european dialplans) */
+ char nationalprefix[10]; /* area access code ('0' for european dialplans) */
+ char localprefix[20]; /* area access code + area code ('0'+area code for european dialplans) */
+ char privateprefix[20]; /* for private dialplans */
+ char unknownprefix[20]; /* for unknown dialplans */
+ int dchannels[NUM_DCHANS]; /* What channel are the dchannels on */
int trunkgroup; /* What our trunkgroup is */
- int mastertrunkgroup; /* What trunk group is our master */
+ int mastertrunkgroup; /* What trunk group is our master */
int prilogicalspan; /* Logical span number within trunk group */
int numchans; /* Num of channels we represent */
int overlapdial; /* In overlap dialing mode */
int facilityenable; /* Enable facility IEs */
- struct pri *dchans[NUM_DCHANS]; /* Actual d-channels */
- int dchanavail[NUM_DCHANS]; /* Whether each channel is available */
+ struct pri *dchans[NUM_DCHANS]; /* Actual d-channels */
+ int dchanavail[NUM_DCHANS]; /* Whether each channel is available */
struct pri *pri; /* Currently active D-channel */
int debug;
- int fds[NUM_DCHANS]; /* FD's for d-channels */
+ int fds[NUM_DCHANS]; /* FD's for d-channels */
int offset;
int span;
int resetting;
int resetpos;
time_t lastreset; /* time when unused channels were last reset */
long resetinterval; /* Interval (in seconds) for resetting unused channels */
- struct zt_pvt *pvts[MAX_CHANNELS]; /* Member channel pvt structs */
- struct zt_pvt *crvs; /* Member CRV structs */
- struct zt_pvt *crvend; /* Pointer to end of CRV structs */
+ struct zt_pvt *pvts[MAX_CHANNELS]; /* Member channel pvt structs */
+ struct zt_pvt *crvs; /* Member CRV structs */
+ struct zt_pvt *crvend; /* Pointer to end of CRV structs */
};
@@ -466,14 +466,14 @@ struct zt_subchannel {
int chan;
short buffer[AST_FRIENDLY_OFFSET/2 + READ_SIZE];
struct ast_frame f; /* One frame for each channel. How did this ever work before? */
- int needringing;
- int needbusy;
- int needcongestion;
- int needcallerid;
- int needanswer;
- int needflash;
- int linear;
- int inthreeway;
+ unsigned int needringing:1;
+ unsigned int needbusy:1;
+ unsigned int needcongestion:1;
+ unsigned int needcallerid:1;
+ unsigned int needanswer:1;
+ unsigned int needflash:1;
+ unsigned int linear:1;
+ unsigned int inthreeway:1;
ZT_CONFINFO curconf;
};
@@ -484,28 +484,80 @@ struct zt_subchannel {
static struct zt_pvt {
ast_mutex_t lock;
- struct ast_channel *owner; /* Our current active owner (if applicable) */
- /* Up to three channels can be associated with this call */
+ struct ast_channel *owner; /* Our current active owner (if applicable) */
+ /* Up to three channels can be associated with this call */
- struct zt_subchannel sub_unused; /* Just a safety precaution */
- struct zt_subchannel subs[3]; /* Sub-channels */
- struct zt_confinfo saveconf; /* Saved conference info */
+ struct zt_subchannel sub_unused; /* Just a safety precaution */
+ struct zt_subchannel subs[3]; /* Sub-channels */
+ struct zt_confinfo saveconf; /* Saved conference info */
- struct zt_pvt *slaves[MAX_SLAVES]; /* Slave to us (follows our conferencing) */
- struct zt_pvt *master; /* Master to us (we follow their conferencing) */
- int inconference; /* If our real should be in the conference */
+ struct zt_pvt *slaves[MAX_SLAVES]; /* Slave to us (follows our conferencing) */
+ struct zt_pvt *master; /* Master to us (we follow their conferencing) */
+ int inconference; /* If our real should be in the conference */
int sig; /* Signalling style */
- int radio; /* radio type */
- int firstradio; /* first radio flag */
+ int radio; /* radio type */
float rxgain;
float txgain;
- int tonezone; /* tone zone for this chan, or -1 for default */
- struct zt_pvt *next; /* Next channel in list */
- struct zt_pvt *prev; /* Prev channel in list */
+ int tonezone; /* tone zone for this chan, or -1 for default */
+ struct zt_pvt *next; /* Next channel in list */
+ struct zt_pvt *prev; /* Prev channel in list */
+
+ /* flags */
+ unsigned int adsi:1;
+ unsigned int answeronpolarityswitch:1;
+ unsigned int busydetect:1;
+ unsigned int callreturn:1;
+ unsigned int callwaiting:1;
+ unsigned int callwaitingcallerid:1;
+ unsigned int cancallforward:1;
+ unsigned int canpark:1;
+ unsigned int confirmanswer:1; /* Wait for '#' to confirm answer */
+ unsigned int destroy:1;
+ unsigned int didtdd:1; /* flag to say its done it once */
+ unsigned int dialednone:1;
+ unsigned int dialing:1;
+ unsigned int digital:1;
+ unsigned int dnd:1;
+ unsigned int echobreak:1;
+ unsigned int echocanbridged:1;
+ unsigned int echocanon:1;
+ unsigned int faxhandled:1; /* Has a fax tone already been handled? */
+ unsigned int firstradio:1;
+ unsigned int hanguponpolarityswitch:1;
+ unsigned int hidecallerid;
+ unsigned int ignoredtmf:1;
+ unsigned int immediate:1; /* Answer before getting digits? */
+ unsigned int inalarm:1;
+ unsigned int mate:1; /* flag to say its in MATE mode */
+ unsigned int outgoing:1;
+ unsigned int overlapdial:1;
+ unsigned int permcallwaiting:1;
+ unsigned int permhidecallerid:1; /* Whether to hide our outgoing caller ID or not */
+ unsigned int priindication_oob:1;
+ unsigned int pulse:1;
+ unsigned int pulsedial:1; /* whether a pulse dial phone is detected */
+ unsigned int restrictcid:1; /* Whether restrict the callerid -> only send ANI */
+ unsigned int threewaycalling:1;
+ unsigned int transfer:1;
+ unsigned int use_callerid:1; /* Whether or not to use caller id on this channel */
+ unsigned int use_callingpres:1; /* Whether to use the callingpres the calling switch sends */
+ unsigned int usedistinctiveringdetection:1;
+ unsigned int zaptrcallerid:1; /* should we use the callerid from incoming call on zap transfer or not */
+#if defined(ZAPATA_PRI)
+ unsigned int alerting:1;
+ unsigned int alreadyhungup:1;
+ unsigned int isidlecall:1;
+ unsigned int resetting:1;
+ unsigned int setup_ack:1;
+#endif
+#if defined(ZAPATA_R2)
+ unsigned int hasr2call:1;
+ unsigned int r2blocked:1;
+ unsigned int sigchecked:1;
+#endif
struct zt_distRings drings;
- int usedistinctiveringdetection;
char context[AST_MAX_EXTENSION];
char defcontext[AST_MAX_EXTENSION];
@@ -513,12 +565,12 @@ static struct zt_pvt {
char language[MAX_LANGUAGE];
char musicclass[MAX_LANGUAGE];
char cid_num[AST_MAX_EXTENSION];
- int cid_ton; /* Type Of Number (TON) */
+ int cid_ton; /* Type Of Number (TON) */
char cid_name[AST_MAX_EXTENSION];
char lastcid_num[AST_MAX_EXTENSION];
char lastcid_name[AST_MAX_EXTENSION];
- char *origcid_num; /* malloced original callerid */
- char *origcid_name; /* malloced original callerid */
+ char *origcid_num; /* malloced original callerid */
+ char *origcid_name; /* malloced original callerid */
char callwait_num[AST_MAX_EXTENSION];
char callwait_name[AST_MAX_EXTENSION];
char rdnis[AST_MAX_EXTENSION];
@@ -526,89 +578,49 @@ static struct zt_pvt {
unsigned int group;
int law;
int confno; /* Our conference */
- int confusers; /* Who is using our conference */
- int propconfno; /* Propagated conference number */
+ int confusers; /* Who is using our conference */
+ int propconfno; /* Propagated conference number */
ast_group_t callgroup;
ast_group_t pickupgroup;
- int immediate; /* Answer before getting digits? */
- int channel; /* Channel Number or CRV */
+ int channel; /* Channel Number or CRV */
int span; /* Span number */
- int dialing;
- time_t guardtime; /* Must wait this much time before using for new call */
- int dialednone;
- int use_callerid; /* Whether or not to use caller id on this channel */
- int cid_signalling; /* CID signalling type bell202 or v23 */
- int cid_start; /* CID start indicator, polarity or ring */
- int hidecallerid;
- int callreturn;
- int permhidecallerid; /* Whether to hide our outgoing caller ID or not */
- int restrictcid; /* Whether restrict the callerid -> only send ANI */
- int use_callingpres; /* Whether to use the callingpres the calling switch sends */
- int callingpres; /* The value of callling presentation that we're going to use when placing a PRI call */
- int callwaitingrepeat; /* How many samples to wait before repeating call waiting */
- int cidcwexpire; /* When to expire our muting for CID/CW */
+ time_t guardtime; /* Must wait this much time before using for new call */
+ int cid_signalling; /* CID signalling type bell202 or v23 */
+ int cid_start; /* CID start indicator, polarity or ring */
+ int callingpres; /* The value of callling presentation that we're going to use when placing a PRI call */
+ int callwaitingrepeat; /* How many samples to wait before repeating call waiting */
+ int cidcwexpire; /* When to expire our muting for CID/CW */
unsigned char *cidspill;
int cidpos;
int cidlen;
int ringt;
int stripmsd;
- int callwaiting;
int callwaitcas;
int callwaitrings;
int echocancel;
int echotraining;
- int pulse;
- int echocanbridged;
- int echocanon;
- int echobreak;
char echorest[20];
- int permcallwaiting;
- int callwaitingcallerid;
- int threewaycalling;
- int transfer;
- int canpark;
- int digital;
- int outgoing;
- int dnd;
- int busydetect;
int busycount;
int callprogress;
- int priindication_oob;
- struct timeval flashtime; /* Last flash-hook time */
+ struct timeval flashtime; /* Last flash-hook time */
struct ast_dsp *dsp;
int cref; /* Call reference number */
ZT_DIAL_OPERATION dop;
- int whichwink; /* SIG_FEATDMF_TA Which wink are we on? */
+ int whichwink; /* SIG_FEATDMF_TA Which wink are we on? */
char finaldial[64];
- int destroy;
- int ignoredtmf;
- int inalarm;
char accountcode[AST_MAX_ACCOUNT_CODE]; /* Account code */
- int amaflags; /* AMA Flags */
- char didtdd; /* flag to say its done it once */
- struct tdd_state *tdd; /* TDD flag */
- int adsi;
- int cancallforward;
+ int amaflags; /* AMA Flags */
+ struct tdd_state *tdd; /* TDD flag */
char call_forward[AST_MAX_EXTENSION];
char mailbox[AST_MAX_EXTENSION];
char dialdest[256];
int onhooktime;
int msgstate;
-
- int confirmanswer; /* Wait for '#' to confirm answer */
- int distinctivering; /* Which distinctivering to use */
- int cidrings; /* Which ring to deliver CID on */
-
- int faxhandled; /* Has a fax tone already been handled? */
-
- char mate; /* flag to say its in MATE mode */
- int pulsedial; /* whether a pulse dial phone is detected */
- int dtmfrelax; /* whether to run in relaxed DTMF mode */
+ int distinctivering; /* Which distinctivering to use */
+ int cidrings; /* Which ring to deliver CID on */
+ int dtmfrelax; /* whether to run in relaxed DTMF mode */
int fake_event;
- int zaptrcallerid; /* should we use the callerid from incoming call on zap transfer or not */
int emdigitwait;
- int answeronpolarityswitch;
- int hanguponpolarityswitch;
int polarityonanswerdelay;
struct timeval polaritydelaytv;
int sendcalleridafter;
@@ -617,24 +629,17 @@ static struct zt_pvt {
struct zt_pvt *bearer;
struct zt_pvt *realcall;
q931_call *call;
- int isidlecall;
- int resetting;
int prioffset;
int logicalspan;
- int alreadyhungup;
int proceeding;
- int alerting;
- int setup_ack; /* whether we received SETUP_ACKNOWLEDGE or not */
int dsp_features;
#endif
#ifdef ZAPATA_R2
int r2prot;
mfcr2_t *r2;
- int hasr2call;
- int r2blocked;
- int sigchecked;
#endif
int polarity;
+
} *iflist = NULL, *ifend = NULL;
static struct ast_channel *zt_request(const char *type, int format, void *data, int *cause);
@@ -4209,7 +4214,7 @@ struct ast_frame *zt_read(struct ast_channel *ast)
p->subs[index].linear = 0;
res = zt_setlinear(p->subs[index].zfd, p->subs[index].linear);
if (res)
- ast_log(LOG_WARNING, "Unable to set channel %d (index %d) to campanded mode.\n", p->channel, index);
+ ast_log(LOG_WARNING, "Unable to set channel %d (index %d) to companded mode.\n", p->channel, index);
}
} else {
ast_log(LOG_WARNING, "Don't know how to read frames in format %s\n", ast_getformatname(ast->rawreadformat));