VSF Documented
rtos_al.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 __AIC_AIC8800_RTOS_AL_H__
19#define __AIC_AIC8800_RTOS_AL_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "vsf.h"
24
25#if VSF_KERNEL_CFG_SUPPORT_THREAD == ENABLED
26
27#include "dbg_assert.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33/*============================ MACROS ========================================*/
34
35#define RTOS_TASK_FCT(__NAME) void __NAME(void *param)
36
37#if 1
38// IMPORTANT: DO NOT think you can fix the priority,
39// the library provided by vendor use a hardcoded one like below
40// fix the priority in rtos_task_create
41# define RTOS_TASK_PRIORITY(__PRIO) (__PRIO)
42#else
43// __PRIO start from 1, and rtos_task MUST support priority promotion,
44// which is required by mutex if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY is enabled
45#if VSF_OS_CFG_ADD_EVTQ_TO_IDLE != ENABLED \
46 || VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY != ENABLED
47# define RTOS_TASK_PRIORITY(__PRIO) ((__PRIO) - 1)
48#else
49# define RTOS_TASK_PRIORITY(__PRIO) (__PRIO)
50#endif
51#endif
52
53#define pdTRUE true
54#define pdFALSE false
55
56/*============================ MACROFIED FUNCTIONS ===========================*/
57/*============================ TYPES =========================================*/
58
61
62typedef struct rtos_timer_t * TimerHandle_t;
63typedef void (*TimerCallbackFunction_t)(TimerHandle_t xTimer);
64
65typedef void (*rtos_task_fct)(void *);
66typedef struct vsf_rtos_thread_t * rtos_task_handle;
68
72
85 IP_TASK = 11,
100};
101
102/*============================ GLOBAL VARIABLES ==============================*/
103/*============================ PROTOTYPES ====================================*/
104
105extern int rtos_init(void);
106
107extern void * rtos_malloc(uint32_t size);
108extern void rtos_free(void *ptr);
109
110extern uint32_t rtos_now(bool isr);
111
112extern int rtos_task_create(
113 rtos_task_fct func,
114 const char * const name,
115 enum rtos_task_id task_id,
116 const uint16_t stack_depth,
117 void * const params,
118 rtos_prio prio,
119 rtos_task_handle * const task_handle);
120extern void rtos_task_suspend(int duration);
121
122extern uint32_t rtos_protect(void);
123extern void rtos_unprotect(uint32_t protect);
124
125extern int rtos_semaphore_create(rtos_semaphore *semaphore, int max_count, int init_count);
126extern void rtos_semaphore_delete(rtos_semaphore semaphore);
127extern int rtos_semaphore_wait(rtos_semaphore semaphore, int timeout);
128extern int rtos_semaphore_signal(rtos_semaphore semaphore, bool isr);
129extern int rtos_semaphore_get_count(rtos_semaphore semaphore);
130
133extern int rtos_mutex_lock(rtos_mutex mutex, int timeout);
135
136extern int rtos_queue_create(int elt_size, int nb_elt, rtos_queue *queue);
137extern void rtos_queue_delete(rtos_queue queue);
138extern int rtos_queue_write(rtos_queue queue, void *msg, int timeout, bool isr);
139extern int rtos_queue_read(rtos_queue queue, void *msg, int timeout, bool isr);
140extern bool rtos_queue_is_empty(rtos_queue queue);
141
143 const char * const pcTimerName,
144 const TickType_t xTimerPeriodInTicks,
145 const UBaseType_t uxAutoReload,
146 void * const pvTimerID,
147 TimerCallbackFunction_t pxCallbackFunction);
148extern int rtos_timer_delete(TimerHandle_t xTimer, TickType_t xTicksToWait);
149extern int rtos_timer_start(TimerHandle_t xTimer, TickType_t xTicksToWait, bool isr);
150extern int rtos_timer_restart(TimerHandle_t xTimer, TickType_t xTicksToWait, bool isr);
151extern int rtos_timer_stop(TimerHandle_t xTimer, TickType_t xTicksToWait);
152extern void * rtos_timer_get_pvTimerID(TimerHandle_t xTimer);
153
154#ifdef __cplusplus
155}
156#endif
157
158#endif // VSF_KERNEL_CFG_SUPPORT_THREAD
159#endif
160/* EOF */
Definition vsf_eda.h:892
Definition vsf_eda.h:864
__le16 timeout
Definition ieee80211.h:94
__le16 params
Definition ieee80211.h:108
__le16 duration
Definition ieee80211.h:1
vsf_rtos_queue_t
Definition rtos_al.c:112
struct vsf_rtos_thread_t * rtos_task_handle
Definition rtos_al.h:66
struct rtos_timer_t * TimerHandle_t
Definition rtos_al.h:62
rtos_task_id
Definition rtos_al.h:73
@ MDNS_TASK
Definition rtos_al.h:96
@ CONSOLE_TASK
Definition rtos_al.h:76
@ TEST_TASK
Definition rtos_al.h:77
@ SUPPLICANT_TASK
Definition rtos_al.h:84
@ IP_TASK
Definition rtos_al.h:85
@ BT_TASK
Definition rtos_al.h:78
@ TCPUDP_FIRST_TASK
Definition rtos_al.h:92
@ WIFI_TASK
Definition rtos_al.h:82
@ MAX_TASK
Definition rtos_al.h:98
@ APPLICATION_TASK
Definition rtos_al.h:86
@ PING_SEND_TASK
Definition rtos_al.h:88
@ TG_SEND_TASK
Definition rtos_al.h:87
@ ASIO_TASK
Definition rtos_al.h:80
@ RTP_TASK
Definition rtos_al.h:94
@ UNDEF_TASK
Definition rtos_al.h:99
@ RTCP_TASK
Definition rtos_al.h:97
@ SMARTCONF_TASK
Definition rtos_al.h:90
@ IDLE_TASK
Definition rtos_al.h:74
@ USBH_TASK
Definition rtos_al.h:95
@ AUDIO_TASK
Definition rtos_al.h:81
@ TCPUDP_LAST_TASK
Definition rtos_al.h:93
@ IPC_CNTRL_TASK
Definition rtos_al.h:91
@ TMR_DAEMON_TASK
Definition rtos_al.h:75
@ INTERSYS_TASK
Definition rtos_al.h:79
@ IPERF_TASK
Definition rtos_al.h:89
@ CONTROL_TASK
Definition rtos_al.h:83
int rtos_timer_restart(TimerHandle_t xTimer, TickType_t xTicksToWait, bool isr)
Definition rtos_al.c:193
int rtos_semaphore_create(rtos_semaphore *semaphore, int max_count, int init_count)
Definition rtos_al.c:448
void * rtos_malloc(uint32_t size)
Definition rtos_al.c:131
vsf_mutex_t * rtos_mutex
Definition rtos_al.h:70
int rtos_timer_stop(TimerHandle_t xTimer, TickType_t xTicksToWait)
Definition rtos_al.c:200
void rtos_semaphore_delete(rtos_semaphore semaphore)
Definition rtos_al.c:459
void * rtos_timer_get_pvTimerID(TimerHandle_t xTimer)
Definition rtos_al.c:208
void(* TimerCallbackFunction_t)(TimerHandle_t xTimer)
Definition rtos_al.h:63
void rtos_queue_delete(rtos_queue queue)
Definition rtos_al.c:561
int rtos_queue_create(int elt_size, int nb_elt, rtos_queue *queue)
Definition rtos_al.c:537
uint32_t rtos_now(bool isr)
Definition rtos_al.c:142
int rtos_queue_write(rtos_queue queue, void *msg, int timeout, bool isr)
Definition rtos_al.c:573
bool rtos_queue_is_empty(rtos_queue queue)
Definition rtos_al.c:651
int rtos_mutex_lock(rtos_mutex mutex, int timeout)
Definition rtos_al.c:503
uint32_t rtos_protect(void)
Definition rtos_al.c:320
void(* rtos_task_fct)(void *)
Definition rtos_al.h:65
void rtos_mutex_delete(rtos_mutex mutex)
Definition rtos_al.c:498
TimerHandle_t rtos_timer_create(const char *const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void *const pvTimerID, TimerCallbackFunction_t pxCallbackFunction)
Definition rtos_al.c:153
vsf_prio_t rtos_prio
Definition rtos_al.h:67
int rtos_init(void)
Definition rtos_al.c:681
void rtos_free(void *ptr)
Definition rtos_al.c:136
int rtos_queue_read(rtos_queue queue, void *msg, int timeout, bool isr)
Definition rtos_al.c:606
uint32_t TickType_t
Definition rtos_al.h:59
int rtos_timer_delete(TimerHandle_t xTimer, TickType_t xTicksToWait)
Definition rtos_al.c:173
int rtos_semaphore_get_count(rtos_semaphore semaphore)
Definition rtos_al.c:464
uint32_t UBaseType_t
Definition rtos_al.h:60
int rtos_semaphore_signal(rtos_semaphore semaphore, bool isr)
Definition rtos_al.c:480
void rtos_unprotect(uint32_t protect)
Definition rtos_al.c:325
int rtos_task_create(rtos_task_fct func, const char *const name, enum rtos_task_id task_id, const uint16_t stack_depth, void *const params, rtos_prio prio, rtos_task_handle *const task_handle)
Definition rtos_al.c:224
int rtos_timer_start(TimerHandle_t xTimer, TickType_t xTicksToWait, bool isr)
Definition rtos_al.c:181
struct vsf_rtos_queue_t * rtos_queue
Definition rtos_al.h:71
int rtos_semaphore_wait(rtos_semaphore semaphore, int timeout)
Definition rtos_al.c:473
vsf_sem_t * rtos_semaphore
Definition rtos_al.h:69
int rtos_mutex_unlock(rtos_mutex mutex)
Definition rtos_al.c:510
void rtos_task_suspend(int duration)
Definition rtos_al.c:312
int rtos_mutex_create(rtos_mutex *mutex)
Definition rtos_al.c:487
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
Definition mutex.h:10
Definition rtos_al.c:114
vsf_adc_isr_t isr
Definition adc.h:83
vsf_prio_t
Definition vsf_kernel_common.h:37
uint32_t size
Definition vsf_memfs.h:50