This is a very common problem. I don't know what capabilities iRule has in terms of conditional branching, but there are a couple of techniques commonly used on remotes for handling devices with toggle only power commands, commonly called TOADs.
- Always leave the device on. This is a common solution for cable boxes since there isn't much difference in power consumption whether they're on or in standby. If you do this, simply remove all CBL power commands from your macros.
- Use an alternate command. Some disc players will turn on with a Play command. So you can use Play for Discrete On and Play followed by Power for Discrete Off.
- Use variables to track the power states. For example, consider using one bit, B, for tracking the power state. For Discrete On, if B is false, Power toggle and set B, else do nothing. For Discrete Off, if B is true, Power toggle and clear B, else do nothing. For this to work consistently, iRule (or whatever universal remote you use) must be the only way you turn the device on and off. Otherwise it won't know the state. If it gets out of sync, you can always get back by simply sending a Power toggle.