Skip to content

Commit 1ddcae6

Browse files
committed
Expose BT SPP Queue size in debug menu.
1 parent d4a83c2 commit 1ddcae6

File tree

8 files changed

+59
-11
lines changed

8 files changed

+59
-11
lines changed

Firmware/RTK_Surveyor/NVM.ino

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ void recordSystemSettingsToFile()
131131
settingsFile.println("enableHeapReport=" + (String)settings.enableHeapReport);
132132
settingsFile.println("dataPortChannel=" + (String)settings.dataPortChannel);
133133
settingsFile.println("spiFrequency=" + (String)settings.spiFrequency);
134-
settingsFile.println("enableLogging=" + (String)settings.enableLogging);
134+
settingsFile.println("sppRxQueueSize=" + (String)settings.sppRxQueueSize);
135+
settingsFile.println("sppTxQueueSize=" + (String)settings.sppTxQueueSize);
135136

136137
//NMEA
137138
settingsFile.println("message.nmea_dtm.msgRate=" + (String)settings.message.nmea_dtm.msgRate);
@@ -386,6 +387,8 @@ bool parseLine(char* str) {
386387
}
387388
else if (strcmp(settingName, "rtkIdentifier") == 0)
388389
settings.rtkIdentifier = d;
390+
else if (strcmp(settingName, "rtkFirmwareVersion") == 0)
391+
{} //Do nothing. Just read it to avoid 'Unknown setting' error
389392

390393
else if (strcmp(settingName, "printDebugMessages") == 0)
391394
settings.printDebugMessages = d;
@@ -451,6 +454,10 @@ bool parseLine(char* str) {
451454
settings.spiFrequency = d;
452455
else if (strcmp(settingName, "enableLogging") == 0)
453456
settings.enableLogging = d;
457+
else if (strcmp(settingName, "sppRxQueueSize") == 0)
458+
settings.sppRxQueueSize = d;
459+
else if (strcmp(settingName, "sppTxQueueSize") == 0)
460+
settings.sppTxQueueSize = d;
454461

455462
//NMEA
456463
else if (strcmp(settingName, "message.nmea_dtm.msgRate") == 0)

Firmware/RTK_Surveyor/System.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ bool startBluetooth()
1515

1616
sprintf(deviceName, "%s %s-%02X%02X", platformPrefix, stateName, unitMACAddress[4], unitMACAddress[5]); //Base mode
1717

18-
if (SerialBT.begin(deviceName) == false)
18+
if (SerialBT.begin(deviceName, false, settings.sppRxQueueSize, settings.sppTxQueueSize) == false) //localName, isMaster, rxBufferSize, txBufferSize
1919
{
2020
Serial.println(F("An error occurred initializing Bluetooth"));
2121
radioState = RADIO_OFF;

Firmware/RTK_Surveyor/Tasks.ino

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ void F9PSerialReadTask(void *e)
9292

9393
xSemaphoreGive(xFATSemaphore);
9494
} //End xFATSemaphore
95+
else
96+
{
97+
log_d("F9SerialRead: Semaphore failed to yield");
98+
}
9599
} //End maxLogTime
96100
} //End logging
97101
} //End serial available from GNSS

Firmware/RTK_Surveyor/menuDebug.ino

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ void menuDebug()
2727
Serial.print(settings.spiFrequency);
2828
Serial.println(" MHz");
2929

30+
Serial.print(F("4) Set SPP RX Buffer Size: "));
31+
Serial.println(settings.sppRxQueueSize);
32+
33+
Serial.print(F("5) Set SPP TX Buffer Size: "));
34+
Serial.println(settings.sppTxQueueSize);
35+
3036
Serial.println(F("x) Exit"));
3137

3238
byte incoming = getByteChoice(menuTimeout); //Timeout after x seconds
@@ -50,13 +56,39 @@ void menuDebug()
5056
int freq = getNumber(menuTimeout); //Timeout after x seconds
5157
if (freq < 1 || freq > 48) //Arbitrary 48 hour limit
5258
{
53-
Serial.println(F("Error: max minutes out of range"));
59+
Serial.println(F("Error: SPI frequency out of range"));
5460
}
5561
else
5662
{
5763
settings.spiFrequency = freq; //Recorded to NVM and file at main menu exit
5864
}
5965
}
66+
else if (incoming == '4')
67+
{
68+
Serial.print(F("Enter SPP RX Queue Size in Bytes (32 to 16384): "));
69+
uint16_t queSize = getNumber(menuTimeout); //Timeout after x seconds
70+
if (queSize < 32 || queSize > 16384) //Arbitrary 16k limit
71+
{
72+
Serial.println(F("Error: Queue size out of range"));
73+
}
74+
else
75+
{
76+
settings.sppRxQueueSize = queSize; //Recorded to NVM and file at main menu exit
77+
}
78+
}
79+
else if (incoming == '5')
80+
{
81+
Serial.print(F("Enter SPP TX Queue Size in Bytes (32 to 16384): "));
82+
uint16_t queSize = getNumber(menuTimeout); //Timeout after x seconds
83+
if (queSize < 32 || queSize > 16384) //Arbitrary 16k limit
84+
{
85+
Serial.println(F("Error: Queue size out of range"));
86+
}
87+
else
88+
{
89+
settings.sppTxQueueSize = queSize; //Recorded to NVM and file at main menu exit
90+
}
91+
}
6092
else if (incoming == 'x')
6193
break;
6294
else if (incoming == STATUS_GETBYTE_TIMEOUT)

