Skip to content
Snippets Groups Projects
Commit bb51df10 authored by Florian Pose's avatar Florian Pose
Browse files

Renamed ec_fsm_mapping_t to ec_fsm_pdo_mapping_t.

parent 5d786d13
No related branches found
No related tags found
No related merge requests found
......@@ -35,8 +35,8 @@ obj-m := ec_master.o
ec_master-objs := module.o master.o device.o pdo.o sync.o fmmu_config.o \
slave.o slave_config.o pdo_mapping.o datagram.o domain.o mailbox.o \
canopen.o fsm_sii.o fsm_change.o fsm_coe.o fsm_coe_map.o fsm_mapping.o \
fsm_pdo_config.o fsm_slave.o fsm_master.o xmldev.o
canopen.o fsm_sii.o fsm_change.o fsm_coe.o fsm_coe_map.o \
fsm_pdo_mapping.o fsm_pdo_config.o fsm_slave.o fsm_master.o xmldev.o
ifeq (@ENABLE_EOE@,1)
ec_master-objs += ethernet.o
......
......@@ -47,7 +47,7 @@ EXTRA_DIST = \
fsm_change.c fsm_change.h \
fsm_coe.c fsm_coe.h \
fsm_coe_map.c fsm_coe_map.h \
fsm_mapping.c fsm_mapping.h \
fsm_pdo_mapping.c fsm_pdo_mapping.h \
fsm_pdo_config.c fsm_pdo_config.h \
fsm_slave.c fsm_slave.h \
fsm_master.c fsm_master.h \
......
......@@ -42,25 +42,25 @@
#include "mailbox.h"
#include "slave_config.h"
#include "fsm_mapping.h"
#include "fsm_pdo_mapping.h"
/*****************************************************************************/
void ec_fsm_mapping_state_start(ec_fsm_mapping_t *);
void ec_fsm_mapping_state_zero_count(ec_fsm_mapping_t *);
void ec_fsm_mapping_state_add_pdo(ec_fsm_mapping_t *);
void ec_fsm_mapping_state_pdo_count(ec_fsm_mapping_t *);
void ec_fsm_mapping_state_end(ec_fsm_mapping_t *);
void ec_fsm_mapping_state_error(ec_fsm_mapping_t *);
void ec_fsm_pdo_mapping_state_start(ec_fsm_pdo_mapping_t *);
void ec_fsm_pdo_mapping_state_zero_count(ec_fsm_pdo_mapping_t *);
void ec_fsm_pdo_mapping_state_add_pdo(ec_fsm_pdo_mapping_t *);
void ec_fsm_pdo_mapping_state_pdo_count(ec_fsm_pdo_mapping_t *);
void ec_fsm_pdo_mapping_state_end(ec_fsm_pdo_mapping_t *);
void ec_fsm_pdo_mapping_state_error(ec_fsm_pdo_mapping_t *);
void ec_fsm_mapping_next_sync(ec_fsm_mapping_t *);
void ec_fsm_pdo_mapping_next_sync(ec_fsm_pdo_mapping_t *);
/*****************************************************************************/
/** Constructor.
*/
void ec_fsm_mapping_init(
ec_fsm_mapping_t *fsm, /**< mapping state machine */
void ec_fsm_pdo_mapping_init(
ec_fsm_pdo_mapping_t *fsm, /**< mapping state machine */
ec_fsm_coe_t *fsm_coe /**< CoE state machine to use */
)
{
......@@ -72,8 +72,8 @@ void ec_fsm_mapping_init(
/** Destructor.
*/
void ec_fsm_mapping_clear(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_clear(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
}
......@@ -82,13 +82,13 @@ void ec_fsm_mapping_clear(
/** Start PDO mapping configuration state machine.
*/
void ec_fsm_mapping_start(
ec_fsm_mapping_t *fsm, /**< mapping state machine */
void ec_fsm_pdo_mapping_start(
ec_fsm_pdo_mapping_t *fsm, /**< mapping state machine */
ec_slave_t *slave /**< slave to configure */
)
{
fsm->slave = slave;
fsm->state = ec_fsm_mapping_state_start;
fsm->state = ec_fsm_pdo_mapping_state_start;
}
/*****************************************************************************/
......@@ -97,12 +97,12 @@ void ec_fsm_mapping_start(
*
* \return false, if state machine has terminated
*/
int ec_fsm_mapping_running(
const ec_fsm_mapping_t *fsm /**< mapping state machine */
int ec_fsm_pdo_mapping_running(
const ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
return fsm->state != ec_fsm_mapping_state_end
&& fsm->state != ec_fsm_mapping_state_error;
return fsm->state != ec_fsm_pdo_mapping_state_end
&& fsm->state != ec_fsm_pdo_mapping_state_error;
}
/*****************************************************************************/
......@@ -114,12 +114,12 @@ int ec_fsm_mapping_running(
*
* \return false, if state machine has terminated
*/
int ec_fsm_mapping_exec(
ec_fsm_mapping_t *fsm /**< mapping state machine */
int ec_fsm_pdo_mapping_exec(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
fsm->state(fsm);
return ec_fsm_mapping_running(fsm);
return ec_fsm_pdo_mapping_running(fsm);
}
/*****************************************************************************/
......@@ -128,11 +128,11 @@ int ec_fsm_mapping_exec(
*
* \return true, if the state machine terminated gracefully
*/
int ec_fsm_mapping_success(
const ec_fsm_mapping_t *fsm /**< mapping state machine */
int ec_fsm_pdo_mapping_success(
const ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
return fsm->state == ec_fsm_mapping_state_end;
return fsm->state == ec_fsm_pdo_mapping_state_end;
}
/******************************************************************************
......@@ -141,25 +141,25 @@ int ec_fsm_mapping_success(
/** Start mapping configuration.
*/
void ec_fsm_mapping_state_start(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_start(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
if (!fsm->slave->config) {
fsm->state = ec_fsm_mapping_state_end;
fsm->state = ec_fsm_pdo_mapping_state_end;
return;
}
fsm->sync = NULL;
ec_fsm_mapping_next_sync(fsm);
ec_fsm_pdo_mapping_next_sync(fsm);
}
/*****************************************************************************/
/** Process mapping of next sync manager.
*/
void ec_fsm_mapping_next_sync(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_next_sync(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
ec_direction_t dir;
......@@ -190,7 +190,7 @@ void ec_fsm_mapping_next_sync(
if (fsm->slave->master->debug_level)
EC_DBG("Pdo mapping finished for slave %u.\n",
fsm->slave->ring_position);
fsm->state = ec_fsm_mapping_state_end;
fsm->state = ec_fsm_pdo_mapping_state_end;
return;
}
......@@ -207,7 +207,7 @@ void ec_fsm_mapping_next_sync(
if (fsm->slave->master->debug_level)
EC_DBG("Setting PDO count to zero for SM%u.\n", fsm->sync->index);
fsm->state = ec_fsm_mapping_state_zero_count;
fsm->state = ec_fsm_pdo_mapping_state_zero_count;
ec_fsm_coe_download(fsm->fsm_coe, fsm->slave, &fsm->sdodata);
ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
}
......@@ -216,8 +216,8 @@ void ec_fsm_mapping_next_sync(
/** Process mapping of next PDO.
*/
ec_pdo_t *ec_fsm_mapping_next_pdo(
const ec_fsm_mapping_t *fsm, /**< mapping state machine */
ec_pdo_t *ec_fsm_pdo_mapping_next_pdo(
const ec_fsm_pdo_mapping_t *fsm, /**< mapping state machine */
const struct list_head *list /**< current PDO list item */
)
{
......@@ -231,8 +231,8 @@ ec_pdo_t *ec_fsm_mapping_next_pdo(
/** Add a Pdo to the mapping.
*/
void ec_fsm_mapping_add_pdo(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_add_pdo(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
fsm->sdodata.subindex = fsm->pdo_count;
......@@ -243,7 +243,7 @@ void ec_fsm_mapping_add_pdo(
EC_DBG("Mapping PDO 0x%04X at position %u.\n",
fsm->pdo->index, fsm->sdodata.subindex);
fsm->state = ec_fsm_mapping_state_add_pdo;
fsm->state = ec_fsm_pdo_mapping_state_add_pdo;
ec_fsm_coe_download(fsm->fsm_coe, fsm->slave, &fsm->sdodata);
ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
}
......@@ -252,8 +252,8 @@ void ec_fsm_mapping_add_pdo(
/** Set the number of mapped PDOs to zero.
*/
void ec_fsm_mapping_state_zero_count(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_zero_count(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
if (ec_fsm_coe_exec(fsm->fsm_coe)) return;
......@@ -261,32 +261,32 @@ void ec_fsm_mapping_state_zero_count(
if (!ec_fsm_coe_success(fsm->fsm_coe)) {
EC_ERR("Failed to clear PDO mapping for slave %u.\n",
fsm->slave->ring_position);
fsm->state = ec_fsm_mapping_state_error;
fsm->state = ec_fsm_pdo_mapping_state_error;
return;
}
// map all PDOs belonging to the current sync manager
// find first PDO
if (!(fsm->pdo = ec_fsm_mapping_next_pdo(fsm, &fsm->mapping->pdos))) {
if (!(fsm->pdo = ec_fsm_pdo_mapping_next_pdo(fsm, &fsm->mapping->pdos))) {
if (fsm->slave->master->debug_level)
EC_DBG("No PDOs to map for SM%u of slave %u.\n",
fsm->sync->index, fsm->slave->ring_position);
ec_fsm_mapping_next_sync(fsm);
ec_fsm_pdo_mapping_next_sync(fsm);
return;
}
// add first PDO to mapping
fsm->pdo_count = 1;
ec_fsm_mapping_add_pdo(fsm);
ec_fsm_pdo_mapping_add_pdo(fsm);
}
/*****************************************************************************/
/** Add a PDO to the sync managers mapping.
*/
void ec_fsm_mapping_state_add_pdo(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_add_pdo(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
if (ec_fsm_coe_exec(fsm->fsm_coe)) return;
......@@ -294,12 +294,12 @@ void ec_fsm_mapping_state_add_pdo(
if (!ec_fsm_coe_success(fsm->fsm_coe)) {
EC_ERR("Failed to map PDO 0x%04X for SM%u of slave %u.\n",
fsm->pdo->index, fsm->sync->index, fsm->slave->ring_position);
fsm->state = ec_fsm_mapping_state_error;
fsm->state = ec_fsm_pdo_mapping_state_error;
return;
}
// find next PDO
if (!(fsm->pdo = ec_fsm_mapping_next_pdo(fsm, &fsm->pdo->list))) {
if (!(fsm->pdo = ec_fsm_pdo_mapping_next_pdo(fsm, &fsm->pdo->list))) {
// no more PDOs to map. write PDO count
fsm->sdodata.subindex = 0;
EC_WRITE_U8(&fsm->sdo_value, fsm->pdo_count);
......@@ -309,7 +309,7 @@ void ec_fsm_mapping_state_add_pdo(
EC_DBG("Setting number of mapped PDOs to %u.\n",
fsm->pdo_count);
fsm->state = ec_fsm_mapping_state_pdo_count;
fsm->state = ec_fsm_pdo_mapping_state_pdo_count;
ec_fsm_coe_download(fsm->fsm_coe, fsm->slave, &fsm->sdodata);
ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
return;
......@@ -317,15 +317,15 @@ void ec_fsm_mapping_state_add_pdo(
// add next PDO to mapping
fsm->pdo_count++;
ec_fsm_mapping_add_pdo(fsm);
ec_fsm_pdo_mapping_add_pdo(fsm);
}
/*****************************************************************************/
/** Set the number of mapped PDOs.
*/
void ec_fsm_mapping_state_pdo_count(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_pdo_count(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
if (ec_fsm_coe_exec(fsm->fsm_coe)) return;
......@@ -333,7 +333,7 @@ void ec_fsm_mapping_state_pdo_count(
if (!ec_fsm_coe_success(fsm->fsm_coe)) {
EC_ERR("Failed to set number of mapped PDOs for slave %u.\n",
fsm->slave->ring_position);
fsm->state = ec_fsm_mapping_state_error;
fsm->state = ec_fsm_pdo_mapping_state_error;
return;
}
......@@ -342,7 +342,7 @@ void ec_fsm_mapping_state_pdo_count(
fsm->sync->index, fsm->slave->ring_position);
// mapping configuration for this sync manager complete.
ec_fsm_mapping_next_sync(fsm);
ec_fsm_pdo_mapping_next_sync(fsm);
}
/******************************************************************************
......@@ -351,8 +351,8 @@ void ec_fsm_mapping_state_pdo_count(
/** State: ERROR.
*/
void ec_fsm_mapping_state_error(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_error(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
}
......@@ -361,8 +361,8 @@ void ec_fsm_mapping_state_error(
/** State: END.
*/
void ec_fsm_mapping_state_end(
ec_fsm_mapping_t *fsm /**< mapping state machine */
void ec_fsm_pdo_mapping_state_end(
ec_fsm_pdo_mapping_t *fsm /**< mapping state machine */
)
{
}
......
......@@ -38,23 +38,27 @@
/*****************************************************************************/
#ifndef __EC_FSM_MAPPING__
#define __EC_FSM_MAPPING__
#ifndef __EC_FSM_PDO_MAPPING__
#define __EC_FSM_PDO_MAPPING__
#include "globals.h"
#include "../include/ecrt.h"
#include "globals.h"
#include "datagram.h"
#include "fsm_coe.h"
/*****************************************************************************/
typedef struct ec_fsm_mapping ec_fsm_mapping_t; /**< \see ec_fsm_mapping */
/**
* \see ec_fsm_pdo_mapping
*/
typedef struct ec_fsm_pdo_mapping ec_fsm_pdo_mapping_t;
/** Pdo mapping state machine.
*/
struct ec_fsm_mapping
struct ec_fsm_pdo_mapping
{
void (*state)(ec_fsm_mapping_t *); /**< State function. */
void (*state)(ec_fsm_pdo_mapping_t *); /**< State function. */
ec_fsm_coe_t *fsm_coe; /**< CoE state machine to use. */
ec_slave_t *slave; /**< Slave the FSM runs on. */
......@@ -69,12 +73,12 @@ struct ec_fsm_mapping
/*****************************************************************************/
void ec_fsm_mapping_init(ec_fsm_mapping_t *, ec_fsm_coe_t *);
void ec_fsm_mapping_clear(ec_fsm_mapping_t *);
void ec_fsm_pdo_mapping_init(ec_fsm_pdo_mapping_t *, ec_fsm_coe_t *);
void ec_fsm_pdo_mapping_clear(ec_fsm_pdo_mapping_t *);
void ec_fsm_mapping_start(ec_fsm_mapping_t *, ec_slave_t *);
int ec_fsm_mapping_exec(ec_fsm_mapping_t *);
int ec_fsm_mapping_success(const ec_fsm_mapping_t *);
void ec_fsm_pdo_mapping_start(ec_fsm_pdo_mapping_t *, ec_slave_t *);
int ec_fsm_pdo_mapping_exec(ec_fsm_pdo_mapping_t *);
int ec_fsm_pdo_mapping_success(const ec_fsm_pdo_mapping_t *);
/*****************************************************************************/
......
......@@ -92,8 +92,8 @@ void ec_fsm_slave_init(ec_fsm_slave_t *fsm, /**< slave state machine */
ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram);
ec_fsm_change_init(&fsm->fsm_change, fsm->datagram);
ec_fsm_coe_init(&fsm->fsm_coe, fsm->datagram);
ec_fsm_mapping_init(&fsm->fsm_map, &fsm->fsm_coe);
ec_fsm_pdo_config_init(&fsm->fsm_pdo, &fsm->fsm_coe);
ec_fsm_pdo_mapping_init(&fsm->fsm_pdo_map, &fsm->fsm_coe);
ec_fsm_pdo_config_init(&fsm->fsm_pdo_conf, &fsm->fsm_coe);
}
/*****************************************************************************/
......@@ -106,8 +106,8 @@ void ec_fsm_slave_clear(ec_fsm_slave_t *fsm /**< slave state machine */)
ec_fsm_sii_clear(&fsm->fsm_sii);
ec_fsm_change_clear(&fsm->fsm_change);
ec_fsm_coe_clear(&fsm->fsm_coe);
ec_fsm_mapping_clear(&fsm->fsm_map);
ec_fsm_pdo_config_clear(&fsm->fsm_pdo);
ec_fsm_pdo_mapping_clear(&fsm->fsm_pdo_map);
ec_fsm_pdo_config_clear(&fsm->fsm_pdo_conf);
}
/*****************************************************************************/
......@@ -941,8 +941,8 @@ void ec_fsm_slave_conf_enter_mapping(
{
// start configuring PDO mapping
fsm->state = ec_fsm_slave_conf_state_mapping;
ec_fsm_mapping_start(&fsm->fsm_map, fsm->slave);
ec_fsm_mapping_exec(&fsm->fsm_map); // execute immediately
ec_fsm_pdo_mapping_start(&fsm->fsm_pdo_map, fsm->slave);
ec_fsm_pdo_mapping_exec(&fsm->fsm_pdo_map); // execute immediately
}
/*****************************************************************************/
......@@ -955,9 +955,9 @@ void ec_fsm_slave_conf_state_mapping(
ec_fsm_slave_t *fsm /**< slave state machine */
)
{
if (ec_fsm_mapping_exec(&fsm->fsm_map)) return;
if (ec_fsm_pdo_mapping_exec(&fsm->fsm_pdo_map)) return;
if (!ec_fsm_mapping_success(&fsm->fsm_map)) {
if (!ec_fsm_pdo_mapping_success(&fsm->fsm_pdo_map)) {
EC_ERR("PDO mapping configuration failed for slave %u.\n",
fsm->slave->ring_position);
fsm->slave->error_flag = 1;
......@@ -967,8 +967,8 @@ void ec_fsm_slave_conf_state_mapping(
// Start Pdo configuration
fsm->state = ec_fsm_slave_conf_state_pdo_conf;
ec_fsm_pdo_config_start(&fsm->fsm_pdo, fsm->slave);
ec_fsm_pdo_config_exec(&fsm->fsm_pdo); // execute immediately
ec_fsm_pdo_config_start(&fsm->fsm_pdo_conf, fsm->slave);
ec_fsm_pdo_config_exec(&fsm->fsm_pdo_conf); // execute immediately
}
/*****************************************************************************/
......@@ -981,9 +981,9 @@ void ec_fsm_slave_conf_state_pdo_conf(
ec_fsm_slave_t *fsm /**< slave state machine */
)
{
if (ec_fsm_pdo_config_exec(&fsm->fsm_pdo)) return;
if (ec_fsm_pdo_config_exec(&fsm->fsm_pdo_conf)) return;
if (!ec_fsm_pdo_config_success(&fsm->fsm_pdo)) {
if (!ec_fsm_pdo_config_success(&fsm->fsm_pdo_conf)) {
EC_ERR("Pdo configuration failed for slave %u.\n",
fsm->slave->ring_position);
fsm->slave->error_flag = 1;
......
......@@ -48,7 +48,7 @@
#include "fsm_sii.h"
#include "fsm_change.h"
#include "fsm_coe.h"
#include "fsm_mapping.h"
#include "fsm_pdo_mapping.h"
#include "fsm_pdo_config.h"
/*****************************************************************************/
......@@ -70,8 +70,8 @@ struct ec_fsm_slave
ec_fsm_sii_t fsm_sii; /**< SII state machine. */
ec_fsm_change_t fsm_change; /**< State change state machine. */
ec_fsm_coe_t fsm_coe; /**< CoE state machine. */
ec_fsm_mapping_t fsm_map; /**< PDO mapping state machine. */
ec_fsm_pdo_config_t fsm_pdo; /**< PDO configuration state machine. */
ec_fsm_pdo_mapping_t fsm_pdo_map; /**< Pdo mapping state machine. */
ec_fsm_pdo_config_t fsm_pdo_conf; /**< Pdo configuration state machine. */
};
/*****************************************************************************/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment