Simple USB-MIDI foot controller

Dependencies:   PinDetect USBDevice_STM32F103 mbed-STM32F103C8T6

midiswitch.cpp

Committer:
SpotlightKid
Date:
2017-08-04
Revision:
3:8b8cb5392fa0
Child:
6:2f804d29cbb0

File content as of revision 3:8b8cb5392fa0:

#include "midiswitch.h"

SwitchHandler::SwitchHandler(EventQueue * queue, MIDI_CB cb, SwitchConfig * sw) :
    queue(queue), write_cb(cb), btn(sw->pin), control(sw->control), channel(sw->channel), on_value(sw->on_value), off_value(sw->off_value) {
    btn.attach_asserted(this, &SwitchHandler::handle_pressed);
    btn.attach_deasserted(this, &SwitchHandler::handle_released);
    btn.setSampleFrequency();
#ifndef NDEBUG
    serial = NULL;
#endif
};

void SwitchHandler::handle_pressed(void) {
#ifndef NDEBUG
    serial->printf("Switch pressed: control=%d channel=%d value=%d\r\n", control, channel, on_value);
#endif
    queue->call(write_cb, MIDIMessage::ControlChange((int) control, (int) on_value, (int) (channel - 1)));
};

void SwitchHandler::handle_released(void) {
#ifndef NDEBUG
    serial->printf("Switch released: control=%d channel=%d value=%d\r\n", control, channel, off_value);
#endif
    queue->call(write_cb, MIDIMessage::ControlChange((int) control, (int) off_value, (int) (channel - 1)));
};