tasks_file.h
    
        This library provides assynchronous file operations. It uses STask to execute the
        synchronous operations from interface/file.h in a seperate thread.
	
    File information
    
	Classes
    
    TaskFileWrite
    
        Used to write to a file. A file may be created, an existing file replaced or to an existing file
        appended.
    
    class TaskFileWrite : public STask {
    void SStart();
    char * workingPath;
    char * fileName;
    bool append;
    class IFileWrite * file;
    byte * buffer;
    unsigned length;
    bool last;
public:
    TaskFileWrite(class STaskContext * context, const char * workingPath, const char * fileName, bool append);
    ~TaskFileWrite();
    void write(byte * buffer, unsigned length, bool last);
    void writeBuffer(byte * buffer, unsigned length, bool last);
};
	
    TaskFileWrite
    
        Contructor. TaskFileWrite uses STask as base class, which means for the operation, first
        the class is allocated with all required parameters and then SStart() is used to start it.
        The TaskProgress, TaskComplete and TaskFailed functions are used to indicate
        progress and completion of the Task.
        Parameters
            
                | class STaskContext * context | 
                    
                        An STaskContext must be allocated for the operation. It manages a pool
                        of threads for the execution.
                     | 
                
                | const char * workingPath | 
                    
                        The path in which the file is written. If parts of the path do not exist
                        the folders are created.
                     | 
                
                | const char * fileName | 
                    
                        The name of the file to be written. If the file does not exist, it is
                        created.
                     | 
                
                | bool append | 
                    
                        If true the data is appended to the file, if it already exists, otherwise
                        the file is overwritten
                     | 
                
            
        
    write
    
        Write data to the file. May be called after the TaskProgress callback was called, either
        after SStart() or the last write() call.
        The data passed by this function is copied into a new buffer.
        Parameters
            
                | byte * buffer | 
                    
                        Buffer containing the data
                     | 
                
                | unsigned length | 
                    
                        The length of the data in bytes
                     | 
                
                | bool last | 
                    
                        Indicates that this is the last block of data. The operation completes
                        when this parameter is set to true
                     | 
                
            
        
    writeBuffer
    
        Same functionality as write, except the data is not copied and the buffer is freed
        after the data is written.
    
    TaskFileRead
    
        Used to read from a file.
    
    class TaskFileRead : public STask {
    void SStart();
    char * workingPath;
    char * fileName;
    class IFileRead * file;
    byte * buffer;
    unsigned length;
    bool last;
public:
    TaskFileRead(class STaskContext * context, const char * workingPath, const char * fileName, unsigned length, bool last);
    ~TaskFileRead();
    void read(unsigned length, bool last);
    unsigned getLength() { return length; };
    void getData(byte * buffer, unsigned length) { memcpy(buffer, this->buffer, length); };
};
    TaskFileRead
    
        
            Contructor. TaskFileRead uses STask as base class, which means for the operation, first
            the class is allocated with all required parameters and then SStart() is used to start it.
            The TaskProgress, TaskComplete and TaskFailed functions are used to indicate
            progress and completion of the Task.
        
        Parameters
            
                | class STaskContext * context | 
                    
                        An STaskContext must be allocated for the operation. It manages a pool
                        of threads for the execution.
                     | 
                
                | const char * workingPath | 
                    
                        The path from which the file is read
                     | 
                
                | const char * fileName | 
                    
                        The name of the file to be read.
                     | 
                
                | unsigned length | 
                    
                        The length to be read initially
                     | 
                
                | bool last | 
                    
                        If true no othe data shall be read after the initial block.
                     | 
                
            
        
    
    read
    
        Initiates reading of the next block of data. May be called after the TaskProgress
        callback was called, either after SStart() or the last read() call.
    
    
        Parameters
        - 
            
                | unsigned length | 
                    
                        The length to be read initially
                     | 
                
                | bool last | 
                    
                        If true no othe data shall be read after the initial block.
                     | 
                
            
         
    
    getLength
    
        Return the actual read length after the TaskProgress call
    
    getData
    
        Copies the read data.
    
    
        Parameters
        - 
            
                | byte * buffer | 
                    
                        The buffer the data is copied to.
                     | 
                
                | unsigned length | 
                    
                        The length to be copied.
                     |