diff --git a/src/extras/RFControl.h b/src/extras/RFControl.h index 91c86d4..ea8f731 100644 --- a/src/extras/RFControl.h +++ b/src/extras/RFControl.h @@ -13,15 +13,19 @@ using std::vector; class RFControl { + friend class Pixel; + private: rmt_config_t *config=NULL; vector data; boolean lowWord=true; boolean refClock; static uint8_t nChannels; - + + RFControl(uint8_t pin, boolean refClock, boolean installDriver); // private constructor (only used by Pixel class) + public: - RFControl(uint8_t pin, boolean refClock=true, boolean installDriver=true); // creates transmitter on pin, using 1-MHz Ref Tick clock + RFControl(uint8_t pin, boolean refClock=true):RFControl(pin,refClock,true){}; // public constructor to create transmitter on pin, using 1-MHz Ref Tick clock or 80-MHz APB clock void start(uint32_t *data, int nData, uint8_t nCycles=1, uint8_t tickTime=1); // starts transmission of pulses from specified data pointer, repeated for numCycles, where each tick in pulse is tickTime microseconds long void start(uint8_t nCycles=1, uint8_t tickTime=1); // starts transmission of pulses from internal data structure, repeated for numCycles, where each tick in pulse is tickTime microseconds long @@ -32,7 +36,7 @@ class RFControl { void enableCarrier(uint32_t freq, float duty=0.5); // enables carrier wave if freq>0, else disables carrier wave; duty is a fraction from 0-1 void disableCarrier(){enableCarrier(0);} // disables carrier wave - int getPin(){return(config?config->gpio_num:-1);} // returns the pin number + int getPin(){return(config?config->gpio_num:-1);} // returns the pin number, or -1 if no channel defined rmt_channel_t getChannel(){return(config?config->channel:RMT_CHANNEL_0);} // returns channel, or channel_0 is no channel defined operator bool(){ // override boolean operator to return true/false if creation succeeded/failed