- msg(L_INFO, "Setting relays to %02x", ssr_state);
- put_u32_be(req, 1);
- put_u32_be(req+4, ssr_state);
- transaction(8, 4);
+ u32 new = (ssr_state & mask) | data;
+ if (new != ssr_state) {
+ msg(L_INFO, "Setting relays to %02x", new);
+ put_u32_be(req, 1);
+ put_u32_be(req+4, new);
+ transaction(8, 4);
+ ssr_state = new;
+ }