diff -r 6787754b251b -r b6572d0336c3 doc/doxygen/html/sdo_8h.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/doxygen/html/sdo_8h.html Mon Jun 04 17:59:50 2007 +0200 @@ -0,0 +1,1160 @@ + + +CanFestival: /home/epimerde/documents/tc11/CanFestival-3/include/sdo.h File Reference + + + + +
+
+
+
+

/home/epimerde/documents/tc11/CanFestival-3/include/sdo.h File Reference

#include "timer.h"
+#include "data.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  struct_s_transfer
struct  BODY
struct  struct_s_SDO

Typedefs

typedef void(*) SDOCallback_t (CO_Data *d, UNS8 nodeId)
typedef struct_s_transfer s_transfer
typedef struct_s_SDO s_SDO

Functions

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)
+


Typedef Documentation

+ +
+
+ + + + +
typedef struct struct_s_SDO s_SDO
+
+
+ +

+ +

+Definition at line 86 of file sdo.h. +

+

+ +

+
+ + + + +
typedef struct struct_s_transfer s_transfer
+
+
+ +

+ +

+Definition at line 69 of file sdo.h. +

+

+ +

+
+ + + + +
typedef void(*) SDOCallback_t(CO_Data *d, UNS8 nodeId)
+
+
+ +

+ +

+Definition at line 30 of file sdo.h. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 closeSDOtransfer (CO_Data d,
UNS8  nodeId,
UNS8  whoami 
)
+
+
+ +

+Close a transmission. nodeId : Node id of the server if both server or client whoami : Line opened as SDO_CLIENT or SDO_SERVER +

+Definition at line 318 of file sdo.c. +

+References struct_s_timer_entry::d, getSDOlineOnUse(), MSG_WAR, resetSDOline(), and UNS8. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 failedSDO (CO_Data d,
UNS8  nodeId,
UNS8  whoami,
UNS16  index,
UNS8  subIndex,
UNS32  abortCode 
)
+
+
+ +

+Called when an internal SDO abort occurs. Release the line * Only if server * If client, the line must be released manually in the core application. The reason of that is to permit the program to read the transfers[][] structure before its reset, because many informations are stored on it : index, subindex, data received or trasmited, ... In all cases, sends a SDO abort. Returns 0 +

+Definition at line 227 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 getReadResultNetworkDict (CO_Data d,
UNS8  nodeId,
void *  data,
UNS8 *  size,
UNS32 *  abortCode 
)
+
+
+ +

+Use this function after a readNetworkDict to get the result. Returns : SDO_FINISHED // data is available SDO_ABORTED_RCV // Transfert failed. (abort SDO received) SDO_ABORTED_INTERNAL // Transfert failed. Internal abort. SDO_UPLOAD_IN_PROGRESS // Data not yet available SDO_DOWNLOAD_IN_PROGRESS // Should not arrive !

+dataType (defined in objdictdef.h) : type expected. put "visible_string" for strings, 0 for integers or reals. abortCode : 0 = not available. Else : SDO abort code. (received if return SDO_ABORTED_RCV) example : UNS32 data; UNS8 size; readNetworkDict(0, 0x05, 0x1016, 1, 0) // get the data index 1016 subindex 1 of node 5 while (getReadResultNetworkDict (0, 0x05, &data, &size) != SDO_UPLOAD_IN_PROGRESS); +

+Definition at line 1295 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 getSDOfreeLine (CO_Data d,
UNS8  whoami,
UNS8 *  line 
)
+
+
+ +

+Search for an unused line in the transfers array to store a new SDO. ie a line which value of the field "state" is "SDO_RESET" An unused line have the field "state" at the value SDO_RESET bus_id is hardware dependant whoami : create the line for a SDO_SERVER or SDO_CLIENT. return 0xFF if all the lines are on use. Else, return 0 +

+Definition at line 284 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 getSDOlineOnUse (CO_Data d,
UNS8  nodeId,
UNS8  whoami,
UNS8 *  line 
)
+
+
+ +

+Search for the line, in the transfers array, which contains the beginning of the reception of a fragmented SDO whoami takes 2 values : look for a line opened as SDO_CLIENT or SDO_SERVER bus_id is hardware dependant nodeId correspond to the message node-id return 0xFF if error. Else, return 0 +

+Definition at line 301 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 getSDOlineRestBytes (CO_Data d,
UNS8  line,
UNS8 *  nbBytes 
)
+
+
+ +

+Bytes in the line structure which must be transmited (or received) bus_id is hardware dependant. return 0. +

+Definition at line 332 of file sdo.c. +

+References struct_s_transfer::count, struct_s_timer_entry::d, struct_s_transfer::offset, struct_CO_Data::transfers, and UNS8. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 getWriteResultNetworkDict (CO_Data d,
UNS8  nodeId,
UNS32 *  abortCode 
)
+
+
+ +

+Use this function after a writeNetworkDict to get the result of the write It is mandatory to call this function because it is releasing the line used for the transfer. Returns : SDO_FINISHED // data is available SDO_ABORTED_RCV // Transfert failed. (abort SDO received) SDO_ABORTED_INTERNAL // Transfert failed. Internal abort. SDO_DOWNLOAD_IN_PROGRESS // Data not yet available SDO_UPLOAD_IN_PROGRESS // Should not arrive ! abortCode : 0 = not available. Else : SDO abort code. (received if return SDO_ABORTED_RCV) example : UNS32 data = 0x50; UNS8 size; UNS32 abortCode; writeNetworkDict(0, 0x05, 0x1016, 1, size, &data) // write the data index 1016 subindex 1 of node 5 while ( getWriteResultNetworkDict (0, 0x05, &abortCode) != SDO_DOWNLOAD_IN_PROGRESS); +

