Serial.read(); и конечный автомат для AT-команд

У меня возникла странная проблема: индекс массива не увеличивается, и когда я печатаю значение из serialdata[pointingfinger], он просто выдает пустое место. Это машина состояний (я полагаю), которая должна проверять, какой символ в данный момент записывается в массив, и его позицию, чтобы избежать поиска по нему позже. Когда у нас есть законченная строка, она переключает большую машину состояний в другой режим (который проверяет, есть ли команда на четыре символа дальше), когда обработка завершена, она должна вернуться к получению следующей строки.

Это Arduino Leonardo, Serial — это USB, а Serial1 — это то место, где я отправляю и получаю AT-команды.

const long interval = 1000;
static long currentMillis;

char plussignpoint = 0; //Чтобы определить, где находится + в +CCLK в массиве символов

char serialdata[256] = ""; //Массив для хранения символов перед анализом

int rdpos = 0;

int pointingfinger = 0;

char timeen = 0;
byte stat0 = 0;
char futstat0 = 0;
char searchcharpos = 0;

char enabled = 0;

char searchchartype = 0;

char smsvalid = 0;

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial1.write("ATE0\r");
}

void loop() {
    if (millis() - currentMillis >= interval)
    {
      Serial1.print("AT+CCLK?\r"); //спросить время

      enabled = 1;

      currentMillis = millis();
    }

    if (enabled == 1) {
      if (stat0 == 0) {
        if (Serial1.available () > 0) {
          pointingfinger++;
          serialdata[pointingfinger] = Serial1.read();
          if (serialdata[pointingfinger] == '+') {

            searchcharpos = pointingfinger;
            searchchartype = 1;
            futstat0 = 1;
          }
          else if (serialdata[pointingfinger] == '$') {
            if (smsvalid = 1) {
              searchcharpos = pointingfinger;
              searchchartype = 2;
              futstat0 = 2;
            }
            if (smsvalid = 0) {
              stat0 = futstat0;
              pointingfinger = 0;
            }
          }
          else if (serialdata[pointingfinger] == '\n') {
            stat0 = futstat0;
            pointingfinger = 0;
            enabled = 0;
          }
          else if (serialdata[pointingfinger] == '\r') {
            stat0 = futstat0;
            pointingfinger = 0;
            enabled = 0;
          }
          else {
            stat0 = 0;
            pointingfinger = 0;
          }
        }

        if (pointingfinger == 255) {
          pointingfinger = 0;
          enabled = 0;
        }

      }
    }
}

ПРАВКА: Я забыл указать, какие AT-команды он должен анализировать:

Arduino: AT+CCLK?

SIM800H: +CCLK: "04/01/01,01:35:31+00"

         OK

, 👍1