diff --git a/source/Firmata/UwpFirmata.cpp b/source/Firmata/UwpFirmata.cpp index a4b5220..f9eb971 100644 --- a/source/Firmata/UwpFirmata.cpp +++ b/source/Firmata/UwpFirmata.cpp @@ -48,11 +48,25 @@ UwpFirmata::UwpFirmata( _firmata_stream(nullptr), _connection_ready(ATOMIC_VAR_INIT(false)), _input_thread_should_exit(ATOMIC_VAR_INIT(false)), + _polling_interval(0), firmwareVersionMajor(0), firmwareVersionMinor(0) { } +UwpFirmata::UwpFirmata( + uint64_t polling_interval_ +) : + _data_buffer(new uint16_t[DATA_BUFFER_SIZE]), + _firmata_lock(_firmutex, std::defer_lock), + _firmata_stream(nullptr), + _connection_ready(ATOMIC_VAR_INIT(false)), + _input_thread_should_exit(ATOMIC_VAR_INIT(false)), + _polling_interval(polling_interval_), + firmwareVersionMajor(0), + firmwareVersionMinor(0) +{ +} //****************************************************************************** //* Destructors @@ -556,6 +570,11 @@ UwpFirmata::inputThread( { OutputDebugString( e->Message->Begin() ); } + + if (_polling_interval) + { + std::this_thread::sleep_for(std::chrono::milliseconds(_polling_interval)); + } } } diff --git a/source/Firmata/UwpFirmata.h b/source/Firmata/UwpFirmata.h index 4797e17..dfe60f6 100644 --- a/source/Firmata/UwpFirmata.h +++ b/source/Firmata/UwpFirmata.h @@ -191,6 +191,10 @@ public ref class UwpFirmata sealed void ); + UwpFirmata( + uint64_t polling_interval_ + ); + virtual ~UwpFirmata( void @@ -400,6 +404,7 @@ public ref class UwpFirmata sealed //input thread & behavior mechanisms std::thread _input_thread; std::atomic_bool _input_thread_should_exit; + uint64_t _polling_interval; String ^ createStringFromMbs(