1213 return ec_slave_conf_sdo(slave, sdo_index, sdo_subindex, data, 4); |
1213 return ec_slave_conf_sdo(slave, sdo_index, sdo_subindex, data, 4); |
1214 } |
1214 } |
1215 |
1215 |
1216 /*****************************************************************************/ |
1216 /*****************************************************************************/ |
1217 |
1217 |
1218 /** |
|
1219 \return 0 in case of success, else < 0 |
|
1220 \ingroup RealtimeInterface |
|
1221 */ |
|
1222 |
|
1223 int ecrt_slave_pdo_size(ec_slave_t *slave, /**< EtherCAT slave */ |
|
1224 uint16_t pdo_index, /**< PDO index */ |
|
1225 uint8_t pdo_subindex, /**< PDO subindex */ |
|
1226 size_t size /**< new PDO size */ |
|
1227 ) |
|
1228 { |
|
1229 EC_WARN("ecrt_slave_pdo_size() currently not available.\n"); |
|
1230 return -1; |
|
1231 |
|
1232 #if 0 |
|
1233 unsigned int i, j, field_counter; |
|
1234 const ec_sii_sync_t *sync; |
|
1235 const ec_pdo_t *pdo; |
|
1236 ec_varsize_t *var; |
|
1237 |
|
1238 if (!slave->type) { |
|
1239 EC_ERR("Slave %i has no type information!\n", slave->ring_position); |
|
1240 return -1; |
|
1241 } |
|
1242 |
|
1243 field_counter = 0; |
|
1244 for (i = 0; (sync = slave->type->sync_managers[i]); i++) { |
|
1245 for (j = 0; (field = sync->fields[j]); j++) { |
|
1246 if (!strcmp(field->name, field_name)) { |
|
1247 if (field_counter++ == field_index) { |
|
1248 // is the size of this field variable? |
|
1249 if (field->size) { |
|
1250 EC_ERR("Field \"%s\"[%i] of slave %i has no variable" |
|
1251 " size!\n", field->name, field_index, |
|
1252 slave->ring_position); |
|
1253 return -1; |
|
1254 } |
|
1255 // does a size specification already exist? |
|
1256 list_for_each_entry(var, &slave->varsize_fields, list) { |
|
1257 if (var->field == field) { |
|
1258 EC_WARN("Resizing field \"%s\"[%i] of slave %i.\n", |
|
1259 field->name, field_index, |
|
1260 slave->ring_position); |
|
1261 var->size = size; |
|
1262 return 0; |
|
1263 } |
|
1264 } |
|
1265 // create a new size specification... |
|
1266 if (!(var = kmalloc(sizeof(ec_varsize_t), GFP_KERNEL))) { |
|
1267 EC_ERR("Failed to allocate memory for varsize_t!\n"); |
|
1268 return -1; |
|
1269 } |
|
1270 var->field = field; |
|
1271 var->size = size; |
|
1272 list_add_tail(&var->list, &slave->varsize_fields); |
|
1273 return 0; |
|
1274 } |
|
1275 } |
|
1276 } |
|
1277 } |
|
1278 |
|
1279 EC_ERR("Slave %i (\"%s %s\") has no field \"%s\"[%i]!\n", |
|
1280 slave->ring_position, slave->type->vendor_name, |
|
1281 slave->type->product_name, field_name, field_index); |
|
1282 return -1; |
|
1283 #endif |
|
1284 } |
|
1285 |
|
1286 /*****************************************************************************/ |
|
1287 |
|
1288 /** \cond */ |
1218 /** \cond */ |
1289 |
1219 |
1290 EXPORT_SYMBOL(ecrt_slave_conf_sdo8); |
1220 EXPORT_SYMBOL(ecrt_slave_conf_sdo8); |
1291 EXPORT_SYMBOL(ecrt_slave_conf_sdo16); |
1221 EXPORT_SYMBOL(ecrt_slave_conf_sdo16); |
1292 EXPORT_SYMBOL(ecrt_slave_conf_sdo32); |
1222 EXPORT_SYMBOL(ecrt_slave_conf_sdo32); |
1293 EXPORT_SYMBOL(ecrt_slave_pdo_size); |
|
1294 |
1223 |
1295 /** \endcond */ |
1224 /** \endcond */ |
1296 |
1225 |
1297 /*****************************************************************************/ |
1226 /*****************************************************************************/ |