C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
 
Loading...
Searching...
No Matches
com.h
1#pragma once
2
3#include <stdint.h>
4#include <stdbool.h>
5#include <cmrx/interface.h>
105#define COM_NOTIFICATION(name, argname) \
106static int __ ## name ## _handler(SELF, uint32_t argname);\
107\
108static VTABLE struct ComNotificationVMT name ## _vmt = {\
109 &__ ## name ## _handler\
110};\
111\
112static struct ComNotification name = {\
113 & name ## _vmt,\
114 0xFF\
115};\
116\
117static int __ ## name ## _handler(SELF, uint32_t argname)
118
120
121struct ComNotification;
122
127 int (*readable_notify)(SELF, uint32_t id);
128};
129
134
135struct ComSource;
136
143 int (*read)(SELF, uint8_t * data, unsigned max_len);
144 bool (*ready)(SELF);
145 void (*set_notify)(SELF, struct ComNotification * listener, uint32_t signal);
146};
147
155struct ComSource {
156 const struct ComSourceVMT * vtable;
157
158};
159
160// Sink - write end of simplex channel
161
162struct ComSink;
163
170 int (*write)(SELF, const uint8_t * data, unsigned length);
171 bool (*free)(SELF);
172};
173
181struct ComSink {
182 const struct ComSinkVMT * vtable;
183};
184
185// Channel - read / write end of duplex channel
186
187struct ComChannel;
188
196 int (*read)(SELF, uint8_t * data, unsigned max_len);
197 bool (*ready)(SELF);
198 void (*set_notify)(SELF, struct ComNotification * listener, uint32_t signal);
199 int (*write)(SELF, const uint8_t * data, unsigned length);
200 bool (*free)(SELF);
201};
202
213 const struct ComChannelVMT * vtable;
214};
215
216int foo(int bar);
217
__SYSCALL int CMRX_API() signal(int signo, void(*sighandler)(uint32_t))
Alias for signal_handler.
uint8_t Thread_t
Data type used for thread IDs.
Definition defines.h:72
int foo(int bar)
Methods implemented by the interface of class ComChannel.
Definition com.h:195
void(* set_notify)(SELF, struct ComNotification *listener, uint32_t signal)
Definition com.h:198
bool(* ready)(SELF)
Definition com.h:197
int(* write)(SELF, const uint8_t *data, unsigned length)
Definition com.h:199
int(* read)(SELF, uint8_t *data, unsigned max_len)
Definition com.h:196
bool(* free)(SELF)
Definition com.h:200
Channel - bidirectional communication channel.
Definition com.h:212
const struct ComChannelVMT * vtable
Definition com.h:213
Interface of notification callback.
Definition com.h:125
int(* readable_notify)(SELF, uint32_t id)
Method for notifying external listener of read availability.
Definition com.h:127
Definition com.h:130
Thread_t thread_id
Definition com.h:132
const struct ComNotificationVMT * vtable
Definition com.h:131
Methods implemented by the interface of class ComSink.
Definition com.h:169
int(* write)(SELF, const uint8_t *data, unsigned length)
Definition com.h:170
bool(* free)(SELF)
Definition com.h:171
Sink - write end of simplex channel.
Definition com.h:181
const struct ComSinkVMT * vtable
Definition com.h:182
Methods implemented by the interface of class ComSource.
Definition com.h:142
void(* set_notify)(SELF, struct ComNotification *listener, uint32_t signal)
Definition com.h:145
bool(* ready)(SELF)
Definition com.h:144
int(* read)(SELF, uint8_t *data, unsigned max_len)
Definition com.h:143
Source - read end of simplex channel.
Definition com.h:155
const struct ComSourceVMT * vtable
Definition com.h:156