You might need to explain what you need a bit more. The example that you give above could be solved with the 'transforms' device. If you make a channel that has an expression like:
channels:
- Channel1
expr: not c[0]
For your channel2, then it will always be the inverse of Channel1. However, that's not necessarily conditional.
Transforms may still be an answer for you, if your gateway is new enough. Python added conditional expressions is 2.5, so gateways like the ConnectPort X2e or Transport products will allow you to use those as well.