@@ -48,6 +48,7 @@ extern "C" uint32_t cb2001 (
48
48
}
49
49
50
50
static const co_default_t od_defaults[] = {
51
+ {0x1800 , 1 , 0x181 },
51
52
{0x2000 , 1 , 11 },
52
53
{0x2000 , 2 , 22 },
53
54
{0x2000 , 3 , 33 },
@@ -290,6 +291,49 @@ TEST_F (OdTest, StoreThenLoadNewOD)
290
291
EXPECT_EQ (0 , memcmp (expect_str2001, str2001, sizeof (str2001) - 1 ));
291
292
}
292
293
294
+ TEST_F (OdTest, LoadUpdatedPDOConfig)
295
+ {
296
+ const co_obj_t * obj1800 = find_obj (0x1800 );
297
+ uint32_t value;
298
+ uint32_t result;
299
+
300
+ // Defaults contain enabled TPDO
301
+ net.defaults = od_defaults;
302
+ net.state = STATE_PREOP;
303
+
304
+ // Set TPDO COB-ID to 0x456
305
+
306
+ value = 0x80000456 ;
307
+ result = co_od1800_fn (&net, OD_EVENT_WRITE, obj1800, NULL , 1 , &value);
308
+ EXPECT_EQ (0u , result);
309
+
310
+ value = 0x00000456 ;
311
+ result = co_od1800_fn (&net, OD_EVENT_WRITE, obj1800, NULL , 1 , &value);
312
+ EXPECT_EQ (0u , result);
313
+
314
+ // Store comm parameters
315
+ co_od_store (&net, CO_STORE_COMM, 0x1000 , 0x1FFF );
316
+
317
+ // Set TPDO COB-ID to 0x457
318
+
319
+ value = 0x80000457 ;
320
+ result = co_od1800_fn (&net, OD_EVENT_WRITE, obj1800, NULL , 1 , &value);
321
+ EXPECT_EQ (0u , result);
322
+
323
+ value = 0x00000457 ;
324
+ result = co_od1800_fn (&net, OD_EVENT_WRITE, obj1800, NULL , 1 , &value);
325
+ EXPECT_EQ (0u , result);
326
+
327
+ // Reset comm parameters while in STATE_INIT
328
+ net.state = STATE_INIT;
329
+ co_od_reset (&net, CO_STORE_COMM, 0x1000 , 0x1FFF );
330
+
331
+ // TPDO COB-ID should have been restored
332
+ result = co_od1800_fn (&net, OD_EVENT_READ, obj1800, NULL , 1 , &value);
333
+ EXPECT_EQ (0u , result);
334
+ EXPECT_EQ (0x456u , value);
335
+ }
336
+
293
337
TEST_F (OdTest, OD1010)
294
338
{
295
339
const co_obj_t * obj1010 = find_obj (0x1010 );
0 commit comments