How to correct this error?

cannot convert ‘uint16_t* {aka unsigned int*}’ to ‘uint8_t* {aka unsigned char*}’ for argument ‘2’ to ‘void Block_Output(uint8_t, uint8_t*)’

I changed the Block_Output arguments to uint16_t, but I need them as uint8_t
A variable following this function has to be uint8_t.

extern uint16_t capture_data[CAPTURE_SIZE];
extern uint16_t capture_valid[CAPTURE_SIZE];


void Block_Output (uint8_t cnt, uint8_t *data) { 
 
  while (cnt > 0) { 
    UART_UDR = *data; 
    checksum ^= *data++; 
    cnt--; 
    while (!(UART_UCSRA & UART_UDRE)) //while (!(UART_UCSRA & UART_UDRE)) - ORIGINAL
      {}; 
  } 
}


void SendCaptureData( uint8_t cmd, uint8_t ack ) {
 
  SendByte( 0x02 ); 
  SendByte( 4 + 2 * capture_cnt ); 
  SendByte( cmd ); 
  SendByte( ack ); 
 
  checksum = (4 + 2 * capture_cnt) ^ cmd ^ ack; 
  Block_Output( capture_cnt, capture_data );
  Block_Output( capture_cnt, capture_valid );// -------ERROR HERE------------
  SendByte( checksum ); 
  SendByte( 0x03 ); 
}

Solved it. I declared the array variables as uint16_t instead of uint8_t