VSF Documented
vsf_stream_base.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_SERVICE_STREAM_BASE_H__
19#define __VSF_SERVICE_STREAM_BASE_H__
20
21/*============================ INCLUDES ======================================*/
23
24#include "./pbuf/vsf_pbuf.h"
26
27#if VSF_USE_STREAM == ENABLED
28#include "./interface.h"
29#include "../pool/vsf_pool.h"
31
36#define __PLOOC_CLASS_USE_STRICT_TEMPLATE__
37
38#if defined(__VSF_STREAM_BASE_CLASS_IMPLEMENT)
39# define __PLOOC_CLASS_IMPLEMENT__
40# undef __VSF_STREAM_BASE_CLASS_IMPLEMENT
41#elif defined(__VSF_STREAM_BASE_CLASS_INHERIT__)
42# define __PLOOC_CLASS_INHERIT__
43# undef __VSF_STREAM_BASE_CLASS_INHERIT__
44#endif
45
46#include "utilities/ooc_class.h"
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52/*============================ MACROS ========================================*/
53
54#ifndef GENERAL_PBUF_POOL_BLOCK_SIZE
55# define GENERAL_PBUF_POOL_BLOCK_SIZE 64
56#endif
57
58/*============================ MACROFIED FUNCTIONS ===========================*/
59/*============================ TYPES =========================================*/
60declare_pbuf_pool(general_pbuf_pool_t)
62
63/*----------------------------------------------------------------------------*
64 * STREAM SOURCE *
65 *----------------------------------------------------------------------------*/
66declare_class(vsf_stream_src_t);
67
68typedef struct vsf_stream_src_cfg_t {
71#if VSF_STREAM_CFG_SUPPORT_RESOURCE_LIMITATION == ENABLED
74#endif
76
77def_class(vsf_stream_src_t,,
78 protected_member(
79 implement(vsf_stream_src_cfg_t);
80/*
81 vsf_stream_tx_t *ptTX;
82 req_pbuf_evt_t tRequestPBUFEvent;
83 uint8_t chpbufCountUpLimit;
84 uint8_t chpbufPoolReserve;
85*/
86 )
87)
88end_def_class(vsf_stream_src_t)
89
90def_interface(i_stream_src_t)
91 vsf_err_t (*Init) ( vsf_stream_src_t *obj_ptr,
93 vsf_stream_tx_t * (*GetTX)( vsf_stream_src_t *obj_ptr);
94
95 struct {
96 vsf_pbuf_t * (*New) ( vsf_stream_src_t *obj_ptr,
99 vsf_err_t (*Send) ( vsf_stream_src_t *obj_ptr,vsf_pbuf_t *ptOldBlock);
101
102end_def_interface(i_stream_src_t)
103
104/*----------------------------------------------------------------------------*
105 * STREAM USER *
106 *----------------------------------------------------------------------------*/
107declare_class(vsf_stream_usr_t);
108
109def_class(vsf_stream_usr_t,,
110 protected_member(
111 vsf_stream_rx_t *ptRX;
112 )
113)
114end_def_class(vsf_stream_usr_t)
115
116typedef struct vsf_stream_usr_cfg_t {
117 vsf_stream_rx_t *ptRX;
119
120def_interface(i_stream_usr_t)
121 vsf_err_t (*Init) ( vsf_stream_usr_t *obj_ptr,
123#if VSF_STREAM_CFG_SUPPORT_OPEN_CLOSE == ENABLED
124 void (*Open)( vsf_stream_usr_t *obj_ptr);
125 void (*Close)( vsf_stream_usr_t *obj_ptr);
126#endif
127 struct {
128 vsf_pbuf_t *(*Fetch)( vsf_stream_usr_t *obj_ptr);
129 }Block;
130
131end_def_interface(i_stream_usr_t)
132
133/*============================ GLOBAL VARIABLES ==============================*/
134#if VSF_STREAM_CFG_GENERAL_PBUF_POOL == ENABLED
135extern vsf_pool(general_pbuf_pool_t) g_tGeneralPBUFPool;
136#endif
137
138extern const i_stream_src_t VSF_STREAM_SRC;
139extern const i_stream_usr_t VSF_STREAM_USR;
140/*============================ PROTOTYPES ====================================*/
141
142/*----------------------------------------------------------------------------*
143 * STREAM SOURCE *
144 *----------------------------------------------------------------------------*/
145extern
146vsf_err_t vsf_stream_src_init( vsf_stream_src_t *obj_ptr,
148
149extern
150vsf_pbuf_t *vsf_stream_src_new_pbuf (vsf_stream_src_t *obj_ptr,
153
154extern
155vsf_err_t vsf_stream_src_send_pbuf (vsf_stream_src_t *obj_ptr,
156 vsf_pbuf_t *ptOldBlock);
157
158extern
159vsf_stream_tx_t *vsf_stream_src_get_tx(vsf_stream_src_t *obj_ptr);
160
161#if VSF_STREAM_CFG_SUPPORT_RESOURCE_LIMITATION == ENABLED
162extern
163vsf_err_t vsf_stream_src_set_limitation( vsf_stream_src_t *obj_ptr,
164 uint_fast16_t hwpbufCountUpLimit,
165 uint_fast16_t hwpbufPoolReserve);
166#endif
167
168/*----------------------------------------------------------------------------*
169 * STREAM USER *
170 *----------------------------------------------------------------------------*/
171
172extern
173vsf_err_t vsf_stream_usr_init( vsf_stream_usr_t *obj_ptr,
175
176extern
177vsf_pbuf_t *vsf_stream_usr_fetch_pbuf ( vsf_stream_usr_t *obj_ptr);
178
179extern
180void vsf_stream_usr_open ( vsf_stream_usr_t *obj_ptr);
181
182extern
183void vsf_stream_usr_close ( vsf_stream_usr_t *obj_ptr);
184
185#ifdef __cplusplus
186}
187#endif
188
189/*============================ INCLUDES ======================================*/
190#include "./vsf_stream_writer.h"
191#include "./vsf_stream_reader.h"
192#endif
193#endif
194/* EOF */
vsf_err_t
Definition __type.h:42
vsf_err_t(* Init)(vsf_adc_cfg_t *pCfg)
Definition adc_interface.h:38
struct vsf_stream_tx_t vsf_stream_tx_t
Definition interface.h:34
unsigned short uint16_t
Definition stdint.h:7
int int_fast32_t
Definition stdint.h:26
unsigned short uint_fast16_t
Definition stdint.h:25
Definition vsf_pbuf.h:83
Definition interface.h:108
Definition vsf_stream_base.h:68
vsf_stream_tx_t * ptTX
Definition vsf_stream_base.h:69
uint16_t hwpbufCountUpLimit
Definition vsf_stream_base.h:72
req_pbuf_evt_t tRequestPBUFEvent
Definition vsf_stream_base.h:70
uint16_t hwpbufPoolReserve
Definition vsf_stream_base.h:73
int_fast32_t int_fast32_t nBestSize
Definition vsf_pbuf.h:79
int_fast32_t nNoLessThan
Definition vsf_pbuf.h:78
#define declare_pbuf_pool(__NAME)
Definition vsf_pbuf_pool.h:130
#define def_pbuf_pool(__NAME, __SIZE,...)
Definition vsf_pbuf_pool.h:127
#define vsf_pool(__name)
Definition vsf_pool.h:258
struct @776 Block
vsf_stream_tx_t * vsf_stream_src_get_tx(vsf_stream_src_t *obj_ptr)
void vsf_stream_usr_close(vsf_stream_usr_t *obj_ptr)
Definition vsf_stream_base.c:288
const i_stream_src_t VSF_STREAM_SRC
void vsf_stream_usr_open(vsf_stream_usr_t *obj_ptr)
Definition vsf_stream_base.c:274
vsf_err_t(* Send)(vsf_stream_src_t *obj_ptr, vsf_pbuf_t *ptOldBlock)
Definition vsf_stream_base.h:99
vsf_err_t vsf_stream_usr_init(vsf_stream_usr_t *obj_ptr, const vsf_stream_usr_cfg_t *cfg_ptr)
Definition vsf_stream_base.c:223
end_def_interface(i_stream_src_t) declare_class(vsf_stream_usr_t)
#define GENERAL_PBUF_POOL_BLOCK_SIZE
Definition vsf_stream_base.h:55
GENERAL_PBUF_POOL_BLOCK_SIZE declare_class(vsf_stream_src_t)
vsf_err_t vsf_stream_src_send_pbuf(vsf_stream_src_t *obj_ptr, vsf_pbuf_t *ptOldBlock)
Definition vsf_stream_base.c:196
vsf_err_t vsf_stream_src_init(vsf_stream_src_t *obj_ptr, const vsf_stream_src_cfg_t *cfg_ptr)
Definition vsf_stream_base.c:85
vsf_pbuf_t * vsf_stream_usr_fetch_pbuf(vsf_stream_usr_t *obj_ptr)
Definition vsf_stream_base.c:255
def_interface(i_stream_usr_t) vsf_err_t(*Init)(vsf_stream_usr_t *obj_ptr
const vsf_stream_src_cfg_t * cfg_ptr
Definition vsf_stream_base.h:92
void(* Close)(vsf_stream_usr_t *obj_ptr)
Definition vsf_stream_base.h:125
const i_stream_usr_t VSF_STREAM_USR
Definition vsf_stream_base.c:55
void(* Open)(vsf_stream_usr_t *obj_ptr)
Definition vsf_stream_base.h:124
vsf_err_t vsf_stream_src_set_limitation(vsf_stream_src_t *obj_ptr, uint_fast16_t hwpbufCountUpLimit, uint_fast16_t hwpbufPoolReserve)
Definition vsf_stream_base.c:183
vsf_stream_usr_cfg_t
Definition vsf_stream_base.h:118
vsf_pbuf_t * vsf_stream_src_new_pbuf(vsf_stream_src_t *obj_ptr, int_fast32_t nNoLessThan, int_fast32_t nBestSize)
Definition vsf_stream_base.c:135
def_class(vsf_stream_src_t,, public:vsf_stream_src_cfg_t ;) end_def_class(vsf_stream_src_t) def_interface(i_stream_src_t) vsf_err_t(*Init)(vsf_stream_src_t *obj_ptr