Firmware/RTK_Surveyor/settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ struct struct_settings {
278278
muxConnectionType_e dataPortChannel = MUX_UBLOX_NMEA; //Mux default to ublox UART1
279279
uint16_t spiFrequency = 8; //By default, use 8MHz SPI
280280
bool enableLogging = true; //If an SD card is present, log default sentences
281+
uint16_t sppRxQueueSize = 2048;
282+
uint16_t sppTxQueueSize = 512;
281283
} settings;
282284

283285
//These are the devices on board RTK Surveyor that may be on or offline.

Firmware/RTK_Surveyor/src/BluetoothSerial/BluetoothSerial.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@
4040

4141
const char * _spp_server_name = "ESP32SPP";
4242

43-
#define RX_QUEUE_SIZE (512 * 4) //Increase to facilitate larger NTRIP transfers
43+
//Now passed in during begin()
44+
//#define RX_QUEUE_SIZE (512 * 4) //Increase to facilitate larger NTRIP transfers
4445
//#define RX_QUEUE_SIZE 512
45-
#define TX_QUEUE_SIZE 32
46+
//#define TX_QUEUE_SIZE 512 //Increase to facilitate high transmission rates
47+
//#define TX_QUEUE_SIZE 32
4648
#define SPP_TX_QUEUE_TIMEOUT 1000
4749
#define SPP_TX_DONE_TIMEOUT 1000
4850
#define SPP_CONGESTED_TIMEOUT 1000
@@ -485,7 +487,7 @@ static void esp_bt_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *pa
485487
}
486488
}
487489

488-
static bool _init_bt(const char *deviceName)
490+
static bool _init_bt(const char *deviceName, uint16_t rxQueueSize, uint16_t txQueueSize)
489491
{
490492
if(!_spp_event_group){
491493
_spp_event_group = xEventGroupCreate();
@@ -498,14 +500,14 @@ static bool _init_bt(const char *deviceName)
498500
xEventGroupSetBits(_spp_event_group, SPP_DISCONNECTED);
499501
}
500502
if (_spp_rx_queue == NULL){
501-
_spp_rx_queue = xQueueCreate(RX_QUEUE_SIZE, sizeof(uint8_t)); //initialize the queue
503+
_spp_rx_queue = xQueueCreate(rxQueueSize, sizeof(uint8_t)); //initialize the queue
502504
if (_spp_rx_queue == NULL){
503505
log_e("RX Queue Create Failed");
504506
return false;
505507
}
506508
}
507509
if (_spp_tx_queue == NULL){
508-
_spp_tx_queue = xQueueCreate(TX_QUEUE_SIZE, sizeof(spp_packet_t*)); //initialize the queue
510+
_spp_tx_queue = xQueueCreate(txQueueSize, sizeof(spp_packet_t *)); //initialize the queue
509511
if (_spp_tx_queue == NULL){
510512
log_e("TX Queue Create Failed");
511513
return false;
@@ -654,13 +656,13 @@ BluetoothSerial::~BluetoothSerial(void)
654656
_stop_bt();
655657
}
656658

657-
bool BluetoothSerial::begin(String localName, bool isMaster)
659+
bool BluetoothSerial::begin(String localName, bool isMaster, uint16_t rxQueueSize, uint16_t txQueueSize)
658660
{
659661
_isMaster = isMaster;
660662
if (localName.length()){
661663
local_name = localName;
662664
}
663-
return _init_bt(local_name.c_str());
665+
return _init_bt(local_name.c_str(), rxQueueSize, txQueueSize);
664666
}
665667

666668
int BluetoothSerial::available(void)

Firmware/RTK_Surveyor/src/BluetoothSerial/BluetoothSerial.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class BluetoothSerial: public Stream
3535
BluetoothSerial(void);
3636
~BluetoothSerial(void);
3737

38-
bool begin(String localName=String(), bool isMaster=false);
38+
bool begin(String localName=String(), bool isMaster=false, uint16_t rxQueueSize = 512, uint16_t txQueueSize = 512);
3939
int available(void);
4040
int peek(void);
4141
bool hasClient(void);

Issue_Template.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Describe your issue here. If you reference a datasheet please specify which one
33

44
### Your workbench
55
* What version of RTK Surveyor firmware are you running? This can be found when the serial menu is opened (also in the settings.txt file, and in the serial output at power up).
6+
* Are you connected to the device over Bluetooth? What app? Are you transmitting NTRIP back to the device?
67
* How is everything being powered?
78
* Are there any additional details that may help us help you?
89

0 commit comments

Comments
 (0)