master/domain.c
changeset 708 90bdb315f560
parent 640 16e9ad7d8e12
child 719 03d5b96632fb
equal deleted inserted replaced
707:9ae68af8e17a 708:90bdb315f560
   296     ec_data_reg_t *data_reg;
   296     ec_data_reg_t *data_reg;
   297     ec_slave_t *slave;
   297     ec_slave_t *slave;
   298     ec_fmmu_t *fmmu;
   298     ec_fmmu_t *fmmu;
   299     unsigned int i, j, datagram_count;
   299     unsigned int i, j, datagram_count;
   300     uint32_t pdo_off, pdo_off_datagram;
   300     uint32_t pdo_off, pdo_off_datagram;
   301     uint32_t datagram_offset;
   301     uint32_t datagram_offset, log_addr;
   302     size_t datagram_data_size, sync_size;
   302     size_t datagram_data_size, sync_size;
   303     ec_datagram_t *datagram;
   303     ec_datagram_t *datagram;
   304 
   304 
   305     domain->base_address = base_address;
   305     domain->base_address = base_address;
   306 
   306 
   348             fmmu = &data_reg->slave->fmmus[i];
   348             fmmu = &data_reg->slave->fmmus[i];
   349             if (fmmu->domain == domain && fmmu->sync == data_reg->sync) {
   349             if (fmmu->domain == domain && fmmu->sync == data_reg->sync) {
   350                 pdo_off = fmmu->logical_start_address + data_reg->sync_offset;
   350                 pdo_off = fmmu->logical_start_address + data_reg->sync_offset;
   351                 // search datagram
   351                 // search datagram
   352                 list_for_each_entry(datagram, &domain->datagrams, list) {
   352                 list_for_each_entry(datagram, &domain->datagrams, list) {
   353                     pdo_off_datagram = pdo_off - datagram->address.logical;
   353                     log_addr = EC_READ_U32(datagram->address);
   354                     if (pdo_off >= datagram->address.logical &&
   354                     pdo_off_datagram = pdo_off - log_addr;
       
   355                     if (pdo_off >= log_addr &&
   355                         pdo_off_datagram < datagram->mem_size) {
   356                         pdo_off_datagram < datagram->mem_size) {
   356                         *data_reg->data_ptr = datagram->data +
   357                         *data_reg->data_ptr = datagram->data +
   357                             pdo_off_datagram;
   358                             pdo_off_datagram;
   358                     }
   359                     }
   359                 }
   360                 }