AKOS  v1.0.0
Documentation
Loading...
Searching...
No Matches
message.h
Go to the documentation of this file.
1/****************************************************************************/
12
13#ifndef MESSAGE_H
14#define MESSAGE_H
15
16#ifdef __cplusplus
17extern "C"
18{
19#endif
20
21#include "config.h"
22
23#include <stdint.h>
24#include <stdbool.h>
25
27 typedef struct msg msg_t;
29 typedef struct msg_queue msg_queue_t;
31 typedef struct msg_pool msg_pool_t;
32
37 typedef enum
38 {
41 } msg_type_t;
42
47 struct msg
48 {
49 msg_t *next;
50 uint8_t size;
51 int32_t sig;
52 uint8_t *content_ptr;
54 uint8_t src_thread_id;
55 uint8_t des_thread_id;
56 };
57
62 struct msg_queue
63 {
64 msg_t *head_ptr;
65 msg_t *tail_ptr;
66 uint8_t size_max;
67 uint8_t size_curr;
68 };
69
73 void akos_message_init(void);
74
79 void akos_message_free(msg_t *p_msg);
80
86 void akos_message_queue_init(msg_queue_t *p_msg_q, uint8_t size);
87
95 void akos_message_queue_put_dynamic(msg_queue_t *p_msg_q, int32_t sig, void *p_content, uint8_t size);
96
102 void akos_message_queue_put_pure(msg_queue_t *p_msg_q, int32_t sig);
103
109 msg_t *akos_message_queue_get(msg_queue_t *p_msg_q);
110
117 void *akos_message_get_dynamic_data(msg_t *p_msg, uint8_t *p_msg_size);
118
124 msg_t *akos_message_queue_get_pure(msg_queue_t *p_msg_q);
125
131 int32_t akos_message_get_pure_data(msg_t *p_msg);
132
133#ifdef __cplusplus
134}
135#endif
136#endif /* MESSAGE_H */
Build-time configuration macros for AK-mOS.
void * akos_message_get_dynamic_data(msg_t *p_msg, uint8_t *p_msg_size)
Get payload data from dynamic message.
Definition message.c:253
struct msg_pool msg_pool_t
Internal message-pool type.
Definition message.h:31
msg_t * akos_message_queue_get(msg_queue_t *p_msg_q)
Dequeue next message.
Definition message.c:218
msg_type_t
Message payload model.
Definition message.h:38
@ MSG_TYPE_PURE
Definition message.h:39
@ MSG_TYPE_DYNAMIC
Definition message.h:40
msg_t * akos_message_queue_get_pure(msg_queue_t *p_msg_q)
Dequeue next pure message.
Definition message.c:265
void akos_message_init(void)
Initialize global message pool.
Definition message.c:53
void akos_message_free(msg_t *p_msg)
Return message to message pool.
Definition message.c:62
int32_t akos_message_get_pure_data(msg_t *p_msg)
Get signal field from pure message.
Definition message.c:299
void akos_message_queue_put_dynamic(msg_queue_t *p_msg_q, int32_t sig, void *p_content, uint8_t size)
Enqueue dynamic message with payload copy.
Definition message.c:98
void akos_message_queue_init(msg_queue_t *p_msg_q, uint8_t size)
Initialize message queue.
Definition message.c:82
void akos_message_queue_put_pure(msg_queue_t *p_msg_q, int32_t sig)
Enqueue pure signal message.
Definition message.c:165
FIFO queue metadata for thread messaging.
Definition message.h:63
uint8_t size_max
Definition message.h:66
uint8_t size_curr
Definition message.h:67
msg_t * head_ptr
Definition message.h:64
msg_t * tail_ptr
Definition message.h:65
Message object stored in queues.
Definition message.h:48
msg_t * next
Definition message.h:49
uint8_t * content_ptr
Definition message.h:52
int32_t sig
Definition message.h:51
uint8_t src_thread_id
Definition message.h:54
msg_type_t type
Definition message.h:53
uint8_t size
Definition message.h:50
uint8_t des_thread_id
Definition message.h:55