@@ -56,6 +56,7 @@ static ctr_gnss_user_cb m_user_cb;
56
56
static void * m_user_data ;
57
57
static atomic_t m_corr_id ;
58
58
static bool m_running ;
59
+ enum ctr_info_product_family m_product_family ;
59
60
60
61
K_MSGQ_DEFINE_STATIC (m_cmd_msgq , sizeof (struct cmd_msgq_item ), CMD_MSGQ_MAX_ITEMS , 4 );
61
62
#if defined(CONFIG_CTR_LTE_V2_GNSS )
@@ -72,28 +73,27 @@ static void lte_v2_gnss_handler(const struct ctr_lte_v2_gnss_update *update, voi
72
73
static int process_req_start (const struct cmd_msgq_item * item )
73
74
{
74
75
int ret ;
75
- enum ctr_info_product_family product_family ;
76
76
77
- ret = ctr_info_get_product_family (& product_family );
77
+ ret = ctr_info_get_product_family (& m_product_family );
78
78
if (ret ) {
79
79
LOG_ERR ("Call `ctr_info_get_product_family` failed: %d" , ret );
80
80
return ret ;
81
81
}
82
82
83
83
#if defined(CONFIG_CTR_GNSS_M8 )
84
- if (product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_M ) {
84
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_M ) {
85
85
ctr_gnss_m8_set_handler (m_user_cb , m_user_data );
86
86
return ctr_gnss_m8_start ();
87
87
}
88
88
#endif
89
89
90
90
#if defined(CONFIG_CTR_LTE_V2_GNSS )
91
- if (product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_U1 ) {
91
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_U1 ) {
92
92
ctr_lte_v2_gnss_set_handler (lte_v2_gnss_handler , NULL );
93
93
return ctr_lte_v2_gnss_set_enable (true);
94
94
}
95
95
#endif
96
- LOG_ERR ("Unsupported product family: 0x%03x" , product_family );
96
+ LOG_ERR ("Unsupported product family: 0x%03x" , m_product_family );
97
97
98
98
return - ENOTSUP ;
99
99
}
@@ -103,11 +103,15 @@ static int process_req_stop(const struct cmd_msgq_item *item)
103
103
int ret = - ENOTSUP ;
104
104
105
105
#if defined(CONFIG_CTR_GNSS_M8 )
106
- ret = ctr_gnss_m8_stop (item -> data .stop .keep_bckp_domain );
106
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_M ) {
107
+ ret = ctr_gnss_m8_stop (item -> data .stop .keep_bckp_domain );
108
+ }
107
109
#endif
108
110
109
111
#if defined(CONFIG_CTR_LTE_V2_GNSS )
110
- ret = ctr_lte_v2_gnss_set_enable (false);
112
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_U1 ) {
113
+ ret = ctr_lte_v2_gnss_set_enable (false);
114
+ }
111
115
#endif
112
116
113
117
return ret ;
@@ -198,24 +202,29 @@ static void dispatcher_thread(void)
198
202
int ret ;
199
203
200
204
#if defined(CONFIG_CTR_GNSS_M8 )
201
- ret = ctr_gnss_m8_process_data ();
202
- if (ret ) {
203
- LOG_ERR ("Call `ctr_gnss_m8_process_data` failed: %d" , ret );
205
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_M ) {
206
+ ret = ctr_gnss_m8_process_data ();
207
+ if (ret ) {
208
+ LOG_ERR ("Call `ctr_gnss_m8_process_data` failed: %d" , ret );
209
+ }
204
210
}
205
211
#endif
206
212
207
213
#if defined(CONFIG_CTR_LTE_V2_GNSS )
208
- struct ctr_lte_v2_gnss_update update ;
209
- ret = k_msgq_get (& m_lte_v2_msgq , & update , K_MSEC (100 ));
210
- if (!ret ) {
211
- union ctr_gnss_event_data data = {0 };
212
- data .update .fix_quality = -1 ;
213
- data .update .satellites_tracked = -1 ;
214
- data .update .latitude = update .latitude ;
215
- data .update .longitude = update .longitude ;
216
- data .update .altitude = update .altitude ;
217
- if (m_user_cb ) {
218
- m_user_cb (CTR_GNSS_EVENT_UPDATE , & data , m_user_data );
214
+ if (m_product_family == CTR_INFO_PRODUCT_FAMILY_CHESTER_U1 ) {
215
+ struct ctr_lte_v2_gnss_update update ;
216
+ ret = k_msgq_get (& m_lte_v2_msgq , & update , K_MSEC (100 ));
217
+ if (!ret ) {
218
+ union ctr_gnss_event_data data = {0 };
219
+ data .update .fix_quality = -1 ;
220
+ data .update .satellites_tracked = -1 ;
221
+ data .update .latitude = update .latitude ;
222
+ data .update .longitude = update .longitude ;
223
+ data .update .altitude = update .altitude ;
224
+ if (m_user_cb ) {
225
+ m_user_cb (CTR_GNSS_EVENT_UPDATE , & data ,
226
+ m_user_data );
227
+ }
219
228
}
220
229
}
221
230
#endif
@@ -284,3 +293,14 @@ int ctr_gnss_stop(bool keep_bckp_domain, int *corr_id)
284
293
285
294
return 0 ;
286
295
}
296
+
297
+ int ctr_gnss_is_running (bool * running )
298
+ {
299
+ if (!running ) {
300
+ return - EINVAL ;
301
+ }
302
+
303
+ * running = m_running ;
304
+
305
+ return 0 ;
306
+ }
0 commit comments