Ticket #286: sa3250hd_fwcc.patch

File sa3250hd_fwcc.patch, 4.1 KB (added by mporter@…, 20 years ago)

Add SA3250 firewire channel change support

  • libs/libmythtv/firewirechannel.cpp

     
    11/**
    22 *  FirewireChannel
    33 *  Copyright (c) 2005 by Jim Westfall
     4 *  SA3250HD support Copyright (c) 2005 by Matt Porter
    45 *  Distributed as part of MythTV under GPL v2 and later.
    56 */
    67
     
    2324
    2425    if (externalChanger[currentcapchannel].isEmpty())
    2526    {
    26         if (fw_opts.model == "DCT-6200")
     27        if ((fw_opts.model == "DCT-6200") || (fw_opts.model == "SA3250HD"))
    2728        {
    2829            if ((fwhandle = raw1394_new_handle_on_port(fw_opts.port)) == NULL)
    2930            {
     
    4041        else
    4142        {
    4243            VERBOSE(VB_IMPORTANT, "FireWireChannel: internal channel "
    43                     "changer only supported by DCT-6200 models");
     44                    "changer only supported by DCT-6200 and SA3250HD models");
    4445        }
    4546    }
    4647}
     
    5859{
    5960     int dig[3];
    6061     int channel = chan.toInt();
    61      quadlet_t cmd[2];
     62     quadlet_t cmd[3];
    6263
    6364     inputChannel[currentcapchannel] = chan;
    6465     curchannelname = chan;
     
    8687                usleep(500000);
    8788            }
    8889         }
     90         else if (isopen && fw_opts.model == "SA3250HD")
     91         {
     92            dig[2] |= 0x30;
     93            dig[1] |= 0x30;
     94            dig[0] |= 0x30;
     95
     96            cmd[0] = SA3250_CMD0 | AVC1394_SA3250_OPERAND_KEY_PRESS;
     97            cmd[1] = SA3250_CMD1 | (dig[0] << 16) | (dig[1] << 8) | dig[2];
     98            cmd[2] = SA3250_CMD2;
     99            VERBOSE(VB_GENERAL, QString("FireWireChannel: channel:%1%2%3 "
     100                                        "cmds: 0x%4, 0x%5, 0x%6")
     101                    .arg(dig[0] & 0xf).arg(dig[1] & 0xf)
     102                    .arg(dig[2] & 0xf).arg(cmd[0], 0, 16)
     103                    .arg(cmd[1], 0, 16)
     104                    .arg(cmd[2], 0, 16));
     105
     106            avc1394_transaction_block(fwhandle, fw_opts.node, cmd, 3, 1);
     107
     108            cmd[0] = SA3250_CMD0 | AVC1394_SA3250_OPERAND_KEY_RELEASE;
     109            VERBOSE(VB_GENERAL, QString("FireWireChannel: channel:%1%2%3 "
     110                                        "cmds: 0x%4, 0x%5, 0x%6")
     111                    .arg(dig[0] & 0xf).arg(dig[1] & 0xf)
     112                    .arg(dig[2] & 0xf).arg(cmd[0], 0, 16)
     113                    .arg(cmd[1], 0, 16)
     114                    .arg(cmd[2], 0, 16));
     115
     116            avc1394_transaction_block(fwhandle, fw_opts.node, cmd, 3, 1);
     117         }
    89118         else
    90119         {
    91120             VERBOSE(VB_IMPORTANT, "FireWireChannel: internal channel "
  • libs/libmythtv/firewirechannel.h

     
    11/**
    22 *  FirewireChannel
    33 *  Copyright (c) 2005 by Jim Westfall
     4 *  SA3250HD support Copyright (c) 2005 by Matt Porter
    45 *  Distributed as part of MythTV under GPL v2 and later.
    56 */
    67
     
    2425        AVC1394_SUBUNIT_ID_0 | AVC1394_6200_COMMAND_CHANNEL | \
    2526        AVC1394_6200_OPERAND_SET
    2627
     28// SA3250HD defines
     29#define AVC1394_SA3250_COMMAND_CHANNEL          0x000007c00
     30#define AVC1394_SA3250_OPERAND_KEY_PRESS        0xe7
     31#define AVC1394_SA3250_OPERAND_KEY_RELEASE      0x67
    2732
     33#define SA3250_CMD0 (AVC1394_CTYPE_CONTROL | AVC1394_SUBUNIT_TYPE_PANEL | \
     34                     AVC1394_SUBUNIT_ID_0 | AVC1394_SA3250_COMMAND_CHANNEL)
     35#define SA3250_CMD1 (0x04 << 24)
     36#define SA3250_CMD2 0xff000000
     37
    2838class FirewireChannel : public ChannelBase
    2939{
    3040  public:
  • libs/libmythtv/videosource.cpp

     
    11611161        setLabel(QObject::tr("Firewire Model"));
    11621162        addSelection(QObject::tr("Other"));
    11631163        addSelection("DCT-6200");
     1164        addSelection("SA3250HD");
    11641165        setHelpText(QObject::tr("Firewire Model is for future use in case "
    11651166                                "there is a need to model specific "
    11661167                                "workarounds."));