[mythtv-commits] Ticket #2059: Enhanced SA3250/SA4200 Command Line Channel Changer

MythTV mythtv at cvs.mythtv.org
Sun Dec 3 06:49:53 UTC 2006


#2059: Enhanced SA3250/SA4200 Command Line Channel Changer
-----------------------------------+----------------------------------------
 Reporter:  chris at spicecoffee.org  |        Owner:  jwestfall
     Type:  patch                  |       Status:  new      
 Priority:  minor                  |    Milestone:  0.21     
Component:  mythtv                 |      Version:  head     
 Severity:  medium                 |   Resolution:           
-----------------------------------+----------------------------------------
Changes (by dave_frailey at hotmail.com):

  * type:  enhancement => patch

Comment:

 Need to use code like this to channel change properly with my newer (mfr
 06/2006) sa3250hd:


 {{{
    .
    .

    if (single) {
        /* Send channel as single number for SA4200 and some SA3250s */
        if (verbose)
         printf("Using single number channel change command method\n");

        cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
        cmd[1] = CTL_CMD1 | (chn << 8);
        cmd[2] = 0x0;

        if (verbose)
             printf("AV/C Command: cmd0=0x%08x cmd1=0x%08x cmd2=0x%08x\n",
                    cmd[0], cmd[1], cmd[2]);
        avc1394_transaction_block(handle, 0, cmd, 3, 1);
    } else {
        /* Default method sending three seperate digits */
        dig[2] = 0x30 | (chn % 10);
        dig[1] = 0x30 | ((chn % 100)  / 10);
        dig[0] = 0x30 | ((chn % 1000) / 100);

        cmd[2] = CTL_CMD2;
        if ( dir.vendor_id == SA3250HD_VENDOR_ID3 ) {
           cmd[1] = CTL_CMD1 | (chn << 8);
        } else {
           cmd[1] = CTL_CMD1 | (dig[2] << 16) | (dig[1] << 8) | dig[0];
        }

        cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
        if (verbose)
           printf("AV/C Command: %d%d%d = cmd0=0x%08x cmd2=0x%08x
 cmd3=0x%08x\n",
                 dig[0] & 0xf, dig[1] & 0xf, dig[2] & 0xf, cmd[0], cmd[1],
 cmd[2]);
        avc1394_transaction_block(handle, 0, cmd, 3, 1);

        cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_RELEASE;
        if (verbose)
           printf("AV/C Command: %d%d%d = cmd0=0x%08x cmd2=0x%08x
 cmd3=0x%08x\n",
                 dig[0] & 0xf, dig[1] & 0xf, dig[2] & 0xf, cmd[0], cmd[1],
 cmd[2]);
        avc1394_transaction_block(handle, 0, cmd, 3, 1);
    }

 }}}

-- 
Ticket URL: <http://cvs.mythtv.org/trac/ticket/2059#comment:3>
MythTV <http://www.mythtv.org/>
MythTV


More information about the mythtv-commits mailing list