seperate stobe class from sACN.

This commit is contained in:
Kevin Matz 2020-12-04 09:44:58 -05:00
parent 7821577523
commit 525970bbf9
4 changed files with 25 additions and 25 deletions

View File

@ -17,7 +17,6 @@
*/
#include <Arduino.h>
#include <WiFi.h>
#include "sacn.h"
// E1.17 ACN Packet Identifier

View File

@ -51,20 +51,16 @@ uint32_t dr_to_micros(uint8_t dmx) {
/*
Constructor
*/
Strobe::Strobe(e131_listen_t type, uint16_t universe, uint16_t address) {
m_type = type;
Strobe::Strobe(uint16_t universe, uint16_t address) {
m_universe = universe;
m_address = address;
m_e131 = new ESPAsyncE131(1);
m_e131->onPacket(std::bind(&Strobe::recvData, this,
std::placeholders::_1));
}
/*
call durring setup()
*/
bool Strobe::begin(uint8_t pin, uint8_t pwm) {
bool success = false;
bool success = true;
// set state
m_pwm = pwm;
m_state = STROBE_INACTIVE;
@ -75,14 +71,6 @@ bool Strobe::begin(uint8_t pin, uint8_t pwm) {
ledcSetup(m_pwm, 2400, 15); // 2.4KHz PWM, 15 bit resolutio
ledcWrite(m_pwm, m_level); // LED to 0%
// start sACN
if (!m_e131->begin(m_type, m_universe)) {
Serial.println("Failed to start E1.31");
} else {
Serial.println("Listening for sACN");
success = true;
}
return success;
}

View File

@ -41,16 +41,17 @@ typedef enum {
class Strobe {
public:
Strobe(e131_listen_t type, uint16_t universe = 1, uint16_t address = 1);
Strobe(uint16_t universe = 1, uint16_t address = 1);
bool begin(uint8_t pin, uint8_t pwm); // call in setup()
void update(void *args = NULL); // update task
const uint8_t profile = 4; // DMX profile length
void recvData(e131_packet_t *packet); // data recieved callback
private:
e131_listen_t m_type; // IP Unicast/Multicast
uint16_t m_universe; // sACN universe
uint16_t m_address; // DMX address
@ -63,10 +64,6 @@ class Strobe {
uint8_t m_pwm; // LEDc PWM channel
uint32_t m_time; // micros() of current cycle start
ESPAsyncE131 *m_e131; // ESPAsyncE131 instance
void recvData(e131_packet_t *packet); // data recieved callback
inline void setLevel(uint16_t level) __attribute__((always_inline));
};

View File

@ -61,7 +61,10 @@ const String released_value = "99.2";
// -----------------------------------
// Configure E1.31 sACN
// -----------------------------------
Strobe strobe(E131_UNICAST, 1, 001); // (uni|multi)cast, sACN Universe, Address
const e131_listen_t sACN_mode = E131_UNICAST; // (uni|multi)cast
const uint16_t strobe_universe = 1;
const uint16_t strobe_address = 501;
/* DMX Value
* | chan | Command | range | range |
* |------+-----------+-------+------------|
@ -86,11 +89,14 @@ const int led = LED_BUILTIN; // IO13
* Change nothing else unless you're really sure.
*/
//// device objects
Strobe *strobe = new Strobe(strobe_universe, strobe_address);
ESPAsyncE131 *e131 = new ESPAsyncE131();
//// Global button variables
bool pressed = false; // track button state
uint32_t change_time; // time of button press (ms)
/*
* Arduino powerup
*/
@ -113,12 +119,22 @@ void setup() {
Serial.println("STA Failed to configure");
}
//// start sACN
if (!e131->begin(sACN_mode, strobe_universe)) {
Serial.println("Failed to start E1.31");
} else {
e131->onPacket(std::bind(&Strobe::recvData, strobe,
std::placeholders::_1));
Serial.println("Listening for sACN");
}
//// start fixtures hardware:
// button
pinMode(button, INPUT_PULLUP);
// led_trigPres_trigPress _trigPress _trigPress _trigPress s
if (!strobe.begin(led, 0)) {
if (!strobe->begin(led, 0)) {
Serial.println("Strobe failed to configure.");
}
}
@ -134,7 +150,7 @@ void loop() {
return;
}
strobe.update();
strobe->update();
// Be a remote trigger
//