Lely core libraries 1.9.2
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
38extern "C" {
39#endif
40
52typedef void co_emcy_ind_t(co_emcy_t *emcy, co_unsigned8_t id,
53 co_unsigned16_t eec, co_unsigned8_t er, uint8_t msef[5],
54 void *data);
55
56void *__co_emcy_alloc(void);
57void __co_emcy_free(void *ptr);
58struct __co_emcy *__co_emcy_init(
59 struct __co_emcy *emcy, can_net_t *net, co_dev_t *dev);
60void __co_emcy_fini(struct __co_emcy *emcy);
61
74
76void co_emcy_destroy(co_emcy_t *emcy);
77
80
85
100int co_emcy_push(co_emcy_t *emcy, co_unsigned16_t eec, co_unsigned8_t er,
101 const uint8_t msef[5]);
102
117int co_emcy_pop(co_emcy_t *emcy, co_unsigned16_t *peec, co_unsigned8_t *per);
118
130void co_emcy_peek(const co_emcy_t *emcy, co_unsigned16_t *peec,
131 co_unsigned8_t *per);
132
142int co_emcy_clear(co_emcy_t *emcy);
143
156void co_emcy_get_ind(const co_emcy_t *emcy, co_emcy_ind_t **pind, void **pdata);
157
168void 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_
void co_emcy_destroy(co_emcy_t *emcy)
Destroys a CANopen EMCY producer/consumer service.
Definition: emcy.c:354
void co_emcy_ind_t(co_emcy_t *emcy, co_unsigned8_t id, co_unsigned16_t eec, co_unsigned8_t er, uint8_t msef[5], void *data)
The type of a CANopen EMCY indication function, invoked when an EMCY message is received.
Definition: emcy.h:52
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:486
int co_emcy_push(co_emcy_t *emcy, co_unsigned16_t eec, co_unsigned8_t er, const uint8_t msef[5])
Pushes a CANopen EMCY message to the stack and broadcasts it if the EMCY producer service is active.
Definition: emcy.c:380
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:327
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:467
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:364
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:426
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:456
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:372
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:497
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:38
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.