Hardware Abstraction Layer for FreeRTOS
mailbox_prv.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: MIT */
2
/*
3
* Author: Andreas Werner <kernel@andy89.org>
4
* Date: 2016
5
*/
6
#ifndef MAILBOX_PRV_
7
#define MAILBOX_PRV_
8
#ifndef MAILBOX_PRV
9
# error "Never include this file out of a MAILBOX driver"
10
#endif
11
#include <FreeRTOS.h>
12
#include <semphr.h>
13
#include <stdint.h>
14
#include <stdbool.h>
15
#include <
hal.h
>
16
#define MAILBOX_ALREDY_INITED 1
17
int32_t
mailbox_genericInit
(
struct
mailbox *mailbox);
18
#ifdef CONFIG_MAILBOX_THREAD_SAVE
19
# define mailbox_lock(u, w, e) HAL_LOCK(u, w, e)
20
# define mailbox_unlock(u, e) HAL_UNLOCK(u, e)
21
#else
22
# define mailbox_lock(u, w, e)
23
# define mailbox_unlock(u, e)
24
#endif
25
#define MAILBOX_ADDDEV(ns, p) HAL_ADDDEV(mailbox, ns, p)
26
HAL_DEFINE_GLOBAL_ARRAY
(mailbox);
27
#define MAILBOX_GET_DEV(index) HAL_GET_DEV(mailbox, index)
28
#ifndef CONFIG_MAILBOX_MULTI
29
# define MAILBOX_OPS(ns)
30
# define MAILBOX_INIT_DEV(ns)
31
32
# define MAILBOX_INIT(ns, index) struct mailbox *mailbox_init(uint32_t index)
33
# define MAILBOX_DEINIT(ns, p) int32_t mailbox_deinit(struct mailbox *p)
34
35
# define MAILBOX_SEND(ns, p, data, w) int32_t mailbox_send(struct mailbox *p, uint32_t data, TickType_t w)
36
# define MAILBOX_RECV(ns, p, data, w) int32_t mailbox_recv(struct mailbox *p, uint32_t *data, TickType_t w)
37
# define MAILBOX_SEND_ISR(ns, p, data) int32_t mailbox_sendISR(struct mailbox *p, uint32_t data)
38
# define MAILBOX_RECV_ISR(ns, p, data) int32_t mailbox_recvISR(struct mailbox *p, uint32_t *data)
39
#else
40
# define MAILBOX_OPS(ns) static const struct mailbox_ops ns##_mailbox_ops = { \
41
.mailbox_init = &ns##_mailbox_init,\
42
.mailbox_deinit = &ns##_mailbox_deinit,\
43
.mailbox_send = &ns##_mailbox_send,\
44
.mailbox_recv = &ns##_mailbox_recv,\
45
.mailbox_sendISR = &ns##_mailbox_sendISR,\
46
.mailbox_recvISR = &ns##_mailbox_recvISR,\
47
}
48
# define MAILBOX_INIT_DEV(ns) .gen.ops = &ns##_mailbox_ops,
49
# define MAILBOX_INIT(ns, index) static struct mailbox *ns##_mailbox_init(uint32_t index)
50
# define MAILBOX_DEINIT(ns, p) static int32_t ns##_mailbox_deinit(struct mailbox *p)
51
# define MAILBOX_SEND(ns, p, data, w) int32_t ns##_mailbox_send(struct mailbox *p, uint32_t data, TickType_t w)
52
# define MAILBOX_RECV(ns, p, data, w) int32_t ns##_mailbox_recv(struct mailbox *p, uint32_t *data, TickType_t w)
53
# define MAILBOX_SEND_ISR(ns, p, data) int32_t ns##_mailbox_sendISR(struct mailbox *p, uint32_t data)
54
# define MAILBOX_RECV_ISR(ns, p, data) int32_t ns##_mailbox_recvISR(struct mailbox *p, uint32_t *data)
55
#endif
56
#endif
hal.h
mailbox_genericInit
int32_t mailbox_genericInit(struct mailbox *mailbox)
HAL_DEFINE_GLOBAL_ARRAY
HAL_DEFINE_GLOBAL_ARRAY(mailbox)
driver
include
mailbox_prv.h
Generated on Tue Aug 17 2021 15:19:23 for Hardware Abstraction Layer for FreeRTOS by
1.8.20