KW11-L esp32 functionality fix

This commit is contained in:
folkert van heusden 2022-07-02 21:41:34 +02:00
parent dddb298567
commit f6f86ba18a
3 changed files with 29 additions and 4 deletions

View file

@ -4,7 +4,7 @@ src_dir = .
[env:ESP32]
lib_ldf_mode = deep+
src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<build> -<player.cpp>
build_src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<build> -<player.cpp>
platform = espressif32
board = wemos_d1_mini32
framework = arduino

View file

@ -5,17 +5,31 @@
#include "kw11-l.h"
#include "utils.h"
#if defined(ESP32)
void thread_wrapper_kw11(void *p)
{
kw11_l *const kw11l = reinterpret_cast<kw11_l *>(p);
kw11l->operator()();
}
#endif
kw11_l::kw11_l(bus *const b, console *const cnsl) : b(b), cnsl(cnsl)
{
#if defined(ESP32)
xTaskCreatePinnedToCore(&thread_wrapper_kw11, "kw11-l", 2048, this, 1, nullptr, 0);
#else
th = new std::thread(std::ref(*this));
#endif
}
kw11_l::~kw11_l()
{
stop_flag = true;
#if !defined(ESP32)
th->join();
#endif
delete th;
}
@ -29,10 +43,18 @@ void kw11_l::operator()()
if (b->get_lf_crs() & 64)
b->getCpu()->queue_interrupt(6, 0100);
myusleep(1000000 / 50);
#if defined(ESP32)
vTaskDelay(100 / portTICK_RATE_MS);
#else
myusleep(1000000 / 50); // 20ms
#endif
}
else {
myusleep(1000000 / 10);
#if defined(ESP32)
vTaskDelay(100 / portTICK_RATE_MS);
#else
myusleep(1000000 / 10); // 100ms
#endif
}
}
}

View file

@ -72,6 +72,9 @@ int parity(int v)
void myusleep(uint64_t us)
{
#if defined(ESP32)
if (us >= 1000)
vTaskDelay(us / 1000 / portTICK_RATE_MS);
else
delayMicroseconds(us);
#else
struct timespec req;