Ticket #993: sa3250ch.c.diff

File sa3250ch.c.diff, 1.1 KB (added by namuch@…, 18 years ago)

Fixes channel change issues (channels > 99) on SA3250HD

  • sa3250ch.c

     
    120120   dig[1] = 0x30 | ((chn % 100)  / 10);
    121121   dig[0] = 0x30 | ((chn % 1000) / 100);
    122122
    123    cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
    124    cmd[1] = CTL_CMD1 | (dig[0] << 16) | (dig[1] << 8) | dig[2];
    125    cmd[2] = CTL_CMD2;
     123   cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS; 
     124   cmd[1] = CTL_CMD1 | (dig[2] << 16) | (dig[1] << 8) | dig[0];
     125   cmd[2] = CTL_CMD2; 
    126126
    127127   if (verbose)
    128128      printf("AV/C Command: %d%d%d = cmd0=0x%08x cmd2=0x%08x cmd3=0x%08x\n",
    129129            dig[0] & 0xf, dig[1] & 0xf, dig[2] & 0xf, cmd[0], cmd[1], cmd[2]);
    130130
    131131   avc1394_transaction_block(handle, 0, cmd, 3, 1);
    132    cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_RELEASE;
     132   cmd[0] = CTL_CMD0 | AVC1394_SA3250_OPERAND_KEY_RELEASE;
     133   cmd[1] = CTL_CMD1  | (dig[0] << 16) | (dig[1] << 8) | dig[2];
     134   cmd[2] = CTL_CMD2;
    133135
    134136   if (verbose)
    135137      printf("AV/C Command: %d%d%d = cmd0=0x%08x cmd2=0x%08x cmd3=0x%08x\n",