Gleb Klochkov / Mbed OS Climatcontroll_Main

Dependencies:   esp8266-driver

Committer:
glebiuskv
Date:
Fri Apr 13 08:53:46 2018 +0000
Revision:
0:2f0e1e23c242
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
glebiuskv 0:2f0e1e23c242 1 from __future__ import print_function
glebiuskv 0:2f0e1e23c242 2 import sys
glebiuskv 0:2f0e1e23c242 3 import re
glebiuskv 0:2f0e1e23c242 4 import time
glebiuskv 0:2f0e1e23c242 5 import mido
glebiuskv 0:2f0e1e23c242 6 from mido import Message
glebiuskv 0:2f0e1e23c242 7
glebiuskv 0:2f0e1e23c242 8
glebiuskv 0:2f0e1e23c242 9 def test_midi_in(port):
glebiuskv 0:2f0e1e23c242 10 expected_messages_count=0
glebiuskv 0:2f0e1e23c242 11 while expected_messages_count < 7:
glebiuskv 0:2f0e1e23c242 12 for message in port.iter_pending():
glebiuskv 0:2f0e1e23c242 13 if message.type in ('note_on', 'note_off', 'program_change', 'sysex'):
glebiuskv 0:2f0e1e23c242 14 yield message
glebiuskv 0:2f0e1e23c242 15 expected_messages_count+=1
glebiuskv 0:2f0e1e23c242 16 time.sleep(0.1)
glebiuskv 0:2f0e1e23c242 17
glebiuskv 0:2f0e1e23c242 18 def test_midi_loopback(input_port):
glebiuskv 0:2f0e1e23c242 19 expected_messages_count=0
glebiuskv 0:2f0e1e23c242 20 while expected_messages_count < 1:
glebiuskv 0:2f0e1e23c242 21 for message in input_port.iter_pending():
glebiuskv 0:2f0e1e23c242 22 print('Test MIDI OUT loopback received {}'.format(message.hex()))
glebiuskv 0:2f0e1e23c242 23 expected_messages_count+=1
glebiuskv 0:2f0e1e23c242 24
glebiuskv 0:2f0e1e23c242 25 def test_midi_out_loopback(output_port,input_port):
glebiuskv 0:2f0e1e23c242 26 print("Test MIDI OUT loopback")
glebiuskv 0:2f0e1e23c242 27 output_port.send(Message('program_change', program=1))
glebiuskv 0:2f0e1e23c242 28 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 29
glebiuskv 0:2f0e1e23c242 30 output_port.send(Message('note_on', note=21))
glebiuskv 0:2f0e1e23c242 31 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 32
glebiuskv 0:2f0e1e23c242 33 output_port.send(Message('note_off', note=21))
glebiuskv 0:2f0e1e23c242 34 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 35
glebiuskv 0:2f0e1e23c242 36 output_port.send(Message('sysex', data=[0x7E,0x7F,0x09,0x01]))
glebiuskv 0:2f0e1e23c242 37 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 38
glebiuskv 0:2f0e1e23c242 39 output_port.send(Message('sysex', data=[0x7F,0x7F,0x04,0x01,0x7F,0x7F]))
glebiuskv 0:2f0e1e23c242 40 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 41
glebiuskv 0:2f0e1e23c242 42 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41]))
glebiuskv 0:2f0e1e23c242 43 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 44
glebiuskv 0:2f0e1e23c242 45 output_port.send(Message('sysex', data=[0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D]))
glebiuskv 0:2f0e1e23c242 46 test_midi_loopback(input_port)
glebiuskv 0:2f0e1e23c242 47
glebiuskv 0:2f0e1e23c242 48 portname=""
glebiuskv 0:2f0e1e23c242 49
glebiuskv 0:2f0e1e23c242 50 while portname=="":
glebiuskv 0:2f0e1e23c242 51 print("Wait for MIDI IN plug ...")
glebiuskv 0:2f0e1e23c242 52 for name in mido.get_input_names():
glebiuskv 0:2f0e1e23c242 53 matchObj = re.match( r'Mbed', name)
glebiuskv 0:2f0e1e23c242 54
glebiuskv 0:2f0e1e23c242 55 if matchObj:
glebiuskv 0:2f0e1e23c242 56 portname=name
glebiuskv 0:2f0e1e23c242 57 time.sleep( 1 )
glebiuskv 0:2f0e1e23c242 58
glebiuskv 0:2f0e1e23c242 59 try:
glebiuskv 0:2f0e1e23c242 60 input_port = mido.open_input(portname)
glebiuskv 0:2f0e1e23c242 61 output_port = mido.open_output(portname)
glebiuskv 0:2f0e1e23c242 62
glebiuskv 0:2f0e1e23c242 63 print('Using {}'.format(input_port))
glebiuskv 0:2f0e1e23c242 64
glebiuskv 0:2f0e1e23c242 65 print("Test MIDI IN")
glebiuskv 0:2f0e1e23c242 66
glebiuskv 0:2f0e1e23c242 67 for message in test_midi_in(input_port):
glebiuskv 0:2f0e1e23c242 68 print('Test MIDI IN received {}'.format(message.hex()))
glebiuskv 0:2f0e1e23c242 69
glebiuskv 0:2f0e1e23c242 70 test_midi_out_loopback(output_port,input_port)
glebiuskv 0:2f0e1e23c242 71 except KeyboardInterrupt:
glebiuskv 0:2f0e1e23c242 72 pass