Thanks rofafor.
It still fails, I am afraid. The attached trace has this device configuration:
new device number 1
frontend 0/0 provides DVB-S,DVB-S2,DSS with QPSK ("STV090x Multistandard")
new device number 4
SATIP: Creating device CardIndex=3 DeviceNumber=3 [device 0]
new device number 5
SATIP: Creating device CardIndex=4 DeviceNumber=4 [device 1]
new device number 6
SATIP: Creating device CardIndex=5 DeviceNumber=5 [device 2]
new device number 7
SATIP: Creating device CardIndex=6 DeviceNumber=6 [device 3]
The default channel is Sat-Radio 4. The Test sets live Sat-TV on channel 1 and
schedules recording of Sat channel 7, Terrestrial channel 501 and Sat channel 100 (which are all on different transponders). I imagine vdr/satip in this situation should leave live TV on the tuned satip device, schedule recordings on the other sat tuner and a terrestrial tuner, and let vdr use the low-priority directly connected frontend for the remaining recording.
I noticed a couple of minor bugs. When parsing satip.DisabledSources from the setup file, if more then one is disabled, only the first survives. It is subtle, because if you set 2 sources via osd it looks right initially and also after a restart. After the 2nd restart only one is still there. It is due to scribbling over the setup line, that vdr will write back on shutdown. There are a bunch of similar occurrences which may also cause problems (beware casts!). "fgrep -s '(char *)' *"
In cSatipServer::cSatipServer, when parsing modelM, you need to use "else if (strstr(r, "DVBT"))" etc., otherwise DVBT2 is counted twice (similarly DVBC2).
A cosmetic fix: s/GetHeaderLenght/GetHeaderLength/g
I still think it would be preferable, and indeed actually necessary, to let the user specify how many of which type of tuner to use. Something like '--plugin=satip --SatTuners=2 --TerrTuners=2". At the moment, even if the current method can be made to work, I don't see how to reserve a specific number of a specific type (i.e use fewer than are actually available).