renamed BLEMIDI to BLEMIDITransport
This commit is contained in:
		
							parent
							
								
									eaa2f29568
								
							
						
					
					
						commit
						6d6fa61f83
					
				|  | @ -1,33 +1,29 @@ | ||||||
| #define DEBUG 4 |  | ||||||
| #include <BLE-MIDI.h> | #include <BLE-MIDI.h> | ||||||
| #include <hardware/BLE-MIDI_ESP32.h> | #include <hardware/BLE-MIDI_ESP32.h> | ||||||
| 
 | 
 | ||||||
| BLEMIDI_CREATE_DEFAULT_ESP32_INSTANCE() | BLEMIDI_CREATE_DEFAULT_ESP32_INSTANCE() | ||||||
| 
 | 
 | ||||||
| USING_NAMESPACE_BLEMIDI |  | ||||||
| 
 |  | ||||||
| unsigned long t0 = millis(); | unsigned long t0 = millis(); | ||||||
| #ifdef ESP32 |  | ||||||
| bool isConnected = false; | bool isConnected = false; | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| //
 | //
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| void setup() | void setup() | ||||||
| { | { | ||||||
|   // Serial communications and wait for port to open:
 |   Serial.begin(115200); | ||||||
|   DEBUG_BEGIN(115200); |   while (!Serial); | ||||||
| 
 |   Serial.println("Booting"); | ||||||
|  |    | ||||||
|   MIDI.begin(1); |   MIDI.begin(1); | ||||||
| 
 | 
 | ||||||
|   bm.onConnected(OnBleMidiConnected); |   BLEMIDI.onConnected(OnBleMidiConnected); | ||||||
|   bm.onDisconnected(OnBleMidiDisconnected); |   BLEMIDI.onDisconnected(OnBleMidiDisconnected); | ||||||
| 
 | 
 | ||||||
|   MIDI.setHandleNoteOn(OnBleMidiNoteOn); |   MIDI.setHandleNoteOn(OnBleMidiNoteOn); | ||||||
|   MIDI.setHandleNoteOff(OnBleMidiNoteOff); |   MIDI.setHandleNoteOff(OnBleMidiNoteOff); | ||||||
| 
 | 
 | ||||||
|   N_DEBUG_PRINTLN(F("Ready")); |   Serial.println(F("Ready")); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
|  | @ -44,7 +40,6 @@ void loop() | ||||||
|     MIDI.sendNoteOn(60, 127, 1); // note 60, velocity 127 on channel 1
 |     MIDI.sendNoteOn(60, 127, 1); // note 60, velocity 127 on channel 1
 | ||||||
|     MIDI.sendNoteOff(60, 0, 1); |     MIDI.sendNoteOff(60, 0, 1); | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ====================================================================================
 | // ====================================================================================
 | ||||||
|  | @ -55,7 +50,7 @@ void loop() | ||||||
| // rtpMIDI session. Device connected
 | // rtpMIDI session. Device connected
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| void OnBleMidiConnected() { | void OnBleMidiConnected() { | ||||||
|   N_DEBUG_PRINTLN(F("Connected")); |   Serial.println(F("Connected")); | ||||||
|   isConnected = true; |   isConnected = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -71,25 +66,24 @@ void OnBleMidiDisconnected() { | ||||||
| // received note on
 | // received note on
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| void OnBleMidiNoteOn(byte channel, byte note, byte velocity) { | void OnBleMidiNoteOn(byte channel, byte note, byte velocity) { | ||||||
|   N_DEBUG_PRINT(F("Incoming NoteOn  from channel:")); |   Serial.print(F("Incoming NoteOn  from channel:")); | ||||||
|   N_DEBUG_PRINT(channel); |   Serial.print(channel); | ||||||
|   N_DEBUG_PRINT(F(" note:")); |   Serial.print(F(" note:")); | ||||||
|   N_DEBUG_PRINT(note); |   Serial.print(note); | ||||||
|   N_DEBUG_PRINT(F(" velocity:")); |   Serial.print(F(" velocity:")); | ||||||
|   N_DEBUG_PRINT(velocity); |   Serial.print(velocity); | ||||||
|   N_DEBUG_PRINTLN(); |   Serial.println(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| // received note off
 | // received note off
 | ||||||
| // -----------------------------------------------------------------------------
 | // -----------------------------------------------------------------------------
 | ||||||
| void OnBleMidiNoteOff(byte channel, byte note, byte velocity) { | void OnBleMidiNoteOff(byte channel, byte note, byte velocity) { | ||||||
|   N_DEBUG_PRINT(F("Incoming NoteOff from channel:")); |   Serial.print(F("Incoming NoteOff from channel:")); | ||||||
|   N_DEBUG_PRINT(channel); |   Serial.print(channel); | ||||||
|   N_DEBUG_PRINT(F(" note:")); |   Serial.print(F(" note:")); | ||||||
|   N_DEBUG_PRINT(note); |   Serial.print(note); | ||||||
|   N_DEBUG_PRINT(F(" velocity:")); |   Serial.print(F(" velocity:")); | ||||||
|   N_DEBUG_PRINT(velocity); |   Serial.print(velocity); | ||||||
|   N_DEBUG_PRINTLN(); |   Serial.println(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -5,9 +5,8 @@ | ||||||
| ####################################### | ####################################### | ||||||
| # Datatypes (KEYWORD1) | # Datatypes (KEYWORD1) | ||||||
| ####################################### | ####################################### | ||||||
| midi_bleTransport	KEYWORD1 | BLE-MIDI.h	KEYWORD1 | ||||||
| midi_bleTransport.h	KEYWORD1 | BLEMIDI KEYWORD1 | ||||||
| Ble_esp32.h	KEYWORD1 |  | ||||||
| 
 | 
 | ||||||
| ####################################### | ####################################### | ||||||
| # Methods and Functions (KEYWORD2) | # Methods and Functions (KEYWORD2) | ||||||
|  | @ -41,10 +40,11 @@ tick	         KEYWORD2 | ||||||
| ####################################### | ####################################### | ||||||
| # Instances (KEYWORD3) | # Instances (KEYWORD3) | ||||||
| ####################################### | ####################################### | ||||||
|  | BLEMIDI KEYWORD3 | ||||||
| 
 | 
 | ||||||
| ####################################### | ####################################### | ||||||
| # Constants (LITERAL1) | # Constants (LITERAL1) | ||||||
| ####################################### | ####################################### | ||||||
| 
 | 
 | ||||||
| # Namespace, considering it as a literal | # Namespace, considering it as a literal | ||||||
| blemidi	LITERAL1 | BLEMIDI	LITERAL1 | ||||||
|  |  | ||||||
|  | @ -14,10 +14,12 @@ using namespace MIDI_NAMESPACE; | ||||||
| BEGIN_BLEMIDI_NAMESPACE | BEGIN_BLEMIDI_NAMESPACE | ||||||
| 
 | 
 | ||||||
| template<class T, class _Settings = DefaultSettings> | template<class T, class _Settings = DefaultSettings> | ||||||
| class BLEMIDI | class BLEMIDITransport | ||||||
| { | { | ||||||
|     typedef _Settings Settings; |     typedef _Settings Settings; | ||||||
| 
 | 
 | ||||||
|  |     friend class MIDI_NAMESPACE::MidiInterface<BLEMIDITransport<T>>; | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     byte mRxBuffer[Settings::MaxBufferSize]; |     byte mRxBuffer[Settings::MaxBufferSize]; | ||||||
|     unsigned mRxIndex = 0; |     unsigned mRxIndex = 0; | ||||||
|  | @ -31,7 +33,7 @@ private: | ||||||
| 	T mBleClass; | 	T mBleClass; | ||||||
| 
 | 
 | ||||||
| public:     | public:     | ||||||
| 	BLEMIDI(const char* deviceName) |     BLEMIDITransport(const char* deviceName) | ||||||
| 	{ | 	{ | ||||||
|         strncpy(mDeviceName, deviceName, 24); |         strncpy(mDeviceName, deviceName, 24); | ||||||
|          |          | ||||||
|  | @ -169,4 +171,20 @@ public: | ||||||
| 
 | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /*! \brief Create an instance of the library
 | ||||||
|  |  */ | ||||||
|  | #define BLEMIDI_CREATE_INSTANCE(Type, DeviceName, Name)     \ | ||||||
|  | BLEMIDI_NAMESPACE::BLEMIDITransport<BLEMIDI_NAMESPACE::BLEMIDI_ESP32> BLE##Name(DeviceName); \ | ||||||
|  | MIDI_NAMESPACE::MidiInterface<BLEMIDI_NAMESPACE::BLEMIDITransport<BLEMIDI_NAMESPACE::BLEMIDI_ESP32>> Name((BLEMIDI_NAMESPACE::BLEMIDITransport<BLEMIDI_NAMESPACE::BLEMIDI_ESP32> &)BLE##Name); | ||||||
|  | 
 | ||||||
|  |  /*! \brief Create an instance for ESP32 named <DeviceName>
 | ||||||
|  |  */ | ||||||
|  | #define BLEMIDI_CREATE_ESP32_INSTANCE(DeviceName) \ | ||||||
|  | BLEMIDI_CREATE_INSTANCE(BLEMIDI_NAMESPACE::BLEMIDI_ESP32, DeviceName, MIDI); | ||||||
|  | 
 | ||||||
|  |  /*! \brief Create a default instance for ESP32 named BLE-MIDI
 | ||||||
|  |  */ | ||||||
|  | #define BLEMIDI_CREATE_DEFAULT_ESP32_INSTANCE() \ | ||||||
|  | BLEMIDI_CREATE_ESP32_INSTANCE("BLE-MIDI") | ||||||
|  | 
 | ||||||
| END_BLEMIDI_NAMESPACE | END_BLEMIDI_NAMESPACE | ||||||
|  |  | ||||||
|  | @ -15,24 +15,3 @@ | ||||||
| #include <inttypes.h> | #include <inttypes.h> | ||||||
| typedef uint8_t byte; | typedef uint8_t byte; | ||||||
| #endif | #endif | ||||||
| 
 |  | ||||||
| BEGIN_BLEMIDI_NAMESPACE |  | ||||||
| 
 |  | ||||||
| /*! \brief Create an instance of the library
 |  | ||||||
|  */ |  | ||||||
| #define BLEMIDI_CREATE_INSTANCE(Type, DeviceName, Name)     \ |  | ||||||
| typedef BLEMIDI_NAMESPACE::BLEMIDI<BLEMIDI_NAMESPACE::BLEMIDI_ESP32> BLEMIDI_t; \ |  | ||||||
| BLEMIDI_t Name(DeviceName); \ |  | ||||||
| MIDI_NAMESPACE::MidiInterface<BLEMIDI_t> MIDI((BLEMIDI_t &)Name); |  | ||||||
| 
 |  | ||||||
| /*! \brief Create an instance for ESP32 named <DeviceName>
 |  | ||||||
| */ |  | ||||||
| #define BLEMIDI_CREATE_ESP32_INSTANCE(DeviceName) \ |  | ||||||
| BLEMIDI_CREATE_INSTANCE(BLEMIDI_NAMESPACE::BLEMIDI_ESP32, DeviceName, bm); |  | ||||||
| 
 |  | ||||||
| /*! \brief Create a default instance for ESP32 named BLE-MIDI
 |  | ||||||
| */ |  | ||||||
| #define BLEMIDI_CREATE_DEFAULT_ESP32_INSTANCE() \ |  | ||||||
| BLEMIDI_CREATE_ESP32_INSTANCE("BLE-MIDI") |  | ||||||
| 
 |  | ||||||
| END_BLEMIDI_NAMESPACE |  | ||||||
|  |  | ||||||
|  | @ -15,14 +15,14 @@ private: | ||||||
|     BLEAdvertising*		_advertising = nullptr; |     BLEAdvertising*		_advertising = nullptr; | ||||||
|     BLECharacteristic*	_characteristic = nullptr; |     BLECharacteristic*	_characteristic = nullptr; | ||||||
|          |          | ||||||
| 	BLEMIDI<class BLEMIDI_ESP32>* _bleMidiTransport = nullptr; |     BLEMIDITransport<class BLEMIDI_ESP32>* _bleMidiTransport = nullptr; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	BLEMIDI_ESP32() | 	BLEMIDI_ESP32() | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|      |      | ||||||
| 	bool begin(const char*, BLEMIDI<class BLEMIDI_ESP32>*); | 	bool begin(const char*, BLEMIDITransport<class BLEMIDI_ESP32>*); | ||||||
|      |      | ||||||
|     void write(uint8_t* buffer, size_t length) |     void write(uint8_t* buffer, size_t length) | ||||||
|     { |     { | ||||||
|  | @ -187,7 +187,7 @@ protected: | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| bool BLEMIDI_ESP32::begin(const char* deviceName, BLEMIDI<class BLEMIDI_ESP32>* bleMidiTransport) | bool BLEMIDI_ESP32::begin(const char* deviceName, BLEMIDITransport<class BLEMIDI_ESP32>* bleMidiTransport) | ||||||
| { | { | ||||||
| 	_bleMidiTransport = bleMidiTransport; | 	_bleMidiTransport = bleMidiTransport; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,217 +0,0 @@ | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <stddef.h> |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| class Deque { |  | ||||||
| //    class iterator;
 |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     int _head, _tail; |  | ||||||
|     T _data[Size]; |  | ||||||
|      |  | ||||||
| public: |  | ||||||
|     Deque() |  | ||||||
|     { |  | ||||||
|         clear(); |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     size_t free(); |  | ||||||
|     const size_t size() const; |  | ||||||
|     const size_t max_size() const; |  | ||||||
|     T & front(); |  | ||||||
|     const T & front() const; |  | ||||||
|     T & back(); |  | ||||||
|     const T & back() const; |  | ||||||
|     void push_front(const T &); |  | ||||||
|     void push_back(const T &); |  | ||||||
|     T pop_front(); |  | ||||||
|     T pop_back(); |  | ||||||
|      |  | ||||||
|     T& operator[](size_t); |  | ||||||
|     const T& operator[](size_t) const; |  | ||||||
|     T& at(size_t); |  | ||||||
|     const T& at(size_t) const; |  | ||||||
| 
 |  | ||||||
|     void clear(); |  | ||||||
|          |  | ||||||
| //    iterator begin();
 |  | ||||||
| //    iterator end();
 |  | ||||||
| 
 |  | ||||||
|     void erase(size_t); |  | ||||||
|     void erase(size_t, size_t); |  | ||||||
| 
 |  | ||||||
|     bool empty() const { |  | ||||||
|         return size() == 0; |  | ||||||
|     } |  | ||||||
|     bool full() const { |  | ||||||
|         return (size() == Size); |  | ||||||
|     } |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| size_t Deque<T, Size>::free() |  | ||||||
| { |  | ||||||
|     return Size - size(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const size_t Deque<T, Size>::size() const |  | ||||||
| { |  | ||||||
|   if (_tail < 0) |  | ||||||
|       return 0; // empty
 |  | ||||||
|   else if (_head > _tail) |  | ||||||
|       return _head - _tail; |  | ||||||
|   else |  | ||||||
|       return Size - _tail + _head; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const size_t Deque<T, Size>::max_size() const |  | ||||||
| { |  | ||||||
|   return Size; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T & Deque<T, Size>::front() |  | ||||||
| { |  | ||||||
|   return _data[_tail]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const T & Deque<T, Size>::front() const |  | ||||||
| { |  | ||||||
|   return _data[_tail]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T & Deque<T, Size>::back() |  | ||||||
| { |  | ||||||
|     int idx = _head - 1; |  | ||||||
|     if (idx < 0) idx = Size - 1; |  | ||||||
|     return _data[idx]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const T & Deque<T, Size>::back() const |  | ||||||
| { |  | ||||||
|     int idx = _head - 1; |  | ||||||
|     if (idx < 0) idx = Size - 1; |  | ||||||
|     return _data[idx]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| void Deque<T, Size>::push_front(const T &value) |  | ||||||
| { |  | ||||||
|     //if container is full, do nothing.
 |  | ||||||
|     if (free()){ |  | ||||||
|         if (--_tail < 0) |  | ||||||
|             _tail = Size - 1; |  | ||||||
|         _data[_tail] = value; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| void Deque<T, Size>::push_back(const T &value) |  | ||||||
| { |  | ||||||
|     //if container is full, do nothing.
 |  | ||||||
|     if (free()){ |  | ||||||
|         _data[_head] = value; |  | ||||||
|         if (empty()) |  | ||||||
|             _tail = _head; |  | ||||||
|         if (++_head >= Size) |  | ||||||
|             _head %= Size; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T Deque<T, Size>::pop_front() { |  | ||||||
|     if (empty()) // if empty, do nothing.
 |  | ||||||
|         return T(); |  | ||||||
|     auto item = front(); |  | ||||||
|     if (++_tail >= Size) |  | ||||||
|         _tail %= Size; |  | ||||||
|     if (_tail == _head) |  | ||||||
|         clear(); |  | ||||||
|     return item; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T Deque<T, Size>::pop_back() { |  | ||||||
|     if (empty()) // if empty, do nothing.
 |  | ||||||
|         return T(); |  | ||||||
|     auto item = front(); |  | ||||||
|     if (--_head < 0) |  | ||||||
|         _head = Size - 1; |  | ||||||
|     if (_head == _tail) //now buffer is empty
 |  | ||||||
|         clear(); |  | ||||||
|     return item; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| void Deque<T, Size>::erase(size_t position) { |  | ||||||
|     if (position >= size()) // out-of-range!
 |  | ||||||
|         return; // do nothing.
 |  | ||||||
|     for (size_t i = position; i < size() - 1; i++){ |  | ||||||
|         at(i) = at(i + 1); |  | ||||||
|     } |  | ||||||
|     pop_back(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| void Deque<T, Size>::erase(size_t first, size_t last) { |  | ||||||
|     if (first > last // invalid arguments
 |  | ||||||
|     || first >= size()) // out-of-range
 |  | ||||||
|         return; //do nothing.
 |  | ||||||
|      |  | ||||||
|     size_t tgt = first; |  | ||||||
|     for (size_t i = last + 1; i < size(); i++){ |  | ||||||
|         at(tgt++) = at(i); |  | ||||||
|     } |  | ||||||
|     for (size_t i = first; i <= last; i++){ |  | ||||||
|         pop_back(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T& Deque<T, Size>::operator[](size_t index) |  | ||||||
| { |  | ||||||
|     auto i = _tail + index; |  | ||||||
|     if (i >= Size) |  | ||||||
|         i %= Size; |  | ||||||
|     return _data[i]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const T& Deque<T, Size>::operator[](size_t index) const |  | ||||||
| { |  | ||||||
|     auto i = _tail + index; |  | ||||||
|     if (i >= Size) |  | ||||||
|         i %= Size; |  | ||||||
|     return _data[i]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| T& Deque<T, Size>::at(size_t index) |  | ||||||
| { |  | ||||||
|     auto i = _tail + index; |  | ||||||
|     if (i >= Size) |  | ||||||
|         i %= Size; |  | ||||||
|     return _data[i]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| const T& Deque<T, Size>::at(size_t index) const |  | ||||||
| { |  | ||||||
|     auto i = _tail + index; |  | ||||||
|     if (i >= Size) |  | ||||||
|         i %= Size; |  | ||||||
|     return _data[i]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| template<typename T, size_t Size> |  | ||||||
| void Deque<T, Size>::clear() |  | ||||||
| { |  | ||||||
|   _tail = -1; |  | ||||||
|   _head = 0; |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 lathoub
						lathoub