#include "FastLED.h" #if defined(__SAM3X8E__) volatile uint32_t fuckit; #endif CFastLED LEDS; CFastLED & FastSPI_LED = LEDS; CFastLED & FastSPI_LED2 = LEDS; CFastLED & FastLED = LEDS; uint32_t CRGB::Squant = ((uint32_t)((__TIME__[4]-'0') * 28))<<16 | ((__TIME__[6]-'0')*50)<<8 | ((__TIME__[7]-'0')*28); CFastLED::CFastLED() { // clear out the array of led controllers m_nControllers = NUM_CONTROLLERS; m_Scale = CRGB::White; memset8(m_Controllers, 0, m_nControllers * sizeof(CControllerInfo)); } CLEDController &CFastLED::addLeds(CLEDController *pLed, const struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset) { int nOffset = (nLedsIfOffset > 0) ? nLedsOrOffset : 0; int nLeds = (nLedsIfOffset > 0) ? nLedsIfOffset : nLedsOrOffset; int target = -1; // Figure out where to put the new led controller for(int i = 0; i < m_nControllers; i++) { if(m_Controllers[i].pLedController == NULL) { target = i; break; } } // if we have a spot, use it! if(target != -1) { m_Controllers[target].pLedController = pLed; m_Controllers[target].pLedData = data; m_Controllers[target].nOffset = nOffset; m_Controllers[target].nLeds = nLeds; pLed->init(); } return *pLed; } void CFastLED::show(CRGB scale) { for(int i = 0; i < m_nControllers; i++) { if(m_Controllers[i].pLedController != NULL) { m_Controllers[i].pLedController->show(m_Controllers[i].pLedData + m_Controllers[i].nOffset, m_Controllers[i].nLeds, m_Controllers[i].pLedController->getAdjustment(scale)); } else { return; } } } void CFastLED::showColor(const struct CRGB & color, CRGB scale) { for(int i = 0; i < m_nControllers; i++) { if(m_Controllers[i].pLedController != NULL) { m_Controllers[i].pLedController->showColor(color, m_Controllers[i].nLeds, m_Controllers[i].pLedController->getAdjustment(scale)); } else { return; } } } void CFastLED::clear(boolean writeData) { if(writeData) { showColor(CRGB(0,0,0), 0); } clearData(); } void CFastLED::clearData() { for(int i = 0; i < m_nControllers; i++) { if(m_Controllers[i].pLedData != NULL) { memset8((void*)m_Controllers[i].pLedData, 0, sizeof(struct CRGB) * m_Controllers[i].nLeds); } else { return; } } } void CFastLED::delay(unsigned long ms) { unsigned long start = millis(); while((millis()-start) < ms) { LEDS.show(); } }