mirror of
https://github.com/preble/libpinproc
synced 2026-02-22 18:15:25 +01:00
Use PrepareWriteData() for LED commands instead of WriteData so that data isn't flushed on every command.
This commit is contained in:
134
src/PRDevice.cpp
134
src/PRDevice.cpp
@@ -327,31 +327,6 @@ PRResult PRDevice::DriverUpdateState(PRDriverState *driverState)
|
|||||||
// Note, the driver numbers depend on the driver group settings from DriverLoadMachineTypeDefaults.
|
// Note, the driver numbers depend on the driver group settings from DriverLoadMachineTypeDefaults.
|
||||||
// TODO: Create some constants that are used both here and in DriverLoadMachineTypeDefaults.
|
// TODO: Create some constants that are used both here and in DriverLoadMachineTypeDefaults.
|
||||||
|
|
||||||
// Removing protection code for now. It's too restrictive.
|
|
||||||
if (0) {
|
|
||||||
switch (readMachineType) {
|
|
||||||
case kPRMachineWPC:
|
|
||||||
case kPRMachineWPC95:
|
|
||||||
case kPRMachineWPCAlphanumeric:{
|
|
||||||
if ((driverState->driverNum >= 40 && driverState->driverNum <= 47) ||
|
|
||||||
(driverState->driverNum == 32) ||
|
|
||||||
(driverState->driverNum == 34) ||
|
|
||||||
(driverState->driverNum == 36) ||
|
|
||||||
(driverState->driverNum == 38)) {
|
|
||||||
if (driverState->timeslots == 0 && driverState->outputDriveTime == 0) return kPRFailure;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case kPRMachineSternWhitestar:
|
|
||||||
case kPRMachineSternSAM: {
|
|
||||||
if (driverState->driverNum >= 32 && driverState->driverNum <= 47) {
|
|
||||||
if (driverState->timeslots == 0 && driverState->outputDriveTime == 0) return kPRFailure;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG(PRLog(kPRLogInfo, "Updating driver #%d\n", driverState->driverNum));
|
DEBUG(PRLog(kPRLogInfo, "Updating driver #%d\n", driverState->driverNum));
|
||||||
|
|
||||||
if (driverState->polarity != drivers[driverState->driverNum].polarity && machineType != kPRMachineCustom && machineType != kPRMachinePDB)
|
if (driverState->polarity != drivers[driverState->driverNum].polarity && machineType != kPRMachineCustom && machineType != kPRMachinePDB)
|
||||||
@@ -382,7 +357,7 @@ PRResult PRDevice::DriverLoadMachineTypeDefaults(PRMachineType machineType, uint
|
|||||||
const bool mappedSternDriverGroupPolarity[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
|
const bool mappedSternDriverGroupPolarity[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
|
||||||
const int lastWPCCoilDriverGroup = 9;
|
const int lastWPCCoilDriverGroup = 9;
|
||||||
const int lastSternCoilDriverGroup = 7;
|
const int lastSternCoilDriverGroup = 7;
|
||||||
const int mappedWPCDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 400, 400, 400, 400, 400, 400, 400, 0, 0, 0, 0, 0, 0, 0, 0};
|
const int mappedWPCDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
const int mappedSternDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400};
|
const int mappedSternDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400};
|
||||||
const int mappedWPCDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0};
|
const int mappedWPCDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
const int mappedSternDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
|
const int mappedSternDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
|
||||||
@@ -1401,23 +1376,29 @@ PRResult PRDevice::PRLEDColor(PRLED * pLED, uint8_t color)
|
|||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeColor, color, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeColor, color, buffer);
|
||||||
|
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDFade(PRLED * pLED, uint8_t fadeColor, uint16_t fadeRate)
|
PRResult PRDevice::PRLEDFade(PRLED * pLED, uint8_t fadeColor, uint16_t fadeRate)
|
||||||
{
|
{
|
||||||
const int bufferWords = 4;
|
const int bufferWords = 2;
|
||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, &buffer[2]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, &buffer[3]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, buffer);
|
||||||
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDFadeColor(PRLED * pLED, uint8_t fadeColor)
|
PRResult PRDevice::PRLEDFadeColor(PRLED * pLED, uint8_t fadeColor)
|
||||||
@@ -1426,9 +1407,10 @@ PRResult PRDevice::PRLEDFadeColor(PRLED * pLED, uint8_t fadeColor)
|
|||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, buffer);
|
||||||
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDFadeRate(uint8_t boardAddr, uint16_t fadeRate)
|
PRResult PRDevice::PRLEDFadeRate(uint8_t boardAddr, uint16_t fadeRate)
|
||||||
@@ -1437,26 +1419,30 @@ PRResult PRDevice::PRLEDFadeRate(uint8_t boardAddr, uint16_t fadeRate)
|
|||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, buffer);
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDRGBColor(PRLEDRGB * pLED, uint32_t color)
|
PRResult PRDevice::PRLEDRGBColor(PRLEDRGB * pLED, uint32_t color)
|
||||||
{
|
{
|
||||||
const int bufferWords = 6;
|
const int bufferWords = 2;
|
||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 16) & 0xFF, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 16) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &buffer[2]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 8) & 0xFF, &buffer[3]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &buffer[4]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeColor, color & 0xFF, &buffer[5]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeColor, color & 0xFF, buffer);
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDRGBFade(PRLEDRGB * pLED, uint32_t fadeColor, uint16_t fadeRate)
|
PRResult PRDevice::PRLEDRGBFade(PRLEDRGB * pLED, uint32_t fadeColor, uint16_t fadeRate)
|
||||||
@@ -1465,39 +1451,53 @@ PRResult PRDevice::PRLEDRGBFade(PRLEDRGB * pLED, uint32_t fadeColor, uint16_t fa
|
|||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, &buffer[2]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, &buffer[3]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, &buffer[4]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[5]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &buffer[6]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &buffer[7]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, &buffer[8]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[9]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &buffer[10]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &buffer[11]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, buffer);
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRResult PRDevice::PRLEDRGBFadeColor(PRLEDRGB * pLED, uint32_t fadeColor)
|
PRResult PRDevice::PRLEDRGBFadeColor(PRLEDRGB * pLED, uint32_t fadeColor)
|
||||||
{
|
{
|
||||||
const int bufferWords = 6;
|
const int bufferWords = 2;
|
||||||
uint32_t buffer[bufferWords];
|
uint32_t buffer[bufferWords];
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, buffer);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, &buffer[1]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &buffer[2]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &buffer[3]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, buffer);
|
||||||
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &buffer[4]);
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, buffer);
|
||||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &buffer[5]);
|
PrepareWriteData(buffer, bufferWords);
|
||||||
|
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, buffer);
|
||||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
return PrepareWriteData(buffer, bufferWords);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -346,7 +346,8 @@ int32_t CreateJTAGShiftTDODataBurst ( uint32_t * burst, uint16_t numBits, bool_t
|
|||||||
|
|
||||||
void FillPDBCommand(uint8_t command, uint8_t boardAddr, PRLEDRegisterType reg, uint8_t data, uint32_t * buffer)
|
void FillPDBCommand(uint8_t command, uint8_t boardAddr, PRLEDRegisterType reg, uint8_t data, uint32_t * buffer)
|
||||||
{
|
{
|
||||||
buffer[0] = (command << P_ROC_DRIVER_PDB_COMMAND_SHIFT) |
|
buffer[0] = CreateBurstCommand (P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, 1 );
|
||||||
|
buffer[1] = (command << P_ROC_DRIVER_PDB_COMMAND_SHIFT) |
|
||||||
(boardAddr << P_ROC_DRIVER_PDB_BOARD_ADDR_SHIFT) |
|
(boardAddr << P_ROC_DRIVER_PDB_BOARD_ADDR_SHIFT) |
|
||||||
(reg << P_ROC_DRIVER_PDB_REGISTER_SHIFT) |
|
(reg << P_ROC_DRIVER_PDB_REGISTER_SHIFT) |
|
||||||
(data << P_ROC_DRIVER_PDB_DATA_SHIFT);
|
(data << P_ROC_DRIVER_PDB_DATA_SHIFT);
|
||||||
|
|||||||
Reference in New Issue
Block a user