diff --git a/dummy/domain.c b/dummy/domain.c index 421807e71a0b93e61bc6c6c1f18afd354e990f9c..48878ced5f7e12d584ef0544d45b112d57583e53 100644 --- a/dummy/domain.c +++ b/dummy/domain.c @@ -42,9 +42,7 @@ #include "../master/domain.h" #include "../master/master.h" -/*****************************************************************************/ - -uint8_t dummy_data[PAGE_SIZE]; +uint8_t *get_dummy_data(void); /*****************************************************************************/ @@ -58,7 +56,7 @@ int ecrt_domain_register_pdo( void **data_ptr /**< address of the process data pointer */ ) { - *data_ptr = dummy_data; + *data_ptr = get_dummy_data(); return 0; } @@ -79,7 +77,7 @@ int ecrt_domain_register_pdo_list( const ec_pdo_reg_t *reg; for (reg = pdo_regs; reg->slave_address; reg++) { - *(reg->data_ptr) = dummy_data; + *(reg->data_ptr) = get_dummy_data(); } return 0; @@ -102,7 +100,7 @@ int ecrt_domain_register_pdo_range( void **data_ptr /**< address of the process data pointer */ ) { - *data_ptr = dummy_data; + *data_ptr = get_dummy_data(); return 0; } diff --git a/dummy/master.c b/dummy/master.c index 5561cec4a012dabfd987d7574428d9632323bba5..74bafa36e40b2143e6caf9fdbdc10416d855a1e0 100644 --- a/dummy/master.c +++ b/dummy/master.c @@ -49,7 +49,8 @@ ec_domain_t *ecrt_master_create_domain(ec_master_t *master) { - return (ec_domain_t *) 1; + static unsigned int domain = 1; + return (ec_domain_t *) domain++; } /*****************************************************************************/ @@ -80,7 +81,8 @@ ec_slave_t *ecrt_master_get_slave( uint32_t p ) { - return (ec_slave_t *) 1; + static unsigned int slave = 1; + return (ec_slave_t *) slave++; } /*****************************************************************************/ diff --git a/dummy/module.c b/dummy/module.c index 010ba1ac3379c662a45461f8f1f74b8810aeede9..de1b47b66e74bc0aef69f7512283ad7f2304272f 100644 --- a/dummy/module.c +++ b/dummy/module.c @@ -65,6 +65,23 @@ MODULE_VERSION(EC_MASTER_VERSION); /*****************************************************************************/ +#define DUMMY_SIZE (PAGE_SIZE * 8) + +uint8_t dummy_data[DUMMY_SIZE]; +off_t dummy_off = 0; + +uint8_t *get_dummy_data(void) +{ + off_t cur = dummy_off; + + dummy_off += 64; + dummy_off %= DUMMY_SIZE; + + return dummy_data + cur; +} + +/*****************************************************************************/ + /** * Module initialization. * Initializes \a ec_master_count masters. @@ -74,6 +91,9 @@ MODULE_VERSION(EC_MASTER_VERSION); int __init ec_init_module(void) { EC_INFO("Master DUMMY driver %s\n", EC_MASTER_VERSION); + + memset(dummy_data, 0x00, DUMMY_SIZE); + return 0; }