int dvb_diseqcSetup(int frontend_fd, uint32_t frequency, diseqcSwitchType_t type, uint32_t port, uint32_t polarization) { if(g_uncommited) { uint8_t ucmd[4] = { 0xe0, 0x10, 0x39, g_uncommited - 1 }; dvb_diseqcSend(frontend_fd, ucmd, 4); } int _port = (type == diseqcSwitchMulti) ? port & 1 : port; uint8_t data_hi = (type == diseqcSwitchMulti) ? 0x70 : 0xF0; uint8_t cmd[4] = { 0xe0, 0x10, 0x38, data_hi | diseqc_data_lo(_port, (polarization == SEC_VOLTAGE_13), frequency) }; dvb_diseqcSend(frontend_fd, cmd, 4); return 0; }
static int32_t dvbfe_diseqcSetup(uint32_t adapter, uint32_t frequency, EIT_media_config_t *media) { if((dvbfe_getType(adapter) != SYS_DVBS) || (appControlInfo.dvbsInfo.diseqc.type == 0)) { return 0; } if(appControlInfo.dvbsInfo.diseqc.uncommited) { uint8_t ucmd[4] = { 0xe0, 0x10, 0x39, appControlInfo.dvbsInfo.diseqc.uncommited-1 }; dvbfe_diseqcSend(adapter, ucmd, 4); } int32_t is_vertical = media ? media->dvb_s.polarization == 0x01 : appControlInfo.dvbsInfo.polarization != 0; int32_t port = appControlInfo.dvbsInfo.diseqc.type == diseqcSwitchMulti ? appControlInfo.dvbsInfo.diseqc.port & 1 : appControlInfo.dvbsInfo.diseqc.port; uint8_t data_hi = appControlInfo.dvbsInfo.diseqc.type == diseqcSwitchMulti ? 0x70 : 0xF0; uint8_t cmd[4] = { 0xe0, 0x10, 0x38, data_hi | diseqc_data_lo(port, is_vertical, frequency) }; dvbfe_diseqcSend(adapter, cmd, 4); return 0; }