Lely core libraries  1.9.2
wtm.h
Go to the documentation of this file.
1 
22 #ifndef LELY_CO_WTM_H_
23 #define LELY_CO_WTM_H_
24 
25 #include <lely/can/msg.h>
26 #include <lely/co/co.h>
27 #include <lely/libc/time.h>
28 
33 #define CO_WTM_MAX_LEN 261
34 
36 #define CO_WTM_AC_ERROR UINT32_C(0x01000000)
37 
39 #define CO_WTM_AC_TIMEOUT UINT32_C(0x01000001)
40 
42 #define CO_WTM_AC_NO_MEM UINT32_C(0x01000002)
43 
45 #define CO_WTM_AC_HARDWARE UINT32_C(0x01000003)
46 
51 #define CO_WTM_AC_DATA UINT32_C(0x01000004)
52 
57 #define CO_WTM_AC_DATA_CTL UINT32_C(0x01000005)
58 
63 #define CO_WTM_AC_DATA_DEV UINT32_C(0x01000006)
64 
66 #define CO_WTM_AC_NO_DATA UINT32_C(0x01000007)
67 
69 #define CO_WTM_AC_NO_IF UINT32_C(0x01000008)
70 
72 #define CO_WTM_AC_IF_DOWN UINT32_C(0x01000009)
73 
75 #define CO_WTM_AC_DIAG UINT32_C(0x0100000a)
76 
81 #define CO_WTM_AC_DIAG_CAN UINT32_C(0x0100000b)
82 
87 #define CO_WTM_AC_DIAG_WTM UINT32_C(0x0100000c)
88 
90 #define CO_WTM_AC_FRAME UINT32_C(0x02000000)
91 
93 #define CO_WTM_AC_PREAMBLE UINT32_C(0x02000001)
94 
96 #define CO_WTM_AC_SEQ UINT32_C(0x02000002)
97 
99 #define CO_WTM_AC_TYPE UINT32_C(0x02000003)
100 
102 #define CO_WTM_AC_PAYLOAD UINT32_C(0x02000004)
103 
105 #define CO_WTM_AC_CRC UINT32_C(0x02000005)
106 
108 #define CO_WTM_AC_CAN UINT32_C(0x02000006)
109 
110 struct __co_wtm;
111 #ifndef __cplusplus
112 typedef struct __co_wtm co_wtm_t;
114 #endif
115 
116 #ifdef __cplusplus
117 extern "C" {
118 #endif
119 
144 typedef void co_wtm_diag_can_con_t(co_wtm_t *wtm, uint8_t nif, uint8_t st,
145  uint8_t err, uint8_t load, uint16_t ec, uint16_t foc,
146  uint16_t coc, void *data);
147 
159  co_wtm_t *wtm, uint8_t nif, uint8_t quality, void *data);
160 
169 typedef void co_wtm_diag_can_ind_t(co_wtm_t *wtm, uint8_t nif, void *data);
170 
178 typedef void co_wtm_diag_wtm_ind_t(co_wtm_t *wtm, void *data);
179 
188 typedef void co_wtm_diag_ac_ind_t(co_wtm_t *wtm, uint32_t ac, void *data);
189 
204 typedef int co_wtm_recv_func_t(co_wtm_t *wtm, uint8_t nif,
205  const struct timespec *tp, const struct can_msg *msg,
206  void *data);
207 
220 typedef int co_wtm_send_func_t(
221  co_wtm_t *wtm, const void *buf, size_t nbytes, void *data);
222 
224 const char *co_wtm_ac_str(uint32_t ac);
225 
226 void *__co_wtm_alloc(void);
227 void __co_wtm_free(void *ptr);
228 struct __co_wtm *__co_wtm_init(struct __co_wtm *wtm);
229 void __co_wtm_fini(struct __co_wtm *wtm);
230 
239 co_wtm_t *co_wtm_create(void);
240 
246 void co_wtm_destroy(co_wtm_t *wtm);
247 
253 uint8_t co_wtm_get_nif(const co_wtm_t *wtm);
254 
266 int co_wtm_set_nif(co_wtm_t *wtm, uint8_t nif);
267 
293 int co_wtm_set_diag_can(co_wtm_t *wtm, uint8_t nif, uint8_t st, uint8_t err,
294  uint8_t load, uint16_t ec, uint16_t foc, uint16_t coc);
295 
306 int co_wtm_set_diag_wtm(co_wtm_t *wtm, uint8_t quality);
307 
321  void **pdata);
322 
335  co_wtm_t *wtm, co_wtm_diag_can_con_t *con, void *data);
336 
350  void **pdata);
351 
364  co_wtm_t *wtm, co_wtm_diag_wtm_con_t *con, void *data);
365 
379  void **pdata);
380 
393  co_wtm_t *wtm, co_wtm_diag_can_ind_t *con, void *data);
394 
408  void **pdata);
409 
422  co_wtm_t *wtm, co_wtm_diag_wtm_ind_t *con, void *data);
423 
437  const co_wtm_t *wtm, co_wtm_diag_ac_ind_t **pind, void **pdata);
438 
453  co_wtm_t *wtm, co_wtm_diag_ac_ind_t *ind, void *data);
454 
464 void co_wtm_recv(co_wtm_t *wtm, const void *buf, size_t nbytes);
465 
479  const co_wtm_t *wtm, co_wtm_recv_func_t **pfunc, void **pdata);
480 
492 void co_wtm_set_recv_func(co_wtm_t *wtm, co_wtm_recv_func_t *func, void *data);
493 
506 int co_wtm_get_time(const co_wtm_t *wtm, uint8_t nif, struct timespec *tp);
507 
521 int co_wtm_set_time(co_wtm_t *wtm, uint8_t nif, const struct timespec *tp);
522 
536 int co_wtm_send(co_wtm_t *wtm, uint8_t nif, const struct can_msg *msg);
537 
545 int co_wtm_send_alive(co_wtm_t *wtm);
546 
557 int co_wtm_send_diag_can_req(co_wtm_t *wtm, uint8_t nif);
558 
569 int co_wtm_send_diag_wtm_req(co_wtm_t *wtm, uint8_t nif);
570 
580 int co_wtm_send_diag_can_rst(co_wtm_t *wtm, uint8_t nif);
581 
591 int co_wtm_send_diag_wtm_rst(co_wtm_t *wtm, uint8_t nif);
592 
603 int co_wtm_send_diag_ac(co_wtm_t *wtm, uint32_t ac);
604 
612 int co_wtm_flush(co_wtm_t *wtm);
613 
627  const co_wtm_t *wtm, co_wtm_send_func_t **pfunc, void **pdata);
628 
640 void co_wtm_set_send_func(co_wtm_t *wtm, co_wtm_send_func_t *func, void *data);
641 
642 #ifdef __cplusplus
643 }
644 #endif
645 
646 #endif // !LELY_CO_WTM_H_
A CAN or CAN FD format frame.
Definition: msg.h:88
int co_wtm_send_diag_wtm_rst(co_wtm_t *wtm, uint8_t nif)
Sends a WTM communication quality reset message.
Definition: wtm.c:985
uint8_t co_wtm_get_nif(const co_wtm_t *wtm)
Returns the interface indicator of a CANopen WTM interface.
Definition: wtm.c:321
int co_wtm_send_diag_can_rst(co_wtm_t *wtm, uint8_t nif)
Sends a CAN communication quality reset message.
Definition: wtm.c:967
void co_wtm_get_diag_wtm_con(const co_wtm_t *wtm, co_wtm_diag_wtm_con_t **pcon, void **pdata)
Retrieves the confirmation function invoked when a WTM communication quality response is received by ...
Definition: wtm.c:430
int co_wtm_send_diag_ac(co_wtm_t *wtm, uint32_t ac)
Sends a diagnostic abort message from a CANopen WTM interface.
Definition: wtm.c:1003
void co_wtm_set_diag_can_con(co_wtm_t *wtm, co_wtm_diag_can_con_t *con, void *data)
Sets the confirmation function invoked when a CAN communication quality response is received by a CAN...
Definition: wtm.c:421
void co_wtm_set_send_func(co_wtm_t *wtm, co_wtm_send_func_t *func, void *data)
Sets the callback function used to send byte streams from a CANopen WTM interface.
Definition: wtm.c:1060
void co_wtm_get_diag_can_con(const co_wtm_t *wtm, co_wtm_diag_can_con_t **pcon, void **pdata)
Retrieves the confirmation function invoked when a CAN communication quality response is received by ...
Definition: wtm.c:409
int co_wtm_set_diag_wtm(co_wtm_t *wtm, uint8_t quality)
Sets the diagnostic parameters of a WTM interface.
Definition: wtm.c:394
This is the public header file of the CANopen library.
int co_wtm_flush(co_wtm_t *wtm)
Flushes the current send buffer of a CANopen WTM interface.
Definition: wtm.c:1018
void co_wtm_get_diag_can_ind(const co_wtm_t *wtm, co_wtm_diag_can_ind_t **pcon, void **pdata)
Retrieves the indication function invoked when a CAN communication quality reset message is received ...
Definition: wtm.c:451
void co_wtm_recv(co_wtm_t *wtm, const void *buf, size_t nbytes)
Receives and processes a byte stream with a CANopen WTM interface.
Definition: wtm.c:514
int co_wtm_set_time(co_wtm_t *wtm, uint8_t nif, const struct timespec *tp)
Sets the current time of a CANopen WTM interface.
Definition: wtm.c:802
void co_wtm_set_recv_func(co_wtm_t *wtm, co_wtm_recv_func_t *func, void *data)
Sets the callback function invoked when a CAN frame is received by a CANopen WTM interface.
Definition: wtm.c:777
void co_wtm_diag_wtm_ind_t(co_wtm_t *wtm, void *data)
The type of a CANopen WTM diagnostic indication function, invoked when a WTM communication quality re...
Definition: wtm.h:178
void co_wtm_diag_ac_ind_t(co_wtm_t *wtm, uint32_t ac, void *data)
The type of a CANopen WTM diagnostic indication function, invoked when an abort code is generated or ...
Definition: wtm.h:188
int co_wtm_get_time(const co_wtm_t *wtm, uint8_t nif, struct timespec *tp)
Retrieves the current time of a CANopen WTM interface.
Definition: wtm.c:786
int co_wtm_set_nif(co_wtm_t *wtm, uint8_t nif)
Sets the interface indicator of a CANopen WTM interface.
Definition: wtm.c:329
void co_wtm_diag_can_ind_t(co_wtm_t *wtm, uint8_t nif, void *data)
The type of a CANopen WTM diagnostic indication function, invoked when a CAN communication quality re...
Definition: wtm.h:169
void co_wtm_set_diag_ac_ind(co_wtm_t *wtm, co_wtm_diag_ac_ind_t *ind, void *data)
Sets the indication function invoked when an abort code is generated or received by a CANopen WTM int...
Definition: wtm.c:505
void co_wtm_get_diag_wtm_ind(const co_wtm_t *wtm, co_wtm_diag_wtm_ind_t **pcon, void **pdata)
Retrieves the indication function invoked when a WTM communication quality reset message is received ...
Definition: wtm.c:472
This header file is part of the CAN library; it contains the CAN frame declarations.
int co_wtm_send_diag_wtm_req(co_wtm_t *wtm, uint8_t nif)
Sends a WTM communication quality request.
Definition: wtm.c:949
uint8_t nif
The WTM interface indicator.
Definition: wtm.c:89
void co_wtm_get_send_func(const co_wtm_t *wtm, co_wtm_send_func_t **pfunc, void **pdata)
Retrieves the callback function used to send byte streams from a CANopen WTM interface.
Definition: wtm.c:1048
void co_wtm_diag_wtm_con_t(co_wtm_t *wtm, uint8_t nif, uint8_t quality, void *data)
The type of a CANopen WTM diagnostic confirmation function, invoked when a WTM communication quality ...
Definition: wtm.h:158
const char * co_wtm_ac_str(uint32_t ac)
Returns a string describing a CANopen WTM abort code.
Definition: wtm.c:178
void co_wtm_set_diag_wtm_con(co_wtm_t *wtm, co_wtm_diag_wtm_con_t *con, void *data)
Sets the confirmation function invoked when a WTM communication quality response is received by a CAN...
Definition: wtm.c:442
A CANopen Wireless Transmission Media (WTM) interface.
Definition: wtm.c:87
uint8_t quality
The link quality percentage (in the range [0..100], or 0xff if the information is not available)...
Definition: wtm.c:94
void co_wtm_get_recv_func(const co_wtm_t *wtm, co_wtm_recv_func_t **pfunc, void **pdata)
Retrieves the callback function invoked when a CAN frame is received by a CANopen WTM interface...
Definition: wtm.c:765
int co_wtm_send_alive(co_wtm_t *wtm)
Sends a keep-alive message from a CANopen WTM interface.
Definition: wtm.c:917
int co_wtm_recv_func_t(co_wtm_t *wtm, uint8_t nif, const struct timespec *tp, const struct can_msg *msg, void *data)
The type of a CANopen WTM receive callback function, invoked when a CAN frame is received.
Definition: wtm.h:204
void co_wtm_set_diag_wtm_ind(co_wtm_t *wtm, co_wtm_diag_wtm_ind_t *con, void *data)
Sets the indication function invoked when a WTM communication quality reset message is received by a ...
Definition: wtm.c:484
void co_wtm_diag_can_con_t(co_wtm_t *wtm, uint8_t nif, uint8_t st, uint8_t err, uint8_t load, uint16_t ec, uint16_t foc, uint16_t coc, void *data)
The type of a CANopen WTM diagnostic confirmation function, invoked when a CAN communication quality ...
Definition: wtm.h:144
int co_wtm_set_diag_can(co_wtm_t *wtm, uint8_t nif, uint8_t st, uint8_t err, uint8_t load, uint16_t ec, uint16_t foc, uint16_t coc)
Sets the diagnostic parameters of a CAN interface.
Definition: wtm.c:344
void co_wtm_get_diag_ac_ind(const co_wtm_t *wtm, co_wtm_diag_ac_ind_t **pind, void **pdata)
Retrieves the indication function invoked when an abort code is generated or received by a CANopen WT...
Definition: wtm.c:493
co_wtm_t * co_wtm_create(void)
Creates a new CANopen Wireless Transmission Media (WTM) interface.
Definition: wtm.c:287
int co_wtm_send(co_wtm_t *wtm, uint8_t nif, const struct can_msg *msg)
Sends a CAN frame from a CANopen WTM interface.
Definition: wtm.c:836
int co_wtm_send_diag_can_req(co_wtm_t *wtm, uint8_t nif)
Sends a CAN communication quality request.
Definition: wtm.c:931
int co_wtm_send_func_t(co_wtm_t *wtm, const void *buf, size_t nbytes, void *data)
The type of a CANopen WTM send callback function, invoked when a byte stream needs to be sent...
Definition: wtm.h:220
This header file is part of the C11 and POSIX compatibility library; it includes <time.h> and defines any missing functionality.
void co_wtm_set_diag_can_ind(co_wtm_t *wtm, co_wtm_diag_can_ind_t *con, void *data)
Sets the indication function invoked when a CAN communication quality reset message is received by a ...
Definition: wtm.c:463
void co_wtm_destroy(co_wtm_t *wtm)
Destroys a CANopen Wireless Transmission Media (WTM) interface.
Definition: wtm.c:312