ixj.c
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:219k
- ixj_play_stop(board);
- ixj_play_stop(arg);
- idle(board);
- idle(arg);
- break;
- case IXJCTL_INTERCOM_START:
- ixj[board].intercom = arg;
- ixj[arg].intercom = board;
- ixj_play_start(arg);
- ixj_record_start(board);
- ixj_play_start(board);
- ixj_record_start(arg);
- idle(board);
- idle(arg);
- break;
- }
- return retval;
- }
- static int ixj_fasync(int fd, struct file *file_p, int mode)
- {
- IXJ *j = &ixj[NUM(file_p->f_dentry->d_inode->i_rdev)];
- return fasync_helper(fd, file_p, mode, &j->async_queue);
- }
- struct file_operations ixj_fops =
- {
- NULL, /* ixj_lseek */
- ixj_enhanced_read,
- ixj_enhanced_write,
- NULL, /* ixj_readdir */
- ixj_poll,
- ixj_ioctl,
- NULL, /* ixj_mmap */
- // ixj_open,
- NULL, /* ixj_open */
- NULL, /* ixj_flush */
- ixj_release,
- NULL, /* ixj_fsync */
- ixj_fasync, /* ixj_fasync */
- NULL, /* media change */
- NULL, /* revalidate */
- NULL /* lock */
- };
- static int ixj_linetest(int board)
- {
- unsigned long jifwait;
- IXJ *j = &ixj[board];
- if (!j->flags.pots_correct) {
- j->flags.pots_correct = 1; // Testing
- daa_int_read(board); //Clear DAA Interrupt flags
- //
- // Hold all relays in the normally de-energized position.
- //
- j->pld_slicw.bits.rly1 = 0;
- j->pld_slicw.bits.rly2 = 0;
- j->pld_slicw.bits.rly3 = 0;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- j->pld_scrw.bits.daafsyncen = 0; // Turn off DAA Frame Sync
- outb_p(j->pld_scrw.byte, j->XILINXbase);
- j->pld_slicr.byte = inb_p(j->XILINXbase + 0x01);
- if (j->pld_slicr.bits.potspstn) {
- j->flags.pots_pstn = 1;
- j->flags.pots_correct = 0;
- LED_SetState(0x4, board);
- } else {
- j->flags.pots_pstn = 0;
- j->pld_slicw.bits.rly1 = 0;
- j->pld_slicw.bits.rly2 = 0;
- j->pld_slicw.bits.rly3 = 1;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- j->pld_scrw.bits.daafsyncen = 0; // Turn off DAA Frame Sync
- outb_p(j->pld_scrw.byte, j->XILINXbase);
- daa_set_mode(board, SOP_PU_CONVERSATION);
- jifwait = jiffies + hertz;
- while (time_before(jiffies, jifwait)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- daa_int_read(board);
- daa_set_mode(board, SOP_PU_SLEEP);
- if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
- j->flags.pots_correct = 0; // Should not be line voltage on POTS port.
- LED_SetState(0x4, board);
- j->pld_slicw.bits.rly3 = 0;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- } else {
- j->flags.pots_correct = 1;
- LED_SetState(0x8, board);
- j->pld_slicw.bits.rly1 = 1;
- j->pld_slicw.bits.rly2 = 0;
- j->pld_slicw.bits.rly3 = 0;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- }
- }
- }
- if (!j->flags.pstn_present) {
- j->pld_slicw.bits.rly3 = 0;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- daa_set_mode(board, SOP_PU_CONVERSATION);
- jifwait = jiffies + hertz;
- while (time_before(jiffies, jifwait)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- daa_int_read(board);
- daa_set_mode(board, SOP_PU_SLEEP);
- if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
- j->flags.pstn_present = 1;
- } else {
- j->flags.pstn_present = 0;
- }
- }
- if (j->flags.pstn_present) {
- if (j->flags.pots_correct) {
- LED_SetState(0xA, board);
- } else {
- LED_SetState(0x6, board);
- }
- } else {
- if (j->flags.pots_correct) {
- LED_SetState(0x9, board);
- } else {
- LED_SetState(0x5, board);
- }
- }
- return j->flags.pstn_present;
- }
- static int ixj_selfprobe(int board)
- {
- unsigned short cmd;
- unsigned long jif;
- BYTES bytes;
- IXJ *j = &ixj[board];
- if (ixjdebug > 0)
- printk(KERN_INFO "Write IDLE to Software Control Registern");
- if (ixj_WriteDSPCommand(0x0000, board)) /* Write IDLE to Software Control Register */
- return -1;
- // The read values of the SSR should be 0x00 for the IDLE command
- if (j->ssr.low || j->ssr.high)
- return -1;
- if (ixjdebug > 0)
- printk(KERN_INFO "Get Device ID Coden");
- if (ixj_WriteDSPCommand(0x3400, board)) /* Get Device ID Code */
- return -1;
- j->dsp.low = j->ssr.low;
- j->dsp.high = j->ssr.high;
- if (ixjdebug > 0)
- printk(KERN_INFO "Get Device Version Coden");
- if (ixj_WriteDSPCommand(0x3800, board)) /* Get Device Version Code */
- return -1;
- j->ver.low = j->ssr.low;
- j->ver.high = j->ssr.high;
- if (!j->cardtype) {
- if (j->dsp.low == 0x21) {
- // j->XILINXbase = j->DSPbase + 0x10;
- bytes.high = bytes.low = inb_p(j->XILINXbase + 0x02);
- outb_p(bytes.low ^ 0xFF, j->XILINXbase + 0x02);
- // Test for Internet LineJACK or Internet PhoneJACK Lite
- bytes.low = inb_p(j->XILINXbase + 0x02);
- if (bytes.low == bytes.high) // Register is read only on
- // Internet PhoneJack Lite
- {
- j->cardtype = 400; // Internet PhoneJACK Lite
- if (check_region(j->XILINXbase, 4)) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", j->XILINXbase);
- return -1;
- }
- request_region(j->XILINXbase, 4, "ixj control");
- j->pld_slicw.pcib.e1 = 1;
- outb_p(j->pld_slicw.byte, j->XILINXbase);
- } else {
- j->cardtype = 300; // Internet LineJACK
- if (check_region(j->XILINXbase, 8)) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", j->XILINXbase);
- return -1;
- }
- request_region(j->XILINXbase, 8, "ixj control");
- }
- } else if (j->dsp.low == 0x22) {
- j->cardtype = 500; // Internet PhoneJACK PCI
- request_region(j->XILINXbase, 4, "ixj control");
- j->pld_slicw.pcib.e1 = 1;
- outb_p(j->pld_slicw.byte, j->XILINXbase);
- } else
- j->cardtype = 100; // Internet PhoneJACK
- } else {
- switch (j->cardtype) {
- case 100: // Internet PhoneJACK
- if (!j->dsp.low != 0x20) {
- j->dsp.high = 0x80;
- j->dsp.low = 0x20;
- ixj_WriteDSPCommand(0x3800, board);
- j->ver.low = j->ssr.low;
- j->ver.high = j->ssr.high;
- }
- break;
- case 300: // Internet LineJACK
- if (check_region(j->XILINXbase, 8)) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", j->XILINXbase);
- return -1;
- }
- request_region(j->XILINXbase, 8, "ixj control");
- break;
- case 400: //Internet PhoneJACK Lite
- case 500: //Internet PhoneJACK PCI
- if (check_region(j->XILINXbase, 4)) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", j->XILINXbase);
- return -1;
- }
- request_region(j->XILINXbase, 4, "ixj control");
- j->pld_slicw.pcib.e1 = 1;
- outb_p(j->pld_slicw.byte, j->XILINXbase);
- break;
- }
- }
- if (j->dsp.low == 0x20 || j->cardtype == 400 || j->cardtype == 500) {
- if (ixjdebug > 0)
- printk(KERN_INFO "Write CODEC config to Software Control Registern");
- if (ixj_WriteDSPCommand(0xC462, board)) /* Write CODEC config to Software Control Register */
- return -1;
- if (ixjdebug > 0)
- printk(KERN_INFO "Write CODEC timing to Software Control Registern");
- if (j->cardtype == 100) {
- cmd = 0x9FF2;
- } else {
- cmd = 0x9FF5;
- }
- if (ixj_WriteDSPCommand(cmd, board)) /* Write CODEC timing to Software Control Register */
- return -1;
- } else {
- if (set_base_frame(board, 30) != 30)
- return -1;
- if (j->cardtype == 300) {
- if (ixjdebug > 0)
- printk(KERN_INFO "Write CODEC config to Software Control Registern");
- if (ixj_WriteDSPCommand(0xC528, board)) /* Write CODEC config to Software Control Register */
- return -1;
- if (ixjdebug > 0)
- printk(KERN_INFO "Turn on the PLD Clock at 8Khzn");
- j->pld_clock.byte = 0;
- outb_p(j->pld_clock.byte, j->XILINXbase + 0x04);
- }
- }
- if (j->dsp.low == 0x20) {
- if (ixjdebug > 0)
- printk(KERN_INFO "Configure GPIO pinsn");
- j->gpio.bytes.high = 0x09;
- /* bytes.low = 0xEF; 0xF7 */
- j->gpio.bits.gpio1 = 1;
- j->gpio.bits.gpio2 = 1;
- j->gpio.bits.gpio3 = 0;
- j->gpio.bits.gpio4 = 1;
- j->gpio.bits.gpio5 = 1;
- j->gpio.bits.gpio6 = 1;
- j->gpio.bits.gpio7 = 1;
- ixj_WriteDSPCommand(ixj[board].gpio.word, board); /* Set GPIO pin directions */
- if (ixjdebug > 0)
- printk(KERN_INFO "Enable SLICn");
- j->gpio.bytes.high = 0x0B;
- j->gpio.bytes.low = 0x00;
- j->gpio.bits.gpio1 = 0;
- j->gpio.bits.gpio2 = 1;
- j->gpio.bits.gpio5 = 0;
- ixj_WriteDSPCommand(ixj[board].gpio.word, board); /* send the ring stop signal */
- j->port = PORT_POTS;
- } else {
- if (j->cardtype == 300) {
- LED_SetState(0x1, board);
- jif = jiffies + (hertz / 10);
- while (time_before(jiffies, jif)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- LED_SetState(0x2, board);
- jif = jiffies + (hertz / 10);
- while (time_before(jiffies, jif)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- LED_SetState(0x4, board);
- jif = jiffies + (hertz / 10);
- while (time_before(jiffies, jif)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- LED_SetState(0x8, board);
- jif = jiffies + (hertz / 10);
- while (time_before(jiffies, jif)) {
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
- }
- LED_SetState(0x0, board);
- daa_get_version(board);
- if (ixjdebug > 0)
- printk("Loading DAA Coefficientsn");
- DAA_Coeff_US(board);
- if (!ixj_daa_write(board))
- printk("DAA write failed on board %dn", board);
- ixj_daa_cid_reset(board);
- j->flags.pots_correct = 0;
- j->flags.pstn_present = 0;
- ixj_linetest(board);
- if (j->flags.pots_correct) {
- j->pld_scrw.bits.daafsyncen = 0; // Turn off DAA Frame Sync
- outb_p(j->pld_scrw.byte, j->XILINXbase);
- j->pld_slicw.bits.rly1 = 1;
- j->pld_slicw.bits.spken = 1;
- outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
- SLIC_SetState(PLD_SLIC_STATE_STANDBY, board);
- j->port = PORT_POTS;
- }
- if (ixjdebug > 0)
- printk(KERN_INFO "Enable Mixern");
- ixj_mixer(0x0000, board); //Master Volume Left unmute 0db
- ixj_mixer(0x0100, board); //Master Volume Right unmute 0db
- ixj_mixer(0x0F00, board); //Mono Out Volume unmute 0db
- ixj_mixer(0x0C00, board); //Mono1 Volume unmute 0db
- ixj_mixer(0x0200, board); //Voice Left Volume unmute 0db
- ixj_mixer(0x0300, board); //Voice Right Volume unmute 0db
- ixj_mixer(0x110C, board); //Voice Left and Right out
- ixj_mixer(0x1401, board); //Mono1 switch on mixer left
- ixj_mixer(0x1501, board); //Mono1 switch on mixer right
- ixj_mixer(0x1700, board); //Clock select
- ixj_mixer(0x1800, board); //ADC Source select
- } else {
- j->port = PORT_POTS;
- SLIC_SetState(PLD_SLIC_STATE_STANDBY, board);
- }
- }
- j->intercom = -1;
- j->framesread = j->frameswritten = 0;
- j->rxreadycheck = j->txreadycheck = 0;
- if (ixj_WriteDSPCommand(0x0000, board)) /* Write IDLE to Software Control Register */
- return -1;
- // The read values of the SSR should be 0x00 for the IDLE command
- if (j->ssr.low || j->ssr.high)
- return -1;
- if (ixjdebug > 0)
- printk(KERN_INFO "Enable Line Monitorn");
- if (ixjdebug > 0)
- printk(KERN_INFO "Set Line Monitor to Asyncronous Moden");
- if (ixj_WriteDSPCommand(0x7E01, board)) // Asynchronous Line Monitor
- return -1;
- if (ixjdebug > 0)
- printk(KERN_INFO "Enable DTMF Detectorsn");
- if (ixj_WriteDSPCommand(0x5151, board)) // Enable DTMF detection
- return -1;
- if (ixj_WriteDSPCommand(0x6E01, board)) // Set Asyncronous Tone Generation
- return -1;
- set_rec_depth(board, 2); // Set Record Channel Limit to 2 frames
- set_play_depth(board, 2); // Set Playback Channel Limit to 2 frames
- j->ex.bits.dtmf_ready = 0;
- j->dtmf_state = 0;
- j->dtmf_wp = ixj[board].dtmf_rp = 0;
- j->rec_mode = ixj[board].play_mode = -1;
- j->flags.ringing = 0;
- j->maxrings = MAXRINGS;
- j->ring_cadence = USA_RING_CADENCE;
- j->drybuffer = 0;
- j->winktime = 320;
- j->flags.dtmf_oob = 0;
- /* must be a device on the specified address */
- /* Register with the Telephony for Linux subsystem */
- j->p.f_op = &ixj_fops;
- j->p.open = ixj_open;
- phone_register_device(&j->p, PHONE_UNIT_ANY);
- add_caps(board);
- return 0;
- }
- int ixj_read_proc(char *buf, char **start, off_t offset, int len, int unused)
- {
- int cnt;
- IXJ *j;
- len = 0;
- len += sprintf(buf + len, "n%s", ixj_c_rcsid);
- len += sprintf(buf + len, "n%s", ixj_h_rcsid);
- len += sprintf(buf + len, "n%s", ixjuser_h_rcsid);
- for (cnt = 0; cnt < IXJMAX; cnt++) {
- j = &ixj[cnt];
- if (j->DSPbase) {
- len += sprintf(buf + len, "nCard Num %d", cnt);
- len += sprintf(buf + len, "nDSP Base Address 0x%4.4x", j->DSPbase);
- if (j->cardtype != 100)
- len += sprintf(buf + len, "nXILINX Base Address 0x%4.4x", j->XILINXbase);
- len += sprintf(buf + len, "nDSP Type %2.2x%2.2x", j->dsp.high, j->dsp.low);
- len += sprintf(buf + len, "nDSP Version %2.2x.%2.2x", j->ver.high, j->ver.low);
- len += sprintf(buf + len, "nSerial Number %8.8x", j->serial);
- switch (j->cardtype) {
- case (100):
- len += sprintf(buf + len, "nCard Type = Internet PhoneJACK");
- break;
- case (300):
- len += sprintf(buf + len, "nCard Type = Internet LineJACK");
- if (j->flags.g729_loaded)
- len += sprintf(buf + len, " w/G.729 A/B");
- break;
- case (400):
- len += sprintf(buf + len, "nCard Type = Internet PhoneJACK Lite");
- if (j->flags.g729_loaded)
- len += sprintf(buf + len, " w/G.729 A/B");
- break;
- case (500):
- len += sprintf(buf + len, "nCard Type = Internet PhoneJACK PCI");
- if (j->flags.g729_loaded)
- len += sprintf(buf + len, " w/G.729 A/B");
- break;
- default:
- len += sprintf(buf + len, "nCard Type = %d", j->cardtype);
- break;
- }
- len += sprintf(buf + len, "nCapabilities %d", j->caps);
- if (j->dsp.low != 0x20)
- len += sprintf(buf + len, "nDSP Processor load %d", j->proc_load);
- // if(j->intercom != -1)
- // len += sprintf(buf+len, "nIntercom call to board %2.2x", j->intercom);
- // len += sprintf(buf+len, "nRead buffer size %d", j->read_buffer_size);
- // len += sprintf(buf+len, "nWrite buffer size %d", j->write_buffer_size);
- len += sprintf(buf + len, "nPlay CODEC ");
- switch (j->play_codec) {
- case G723_63:
- len += sprintf(buf + len, "G.723.1 6.3");
- break;
- case G723_53:
- len += sprintf(buf + len, "G.723.1 5.3");
- break;
- case TS85:
- len += sprintf(buf + len, "TrueSpeech 8.5");
- break;
- case TS48:
- len += sprintf(buf + len, "TrueSpeech 4.8");
- break;
- case TS41:
- len += sprintf(buf + len, "TrueSpeech 4.1");
- break;
- case G728:
- len += sprintf(buf + len, "G.728");
- break;
- case G729:
- len += sprintf(buf + len, "G.729");
- break;
- case ULAW:
- len += sprintf(buf + len, "uLaw");
- break;
- case ALAW:
- len += sprintf(buf + len, "aLaw");
- break;
- case LINEAR16:
- len += sprintf(buf + len, "16 bit Linear");
- break;
- case LINEAR8:
- len += sprintf(buf + len, "8 bit Linear");
- break;
- case WSS:
- len += sprintf(buf + len, "Windows Sound System");
- break;
- default:
- len += sprintf(buf + len, "NO CODEC CHOSEN");
- break;
- }
- // len += sprintf(buf+len, "nPlay Frame Size %d", j->play_frame_size);
- // len += sprintf(buf+len, "nInfo_write.convert_mode = %d", j->Info_write.convert_mode);
- // len += sprintf(buf+len, "nInfo_write.convert_dir = %d", j->Info_write.convert_dir);
- len += sprintf(buf + len, "nRecord CODEC ");
- switch (j->rec_codec) {
- case G723_63:
- len += sprintf(buf + len, "G.723.1 6.3");
- break;
- case G723_53:
- len += sprintf(buf + len, "G.723.1 5.3");
- break;
- case TS85:
- len += sprintf(buf + len, "TrueSpeech 8.5");
- break;
- case TS48:
- len += sprintf(buf + len, "TrueSpeech 4.8");
- break;
- case TS41:
- len += sprintf(buf + len, "TrueSpeech 4.1");
- break;
- case G728:
- len += sprintf(buf + len, "G.728");
- break;
- case G729:
- len += sprintf(buf + len, "G.729");
- break;
- case ULAW:
- len += sprintf(buf + len, "uLaw");
- break;
- case ALAW:
- len += sprintf(buf + len, "aLaw");
- break;
- case LINEAR16:
- len += sprintf(buf + len, "16 bit Linear");
- break;
- case LINEAR8:
- len += sprintf(buf + len, "8 bit Linear");
- break;
- case WSS:
- len += sprintf(buf + len, "Windows Sound System");
- break;
- default:
- len += sprintf(buf + len, "NO CODEC CHOSEN");
- break;
- }
- // len += sprintf(buf+len, "nRecord Frame Size %d", j->rec_frame_size);
- switch (j->aec_level) {
- case AEC_OFF:
- len += sprintf(buf + len, "n AEC OFF");
- break;
- case AEC_LOW:
- len += sprintf(buf + len, "n AEC LOW");
- break;
- case AEC_MED:
- len += sprintf(buf + len, "n AEC MED");
- break;
- case AEC_HIGH:
- len += sprintf(buf + len, "n AEC HIGH");
- break;
- }
- // len += sprintf(buf+len, "nInfo_read.convert_mode = %d", j->Info_read.convert_mode);
- // len += sprintf(buf+len, "nInfo_read.convert_dir = %d", j->Info_read.convert_dir);
- len += sprintf(buf + len, "nHook state %d", j->r_hook); // ixj_hookstate(cnt));
- if (j->cardtype == 300) {
- len += sprintf(buf + len, "nPOTS Correct %d", j->flags.pots_correct);
- len += sprintf(buf + len, "nPSTN Present %d", j->flags.pstn_present);
- len += sprintf(buf + len, "nPOTS to PSTN %d", j->flags.pots_pstn);
- // len += sprintf(buf+len, "nDAA Interrupt flags %d", j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.reg);
- // len += sprintf(buf+len, "nDAA version %d", j->m_DAAShadowRegs.SOP_REGS.SOP.cr5.reg);
- switch (j->daa_mode) {
- case SOP_PU_SLEEP:
- len += sprintf(buf + len, "nDAA PSTN On Hook");
- break;
- case SOP_PU_RINGING:
- len += sprintf(buf + len, "nDAA PSTN Ringing");
- break;
- case SOP_PU_CONVERSATION:
- len += sprintf(buf + len, "nDAA PSTN Off Hook");
- break;
- case SOP_PU_PULSEDIALING:
- len += sprintf(buf + len, "nDAA PSTN Pulse Dialing");
- break;
- }
- // len += sprintf(buf+len, "nDAA PSTN Ring flag = %d", j->pstn_ringing);
- }
- switch (j->port) {
- case PORT_POTS:
- len += sprintf(buf + len, "nPort POTS");
- break;
- case PORT_PSTN:
- len += sprintf(buf + len, "nPort PSTN");
- break;
- case PORT_SPEAKER:
- len += sprintf(buf + len, "nPort SPEAKER/MIC");
- break;
- case PORT_HANDSET:
- len += sprintf(buf + len, "nPort HANDSET");
- break;
- }
- if (j->dsp.low == 0x21 || j->dsp.low == 0x22) {
- len += sprintf(buf + len, "nSLIC state ");
- switch (SLIC_GetState(cnt)) {
- case PLD_SLIC_STATE_OC:
- len += sprintf(buf + len, "OC");
- break;
- case PLD_SLIC_STATE_RINGING:
- len += sprintf(buf + len, "RINGING");
- break;
- case PLD_SLIC_STATE_ACTIVE:
- len += sprintf(buf + len, "ACTIVE");
- break;
- case PLD_SLIC_STATE_OHT: // On-hook transmit
- len += sprintf(buf + len, "OHT");
- break;
- case PLD_SLIC_STATE_TIPOPEN:
- len += sprintf(buf + len, "TIPOPEN");
- break;
- case PLD_SLIC_STATE_STANDBY:
- len += sprintf(buf + len, "STANDBY");
- break;
- case PLD_SLIC_STATE_APR: // Active polarity reversal
- len += sprintf(buf + len, "APR");
- break;
- case PLD_SLIC_STATE_OHTPR: // OHT polarity reversal
- len += sprintf(buf + len, "OHTPR");
- break;
- default:
- len += sprintf(buf + len, "%d", SLIC_GetState(cnt));
- break;
- }
- }
- // len += sprintf(buf+len, "nRead buffers ready %d", j->read_buffer_ready);
- // len += sprintf(buf+len, "nWrite buffers empty %d",j->write_buffers_empty);
- // len += sprintf(buf+len, "nDTMF ready %d", j->ex.bits.dtmf_ready);
- // len += sprintf(buf+len, "nDTMF proc %d", j->dtmf_proc);
- // len += sprintf(buf+len, "nDTMF wp %d", j->dtmf_wp);
- // len += sprintf(buf+len, "nDTMF rp %d", j->dtmf_rp);
- // len += sprintf(buf+len, "nDTMF digits ");
- // for(x=j->dtmf_rp; x <j->dtmf_wp; x++)
- // {
- // if(x == 79)
- // x = 0;
- // len += sprintf(buf+len, "%x", j->dtmfbuffer[x]);
- // }
- #ifdef PERFMON_STATS
- len += sprintf(buf + len, "nTimer Checks %ld", j->timerchecks);
- len += sprintf(buf + len, "nRX Ready Checks %ld", j->rxreadycheck);
- len += sprintf(buf + len, "nTX Ready Checks %ld", j->txreadycheck);
- len += sprintf(buf + len, "nBase Frame %2.2x.%2.2x", j->baseframe.high, j->baseframe.low);
- len += sprintf(buf + len, "nFrames Read %ld", j->framesread);
- len += sprintf(buf + len, "nFrames Written %ld", j->frameswritten);
- len += sprintf(buf + len, "nDry Buffer %ld", j->drybuffer);
- len += sprintf(buf + len, "nRead Waits %ld", j->read_wait);
- len += sprintf(buf + len, "nWrite Waits %ld", j->write_wait);
- #endif
- len += sprintf(buf + len, "n");
- }
- }
- return len;
- }
- struct proc_dir_entry ixj_proc_entry =
- {
- 0,
- 3, "ixj",
- S_IFREG | S_IRUGO,
- 1, 0, 0,
- 0,
- NULL,
- &ixj_read_proc
- };
- MODULE_DESCRIPTION("Internet PhoneJACK/Internet LineJACK module - www.quicknet.net");
- MODULE_AUTHOR("Ed Okerson <eokerson@quicknet.net>");
- void cleanup_module(void)
- {
- int cnt;
- del_timer(&ixj_timer);
- // if (ixj_major)
- // unregister_chrdev(ixj_major, "ixj");
- for (cnt = 0; cnt < IXJMAX; cnt++) {
- if (ixj[cnt].cardtype == 300) {
- ixj[cnt].pld_scrw.bits.daafsyncen = 0; // Turn off DAA Frame Sync
- outb_p(ixj[cnt].pld_scrw.byte, ixj[cnt].XILINXbase);
- ixj[cnt].pld_slicw.bits.rly1 = 0;
- ixj[cnt].pld_slicw.bits.rly2 = 0;
- ixj[cnt].pld_slicw.bits.rly3 = 0;
- outb_p(ixj[cnt].pld_slicw.byte, ixj[cnt].XILINXbase + 0x01);
- LED_SetState(0x0, cnt);
- release_region(ixj[cnt].XILINXbase, 8);
- }
- if (ixj[cnt].cardtype == 400 || ixj[cnt].cardtype == 500) {
- release_region(ixj[cnt].XILINXbase, 4);
- }
- if (ixj[cnt].DSPbase) {
- release_region(ixj[cnt].DSPbase, 16);
- phone_unregister_device(&ixj[cnt].p);
- }
- if (ixj[cnt].read_buffer)
- kfree(ixj[cnt].read_buffer);
- if (ixj[cnt].write_buffer)
- kfree(ixj[cnt].write_buffer);
- #ifdef CONFIG_ISAPNP
- if (ixj[cnt].dev)
- ixj[cnt].dev->deactivate(ixj[cnt].dev);
- #endif
- }
- proc_unregister(&proc_root, ixj_proc_entry.low_ino);
- }
- // Defines
- #define Delay1ms udelay(1000);
- // Typedefs
- typedef struct {
- BYTE length;
- DWORD bits;
- } DATABLOCK;
- static void PCIEE_WriteBit(WORD wEEPROMAddress, BYTE lastLCC, BYTE byData)
- {
- lastLCC = lastLCC & 0xfb;
- lastLCC = lastLCC | (byData ? 4 : 0);
- outb(lastLCC, wEEPROMAddress); //set data out bit as appropriate
- udelay(1000);
- lastLCC = lastLCC | 0x01;
- outb(lastLCC, wEEPROMAddress); //SK rising edge
- byData = byData << 1;
- lastLCC = lastLCC & 0xfe;
- udelay(1000);
- outb(lastLCC, wEEPROMAddress); //after delay, SK falling edge
- }
- static BYTE PCIEE_ReadBit(WORD wEEPROMAddress, BYTE lastLCC)
- {
- udelay(1000);
- lastLCC = lastLCC | 0x01;
- outb(lastLCC, wEEPROMAddress); //SK rising edge
- lastLCC = lastLCC & 0xfe;
- udelay(1000);
- outb(lastLCC, wEEPROMAddress); //after delay, SK falling edge
- return ((inb(wEEPROMAddress) >> 3) & 1);
- }
- static BOOL PCIEE_ReadWord(WORD wAddress, WORD wLoc, WORD * pwResult)
- {
- BYTE lastLCC;
- WORD wEEPROMAddress = wAddress + 3;
- DWORD i;
- BYTE byResult;
- *pwResult = 0;
- lastLCC = inb(wEEPROMAddress);
- lastLCC = lastLCC | 0x02;
- lastLCC = lastLCC & 0xfe;
- outb(lastLCC, wEEPROMAddress); // CS hi, SK lo
- udelay(1000); // delay
- PCIEE_WriteBit(wEEPROMAddress, lastLCC, 1);
- PCIEE_WriteBit(wEEPROMAddress, lastLCC, 1);
- PCIEE_WriteBit(wEEPROMAddress, lastLCC, 0);
- for (i = 0; i < 8; i++) {
- PCIEE_WriteBit(wEEPROMAddress, lastLCC, wLoc & 0x80 ? 1 : 0);
- wLoc <<= 1;
- }
- for (i = 0; i < 16; i++) {
- byResult = PCIEE_ReadBit(wEEPROMAddress, lastLCC);
- *pwResult = (*pwResult << 1) | byResult;
- }
- udelay(1000); // another delay
- lastLCC = lastLCC & 0xfd;
- outb(lastLCC, wEEPROMAddress); // negate CS
- return 0;
- }
- static DWORD PCIEE_GetSerialNumber(WORD wAddress)
- {
- WORD wLo, wHi;
- if (PCIEE_ReadWord(wAddress, 62, &wLo))
- return 0;
- if (PCIEE_ReadWord(wAddress, 63, &wHi))
- return 0;
- return (((DWORD) wHi << 16) | wLo);
- }
- static int dspio[IXJMAX + 1] =
- {0,};
- static int xio[IXJMAX + 1] =
- {0,};
- MODULE_PARM(dspio, "1-" __MODULE_STRING(IXJMAX) "i");
- MODULE_PARM(xio, "1-" __MODULE_STRING(IXJMAX) "i");
- int init_module(void)
- {
- int result;
- int i = 0;
- int cnt = 0;
- int probe = 0;
- struct pci_dev *pci = NULL;
- #ifdef CONFIG_ISAPNP
- int func = 0x110;
- struct pnp_dev *dev = NULL, *old_dev = NULL;
- #endif
-
- #ifdef CONFIG_ISAPNP
- while (1) {
- do {
- old_dev = dev;
- dev = isapnp_find_dev(NULL, ISAPNP_VENDOR('Q', 'T', 'I'),
- ISAPNP_FUNCTION(func), old_dev);
- //(old_dev==NULL?NULL:old_dev));
- if (!dev)
- break;
- printk("preparing %xn", func);
- result = dev->prepare(dev);
- if (result < 0) {
- printk("preparing failed %d n", result);
- break;
- }
- if (!(dev->resource[0].flags & IORESOURCE_IO))
- return -ENODEV;
- dev->resource[0].flags |= IORESOURCE_AUTO;
- if (func != 0x110)
- dev->resource[1].flags |= IORESOURCE_AUTO;
- if (dev->activate(dev) < 0) {
- printk("isapnp configure failed (out of resources?)n");
- return -ENOMEM;
- }
- ixj[cnt].DSPbase = dev->resource[0].start; /* get real port */
- if (func != 0x110)
- ixj[cnt].XILINXbase = dev->resource[1].start; /* get real port */
- result = check_region(ixj[cnt].DSPbase, 16);
- if (result) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", ixj[cnt].DSPbase);
- cleanup_module();
- return result;
- }
- request_region(ixj[cnt].DSPbase, 16, "ixj DSP");
- switch (func) {
- case (0x110):
- ixj[cnt].cardtype = 100;
- break;
- case (0x310):
- ixj[cnt].cardtype = 300;
- break;
- case (0x410):
- ixj[cnt].cardtype = 400;
- break;
- }
- probe = ixj_selfprobe(cnt);
- ixj[cnt].serial = dev->bus->serial;
- ixj[cnt].dev = dev;
- printk(KERN_INFO "ixj: found card at 0x%xn", ixj[cnt].DSPbase);
- cnt++;
- } while (dev);
- if (func == 0x410)
- break;
- if (func == 0x310)
- func = 0x410;
- if (func == 0x110)
- func = 0x310;
- dev = NULL;
- }
- #else //CONFIG_ISAPNP
- /* Use passed parameters for older kernels without PnP */
- for (cnt = 0; cnt < IXJMAX; cnt++) {
- if (dspio[cnt]) {
- ixj[cnt].DSPbase = dspio[cnt];
- ixj[cnt].XILINXbase = xio[cnt];
- ixj[cnt].cardtype = 0;
- result = check_region(ixj[cnt].DSPbase, 16);
- if (result) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", ixj[cnt].DSPbase);
- cleanup_module();
- return result;
- }
- request_region(ixj[cnt].DSPbase, 16, "ixj DSP");
- probe = ixj_selfprobe(cnt);
- ixj[cnt].dev = NULL;
- }
- }
- #endif
- #ifdef CONFIG_PCI
- if (pci_present()) {
- for (i = 0; i < IXJMAX - cnt; i++) {
- pci = pci_find_device(0x15E2, 0x0500, pci);
- if (!pci)
- break;
- {
- ixj[cnt].DSPbase = pci->base_address[0] & PCI_BASE_ADDRESS_IO_MASK;
- ixj[cnt].XILINXbase = ixj[cnt].DSPbase + 0x10;
- ixj[cnt].serial = PCIEE_GetSerialNumber(pci->base_address[2] & PCI_BASE_ADDRESS_IO_MASK);
- result = check_region(ixj[cnt].DSPbase, 16);
- if (result) {
- printk(KERN_INFO "ixj: can't get I/O address 0x%xn", ixj[cnt].DSPbase);
- cleanup_module();
- return result;
- }
- request_region(ixj[cnt].DSPbase, 16, "ixj DSP");
- ixj[cnt].cardtype = 500;
- probe = ixj_selfprobe(cnt);
- cnt++;
- }
- }
- }
- #endif
- printk("%sn", ixj_c_rcsid);
- // result = register_chrdev(ixj_major, "ixj", &ixj_fops);
- // if (result < 0) {
- // printk(KERN_INFO "ixj: can't get major numbern");
- // cleanup_module();
- // return result;
- // }
- // if (ixj_major == 0)
- // ixj_major = result; /* dynamic */
- proc_register(&proc_root, &ixj_proc_entry);
- ixj_init_timer();
- return probe;
- }
- static void DAA_Coeff_US(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 0E,32,E2,2F,C2,5A,C0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x2F;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xC2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xC0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 72,85,00,0E,2B,3A,D0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x72;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x85;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x2B;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xD0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 03,8F,48,F2,8F,48,70,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x03;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0xF2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x70;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 04,8F,38,7F,9B,EA,B0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x04;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0x38;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x7F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x9B;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xEA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xB0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): 16,55,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x16;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0x55;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): 52,D3,11,42
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xD3;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0x42;
- // Bytes for TH-filter part 1 (00): 00,42,48,81,B3,80,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,F2,33,A0,68,AB,8A,AD
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xF2;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x33;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x68;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0xAB;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x8A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xAD;
- // Bytes for TH-filter part 3 (02): 00,88,DA,54,A4,BA,2D,BB
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x54;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0xA4;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x2D;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xBB;
- // ; (10K, 0.68uF)
- //
- // Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x9B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0xD4;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x1C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x13;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0xD4;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x73;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- //
- // Levelmetering Ringing (0D):B2,45,0F,8E
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xB2;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- //
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FE ; CLK gen. by crystal
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFE;
- // Config. Reg. 1 (dialing) (cr1):05
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):03 ; SEL Bit==0, HP-disabled
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x03;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- //
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C // Cadence, RING, Caller ID, VDD_OK
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x3C;
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):32 ; B-Filter Off == 1
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x12; //0x32;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):40
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; // 0x40 ??? Should it be 0x00?
- //
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static void DAA_Coeff_UK(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 00,C2,BB,A8,CB,81,A0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xC2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xBB;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0xA8;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xCB;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 40,00,00,0A,A4,33,E0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x40;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0xA4;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 07,9B,ED,24,B2,A2,A0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x9B;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xED;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x24;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0xB2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 0F,92,F2,B2,87,D2,30,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x92;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0xB2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x87;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xD2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x30;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): 1B,A5,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xA5;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): E2,27,10,D6
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x27;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
- // Bytes for TH-filter part 1 (00): 80,2D,38,8B,D0,00,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x2D;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x38;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x8B;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xD0;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,5A,53,F0,0B,5F,84,D4
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x53;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xF0;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x0B;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x5F;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x84;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xD4;
- // Bytes for TH-filter part 3 (02): 00,88,6A,A4,8F,52,F5,32
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x6A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0xA4;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0xF5;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x32;
- // ; idle
- // Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- // Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V less possible?
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FF
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF; //0xFE;
- // Config. Reg. 1 (dialing) (cr1):05
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):00 ;
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; // RING, Caller ID, VDD_OK
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):36 ;
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x36;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):46
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; // 0x46 ??? Should it be 0x00?
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static void DAA_Coeff_France(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 02,A2,43,2C,22,AF,A0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0x43;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x2C;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xAF;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 67,CE,00,0C,22,33,E0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x67;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0xCE;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x2C;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 07,9A,28,F6,23,4A,B0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x9A;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x28;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0xF6;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x23;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x4A;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xB0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 03,8F,F9,2F,9E,FA,20,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x03;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xF9;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x2F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x9E;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xFA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x20;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): 16,B5,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x16;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): 52,C7,10,D6
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xC7;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
- // Bytes for TH-filter part 1 (00): 00,42,48,81,A6,80,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,AC,2A,30,78,AC,8A,2C
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xAC;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x30;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x78;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0xAC;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x8A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x2C;
- // Bytes for TH-filter part 3 (02): 00,88,DA,A5,22,BA,2C,45
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0xA5;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x2C;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x45;
- // ; idle
- // Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- // Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FF
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
- // Config. Reg. 1 (dialing) (cr1):05
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):00 ;
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; // RING, Caller ID, VDD_OK
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):36 ;
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x36;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):46
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x46; // 0x46 ??? Should it be 0x00?
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static void DAA_Coeff_Germany(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 00,CE,BB,B8,D2,81,B0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xCE;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xBB;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0xB8;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xD2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xB0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 45,8F,00,0C,D2,3A,D0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0C;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0xD2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xD0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 07,AA,E2,34,24,89,20,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x34;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x24;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x89;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x20;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 02,87,FA,37,9A,CA,B0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x87;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xFA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x37;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x9A;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xB0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): 72,D5,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x72;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xD5;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): 72,42,13,4B
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x72;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x13;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0x4B;
- // Bytes for TH-filter part 1 (00): 80,52,48,81,AD,80,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAD;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,42,5A,20,E8,1A,81,27
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x20;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0xE8;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x1A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x27;
- // Bytes for TH-filter part 3 (02): 00,88,63,26,BD,4B,A3,C2
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x63;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x26;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0xBD;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x4B;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xC2;
- // ; (10K, 0.68uF)
- // Bytes for Ringing part 1 (03):1B,3B,9B,BA,D4,1C,B3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x9B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0xD4;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x1C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):13,42,A6,BA,D4,73,CA,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x13;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0xD4;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x73;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- // Levelmetering Ringing (0D):B2,45,0F,8E
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xB2;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FF ; all Filters enabled, CLK from ext. source
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
- // Config. Reg. 1 (dialing) (cr1):05 ; Manual Ring, Ring metering enabled
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04 ; Analog Gain 0dB, FSC internal
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):00 ; SEL Bit==0, HP-enabled
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C ; Ring, CID, VDDOK Interrupts enabled
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; // RING, Caller ID, VDD_OK
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):32 ; B-Filter Off==1, U0=3.5V, R=200Ohm
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x32;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):40 ; VDD=4.25 V
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; // 0x40 ??? Should it be 0x00?
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static void DAA_Coeff_Australia(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 00,A3,AA,28,B3,82,D0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x28;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0x82;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xD0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 70,96,00,09,32,6B,C0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x70;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0x96;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x6B;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xC0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 07,96,E2,34,32,9B,30,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x96;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x34;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x9B;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0x30;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 0F,9A,E9,2F,22,CC,A0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x9A;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0xE9;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x2F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xCC;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): CB,45,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0xCB;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): 1B,67,10,D6
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0x67;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
- // Bytes for TH-filter part 1 (00): 80,52,48,81,AF,80,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAF;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,DB,52,B0,38,01,82,AC
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xDB;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0xB0;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x38;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x01;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x82;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0xAC;
- // Bytes for TH-filter part 3 (02): 00,88,4A,3E,2C,3B,24,46
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0x4A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x3E;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x2C;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0x3B;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x24;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0x46;
- // ; idle
- // Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- // Levelmetering Ringing (0D):32,45,B5,84 ; 50Hz 20V
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x45;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x84;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FF
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
- // Config. Reg. 1 (dialing) (cr1):05
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):00 ;
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; // RING, Caller ID, VDD_OK
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):2B ;
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x2B;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):40
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; // 0x40 ??? Should it be 0x00?
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static void DAA_Coeff_Japan(int board)
- {
- IXJ *j = &ixj[board];
- int i;
- //-----------------------------------------------
- // CAO
- for (i = 0; i < ALISDAA_CALLERID_SIZE; i++) {
- j->m_DAAShadowRegs.CAO_REGS.CAO.CallerID[i] = 0;
- }
- // Bytes for IM-filter part 1 (04): 06,BD,E2,2D,BA,F9,A0,00
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[7] = 0x06;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[6] = 0xBD;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[5] = 0xE2;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[4] = 0x2D;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[3] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[2] = 0xF9;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[1] = 0xA0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_1[0] = 0x00;
- // Bytes for IM-filter part 2 (05): 6F,F7,00,0E,34,33,E0,08
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[7] = 0x6F;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[6] = 0xF7;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[5] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[4] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[3] = 0x34;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[2] = 0x33;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[1] = 0xE0;
- j->m_DAAShadowRegs.COP_REGS.COP.IMFilterCoeff_2[0] = 0x08;
- // Bytes for FRX-filter (08): 02,8F,68,77,9C,58,F0,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[5] = 0x68;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[4] = 0x77;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[3] = 0x9C;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[2] = 0x58;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[1] = 0xF0;
- j->m_DAAShadowRegs.COP_REGS.COP.FRXFilterCoeff[0] = 0x08;
- // Bytes for FRR-filter (07): 03,8F,38,73,87,EA,20,08
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[7] = 0x03;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[6] = 0x8F;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[5] = 0x38;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[4] = 0x73;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[3] = 0x87;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[2] = 0xEA;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[1] = 0x20;
- j->m_DAAShadowRegs.COP_REGS.COP.FRRFilterCoeff[0] = 0x08;
- // Bytes for AX-filter (0A): 51,C5,DD,CA
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[3] = 0x51;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[2] = 0xC5;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[1] = 0xDD;
- j->m_DAAShadowRegs.COP_REGS.COP.AXFilterCoeff[0] = 0xCA;
- // Bytes for AR-filter (09): 25,A7,10,D6
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[3] = 0x25;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[2] = 0xA7;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[1] = 0x10;
- j->m_DAAShadowRegs.COP_REGS.COP.ARFilterCoeff[0] = 0xD6;
- // Bytes for TH-filter part 1 (00): 00,42,48,81,AE,80,00,98
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[6] = 0x42;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[5] = 0x48;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[4] = 0x81;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[3] = 0xAE;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[2] = 0x80;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_1[0] = 0x98;
- // Bytes for TH-filter part 2 (01): 02,AB,2A,20,99,5B,89,28
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[7] = 0x02;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[6] = 0xAB;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[5] = 0x2A;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[4] = 0x20;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[2] = 0x5B;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[1] = 0x89;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_2[0] = 0x28;
- // Bytes for TH-filter part 3 (02): 00,88,DA,25,34,C5,4C,BA
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[7] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[6] = 0x88;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[5] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[4] = 0x25;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[3] = 0x34;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[2] = 0xC5;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[1] = 0x4C;
- j->m_DAAShadowRegs.COP_REGS.COP.THFilterCoeff_3[0] = 0xBA;
- // ; idle
- // Bytes for Ringing part 1 (03):1B,3C,93,3A,22,12,A3,23
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[7] = 0x1B;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[6] = 0x3C;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[5] = 0x93;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[4] = 0x3A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[2] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[1] = 0xA3;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_1[0] = 0x23;
- // Bytes for Ringing part 2 (06):12,A2,A6,BA,22,7A,0A,D5
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[7] = 0x12;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[6] = 0xA2;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[5] = 0xA6;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[4] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[3] = 0x22;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[2] = 0x7A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[1] = 0x0A;
- j->m_DAAShadowRegs.COP_REGS.COP.RingerImpendance_2[0] = 0xD5;
- // Levelmetering Ringing (0D):AA,35,0F,8E ; 25Hz 30V ?????????
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[3] = 0xAA;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[2] = 0x35;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[1] = 0x0F;
- j->m_DAAShadowRegs.COP_REGS.COP.LevelmeteringRinging[0] = 0x8E;
- // Caller ID 1st Tone (0E):CA,0E,CA,09,99,99,99,99
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[7] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[6] = 0x0E;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[5] = 0xCA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[4] = 0x09;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[3] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[2] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[1] = 0x99;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID1stTone[0] = 0x99;
- // Caller ID 2nd Tone (0F):FD,B5,BA,07,DA,00,00,00
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[7] = 0xFD;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[6] = 0xB5;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[5] = 0xBA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[4] = 0x07;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[3] = 0xDA;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[2] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[1] = 0x00;
- j->m_DAAShadowRegs.COP_REGS.COP.CallerID2ndTone[0] = 0x00;
- // ;CR Registers
- // Config. Reg. 0 (filters) (cr0):FF
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr0.reg = 0xFF;
- // Config. Reg. 1 (dialing) (cr1):05
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr1.reg = 0x05;
- // Config. Reg. 2 (caller ID) (cr2):04
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr2.reg = 0x04;
- // Config. Reg. 3 (testloops) (cr3):00 ;
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr3.reg = 0x00;
- // Config. Reg. 4 (analog gain) (cr4):01
- j->m_DAAShadowRegs.SOP_REGS.SOP.cr4.reg = 0x02; //0x01;
- // Config. Reg. 5 (Version) (cr5):02
- // Config. Reg. 6 (Reserved) (cr6):00
- // Config. Reg. 7 (Reserved) (cr7):00
- // ;xr Registers
- // Ext. Reg. 0 (Interrupt Reg.) (xr0):02
- j->m_DAAShadowRegs.XOP_xr0_W.reg = 0x02; // SO_1 set to '1' because it is inverted.
- // Ext. Reg. 1 (Interrupt enable) (xr1):1C
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr1.reg = 0x1C; // RING, Caller ID, VDD_OK
- // Ext. Reg. 2 (Cadence Time Out) (xr2):7D
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr2.reg = 0x7D;
- // Ext. Reg. 3 (DC Char) (xr3):22 ;
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr3.reg = 0x22;
- // Ext. Reg. 4 (Cadence) (xr4):00
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr4.reg = 0x00;
- // Ext. Reg. 5 (Ring timer) (xr5):22
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr5.reg = 0x22;
- // Ext. Reg. 6 (Power State) (xr6):00
- j->m_DAAShadowRegs.XOP_xr6_W.reg = 0x00;
- // Ext. Reg. 7 (Vdd) (xr7):40
- j->m_DAAShadowRegs.XOP_REGS.XOP.xr7.reg = 0x40; // 0x40 ??? Should it be 0x00?
- // DTMF Tone 1 (0B): 11,B3,5A,2C ; 697 Hz
- // 12,33,5A,C3 ; 770 Hz
- // 13,3C,5B,32 ; 852 Hz
- // 1D,1B,5C,CC ; 941 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[3] = 0x11;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[2] = 0xB3;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[1] = 0x5A;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone1Coeff[0] = 0x2C;
- // DTMF Tone 2 (0C): 32,32,52,B3 ; 1209 Hz
- // EC,1D,52,22 ; 1336 Hz
- // AA,AC,51,D2 ; 1477 Hz
- // 9B,3B,51,25 ; 1633 Hz
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[3] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[2] = 0x32;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[1] = 0x52;
- j->m_DAAShadowRegs.COP_REGS.COP.Tone2Coeff[0] = 0xB3;
- }
- static s16 tone_table[][19] =
- {
- { // f20_50[]
- 32538, // A1 = 1.985962
- -32325, // A2 = -0.986511
- -343, // B2 = -0.010493
- 0, // B1 = 0
- 343, // B0 = 0.010493
- 32619, // A1 = 1.990906
- -32520, // A2 = -0.992462
- 19179, // B2 = 0.585327
- -19178, // B1 = -1.170593
- 19179, // B0 = 0.585327
- 32723, // A1 = 1.997314
- -32686, // A2 = -0.997528
- 9973, // B2 = 0.304352
- -9955, // B1 = -0.607605
- 9973, // B0 = 0.304352
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f133_200[]
- 32072, // A1 = 1.95752
- -31896, // A2 = -0.973419
- -435, // B2 = -0.013294
- 0, // B1 = 0
- 435, // B0 = 0.013294
- 32188, // A1 = 1.9646
- -32400, // A2 = -0.98877
- 15139, // B2 = 0.462036
- -14882, // B1 = -0.908356
- 15139, // B0 = 0.462036
- 32473, // A1 = 1.981995
- -32524, // A2 = -0.992584
- 23200, // B2 = 0.708008
- -23113, // B1 = -1.410706
- 23200, // B0 = 0.708008
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 300.txt
- 31769, // A1 = -1.939026
- -32584, // A2 = 0.994385
- -475, // B2 = -0.014522
- 0, // B1 = 0.000000
- 475, // B0 = 0.014522
- 31789, // A1 = -1.940247
- -32679, // A2 = 0.997284
- 17280, // B2 = 0.527344
- -16865, // B1 = -1.029358
- 17280, // B0 = 0.527344
- 31841, // A1 = -1.943481
- -32681, // A2 = 0.997345
- 543, // B2 = 0.016579
- -525, // B1 = -0.032097
- 543, // B0 = 0.016579
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f300_420[]
- 30750, // A1 = 1.876892
- -31212, // A2 = -0.952515
- -804, // B2 = -0.024541
- 0, // B1 = 0
- 804, // B0 = 0.024541
- 30686, // A1 = 1.872925
- -32145, // A2 = -0.980988
- 14747, // B2 = 0.450043
- -13703, // B1 = -0.836395
- 14747, // B0 = 0.450043
- 31651, // A1 = 1.931824
- -32321, // A2 = -0.986389
- 24425, // B2 = 0.745422
- -23914, // B1 = -1.459595
- 24427, // B0 = 0.745483
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 330.txt
- 31613, // A1 = -1.929565
- -32646, // A2 = 0.996277
- -185, // B2 = -0.005657
- 0, // B1 = 0.000000
- 185, // B0 = 0.005657
- 31620, // A1 = -1.929932
- -32713, // A2 = 0.998352
- 19253, // B2 = 0.587585
- -18566, // B1 = -1.133179
- 19253, // B0 = 0.587585
- 31674, // A1 = -1.933228
- -32715, // A2 = 0.998413
- 2575, // B2 = 0.078590
- -2495, // B1 = -0.152283
- 2575, // B0 = 0.078590
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f300_425[]
- 30741, // A1 = 1.876282
- -31475, // A2 = -0.960541
- -703, // B2 = -0.021484
- 0, // B1 = 0
- 703, // B0 = 0.021484
- 30688, // A1 = 1.873047
- -32248, // A2 = -0.984161
- 14542, // B2 = 0.443787
- -13523, // B1 = -0.825439
- 14542, // B0 = 0.443817
- 31494, // A1 = 1.922302
- -32366, // A2 = -0.987762
- 21577, // B2 = 0.658508
- -21013, // B1 = -1.282532
- 21577, // B0 = 0.658508
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f330_440[]
- 30627, // A1 = 1.869324
- -31338, // A2 = -0.95636
- -843, // B2 = -0.025749
- 0, // B1 = 0
- 843, // B0 = 0.025749
- 30550, // A1 = 1.864685
- -32221, // A2 = -0.983337
- 13594, // B2 = 0.414886
- -12589, // B1 = -0.768402
- 13594, // B0 = 0.414886
- 31488, // A1 = 1.921936
- -32358, // A2 = -0.987518
- 24684, // B2 = 0.753296
- -24029, // B1 = -1.466614
- 24684, // B0 = 0.753296
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 340.txt
- 31546, // A1 = -1.925476
- -32646, // A2 = 0.996277
- -445, // B2 = -0.013588
- 0, // B1 = 0.000000
- 445, // B0 = 0.013588
- 31551, // A1 = -1.925781
- -32713, // A2 = 0.998352
- 23884, // B2 = 0.728882
- -22979, // B1 = -1.402527
- 23884, // B0 = 0.728882
- 31606, // A1 = -1.929138
- -32715, // A2 = 0.998413
- 863, // B2 = 0.026367
- -835, // B1 = -0.050985
- 863, // B0 = 0.026367
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f350_400[]
- 31006, // A1 = 1.892517
- -32029, // A2 = -0.977448
- -461, // B2 = -0.014096
- 0, // B1 = 0
- 461, // B0 = 0.014096
- 30999, // A1 = 1.892029
- -32487, // A2 = -0.991455
- 11325, // B2 = 0.345612
- -10682, // B1 = -0.651978
- 11325, // B0 = 0.345612
- 31441, // A1 = 1.919067
- -32526, // A2 = -0.992615
- 24324, // B2 = 0.74231
- -23535, // B1 = -1.436523
- 24324, // B0 = 0.74231
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f350_440[]
- 30634, // A1 = 1.869751
- -31533, // A2 = -0.962341
- -680, // B2 = -0.020782
- 0, // B1 = 0
- 680, // B0 = 0.020782
- 30571, // A1 = 1.865906
- -32277, // A2 = -0.985016
- 12894, // B2 = 0.393524
- -11945, // B1 = -0.729065
- 12894, // B0 = 0.393524
- 31367, // A1 = 1.91449
- -32379, // A2 = -0.988129
- 23820, // B2 = 0.726929
- -23104, // B1 = -1.410217
- 23820, // B0 = 0.726929
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f350_450[]
- 30552, // A1 = 1.864807
- -31434, // A2 = -0.95929
- -690, // B2 = -0.021066
- 0, // B1 = 0
- 690, // B0 = 0.021066
- 30472, // A1 = 1.859924
- -32248, // A2 = -0.984161
- 13385, // B2 = 0.408478
- -12357, // B1 = -0.754242
- 13385, // B0 = 0.408478
- 31358, // A1 = 1.914001
- -32366, // A2 = -0.987732
- 26488, // B2 = 0.80835
- -25692, // B1 = -1.568176
- 26490, // B0 = 0.808411
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 360.txt
- 31397, // A1 = -1.916321
- -32623, // A2 = 0.995605
- -117, // B2 = -0.003598
- 0, // B1 = 0.000000
- 117, // B0 = 0.003598
- 31403, // A1 = -1.916687
- -32700, // A2 = 0.997925
- 3388, // B2 = 0.103401
- -3240, // B1 = -0.197784
- 3388, // B0 = 0.103401
- 31463, // A1 = -1.920410
- -32702, // A2 = 0.997986
- 13346, // B2 = 0.407288
- -12863, // B1 = -0.785126
- 13346, // B0 = 0.407288
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f380_420[]
- 30831, // A1 = 1.881775
- -32064, // A2 = -0.978546
- -367, // B2 = -0.01122
- 0, // B1 = 0
- 367, // B0 = 0.01122
- 30813, // A1 = 1.880737
- -32456, // A2 = -0.990509
- 11068, // B2 = 0.337769
- -10338, // B1 = -0.631042
- 11068, // B0 = 0.337769
- 31214, // A1 = 1.905212
- -32491, // A2 = -0.991577
- 16374, // B2 = 0.499695
- -15781, // B1 = -0.963196
- 16374, // B0 = 0.499695
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 392.txt
- 31152, // A1 = -1.901428
- -32613, // A2 = 0.995300
- -314, // B2 = -0.009605
- 0, // B1 = 0.000000
- 314, // B0 = 0.009605
- 31156, // A1 = -1.901672
- -32694, // A2 = 0.997742
- 28847, // B2 = 0.880371
- -2734, // B1 = -0.166901
- 28847, // B0 = 0.880371
- 31225, // A1 = -1.905823
- -32696, // A2 = 0.997803
- 462, // B2 = 0.014108
- -442, // B1 = -0.027019
- 462, // B0 = 0.014108
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f400_425[]
- 30836, // A1 = 1.882141
- -32296, // A2 = -0.985596
- -324, // B2 = -0.009903
- 0, // B1 = 0
- 324, // B0 = 0.009903
- 30825, // A1 = 1.881409
- -32570, // A2 = -0.993958
- 16847, // B2 = 0.51416
- -15792, // B1 = -0.963898
- 16847, // B0 = 0.51416
- 31106, // A1 = 1.89856
- -32584, // A2 = -0.994415
- 9579, // B2 = 0.292328
- -9164, // B1 = -0.559357
- 9579, // B0 = 0.292328
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f400_440[]
- 30702, // A1 = 1.873962
- -32134, // A2 = -0.980682
- -517, // B2 = -0.015793
- 0, // B1 = 0
- 517, // B0 = 0.015793
- 30676, // A1 = 1.872375
- -32520, // A2 = -0.992462
- 8144, // B2 = 0.24855
- -7596, // B1 = -0.463684
- 8144, // B0 = 0.24855
- 31084, // A1 = 1.897217
- -32547, // A2 = -0.993256
- 22713, // B2 = 0.693176
- -21734, // B1 = -1.326599
- 22713, // B0 = 0.693176
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f400_450[]
- 30613, // A1 = 1.86853
- -32031, // A2 = -0.977509
- -618, // B2 = -0.018866
- 0, // B1 = 0
- 618, // B0 = 0.018866
- 30577, // A1 = 1.866272
- -32491, // A2 = -0.991577
- 9612, // B2 = 0.293335
- -8935, // B1 = -0.54541
- 9612, // B0 = 0.293335
- 31071, // A1 = 1.896484
- -32524, // A2 = -0.992584
- 21596, // B2 = 0.659058
- -20667, // B1 = -1.261414
- 21596, // B0 = 0.659058
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 420.txt
- 30914, // A1 = -1.886841
- -32584, // A2 = 0.994385
- -426, // B2 = -0.013020
- 0, // B1 = 0.000000
- 426, // B0 = 0.013020
- 30914, // A1 = -1.886841
- -32679, // A2 = 0.997314
- 17520, // B2 = 0.534668
- -16471, // B1 = -1.005310
- 17520, // B0 = 0.534668
- 31004, // A1 = -1.892334
- -32683, // A2 = 0.997406
- 819, // B2 = 0.025023
- -780, // B1 = -0.047619
- 819, // B0 = 0.025023
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 425.txt
- 30881, // A1 = -1.884827
- -32603, // A2 = 0.994965
- -496, // B2 = -0.015144
- 0, // B1 = 0.000000
- 496, // B0 = 0.015144
- 30880, // A1 = -1.884766
- -32692, // A2 = 0.997711
- 24767, // B2 = 0.755859
- -23290, // B1 = -1.421509
- 24767, // B0 = 0.755859
- 30967, // A1 = -1.890076
- -32694, // A2 = 0.997772
- 728, // B2 = 0.022232
- -691, // B1 = -0.042194
- 728, // B0 = 0.022232
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f425_450[]
- 30646, // A1 = 1.870544
- -32327, // A2 = -0.986572
- -287, // B2 = -0.008769
- 0, // B1 = 0
- 287, // B0 = 0.008769
- 30627, // A1 = 1.869324
- -32607, // A2 = -0.995087
- 13269, // B2 = 0.404968
- -12376, // B1 = -0.755432
- 13269, // B0 = 0.404968
- 30924, // A1 = 1.887512
- -32619, // A2 = -0.995453
- 19950, // B2 = 0.608826
- -18940, // B1 = -1.156006
- 19950, // B0 = 0.608826
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f425_475[]
- 30396, // A1 = 1.855225
- -32014, // A2 = -0.97699
- -395, // B2 = -0.012055
- 0, // B1 = 0
- 395, // B0 = 0.012055
- 30343, // A1 = 1.85199
- -32482, // A2 = -0.991302
- 17823, // B2 = 0.543945
- -16431, // B1 = -1.002869
- 17823, // B0 = 0.543945
- 30872, // A1 = 1.884338
- -32516, // A2 = -0.99231
- 18124, // B2 = 0.553101
- -17246, // B1 = -1.052673
- 18124, // B0 = 0.553101
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 435.txt
- 30796, // A1 = -1.879639
- -32603, // A2 = 0.994965
- -254, // B2 = -0.007762
- 0, // B1 = 0.000000
- 254, // B0 = 0.007762
- 30793, // A1 = -1.879456
- -32692, // A2 = 0.997711
- 18934, // B2 = 0.577820
- -17751, // B1 = -1.083496
- 18934, // B0 = 0.577820
- 30882, // A1 = -1.884888
- -32694, // A2 = 0.997772
- 1858, // B2 = 0.056713
- -1758, // B1 = -0.107357
- 1858, // B0 = 0.056713
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f440_450[]
- 30641, // A1 = 1.870239
- -32458, // A2 = -0.99057
- -155, // B2 = -0.004735
- 0, // B1 = 0
- 155, // B0 = 0.004735
- 30631, // A1 = 1.869568
- -32630, // A2 = -0.995789
- 11453, // B2 = 0.349548
- -10666, // B1 = -0.651001
- 11453, // B0 = 0.349548
- 30810, // A1 = 1.880554
- -32634, // A2 = -0.995941
- 12237, // B2 = 0.373474
- -11588, // B1 = -0.707336
- 12237, // B0 = 0.373474
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f440_480[]
- 30367, // A1 = 1.853455
- -32147, // A2 = -0.981079
- -495, // B2 = -0.015113
- 0, // B1 = 0
- 495, // B0 = 0.015113
- 30322, // A1 = 1.850769
- -32543, // A2 = -0.993134
- 10031, // B2 = 0.306152
- -9252, // B1 = -0.564728
- 10031, // B0 = 0.306152
- 30770, // A1 = 1.878052
- -32563, // A2 = -0.993774
- 22674, // B2 = 0.691956
- -21465, // B1 = -1.31012
- 22674, // B0 = 0.691956
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 445.txt
- 30709, // A1 = -1.874329
- -32603, // A2 = 0.994965
- -83, // B2 = -0.002545
- 0, // B1 = 0.000000
- 83, // B0 = 0.002545
- 30704, // A1 = -1.874084
- -32692, // A2 = 0.997711
- 10641, // B2 = 0.324738
- -9947, // B1 = -0.607147
- 10641, // B0 = 0.324738
- 30796, // A1 = -1.879639
- -32694, // A2 = 0.997772
- 10079, // B2 = 0.307587
- 9513, // B1 = 0.580688
- 10079, // B0 = 0.307587
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 450.txt
- 30664, // A1 = -1.871643
- -32603, // A2 = 0.994965
- -164, // B2 = -0.005029
- 0, // B1 = 0.000000
- 164, // B0 = 0.005029
- 30661, // A1 = -1.871399
- -32692, // A2 = 0.997711
- 15294, // B2 = 0.466736
- -14275, // B1 = -0.871307
- 15294, // B0 = 0.466736
- 30751, // A1 = -1.876953
- -32694, // A2 = 0.997772
- 3548, // B2 = 0.108284
- -3344, // B1 = -0.204155
- 3548, // B0 = 0.108284
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 452.txt
- 30653, // A1 = -1.870911
- -32615, // A2 = 0.995361
- -209, // B2 = -0.006382
- 0, // B1 = 0.000000
- 209, // B0 = 0.006382
- 30647, // A1 = -1.870605
- -32702, // A2 = 0.997986
- 18971, // B2 = 0.578979
- -17716, // B1 = -1.081299
- 18971, // B0 = 0.578979
- 30738, // A1 = -1.876099
- -32702, // A2 = 0.998016
- 2967, // B2 = 0.090561
- -2793, // B1 = -0.170502
- 2967, // B0 = 0.090561
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 475.txt
- 30437, // A1 = -1.857727
- -32603, // A2 = 0.994965
- -264, // B2 = -0.008062
- 0, // B1 = 0.000000
- 264, // B0 = 0.008062
- 30430, // A1 = -1.857300
- -32692, // A2 = 0.997711
- 21681, // B2 = 0.661682
- -20082, // B1 = -1.225708
- 21681, // B0 = 0.661682
- 30526, // A1 = -1.863220
- -32694, // A2 = 0.997742
- 1559, // B2 = 0.047600
- -1459, // B1 = -0.089096
- 1559, // B0 = 0.047600
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f480_620[]
- 28975, // A1 = 1.768494
- -30955, // A2 = -0.944672
- -1026, // B2 = -0.03133
- 0, // B1 = 0
- 1026, // B0 = 0.03133
- 28613, // A1 = 1.746399
- -32089, // A2 = -0.979309
- 14214, // B2 = 0.433807
- -12202, // B1 = -0.744812
- 14214, // B0 = 0.433807
- 30243, // A1 = 1.845947
- -32238, // A2 = -0.983856
- 24825, // B2 = 0.757629
- -23402, // B1 = -1.428345
- 24825, // B0 = 0.757629
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 494.txt
- 30257, // A1 = -1.846741
- -32605, // A2 = 0.995056
- -249, // B2 = -0.007625
- 0, // B1 = 0.000000
- 249, // B0 = 0.007625
- 30247, // A1 = -1.846191
- -32694, // A2 = 0.997772
- 18088, // B2 = 0.552002
- -16652, // B1 = -1.016418
- 18088, // B0 = 0.552002
- 30348, // A1 = -1.852295
- -32696, // A2 = 0.997803
- 2099, // B2 = 0.064064
- -1953, // B1 = -0.119202
- 2099, // B0 = 0.064064
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 500.txt
- 30202, // A1 = -1.843431
- -32624, // A2 = 0.995622
- -413, // B2 = -0.012622
- 0, // B1 = 0.000000
- 413, // B0 = 0.012622
- 30191, // A1 = -1.842721
- -32714, // A2 = 0.998364
- 25954, // B2 = 0.792057
- -23890, // B1 = -1.458131
- 25954, // B0 = 0.792057
- 30296, // A1 = -1.849172
- -32715, // A2 = 0.998397
- 2007, // B2 = 0.061264
- -1860, // B1 = -0.113568
- 2007, // B0 = 0.061264
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 520.txt
- 30001, // A1 = -1.831116
- -32613, // A2 = 0.995270
- -155, // B2 = -0.004750
- 0, // B1 = 0.000000
- 155, // B0 = 0.004750
- 29985, // A1 = -1.830200
- -32710, // A2 = 0.998260
- 6584, // B2 = 0.200928
- -6018, // B1 = -0.367355
- 6584, // B0 = 0.200928
- 30105, // A1 = -1.837524
- -32712, // A2 = 0.998291
- 23812, // B2 = 0.726685
- -21936, // B1 = -1.338928
- 23812, // B0 = 0.726685
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 523.txt
- 29964, // A1 = -1.828918
- -32601, // A2 = 0.994904
- -101, // B2 = -0.003110
- 0, // B1 = 0.000000
- 101, // B0 = 0.003110
- 29949, // A1 = -1.827942
- -32700, // A2 = 0.997925
- 11041, // B2 = 0.336975
- -10075, // B1 = -0.614960
- 11041, // B0 = 0.336975
- 30070, // A1 = -1.835388
- -32702, // A2 = 0.997986
- 16762, // B2 = 0.511536
- -15437, // B1 = -0.942230
- 16762, // B0 = 0.511536
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 525.txt
- 29936, // A1 = -1.827209
- -32584, // A2 = 0.994415
- -91, // B2 = -0.002806
- 0, // B1 = 0.000000
- 91, // B0 = 0.002806
- 29921, // A1 = -1.826233
- -32688, // A2 = 0.997559
- 11449, // B2 = 0.349396
- -10426, // B1 = -0.636383
- 11449, // B0 = 0.349396
- 30045, // A1 = -1.833862
- -32688, // A2 = 0.997589
- 13055, // B2 = 0.398407
- -12028, // B1 = -0.734161
- 13055, // B0 = 0.398407
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f540_660[]
- 28499, // A1 = 1.739441
- -31129, // A2 = -0.949982
- -849, // B2 = -0.025922
- 0, // B1 = 0
- 849, // B0 = 0.025922
- 28128, // A1 = 1.716797
- -32130, // A2 = -0.98056
- 14556, // B2 = 0.444214
- -12251, // B1 = -0.747772
- 14556, // B0 = 0.444244
- 29667, // A1 = 1.81073
- -32244, // A2 = -0.984039
- 23038, // B2 = 0.703064
- -21358, // B1 = -1.303589
- 23040, // B0 = 0.703125
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 587.txt
- 29271, // A1 = -1.786560
- -32599, // A2 = 0.994873
- -490, // B2 = -0.014957
- 0, // B1 = 0.000000
- 490, // B0 = 0.014957
- 29246, // A1 = -1.785095
- -32700, // A2 = 0.997925
- 28961, // B2 = 0.883850
- -25796, // B1 = -1.574463
- 28961, // B0 = 0.883850
- 29383, // A1 = -1.793396
- -32700, // A2 = 0.997955
- 1299, // B2 = 0.039650
- -1169, // B1 = -0.071396
- 1299, // B0 = 0.039650
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 590.txt
- 29230, // A1 = -1.784058
- -32584, // A2 = 0.994415
- -418, // B2 = -0.012757
- 0, // B1 = 0.000000
- 418, // B0 = 0.012757
- 29206, // A1 = -1.782593
- -32688, // A2 = 0.997559
- 36556, // B2 = 1.115601
- -32478, // B1 = -1.982300
- 36556, // B0 = 1.115601
- 29345, // A1 = -1.791077
- -32688, // A2 = 0.997589
- 897, // B2 = 0.027397
- -808, // B1 = -0.049334
- 897, // B0 = 0.027397
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 600.txt
- 29116, // A1 = -1.777100
- -32603, // A2 = 0.994965
- -165, // B2 = -0.005039
- 0, // B1 = 0.000000
- 165, // B0 = 0.005039
- 29089, // A1 = -1.775452
- -32708, // A2 = 0.998199
- 6963, // B2 = 0.212494
- -6172, // B1 = -0.376770
- 6963, // B0 = 0.212494
- 29237, // A1 = -1.784485
- -32710, // A2 = 0.998230
- 24197, // B2 = 0.738464
- -21657, // B1 = -1.321899
- 24197, // B0 = 0.738464
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 660.txt
- 28376, // A1 = -1.731934
- -32567, // A2 = 0.993896
- -363, // B2 = -0.011102
- 0, // B1 = 0.000000
- 363, // B0 = 0.011102
- 28337, // A1 = -1.729614
- -32683, // A2 = 0.997434
- 21766, // B2 = 0.664246
- -18761, // B1 = -1.145081
- 21766, // B0 = 0.664246
- 28513, // A1 = -1.740356
- -32686, // A2 = 0.997498
- 2509, // B2 = 0.076584
- -2196, // B1 = -0.134041
- 2509, // B0 = 0.076584
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 700.txt
- 27844, // A1 = -1.699463
- -32563, // A2 = 0.993744
- -366, // B2 = -0.011187
- 0, // B1 = 0.000000
- 366, // B0 = 0.011187
- 27797, // A1 = -1.696655
- -32686, // A2 = 0.997498
- 22748, // B2 = 0.694214
- -19235, // B1 = -1.174072
- 22748, // B0 = 0.694214
- 27995, // A1 = -1.708740
- -32688, // A2 = 0.997559
- 2964, // B2 = 0.090477
- -2546, // B1 = -0.155449
- 2964, // B0 = 0.090477
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 740.txt
- 27297, // A1 = -1.666077
- -32551, // A2 = 0.993408
- -345, // B2 = -0.010540
- 0, // B1 = 0.000000
- 345, // B0 = 0.010540
- 27240, // A1 = -1.662598
- -32683, // A2 = 0.997406
- 22560, // B2 = 0.688477
- -18688, // B1 = -1.140625
- 22560, // B0 = 0.688477
- 27461, // A1 = -1.676147
- -32684, // A2 = 0.997467
- 3541, // B2 = 0.108086
- -2985, // B1 = -0.182220
- 3541, // B0 = 0.108086
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 750.txt
- 27155, // A1 = -1.657410
- -32551, // A2 = 0.993408
- -462, // B2 = -0.014117
- 0, // B1 = 0.000000
- 462, // B0 = 0.014117
- 27097, // A1 = -1.653870
- -32683, // A2 = 0.997406
- 32495, // B2 = 0.991699
- -26776, // B1 = -1.634338
- 32495, // B0 = 0.991699
- 27321, // A1 = -1.667542
- -32684, // A2 = 0.997467
- 1835, // B2 = 0.056007
- -1539, // B1 = -0.093948
- 1835, // B0 = 0.056007
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f750_1450[]
- 19298, // A1 = 1.177917
- -24471, // A2 = -0.746796
- -4152, // B2 = -0.126709
- 0, // B1 = 0
- 4152, // B0 = 0.126709
- 12902, // A1 = 0.787476
- -29091, // A2 = -0.887817
- 12491, // B2 = 0.38121
- -1794, // B1 = -0.109528
- 12494, // B0 = 0.381317
- 26291, // A1 = 1.604736
- -30470, // A2 = -0.929901
- 28859, // B2 = 0.880737
- -26084, // B1 = -1.592102
- 28861, // B0 = 0.880798
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 770.txt
- 26867, // A1 = -1.639832
- -32551, // A2 = 0.993408
- -123, // B2 = -0.003755
- 0, // B1 = 0.000000
- 123, // B0 = 0.003755
- 26805, // A1 = -1.636108
- -32683, // A2 = 0.997406
- 17297, // B2 = 0.527863
- -14096, // B1 = -0.860382
- 17297, // B0 = 0.527863
- 27034, // A1 = -1.650085
- -32684, // A2 = 0.997467
- 12958, // B2 = 0.395477
- -10756, // B1 = -0.656525
- 12958, // B0 = 0.395477
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 800.txt
- 26413, // A1 = -1.612122
- -32547, // A2 = 0.993286
- -223, // B2 = -0.006825
- 0, // B1 = 0.000000
- 223, // B0 = 0.006825
- 26342, // A1 = -1.607849
- -32686, // A2 = 0.997498
- 6391, // B2 = 0.195053
- -5120, // B1 = -0.312531
- 6391, // B0 = 0.195053
- 26593, // A1 = -1.623108
- -32688, // A2 = 0.997559
- 23681, // B2 = 0.722717
- -19328, // B1 = -1.179688
- 23681, // B0 = 0.722717
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 816.txt
- 26168, // A1 = -1.597209
- -32528, // A2 = 0.992706
- -235, // B2 = -0.007182
- 0, // B1 = 0.000000
- 235, // B0 = 0.007182
- 26092, // A1 = -1.592590
- -32675, // A2 = 0.997192
- 20823, // B2 = 0.635498
- -16510, // B1 = -1.007751
- 20823, // B0 = 0.635498
- 26363, // A1 = -1.609070
- -32677, // A2 = 0.997253
- 6739, // B2 = 0.205688
- -5459, // B1 = -0.333206
- 6739, // B0 = 0.205688
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 850.txt
- 25641, // A1 = -1.565063
- -32536, // A2 = 0.992950
- -121, // B2 = -0.003707
- 0, // B1 = 0.000000
- 121, // B0 = 0.003707
- 25560, // A1 = -1.560059
- -32684, // A2 = 0.997437
- 18341, // B2 = 0.559753
- -14252, // B1 = -0.869904
- 18341, // B0 = 0.559753
- 25837, // A1 = -1.577026
- -32684, // A2 = 0.997467
- 16679, // B2 = 0.509003
- -13232, // B1 = -0.807648
- 16679, // B0 = 0.509003
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f857_1645[]
- 16415, // A1 = 1.001953
- -23669, // A2 = -0.722321
- -4549, // B2 = -0.138847
- 0, // B1 = 0
- 4549, // B0 = 0.138847
- 8456, // A1 = 0.516174
- -28996, // A2 = -0.884918
- 13753, // B2 = 0.419724
- -12, // B1 = -0.000763
- 13757, // B0 = 0.419846
- 24632, // A1 = 1.503418
- -30271, // A2 = -0.923828
- 29070, // B2 = 0.887146
- -25265, // B1 = -1.542114
- 29073, // B0 = 0.887268
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 900.txt
- 24806, // A1 = -1.514099
- -32501, // A2 = 0.991852
- -326, // B2 = -0.009969
- 0, // B1 = 0.000000
- 326, // B0 = 0.009969
- 24709, // A1 = -1.508118
- -32659, // A2 = 0.996674
- 20277, // B2 = 0.618835
- -15182, // B1 = -0.926636
- 20277, // B0 = 0.618835
- 25022, // A1 = -1.527222
- -32661, // A2 = 0.996735
- 4320, // B2 = 0.131836
- -3331, // B1 = -0.203339
- 4320, // B0 = 0.131836
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f900_1300[]
- 19776, // A1 = 1.207092
- -27437, // A2 = -0.837341
- -2666, // B2 = -0.081371
- 0, // B1 = 0
- 2666, // B0 = 0.081371
- 16302, // A1 = 0.995026
- -30354, // A2 = -0.926361
- 10389, // B2 = 0.317062
- -3327, // B1 = -0.203064
- 10389, // B0 = 0.317062
- 24299, // A1 = 1.483154
- -30930, // A2 = -0.943909
- 25016, // B2 = 0.763428
- -21171, // B1 = -1.292236
- 25016, // B0 = 0.763428
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f935_1215[]
- 20554, // A1 = 1.254517
- -28764, // A2 = -0.877838
- -2048, // B2 = -0.062515
- 0, // B1 = 0
- 2048, // B0 = 0.062515
- 18209, // A1 = 1.11145
- -30951, // A2 = -0.94458
- 9390, // B2 = 0.286575
- -3955, // B1 = -0.241455
- 9390, // B0 = 0.286575
- 23902, // A1 = 1.458923
- -31286, // A2 = -0.954803
- 23252, // B2 = 0.709595
- -19132, // B1 = -1.167725
- 23252, // B0 = 0.709595
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f941_1477[]
- 17543, // A1 = 1.07074
- -26220, // A2 = -0.800201
- -3298, // B2 = -0.100647
- 0, // B1 = 0
- 3298, // B0 = 0.100647
- 12423, // A1 = 0.75827
- -30036, // A2 = -0.916626
- 12651, // B2 = 0.386078
- -2444, // B1 = -0.14917
- 12653, // B0 = 0.386154
- 23518, // A1 = 1.435425
- -30745, // A2 = -0.938293
- 27282, // B2 = 0.832581
- -22529, // B1 = -1.375122
- 27286, // B0 = 0.832703
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 942.txt
- 24104, // A1 = -1.471252
- -32507, // A2 = 0.992065
- -351, // B2 = -0.010722
- 0, // B1 = 0.000000
- 351, // B0 = 0.010722
- 23996, // A1 = -1.464600
- -32671, // A2 = 0.997040
- 22848, // B2 = 0.697266
- -16639, // B1 = -1.015564
- 22848, // B0 = 0.697266
- 24332, // A1 = -1.485168
- -32673, // A2 = 0.997101
- 4906, // B2 = 0.149727
- -3672, // B1 = -0.224174
- 4906, // B0 = 0.149727
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 950.txt
- 23967, // A1 = -1.462830
- -32507, // A2 = 0.992065
- -518, // B2 = -0.015821
- 0, // B1 = 0.000000
- 518, // B0 = 0.015821
- 23856, // A1 = -1.456055
- -32671, // A2 = 0.997040
- 26287, // B2 = 0.802246
- -19031, // B1 = -1.161560
- 26287, // B0 = 0.802246
- 24195, // A1 = -1.476746
- -32673, // A2 = 0.997101
- 2890, // B2 = 0.088196
- -2151, // B1 = -0.131317
- 2890, // B0 = 0.088196
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f950_1400[]
- 18294, // A1 = 1.116638
- -26962, // A2 = -0.822845
- -2914, // B2 = -0.088936
- 0, // B1 = 0
- 2914, // B0 = 0.088936
- 14119, // A1 = 0.861786
- -30227, // A2 = -0.922455
- 11466, // B2 = 0.349945
- -2833, // B1 = -0.172943
- 11466, // B0 = 0.349945
- 23431, // A1 = 1.430115
- -30828, // A2 = -0.940796
- 25331, // B2 = 0.773071
- -20911, // B1 = -1.276367
- 25331, // B0 = 0.773071
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 975.txt
- 23521, // A1 = -1.435608
- -32489, // A2 = 0.991516
- -193, // B2 = -0.005915
- 0, // B1 = 0.000000
- 193, // B0 = 0.005915
- 23404, // A1 = -1.428467
- -32655, // A2 = 0.996582
- 17740, // B2 = 0.541412
- -12567, // B1 = -0.767029
- 17740, // B0 = 0.541412
- 23753, // A1 = -1.449829
- -32657, // A2 = 0.996613
- 9090, // B2 = 0.277405
- -6662, // B1 = -0.406647
- 9090, // B0 = 0.277405
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1000.txt
- 23071, // A1 = -1.408203
- -32489, // A2 = 0.991516
- -293, // B2 = -0.008965
- 0, // B1 = 0.000000
- 293, // B0 = 0.008965
- 22951, // A1 = -1.400818
- -32655, // A2 = 0.996582
- 5689, // B2 = 0.173645
- -3951, // B1 = -0.241150
- 5689, // B0 = 0.173645
- 23307, // A1 = -1.422607
- -32657, // A2 = 0.996613
- 18692, // B2 = 0.570435
- -13447, // B1 = -0.820770
- 18692, // B0 = 0.570435
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1020.txt
- 22701, // A1 = -1.385620
- -32474, // A2 = 0.991058
- -292, // B2 = -0.008933
- 0, //163840 , // B1 = 10.000000
- 292, // B0 = 0.008933
- 22564, // A1 = -1.377258
- -32655, // A2 = 0.996552
- 20756, // B2 = 0.633423
- -14176, // B1 = -0.865295
- 20756, // B0 = 0.633423
- 22960, // A1 = -1.401428
- -32657, // A2 = 0.996613
- 6520, // B2 = 0.198990
- -4619, // B1 = -0.281937
- 6520, // B0 = 0.198990
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1050.txt
- 22142, // A1 = -1.351501
- -32474, // A2 = 0.991058
- -147, // B2 = -0.004493
- 0, // B1 = 0.000000
- 147, // B0 = 0.004493
- 22000, // A1 = -1.342834
- -32655, // A2 = 0.996552
- 15379, // B2 = 0.469360
- -10237, // B1 = -0.624847
- 15379, // B0 = 0.469360
- 22406, // A1 = -1.367554
- -32657, // A2 = 0.996613
- 17491, // B2 = 0.533783
- -12096, // B1 = -0.738312
- 17491, // B0 = 0.533783
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f1100_1750[]
- 12973, // A1 = 0.79184
- -24916, // A2 = -0.760376
- 6655, // B2 = 0.203102
- 367, // B1 = 0.0224
- 6657, // B0 = 0.203171
- 5915, // A1 = 0.361053
- -29560, // A2 = -0.90213
- -7777, // B2 = -0.23735
- 0, // B1 = 0
- 7777, // B0 = 0.23735
- 20510, // A1 = 1.251892
- -30260, // A2 = -0.923462
- 26662, // B2 = 0.81366
- -20573, // B1 = -1.255737
- 26668, // B0 = 0.813843
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1140.txt
- 20392, // A1 = -1.244629
- -32460, // A2 = 0.990601
- -270, // B2 = -0.008240
- 0, // B1 = 0.000000
- 270, // B0 = 0.008240
- 20218, // A1 = -1.234009
- -32655, // A2 = 0.996582
- 21337, // B2 = 0.651154
- -13044, // B1 = -0.796143
- 21337, // B0 = 0.651154
- 20684, // A1 = -1.262512
- -32657, // A2 = 0.996643
- 8572, // B2 = 0.261612
- -5476, // B1 = -0.334244
- 8572, // B0 = 0.261612
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1200.txt
- 19159, // A1 = -1.169373
- -32456, // A2 = 0.990509
- -335, // B2 = -0.010252
- 0, // B1 = 0.000000
- 335, // B0 = 0.010252
- 18966, // A1 = -1.157593
- -32661, // A2 = 0.996735
- 6802, // B2 = 0.207588
- -3900, // B1 = -0.238098
- 6802, // B0 = 0.207588
- 19467, // A1 = -1.188232
- -32661, // A2 = 0.996765
- 25035, // B2 = 0.764008
- -15049, // B1 = -0.918579
- 25035, // B0 = 0.764008
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1209.txt
- 18976, // A1 = -1.158264
- -32439, // A2 = 0.989990
- -183, // B2 = -0.005588
- 0, // B1 = 0.000000
- 183, // B0 = 0.005588
- 18774, // A1 = -1.145874
- -32650, // A2 = 0.996429
- 15468, // B2 = 0.472076
- -8768, // B1 = -0.535217
- 15468, // B0 = 0.472076
- 19300, // A1 = -1.177979
- -32652, // A2 = 0.996490
- 19840, // B2 = 0.605499
- -11842, // B1 = -0.722809
- 19840, // B0 = 0.605499
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1330.txt
- 16357, // A1 = -0.998413
- -32368, // A2 = 0.987793
- -217, // B2 = -0.006652
- 0, // B1 = 0.000000
- 217, // B0 = 0.006652
- 16107, // A1 = -0.983126
- -32601, // A2 = 0.994904
- 11602, // B2 = 0.354065
- -5555, // B1 = -0.339111
- 11602, // B0 = 0.354065
- 16722, // A1 = -1.020630
- -32603, // A2 = 0.994965
- 15574, // B2 = 0.475311
- -8176, // B1 = -0.499069
- 15574, // B0 = 0.475311
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1336.txt
- 16234, // A1 = -0.990875
- 32404, // A2 = -0.988922
- -193, // B2 = -0.005908
- 0, // B1 = 0.000000
- 193, // B0 = 0.005908
- 15986, // A1 = -0.975769
- -32632, // A2 = 0.995880
- 18051, // B2 = 0.550903
- -8658, // B1 = -0.528473
- 18051, // B0 = 0.550903
- 16591, // A1 = -1.012695
- -32634, // A2 = 0.995941
- 15736, // B2 = 0.480240
- -8125, // B1 = -0.495926
- 15736, // B0 = 0.480240
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1366.txt
- 15564, // A1 = -0.949982
- -32404, // A2 = 0.988922
- -269, // B2 = -0.008216
- 0, // B1 = 0.000000
- 269, // B0 = 0.008216
- 15310, // A1 = -0.934479
- -32632, // A2 = 0.995880
- 10815, // B2 = 0.330063
- -4962, // B1 = -0.302887
- 10815, // B0 = 0.330063
- 15924, // A1 = -0.971924
- -32634, // A2 = 0.995941
- 18880, // B2 = 0.576172
- -9364, // B1 = -0.571594
- 18880, // B0 = 0.576172
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1380.txt
- 15247, // A1 = -0.930603
- -32397, // A2 = 0.988708
- -244, // B2 = -0.007451
- 0, // B1 = 0.000000
- 244, // B0 = 0.007451
- 14989, // A1 = -0.914886
- -32627, // A2 = 0.995697
- 18961, // B2 = 0.578644
- -8498, // B1 = -0.518707
- 18961, // B0 = 0.578644
- 15608, // A1 = -0.952667
- -32628, // A2 = 0.995758
- 11145, // B2 = 0.340134
- -5430, // B1 = -0.331467
- 11145, // B0 = 0.340134
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1400.txt
- 14780, // A1 = -0.902130
- -32393, // A2 = 0.988586
- -396, // B2 = -0.012086
- 0, // B1 = 0.000000
- 396, // B0 = 0.012086
- 14510, // A1 = -0.885651
- -32630, // A2 = 0.995819
- 6326, // B2 = 0.193069
- -2747, // B1 = -0.167671
- 6326, // B0 = 0.193069
- 15154, // A1 = -0.924957
- -32632, // A2 = 0.995850
- 23235, // B2 = 0.709076
- -10983, // B1 = -0.670380
- 23235, // B0 = 0.709076
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1477.txt
- 13005, // A1 = -0.793793
- -32368, // A2 = 0.987823
- -500, // B2 = -0.015265
- 0, // B1 = 0.000000
- 500, // B0 = 0.015265
- 12708, // A1 = -0.775665
- -32615, // A2 = 0.995331
- 11420, // B2 = 0.348526
- -4306, // B1 = -0.262833
- 11420, // B0 = 0.348526
- 13397, // A1 = -0.817688
- -32615, // A2 = 0.995361
- 9454, // B2 = 0.288528
- -3981, // B1 = -0.243027
- 9454, // B0 = 0.288528
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1600.txt
- 10046, // A1 = -0.613190
- -32331, // A2 = 0.986694
- -455, // B2 = -0.013915
- 0, // B1 = 0.000000
- 455, // B0 = 0.013915
- 9694, // A1 = -0.591705
- -32601, // A2 = 0.994934
- 6023, // B2 = 0.183815
- -1708, // B1 = -0.104279
- 6023, // B0 = 0.183815
- 10478, // A1 = -0.639587
- -32603, // A2 = 0.994965
- 22031, // B2 = 0.672333
- -7342, // B1 = -0.448151
- 22031, // B0 = 0.672333
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // f1633_1638[]
- 9181, // A1 = 0.560394
- -32256, // A2 = -0.984375
- -556, // B2 = -0.016975
- 0, // B1 = 0
- 556, // B0 = 0.016975
- 8757, // A1 = 0.534515
- -32574, // A2 = -0.99408
- 8443, // B2 = 0.25769
- -2135, // B1 = -0.130341
- 8443, // B0 = 0.25769
- 9691, // A1 = 0.591522
- -32574, // A2 = -0.99411
- 15446, // B2 = 0.471375
- -4809, // B1 = -0.293579
- 15446, // B0 = 0.471375
- 7, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1800.txt
- 5076, // A1 = -0.309875
- -32304, // A2 = 0.985840
- -508, // B2 = -0.015503
- 0, // B1 = 0.000000
- 508, // B0 = 0.015503
- 4646, // A1 = -0.283600
- -32605, // A2 = 0.995026
- 6742, // B2 = 0.205780
- -878, // B1 = -0.053635
- 6742, // B0 = 0.205780
- 5552, // A1 = -0.338928
- -32605, // A2 = 0.995056
- 23667, // B2 = 0.722260
- -4297, // B1 = -0.262329
- 23667, // B0 = 0.722260
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },
- { // 1860.txt
- 3569, // A1 = -0.217865
- -32292, // A2 = 0.985504
- -239, // B2 = -0.007322
- 0, // B1 = 0.000000
- 239, // B0 = 0.007322
- 3117, // A1 = -0.190277
- -32603, // A2 = 0.994965
- 18658, // B2 = 0.569427
- -1557, // B1 = -0.095032
- 18658, // B0 = 0.569427
- 4054, // A1 = -0.247437
- -32603, // A2 = 0.994965
- 18886, // B2 = 0.576385
- -2566, // B1 = -0.156647
- 18886, // B0 = 0.576385
- 5, // Internal filter scaling
- 159, // Minimum in-band energy threshold
- 21, // 21/32 in-band to broad-band ratio
- 0x0FF5 // shift-mask 0x0FF (look at 16 half-frames) bit count = 5
- },};
- static int ixj_init_filter(int board, IXJ_FILTER * jf)
- {
- unsigned short cmd;
- int cnt, max;
- IXJ *j = &ixj[board];
- if (jf->filter > 3) {
- return -1;
- }
- if (ixj_WriteDSPCommand(0x5154 + jf->filter, board)) // Select Filter
- return -1;
- if (!jf->enable) {
- if (ixj_WriteDSPCommand(0x5152, board)) // Disable Filter
- return -1;
- else
- return 0;
- } else {
- if (ixj_WriteDSPCommand(0x5153, board)) // Enable Filter
- return -1;
- // Select the filter (f0 - f3) to use.
- if (ixj_WriteDSPCommand(0x5154 + jf->filter, board))
- return -1;
- }
- if (jf->freq < 12 && jf->freq > 3) {
- // Select the frequency for the selected filter.
- if (ixj_WriteDSPCommand(0x5170 + jf->freq, board))
- return -1;
- } else if (jf->freq > 11) {
- // We need to load a programmable filter set for undefined
- // frequencies. So we will point the filter to a programmable set.
- // Since there are only 4 filters and 4 programmable sets, we will
- // just point the filter to the same number set and program it for the
- // frequency we want.
- if (ixj_WriteDSPCommand(0x5170 + jf->filter, board))
- return -1;
- if (j->ver.low != 0x12) {
- cmd = 0x515B;
- max = 19;
- } else {
- cmd = 0x515E;
- max = 15;
- }
- if (ixj_WriteDSPCommand(cmd, board))
- return -1;
- for (cnt = 0; cnt < max; cnt++) {
- if (ixj_WriteDSPCommand(tone_table[jf->freq][cnt], board))
- return -1;
- }
- /* if(j->ver.low != 0x12)
- {
- if(ixj_WriteDSPCommand(7, board))
- return -1;
- if(ixj_WriteDSPCommand(159, board))
- return -1;
- if(ixj_WriteDSPCommand(21, board))
- return -1;
- if(ixj_WriteDSPCommand(0x0FF5, board))
- return -1;
- } */
- }
- return 0;
- }
- static int ixj_init_tone(int board, IXJ_TONE * ti)
- {
- int freq0, freq1;
- unsigned short data;
- if (ti->freq0) {
- freq0 = ti->freq0;
- } else {
- freq0 = 0x7FFF;
- }
- if (ti->freq1) {
- freq1 = ti->freq1;
- } else {
- freq1 = 0x7FFF;
- }
- // if(ti->tone_index > 12 && ti->tone_index < 28)
- {
- if (ixj_WriteDSPCommand(0x6800 + ti->tone_index, board))
- return -1;
- if (ixj_WriteDSPCommand(0x6000 + (ti->gain0 << 4) + ti->gain1, board))
- return -1;
- data = freq0;
- if (ixj_WriteDSPCommand(data, board))
- return -1;
- data = freq1;
- if (ixj_WriteDSPCommand(data, board))
- return -1;
- }
- return freq0;
- }