- data[0] |= 0x80; // enable static current limiting
- eDebug("[SEC] set static current limiting");
- }
- else
- {
- data[0] &= ~0x80; // enable dynamic current limiting
- eDebug("[SEC] set dynamic current limiting");
+ char dev[16];
+
+ // FIXMEEEEEE hardcoded i2c devices for dm7025 and dm8000
+ if (m_slotid < 2)
+ sprintf(dev, "/dev/i2c/%d", m_slotid);
+ else if (m_slotid == 2)
+ sprintf(dev, "/dev/i2c/2"); // first nim socket on DM8000 use /dev/i2c/2
+ else if (m_slotid == 3)
+ sprintf(dev, "/dev/i2c/4"); // second nim socket on DM8000 use /dev/i2c/4
+ int fd = ::open(dev, O_RDWR);
+
+ unsigned char data[2];
+ ::ioctl(fd, I2C_SLAVE_FORCE, 0x10 >> 1);
+ if(::read(fd, data, 1) != 1)
+ eDebug("[SEC] error read lnbp (%m)");
+ if ( m_sec_sequence.current()->mode == eSecCommand::modeStatic )
+ {
+ data[0] |= 0x80; // enable static current limiting
+ eDebug("[SEC] set static current limiting");
+ }
+ else
+ {
+ data[0] &= ~0x80; // enable dynamic current limiting
+ eDebug("[SEC] set dynamic current limiting");
+ }
+ if(::write(fd, data, 1) != 1)
+ eDebug("[SEC] error write lnbp (%m)");
+ ::close(fd);