[SOLUCIONADO] Problemas para Invocar funciones

Saludos colegas.

Soy nuevo en arduino y ya me tope con un problema que tal vez, sea posible realizarse. La idea es simple, invocar a una función cuyo nombre se encuentra almacenada

Tengo el siguiente código

typedef struct {
  char* fnNombre;
  //void (*fn)(); //antes intente asi, despues opte por "sincronizar" en un for, ya que marcaba error
  long intervalo; //tiempo que indica cada cuanto se ejecuta una funcion
  long tiempoPrevio; //contador de tiempo para la funcion en cuestion
} mFns;
typedef void (*fnc)();

mFns fns [] = { {"hilo1", 500L, 0L}, {"hilo2", 2000L, 0L} }; //aqui se definen los datos
fnc funs[] = { hilo1, hilo2 }; //aqui van las funciones

...otras variables del programa

... el setup

void loop() {
  // put your main code here, to run repeatedly:
  //inicia multitarea
  multiTarea();
}

void multiTarea(){
  Serial.println("entro");
  //contador de tiempo
  unsigned long tiempoAct = millis();

  //este es el for del que hable al principio
  for (int i = 0; i<sizeof(fns); i++) {
    Serial.println("for");
    if (tiempoAct - fns[i].tiempoPrevio > fns[i].intervalo){
      fns[i].tiempoPrevio = tiempoAct;
      funs[i](); //aqui se supone que se invoca la funcion
    }
  }
}

//estas son las funciones hilo1 e hilo2

void hilo1() {
  if (estadoled1=='H'){
    digitalWrite(led1, LOW);
    estadoled1 = 'L';
    Serial.println("1 - Low");
  }
  else{
    digitalWrite(led1, HIGH);
    estadoled1 = 'H';
    Serial.println("1 - High");
  }  
}

void hilo2(){
  if (estadoled2=='H'){
    digitalWrite(led2, LOW);
    estadoled2 = 'L';
    Serial.println("2 - Low");
  }
  else{
    digitalWrite(led2, HIGH);
    estadoled2 = 'H';
    Serial.println("2 - High");
  } 
}

Pues bien, el IDE de arduino lo valida como correcto, lo compila y lo sube al arduino, pero este simplemente no hace nada, los print del serial llegan hasta “for”, los println de las funciones hilo1 y 2 nunca son alcanzados, parece como si encontrara un error y se detiene, esta es la salida:

sY®®W5
entro
for
for
for

El motivo es meramente de aprendizaje, yo se que esto se puede obviar fácilmente simplemente llamando a la función, pues no tiene mucho sentido almacenarlas así y llamarlas en un ciclo, simplemente es un ejercicio para dominar a este potro.

¿Que estoy haciendo mal?

Gracias por su valiosa ayuda.

Saludos.

Ya lo he resuelto, por si alguien le interesa, asi quedo el sketch

/***INCLUSIONES***/

/****VARIABLES MULTITAREA****/
typedef struct {
  char* fnNombre;
  void (*fn)();
  long intervalo;
  long tiempoPrevio;
} mFns;

mFns fns [] = { {"hilo1", hilo1, 1000, 0}, {"hilo2", hilo2, 3000, 0} };
int len = sizeof(fns)/sizeof(char*)/5; //tamaño del array

/******VARIABLES DE APLICACION*****/
//define pines para leds
int led1 = 13;
int led2 = 12;

//variables de estado
char estadoled1 = 'H';
char estadoled2 = 'L';

void setup() {
  // put your setup code here, to run once:
  //configura pines led
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  
  Serial.begin(19200);
  Serial.println("setup");
}

void loop() {
  // put your main code here, to run repeatedly:
  //inicia multitarea
  multiTarea();
}

void multiTarea(){
  //contador de tiempo
  long tiempoAct = millis();

  for (int i = 0; i<len; i++) {
    if (tiempoAct - fns[i].tiempoPrevio > fns[i].intervalo){
      fns[i].tiempoPrevio = tiempoAct; //almacena el tiempo actual para la funcion
      (*fns[i].fn)(); //invoca la funcion 
    }
  }
}

void hilo1() {
  if (estadoled1=='H'){
    digitalWrite(led1, LOW);
    estadoled1 = 'L';
    Serial.println("1 - Low");
  }
  else{
    digitalWrite(led1, HIGH);
    estadoled1 = 'H';
    Serial.println("1 - High");
  }  
}

void hilo2(){
  if (estadoled2=='H'){
    digitalWrite(led2, LOW);
    estadoled2 = 'L';
    Serial.println("2 - Low");
  }
  else{
    digitalWrite(led2, HIGH);
    estadoled2 = 'H';
    Serial.println("2 - High");
  } 
}

Por favor edita tu primer post y agrégale [SOLUCIONADO] al comienzo