+Definition at line 1329 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 initSDOline (CO_Data d,
UNS8  line,
UNS8  nodeId,
UNS16  index,
UNS8  subIndex,
UNS8  state 
)
+
+
+ +

+Initialize some fields of the structure. Returns 0 +

+Definition at line 263 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 lineToSDO (CO_Data d,
UNS8  line,
UNS8  nbBytes,
UNS8 *  data 
)
+
+
+ +

+copy data from an existant line in the argument "* data" Returns 0xFF if error. Else, returns 0; +

+Definition at line 189 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
UNS32 objdictToSDOline (CO_Data d,
UNS8  line 
)
+
+
+ +

+Copy the data from the object dictionary to the SDO line for a network transfert. Returns SDO error code if error. Else, returns 0; +

+Definition at line 157 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
UNS8 proceedSDO (CO_Data d,
Message m 
)
+
+
+ +

+Treat a SDO frame reception bus_id is hardware dependant call the function sendSDO return 0xFF if error 0x80 if transfert aborted by the server 0x0 ok +

+Definition at line 447 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, BODY::data, Message::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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 readNetworkDict (CO_Data d,
UNS8  nodeId,
UNS16  index,
UNS8  subIndex,
UNS8  dataType 
)
+
+
+ +

+Used by the application to send a SDO request frame to read in the dictionary of a server node whose node_id is ID at the index and subIndex indicated bus_id is hardware dependant datatype (defined in objdictdef.h) : put "visible_string" for strings, 0 for integers or reals or other value. return 0xFF if error, else return 0 +

+Definition at line 1282 of file sdo.c. +

+References _readNetworkDict(), and struct_s_timer_entry::d. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 readNetworkDictCallback (CO_Data d,
UNS8  nodeId,
UNS16  index,
UNS8  subIndex,
UNS8  dataType,
SDOCallback_t  Callback 
)
+
+
+ +

+Used to send a SDO request frame to read in a distant node dictionnary. The function Callback which must be defined in the user code is called at the end of the exchange. (on succes or abort). +

+Definition at line 1288 of file sdo.c. +

+References _readNetworkDict(), and struct_s_timer_entry::d. +

+

+ +

+
+ + + + + + + + + +
void resetSDO (CO_Data d  ) 
+
+
+ +

+Reset all sdo buffers +

+Definition at line 131 of file sdo.c. +

+References struct_s_timer_entry::d, resetSDOline(), SDO_MAX_SIMULTANEOUS_TRANSFERTS, and UNS8. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void resetSDOline (CO_Data d,
UNS8  line 
)
+
+
+ +

+Reset an unused line. +

+Definition at line 253 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
UNS32 SDOlineToObjdict (CO_Data d,
UNS8  line 
)
+
+
+ +

+Copy the data received from the SDO line transfert to the object dictionary Returns SDO error code if error. Else, returns 0; +

+Definition at line 141 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void SDOTimeoutAlarm (CO_Data d,
UNS32  id 
)
+
+
+ +

+Reset of a SDO exchange on timeout. Send a SDO abort +

+Definition at line 93 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 SDOtoLine (CO_Data d,
UNS8  line,
UNS8  nbBytes,
UNS8 *  data 
)
+
+
+ +

+Add data to an existant line Returns 0xFF if error. Else, returns 0; +

+Definition at line 210 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 sendSDO (CO_Data d,
UNS8  whoami,
s_SDO  sdo 
)
+
+
+ +

+Transmit a SDO frame on the bus bus_id sdo is a structure which contains the sdo to transmit bus_id is hardware dependant whoami takes 2 values : SDO_CLIENT or SDO_SERVER return canSend(bus_id,&m) or 0xFF if error +

+Definition at line 354 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, BODY::data, Message::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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 sendSDOabort (CO_Data d,
UNS8  whoami,
UNS16  index,
UNS8  subIndex,
UNS32  abortCode 
)
+
+
+ +

+Transmit a SDO error to the client. The reasons may be : Read/Write to a undefined object Read/Write to a undefined subindex Read/write a not valid length object Write a read only object whoami takes 2 values : SDO_CLIENT or SDO_SERVER +

+Definition at line 424 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 setSDOlineRestBytes (CO_Data d,
UNS8  line,
UNS8  nbBytes 
)
+
+
+ +

+Store in the line structure the nb of bytes which must be transmited (or received) bus_id is hardware dependant. return 0 if success, 0xFF if error. +

+Definition at line 342 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. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 writeNetworkDict (CO_Data d,
UNS8  nodeId,
UNS16  index,
UNS8  subIndex,
UNS8  count,
UNS8  dataType,
void *  data 
)
+
+
+ +

+Used by the application to send a SDO request frame to write the data *data at the index and subIndex indicated in the dictionary of the slave whose node_id is nodeId Count : nb of bytes to write in the dictionnary. datatype (defined in objdictdef.h) : put "visible_string" for strings, 0 for integers or reals or other value. bus_id is hardware dependant return 0xFF if error, else return 0 +

+Definition at line 1182 of file sdo.c. +

+References _writeNetworkDict(), and struct_s_timer_entry::d. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UNS8 writeNetworkDictCallBack (CO_Data d,
UNS8  nodeId,
UNS16  index,
UNS8  subIndex,
UNS8  count,
UNS8  dataType,
void *  data,
SDOCallback_t  Callback 
)
+
+
+ +

+Used to send a SDO request frame to write in a distant node dictionnary. The function Callback which must be defined in the user code is called at the end of the exchange. (on succes or abort). +

+Definition at line 1190 of file sdo.c. +

+References _writeNetworkDict(), and struct_s_timer_entry::d. +

+

+


Generated on Mon Jun 4 16:29:07 2007 for CanFestival by  + +doxygen 1.5.1
+ +