diff options
author | dbailey <dbailey@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-06 19:52:40 +0000 |
---|---|---|
committer | dbailey <dbailey@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-06 19:52:40 +0000 |
commit | aea3c1d33fdb0f9909a1cd471bffc68344bd70e9 (patch) | |
tree | e0afd225c0798db143d3f9595132802a471ea894 /main/callerid.c | |
parent | 59d1fbc49cc2b332bb825ea28da88dca25848a99 (diff) |
Change the fsk filter used in CID and TDD decode to an integer based implementation
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@78227 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/callerid.c')
-rw-r--r-- | main/callerid.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/main/callerid.c b/main/callerid.c index 6e3cb9514..4777f1728 100644 --- a/main/callerid.c +++ b/main/callerid.c @@ -134,17 +134,23 @@ struct callerid_state *callerid_new(int cid_signalling) struct callerid_state *cid; if ((cid = ast_calloc(1, sizeof(*cid)))) { - cid->fskd.spb = 7.0; /* 1200 baud */ + cid->fskd.ispb = 7; /* 1200 baud */ + /* Set up for 1200 / 8000 freq *32 to allow ints */ + cid->fskd.pllispb = (int)(8000 * 32 / 1200); + cid->fskd.pllids = cid->fskd.pllispb/32; + cid->fskd.pllispb2 = cid->fskd.pllispb/2; + + cid->fskd.icont = 0; /* PLL REset */ /* cid->fskd.hdlc = 0; */ /* Async */ cid->fskd.nbit = 8; /* 8 bits */ - cid->fskd.nstop = 1.0; /* 1 stop bit */ + cid->fskd.instop = 1; /* 1 stop bit */ /* cid->fskd.paridad = 0; */ /* No parity */ cid->fskd.bw = 1; /* Filter 800 Hz */ if (cid_signalling == 2) { /* v23 signalling */ - cid->fskd.f_mark_idx = 4; /* 1300 Hz */ + cid->fskd.f_mark_idx = 4; /* 1300 Hz */ cid->fskd.f_space_idx = 5; /* 2100 Hz */ } else { /* Bell 202 signalling as default */ - cid->fskd.f_mark_idx = 2; /* 1200 Hz */ + cid->fskd.f_mark_idx = 2; /* 1200 Hz */ cid->fskd.f_space_idx = 3; /* 2200 Hz */ } /* cid->fskd.pcola = 0; */ /* No clue */ @@ -153,6 +159,8 @@ struct callerid_state *callerid_new(int cid_signalling) /* cid->fskd.state = 0; */ cid->flags = CID_UNKNOWN_NAME | CID_UNKNOWN_NUMBER; /* cid->pos = 0; */ + + fskmodem_init(&cid->fskd); } return cid; |