Skip to content

Commit d51cd0d

Browse files
modules: app: fix behaviour
App module should respond to cloud events. Also rename connected to cloud_connected etc. Signed-off-by: Giacomo Dematteis <giacomo.dematteis@nordicsemi.no>
1 parent 2f7360c commit d51cd0d

File tree

3 files changed

+41
-39
lines changed

3 files changed

+41
-39
lines changed

app/src/modules/app/app.c

+34-24
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,22 @@ static const struct smf_state states[];
4848
static void init_entry(void *o);
4949
static void init_run(void *o);
5050

51-
static void connected_entry(void *o);
52-
static void connected_run(void *o);
51+
static void cloud_connected_entry(void *o);
52+
static void cloud_connected_run(void *o);
5353

54-
static void disconnected_entry(void *o);
55-
static void disconnected_run(void *o);
54+
static void cloud_disconnected_entry(void *o);
55+
static void cloud_disconnected_run(void *o);
5656

5757
/* Defining the hierarchical trigger module states:
5858
*
5959
* STATE_INIT: Initial state where the module waits for time to be available.
60-
* STATE_DISCONNECTED: Cloud connection is not established or paused
61-
* STATE_CONNECTED: Cloud connection is established and ready to send data
60+
* STATE_CLOUD_DISCONNECTED: Cloud connection is not established or paused
61+
* STATE_CLOUD_CONNECTED: Cloud connection is established and ready to send data
6262
*/
6363
enum state {
6464
STATE_INIT,
65-
STATE_CONNECTED,
66-
STATE_DISCONNECTED,
65+
STATE_CLOUD_CONNECTED,
66+
STATE_CLOUD_DISCONNECTED,
6767
};
6868

