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 <hardware/BLE-MIDI_ESP32.h> | ||||
| 
 | ||||
| BLEMIDI_CREATE_DEFAULT_ESP32_INSTANCE() | ||||
| 
 | ||||
| USING_NAMESPACE_BLEMIDI | ||||
| 
 | ||||
| unsigned long t0 = millis(); | ||||
| #ifdef ESP32 | ||||
| bool isConnected = false; | ||||
| #endif | ||||
| 
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| //
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| void setup() | ||||
| { | ||||
|   // Serial communications and wait for port to open:
 | ||||
|   DEBUG_BEGIN(115200); | ||||
|   Serial.begin(115200); | ||||
|   while (!Serial); | ||||
|   Serial.println("Booting"); | ||||
|    | ||||
|   MIDI.begin(1); | ||||
| 
 | ||||
|   bm.onConnected(OnBleMidiConnected); | ||||
|   bm.onDisconnected(OnBleMidiDisconnected); | ||||
|   BLEMIDI.onConnected(OnBleMidiConnected); | ||||
|   BLEMIDI.onDisconnected(OnBleMidiDisconnected); | ||||
| 
 | ||||
|   MIDI.setHandleNoteOn(OnBleMidiNoteOn); | ||||
|   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.sendNoteOff(60, 0, 1); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| // ====================================================================================
 | ||||
|  | @ -55,7 +50,7 @@ void loop() | |||
| // rtpMIDI session. Device connected
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| void OnBleMidiConnected() { | ||||
|   N_DEBUG_PRINTLN(F("Connected")); | ||||
|   Serial.println(F("Connected")); | ||||
|   isConnected = true; | ||||
| } | ||||
| 
 | ||||
|  | @ -71,25 +66,24 @@ void OnBleMidiDisconnected() { | |||
| // received note on
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| void OnBleMidiNoteOn(byte channel, byte note, byte velocity) { | ||||
|   N_DEBUG_PRINT(F("Incoming NoteOn  from channel:")); | ||||
|   N_DEBUG_PRINT(channel); | ||||
|   N_DEBUG_PRINT(F(" note:")); | ||||
|   N_DEBUG_PRINT(note); | ||||
|   N_DEBUG_PRINT(F(" velocity:")); | ||||
|   N_DEBUG_PRINT(velocity); | ||||
|   N_DEBUG_PRINTLN(); | ||||
|   Serial.print(F("Incoming NoteOn  from channel:")); | ||||
|   Serial.print(channel); | ||||
|   Serial.print(F(" note:")); | ||||
|   Serial.print(note); | ||||
|   Serial.print(F(" velocity:")); | ||||
|   Serial.print(velocity); | ||||
|   Serial.println(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| // received note off
 | ||||
| // -----------------------------------------------------------------------------
 | ||||
| void OnBleMidiNoteOff(byte channel, byte note, byte velocity) { | ||||
|   N_DEBUG_PRINT(F("Incoming NoteOff from channel:")); | ||||
|   N_DEBUG_PRINT(channel); | ||||
|   N_DEBUG_PRINT(F(" note:")); | ||||
|   N_DEBUG_PRINT(note); | ||||
|   N_DEBUG_PRINT(F(" velocity:")); | ||||
|   N_DEBUG_PRINT(velocity); | ||||
|   N_DEBUG_PRINTLN(); | ||||
|   Serial.print(F("Incoming NoteOff from channel:")); | ||||
|   Serial.print(channel); | ||||
|   Serial.print(F(" note:")); | ||||
|   Serial.print(note); | ||||
|   Serial.print(F(" velocity:")); | ||||
|   Serial.print(velocity); | ||||
|   Serial.println(); | ||||
| } | ||||
|  |  | |||
|  | @ -5,9 +5,8 @@ | |||
| ####################################### | ||||
| # Datatypes (KEYWORD1) | ||||
| ####################################### | ||||
| midi_bleTransport	KEYWORD1 | ||||
| midi_bleTransport.h	KEYWORD1 | ||||
| Ble_esp32.h	KEYWORD1 | ||||
| BLE-MIDI.h	KEYWORD1 | ||||
| BLEMIDI KEYWORD1 | ||||
| 
 | ||||
| ####################################### | ||||
| # Methods and Functions (KEYWORD2) | ||||
|  | @ -41,10 +40,11 @@ tick	         KEYWORD2 | |||
| ####################################### | ||||
| # Instances (KEYWORD3) | ||||
| ####################################### | ||||
| BLEMIDI KEYWORD3 | ||||
| 
 | ||||
| ####################################### | ||||
| # Constants (LITERAL1) | ||||
| ####################################### | ||||
| 
 | ||||
| # Namespace, considering it as a literal | ||||
| blemidi	LITERAL1 | ||||
| BLEMIDI	LITERAL1 | ||||
|  |  | |||
|  | @ -14,10 +14,12 @@ using namespace MIDI_NAMESPACE; | |||
| BEGIN_BLEMIDI_NAMESPACE | ||||
| 
 | ||||
| template<class T, class _Settings = DefaultSettings> | ||||
| class BLEMIDI | ||||
| class BLEMIDITransport | ||||
| { | ||||
|     typedef _Settings Settings; | ||||
| 
 | ||||
|     friend class MIDI_NAMESPACE::MidiInterface<BLEMIDITransport<T>>; | ||||
| 
 | ||||
| private: | ||||
|     byte mRxBuffer[Settings::MaxBufferSize]; | ||||
|     unsigned mRxIndex = 0; | ||||
|  | @ -31,7 +33,7 @@ private: | |||
| 	T mBleClass; | ||||
| 
 | ||||
| public:     | ||||
| 	BLEMIDI(const char* deviceName) | ||||
|     BLEMIDITransport(const char* deviceName) | ||||
| 	{ | ||||
|         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 | ||||
|  |  | |||
|  | @ -15,24 +15,3 @@ | |||
| #include <inttypes.h> | ||||
| typedef uint8_t byte; | ||||
| #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; | ||||
|     BLECharacteristic*	_characteristic = nullptr; | ||||
|          | ||||
| 	BLEMIDI<class BLEMIDI_ESP32>* _bleMidiTransport = nullptr; | ||||
|     BLEMIDITransport<class BLEMIDI_ESP32>* _bleMidiTransport = nullptr; | ||||
| 
 | ||||
| public: | ||||
| 	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) | ||||
|     { | ||||
|  | @ -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; | ||||
| 
 | ||||
|  |  | |||
|  | @ -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