[mythtv] cidbcast
Behan Webster
behanw at websterwood.com
Sun Dec 7 20:11:02 EST 2003
This is a patch to make cidbcast work with the ZyXel 1496E+ modem.
I now have call display on my Mythtv box.
Thanks to all the Mythtv developpers for a great program.
Behan Webster
-------------- next part --------------
Index: cidbcast.c
===================================================================
RCS file: /var/lib/mythcvs/mythtv/contrib/mythnotify/cidbcast/cidbcast.c,v
retrieving revision 1.2
diff -r1.2 cidbcast.c
12a13
> #include <ctype.h>
187a189,190
>
> sleep(1);
352a356,380
> int getNum(char *dest, int dsize, const char *src, int ssize)
> {
> int ret = 0;
>
> if( dest && src )
> {
> int i, j;
> memset(dest, 0, dsize);
> for(i=0,j=0; i<ssize && i<dsize; i++)
> {
> if( isspace(src[i]) )
> {
> break;
> }
> else if( isdigit(src[i]) )
> {
> dest[j++] = src[i];
> }
> }
> ret = j;
> }
>
> return ret;
> }
>
358a387,393
> **
> ** For the ZyXel 1496E+
> ** TIME: 09-15 17:00
> ** CALLER NAME: SCHMOE JOE
> ** CALLER NUMBER: 3015551212
> **
> ** init string is: "AT E0 L0 M0 N0 Q0 V1 X7 &C1 &H3 S0=0 S7=45 S13.2=1 S40.2=1 S40.3=1 S40.4=1"
363,364c398,399
< char *field_ptr;
< int field_len;
---
> char *field_ptr, date[8], time[8];
> int field_len, time_len=0;
366,367c401,402
< field_ptr = extract_cid_field(buffer, len, "NAME = ", &field_len);
< if (field_ptr)
---
> if( (field_ptr = extract_cid_field(buffer, len, "NAME = ", &field_len))
> || (field_ptr = extract_cid_field(buffer, len, "CALLER NAME: ", &field_len)) )
385,386c420,421
< field_ptr = extract_cid_field(buffer, len, "NMBR = ", &field_len);
< if (field_ptr)
---
> if( (field_ptr = extract_cid_field(buffer, len, "NMBR = ", &field_len))
> || (field_ptr = extract_cid_field(buffer, len, "CALLER NUMBER: ", &field_len)) )
404c439,455
< field_ptr = extract_cid_field(buffer, len, "DATE = ", &field_len);
---
> if( (field_ptr = extract_cid_field(buffer, len, "TIME: ", &field_len)) )
> {
> int date_len;
> date_len = getNum(date, sizeof(date), field_ptr, field_len);
> time_len = getNum(time, sizeof(time), &field_ptr[date_len+2], field_len-date_len-2);
> field_ptr = &date[0];
> field_len = date_len;
> if( verbose )
> {
> printf( "Date(%d): %s\nTime(%d): %s\nField_ptr: %s\n",
> field_len, date, time_len, time, field_ptr );
> }
> }
> else
> {
> field_ptr = extract_cid_field(buffer, len, "DATE = ", &field_len);
> }
423c474,482
< field_ptr = extract_cid_field(buffer, len, "TIME = ", &field_len);
---
> if (time_len)
> {
> field_ptr = &time[0];
> field_len = time_len;
> }
> else
> {
> field_ptr = extract_cid_field(buffer, len, "TIME = ", &field_len);
> }
503a563,569
> if (write(*fd, "+++", 3) != 3)
> {
> printf("error init modem\n");
> return -1;
> }
> sleep(2);
>
More information about the mythtv-dev
mailing list