/*************************************************************************
         RecordState.h  -  state of the audio recorder
                             -------------------
    begin                : Sat Oct 04 2003
    copyright            : (C) 2003 by Thomas Eschenbacher
    email                : Thomas.Eschenbacher@gmx.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef RECORD_STATE_H
#define RECORD_STATE_H

#include "config.h"

namespace Kwave
{
    typedef enum
    {

        /** Settings are not valid yet, cannot open device etc... */
        REC_UNINITIALIZED = 0,

        /** Empty, nothing recorded yet and no recording started */
        REC_EMPTY,

        /**
         * Buffering data for pre-recording, if pre-recording is enabled.
         * Otherwise the state will advance to REC_WAITING_FOR_TRIGGER
         * immediately.
         */
        REC_BUFFERING,

        /**
         * Pre-recording data into a FIFO. If a trigger has been set, this
         * is equal to REC_WAITING_FOR_TRIGGER and the trigger will start
         * the recording.
         */
        REC_PRERECORDING,

        /**
         * Waiting for reaching the trigger if a trigger has been set and
         * enabled. Otherwise the state will advance to REC_RECORDING
         * immediately.
         */
        REC_WAITING_FOR_TRIGGER,

        /**
         * Recording is in progress, producing real data. Can change to
         * REC_PAUSED or REC_DONE.
         */
        REC_RECORDING,

        /**
         * Recording is paused, normally for waiting until the user presses
         * "continue". After pause either the previous state will be set
         * again or the recording can be stopped (change to REC_DONE) or
         * canceled (change to REC_EMPTY).
         */
        REC_PAUSED,

        /**
         * Recording done, data was produced.
         */
        REC_DONE

    } RecordState;
}

#endif /* RECORD_STATE_H */

//***************************************************************************
//***************************************************************************
