MycilaJSY
13.0.0
Arduino / ESP32 library for the JSY1031, JSY-MK-163, JSY-MK-193, JSY-MK-194, JSY-MK-227, JSY-MK-229, JSY-MK-333 families single-phase and three-phase AC bidirectional meters from Shenzhen Jiansiyan Technologies Co, Ltd.
Loading...
Searching...
No Matches
src
MycilaDimmerCycleStealing.h
1
// SPDX-License-Identifier: MIT
2
/*
3
* Copyright (C) 2023-2025 Mathieu Carbou
4
*/
5
#pragma once
6
7
#include "MycilaDimmer.h"
8
#include <driver/gptimer_types.h>
9
10
namespace
Mycila {
11
class
CycleStealingDimmer
:
public
Dimmer
{
12
public
:
13
virtual
~CycleStealingDimmer
() {
end
(); }
14
18
void
setPin
(gpio_num_t pin) { _pin = pin; }
19
23
gpio_num_t
getPin
()
const
{
return
_pin; }
24
30
bool
begin
()
override
;
31
37
void
end
()
override
;
38
39
const
char
* type()
const override
{
return
"cycle-stealing"
; }
40
41
bool
calculateMetrics(Metrics& metrics,
float
gridVoltage,
float
loadResistance)
const override
{
42
// return isEnabled() && _calculatePhaseControlMetrics(metrics, _dutyCycleFire, gridVoltage, loadResistance);
43
return
isEnabled
();
44
}
45
64
static
void
onZeroCross
(int16_t delayUntilZero,
void
* args);
65
66
#ifdef MYCILA_JSON_SUPPORT
72
void
toJson(
const
JsonObject& root)
const override
{
73
Dimmer::toJson(root);
74
root[
"pin"
] = _pin;
75
}
76
#endif
77
78
protected
:
79
bool
_apply()
override
;
80
81
bool
_calculateHarmonics(
float
* array,
size_t
n)
const override
{
82
for
(
size_t
i = 0; i < n; i++) {
83
array[i] = 0.0f;
84
}
85
return
true
;
86
}
87
88
private
:
89
gpio_num_t _pin = GPIO_NUM_NC;
90
bool
_running =
false
;
91
92
struct
RegisteredDimmer {
93
CycleStealingDimmer* dimmer =
nullptr
;
94
RegisteredDimmer* prev =
nullptr
;
95
RegisteredDimmer* next =
nullptr
;
96
};
97
98
static
struct
RegisteredDimmer* dimmers;
99
static
bool
_fireTimerISR(gptimer_handle_t timer,
const
gptimer_alarm_event_data_t* event,
void
* arg);
100
static
void
_registerDimmer(Mycila::CycleStealingDimmer* dimmer);
101
static
void
_unregisterDimmer(Mycila::CycleStealingDimmer* dimmer);
102
};
103
}
// namespace Mycila
Mycila::CycleStealingDimmer
Definition
MycilaDimmerCycleStealing.h:11
Mycila::CycleStealingDimmer::end
void end() override
Disable the dimmer.
Definition
MycilaDimmerCycleStealing.cpp:65
Mycila::CycleStealingDimmer::begin
bool begin() override
Enable a dimmer on a specific GPIO pin.
Definition
MycilaDimmerCycleStealing.cpp:44
Mycila::CycleStealingDimmer::onZeroCross
static void onZeroCross(int16_t delayUntilZero, void *args)
Definition
MycilaDimmerCycleStealing.cpp:105
Mycila::CycleStealingDimmer::setPin
void setPin(gpio_num_t pin)
Set the GPIO pin to use for the dimmer.
Definition
MycilaDimmerCycleStealing.h:18
Mycila::CycleStealingDimmer::getPin
gpio_num_t getPin() const
Get the GPIO pin used for the dimmer.
Definition
MycilaDimmerCycleStealing.h:23
Mycila::Dimmer
Definition
MycilaDimmer.h:22
Mycila::Dimmer::isEnabled
bool isEnabled() const
Check if the dimmer is enabled (if it was able to initialize correctly).
Definition
MycilaDimmer.h:136
Generated by
1.15.0