Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: sx1276/sx1276.cpp
- Revision:
- 50:43f7160e869c
- Parent:
- 48:62af1e692f00
- Child:
- 51:aef3234bcb71
diff -r a41aafb5e12f -r 43f7160e869c sx1276/sx1276.cpp
--- a/sx1276/sx1276.cpp Sun May 14 14:27:37 2017 +0000
+++ b/sx1276/sx1276.cpp Tue May 16 17:51:21 2017 +0200
@@ -633,7 +633,7 @@
return airTime;
}
-void SX1276::Send( uint8_t *buffer, uint8_t size )
+void SX1276::Send( uint8_t *buffer, uint8_t size, uint8_t *header, uint8_t hsize )
{
uint32_t txTimeout = 0;
@@ -642,28 +642,35 @@
case MODEM_FSK:
{
this->settings.FskPacketHandler.NbBytes = 0;
- this->settings.FskPacketHandler.Size = size;
+ this->settings.FskPacketHandler.Size = size + hsize;
if( this->settings.Fsk.FixLen == false )
{
- WriteFifo( ( uint8_t* )&size, 1 );
+ uint8_t tmpsize = size + hsize;
+ WriteFifo( ( uint8_t* )&tmpsize, 1 );
}
else
{
- Write( REG_PAYLOADLENGTH, size );
+ Write( REG_PAYLOADLENGTH, size + hsize);
}
- if( ( size > 0 ) && ( size <= 64 ) )
+ if( ( size + hsize > 0 ) && ( size + hsize <= 64 ) )
{
- this->settings.FskPacketHandler.ChunkSize = size;
+ this->settings.FskPacketHandler.ChunkSize = size + hsize;
}
else
{
- memcpy( rxtxBuffer, buffer, size );
+ if (header) {
+ WriteFifo( header, hsize );
+ memcpy( rxtxBuffer, header, hsize );
+ }
+ memcpy( rxtxBuffer+hsize, buffer+hsize, size );
this->settings.FskPacketHandler.ChunkSize = 32;
}
// Write payload buffer
+ if (header)
+ WriteFifo( header, hsize );
WriteFifo( buffer, this->settings.FskPacketHandler.ChunkSize );
this->settings.FskPacketHandler.NbBytes += this->settings.FskPacketHandler.ChunkSize;
txTimeout = this->settings.Fsk.TxTimeout;
@@ -682,10 +689,10 @@
Write( REG_LR_INVERTIQ2, RFLR_INVERTIQ2_OFF );
}
- this->settings.LoRaPacketHandler.Size = size;
+ this->settings.LoRaPacketHandler.Size = size + hsize;
// Initializes the payload size
- Write( REG_LR_PAYLOADLENGTH, size );
+ Write( REG_LR_PAYLOADLENGTH, size + hsize);
// Full buffer used for Tx
Write( REG_LR_FIFOTXBASEADDR, 0 );
@@ -698,6 +705,8 @@
wait_ms( 1 );
}
// Write payload buffer
+ if (header)
+ WriteFifo( header, hsize );
WriteFifo( buffer, size );
txTimeout = this->settings.LoRa.TxTimeout;
}
@@ -1002,6 +1011,24 @@
SetOpMode( RF_OPMODE_TRANSMITTER );
}
+int16_t SX1276::MaxMTUSize( RadioModems_t modem )
+{
+ int16_t mtuSize = 0;
+
+ switch( modem )
+ {
+ case MODEM_FSK:
+ mtuSize = RX_BUFFER_SIZE;
+ case MODEM_LORA:
+ mtuSize = RX_BUFFER_SIZE;
+ break;
+ default:
+ mtuSize = -1;
+ break;
+ }
+ return mtuSize;
+}
+
int16_t SX1276::GetRssi( RadioModems_t modem )
{
int16_t rssi = 0;