use `int` as return type for ecrt_slave_*

See #101
This commit is contained in:
Bjarne von Horn 2024-02-09 11:06:19 +01:00
parent 13e99008c3
commit 5248b967d2
4 changed files with 46 additions and 28 deletions

View File

@ -1291,8 +1291,10 @@ EC_PUBLIC_API int ecrt_slave_config_sync_manager(
*
* This method has to be called in non-realtime context before
* ecrt_master_activate().
*
* \return 0 on success, otherwise negative error code.
*/
EC_PUBLIC_API void ecrt_slave_config_watchdog(
EC_PUBLIC_API int ecrt_slave_config_watchdog(
ec_slave_config_t *sc, /**< Slave configuration. */
uint16_t watchdog_divider, /**< Number of 40 ns intervals (register
0x0400). Used as a base unit for all
@ -1330,8 +1332,9 @@ EC_PUBLIC_API int ecrt_slave_config_pdo_assign_add(
* ecrt_master_activate().
*
* \see ecrt_slave_config_pdos()
* \return 0 on success, otherwise negative error code.
*/
EC_PUBLIC_API void ecrt_slave_config_pdo_assign_clear(
EC_PUBLIC_API int ecrt_slave_config_pdo_assign_clear(
ec_slave_config_t *sc, /**< Slave configuration. */
uint8_t sync_index /**< Sync manager index. Must be less
than #EC_MAX_SYNC_MANAGERS. */
@ -1364,8 +1367,9 @@ EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_add(
* ecrt_master_activate().
*
* \see ecrt_slave_config_pdos()
* \return 0 on success, otherwise negative error code.
*/
EC_PUBLIC_API void ecrt_slave_config_pdo_mapping_clear(
EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_clear(
ec_slave_config_t *sc, /**< Slave configuration. */
uint16_t pdo_index /**< Index of the PDO. */
);
@ -1512,8 +1516,9 @@ EC_PUBLIC_API int ecrt_slave_config_reg_pdo_entry_pos(
* ecrt_master_activate().
*
* \attention The \a sync1_shift time is ignored.
* \return 0 on success, otherwise negative error code.
*/
EC_PUBLIC_API void ecrt_slave_config_dc(
EC_PUBLIC_API int ecrt_slave_config_dc(
ec_slave_config_t *sc, /**< Slave configuration. */
uint16_t assign_activate, /**< AssignActivate word. */
uint32_t sync0_cycle, /**< SYNC0 cycle time [ns]. */
@ -1780,7 +1785,7 @@ EC_PUBLIC_API ec_reg_request_t *ecrt_slave_config_create_reg_request(
*
* \ingroup ApplicationInterfaceRT
*/
EC_PUBLIC_API void ecrt_slave_config_state(
EC_PUBLIC_API int ecrt_slave_config_state(
const ec_slave_config_t *sc, /**< Slave configuration */
ec_slave_config_state_t *state /**< State object to write to. */
);

View File

@ -109,7 +109,7 @@ int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index,
/****************************************************************************/
void ecrt_slave_config_watchdog(ec_slave_config_t *sc,
int ecrt_slave_config_watchdog(ec_slave_config_t *sc,
uint16_t divider, uint16_t intervals)
{
ec_ioctl_config_t data;
@ -124,7 +124,9 @@ void ecrt_slave_config_watchdog(ec_slave_config_t *sc,
if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to config watchdog: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
return 0;
}
/****************************************************************************/
@ -151,7 +153,7 @@ int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc,
/****************************************************************************/
void ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
int ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
uint8_t sync_index)
{
ec_ioctl_config_pdo_t data;
@ -164,7 +166,9 @@ void ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to clear PDOs: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
return 0;
}
/****************************************************************************/
@ -194,7 +198,7 @@ int ecrt_slave_config_pdo_mapping_add(ec_slave_config_t *sc,
/****************************************************************************/
void ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
int ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
uint16_t pdo_index)
{
ec_ioctl_config_pdo_t data;
@ -207,7 +211,9 @@ void ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to clear PDO entries: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
return 0;
}
/****************************************************************************/
@ -356,7 +362,7 @@ int ecrt_slave_config_reg_pdo_entry_pos(
/****************************************************************************/
void ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
int ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
uint32_t sync0_cycle_time, int32_t sync0_shift_time,
uint32_t sync1_cycle_time, int32_t sync1_shift_time)
{
@ -372,9 +378,9 @@ void ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
ret = ioctl(sc->master->fd, EC_IOCTL_SC_DC, &data);
if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to set DC parameters: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
return 0;
}
/****************************************************************************/
@ -813,7 +819,7 @@ ec_voe_handler_t *ecrt_slave_config_create_voe_handler(ec_slave_config_t *sc,
/****************************************************************************/
void ecrt_slave_config_state(const ec_slave_config_t *sc,
int ecrt_slave_config_state(const ec_slave_config_t *sc,
ec_slave_config_state_t *state)
{
ec_ioctl_sc_state_t data;
@ -824,9 +830,9 @@ void ecrt_slave_config_state(const ec_slave_config_t *sc,
ret = ioctl(sc->master->fd, EC_IOCTL_SC_STATE, &data);
if (EC_IOCTL_IS_ERROR(ret)) {
fprintf(stderr, "Failed to get slave configuration state: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
return 0;
}
/****************************************************************************/

View File

@ -2392,7 +2392,7 @@ static ATTRIBUTES int ec_ioctl_sc_watchdog(
goto out_up;
}
ecrt_slave_config_watchdog(sc,
ret = ecrt_slave_config_watchdog(sc,
data.watchdog_divider, data.watchdog_intervals);
out_up:
@ -2466,8 +2466,7 @@ static ATTRIBUTES int ec_ioctl_sc_clear_pdos(
up(&master->master_sem); /** \todo sc could be invalidated */
ecrt_slave_config_pdo_assign_clear(sc, data.sync_index);
return 0;
return ecrt_slave_config_pdo_assign_clear(sc, data.sync_index);
}
/****************************************************************************/
@ -2536,8 +2535,7 @@ static ATTRIBUTES int ec_ioctl_sc_clear_entries(
up(&master->master_sem); /** \todo sc could be invalidated */
ecrt_slave_config_pdo_mapping_clear(sc, data.index);
return 0;
return ecrt_slave_config_pdo_mapping_clear(sc, data.index);
}
/****************************************************************************/
@ -2651,6 +2649,7 @@ static ATTRIBUTES int ec_ioctl_sc_dc(
{
ec_ioctl_config_t data;
ec_slave_config_t *sc;
int ret;
if (unlikely(!ctx->requested))
return -EPERM;
@ -2666,7 +2665,7 @@ static ATTRIBUTES int ec_ioctl_sc_dc(
return -ENOENT;
}
ecrt_slave_config_dc(sc, data.dc_assign_activate,
ret = ecrt_slave_config_dc(sc, data.dc_assign_activate,
data.dc_sync[0].cycle_time,
data.dc_sync[0].shift_time,
data.dc_sync[1].cycle_time,
@ -2674,7 +2673,7 @@ static ATTRIBUTES int ec_ioctl_sc_dc(
up(&master->master_sem);
return 0;
return ret;
}
/****************************************************************************/
@ -3119,6 +3118,7 @@ static ATTRIBUTES int ec_ioctl_sc_state(
ec_ioctl_sc_state_t data;
const ec_slave_config_t *sc;
ec_slave_config_state_t state;
int ret;
if (unlikely(!ctx->requested))
return -EPERM;
@ -3134,7 +3134,9 @@ static ATTRIBUTES int ec_ioctl_sc_state(
return -ENOENT;
}
ecrt_slave_config_state(sc, &state);
ret = ecrt_slave_config_state(sc, &state);
if (ret)
return ret;
if (ec_copy_to_user((void __user *) data.state,
&state, sizeof(state), ctx))

View File

@ -647,7 +647,7 @@ int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index,
/****************************************************************************/
void ecrt_slave_config_watchdog(ec_slave_config_t *sc,
int ecrt_slave_config_watchdog(ec_slave_config_t *sc,
uint16_t divider, uint16_t intervals)
{
EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, divider = %u, intervals = %u)\n",
@ -655,6 +655,7 @@ void ecrt_slave_config_watchdog(ec_slave_config_t *sc,
sc->watchdog_divider = divider;
sc->watchdog_intervals = intervals;
return 0;
}
/****************************************************************************/
@ -689,7 +690,7 @@ int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc,
/****************************************************************************/
void ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
int ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
uint8_t sync_index)
{
EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, sync_index = %u)\n",
@ -697,12 +698,13 @@ void ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc,
if (sync_index >= EC_MAX_SYNC_MANAGERS) {
EC_CONFIG_ERR(sc, "Invalid sync manager index %u!\n", sync_index);
return;
return -EINVAL;
}
down(&sc->master->master_sem);
ec_pdo_list_clear_pdos(&sc->sync_configs[sync_index].pdos);
up(&sc->master->master_sem);
return 0;
}
/****************************************************************************/
@ -744,7 +746,7 @@ int ecrt_slave_config_pdo_mapping_add(ec_slave_config_t *sc,
/****************************************************************************/
void ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
int ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
uint16_t pdo_index)
{
uint8_t sync_index;
@ -765,6 +767,7 @@ void ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc,
} else {
EC_CONFIG_WARN(sc, "PDO 0x%04X is not assigned.\n", pdo_index);
}
return 0;
}
/****************************************************************************/
@ -956,7 +959,7 @@ int ecrt_slave_config_reg_pdo_entry_pos(
/****************************************************************************/
void ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
int ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
uint32_t sync0_cycle_time, int32_t sync0_shift_time,
uint32_t sync1_cycle_time, int32_t sync1_shift_time)
{
@ -971,6 +974,7 @@ void ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate,
sc->dc_sync[0].shift_time = sync0_shift_time;
sc->dc_sync[1].cycle_time = sync1_cycle_time;
sc->dc_sync[1].shift_time = sync1_shift_time;
return 0;
}
/****************************************************************************/
@ -1317,7 +1321,7 @@ ec_voe_handler_t *ecrt_slave_config_create_voe_handler(
/****************************************************************************/
void ecrt_slave_config_state(const ec_slave_config_t *sc,
int ecrt_slave_config_state(const ec_slave_config_t *sc,
ec_slave_config_state_t *state)
{
const ec_slave_t *slave = sc->slave;
@ -1331,6 +1335,7 @@ void ecrt_slave_config_state(const ec_slave_config_t *sc,
state->operational = 0;
state->al_state = EC_SLAVE_STATE_UNKNOWN;
}
return 0;
}
/****************************************************************************/