Display Class for BaseMachine

SequencerDisplay.h

Committer:
ryood
Date:
2016-08-26
Revision:
4:e51a5f0891a0
Parent:
3:5b11261a545a
Child:
9:a8adc9b9b3d8

File content as of revision 4:e51a5f0891a0:


/*
 * SequencerDisplay.h
 *
 * 2016.08.13
 *
 */
#ifndef _SEQUENCE_DISPLAY_H_
#define _SEQUENCE_DISPLAY_H_

#include "mbed.h"
#include "Sequence.h"

class SequencerDisplay {
public:
    enum DisplayMode { stop, run };
    
    SequencerDisplay(Sequence* _sequences, int _sequenceNum) :
        sequences(_sequences),
        sequenceNum(_sequenceNum),
        octave(0),
        bpm(120),
        waveShape(0),
        modNumber(0) {};
    
    void update(enum DisplayMode mode, int step) {
        switch (mode) {
        case run:
            displayWhileRun(step);
            break;
        case stop:
            displayWhileStop(step);
            break;
        default:
            error("SequenceDisplay::update: invalid mode");
        };
    };
    
    void setOctave(int _octave) { octave = _octave; };
    int getOctave() { return octave; };
    
    void setBpm(int _bpm) { bpm = _bpm; };
    int getBpm() { return bpm; };
    
    void setWaveShape(int _waveShape) { waveShape = _waveShape; }
    int getWaveShape() { return waveShape; }
    
    void setModNumber(int _modNumber) { modNumber = _modNumber; }
    int getModNumber() { return modNumber; }
    
protected:
    virtual void displayWhileRun(int step) {
        #if (UART_TRACE)
        printf("displayWhileRun step:%d\r\n", step);
        #endif
    };
    
    virtual void displayWhileStop(int step) {
        #if (UART_TRACE)
        printf("displayWhileStop step:%d\r\n", step);
        #endif
    };
    
    Sequence* sequences;
    int sequenceNum;
    int octave;
    int bpm;
    int waveShape;
    int modNumber;
};

#endif  //_SEQUENCE_DISPLAY_H_