master/slave.c
changeset 626 a5e838c30733
parent 625 ec69acbbd156
child 627 4793ca94f082
equal deleted inserted replaced
625:ec69acbbd156 626:a5e838c30733
   480         const uint8_t *data, /**< category data */
   480         const uint8_t *data, /**< category data */
   481         size_t word_count /**< number of words */
   481         size_t word_count /**< number of words */
   482         )
   482         )
   483 {
   483 {
   484     unsigned int i;
   484     unsigned int i;
   485     ec_sii_sync_t *sync;
   485     ec_sync_t *sync;
   486 
   486 
   487     // sync manager struct is 4 words long
   487     // sync manager struct is 4 words long
   488     slave->sii_sync_count = word_count / 4;
   488     slave->sii_sync_count = word_count / 4;
   489 
   489 
   490     if (!(slave->sii_syncs = kmalloc(sizeof(ec_sii_sync_t) *
   490     if (!(slave->sii_syncs = kmalloc(sizeof(ec_sync_t) *
   491                     slave->sii_sync_count, GFP_ATOMIC))) {
   491                     slave->sii_sync_count, GFP_ATOMIC))) {
   492         EC_ERR("Failed to allocate Sync-Manager memory.\n");
   492         EC_ERR("Failed to allocate Sync-Manager memory.\n");
   493         return -1;
   493         return -1;
   494     }
   494     }
   495     
   495     
   606    \return 0 in case of success, else < 0
   606    \return 0 in case of success, else < 0
   607 */
   607 */
   608 
   608 
   609 int ec_slave_prepare_fmmu(ec_slave_t *slave, /**< EtherCAT slave */
   609 int ec_slave_prepare_fmmu(ec_slave_t *slave, /**< EtherCAT slave */
   610                           const ec_domain_t *domain, /**< domain */
   610                           const ec_domain_t *domain, /**< domain */
   611                           const ec_sii_sync_t *sync  /**< sync manager */
   611                           const ec_sync_t *sync  /**< sync manager */
   612                           )
   612                           )
   613 {
   613 {
   614     unsigned int i;
   614     unsigned int i;
   615     ec_fmmu_t *fmmu;
   615     ec_fmmu_t *fmmu;
   616 
   616 
   652 size_t ec_slave_info(const ec_slave_t *slave, /**< EtherCAT slave */
   652 size_t ec_slave_info(const ec_slave_t *slave, /**< EtherCAT slave */
   653                      char *buffer /**< Output buffer */
   653                      char *buffer /**< Output buffer */
   654                      )
   654                      )
   655 {
   655 {
   656     off_t off = 0;
   656     off_t off = 0;
   657     ec_sii_sync_t *sync;
   657     ec_sync_t *sync;
   658     ec_pdo_t *pdo;
   658     ec_pdo_t *pdo;
   659     ec_pdo_entry_t *pdo_entry;
   659     ec_pdo_entry_t *pdo_entry;
   660     int first, i;
   660     int first, i;
   661     ec_sdo_data_t *sdodata;
   661     ec_sdo_data_t *sdodata;
   662     char str[20];
   662     char str[20];
  1065    \return sync manager size
  1065    \return sync manager size
  1066 */
  1066 */
  1067 
  1067 
  1068 uint16_t ec_slave_calc_sync_size(const ec_slave_t *slave,
  1068 uint16_t ec_slave_calc_sync_size(const ec_slave_t *slave,
  1069                                  /**< EtherCAT slave */
  1069                                  /**< EtherCAT slave */
  1070                                  const ec_sii_sync_t *sync
  1070                                  const ec_sync_t *sync
  1071                                  /**< sync manager */
  1071                                  /**< sync manager */
  1072                                  )
  1072                                  )
  1073 {
  1073 {
  1074     ec_pdo_t *pdo;
  1074     ec_pdo_t *pdo;
  1075     ec_pdo_entry_t *pdo_entry;
  1075     ec_pdo_entry_t *pdo_entry;
  1098 /*****************************************************************************/
  1098 /*****************************************************************************/
  1099 
  1099 
  1100 /**
  1100 /**
  1101  */
  1101  */
  1102 
  1102 
  1103 ec_sii_sync_t *ec_slave_get_pdo_sync(
  1103 ec_sync_t *ec_slave_get_pdo_sync(
  1104         ec_slave_t *slave, /**< EtherCAT slave */
  1104         ec_slave_t *slave, /**< EtherCAT slave */
  1105         ec_direction_t dir /**< input or output */
  1105         ec_direction_t dir /**< input or output */
  1106         )
  1106         )
  1107 {
  1107 {
  1108     unsigned int sync_index;
  1108     unsigned int sync_index;
  1131    Initializes a sync manager configuration page with EEPROM data.
  1131    Initializes a sync manager configuration page with EEPROM data.
  1132    The referenced memory (\a data) must be at least EC_SYNC_SIZE bytes.
  1132    The referenced memory (\a data) must be at least EC_SYNC_SIZE bytes.
  1133 */
  1133 */
  1134 
  1134 
  1135 void ec_slave_sync_config(const ec_slave_t *slave, /**< EtherCAT slave */
  1135 void ec_slave_sync_config(const ec_slave_t *slave, /**< EtherCAT slave */
  1136         const ec_sii_sync_t *sync, /**< sync manager */
  1136         const ec_sync_t *sync, /**< sync manager */
  1137         uint8_t *data /**> configuration memory */
  1137         uint8_t *data /**> configuration memory */
  1138         )
  1138         )
  1139 {
  1139 {
  1140     size_t sync_size;
  1140     size_t sync_size;
  1141 
  1141