Функция сортировки структуры

Доброго всем!
Рисую управление устройством.
Устройство читает инструкции и тщательно выполняет.
Каждая инструкция - пятиэлементная структура. Первый элемент - время в секундах до выполнения следующей инструкции.
Инструкции предполагается довольно часто редактировать, а время выполнения должно идти последовательно. Посему сортировка.
Инструкции собраны в массив структур, его и сортирую.
В теле программы сортируется без замечаний, а вот попытка вынести сортировку в отдельную функцию провалилась. Пишет ошибки, суть которых настолько неясна, что даже непонятно в какую сторону гуглить.
Подскажите, пжл, где тут порылась…
Вот код:
‘’'struct commandLine{
uint16_t timeFromStart;
uint8_t deviceName;
boolean onDevice;
uint16_t timeDeviceOn;
};

void setup()
{
Serial.begin(9600);

commandLine Formovka[100];
Formovka[0] = (commandLine){17, 2, 1, 170};
Formovka[1] = (commandLine){8, 3, 1, 88};
Formovka[2] = (commandLine){5, 2, 1, 55};
Formovka[3] = (commandLine){10, 3, 1, 100};
Formovka[4] = (commandLine){21, 2, 1, 210};
Formovka[5] = (commandLine){13, 3, 1, 130};

int arrayLength = sizeof(Formovka) / sizeof(Formovka[0]);
for(int i = 0; i < arrayLength; i++){
int z = i;
for(int x = i+1; x < arrayLength-(i+1); x++){
if(Formovka.timeFromStart && Formovka[z].timeFromStart){
if(Formovka[z].timeFromStart > Formovka.timeFromStart) {
Formovka[arrayLength-1] = Formovka[z];
Formovka[z] = Formovka;
Formovka = Formovka[arrayLength-1];
z = x;
Serial.println(“Replace”);
}
}

}
if(i != z) i--;

}
Serial.println(" End Of The Sort");

//sortArr(Formovka);
}

void loop()
{

}

/*
void sortArr(struct commandLine Formovka){
int arrayLength = sizeof(Formovka) / sizeof(Formovka[0]);
for(int i = 0; i < arrayLength; i++){
int z = i;
for(int x = i+1; x < arrayLength-(i+1); x++){
if(Formovka.timeFromStart && Formovka[z].timeFromStart){
if(Formovka[z].timeFromStart > Formovka.timeFromStart) {
Formovka[arrayLength-1] = Formovka[z];
Formovka[z] = Formovka;
Formovka = Formovka[arrayLength-1];
z = x;
Serial.println(“Replace”);
}
}

}
if(i != z) i--;

}
Serial.println(" End Of The Sort");
}
*/
‘’’

Забавные чекбоксы появились вместо переменных…

Потому что код не правильно вставил.

Кавычки ОБРАТНЫЕ и на отдельных строках.

Точно…

struct commandLine{
  uint16_t timeFromStart;
  uint8_t deviceName;
  boolean onDevice;
  uint16_t timeDeviceOn;
};

void setup()
{
  Serial.begin(9600);
  
  commandLine Formovka[100];
  Formovka[0] = (commandLine){17, 2, 1, 170};
  Formovka[1] = (commandLine){8, 3, 1, 88};
  Formovka[2] = (commandLine){5, 2, 1, 55};
  Formovka[3] = (commandLine){10, 3, 1, 100};
  Formovka[4] = (commandLine){21, 2, 1, 210};
  Formovka[5] = (commandLine){13, 3, 1, 130};
  
  int arrayLength = sizeof(Formovka) / sizeof(Formovka[0]);
  for(int i = 0; i < arrayLength; i++){
    int z = i;
    for(int x = i+1; x < arrayLength-(i+1); x++){
      if(Formovka[x].timeFromStart && Formovka[z].timeFromStart){
        if(Formovka[z].timeFromStart > Formovka[x].timeFromStart) {
        Formovka[arrayLength-1] = Formovka[z];
        Formovka[z] = Formovka[x];
        Formovka[x] = Formovka[arrayLength-1];
        z = x;
        Serial.println("Replace");
        } 
      }
      
    }
    if(i != z) i--;
  }
  Serial.println(" End Of The Sort");
  
  //sortArr(Formovka);
}


void loop()
{
 
}

/*
void sortArr(struct commandLine Formovka){
  int arrayLength = sizeof(Formovka) / sizeof(Formovka[0]);
  for(int i = 0; i < arrayLength; i++){
    int z = i;
    for(int x = i+1; x < arrayLength-(i+1); x++){
      if(Formovka[x].timeFromStart && Formovka[z].timeFromStart){
        if(Formovka[z].timeFromStart > Formovka[x].timeFromStart) {
        Formovka[arrayLength-1] = Formovka[z];
        Formovka[z] = Formovka[x];
        Formovka[x] = Formovka[arrayLength-1];
        z = x;
        Serial.println("Replace");
        } 
      }
      
    }
    if(i != z) i--;
  }
  Serial.println(" End Of The Sort");
}
*/

Зачем выделяешь память для 100, если потом используешь только 6? Это трата памяти.

Будет использоваться несколько десятков. Обычно до 20, но бывает и больше. Подумал, что раз всё равно два разряда на дисплее понадобится, то до 99 сделать.
Если на МиниПро не поместится - будем отрезать всё лишнее

Чтобы такое не писать, используй перед определением структуры модификатор typedef.

Это плохой подход. На микроконтроллерах надо сразу правильно писать (заведи define) или инициализируй сразу, без указания размера.

Например так:

commandLine Formovka[] = {
  {17, 2, 1, 170};
  {8, 3, 1, 88};
  {5, 2, 1, 55};
  {10, 3, 1, 100};
  {21, 2, 1, 210};
  {13, 3, 1, 130}
};

Ну и сортировка какая-то мне не понятная. «Пузырек» чтоли?

Спасибо, буду изучать.

Спасибо, поменяю

Какой-то странный пузырек.))

Лучше напиши словами как сортировка должна проходить:
Например:
Сначала сортируем по времени, потом по размеру, потом по цвету и так далее.

Вот таких слов не знаю, к сожалению. Поискал чего умного и при этом мне понятного, ничего не нашёл и написал просто чтобы работало.

Ну так напиши словами. Как я тебе выше писал.

Сортировка по timeFromStart
Чтобы последовательность выполнения соблюдалась

А условия какие? Чем меньше это время - тем выше поднять (присвоить индекс ноль) или наоборот (самый последний)?

Ругается. Compilation error: expected ‘}’ before ‘;’ token

Потому что я с планшета писал и не все исправил…

  commandLine Formovka[] = {
  {17, 2, 1, 170},
  {8, 3, 1, 88},
  {5, 2, 1, 55},
  {10, 3, 1, 100},
  {21, 2, 1, 210},
  {13, 3, 1, 130}
  };