Ticket #4035: switch_address.diff

File switch_address.diff, 8.3 KB (added by anonymous, 13 years ago)
  • diseqc.cpp

     
    949949
    950950DiSEqCDevSwitch::DiSEqCDevSwitch(DiSEqCDevTree &tree, uint devid)
    951951    : DiSEqCDevDevice(tree, devid),
    952       m_type(kTypeTone), m_num_ports(2)
     952      m_type(kTypeTone), m_address(DISEQC_ADR_SW_ALL),
     953      m_num_ports(2)
    953954{
    954955    m_children.resize(m_num_ports);
    955956
     
    11131114    // populate switch parameters from db
    11141115    MSqlQuery query(MSqlQuery::InitCon());
    11151116    query.prepare(
    1116         "SELECT subtype, switch_ports, cmd_repeat "
     1117        "SELECT subtype, address, switch_ports, cmd_repeat "
    11171118        "FROM diseqc_tree "
    11181119        "WHERE diseqcid = :DEVID");
    11191120    query.bindValue(":DEVID", GetDeviceID());
     
    11261127    else if (query.next())
    11271128    {
    11281129        m_type = SwitchTypeFromString(query.value(0).toString());
    1129         m_num_ports = query.value(1).toUInt();
    1130         m_repeat = query.value(2).toUInt();
     1130        m_address = query.value(1).toUInt();
     1131        m_num_ports = query.value(2).toUInt();
     1132        m_repeat = query.value(3).toUInt();
    11311133        m_children.resize(m_num_ports);
    11321134        for (uint i = 0; i < m_num_ports; i++)
    11331135            m_children[i] = NULL;
     
    11771179            "    type         = 'switch', "
    11781180            "    description  = :DESC, "
    11791181            "    subtype      = :TYPE, "
     1182            "    address      = :ADDRESS, "
    11801183            "    switch_ports = :PORTS, "
    11811184            "    cmd_repeat   = :REPEAT "
    11821185            "WHERE diseqcid = :DEVID");
     
    11851188    {
    11861189        query.prepare(
    11871190            "INSERT INTO diseqc_tree"
    1188             " ( parentid,      ordinal,         type, "
    1189             "   description,   subtype,         switch_ports, "
    1190             "   cmd_repeat )"
     1191            " ( parentid,      ordinal,       type,    "
     1192            "   description,   subtype,       address, "
     1193            "   switch_ports,  cmd_repeat )"
    11911194            "VALUES "
    1192             " (:PARENT,       :ORDINAL,         'switch', "
    1193             "  :DESC,         :TYPE,            :PORTS, "
    1194             "  :REPEAT )");
     1195            " (:PARENT,       :ORDINAL,      'switch', "
     1196            "  :DESC,         :TYPE,         :ADDRESS, "
     1197            "  :PORTS,        :REPEAT )");
    11951198    }
    11961199
    11971200    if (m_parent)
     
    11991202
    12001203    query.bindValue(":ORDINAL", m_ordinal);
    12011204    query.bindValue(":DESC",    GetDescription());
     1205    query.bindValue(":ADDRESS", m_address);
    12021206    query.bindValue(":TYPE",    type);
    12031207    query.bindValue(":PORTS",   m_num_ports);
    12041208    query.bindValue(":REPEAT",  m_repeat);
     
    14371441    VERBOSE(VB_CHANNEL, LOC + "Changing to DiSEqC switch port " +
    14381442            QString("%1/%2").arg(pos + 1).arg(m_num_ports));
    14391443
    1440     bool ret = m_tree.SendCommand(DISEQC_ADR_SW_ALL, cmd, m_repeat, 1, &data);
     1444    bool ret = m_tree.SendCommand(m_address, cmd, m_repeat, 1, &data);
    14411445    if(ret)
    14421446    {
    14431447        m_last_high_band = high_band;
  • diseqc.h

     
    225225        kTypeLegacySW42        = 4,
    226226        kTypeLegacySW64        = 5,
    227227    };
    228     void SetType(dvbdev_switch_t type)        { m_type = type;      }
     228    void SetType(dvbdev_switch_t type)        { m_type = type;       }
     229    void SetAddress(uint address)             { m_address = address; }
    229230    void SetNumPorts(uint num_ports);
    230231    virtual bool SetChild(uint, DiSEqCDevDevice*);
    231232
    232233    // Gets
    233     dvbdev_switch_t GetType(void)       const { return m_type;      }
    234     uint            GetNumPorts(void)   const { return m_num_ports; }
     234    dvbdev_switch_t GetType(void)       const { return m_type;       }
     235    uint            GetAddress(void)    const { return m_address;    }
     236    uint            GetNumPorts(void)   const { return m_num_ports;  }
    235237    bool            ShouldSwitch(const DiSEqCDevSettings &settings,
    236238                                 const DTVMultiplex &tuning) const;
    237239    virtual uint    GetChildCount(void) const;
     
    260262
    261263  private:
    262264    dvbdev_switch_t m_type;
     265    uint            m_address;
    263266    uint            m_num_ports;
    264267    uint            m_last_pos;
    265268    uint            m_last_high_band;
  • diseqcsettings.cpp

     
    178178    DiSEqCDevSwitch &m_switch;
    179179};
    180180
     181//////////////////////////////////////// SwitchAddressSetting
     182
     183class SwitchAddressSetting : public LineEditSetting, public Storage
     184{
     185  public:
     186    SwitchAddressSetting(DiSEqCDevSwitch &switch_dev) :
     187        LineEditSetting(this), m_switch(switch_dev)
     188    {
     189        setLabel(DeviceTree::tr("Address of switch"));
     190        setHelpText(DeviceTree::tr("The diseqc address of the switch."));
     191    }
     192
     193    virtual void load(void)
     194    {
     195        setValue(QString::number(m_switch.GetAddress(), 16).upper().prepend(QString("0x")));
     196    }
     197
     198    virtual void save(void)
     199    {
     200        m_switch.SetAddress(getValue().toUInt(0, 16));
     201    }
     202
     203    virtual void save(QString /*destination*/) { }
     204
     205  private:
     206    DiSEqCDevSwitch &m_switch;
     207};
     208
    181209//////////////////////////////////////// SwitchPortsSetting
    182210
    183211class SwitchPortsSetting : public LineEditSetting, public Storage
     
    218246    group->addChild(new DeviceRepeatSetting(switch_dev));
    219247    m_type = new SwitchTypeSetting(switch_dev);
    220248    group->addChild(m_type);
     249    m_address = new SwitchAddressSetting(switch_dev);
     250    group->addChild(m_address);
    221251    m_ports = new SwitchPortsSetting(switch_dev);
    222252    group->addChild(m_ports);
    223253
     
    234264        case DiSEqCDevSwitch::kTypeTone:
    235265        case DiSEqCDevSwitch::kTypeLegacySW21:
    236266        case DiSEqCDevSwitch::kTypeLegacySW42:
     267            m_address->setValue(QString("0x10"));
     268            m_address->setEnabled(false);
    237269            m_ports->setValue("2");
    238270            m_ports->setEnabled(false);
    239271            break;
    240272        case DiSEqCDevSwitch::kTypeLegacySW64:
     273            m_address->setValue(QString("0x10"));
     274            m_address->setEnabled(false);
    241275            m_ports->setValue("3");
    242276            m_ports->setEnabled(false);
    243277            break;
    244278        case DiSEqCDevSwitch::kTypeDiSEqCCommitted:
    245279        case DiSEqCDevSwitch::kTypeDiSEqCUncommitted:
     280            m_address->setEnabled(true);
    246281            m_ports->setEnabled(true);
    247282            break;
    248283    }
     
    14041439                    tree, DiSEqCDevDevice::kTypeSwitch);
    14051440                DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root);
    14061441                sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted);
     1442                sw->SetAddress(16);
    14071443                sw->SetNumPorts(2);
    14081444                add_lnbs = 2;
    14091445                break;
     
    14171453                    tree, DiSEqCDevDevice::kTypeSwitch);
    14181454                DiSEqCDevSwitch *sw = dynamic_cast<DiSEqCDevSwitch*>(root);
    14191455                sw->SetType(DiSEqCDevSwitch::kTypeDiSEqCCommitted);
     1456                sw->SetAddress(16);
    14201457                sw->SetNumPorts(4);
    14211458                add_lnbs = 4;
    14221459                break;
  • diseqcsettings.h

     
    1414
    1515class SwitchTypeSetting;
    1616class SwitchPortsSetting;
     17class SwitchAddressSetting;
    1718
    1819class SwitchConfig : public QObject, public ConfigurationWizard
    1920{
     
    2829  private:
    2930    SwitchTypeSetting  *m_type;
    3031    SwitchPortsSetting *m_ports;
     32    SwitchAddressSetting *m_address;
    3133};
    3234
    3335class RotorPosMap : public ListBoxSetting, public StorageIndex: dbcheck.cpp
  • dbcheck.cpp

     
    32473247            return false;
    32483248    }
    32493249
     3250    if (dbver == "1199")
     3251    {
     3252        const QString updates[] = {
     3253"ALTER TABLE diseqc_tree "
     3254"ADD COLUMN address TINYINT UNSIGNED NOT NULL default 16 AFTER description;",
     3255""
     3256};
     3257        if (!performActualUpdate(updates, "2000", dbver))
     3258            return false;
     3259    }
     3260
    32503261//"ALTER TABLE cardinput DROP COLUMN preference;" in 0.22
    32513262//"ALTER TABLE channel DROP COLUMN atscsrcid;" in 0.22
    32523263//"ALTER TABLE recordedmarkup DROP COLUMN offset;" in 0.22