Skip to content

Commit 38336e5

Browse files
committed
Add gpsAidingServerConf
1 parent 987999e commit 38336e5

3 files changed

+43
-14
lines changed

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ gpsGetRmc KEYWORD2
142142
# gpsEnableSpeed KEYWORD2
143143
# gpsGetSpeed KEYWORD2
144144
gpsRequest KEYWORD2
145+
gpsAidingServerConf KEYWORD2
145146
getFileContents KEYWORD2
146147
functionality KEYWORD2
147148
sendCustomCommandWithResponse KEYWORD2

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ bool SARA_R5::poll(void)
283283
_debugPort->println(saraRXBuffer);
284284
}
285285

286-
// This assumes the ULOC response type is "1". TO DO: check that is true...
286+
// This assumes the ULOC response type is "0" or "1" - as selected by gpsRequest detailed
287287
int dateStore[5];
288288
scanNum = sscanf(saraRXBuffer,
289289
"+UULOC: %d/%d/%d,%d:%d:%d.%d,%d.%[^,],%d.%[^,],%d,%lu,%u,%u,%*s",
@@ -317,9 +317,9 @@ bool SARA_R5::poll(void)
317317
if (_printDebug == true)
318318
{
319319
_debugPort->print("poll +UULOC: lat: ");
320-
_debugPort->print(gps.lat, 6);
320+
_debugPort->print(gps.lat, 7);
321321
_debugPort->print(" lon: ");
322-
_debugPort->print(gps.lon, 6);
322+
_debugPort->print(gps.lon, 7);
323323
_debugPort->print(" alt: ");
324324
_debugPort->print(gps.alt, 2);
325325
_debugPort->print(" speed: ");
@@ -1476,16 +1476,16 @@ SARA_R5_error_t SARA_R5::enterPPP(uint8_t cid, char dialing_type_char,
14761476
return SARA_R5_ERROR_OUT_OF_MEMORY;
14771477
if (dialing_type_char != 0)
14781478
{
1479-
sprintf(command, "%s%c*%lu**%s*%hhu#", SARA_R5_MESSAGE_ENTER_PPP, dialing_type_char,
1480-
dialNumber, PPP_L2P[l2p], cid);
1479+
sprintf(command, "%s%c*%lu**%s*%u#", SARA_R5_MESSAGE_ENTER_PPP, dialing_type_char,
1480+
dialNumber, PPP_L2P[l2p], (unsigned int)cid);
14811481
}
14821482
else
14831483
{
1484-
sprintf(command, "%s*%lu**%s*%hhu#", SARA_R5_MESSAGE_ENTER_PPP,
1485-
dialNumber, PPP_L2P[l2p], cid);
1484+
sprintf(command, "%s*%lu**%s*%u#", SARA_R5_MESSAGE_ENTER_PPP,
1485+
dialNumber, PPP_L2P[l2p], (unsigned int)cid);
14861486
}
14871487

1488-
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK, NULL,
1488+
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_CONNECT, NULL,
14891489
SARA_R5_STANDARD_RESPONSE_TIMEOUT);
14901490

14911491
free(command);
@@ -3099,7 +3099,7 @@ SARA_R5_error_t SARA_R5::gpsGetSpeed(struct SpeedData *speed)
30993099
*/
31003100

31013101
SARA_R5_error_t SARA_R5::gpsRequest(unsigned int timeout, uint32_t accuracy,
3102-
bool detailed)
3102+
bool detailed, unsigned int sensor)
31033103
{
31043104
// AT+ULOC=2,<useCellLocate>,<detailed>,<timeout>,<accuracy>
31053105
SARA_R5_error_t err;
@@ -3120,11 +3120,11 @@ SARA_R5_error_t SARA_R5::gpsRequest(unsigned int timeout, uint32_t accuracy,
31203120
if (command == NULL)
31213121
return SARA_R5_ERROR_OUT_OF_MEMORY;
31223122
#ifdef ARDUINO_ARCH_ESP32
3123-
sprintf(command, "%s=2,3,%d,%d,%d", SARA_R5_GNSS_REQUEST_LOCATION,
3124-
detailed ? 1 : 0, timeout, accuracy);
3123+
sprintf(command, "%s=2,%d,%d,%d,%d", SARA_R5_GNSS_REQUEST_LOCATION,
3124+
sensor, detailed ? 1 : 0, timeout, accuracy);
31253125
#else
3126-
sprintf(command, "%s=2,3,%d,%d,%ld", SARA_R5_GNSS_REQUEST_LOCATION,
3127-
detailed ? 1 : 0, timeout, accuracy);
3126+
sprintf(command, "%s=2,%d,%d,%d,%ld", SARA_R5_GNSS_REQUEST_LOCATION,
3127+
sensor, detailed ? 1 : 0, timeout, accuracy);
31283128
#endif
31293129

31303130
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK, NULL, SARA_R5_10_SEC_TIMEOUT);
@@ -3133,6 +3133,28 @@ SARA_R5_error_t SARA_R5::gpsRequest(unsigned int timeout, uint32_t accuracy,
31333133
return err;
31343134
}
31353135

3136+
SARA_R5_error_t SARA_R5::gpsAidingServerConf(const char *primaryServer, const char *secondaryServer, const char *authToken,
3137+
unsigned int days, unsigned int period, unsigned int resolution,
3138+
unsigned int gnssTypes, unsigned int mode, unsigned int dataType)
3139+
{
3140+
SARA_R5_error_t err;
3141+
char *command;
3142+
3143+
command = sara_r5_calloc_char(strlen(SARA_R5_AIDING_SERVER_CONFIGURATION) + 256);
3144+
if (command == NULL)
3145+
return SARA_R5_ERROR_OUT_OF_MEMORY;
3146+
3147+
sprintf(command, "%s=\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,%d,%d", SARA_R5_AIDING_SERVER_CONFIGURATION,
3148+
primaryServer, secondaryServer, authToken,
3149+
days, period, resolution, gnssTypes, mode, dataType);
3150+
3151+
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK, NULL,
3152+
SARA_R5_STANDARD_RESPONSE_TIMEOUT);
3153+
3154+
free(command);
3155+
return err;
3156+
}
3157+
31363158
SARA_R5_error_t SARA_R5::getFileContents(String filename, String *contents)
31373159
{
31383160
SARA_R5_error_t err;

src/SparkFun_u-blox_SARA-R5_Arduino_Library.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ const char SARA_R5_GNSS_TIME_INDICATION[] = "+UTIMEIND"; // Time information req
139139
const char SARA_R5_GNSS_TIME_CONFIGURATION[] = "+UTIMECFG"; // Sets time configuration
140140
const char SARA_R5_GNSS_CONFIGURE_SENSOR[] = "+ULOCGNSS"; // Configure GNSS sensor
141141
const char SARA_R5_GNSS_CONFIGURE_LOCATION[] = "+ULOCCELL"; // Configure cellular location sensor (CellLocate®)
142+
const char SARA_R5_AIDING_SERVER_CONFIGURATION[] = "+UGSRV"; // Configure aiding server (CellLocate®)
142143
// ### File System
143144
const char SARA_R5_FILE_SYSTEM_READ_FILE[] = "+URDFILE"; // Read a file
144145
// ### Response
@@ -677,7 +678,12 @@ class SARA_R5 : public Print
677678
//SARA_R5_error_t gpsEnableSpeed(bool enable = true);
678679
//SARA_R5_error_t gpsGetSpeed(struct SpeedData *speed);
679680

680-
SARA_R5_error_t gpsRequest(unsigned int timeout, uint32_t accuracy, bool detailed = true);
681+
SARA_R5_error_t gpsRequest(unsigned int timeout, uint32_t accuracy, bool detailed = true, unsigned int sensor = 3);
682+
683+
//CellLocate
684+
SARA_R5_error_t gpsAidingServerConf(const char *primaryServer, const char *secondaryServer, const char *authToken,
685+
unsigned int days = 14, unsigned int period = 4, unsigned int resolution = 1,
686+
unsigned int gnssTypes = 65, unsigned int mode = 0, unsigned int dataType = 15);
681687

682688
// File system
683689
SARA_R5_error_t getFileContents(String filename, String *contents);

0 commit comments

Comments
 (0)