6969
/* Construct state table */
@@ -75,16 +75,16 @@ static const struct smf_state states[] = {
7575
NULL,
7676
NULL
7777
),
78-
[STATE_CONNECTED] = SMF_CREATE_STATE(
79-
connected_entry,
80-
connected_run,
78+
[STATE_CLOUD_CONNECTED] = SMF_CREATE_STATE(
79+
cloud_connected_entry,
80+
cloud_connected_run,
8181
NULL,
8282
NULL,
8383
NULL
8484
),
85-
[STATE_DISCONNECTED] = SMF_CREATE_STATE(
86-
disconnected_entry,
87-
disconnected_run,
85+
[STATE_CLOUD_DISCONNECTED] = SMF_CREATE_STATE(
86+
cloud_disconnected_entry,
87+
cloud_disconnected_run,
8888
NULL,
8989
NULL,
9090
NULL
@@ -204,16 +204,25 @@ static void init_run(void *o)
204204

205205
LOG_DBG("%s", __func__);
206206

207-
if ((user_object->chan == &TIME_CHAN) && (user_object->time_status == TIME_AVAILABLE)) {
208-
LOG_DBG("Time available, going into disconnected state");
209-
STATE_SET(app_state, STATE_DISCONNECTED);
210-
return;
207+
if (user_object->chan == &CLOUD_CHAN) {
208+
if (user_object->status == CLOUD_CONNECTED_READY_TO_SEND) {
209+
LOG_DBG("Cloud connected and ready, going into connected state");
210+
STATE_SET(app_state, STATE_CLOUD_CONNECTED);
211+
return;
212+
}
213+
214+
if ((user_object->status == CLOUD_DISCONNECTED) ||
215+
(user_object->status == CLOUD_CONNECTED_PAUSED)) {
216+
LOG_DBG("Cloud disconnected/paused, going into disconnected state");
217+
STATE_SET(app_state, STATE_CLOUD_DISCONNECTED);
218+
return;
219+
}
211220
}
212221
}
213222

214223
/* STATE_DISCONNECTED */
215224

216-
static void disconnected_entry(void *o)
225+
static void cloud_disconnected_entry(void *o)
217226
{
218227
ARG_UNUSED(o);
219228

@@ -222,22 +231,23 @@ static void disconnected_entry(void *o)
222231
k_work_cancel_delayable(&trigger_work);
223232
}
224233

225-
static void disconnected_run(void *o)
234+
static void cloud_disconnected_run(void *o)
226235
{
227236
struct state_object *user_object = o;
228237

229238
LOG_DBG("%s", __func__);
230239

231240
if ((user_object->chan == &CLOUD_CHAN) &&
232241
(user_object->status == CLOUD_CONNECTED_READY_TO_SEND)) {
233-
STATE_SET(app_state, STATE_CONNECTED);
242+
LOG_DBG("Cloud connected and ready, going into connected state");
243+
STATE_SET(app_state, STATE_CLOUD_CONNECTED);
234244
return;
235245
}
236246
}
237247

238248
/* STATE_CONNECTED */
239249

240-
static void connected_entry(void *o)
250+
static void cloud_connected_entry(void *o)
241251
{
242252
ARG_UNUSED(o);
243253

@@ -246,7 +256,7 @@ static void connected_entry(void *o)
246256
k_work_reschedule(&trigger_work, K_NO_WAIT);
247257
}
248258

249-
static void connected_run(void *o)
259+
static void cloud_connected_run(void *o)
250260
{
251261
struct state_object *user_object = o;
252262

@@ -256,7 +266,7 @@ static void connected_run(void *o)
256266
((user_object->status == CLOUD_CONNECTED_PAUSED) ||
257267
(user_object->status == CLOUD_DISCONNECTED))) {
258268
LOG_DBG("Cloud disconnected/paused, going into disconnected state");
259-
STATE_SET(app_state, STATE_DISCONNECTED);
269+
STATE_SET(app_state, STATE_CLOUD_DISCONNECTED);
260270
return;
261271
}
262272

tests/module/app/CMakeLists.txt

-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ target_sources(app
1717
src/checks.c
1818
../../../app/src/modules/app/app.c
1919
../../../app/src/common/message_channel.c
20-
../../../app/src/modules/cloud/cloud_module.c
2120
)
2221

2322
target_include_directories(app PRIVATE src)
@@ -26,11 +25,9 @@ zephyr_include_directories(${ZEPHYR_BASE}/include/zephyr/)
2625
zephyr_include_directories(${ZEPHYR_BASE}/subsys/testsuite/include)
2726
zephyr_include_directories(../../../app/src/common)
2827
zephyr_include_directories(../../../app/src/modules/cloud)
29-
zephyr_include_directories(${NRF_DIR}/subsys/net/lib/nrf_cloud/include)
3028
zephyr_include_directories(../../../app/src/modules/battery)
3129
zephyr_include_directories(../../../app/src/modules/button)
3230
zephyr_include_directories(../../../app/src/modules/network)
33-
zephyr_include_directories(${NRF_DIR}/../modules/lib/cjson)
3431

3532
target_link_options(app PRIVATE --whole-archive)
3633

tests/module/app/src/main.c

+7-12
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ ZBUS_CHAN_DEFINE(NETWORK_CHAN,
4040
ZBUS_OBSERVERS_EMPTY,
4141
ZBUS_MSG_INIT(.type = NETWORK_DISCONNECTED)
4242
);
43+
ZBUS_CHAN_DEFINE(CLOUD_CHAN,
44+
enum cloud_msg_type,
45+
NULL,
46+
NULL,
47+
ZBUS_OBSERVERS_EMPTY,
48+
ZBUS_MSG_INIT(CLOUD_DISCONNECTED)
49+
);
4350

4451
DEFINE_FFF_GLOBALS;
4552

@@ -107,21 +114,9 @@ static void send_cloud_disconnected(void)
107114
TEST_ASSERT_EQUAL(0, err);
108115
}
109116

110-
static void send_time_available(void)
111-
{
112-
enum time_status time_type = TIME_AVAILABLE;
113-
int err = zbus_chan_pub(&TIME_CHAN, &time_type, K_SECONDS(1));
114-
115-
TEST_ASSERT_EQUAL(0, err);
116-
}
117-
118117
void test_init_to_connected_state(void)
119118
{
120119
/* Given */
121-
send_time_available();
122-
123-
k_sleep(K_SECONDS(1));
124-
125120
send_cloud_connected_ready_to_send();
126121

127122
/* When */

0 commit comments

Comments
 (0)