static int proto_series_led_row(monome_t *monome, uint_t row, size_t count, const uint8_t *data) { uint16_t sdata; switch( ((monome->rows > 8) << 1) | (count > 1)) { case 0x0: /* 1-byte monome, 1-byte message */ case 0x1: /* 1-byte monome, 2-byte message */ return proto_series_led_col_row_8( monome, PROTO_SERIES_LED_ROW_8, row, data); case 0x2: /* 2-byte monome, 1-byte message */ sdata = *data; return proto_series_led_col_row_16( monome, PROTO_SERIES_LED_ROW_16, row, ((const uint8_t *) &sdata)); case 0x3: /* 2-byte monome, 2-byte message */ return proto_series_led_col_row_16( monome, PROTO_SERIES_LED_ROW_16, row, data); } return -1; }
static int proto_series_led_col(monome_t *monome, uint_t x, uint_t y_off, size_t count, const uint8_t *data) { uint16_t sdata; switch( ((monome_get_rows(monome) > 8) << 1) | (count > 1)) { case 0x0: /* 1-byte monome, 1-byte message */ case 0x1: /* 1-byte monome, 2-byte message */ return proto_series_led_col_row_8( monome, PROTO_SERIES_LED_COL_8, x, data); case 0x2: /* 2-byte monome, 1-byte message */ sdata = *data; return proto_series_led_col_row_16( monome, PROTO_SERIES_LED_COL_16, x, ((const uint8_t *) &sdata)); case 0x3: /* 2-byte monome, 2-byte message */ return proto_series_led_col_row_16( monome, PROTO_SERIES_LED_COL_16, x, data); } return -1; }