LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
ipc_msg.h
Go to the documentation of this file.
1
/*
2
* @brief LPC43XX Inter Processor Communication(IPC) functions
3
*
4
* @note
5
* Copyright(C) NXP Semiconductors, 2012
6
* All rights reserved.
7
*
8
* @par
9
* Software that is described herein is for illustrative purposes only
10
* which provides customers with programming information regarding the
11
* LPC products. This software is supplied "AS IS" without any warranties of
12
* any kind, and NXP Semiconductors and its licensor disclaim any and
13
* all warranties, express or implied, including all implied warranties of
14
* merchantability, fitness for a particular purpose and non-infringement of
15
* intellectual property rights. NXP Semiconductors assumes no responsibility
16
* or liability for the use of the software, conveys no license or rights under any
17
* patent, copyright, mask work right, or any other intellectual property rights in
18
* or to any products. NXP Semiconductors reserves the right to make changes
19
* in the software without notification. NXP Semiconductors also makes no
20
* representation or warranty that such application will be suitable for the
21
* specified use without further testing or modification.
22
*
23
* @par
24
* Permission to use, copy, modify, and distribute this software and its
25
* documentation is hereby granted, under NXP Semiconductors' and its
26
* licensor's relevant copyrights in the software, without fee, provided that it
27
* is used in conjunction with NXP Semiconductors microcontrollers. This
28
* copyright, permission, and disclaimer notice must appear in all copies of
29
* this code.
30
*/
31
32
#ifndef __IPC_MSG_H_
33
#define __IPC_MSG_H_
34
35
#ifdef __cplusplus
36
extern
"C"
{
37
#endif
38
51
/* Queue status macro */
56
#define QUEUE_DATA_COUNT(q) ((uint32_t) ((q)->head - (q)->tail))
57
61
#define QUEUE_IS_FULL(q) (QUEUE_DATA_COUNT(q) >= (q)->size)
62
66
#define QUEUE_IS_EMPTY(q) ((q)->head == (q)->tail)
67
74
struct
ipc_queue
{
75
int32_t
size
;
76
int32_t
count
;
77
volatile
uint32_t
head
;
78
volatile
uint32_t
tail
;
79
uint8_t *
data
;
80
uint32_t
reserved
[3];
81
};
82
83
/* IPC Function return values */
89
#define QUEUE_VALID 1
90
96
#define QUEUE_INSERT 0
97
104
#define QUEUE_FULL -1
105
112
#define QUEUE_EMPTY -2
113
119
#define QUEUE_ERROR -3
120
126
#define QUEUE_TIMEOUT -4
127
143
int
IPC_pushMsgTout
(
const
void
*data,
int
tout);
144
160
int
IPC_popMsgTout
(
void
*data,
int
tout);
161
172
static
INLINE
int
IPC_tryPushMsg
(
const
void
*data)
173
{
174
return
IPC_pushMsgTout
(data, 0);
175
}
176
186
static
INLINE
int
IPC_tryPopMsg
(
void
*data)
187
{
188
return
IPC_popMsgTout
(data, 0);
189
}
190
200
static
INLINE
int
IPC_pushMsg
(
const
void
*data)
201
{
202
return
IPC_pushMsgTout
(data, -1);
203
}
204
214
static
INLINE
int
IPC_popMsg
(
void
*data)
215
{
216
return
IPC_popMsgTout
(data, -1);
217
}
218
235
int
IPC_msgPending
(
int
queue_write);
236
244
void
IPC_msgNotify
(
void
);
245
257
void
IPC_initMsgQueue
(
void
*data,
int
msgSize,
int
maxNoOfMsg);
258
267
const
char
*
IPC_strerror
(
int
errnum);
268
273
#ifdef __cplusplus
274
}
275
#endif
276
277
#endif
/* ifndef __IPC_MSG_H_ */
applications
lpc18xx_43xx
examples
43xx_dualcore
common
ipc_msg.h
Generated on Fri Nov 16 2012 13:36:32 for LPCOpen Platform by
1.8.2