Skip to content

Commit 6179edd

Browse files
committed
Fixed gnss reinitialization logic
Made the system capable of reinitilizing the GNSS chip after powering it off. Signed-off-by: Jared Baumann <[email protected]>
1 parent 65f2077 commit 6179edd

File tree

3 files changed

+67
-2
lines changed

3 files changed

+67
-2
lines changed

samples/tmo_shell/src/tmo_gnss.c

+17-1
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,23 @@ int gnss_version(void)
115115
return rc;
116116
}
117117

118+
int gnss_cold_start(void)
119+
{
120+
return sensor_attr_set(cxd5605,SENSOR_CHAN_ALL,SENSOR_ATTR_CXD5605_COLD_START, NULL);
121+
}
122+
123+
int gnss_warm_start(void)
124+
{
125+
return sensor_attr_set(cxd5605,SENSOR_CHAN_ALL,SENSOR_ATTR_CXD5605_WARM_START, NULL);
126+
}
127+
128+
129+
int gnss_hot_start(void)
130+
{
131+
return sensor_attr_set(cxd5605,SENSOR_CHAN_ALL,SENSOR_ATTR_CXD5605_HOT_START_TTFF, NULL);
132+
}
133+
134+
118135
static uint8_t current_state = ENABLE_HARDWARE;
119136

120137
void gnss_enable_hardware(void)
@@ -166,7 +183,6 @@ void gnss_thread(void *a, void *b, void *c)
166183

167184
switch (current_state) {
168185
case ENABLE_HARDWARE:
169-
rc = sensor_attr_set(cxd5605,SENSOR_CHAN_ALL,SENSOR_ATTR_CXD5605_CALLBACK, &sens_values);
170186
sens_values.val1 = 1;
171187
sens_values.val2 = (int32_t)callback_1pps;
172188
rc = sensor_attr_set(cxd5605,SENSOR_CHAN_ALL,SENSOR_ATTR_CXD5605_PULSE, &sens_values);

samples/tmo_shell/src/tmo_gnss.h

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ void setup_gnss(void);
3131
void readGNSSData(void);
3232
void ln_buf_gen(void);
3333
int gnss_version(void);
34+
int gnss_cold_start(void);
35+
int gnss_warm_start(void);
36+
int gnss_hot_start(void);
3437

3538
#ifdef TMO_GNSS
3639
/* variables for tmo_gnss.c */

samples/tmo_shell/src/tmo_shell.c

+47-1
Original file line numberDiff line numberDiff line change
@@ -1677,13 +1677,52 @@ int cmd_gnss_version(const struct shell *shell, size_t argc, char **argv)
16771677

16781678
ret = gnss_version();
16791679
if (ret) {
1680-
printf("%s:%d - Error reading GNSS version (%d)\n", __FUNCTION__, __LINE__, ret);
1680+
shell_error(shell, "%s:%d - Error reading GNSS version (%d)\n", __FUNCTION__, __LINE__, ret);
16811681
return 1;
16821682
}
16831683

16841684
return 0;
16851685
}
16861686

1687+
int cmd_gnss_start_cold(const struct shell *shell, size_t argc, char **argv)
1688+
{
1689+
int ret;
1690+
1691+
ret = gnss_cold_start();
1692+
if (ret) {
1693+
shell_error(shell, "%s:%d - Error reading GNSS version (%d)\n", __FUNCTION__, __LINE__, ret);
1694+
return EIO;
1695+
}
1696+
1697+
return 0;
1698+
}
1699+
1700+
int cmd_gnss_start_warm(const struct shell *shell, size_t argc, char **argv)
1701+
{
1702+
int ret;
1703+
1704+
ret = gnss_warm_start();
1705+
if (ret) {
1706+
shell_error(shell, "%s:%d - Error reading GNSS version (%d)\n", __FUNCTION__, __LINE__, ret);
1707+
return EIO;
1708+
}
1709+
1710+
return 0;
1711+
}
1712+
1713+
int cmd_gnss_start_hot(const struct shell *shell, size_t argc, char **argv)
1714+
{
1715+
int ret;
1716+
1717+
ret = gnss_hot_start();
1718+
if (ret) {
1719+
shell_error(shell, "%s:%d - Error reading GNSS version (%d)\n", __FUNCTION__, __LINE__, ret);
1720+
return EIO;
1721+
}
1722+
1723+
return 0;
1724+
}
1725+
16871726
void print_set_modem_edrx_usage(const struct shell *shell)
16881727
{
16891728
shell_print(shell, "tmo modem <iface> edrx <mode> <Act-type> <edrx value>");
@@ -2755,6 +2794,12 @@ SHELL_STATIC_SUBCMD_SET_CREATE(tmo_file_sub, SHELL_CMD(cp, NULL, "Copy a file",
27552794
SHELL_CMD(sha1, NULL, "Compute a file SHA1", cmd_sha1),
27562795
SHELL_SUBCMD_SET_END);
27572796

2797+
SHELL_STATIC_SUBCMD_SET_CREATE(tmo_gnss_start_sub,
2798+
SHELL_CMD(cold, NULL, "Perform a cold start", cmd_gnss_start_cold),
2799+
SHELL_CMD(hot, NULL, "Perform a (Pseudo)Hot start", cmd_gnss_start_hot),
2800+
SHELL_CMD(warm, NULL, "Perform a warm start", cmd_gnss_start_warm),
2801+
SHELL_SUBCMD_SET_END);
2802+
27582803
SHELL_STATIC_SUBCMD_SET_CREATE(
27592804
sub_tmo, SHELL_CMD(battery, &tmo_battery_sub, "Battery and charger status", NULL),
27602805
SHELL_CMD(ble, &tmo_ble_sub, "BLE test commands", NULL),
@@ -2769,6 +2814,7 @@ SHELL_STATIC_SUBCMD_SET_CREATE(
27692814
SHELL_CMD(dns, NULL, "Perform dns lookup", cmd_dnslookup),
27702815
SHELL_CMD(file, &tmo_file_sub, "File commands", NULL),
27712816
SHELL_CMD(gnssversion, NULL, "Get GNSS chip version", cmd_gnss_version),
2817+
SHELL_CMD(gnssstart, &tmo_gnss_start_sub, "Start GNSS Aquisition", NULL),
27722818
SHELL_CMD(http, NULL, "Get http URL", cmd_http),
27732819
SHELL_CMD(hwid, NULL, "Read the HWID divider voltage", cmd_hwid),
27742820
SHELL_CMD(ifaces, NULL, "List network interfaces", cmd_list_ifaces),

0 commit comments

Comments
 (0)