@@ -14,29 +14,29 @@ struct sensor_data_msg {
14
14
int b ;
15
15
};
16
16
17
- ZBUS_CHAN_DEFINE (chan1 , /* Name */
17
+ ZBUS_CHAN_DEFINE (chan1 , /* Name */
18
18
struct sensor_data_msg , /* Message type */
19
19
20
- NULL , /* Validator */
21
- NULL , /* User data */
20
+ NULL , /* Validator */
21
+ NULL , /* User data */
22
22
ZBUS_OBSERVERS_EMPTY , /* observers */
23
23
ZBUS_MSG_INIT (0 ) /* Initial value major 0, minor 1, build 1023 */
24
24
);
25
25
26
- ZBUS_CHAN_DEFINE (chan2 , /* Name */
26
+ ZBUS_CHAN_DEFINE (chan2 , /* Name */
27
27
struct sensor_data_msg , /* Message type */
28
28
29
- NULL , /* Validator */
30
- NULL , /* User data */
29
+ NULL , /* Validator */
30
+ NULL , /* User data */
31
31
ZBUS_OBSERVERS (lis2 ), /* observers */
32
32
ZBUS_MSG_INIT (0 ) /* Initial value major 0, minor 1, build 1023 */
33
33
);
34
34
35
- ZBUS_CHAN_DEFINE (chan3 , /* Name */
35
+ ZBUS_CHAN_DEFINE (chan3 , /* Name */
36
36
struct sensor_data_msg , /* Message type */
37
37
38
- NULL , /* Validator */
39
- NULL , /* User data */
38
+ NULL , /* Validator */
39
+ NULL , /* User data */
40
40
ZBUS_OBSERVERS_EMPTY , /* observers */
41
41
ZBUS_MSG_INIT (0 ) /* Initial value major 0, minor 1, build 1023 */
42
42
);
@@ -69,16 +69,15 @@ ZTEST(basic, test_specification_based__zbus_obs_add_rm_obs)
69
69
{
70
70
count_callback1 = 0 ;
71
71
struct sensor_data_msg sd = {.a = 10 , .b = 100 };
72
- static struct zbus_observer_node n1 , n2 , n3 , n4 , n5 , n6 ;
73
72
74
73
/* Tyring to add same static observer as one dynamic */
75
- zassert_equal (- EEXIST , zbus_chan_add_obs (& chan2 , & lis2 , & n2 , K_MSEC (200 )), NULL );
74
+ zassert_equal (- EEXIST , zbus_chan_add_obs (& chan2 , & lis2 , K_MSEC (200 )), NULL );
76
75
77
76
zassert_equal (0 , zbus_chan_pub (& chan1 , & sd , K_MSEC (500 )), NULL );
78
77
zassert_equal (count_callback1 , 0 , "The counter could not be more than zero, no obs" );
79
78
80
- zassert_equal (0 , zbus_chan_add_obs (& chan1 , & lis1 , & n1 , K_MSEC (200 )), NULL );
81
- zassert_equal (- EALREADY , zbus_chan_add_obs (& chan1 , & lis1 , & n1 , K_MSEC (200 )),
79
+ zassert_equal (0 , zbus_chan_add_obs (& chan1 , & lis1 , K_MSEC (200 )), NULL );
80
+ zassert_equal (- EALREADY , zbus_chan_add_obs (& chan1 , & lis1 , K_MSEC (200 )),
82
81
"It cannot be added twice" );
83
82
84
83
zassert_equal (0 , zbus_chan_pub (& chan1 , & sd , K_MSEC (500 )), NULL );
@@ -99,21 +98,32 @@ ZTEST(basic, test_specification_based__zbus_obs_add_rm_obs)
99
98
zassert_equal (0 , zbus_chan_pub (& chan2 , & sd , K_MSEC (500 )), NULL );
100
99
zassert_equal (count_callback2 , 1 , "The counter could not be more than zero, no obs" );
101
100
102
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis3 , & n3 , K_MSEC (200 )), NULL );
101
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis3 , K_MSEC (200 )), NULL );
103
102
104
- zassert_equal (- EALREADY , zbus_chan_add_obs (& chan2 , & lis3 , & n3 , K_MSEC (200 )),
103
+ zassert_equal (- EALREADY , zbus_chan_add_obs (& chan2 , & lis3 , K_MSEC (200 )),
105
104
"It cannot be added twice" );
106
105
107
106
zassert_equal (0 , zbus_chan_pub (& chan2 , & sd , K_MSEC (500 )), NULL );
108
107
zassert_equal (count_callback2 , 3 , "The counter could not be more than zero, no obs, %d" ,
109
108
count_callback2 );
110
109
count_callback2 = 0 ;
111
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & sub1 , & n1 , K_MSEC (200 )), NULL );
112
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & sub2 , & n2 , K_MSEC (200 )), NULL );
113
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis4 , & n4 , K_MSEC (200 )), "It must add the obs" );
114
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis5 , & n5 , K_MSEC (200 )), "It must add the obs" );
115
- zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis6 , & n6 , K_MSEC (200 )), "It must add the obs" );
116
-
110
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & sub1 , K_MSEC (200 )), NULL );
111
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & sub2 , K_MSEC (200 )), NULL );
112
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis4 , K_MSEC (200 )), "It must add the obs" );
113
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis5 , K_MSEC (200 )), "It must add the obs" );
114
+ zassert_equal (0 , zbus_chan_add_obs (& chan2 , & lis6 , K_MSEC (200 )), "It must add the obs" );
115
+
116
+ #if defined(CONFIG_ZBUS_RUNTIME_OBSERVERS_NODE_ALLOC_DYNAMIC )
117
+ /* Make the heap full */
118
+ void * mem ;
119
+
120
+ do {
121
+ mem = k_malloc (1 );
122
+ } while (mem != NULL );
123
+
124
+ /* With the heap full it will not be possible to add another obs */
125
+ #endif
126
+ zassert_equal (- EFAULT , zbus_chan_add_obs (& chan2 , & lis7 , K_MSEC (200 )), NULL );
117
127
zassert_equal (0 , zbus_chan_pub (& chan2 , & sd , K_MSEC (500 )), NULL );
118
128
zassert_equal (count_callback2 , 5 , NULL );
119
129
@@ -134,9 +144,7 @@ static struct aux2_wq_data wq_handler;
134
144
135
145
static void wq_dh_cb (struct k_work * item )
136
146
{
137
- static struct zbus_observer_node node ;
138
-
139
- zassert_equal (- EAGAIN , zbus_chan_add_obs (& chan2 , & sub1 , & node , K_MSEC (200 )), NULL );
147
+ zassert_equal (- EAGAIN , zbus_chan_add_obs (& chan2 , & sub1 , K_MSEC (200 )), NULL );
140
148
zassert_equal (- EAGAIN , zbus_chan_rm_obs (& chan2 , & sub2 , K_MSEC (200 )), NULL );
141
149
}
142
150
@@ -186,12 +194,11 @@ ZBUS_CHAN_ADD_OBS(chan4, prio_lis4, 2);
186
194
ZTEST (basic , test_specification_based__zbus_obs_priority )
187
195
{
188
196
struct sensor_data_msg sd = {.a = 70 , .b = 116 };
189
- static struct zbus_observer_node n1 , n2 ;
190
197
191
198
execution_sequence_idx = 0 ;
192
199
193
- zassert_equal (0 , zbus_chan_add_obs (& chan4 , & prio_lis2 , & n1 , K_MSEC (200 )), NULL );
194
- zassert_equal (0 , zbus_chan_add_obs (& chan4 , & prio_lis1 , & n2 , K_MSEC (200 )), NULL );
200
+ zassert_equal (0 , zbus_chan_add_obs (& chan4 , & prio_lis2 , K_MSEC (200 )), NULL );
201
+ zassert_equal (0 , zbus_chan_add_obs (& chan4 , & prio_lis1 , K_MSEC (200 )), NULL );
195
202
196
203
zassert_equal (0 , zbus_chan_pub (& chan4 , & sd , K_MSEC (500 )), NULL );
197
204
0 commit comments