Display Class for BaseMachine

SequencerDisplay.h

Committer:
ryood
Date:
2016-08-12
Revision:
0:9a0f67fe026b
Child:
1:1f6d3e65d946

File content as of revision 0:9a0f67fe026b:

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

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

class SequencerDisplay {
public:
    typedef enum { stop, run } DISPLAY_MODE;
    
    SequencerDisplay(Sequence* _sequences, int _sequenceNum) :
        sequences(_sequences),
        sequenceNum(_sequenceNum),
        octave(0) {};
    
    void update(DISPLAY_MODE 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; };
    
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;
};

#endif  //_SEQUENCE_DISPLAY_H_