#ifndef CHANNELTHREAD_H
#define CHANNELTHREAD_H

#include <QThread>
#include <QDebug>
#include <QTimer>
#include <QtCore/qmath.h>
#include <QTime>

#include "bass.h"
#include "qextserialport.h"

#define BANDS       24
#define SPEC_WIDTH  700
#define SPEC_HEIGHT 400

class channelthread : public QThread
{
    Q_OBJECT
public:
    explicit channelthread(QObject *parent = 0);
    void run();

private:
    unsigned long chan;
    QTimer *t, *t2, *t3;
    QextSerialPort *port;
    float fft[128], minValue;
    volatile bool serOpn, playing, checked;
    QTime curTime;

    bool openPort(const char * name, BaudRateType baudrate);

signals:
    void endOfPlayback();
    void statusString(QString stat);
    void curPos(double position, double total);

public slots:
    void play(QString filepath);
    void pause();
    void resume();
    void stop();
    void signalUpdate();
    void changePosition(int position);
    void portOpen(QString name);
    void portClose();
    void updateSpectrum();
    void updateTime();
    void checkBoxChange(bool checked);

};

#endif // CHANNELTHREAD_H
