Usar Watchdog con codigo de comunicacion

Busco implementar un watchdog en un codigo de comunicacion, con el fin de evitar cuelgues en caso de interrumpirse la transmision de datos. Aqui anexo el codigo:

if (sendATcommand(F("AT+FTPPUT=1"), F("+FTPPUT: 1,1,"), 30000)==1)
            {
               //Serial.println(F("Iniciando proceso de transferencia de datos"));
                int data_size=0, aux;
                while(Serial.available()==0);
                aux = Serial.read();
                do{
                    data_size *= 10;
                    data_size += (aux-0x30);
                    while(Serial.available()==0);
                    aux = Serial.read();                      
                }while(aux != 0x0D);
                                
                snprintf(comA, sizeof(comA), "AT+FTPPUT=2,%d", data_size);
                snprintf(comB, sizeof(comB), "+FTPPUT: 2,%d", data_size);
                                
                myFile = SD.open(filename);  
                if (myFile) {
                    unsigned long archivosize = myFile.size();
                    while(myFile.available()){
                        while(archivosize >= data_size){
                            if (sendATcommand(comA,comB,3000) == 1){
                            for(int d = 0; d < data_size; d++){
                                Serial.write(myFile.read());
                                archivosize -= 1;
                                }
                            }
                        }

                        snprintf(comA, sizeof(comA), "AT+FTPPUT=2,%d", archivosize);
                        snprintf(comB, sizeof(comB), "+FTPPUT: 2,%d", archivosize);
                                               
                        if (sendATcommand(comA,comB,3000) == 1){
                        for(int t = 0; t < archivosize; t++){
                        Serial.write(myFile.read());
                        }
                        }
                        }
                        myFile.close();
                    }
                    delay(500);
                    if (sendATcommand(F("AT+FTPPUT=2,0"), F("+FTPPUT: 1,0"), 30000)==1)
                    {
                    //Serial.println(F("Archivo enviado"));                                           
                    //Serial.println(F("Sesion finalizada"));   
                    
                    digitalWrite(3,HIGH); //Led titila indicando que se realizo el envio de manera exitosa 
                    delay(500);
                    digitalWrite(3,LOW);
                    delay(500);
                    digitalWrite(3,HIGH);
                    delay(500);
                    digitalWrite(3,LOW);
                    delay(500);
                    digitalWrite(3,HIGH);
                    delay(500);
                    digitalWrite(3,LOW);
                    }
                else 
            {
                sendATcommand(F("AT+FTPPUT=2,0"), F("OK"), 30000);                    
            }
        }
        
    else
    {
      //  Serial.println(F("Error sesion FTP"));
        
        digitalWrite(3,HIGH);
        delay(5000);
        digitalWrite(3,LOW); //Led se mantiene encendido por 5 segundos indicando un error al enviar el archivo
    }