Move SPI buffer new (memory allocation) into begin
This commit is contained in:
@@ -478,10 +478,26 @@ boolean SFE_UBLOX_GNSS::begin(SPIClass &spiPort, uint8_t csPin, uint32_t spiSpee
|
|||||||
if (!connected)
|
if (!connected)
|
||||||
connected = isConnected();
|
connected = isConnected();
|
||||||
|
|
||||||
// Initialize/clear the SPI buffer - fill it with 0xFF as this is what is received from the UBLOX module if there's no data to be processed
|
//Create the SPI buffer
|
||||||
for (uint8_t i = 0; i < 20; i++)
|
if (spiBuffer == NULL) //Memory has not yet been allocated - so use new
|
||||||
{
|
{
|
||||||
spiBuffer[i] = 0xFF;
|
spiBuffer = new uint8_t[getSpiTransactionSize()];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (spiBuffer == NULL)
|
||||||
|
{
|
||||||
|
if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging
|
||||||
|
{
|
||||||
|
_debugSerial->print(F("begin (SPI): memory allocation failed for SPI Buffer!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Initialize/clear the SPI buffer - fill it with 0xFF as this is what is received from the UBLOX module if there's no data to be processed
|
||||||
|
for (uint8_t i = 0; i < getSpiTransactionSize(); i++)
|
||||||
|
{
|
||||||
|
spiBuffer[i] = 0xFF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (connected);
|
return (connected);
|
||||||
@@ -2879,16 +2895,13 @@ void SFE_UBLOX_GNSS::spiTransfer(uint8_t byteToTransfer)
|
|||||||
// Send a command via SPI
|
// Send a command via SPI
|
||||||
void SFE_UBLOX_GNSS::sendSpiCommand(ubxPacket *outgoingUBX)
|
void SFE_UBLOX_GNSS::sendSpiCommand(ubxPacket *outgoingUBX)
|
||||||
{
|
{
|
||||||
if (spiBuffer == NULL) //Memory has not yet been allocated - so use new
|
if (spiBuffer == NULL)
|
||||||
{
|
{
|
||||||
spiBuffer = new uint8_t[getSpiTransactionSize()];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (spiBuffer == NULL) {
|
|
||||||
if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging
|
if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging
|
||||||
{
|
{
|
||||||
_debugSerial->print(F("sendSpiCommand: memory allocation failed for SPI Buffer!"));
|
_debugSerial->print(F("sendSpiCommand: memory allocation failed for SPI Buffer!"));
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start at the beginning of the SPI buffer
|
// Start at the beginning of the SPI buffer
|
||||||
|
|||||||
@@ -495,7 +495,7 @@ enum sfe_ublox_ls_src_e
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// For storing SPI bytes received during sendSpiCommand
|
// For storing SPI bytes received during sendSpiCommand
|
||||||
#define SPI_BUFFER_SIZE 128
|
#define SFE_UBLOX_SPI_BUFFER_SIZE 128
|
||||||
|
|
||||||
//-=-=-=-=- UBX binary specific variables
|
//-=-=-=-=- UBX binary specific variables
|
||||||
struct ubxPacket
|
struct ubxPacket
|
||||||
@@ -1316,7 +1316,7 @@ private:
|
|||||||
|
|
||||||
uint8_t *spiBuffer = NULL; // A buffer to store any bytes being recieved back from the device while we are sending via SPI
|
uint8_t *spiBuffer = NULL; // A buffer to store any bytes being recieved back from the device while we are sending via SPI
|
||||||
uint8_t spiBufferIndex = 0; // Index into the SPI buffer
|
uint8_t spiBufferIndex = 0; // Index into the SPI buffer
|
||||||
uint8_t spiTransactionSize = SPI_BUFFER_SIZE; //Default size of the SPI buffer
|
uint8_t spiTransactionSize = SFE_UBLOX_SPI_BUFFER_SIZE; //Default size of the SPI buffer
|
||||||
|
|
||||||
//Init the packet structures and init them with pointers to the payloadAck, payloadCfg, payloadBuf and payloadAuto arrays
|
//Init the packet structures and init them with pointers to the payloadAck, payloadCfg, payloadBuf and payloadAuto arrays
|
||||||
ubxPacket packetAck = {0, 0, 0, 0, 0, payloadAck, 0, 0, SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED, SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED};
|
ubxPacket packetAck = {0, 0, 0, 0, 0, payloadAck, 0, 0, SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED, SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED};
|
||||||
|
|||||||
Reference in New Issue
Block a user