Lely core libraries  2.2.5
emcy.h
Go to the documentation of this file.
1 
22 #ifndef LELY_CO_EMCY_H_
23 #define LELY_CO_EMCY_H_
24 
25 #include <lely/can/net.h>
26 #include <lely/co/type.h>
27 
29 #define CO_EMCY_COBID_VALID UINT32_C(0x80000000)
30 
35 #define CO_EMCY_COBID_FRAME UINT32_C(0x20000000)
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
52 typedef void co_emcy_ind_t(co_emcy_t *emcy, co_unsigned8_t id,
53  co_unsigned16_t eec, co_unsigned8_t er, co_unsigned8_t msef[5],
54  void *data);
55 
56 void *__co_emcy_alloc(void);
57 void __co_emcy_free(void *ptr);
58 struct __co_emcy *__co_emcy_init(
59  struct __co_emcy *emcy, can_net_t *net, co_dev_t *dev);
60 void __co_emcy_fini(struct __co_emcy *emcy);
61 
74 
76 void co_emcy_destroy(co_emcy_t *emcy);
77 
79 can_net_t *co_emcy_get_net(const co_emcy_t *emcy);
80 
84 co_dev_t *co_emcy_get_dev(const co_emcy_t *emcy);
85 
100 int co_emcy_push(co_emcy_t *emcy, co_unsigned16_t eec, co_unsigned8_t er,
101  const co_unsigned8_t msef[5]);
102 
117 int co_emcy_pop(co_emcy_t *emcy, co_unsigned16_t *peec, co_unsigned8_t *per);
118 
130 void co_emcy_peek(const co_emcy_t *emcy, co_unsigned16_t *peec,
131  co_unsigned8_t *per);
132 
142 int co_emcy_clear(co_emcy_t *emcy);
143 
156 void co_emcy_get_ind(const co_emcy_t *emcy, co_emcy_ind_t **pind, void **pdata);
157 
168 void co_emcy_set_ind(co_emcy_t *emcy, co_emcy_ind_t *ind, void *data);
169 
170 #ifdef __cplusplus
171 }
172 #endif
173 
174 #endif // !LELY_CO_EMCY_H_
co_dev_t * co_emcy_get_dev(const co_emcy_t *emcy)
Returns a pointer to the CANopen device of an EMCY producer/consumer service.
Definition: emcy.c:369
void co_emcy_destroy(co_emcy_t *emcy)
Destroys a CANopen EMCY producer/consumer service.
Definition: emcy.c:351
co_emcy_t * co_emcy_create(can_net_t *net, co_dev_t *dev)
Creates a new CANopen EMCY producer/consumer service.
Definition: emcy.c:324
can_net_t * co_emcy_get_net(const co_emcy_t *emcy)
Returns a pointer to the CAN network of an EMCY producer/consumer service.
Definition: emcy.c:361
void co_emcy_get_ind(const co_emcy_t *emcy, co_emcy_ind_t **pind, void **pdata)
Retrieves the indication function invoked when a CANopen EMCY message is received.
Definition: emcy.c:483
int co_emcy_push(co_emcy_t *emcy, co_unsigned16_t eec, co_unsigned8_t er, const co_unsigned8_t msef[5])
Pushes a CANopen EMCY message to the stack and broadcasts it if the EMCY producer service is active.
Definition: emcy.c:377
void co_emcy_ind_t(co_emcy_t *emcy, co_unsigned8_t id, co_unsigned16_t eec, co_unsigned8_t er, co_unsigned8_t msef[5], void *data)
The type of a CANopen EMCY indication function, invoked when an EMCY message is received.
Definition: emcy.h:52
int co_emcy_clear(co_emcy_t *emcy)
Clears the CANopen EMCY message stack and broadcasts the 'error reset/no error' message if the EMCY p...
Definition: emcy.c:464
int co_emcy_pop(co_emcy_t *emcy, co_unsigned16_t *peec, co_unsigned8_t *per)
Pops the most recent CANopen EMCY message from the stack and broadcasts an 'error reset' message if t...
Definition: emcy.c:423
void co_emcy_peek(const co_emcy_t *emcy, co_unsigned16_t *peec, co_unsigned8_t *per)
Retrieves, but does not pop, the most recent CANopen EMCY message from the stack.
Definition: emcy.c:453
void co_emcy_set_ind(co_emcy_t *emcy, co_emcy_ind_t *ind, void *data)
Sets the indication function invoked when a CANopen EMCY message is received.
Definition: emcy.c:494
This header file is part of the CAN library; it contains the CAN network interface declarations.
A CAN network interface.
Definition: net.c:37
A CANopen device.
Definition: dev.c:41
A CANopen EMCY producer/consumer service.
Definition: emcy.c:83
co_dev_t * dev
A pointer to a CANopen device.
Definition: emcy.c:87
void * data
A pointer to user-specified data for ind.
Definition: emcy.c:107
co_emcy_ind_t * ind
A pointer to the indication function.
Definition: emcy.c:105
can_net_t * net
A pointer to a CAN network interface.
Definition: emcy.c:85
This header file is part of the CANopen library; it contains the CANopen type definitions.