mirror of
https://github.com/preble/libpinproc
synced 2026-02-22 18:15:25 +01:00
Hardcoded number cleanup and more.
Made the hard coded number cleanup changes Gerry requested. Also changed FillLEDWriteCommand to FillPDBCommand, now it can be used filling out any PDB command (extra constants in PRHardware.h).
This commit is contained in:
103
src/PRDevice.cpp
103
src/PRDevice.cpp
@@ -1347,100 +1347,107 @@ int PRDevice::GetVersionInfo(uint16_t *verPtr, uint16_t *revPtr, uint16_t *combi
|
||||
|
||||
PRResult PRDevice::PRLEDColor(PRLED * pLED, uint8_t color)
|
||||
{
|
||||
uint32_t data[2];
|
||||
const int bufferWords = 2;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, data);
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeColor, color, &data[1]);
|
||||
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]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 2, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDFade(PRLED * pLED, uint8_t fadeColor, uint16_t fadeRate)
|
||||
{
|
||||
uint32_t data[4];
|
||||
const int bufferWords = 4;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, data);
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &data[1]);
|
||||
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]);
|
||||
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, &data[2]);
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, &data[3]);
|
||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, &buffer[2]);
|
||||
FillPDBCommand(P_ROC_DRIVER_PDB_WRITE_COMMAND, pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, &buffer[3]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 4, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDFadeColor(PRLED * pLED, uint8_t fadeColor)
|
||||
{
|
||||
uint32_t data[2];
|
||||
const int bufferWords = 2;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->LEDIndex, data);
|
||||
FillLEDWriteCommand(pLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor, &data[1]);
|
||||
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]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 2, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDFadeRate(uint8_t boardAddr, uint16_t fadeRate)
|
||||
{
|
||||
uint32_t data[2];
|
||||
const int bufferWords = 2;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, data);
|
||||
FillLEDWriteCommand(boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &data[1]);
|
||||
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]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 2, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDRGBColor(PRLEDRGB * pLED, uint32_t color)
|
||||
{
|
||||
uint32_t data[6];
|
||||
const int bufferWords = 6;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, data);
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 16) & 0xFF, &data[1]);
|
||||
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]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &data[2]);
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeColor, (color >> 8) & 0xFF, &data[3]);
|
||||
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, kPRLEDRegisterTypeColor, (color >> 8) & 0xFF, &buffer[3]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &data[4]);
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeColor, color & 0xFF, &data[5]);
|
||||
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, kPRLEDRegisterTypeColor, color & 0xFF, &buffer[5]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 6, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDRGBFade(PRLEDRGB * pLED, uint32_t fadeColor, uint16_t fadeRate)
|
||||
{
|
||||
uint32_t data[12];
|
||||
const int bufferWords = 12;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, data);
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &data[1]);
|
||||
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]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, &data[2]);
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, &data[3]);
|
||||
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, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, &buffer[3]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, &data[4]);
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &data[5]);
|
||||
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, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[5]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &data[6]);
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &data[7]);
|
||||
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, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &buffer[7]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateLow, fadeRate & 0xFF, &data[8]);
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &data[9]);
|
||||
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, kPRLEDRegisterTypeFadeRateHigh, (fadeRate >> 8) & 0xFF, &buffer[9]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &data[10]);
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &data[11]);
|
||||
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, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &buffer[11]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 12, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
PRResult PRDevice::PRLEDRGBFadeColor(PRLEDRGB * pLED, uint32_t fadeColor)
|
||||
{
|
||||
uint32_t data[6];
|
||||
const int bufferWords = 6;
|
||||
uint32_t buffer[bufferWords];
|
||||
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pRedLED->LEDIndex, data);
|
||||
FillLEDWriteCommand(pLED->pRedLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 16) & 0xFF, &data[1]);
|
||||
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]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pGreenLED->LEDIndex, &data[2]);
|
||||
FillLEDWriteCommand(pLED->pGreenLED->boardAddr, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &data[3]);
|
||||
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, kPRLEDRegisterTypeFadeColor, (fadeColor >> 8) & 0xFF, &buffer[3]);
|
||||
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeLEDIndex, pLED->pBlueLED->LEDIndex, &data[4]);
|
||||
FillLEDWriteCommand(pLED->pBlueLED->boardAddr, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &data[5]);
|
||||
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, kPRLEDRegisterTypeFadeColor, fadeColor & 0xFF, &buffer[5]);
|
||||
|
||||
return WriteDataRaw(3, 0xc00, 6, data);
|
||||
return WriteDataRaw(P_ROC_BUS_DRIVER_CTRL_SELECT, P_ROC_DRIVER_PDB_ADDR, bufferWords, buffer);
|
||||
}
|
||||
|
||||
@@ -344,9 +344,12 @@ int32_t CreateJTAGShiftTDODataBurst ( uint32_t * burst, uint16_t numBits, bool_t
|
||||
return kPRSuccess;
|
||||
}
|
||||
|
||||
void FillLEDWriteCommand(uint8_t boardAddr, PRLEDRegisterType reg, uint8_t value, uint32_t * pData)
|
||||
void FillPDBCommand(uint8_t command, uint8_t boardAddr, PRLEDRegisterType reg, uint8_t data, uint32_t * buffer)
|
||||
{
|
||||
pData[0] = (0x1 << 24) | (boardAddr << 16) | (reg << 8) | value;
|
||||
buffer[0] = (command << P_ROC_DRIVER_PDB_COMMAND_SHIFT) |
|
||||
(boardAddr << P_ROC_DRIVER_PDB_BOARD_ADDR_SHIFT) |
|
||||
(reg << P_ROC_DRIVER_PDB_REGISTER_SHIFT) |
|
||||
(data << P_ROC_DRIVER_PDB_DATA_SHIFT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -254,6 +254,19 @@ const uint32_t P_ROC_DMD_RCLK_LOW_CYCLES_SHIFT = 24;
|
||||
|
||||
const uint32_t P_ROC_DMD_DOT_TABLE_BASE_ADDR = 0x1000;
|
||||
|
||||
const uint32_t P_ROC_DRIVER_PDB_ADDR = 0xC00;
|
||||
const uint32_t P_ROC_DRIVER_PDB_COMMAND_SHIFT = 24;
|
||||
const uint32_t P_ROC_DRIVER_PDB_BOARD_ADDR_SHIFT = 16;
|
||||
const uint32_t P_ROC_DRIVER_PDB_REGISTER_SHIFT = 8;
|
||||
const uint32_t P_ROC_DRIVER_PDB_DATA_SHIFT = 0;
|
||||
const uint32_t P_ROC_DRIVER_PDB_READ_COMMAND = 0x00;
|
||||
const uint32_t P_ROC_DRIVER_PDB_WRITE_COMMAND = 0x01;
|
||||
const uint32_t P_ROC_DRIVER_PDB_CLEAR_ALL_COMMAND = 0x07;
|
||||
const uint32_t P_ROC_DRIVER_PDB_BROADCAST_ADDR = 0x3F;
|
||||
|
||||
const uint32_t p_ROC_DRIVER_PDB_REGISTER_BANK_A = 0;
|
||||
const uint32_t p_ROC_DRIVER_PDB_REGISTER_BANK_B = 1;
|
||||
|
||||
typedef enum PRLEDRegisterType {
|
||||
kPRLEDRegisterTypeLEDIndex = 0,
|
||||
kPRLEDRegisterTypeColor = 1,
|
||||
@@ -299,7 +312,7 @@ int32_t CreateJTAGLatchOutputsBurst ( uint32_t * burst, PRJTAGOutputs *jtagOutpu
|
||||
int32_t CreateJTAGForceOutputsBurst ( uint32_t * burst, PRJTAGOutputs *jtagOutputs);
|
||||
int32_t CreateJTAGShiftTDODataBurst ( uint32_t * burst, uint16_t numBits, bool_t dataBlockComplete);
|
||||
|
||||
void FillLEDWriteCommand(uint8_t boardAddr, PRLEDRegisterType reg, uint8_t value, uint32_t * pData);
|
||||
void FillPDBCommand(uint8_t command, uint8_t boardAddr, PRLEDRegisterType reg, uint8_t value, uint32_t * pData);
|
||||
|
||||
PRResult PRHardwareOpen();
|
||||
void PRHardwareClose();
|
||||
|
||||
Reference in New Issue
Block a user