master/canopen.h
changeset 831 ded9519c8d6e
parent 814 a51f857b1b2d
equal deleted inserted replaced
830:d83d92e1a919 831:ded9519c8d6e
    47 #include "globals.h"
    47 #include "globals.h"
    48 #include "slave.h"
    48 #include "slave.h"
    49 
    49 
    50 /*****************************************************************************/
    50 /*****************************************************************************/
    51 
    51 
    52 /**
    52 /** CANopen Sdo.
    53    CANopen Sdo.
    53  */
    54 */
    54 struct ec_sdo {
    55 
       
    56 struct ec_sdo
       
    57 {
       
    58     struct kobject kobj; /**< kobject */
    55     struct kobject kobj; /**< kobject */
    59     struct list_head list; /**< list item */
    56     struct list_head list; /**< list item */
    60     ec_slave_t *slave; /**< parent slave */
    57     ec_slave_t *slave; /**< parent slave */
    61     uint16_t index; /**< Sdo index */
    58     uint16_t index; /**< Sdo index */
    62     uint8_t object_code; /**< object code */
    59     uint8_t object_code; /**< object code */
    65     struct list_head entries; /**< entry list */
    62     struct list_head entries; /**< entry list */
    66 };
    63 };
    67 
    64 
    68 /*****************************************************************************/
    65 /*****************************************************************************/
    69 
    66 
    70 /**
    67 /** CANopen Sdo entry.
    71    CANopen Sdo entry.
    68  */
    72 */
    69 typedef struct {
    73 
       
    74 typedef struct
       
    75 {
       
    76     struct kobject kobj; /**< kobject */
    70     struct kobject kobj; /**< kobject */
    77     struct list_head list; /**< list item */
    71     struct list_head list; /**< list item */
    78     ec_sdo_t *sdo; /**< parent Sdo */
    72     ec_sdo_t *sdo; /**< parent Sdo */
    79     uint8_t subindex; /**< entry subindex */
    73     uint8_t subindex; /**< entry subindex */
    80     uint16_t data_type; /**< entry data type */
    74     uint16_t data_type; /**< entry data type */
    81     uint16_t bit_length; /**< entry length in bit */
    75     uint16_t bit_length; /**< entry length in bit */
    82     char *description; /**< entry description */
    76     char *description; /**< entry description */
    83 }
    77 } ec_sdo_entry_t;
    84 ec_sdo_entry_t;
       
    85 
    78 
    86 /*****************************************************************************/
    79 /*****************************************************************************/
    87 
    80 
    88 /**
    81 /** CANopen Sdo configuration data.
    89    CANopen Sdo configuration data.
    82  */
    90 */
    83 typedef struct {
    91 
       
    92 typedef struct
       
    93 {
       
    94     struct list_head list; /**< list item */
    84     struct list_head list; /**< list item */
    95     uint16_t index; /**< Sdo index */
    85     uint16_t index; /**< Sdo index */
    96     uint8_t subindex; /**< Sdo subindex */
    86     uint8_t subindex; /**< Sdo subindex */
    97     uint8_t *data; /**< pointer to Sdo data */
    87     uint8_t *data; /**< pointer to Sdo data */
    98     size_t size; /**< size of Sdo data */
    88     size_t size; /**< size of Sdo data */
   103 
    93 
   104 /**
    94 /**
   105    CANopen Sdo request.
    95    CANopen Sdo request.
   106 */
    96 */
   107 
    97 
   108 typedef struct
    98 typedef struct {
   109 {
       
   110     struct list_head list; /**< list item */
    99     struct list_head list; /**< list item */
   111     ec_sdo_entry_t *entry; /**< Sdo entry */
   100     ec_slave_t *slave; /**< Slave owning the Sdo. */
       
   101     uint16_t index; /**< Sdo index. */
       
   102     uint8_t subindex; /**< Sdo subindex. */
   112     uint8_t *data; /**< pointer to Sdo data */
   103     uint8_t *data; /**< pointer to Sdo data */
   113     size_t size; /**< size of Sdo data */
   104     size_t size; /**< size of Sdo data */
   114     ec_request_state_t state; /**< Sdo request state */
   105     ec_request_state_t state; /**< Sdo request state */
   115 }
   106 } ec_sdo_request_t;
   116 ec_sdo_request_t;
       
   117 
   107 
   118 /*****************************************************************************/
   108 /*****************************************************************************/
   119 
   109 
   120 int ec_sdo_init(ec_sdo_t *, uint16_t, ec_slave_t *);
   110 int ec_sdo_init(ec_sdo_t *, uint16_t, ec_slave_t *);
   121 void ec_sdo_destroy(ec_sdo_t *);
   111 void ec_sdo_destroy(ec_sdo_t *);
   122 ec_sdo_entry_t *ec_sdo_get_entry(ec_sdo_t *, uint8_t);
   112 ec_sdo_entry_t *ec_sdo_get_entry(ec_sdo_t *, uint8_t);
   123 
   113 
   124 int ec_sdo_entry_init(ec_sdo_entry_t *, uint8_t, ec_sdo_t *);
   114 int ec_sdo_entry_init(ec_sdo_entry_t *, uint8_t, ec_sdo_t *);
   125 void ec_sdo_entry_destroy(ec_sdo_entry_t *);
   115 void ec_sdo_entry_destroy(ec_sdo_entry_t *);
   126 
   116 
   127 void ec_sdo_request_init_read(ec_sdo_request_t *, ec_sdo_entry_t *);
   117 void ec_sdo_request_init_read(ec_sdo_request_t *, ec_slave_t *, uint16_t,
       
   118         uint8_t);
   128 void ec_sdo_request_clear(ec_sdo_request_t *);
   119 void ec_sdo_request_clear(ec_sdo_request_t *);
   129 
   120 
   130 /*****************************************************************************/
   121 /*****************************************************************************/
   131 
   122 
   132 #endif
   123 #endif