#include "objacces.h"
#include "sdo.h"
#include "canfestival.h"
Include dependency graph for sdo.c:
Go to the source code of this file.
Defines | |
#define | NO_INLINE |
#define | INLINE |
#define | getSDOcs(byte) (byte >> 5) |
#define | getSDOn2(byte) ((byte >> 2) & 3) |
#define | getSDOn3(byte) ((byte >> 1) & 7) |
#define | getSDOe(byte) ((byte >> 1) & 1) |
#define | getSDOs(byte) (byte & 1) |
#define | getSDOc(byte) (byte & 1) |
#define | getSDOt(byte) ((byte >> 4) & 1) |
#define | getSDOindex(byte1, byte2) ((byte2 << 8) | (byte1)) |
#define | getSDOsubIndex(byte3) (byte3) |
#define | StopSDO_TIMER(id) |
#define | StartSDO_TIMER(id) |
#define | RestartSDO_TIMER(id) |
Functions | |
INLINE UNS8 | _writeNetworkDict (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback, UNS8 endianize) |
INLINE UNS8 | _readNetworkDict (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 dataType, SDOCallback_t Callback) |
void | SDOTimeoutAlarm (CO_Data *d, UNS32 id) |
void | resetSDO (CO_Data *d) |
UNS32 | SDOlineToObjdict (CO_Data *d, UNS8 line) |
UNS32 | objdictToSDOline (CO_Data *d, UNS8 line) |
UNS8 | lineToSDO (CO_Data *d, UNS8 line, UNS8 nbBytes, UNS8 *data) |
UNS8 | SDOtoLine (CO_Data *d, UNS8 line, UNS8 nbBytes, UNS8 *data) |
UNS8 | failedSDO (CO_Data *d, UNS8 nodeId, UNS8 whoami, UNS16 index, UNS8 subIndex, UNS32 abortCode) |
void | resetSDOline (CO_Data *d, UNS8 line) |
UNS8 | initSDOline (CO_Data *d, UNS8 line, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 state) |
UNS8 | getSDOfreeLine (CO_Data *d, UNS8 whoami, UNS8 *line) |
UNS8 | getSDOlineOnUse (CO_Data *d, UNS8 nodeId, UNS8 whoami, UNS8 *line) |
UNS8 | closeSDOtransfer (CO_Data *d, UNS8 nodeId, UNS8 whoami) |
UNS8 | getSDOlineRestBytes (CO_Data *d, UNS8 line, UNS8 *nbBytes) |
UNS8 | setSDOlineRestBytes (CO_Data *d, UNS8 line, UNS8 nbBytes) |
UNS8 | sendSDO (CO_Data *d, UNS8 whoami, s_SDO sdo) |
UNS8 | sendSDOabort (CO_Data *d, UNS8 whoami, UNS16 index, UNS8 subIndex, UNS32 abortCode) |
UNS8 | proceedSDO (CO_Data *d, Message *m) |
UNS8 | writeNetworkDict (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 count, UNS8 dataType, void *data) |
UNS8 | writeNetworkDictCallBack (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 count, UNS8 dataType, void *data, SDOCallback_t Callback) |
UNS8 | readNetworkDict (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 dataType) |
UNS8 | readNetworkDictCallback (CO_Data *d, UNS8 nodeId, UNS16 index, UNS8 subIndex, UNS8 dataType, SDOCallback_t Callback) |
UNS8 | getReadResultNetworkDict (CO_Data *d, UNS8 nodeId, void *data, UNS8 *size, UNS32 *abortCode) |
UNS8 | getWriteResultNetworkDict (CO_Data *d, UNS8 nodeId, UNS32 *abortCode) |
Definition in file sdo.c.
#define getSDOc | ( | byte | ) | (byte & 1) |
Returns the indicator of end transmission from the first byte of the SDO
Definition at line 109 of file sdo.c.
Referenced by proceedSDO().
#define getSDOcs | ( | byte | ) | (byte >> 5) |
Returns the command specifier (cs, ccs, scs) from the first byte of the SDO
Definition at line 89 of file sdo.c.
Referenced by proceedSDO().
#define getSDOe | ( | byte | ) | ((byte >> 1) & 1) |
Returns the transfer type from the first byte of the SDO
Definition at line 101 of file sdo.c.
Referenced by proceedSDO().
#define getSDOindex | ( | byte1, | |||
byte2 | ) | ((byte2 << 8) | (byte1)) |
Returns the index from the bytes 1 and 2 of the SDO
Definition at line 117 of file sdo.c.
Referenced by proceedSDO().
#define getSDOn2 | ( | byte | ) | ((byte >> 2) & 3) |
Returns the number of bytes without data from the first byte of the SDO. Coded in 2 bits
Definition at line 93 of file sdo.c.
Referenced by proceedSDO().
#define getSDOn3 | ( | byte | ) | ((byte >> 1) & 7) |
Returns the number of bytes without data from the first byte of the SDO. Coded in 3 bits
Definition at line 97 of file sdo.c.
Referenced by proceedSDO().
#define getSDOs | ( | byte | ) | (byte & 1) |
Returns the size indicator from the first byte of the SDO
Definition at line 105 of file sdo.c.
Referenced by proceedSDO().
#define getSDOsubIndex | ( | byte3 | ) | (byte3) |
Returns the subIndex from the byte 3 of the SDO
Definition at line 121 of file sdo.c.
Referenced by proceedSDO().
#define getSDOt | ( | byte | ) | ((byte >> 4) & 1) |
Returns the toggle from the first byte of the SDO
Definition at line 113 of file sdo.c.
Referenced by proceedSDO().
#define RestartSDO_TIMER | ( | id | ) |
Value:
MSG_WAR(0x3A07, "restartSDO_TIMER for line : ", line);\ if(d->transfers[id].timer != TIMER_NONE) { StopSDO_TIMER(id) StartSDO_TIMER(id) }
Definition at line 160 of file sdo.c.
Referenced by proceedSDO().
#define StartSDO_TIMER | ( | id | ) |
Value:
MSG_WAR(0x3A06, "StartSDO_TIMER for line : ", line);\ d->transfers[id].timer = SetAlarm(d,id,&SDOTimeoutAlarm,MS_TO_TIMEVAL(SDO_TIMEOUT_MS),0);
Definition at line 156 of file sdo.c.
Referenced by initSDOline().
#define StopSDO_TIMER | ( | id | ) |
Value:
MSG_WAR(0x3A05, "StopSDO_TIMER for line : ", line);\ d->transfers[id].timer = DelAlarm(d->transfers[id].timer);
Definition at line 152 of file sdo.c.
Referenced by failedSDO(), initSDOline(), and proceedSDO().
INLINE UNS8 _readNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | dataType, | |||
SDOCallback_t | Callback | |||
) |
d | ||
nodeId | ||
index | ||
subIndex | ||
dataType | ||
Callback |
Definition at line 1406 of file sdo.c.
References struct_s_SDO::body, td_indextable::bSubCount, struct_s_transfer::Callback, struct_s_timer_entry::d, BODY::data, struct_s_transfer::dataType, struct_CO_Data::firstIndex, getSDOfreeLine(), getSDOlineOnUse(), initSDOline(), struct_CO_Data::lastIndex, MSG_ERR, MSG_WAR, struct_s_SDO::nodeId, struct_CO_Data::objdict, td_subindex::pObject, td_indextable::pSubindex, resetSDOline(), SDO_CLIENT, s_quick_index::SDO_CLT, SDO_UPLOAD_IN_PROGRESS, sendSDO(), struct_CO_Data::transfers, UNS16, UNS32, and UNS8.
Referenced by readNetworkDict(), and readNetworkDictCallback().
Here is the call graph for this function:
INLINE UNS8 _writeNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | count, | |||
UNS8 | dataType, | |||
void * | data, | |||
SDOCallback_t | Callback, | |||
UNS8 | endianize | |||
) |
Called by writeNetworkDict
d | ||
nodeId | ||
index | ||
subIndex | ||
count | ||
dataType | ||
data | ||
Callback | ||
endianize |
UNS8 closeSDOtransfer | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS8 | whoami | |||
) |
d | ||
nodeId | ||
whoami |
Definition at line 439 of file sdo.c.
References struct_s_timer_entry::d, getSDOlineOnUse(), MSG_WAR, resetSDOline(), and UNS8.
Referenced by ReadSDO(), and TestMaster_post_TPDO().
Here is the call graph for this function:
UNS8 failedSDO | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS8 | whoami, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS32 | abortCode | |||
) |
d | ||
nodeId | ||
whoami | ||
index | ||
subIndex | ||
abortCode |
Definition at line 307 of file sdo.c.
References struct_s_timer_entry::d, getSDOlineOnUse(), MSG_WAR, resetSDOline(), SDO_ABORTED_INTERNAL, SDO_CLIENT, SDO_SERVER, sendSDOabort(), struct_s_transfer::state, StopSDO_TIMER, struct_CO_Data::transfers, and UNS8.
Referenced by proceedSDO().
Here is the call graph for this function:
UNS8 getReadResultNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
void * | data, | |||
UNS8 * | size, | |||
UNS32 * | abortCode | |||
) |
d | ||
nodeId | ||
data | ||
size | ||
abortCode |
Definition at line 1532 of file sdo.c.
References CANOPEN_BIG_ENDIAN, struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::data, struct_s_transfer::dataType, getSDOlineOnUse(), MSG_ERR, SDO_ABORTED_INTERNAL, SDO_CLIENT, SDO_FINISHED, struct_s_transfer::state, struct_CO_Data::transfers, UNS8, and visible_string.
Referenced by ReadSDO(), and TestMaster_post_TPDO().
Here is the call graph for this function:
UNS8 getSDOfreeLine | ( | CO_Data * | d, | |
UNS8 | whoami, | |||
UNS8 * | line | |||
) |
d | ||
whoami | ||
line |
Definition at line 388 of file sdo.c.
References struct_s_timer_entry::d, SDO_MAX_SIMULTANEOUS_TRANSFERTS, SDO_RESET, struct_s_transfer::state, struct_CO_Data::transfers, UNS8, and struct_s_transfer::whoami.
Referenced by _readNetworkDict(), _writeNetworkDict(), and proceedSDO().
UNS8 getSDOlineOnUse | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS8 | whoami, | |||
UNS8 * | line | |||
) |
d | ||
nodeId | ||
whoami | ||
line |
Definition at line 414 of file sdo.c.
References struct_s_timer_entry::d, struct_s_transfer::nodeId, SDO_MAX_SIMULTANEOUS_TRANSFERTS, SDO_RESET, struct_s_transfer::state, struct_CO_Data::transfers, UNS8, and struct_s_transfer::whoami.
Referenced by _readNetworkDict(), _writeNetworkDict(), closeSDOtransfer(), failedSDO(), getReadResultNetworkDict(), getWriteResultNetworkDict(), and proceedSDO().
UNS8 getSDOlineRestBytes | ( | CO_Data * | d, | |
UNS8 | line, | |||
UNS8 * | nbBytes | |||
) |
d | ||
line | ||
nbBytes |
Definition at line 461 of file sdo.c.
References struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::offset, struct_CO_Data::transfers, and UNS8.
Referenced by proceedSDO().
UNS8 getWriteResultNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS32 * | abortCode | |||
) |
d | ||
nodeId | ||
abortCode |
Definition at line 1573 of file sdo.c.
References struct_s_transfer::abortCode, struct_s_timer_entry::d, getSDOlineOnUse(), MSG_ERR, SDO_ABORTED_INTERNAL, SDO_CLIENT, struct_s_transfer::state, struct_CO_Data::transfers, and UNS8.
Here is the call graph for this function:
UNS8 initSDOline | ( | CO_Data * | d, | |
UNS8 | line, | |||
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | state | |||
) |
d | ||
line | ||
nodeId | ||
index | ||
subIndex | ||
state |
Definition at line 359 of file sdo.c.
References struct_s_transfer::Callback, struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::dataType, struct_s_transfer::index, MSG_WAR, struct_s_transfer::nodeId, struct_s_transfer::offset, SDO_DOWNLOAD_IN_PROGRESS, SDO_UPLOAD_IN_PROGRESS, StartSDO_TIMER, struct_s_transfer::state, StopSDO_TIMER, struct_s_transfer::subIndex, struct_s_transfer::toggle, and struct_CO_Data::transfers.
Referenced by _readNetworkDict(), _writeNetworkDict(), proceedSDO(), and resetSDOline().
UNS8 lineToSDO | ( | CO_Data * | d, | |
UNS8 | line, | |||
UNS8 | nbBytes, | |||
UNS8 * | data | |||
) |
d | ||
line | ||
nbBytes | ||
data |
Definition at line 250 of file sdo.c.
References struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::data, MSG_ERR, struct_s_transfer::offset, SDO_MAX_LENGTH_TRANSFERT, struct_CO_Data::transfers, and UNS8.
Referenced by proceedSDO().
UNS32 objdictToSDOline | ( | CO_Data * | d, | |
UNS8 | line | |||
) |
d | ||
line |
Definition at line 209 of file sdo.c.
References struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::data, getODentry(), struct_s_transfer::index, MSG_WAR, OD_SUCCESSFUL, struct_s_transfer::offset, struct_s_transfer::subIndex, struct_CO_Data::transfers, UNS32, and UNS8.
Referenced by proceedSDO().
Here is the call graph for this function:
d | ||
m |
The server node Id;
The server node Id;
Definition at line 608 of file sdo.c.
References struct_s_transfer::abortCode, struct_CO_Data::bDeviceNodeId, struct_s_SDO::body, td_indextable::bSubCount, struct_s_transfer::Callback, struct_s_transfer::count, struct_s_timer_entry::d, Message::data, BODY::data, failedSDO(), struct_CO_Data::firstIndex, getSDOc, getSDOcs, getSDOe, getSDOfreeLine(), getSDOindex, getSDOlineOnUse(), getSDOlineRestBytes(), getSDOn2, getSDOn3, getSDOs, getSDOsubIndex, getSDOt, struct_s_transfer::index, initSDOline(), struct_CO_Data::lastIndex, lineToSDO(), MSG_ERR, MSG_WAR, struct_s_SDO::nodeId, struct_CO_Data::objdict, objdictToSDOline(), td_subindex::pObject, td_indextable::pSubindex, resetSDOline(), RestartSDO_TIMER, SDO_ABORTED_RCV, SDO_CLIENT, s_quick_index::SDO_CLT, SDO_DOWNLOAD_IN_PROGRESS, SDO_FINISHED, SDO_SERVER, s_quick_index::SDO_SVR, SDO_UNKNOWN, SDO_UPLOAD_IN_PROGRESS, SDOABT_GENERAL_ERROR, SDOABT_LOCAL_CTRL_ERROR, SDOABT_TOGGLE_NOT_ALTERNED, SDOlineToObjdict(), SDOtoLine(), sendSDO(), setSDOlineRestBytes(), struct_s_transfer::state, StopSDO_TIMER, struct_s_transfer::subIndex, struct_s_transfer::toggle, struct_CO_Data::transfers, UNS16, UNS32, and UNS8.
Referenced by canDispatch().
Here is the call graph for this function:
UNS8 readNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | dataType | |||
) |
d | ||
nodeId | ||
index | ||
subIndex | ||
dataType |
Definition at line 1499 of file sdo.c.
References _readNetworkDict(), and struct_s_timer_entry::d.
Referenced by ReadSDO(), and TestMaster_post_TPDO().
Here is the call graph for this function:
UNS8 readNetworkDictCallback | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | dataType, | |||
SDOCallback_t | Callback | |||
) |
d | ||
nodeId | ||
index | ||
subIndex | ||
dataType | ||
Callback |
Definition at line 1516 of file sdo.c.
References _readNetworkDict(), and struct_s_timer_entry::d.
Here is the call graph for this function:
void resetSDO | ( | CO_Data * | d | ) |
Reset all sdo buffers
d |
Definition at line 169 of file sdo.c.
References struct_s_timer_entry::d, resetSDOline(), SDO_MAX_SIMULTANEOUS_TRANSFERTS, and UNS8.
Referenced by switchCommunicationState().
Here is the call graph for this function:
void resetSDOline | ( | CO_Data * | d, | |
UNS8 | line | |||
) |
d | ||
line |
Definition at line 338 of file sdo.c.
References struct_s_timer_entry::d, struct_s_transfer::data, initSDOline(), MSG_WAR, SDO_MAX_LENGTH_TRANSFERT, SDO_RESET, struct_CO_Data::transfers, and UNS8.
Referenced by _readNetworkDict(), _writeNetworkDict(), closeSDOtransfer(), failedSDO(), proceedSDO(), resetSDO(), and SDOTimeoutAlarm().
Here is the call graph for this function:
UNS32 SDOlineToObjdict | ( | CO_Data * | d, | |
UNS8 | line | |||
) |
d | ||
line |
Definition at line 186 of file sdo.c.
References struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::data, struct_s_transfer::index, MSG_WAR, OD_SUCCESSFUL, setODentry(), struct_s_transfer::subIndex, struct_CO_Data::transfers, UNS32, and UNS8.
Referenced by proceedSDO().
Here is the call graph for this function:
void SDOTimeoutAlarm | ( | CO_Data * | d, | |
UNS32 | id | |||
) |
d | ||
id |
Definition at line 129 of file sdo.c.
References struct_s_transfer::abortCode, struct_s_transfer::Callback, struct_s_timer_entry::d, struct_s_transfer::index, MSG_ERR, MSG_WAR, struct_s_transfer::nodeId, resetSDOline(), SDO_ABORTED_INTERNAL, SDO_SERVER, SDOABT_TIMED_OUT, sendSDOabort(), struct_s_transfer::state, struct_s_transfer::subIndex, struct_s_transfer::timer, struct_CO_Data::transfers, UNS8, and struct_s_transfer::whoami.
Here is the call graph for this function:
UNS8 SDOtoLine | ( | CO_Data * | d, | |
UNS8 | line, | |||
UNS8 | nbBytes, | |||
UNS8 * | data | |||
) |
d | ||
line | ||
nbBytes | ||
data |
Definition at line 279 of file sdo.c.
References struct_s_timer_entry::d, struct_s_transfer::data, MSG_ERR, struct_s_transfer::offset, SDO_MAX_LENGTH_TRANSFERT, struct_CO_Data::transfers, and UNS8.
Referenced by proceedSDO().
d | ||
whoami | ||
sdo |
Definition at line 498 of file sdo.c.
References struct_s_SDO::body, td_indextable::bSubCount, struct_CO_Data::canHandle, canSend(), Message::cob_id, struct_s_timer_entry::d, Message::data, BODY::data, struct_CO_Data::firstIndex, struct_CO_Data::lastIndex, Message::len, MSG_ERR, MSG_WAR, struct_s_SDO::nodeId, struct_CO_Data::nodeState, NOT_A_REQUEST, struct_CO_Data::objdict, Operational, td_subindex::pObject, Pre_operational, td_indextable::pSubindex, Message::rtr, s_quick_index::SDO_CLT, SDO_SERVER, s_quick_index::SDO_SVR, UNS16, UNS32, UNS8, and SHORT_CAN::w.
Referenced by _readNetworkDict(), _writeNetworkDict(), proceedSDO(), and sendSDOabort().
Here is the call graph for this function:
UNS8 sendSDOabort | ( | CO_Data * | d, | |
UNS8 | whoami, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS32 | abortCode | |||
) |
d | ||
whoami | ||
index | ||
subIndex | ||
abortCode |
Definition at line 578 of file sdo.c.
References struct_CO_Data::bDeviceNodeId, struct_s_SDO::body, struct_s_timer_entry::d, BODY::data, MSG_WAR, struct_s_SDO::nodeId, sendSDO(), and UNS8.
Referenced by failedSDO(), and SDOTimeoutAlarm().
Here is the call graph for this function:
UNS8 setSDOlineRestBytes | ( | CO_Data * | d, | |
UNS8 | line, | |||
UNS8 | nbBytes | |||
) |
d | ||
line | ||
nbBytes |
Definition at line 479 of file sdo.c.
References struct_s_transfer::count, struct_s_timer_entry::d, MSG_ERR, SDO_MAX_LENGTH_TRANSFERT, and struct_CO_Data::transfers.
Referenced by proceedSDO().
UNS8 writeNetworkDict | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | count, | |||
UNS8 | dataType, | |||
void * | data | |||
) |
d | ||
nodeId | ||
index | ||
subIndex | ||
count | ||
dataType | ||
data |
Definition at line 1368 of file sdo.c.
References _writeNetworkDict(), and struct_s_timer_entry::d.
Here is the call graph for this function:
UNS8 writeNetworkDictCallBack | ( | CO_Data * | d, | |
UNS8 | nodeId, | |||
UNS16 | index, | |||
UNS8 | subIndex, | |||
UNS8 | count, | |||
UNS8 | dataType, | |||
void * | data, | |||
SDOCallback_t | Callback | |||
) |
d | ||
nodeId | ||
index | ||
subIndex | ||
count | ||
dataType | ||
data | ||
Callback |
Definition at line 1388 of file sdo.c.
References _writeNetworkDict(), and struct_s_timer_entry::d.
Referenced by TestMaster_post_TPDO().
Here is the call graph for this function: