Line data Source code
1 : #pragma once
2 :
3 : #ifdef ESP32
4 : #include <esp_pthread.h>
5 : #endif
6 :
7 : #include <Settings/NamespaceSettings.hpp>
8 :
9 : BEGIN_CS_NAMESPACE
10 :
11 : struct ScopedThreadConfig {
12 : #ifdef ESP32
13 : ScopedThreadConfig(size_t stack_size, size_t priority, bool inherit_cfg,
14 : const char *thread_name,
15 : int pin_to_core = tskNO_AFFINITY) {
16 : memset(&previousConfig, 0, sizeof(previousConfig));
17 : hadPreviousConfig = esp_pthread_get_cfg(&previousConfig) == ESP_OK;
18 : esp_pthread_cfg_t cfg = previousConfig;
19 : cfg.stack_size = stack_size;
20 : cfg.prio = priority;
21 : cfg.inherit_cfg = inherit_cfg;
22 : cfg.thread_name = thread_name;
23 : cfg.pin_to_core = pin_to_core;
24 : esp_pthread_set_cfg(&cfg);
25 : }
26 :
27 : ~ScopedThreadConfig() {
28 : if (hadPreviousConfig)
29 : esp_pthread_set_cfg(&previousConfig);
30 : }
31 :
32 : private:
33 : bool hadPreviousConfig;
34 : esp_pthread_cfg_t previousConfig;
35 : #else
36 28 : ScopedThreadConfig(size_t stack_size, size_t priority, bool inherit_cfg,
37 : const char *thread_name, int pin_to_core = -1) {
38 : (void)stack_size;
39 : (void)priority;
40 : (void)inherit_cfg;
41 : (void)thread_name;
42 : (void)pin_to_core;
43 28 : }
44 : #endif
45 : };
46 :
47 : END_CS_NAMESPACE
|