[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