LPCOpen Platform
v1.03
LPCOpen Platform for NXP LPC Microcontrollers
Main Page
Modules
Data Structures
Files
Related Pages
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)->count)
62
66
#define QUEUE_IS_EMPTY(q) ((q)->head == (q)->tail)
67
71
#define QUEUE_IS_VALID(q) ((q)->valid == QUEUE_MAGIC_VALID)
72
78
struct
ipc_queue
{
79
int32_t
size
;
80
int32_t
count
;
81
volatile
uint32_t
head
;
82
volatile
uint32_t
tail
;
83
uint8_t *
data
;
84
uint32_t
valid
;
85
uint32_t
reserved
[2];
86
};
87
88
/* IPC Function return values */
94
#define QUEUE_VALID 1
95
101
#define QUEUE_INSERT 0
102
109
#define QUEUE_FULL -1
110
117
#define QUEUE_EMPTY -2
118
124
#define QUEUE_ERROR -3
125
131
#define QUEUE_TIMEOUT -4
132
137
#define QUEUE_MAGIC_VALID 0xCAB51053
138
154
int
IPC_pushMsgTout
(
const
void
*data,
int
tout);
155
171
int
IPC_popMsgTout
(
void
*data,
int
tout);
172
183
static
INLINE
int
IPC_tryPushMsg
(
const
void
*data)
184
{
185
return
IPC_pushMsgTout
(data, 0);
186
}
187
197
static
INLINE
int
IPC_tryPopMsg
(
void
*data)
198
{
199
return
IPC_popMsgTout
(data, 0);
200
}
201
211
static
INLINE
int
IPC_pushMsg
(
const
void
*data)
212
{
213
return
IPC_pushMsgTout
(data, -1);
214
}
215
225
static
INLINE
int
IPC_popMsg
(
void
*data)
226
{
227
return
IPC_popMsgTout
(data, -1);
228
}
229
247
int
IPC_msgPending
(
int
queue_write);
248
256
void
IPC_msgNotify
(
void
);
257
269
void
IPC_initMsgQueue
(
void
*data,
int
msgSize,
int
maxNoOfMsg);
270
279
const
char
*
IPC_strerror
(
int
errnum);
280
285
#ifdef __cplusplus
286
}
287
#endif
288
289
#endif
/* ifndef __IPC_MSG_H_ */
applications
lpc18xx_43xx
examples
dualcore_43xx
common
ipc_msg.h
Generated on Fri May 10 2013 10:42:02 for LPCOpen Platform by
1.8.2