Loading...
Searching...
No Matches
pkt.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2018 OTA keys S.A.
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser General
5 * Public License v2.1. See the file LICENSE in the top level directory for more
6 * details.
7 */
8
20#ifndef CAN_PKT_H
21#define CAN_PKT_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#include <stdatomic.h>
28
29#include "can/common.h"
30#include "can/can.h"
31#include "msg.h"
32#ifdef MODULE_CAN_MBOX
33#include "mbox.h"
34#endif
35
47
53void can_pkt_init(void);
54
67can_pkt_t *can_pkt_alloc_tx(int ifnum, const struct can_frame *frame, kernel_pid_t tx_pid);
68
77can_pkt_t *can_pkt_alloc_rx(int ifnum, const struct can_frame *frame);
78
79#if defined(MODULE_CAN_MBOX) || defined(DOXYGEN)
92can_pkt_t *can_pkt_alloc_mbox_tx(int ifnum, const struct can_frame *frame, mbox_t *mbox);
93#endif
94
102
114can_rx_data_t *can_pkt_alloc_rx_data(void *data, size_t len, void *arg);
115
122
132void *can_pkt_buf_alloc(size_t size);
133
140void can_pkt_buf_free(void *data, size_t size);
141
142#ifdef __cplusplus
143}
144#endif
145
146#endif /* CAN_PKT_H */
void can_pkt_free_rx_data(can_rx_data_t *data)
Free rx data previously allocated by can_pkt_alloc_rx_data()
can_pkt_t * can_pkt_alloc_rx(int ifnum, const struct can_frame *frame)
Allocate an incoming CAN packet.
can_pkt_t * can_pkt_alloc_mbox_tx(int ifnum, const struct can_frame *frame, mbox_t *mbox)
Allocate a CAN packet for a mbox to transmit.
void can_pkt_buf_free(void *data, size_t size)
Free the data allocated by can_pkt_buf_alloc()
void can_pkt_init(void)
Initialize the CAN packet module.
void * can_pkt_buf_alloc(size_t size)
Allocate size bytes and return the pointer.
can_pkt_t * can_pkt_alloc_tx(int ifnum, const struct can_frame *frame, kernel_pid_t tx_pid)
Allocate a CAN packet to transmit.
void can_pkt_free(can_pkt_t *pkt)
Free a CAN packet.
can_rx_data_t * can_pkt_alloc_rx_data(void *data, size_t len, void *arg)
Allocate a can_rx_data_t and initialize it with gieven parameters.
int16_t kernel_pid_t
Unique process identifier.
Definition sched.h:139
Mailbox API.
Type with the same alignment and size as atomic_uint
Controller Area Network frame.
Definition can.h:88
uint8_t data[CAN_MAX_DLEN]
Frame data.
Definition can.h:95
A CAN packet.
Definition pkt.h:41
int handle
handle (for tx frames
Definition pkt.h:44
can_reg_entry_t entry
entry containing ifnum and upper layer info
Definition pkt.h:42
atomic_uint ref_count
Reference counter (for rx frames)
Definition pkt.h:43
registry entry
Definition common.h:143
Received data structure.
Definition common.h:122
Mailbox struct definition.
Definition mbox.h:41
Definitions high-level CAN interface.
Definitions of high-level CAN interface.