KW11-L esp32 functionality fix
This commit is contained in:
parent
dddb298567
commit
f6f86ba18a
3 changed files with 29 additions and 4 deletions
|
@ -4,7 +4,7 @@ src_dir = .
|
||||||
|
|
||||||
[env:ESP32]
|
[env:ESP32]
|
||||||
lib_ldf_mode = deep+
|
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
|
platform = espressif32
|
||||||
board = wemos_d1_mini32
|
board = wemos_d1_mini32
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
|
26
kw11-l.cpp
26
kw11-l.cpp
|
@ -5,17 +5,31 @@
|
||||||
#include "kw11-l.h"
|
#include "kw11-l.h"
|
||||||
#include "utils.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)
|
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));
|
th = new std::thread(std::ref(*this));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
kw11_l::~kw11_l()
|
kw11_l::~kw11_l()
|
||||||
{
|
{
|
||||||
stop_flag = true;
|
stop_flag = true;
|
||||||
|
|
||||||
|
#if !defined(ESP32)
|
||||||
th->join();
|
th->join();
|
||||||
|
#endif
|
||||||
|
|
||||||
delete th;
|
delete th;
|
||||||
}
|
}
|
||||||
|
@ -29,10 +43,18 @@ void kw11_l::operator()()
|
||||||
if (b->get_lf_crs() & 64)
|
if (b->get_lf_crs() & 64)
|
||||||
b->getCpu()->queue_interrupt(6, 0100);
|
b->getCpu()->queue_interrupt(6, 0100);
|
||||||
|
|
||||||
myusleep(1000000 / 50);
|
#if defined(ESP32)
|
||||||
|
vTaskDelay(100 / portTICK_RATE_MS);
|
||||||
|
#else
|
||||||
|
myusleep(1000000 / 50); // 20ms
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myusleep(1000000 / 10);
|
#if defined(ESP32)
|
||||||
|
vTaskDelay(100 / portTICK_RATE_MS);
|
||||||
|
#else
|
||||||
|
myusleep(1000000 / 10); // 100ms
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,9 @@ int parity(int v)
|
||||||
void myusleep(uint64_t us)
|
void myusleep(uint64_t us)
|
||||||
{
|
{
|
||||||
#if defined(ESP32)
|
#if defined(ESP32)
|
||||||
|
if (us >= 1000)
|
||||||
|
vTaskDelay(us / 1000 / portTICK_RATE_MS);
|
||||||
|
else
|
||||||
delayMicroseconds(us);
|
delayMicroseconds(us);
|
||||||
#else
|
#else
|
||||||
struct timespec req;
|
struct timespec req;
|
||||||
|
|
Loading…
Add table
Reference in a new issue