-ccdbg_write_read(struct ccdbg *dbg, uint8_t set)
-{
- uint8_t get;
-
- ccdbg_write(dbg, CC_DATA|CC_CLOCK|CC_RESET_N, set);
- get = ccdbg_read(dbg);
- printf("%c %c %c -> %c %c %c\n",
- is_bit(set, 'C', CC_CLOCK),
- is_bit(set, 'D', CC_DATA),
- is_bit(set, 'R', CC_RESET_N),
- is_bit(get, 'C', CC_CLOCK),
- is_bit(get, 'D', CC_DATA),
- is_bit(get, 'R', CC_RESET_N));
+ccdbg_write_read(struct ccdbg *dbg, uint8_t set, uint8_t mask)
+{
+ uint8_t get = set;
+
+ if (mask != (CC_DATA|CC_CLOCK|CC_RESET_N))
+ get = ccdbg_read(dbg);
+ ccdbg_write(dbg, mask, set);
+ printf ("%c %c %c",
+ is_bit(set, mask, 'C', CC_CLOCK),
+ is_bit(set, mask, 'D', CC_DATA),
+ is_bit(set, mask, 'R', CC_RESET_N));
+ if (mask != (CC_DATA|CC_CLOCK|CC_RESET_N))
+ printf(" -> %c %c %c",
+ is_bit(get, 0xf, 'C', CC_CLOCK),
+ is_bit(get, 0xf, 'D', CC_DATA),
+ is_bit(get, 0xf, 'R', CC_RESET_N));
+ printf("\n");