Lely core libraries  2.2.5
buf.c File Reference

This file is part of the CAN library; it contains the implementation of the CAN frame buffer. More...

#include "can.h"
#include <lely/can/buf.h>
#include <lely/util/errnum.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for buf.c:

Go to the source code of this file.

Macros

#define LELY_CAN_BUF_SIZE   16
 The minimum size (in number of frames) of a CAN frame buffer.
 

Functions

int can_buf_init (struct can_buf *buf, size_t size)
 Initializes a CAN frame buffer. More...
 
void can_buf_fini (struct can_buf *buf)
 Finalizes a CAN frame buffer. More...
 
struct can_bufcan_buf_create (size_t size)
 Allocates and initializes a CAN frame buffer. More...
 
size_t can_buf_reserve (struct can_buf *buf, size_t n)
 Resizes a CAN frame buffer, if necessary, to make room for at least n additional frames. More...
 

Detailed Description

This file is part of the CAN library; it contains the implementation of the CAN frame buffer.

See also
lely/can/buf.h
Author
J. S. Seldenthuis jseld.nosp@m.enth.nosp@m.uis@l.nosp@m.ely..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition in file buf.c.

Function Documentation

◆ can_buf_init()

int can_buf_init ( struct can_buf buf,
size_t  size 
)

Initializes a CAN frame buffer.

Parameters
bufa pointer to a CAN frame buffer.
sizethe initial size (in number of frames). The size will be rounded up to the nearest power of two minus one.
Returns
0 on success, or -1 on error. In the latter case, the error number can be obtained with get_errc().
See also
can_buf_fini()

Definition at line 39 of file buf.c.

◆ can_buf_fini()

void can_buf_fini ( struct can_buf buf)

Finalizes a CAN frame buffer.

See also
can_buf_init()

Definition at line 67 of file buf.c.

◆ can_buf_create()

struct can_buf* can_buf_create ( size_t  size)

Allocates and initializes a CAN frame buffer.

Parameters
sizethe initial size (in number of frames). The size will be rounded up to the nearest power of two minus one.
Returns
a pointer to a new frame buffer, or NULL on error. In the latter case, the error number can be obtained with get_errc().
See also
can_buf_destroy(), can_buf_init()

Definition at line 75 of file buf.c.

◆ can_buf_reserve()

size_t can_buf_reserve ( struct can_buf buf,
size_t  n 
)

Resizes a CAN frame buffer, if necessary, to make room for at least n additional frames.

Note that the new capacity can be larger than the requested capacity.

Returns
the new capacity of the buffer (in number of frames), or 0 on error. In the latter case, the error number can be obtained with get_errc().

Definition at line 111 of file buf.c.