/* * @Author: jiejie * @Github: https://github.com/jiejieTop * @Date: 2019-12-26 19:11:34 * @LastEditTime: 2020-06-17 16:25:18 * @Description: the code belongs to jiejie, please keep the author information and source code according to the license. */ #include "salof_defconfig.h" #ifdef SALOF_USING_LOG void *salof_alloc(unsigned int size) { return rt_malloc(size); } void salof_free(void *mem) { rt_free(mem); } salof_tcb salof_task_create(const char *name, void (*task_entry)(void *param), void * const param, unsigned int stack_size, unsigned int priority, unsigned int tick) { salof_tcb task; task = rt_thread_create((const char *)name, task_entry, param, stack_size, priority, tick); rt_thread_startup(task); return task; } salof_mutex salof_mutex_create(void) { return rt_mutex_create("salof_mutex", RT_IPC_FLAG_PRIO); } void salof_mutex_delete(salof_mutex mutex) { rt_mutex_delete(mutex); } int salof_mutex_pend(salof_mutex mutex, unsigned int timeout) { if(rt_mutex_take((salof_mutex)mutex, timeout) != RT_EOK) return -1; return 0; } int salof_mutex_post(salof_mutex mutex) { if(rt_mutex_release((salof_mutex)mutex) != RT_EOK) return -1; return 0; } salof_sem salof_sem_create(void) { return rt_sem_create("salof_sem", 0, RT_IPC_FLAG_PRIO); } void salof_sem_delete(salof_sem sem) { rt_sem_delete((salof_sem)sem); } int salof_sem_pend(salof_sem sem, unsigned int timeout) { if(rt_sem_take((salof_sem)sem, timeout) != RT_EOK) return -1; return 0; } int salof_sem_post(salof_sem sem) { if(rt_sem_release((salof_sem)sem) != RT_EOK) return -1; return 0; } unsigned int salof_get_tick(void) { return rt_tick_get(); } char *salof_get_task_name(void) { return NULL; } static rt_device_t new_device = RT_NULL; int send_buff(char *buf, int len) { /* find new console device */ if (new_device == RT_NULL) { new_device = rt_device_find(RT_CONSOLE_DEVICE_NAME); // rt_device_open(new_device, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_STREAM); } #ifdef RT_USING_DEVICE if (new_device == RT_NULL) { rt_hw_console_output(buf); } else { rt_uint16_t old_flag = new_device->open_flag; new_device->open_flag |= RT_DEVICE_FLAG_STREAM; rt_device_write(new_device, 0, buf, rt_strlen(buf)); new_device->open_flag = old_flag; } #else rt_hw_console_output(buf); #endif return len; } #endif