#define MAX_QUEUE_SIZE 6

String queue[MAX_QUEUE_SIZE];
int front = 0, rear = -1, count = 0;

void setup() {
  Serial.begin(115200);
}

void loop() {
  processInput("CT05-Hello");
  processInput("DT04-Hi");
  processInput("AT17-Welcome");
}

void processInput(String input) {
  Serial.println("Nhận chuỗi: " + input);
  enqueue(input);
  int readCount = getReadCount();
  Serial.println("Số phần tử có thể đọc: " + String(readCount));
  int availableSpace = getAvailableSpace();
  Serial.println("Không gian khả dụng còn lại: " + String(availableSpace));
  Serial.println();
}

void enqueue(String item) {
  if (count == MAX_QUEUE_SIZE) {
    Serial.println("Hàng đợi đã đầy!");
    return;
  }
  rear = (rear + 1) % MAX_QUEUE_SIZE;
  queue[rear] = item;
  count++;
}

int getReadCount() {
  return count;
}

int getAvailableSpace() {
  return MAX_QUEUE_SIZE - count;
}