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 |