1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 
5 #ifndef __UVOICE_AOS_H__
6 #define __UVOICE_AOS_H__
7 
8 #include <fcntl.h>
9 #include "aos/kv.h"
10 #include "aos/vfs.h"
11 #include <aos/kernel.h>
12 
13 typedef aos_dir_t os_dir_t;
14 typedef aos_dirent_t os_dirent_t;
15 typedef int os_file_t;
16 
17 typedef aos_queue_t os_message_queue_t;
18 typedef aos_mutex_t os_mutex_t;
19 typedef aos_sem_t os_sem_t;
20 typedef aos_task_t os_task_t;
21 typedef aos_timer_t os_timer_t;
22 
23 #define OS_SEEK_SET SEEK_SET
24 #define OS_SEEK_CUR SEEK_CUR
25 #define OS_SEEK_END SEEK_END
26 
27 #define OS_F_OK F_OK
28 #define OS_X_OK X_OK
29 #define OS_W_OK W_OK
30 #define OS_R_OK R_OK
31 
32 #define OS_FILE_OPEN_FAIL(stream) (stream <= 0)
33 #define OS_FILE_OPENING(stream) (stream > 0)
34 #define OS_FILE_CLOSED (0)
35 
36 #define OS_WAIT_FOREVER AOS_WAIT_FOREVER
37 
38 #define os_container_of(ptr, type, member) ((type *)((char *)(ptr) - offsetof(type, member)))
39 
40 enum {
41     UVOICE_TASK_PRI_LOWEST = AOS_DEFAULT_APP_PRI + 5,
42     UVOICE_TASK_PRI_LOWER = AOS_DEFAULT_APP_PRI + 1,
43     UVOICE_TASK_PRI_NORMAL = AOS_DEFAULT_APP_PRI,
44     UVOICE_TASK_PRI_HIGHER = AOS_DEFAULT_APP_PRI - 1,
45     UVOICE_TASK_PRI_HIGHEST = AOS_DEFAULT_APP_PRI - 5,
46 };
47 
48 #ifdef UVOICE_BUILD_RELEASE
49 #define M_LOGD(fmt, ...)
50 #else
51 #define M_LOGD(fmt, ...) aos_printf("%s: " fmt, __func__, ##__VA_ARGS__)
52 #endif
53 #define M_LOGI(fmt, ...) aos_printf("%s: " fmt, __func__, ##__VA_ARGS__)
54 #define M_LOGW(fmt, ...) aos_printf("%s: " fmt, __func__, ##__VA_ARGS__)
55 #define M_LOGE(fmt, ...) aos_printf("%s: " fmt, __func__, ##__VA_ARGS__)
56 #define M_LOGR(fmt, ...) aos_printf(fmt, ##__VA_ARGS__)
57 
58 #define AFM_MAIN 0x1
59 #define AFM_EXTN 0x2
60 
snd_zalloc(size_t size,int flags)61 static inline void *snd_zalloc(size_t size, int flags)
62 {
63     void *mem = aos_malloc(size);
64     if (mem)
65         memset(mem, 0, size);
66     return mem;
67 }
68 
snd_free(void * mem)69 static inline void snd_free(void *mem)
70 {
71     aos_free(mem);
72 }
73 
snd_realloc(void * old,size_t newsize,int flags)74 static inline void *snd_realloc(void *old, size_t newsize, int flags)
75 {
76     void *mem = aos_realloc(old, newsize);
77     if (mem)
78         memset(mem, 0, newsize);
79     return mem;
80 }
81 
os_msleep(int msec)82 static inline void os_msleep(int msec)
83 {
84     aos_msleep(msec);
85 }
86 
os_usleep(int usec)87 static inline void os_usleep(int usec)
88 {
89     aos_msleep(usec / 1000);
90 }
91 
os_current_time(void)92 static inline long long os_current_time(void)
93 {
94     return aos_now_ms();
95 }
96 
os_get_mac_address(char * mac)97 static inline int os_get_mac_address(char *mac)
98 {
99     return 0;
100 }
101 
os_kv_get(const char * key,void * buffer,int * len)102 static inline int os_kv_get(const char *key, void *buffer, int *len)
103 {
104     return aos_kv_get(key, buffer, len);
105 }
106 
os_kv_set(const char * key,const void * buffer,int len,int sync)107 static inline int os_kv_set(const char *key, const void *buffer, int len, int sync)
108 {
109     return aos_kv_set(key, buffer, len, sync);
110 }
111 
os_mkdir(const char * path)112 static inline int os_mkdir(const char *path)
113 {
114     return aos_mkdir(path);
115 }
116 
os_opendir(const char * path)117 static inline os_dir_t *os_opendir(const char *path)
118 {
119     return aos_opendir(path);
120 }
121 
os_readdir(os_dir_t * dir)122 static inline os_dirent_t *os_readdir(os_dir_t *dir)
123 {
124     return aos_readdir(dir);
125 }
126 
os_closedir(os_dir_t * dir)127 static inline int os_closedir(os_dir_t *dir)
128 {
129     return aos_closedir(dir);
130 }
131 
os_fopen(const char * filename,const char * mode)132 static inline os_file_t os_fopen(const char *filename, const char *mode)
133 {
134     int flags = 0;
135     if (!strcmp(mode, "r") || !strcmp(mode, "rb")) {
136         flags = O_RDONLY;
137     } else if (!strcmp(mode, "w+") || !strcmp(mode, "wb+")) {
138         flags = O_RDWR | O_CREAT;
139     }
140     return aos_open(filename, flags);
141 }
142 
os_fread(void * buffer,size_t size,size_t count,os_file_t fp)143 static inline size_t os_fread(void *buffer, size_t size, size_t count, os_file_t fp)
144 {
145     return aos_read(fp, buffer, size * count);
146 }
147 
os_fwrite(const void * buffer,size_t size,size_t count,os_file_t fp)148 static inline size_t os_fwrite(const void *buffer, size_t size, size_t count, os_file_t fp)
149 {
150     return aos_write(fp, buffer, size * count);
151 }
152 
os_ftell(os_file_t fp)153 static inline long os_ftell(os_file_t fp)
154 {
155     return -1;
156 }
157 
os_fseek(os_file_t fp,long offset,int whence)158 static inline long os_fseek(os_file_t fp, long offset, int whence)
159 {
160     return aos_lseek(fp, offset, whence);
161 }
162 
os_fgets(char * buffer,int size,os_file_t fp)163 static inline char *os_fgets(char *buffer, int size, os_file_t fp)
164 {
165     return 0;
166 }
167 
os_fprintf(os_file_t fp,const char * format,...)168 static inline int os_fprintf(os_file_t fp, const char *format, ...)
169 {
170     return 0;
171 }
172 
os_feof(os_file_t fp)173 static inline int os_feof(os_file_t fp)
174 {
175     return 0;
176 }
177 
os_ferror(os_file_t fp)178 static inline int os_ferror(os_file_t fp)
179 {
180     return 0;
181 }
182 
os_fclose(os_file_t fp)183 static inline int os_fclose(os_file_t fp)
184 {
185     return aos_close(fp);
186 }
187 
os_access(const char * filename,int mode)188 static inline int os_access(const char *filename, int mode)
189 {
190     return aos_access(filename, mode);
191 }
192 
os_remove(const char * filename)193 static inline int os_remove(const char *filename)
194 {
195     return aos_remove(filename);
196 }
197 
os_message_queue_send(os_message_queue_t mq,void * msg,unsigned int size,unsigned int timeout)198 static inline int os_message_queue_send(os_message_queue_t mq, void *msg, unsigned int size, unsigned int timeout)
199 {
200     return aos_queue_send(&mq, msg, size);
201 }
202 
os_message_queue_recv(os_message_queue_t mq,void * msg,unsigned int size,unsigned int timeout)203 static inline int os_message_queue_recv(os_message_queue_t mq, void *msg, unsigned int size, unsigned int timeout)
204 {
205     return aos_queue_recv(&mq, timeout, msg, &size);
206 }
207 
os_message_queue_create(int count,int size)208 static inline os_message_queue_t os_message_queue_create(int count, int size)
209 {
210     aos_queue_t q = NULL;
211     aos_queue_new(&q, NULL, size * count, size);
212     return q;
213 }
214 
os_message_queue_free(os_message_queue_t mq)215 static inline int os_message_queue_free(os_message_queue_t mq)
216 {
217     aos_queue_free(&mq);
218     return 0;
219 }
220 
os_event_post(uint16_t type,uint16_t code,int value)221 static inline int os_event_post(uint16_t type, uint16_t code, int value)
222 {
223     return -1;
224 }
225 
os_event_register(uint16_t type,void * cb,void * data)226 static inline int os_event_register(uint16_t type, void *cb, void *data)
227 {
228     return -1;
229 }
230 
os_event_unregister(uint16_t type,void * cb,void * data)231 static inline int os_event_unregister(uint16_t type, void *cb, void *data)
232 {
233     return -1;
234 }
235 
os_mutex_lock(os_mutex_t mutex,unsigned int timeout)236 static inline int os_mutex_lock(os_mutex_t mutex, unsigned int timeout)
237 {
238     aos_mutex_lock(&mutex, timeout);
239     return 0;
240 }
241 
os_mutex_unlock(os_mutex_t mutex)242 static inline int os_mutex_unlock(os_mutex_t mutex)
243 {
244     aos_mutex_unlock(&mutex);
245     return 0;
246 }
247 
os_mutex_new(void)248 static inline os_mutex_t os_mutex_new(void)
249 {
250     os_mutex_t mutex;
251     aos_mutex_new(&mutex);
252     return mutex;
253 }
254 
os_mutex_free(os_mutex_t mutex)255 static inline void os_mutex_free(os_mutex_t mutex)
256 {
257     aos_mutex_free(&mutex);
258 }
259 
os_sem_is_valid(os_sem_t sem)260 static inline int os_sem_is_valid(os_sem_t sem)
261 {
262     return 1;
263 }
264 
os_sem_wait(os_sem_t sem,unsigned int timeout)265 static inline int os_sem_wait(os_sem_t sem, unsigned int timeout)
266 {
267     return aos_sem_wait(&sem, timeout);
268 }
269 
os_sem_signal(os_sem_t sem)270 static inline void os_sem_signal(os_sem_t sem)
271 {
272     aos_sem_signal(&sem);
273 }
274 
os_sem_signal_all(os_sem_t sem)275 static inline void os_sem_signal_all(os_sem_t sem)
276 {
277     aos_sem_signal_all(&sem);
278 }
279 
os_sem_new(int count)280 static inline os_sem_t os_sem_new(int count)
281 {
282     os_sem_t sem;
283     aos_sem_new(&sem, 0);
284     return sem;
285 }
286 
os_sem_free(os_sem_t sem)287 static inline void os_sem_free(os_sem_t sem)
288 {
289     aos_sem_free(&sem);
290 }
291 
os_task_create(os_task_t * task,const char * name,void (* fn)(void *),void * arg,int stack_size,int pri)292 static inline int os_task_create(os_task_t *task, const char *name, void (*fn)(void *), void *arg, int stack_size,
293                                  int pri)
294 {
295     return aos_task_new_ext(task, name, fn, arg, stack_size, pri);
296 }
297 
os_task_exit(os_task_t task)298 static inline int os_task_exit(os_task_t task)
299 {
300     aos_task_exit(0);
301     return 0;
302 }
303 
os_partition_name(int pt)304 static inline const char *os_partition_name(int pt)
305 {
306     return NULL;
307 }
308 
os_partition_size(int pt)309 static inline int os_partition_size(int pt)
310 {
311     return -1;
312 }
313 
os_partition_read(int pt,uint32_t * offset,uint8_t * buffer,uint32_t len)314 static inline int os_partition_read(int pt, uint32_t *offset, uint8_t *buffer, uint32_t len)
315 {
316     return -1;
317 }
318 
os_partition_write(int pt,uint32_t * offset,const uint8_t * buffer,uint32_t len)319 static inline int os_partition_write(int pt, uint32_t *offset, const uint8_t *buffer, uint32_t len)
320 {
321     return -1;
322 }
323 
os_partition_erase(int pt,uint32_t offset,uint32_t len)324 static inline int os_partition_erase(int pt, uint32_t offset, uint32_t len)
325 {
326     return -1;
327 }
328 
329 #endif /* __UVOICE_AOS_H__ */
330