[TOC]
k_err_t tos_knl_init(void);
Описание функции
Инициализация ядра.
Параметры
Отсутствуют.
Возвращаемое значение
K_ERR_NONE — инициализация ядра выполнена успешно.
Не K_ERR_NONE — инициализация ядра не выполнена.
k_err_t tos_knl_start(void);
Описание функции
Запуск ядра.
Параметры
Отсутствуют.
Возвращаемое значение
K_ERR_NONE — запуск ядра выполнен успешно.
Не K_ERR_NONE — запуск ядра не выполнен.
int tos_knl_is_running(void);
Описание функции
Проверка, выполняется ли ядро.
Параметры
Отсутствуют.
Возвращаемое значение
0 — ядро не выполняется.
Не 0 — ядро выполняется.
void tos_knl_irq_enter(void);
Описание функции
Вызов этой функции должен быть сделан перед началом обработки прерываний.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствуют.
void tos_knl_irq_leave(void);
Описание функции
Вызов этой функции должен быть сделан перед завершением обработки прерываний.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствуют.
k_err_t tos_knl_sched_lock(void);
Описание функции
Закрытие планировщика ядра.
Параметры
Отсутствуют.
Возвращаемое значение
K_ERR_NONE — закрытие планировщика ядра выполнено успешно. K_ERR_KNL_NOT_RUNNING — ядро не выполняется.
K_ERR_LOCK_NESTING_OVERFLOW — переполнение стека блокировок.
k_err_t tos_knl_sched_unlock(void);
Описание функции
Разблокировка планировщика ядра.
Параметры
Отсутствуют.
Возвращаемое значение
K_ERR_NONE — разблокировка планировщика ядра выполнена успешно.
K_ERR_KNL_NOT_RUNNING — ядро не выполняется.
K_ERR_SCHED_NOT_LOCKED — планировщик ядра не заблокирован.
k_err_t tos_task_create(k_task_t *task,
char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
k_stack_t *stk_base,
size_t stk_size,
k_timeslice_t timeslice);
Описание функции
Создание задачи.- Параметры | ВХОД/ВЫХОД | Параметр | Описание | | ---------- | :--------- | ------------------------------------------------------------ | | [in] | task | Описание структуры задачи | | [in] | name | Имя задачи | | [in] | entry | Входная функция задачи | | [in] | arg | Аргументы входной функции задачи | | [in] | prio | Приоритет задачи | | [in] | stk_base | Начальный адрес пространства стека задачи | | [in] | stk_size | Размер пространства стека задачи | | [in] | timeslice | Размер сегмента времени в стратегии циклического планирования, 0 указывает на использование значения по умолчанию системы |
Возвращаемое значение K_ERR_NONE — задача успешно создана.
K_ERR_TASK_STK_SIZE_INVALID — неправильный размер стека задачи.
K_ERR_TASK_PRIO_INVALID — неправильный приоритет задачи.
k_err_t tos_task_create_dyn(k_task_t **task,
char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
size_t stk_size,
k_timeslice_t timeslice);
Описание функции
Динамическое создание задачи, где дескриптор задачи и стек задачи динамически выделяются системой.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[out] | task | Дескриптор структуры задачи |
[in] | name | Имя задачи |
[in] | entry | Входная функция задачи |
[in] | arg | Аргумент входной функции задачи |
[in] | prio | Приоритет задачи |
[in] | stk_size | Размер стека задачи |
[in] | timeslice | Размер времени для стратегии циклического расписания, 0 указывает на использование значения по умолчанию системы |
Возвращаемое значение
K_ERR_NONE — задача успешно создана.
K_ERR_TASK_STK_SIZE_INVALID — неправильный размер стека задачи.
K_ERR_TASK_PRIO_INVALID — неправильный приоритет задачи.
K_ERR_TASK_OUT_OF_MEMORY — недостаточно памяти в куче системы.
k_err_t tos_task_destroy(k_task_t *task)
Описание функции
Уничтожение задачи.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | task | Дескриптор структуры задачи |
K_ERR_NONE — задача успешно уничтожена.
K_ERR_TASK_DESTROY_IDLE — попытка уничтожения задачи idle (недопустимо).
k_err_t tos_task_destroy_dyn(k_task_t *task)
Описание функции
Уничтожение динамически созданного (tos_task_create_dyn) задачи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | task | Структура описания задачи |
Возвращаемое значение
K_ERR_NONE — успешное уничтожение задачи.
K_ERR_TASK_DESTROY_IDLE — попытка уничтожить задачу idle (недопустимо).
k_err_t tos_task_delay(k_tick_t delay);
Описание функции
Устанавливает задержку для текущей задачи, измеряемую в тиках системного таймера.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | delay | Время задержки задачи |
Возвращаемое значение
K_ERR_NONE — успешное установление задержки.
K_ERR_DELAY_ZERO — значение задержки равно нулю (недопустимо).
k_err_t tos_task_delay_abort(k_task_t *task);
Описание функции
Отменяет задержку для задачи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | task | Структура описания задачи |
Возвращаемое значение
K_ERR_NONE — успешная отмена задержки.
K_ERR_TASK_NOT_DELAY — задача не находится в состоянии задержки. K_ERR_TASK_SUSPENDED Задача была приостановлена (приостановлена).
k_err_t tos_task_suspend(k_task_t *task);
Описание функции
Приостанавливает задачу (отнимает у задачи возможность выполнения).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | task | Структура описания задачи |
Возвращаемое значение
TOS_ERR_NONE Успешное приостановление задачи.
K_ERR_TASK_SUSPEND_IDLE Попытка приостановить задачу idle (недопустимо).
k_err_t tos_task_resume(k_task_t *task);
Описание функции
Восстанавливает задачу для выполнения.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | task | Структура описания задачи |
Возвращаемое значение
TOS_ERR_NONE Успешное восстановление задачи.
K_ERR_TASK_RESUME_SELF Попытка восстановить текущую задачу (недопустимо).
k_err_t tos_task_prio_change(k_task_t *task, k_prio_t prio_new);
Функциональное описание
Изменение приоритета задачи.
Пояснение параметров
ВХОД/ВЫХОД | Название параметра | Описание |
---|---|---|
[in] | task | Описание структуры задачи |
[in] | prio_new | Новый приоритет |
Возвращаемое значение
K_ERR_NONE Задача успешно обновлена.
K_ERR_TASK_PRIO_INVALID Недопустимый приоритет.### tos_task_yield
void tos_task_yield(void);
Функциональное описание
Текущая задача добровольно уступает процессор.
Пояснение параметров
Нет
Возвращаемое значение
Нет
k_err_t tos_task_stack_draught_depth(k_task_t *task, int *depth);
Функциональное описание
Получение максимальной глубины стека задачи.
Пояснение параметров
ВХОД/ВЫХОД | Название параметра | Описание |
---|---|---|
[in] | task | Структура задачи |
[out] | depth | Глубина стека задачи |
Возвращаемое значение
K_ERR_NONE Статус стека задачи нормален.
K_ERR_TASK_STK_OVERFLOW Стек задачи переполнен.
k_task_t *tos_task_curr_task_get(void);
Функциональное описание
Получение дескриптора текущей задачи.
Пояснение параметров
Нет
Возвращаемое значение
K_NULL Нет текущей задачи (ядра еще не запущено).
Нечто отличное от K_NULL Дескриптор задачи.
void tos_task_walkthru(k_task_walker walker);
Функциональное описание
Перебор всех созданных задач (не включая удаленные) и вызов пользовательского обратного вызова для каждой задачи.
Пояснение параметров
ВХОД/ВЫХОД | Название параметра | Описание |
---|---|---|
[in] | walker | Обратный вызов для перебора задач |
Нет
Нечто отличное от K_NULL Дескриптор задачи.
k_err_t tos_mmheap_pool_add(void *pool_start, size_t pool_size);
Функциональное описание
Добавление пула памяти в кучу.
Пояснение параметров
ВХОД/ВЫХОД | Название параметра | Описание |
---|---|---|
[in] | pool_start | Начальный адрес пула памяти |
[in] | pool_size | Размер пула памяти |
Возвращаемое значение
K_ERR_NONE добавление прошло успешно.
K_ERR_MMHEAP_INVALID_POOL_ADDR неправильный адрес начала пула памяти.
K_ERR_MMHEAP_INVALID_POOL_SIZE неправильный размер пула памяти.
k_err_t tos_mmheap_pool_rmv(void *pool_start);
Описание функции
Удаляет пул памяти из кучи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | pool_start | Адрес начала пула памяти для удаления |
Возвращаемое значение
Нет
void *tos_mmheap_alloc(size_t size);
Описание функции
Выделяет блок памяти из кучи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | size | Размер блока памяти для выделения |
Возвращаемое значение
Адрес начала выделенного блока памяти (возвращается K_NULL, если выделение не удалось).
void *tos_mmheap_aligned_alloc(size_t size, size_t align);
- **Описание функции**
Выделяет блок памяти из кучи, начальный адрес которого выровнен по параметру align.
- **Параметры**
| **Вход/Выход** | **Параметр** | **Описание** |
| -------------- | ------------ | -------------- |
| [in] | size | Размер блока памяти для выделения |
| [in] | align | Параметр выравнивания |
- **Возвращаемое значение**
Адрес начала выделенного блока памяти (возвращается K_NULL, если выделение не удалось).
### tos_mmheap_realloc
```c
void *tos_mmheap_realloc(void *ptr, size_t size);
Описание функции
Перераспределяет блок памяти из кучи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ptr | Адрес начала исходного блока памяти |
[in] | size | Размер блока памяти для перераспределения |
Возвращаемое значение
Адрес начала перераспределенного блока памяти (возвращается K_NULL, если перераспределение не удалось).
void tos_mmheap_free(void *ptr);
Описание функции
Освобождает блок памяти, выделенный из кучи.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ptr | Адрес начала блока памяти для освобождения |
Возвращаемое значение
Нет.
k_err_t tos_mmheap_pool_check(void *pool_start, k_mmheap_info_t *info);
Описание функции
Проверяет состояние пула памяти, начиная с адреса pool_start, и заполняет структуру k_mmheap_info_t информацией о пуле. Получает информацию о состоянии пулла памяти в куче.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | pool_start | Начальный адрес пула памяти в куче |
[out] | info | Информация о состоянии пула (использованное и свободное пространство) |
Возвращаемое значение
K_ERR_NONE Функция завершилась успешно.
K_ERR_OBJ_PTR_NULL pool_start или info — пустой указатель.
k_err_t tos_mmheap_check(k_mmheap_info_t *info);
Описание функции
Получает общую информацию о состоянии кучи (включая все пулы).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[out] | info | Общая информация о состоянии кучи (использованное и свободное пространство) |
Возвращаемое значение
K_ERR_NONE Функция завершилась успешно.
K_ERR_OBJ_PTR_NULL info — пустой указатель.
k_err_t tos_mmblk_pool_create(k_mmblk_pool_t *mbp, void *pool_start, size_t blk_num, size_t blk_size);
Описание функции
Создает блочный пул памяти.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mbp | Указатель на блочный пул памяти |
[in] | pool_start | Начальный адрес пула памяти |
[in] | blk_num | Количество блоков памяти |
[in] | blk_size | Размер одного блока памяти |
K_ERR_NONE — успешное создание блочного пула памяти.
K_ERR_MMBLK_INVALID_POOL_ADDR — недопустимый адрес пула памяти.
K_ERR_MMBLK_INVALID_BLK_SIZE — недопустимый размер блока памяти.
k_err_t tos_mmblk_alloc(k_mmblk_pool_t *mbp, void **blk);
Описание функции
Выделяет блок памяти из пула памяти.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mbp | Указатель на блочный пул памяти |
[out] | blk | Начальный адрес выделенного блока памяти |
Возвращаемое значение
K_ERR_NONE — блоковая память успешно выделена, blk указывает на начало выделенного блока памяти.
K_ERR_MMBLK_POOL_EMPTY — пул памяти пуст, blk равен K_NULL.
k_err_t tos_mmblk_free(k_mmblk_pool_t *mbp, void *blk);
Описание функции
Освобождает блок памяти.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mbp | Обработчик блочной памяти |
[in] | blk | Начальный адрес блока памяти для освобождения |
Возвращаемое значение
K_ERR_NONE — блок памяти успешно освобожден.
K_ERR_MMBLK_POOL_FULL — пул памяти заполнен.
k_err_t tos_mutex_create(k_mutex_t *mutex);
Описание функции
Создает мьютекс.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex | Обработчик мьютекса |
K_ERR_NONE — мьютекс успешно создан.
K_ERR_OBJ_PTR_NULL — mutex указывает на пустой указатель.
K_ERR_OBJ_INVALID — mutex указывает на недействительный мьютекс.
k_err_t tos_mutex_destroy(k_mutex_t *mutex);
Описание функции
Уничтожает мьютекс.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex | Обработчик мьютекса |
Возвращаемое значение
K_ERR_NONE — мьютекс успешно уничтожен.
K_ERR_OBJ_PTR_NULL — mutex указывает на пустой указатель.
K_ERR_OBJ_INVALID — mutex указывает на недействительный мьютекс.
k_err_t tos_mutex_pend(k_mutex_t *mutex);
Описание функции
Пытается получить мьютекс (постоянное ожидание).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex | Обработчик мьютекса |
Возвращаемое значение
K_ERR_NONE — мьютекс успешно получен.
K_ERR_MUTEX_NESTING_OVERFLOW — переполнение вложенного получения мьютекса.
K_ERR_MUTEX_NESTING — вложенное получение мьютекса.
K_ERR_PEND_SCHED_LOCKED — мьютекс удерживается другим процессом, а планирование системы заблокировано.
K_ERR_PEND_DESTROY — мьютекс был уничтожен (tos_mutex_destroy).
k_err_t tos_mutex_pend(k_mutex_t *mutex, k_tick_t timeout);
Описание функции
Попытка получить мьютекс (блокировка с тайм-аутом).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex | Обработчик мьютекса |
[in] | timeout | Параметр тайм-аута |
K_ERR_NONE Успешное получение мьютекса.
K_ERR_MUTEX_NESTING_OVERFLOW Превышение вложенного получения мьютекса владельцем.
K_ERR_MUTEX_NESTING Вложенное получение мьютекса владельцем.
K_ERR_PEND_NOWAIT Этот мьютекс удерживается другой задачей, параметр timeout равен TOS_TIME_NOWAIT (означает немедленный возврат при невозможности получить мьютекс).
K_ERR_PEND_SCHED_LOCKED Этот мьютекс удерживается другой задачей (получение неудачно), и система находится в состоянии блокировки планирования.
K_ERR_PEND_TIMEOUT Мьютекс не получен в течение времени, заданного параметром timeout.
K_ERR_PEND_DESTROY Текущая задача пытается получить мьютекс, который был уничтожен методом tos_mutex_destroy.
k_err_t tos_mutex_post(k_mutex_t *mutex);
Описание функции
Освобождение мьютекса.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex | Обработчик мьютекса |
Возвращаемое значение
K_ERR_NONE Успешное освобождение мьютекса.
K_ERR_MUTEX_NOT_OWNER Текущая задача не является владельцем этого мьютекса.
K_ERR_MUTEX_NESTING_OVERFLOW Превышение вложенного освобождения мьютекса владельцем.
K_ERR_MUTEX_NESTING Вложенное освобождение мьютекса владельцем.
k_err_t tos_sem_create(k_sem_t *sem, k_sem_cnt_t init_count);
Описание функции
Создание сигнального блока.- Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sem | Обработчик сигнального блока |
[in] | init_count | Начальное значение сигнального блока |
Возвращаемое значение
K_ERR_NONE Успешное создание сигнального блока.
K_ERR_OBJ_PTR_NULL Обработчик сигнального блока равен NULL.
k_err_t tos_sem_create_max(k_sem_t *sem, k_sem_cnt_t init_count, k_sem_cnt_t max_count);
Описание функции
Создание сигнального блока и задание максимального значения для сигнального блока.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sem | Обработчик сигнального блока |
[in] | init_count | Начальное значение сигнального блока |
[in] | max_count | Максимальное значение сигнального блока |
Возвращаемое значение
K_ERR_NONE Создание события выполнено успешно.
K_ERR_OBJ_PTR_NULL Указатель sem пуст.
k_err_t tos_sem_destroy(k_sem_t *sem);
Описание функции
Уничтожает семафор.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sem | Указатель на структуру семафора |
Возвращаемое значение
K_ERR_NONE Уничтожение семафора выполнено успешно.
K_ERR_OBJ_INVALID Указатель sem указывает на недействительный семафор.
K_ERR_OBJ_PTR_NULL Указатель sem пуст.
k_err_t tos_sem_pend(k_sem_t *sem, k_tick_t timeout);
- **Описание функции**
Пытается получить семафор.
- **Параметры**
| Вход/Выход | Параметр | Описание |
| ---------- | -------- | -----------------|
| [in] | sem | Указатель семафора |
| [in] | timeout | Параметр ожидания |
- **Возвращаемое значение**
K_ERR_NONE — получение семафора выполнено успешно.
K_ERR_PEND_NOWAIT — получение семафора не выполнено (ресурс недоступен), параметр timeout равен TOS_TIME_NOWAIT (немедленный возврат при неудаче).
K_ERR_PEND_SCHED_LOCKED — получение семафора не выполнено, система находится в состоянии блокировки.
K_ERR_PEND_TIMEOUT — время ожидания истекло, семафор не получен.
K_ERR_PEND_DESTROY — попытка получить семафор, который был уничтожен (tos_sem_destroy).
### tos_sem_post
```c
k_err_t tos_sem_post(k_sem_t *sem);
Описание функции
Освобождает семафор и пробуждает задачу из очереди ожидания. Если несколько задач ожидают этот семафор, пробуждается задача с наивысшим приоритетом.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sem | Указатель семафора |
Возвращаемое значение
K_ERR_NONE — освобождение семафора выполнено успешно.
K_ERR_SEM_OVERFLOW — значение семафора переполнено.
k_err_t tos_sem_post_all(k_sem_t *sem);
Описание функции
Освобождает семафор и пробуждает все задачи из очереди ожидания.
Параметры | Вход/Выход | Параметр | Описание | | ---------- | -------- | ---------------| | [in] | sem | Указатель семафора |
Возвращаемое значение
K_ERR_NONE - освобождение семафора выполнено успешно.
K_ERR_SEM_OVERFLOW - значение семафора переполнено.
k_err_t tos_event_create(k_event_t *event, k_event_flag_t init_flag);
Описание функции
Создает событие.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | event | Обработчик события |
[in] | init_flag | Инициализационный флаг события |
Возвращаемое значение
K_ERR_NONE - событие успешно создано.
K_ERR_OBJ_PTR_NULL - указатель на событие равен NULL.
k_err_t tos_event_destroy(k_event_t *event);
Описание функции
Уничтожает событие.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | event | Обработчик события |
Возвращаемое значение
K_ERR_NONE - событие успешно уничтожено.
K_ERR_OBJ_PTR_NULL - указатель на событие равен NULL.
K_ERR_OBJ_INVALID - указатель на событие указывает на недействительное событие.
k_err_t tos_event_pend(k_event_t *event, k_event_flag_t flag_expect, k_event_flag_t *flag_match, k_tick_t timeout, k_opt_t opt);
Описание функции
Пытается получить определенное событие.
Параметры | Вход/Выход | Имя параметра | Описание | | ---------- | ------------- | -------- | | [in] | event | Обработчик события | | [in] | flag_expect | Ожидаемое значение флага события | | [out] | flag_match | Фактическое значение флага события | | [in] | timeout | Параметр времени ожидания | | [in] | opt | Опции |- Примечания
Описание опций opt:
Пытается получить из события набор флагов, и этот набор флагов должен содержать хотя бы один из флагов, указанных в flag_expect. Если это условие считается успешным получением события, opt передает этот параметр.
Например, если переданный flag_expect равен 0x9 (0x8 | 0x1), и opt равен TOS_OPT_EVENT_PEND_ANY, то событие считается успешно полученным, если содержит флаги 0x8 или 0x1. То есть, событие должно содержать флаги (0x8 | X, где X — целое число, X ∈ (0, 0xFFFFFFFF]) или (0x1 | X, где X — целое число, X ∈ (0, 0xFFFFFFFF]).
Пытается получить из события набор флагов, и этот набор флагов должен содержать все флаги, указанные в flag_expect. Если это условие считается успешным получением события, opt передает этот параметр.
Например, если переданный flag_expect равен 0x9 (0x8 | 0x1), и opt равен TOS_OPT_EVENT_PEND_ALL, то событие считается успешно полученным, если содержит флаги 0x9. То есть, событие должно содержать флаги (0x9 | X, где X — целое число, X ∈ (0, 0xFFFFFFFF]).
Если вы хотите, чтобы после чтения события все флаги события были сброшены, передайте этот параметр opt.
Например, если исходное событие содержит флаги 0x9, после передачи параметра TOS_OPT_EVENT_PEND_CLR и успешного получения флагов события, флаги события будут сброшены до 0x0. Если вы хотите передать несколько опций за один раз, вы можете использовать логическое "или" для соединения нескольких параметров, например, если вы хотите использовать семантику TOS_OPT_EVENT_PEND_ANY и TOS_OPT_EVENT_PEND_CLR одновременно, вы можете передать (TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_CLR).
Важно отметить, что одновременная передача TOS_OPT_EVENT_PEND_ANY и TOS_OPT_EVENT_PEND_ALL недопустима.
Возвращаемое значение
K_ERR_NONE Чтение определенного события выполнено успешно.
K_ERR_EVENT_PEND_OPT_INVALID Недопустимый параметр opt.
K_ERR_PEND_NOWAIT Не удалось получить ожидаемые флаги из события, и параметр timeout установлен в TOS_TIME_NOWAIT (что означает немедленный возврат при отсутствии ожидаемых флагов).
K_ERR_PEND_SCHED_LOCKED Не удалось получить ожидаемые флаги из события, и система находится в состоянии блокировки планировщика.
K_ERR_PEND_TIMEOUT В течение заданного времени не удалось получить ожидаемые флаги из события.
K_ERR_PEND_DESTROY Событие, из которого пытались получить флаги, было уничтожено (tos_event_destroy).
k_err_t tos_event_post(k_event_t *event, k_event_flag_t flag);
Описание функции
Размещение группы флагов в событии
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | event | Обработчик события |
[in] | flag | Флаги для размещения |
Внимание
При вызове этого интерфейса для размещения группы флагов, исходные флаги события будут перезаписаны. Например, если исходные флаги события равны 0x1, а флаги для размещения равны 0x8, после вызова этого интерфейса флаги события будут перезаписаны значением 0x8.
Возвращаемое значение
K_ERR_NONE Размещение флагов выполнено успешно.
K_ERR_OBJ_PTR_NULL Обработчик события является пустым указателем.
K_ERR_OBJ_INVALID Обработчик события не указывает на действительное событие.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | event | Обработчик события |
[in] | flag | Флаг для установки |
Возвращаемое значение
K_ERR_NONE Установка флага выполнена успешно.
K_ERR_OBJ_PTR_NULL event является пустым указателем.
K_ERR_OBJ_INVALID event указывает на недействительное событие.
k_err_t tos_completion_create(k_completion_t *completion);
Описание
Создает объект завершения операции.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Создание объекта завершения выполнено успешно.
K_ERR_OBJ_PTR_NULL Указатель на completion является пустым.
k_err_t tos_completion_destroy(k_completion_t *completion);
Описание
Уничтожает объект завершения операции.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Уничтожение объекта завершения выполнено успешно.
K_ERR_OBJ_PTR_NULL Указатель на completion является пустым.- Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Уничтожение объекта завершения выполнено успешно.
K_ERR_OBJ_PTR_NULL Указатель на completion является пустым.
K_ERR_OBJ_INVALID completion указывает на недействительный объект завершения.
k_err_t tos_completion_pend(k_completion_t *completion);
Описание
Ожидает завершения операции (бесконечное ожидание).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Операция завершена.
K_ERR_PEND_SCHED_LOCKED Операция не завершена, и система находится в состоянии блокировки.
K_ERR_PEND_DESTROY Попытка ожидания завершения операции, которая была удалена.
k_err_t tos_completion_pend_timed(k_completion_t *completion, k_tick_t timeout);
Описание
Попытка ожидания завершения операции (ограниченное по времени ожидание).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
[in] | timeout | Параметр времени ожидания |
Возвращаемое значение
K_ERR_NONE Операция завершена. K_ERR_PEND_NOWAIT Операция не завершена, и параметр timeout равен TOS_TIME_NOWAIT (означает, что функция должна немедленно вернуться, если операция не завершена). K_ERR_PEND_SCHED_LOCKED Операция завершения не выполнена, и система находится в состоянии заблокированного планировщика. K_ERR_PEND_DESTROY Попытка ожидания завершения, но завершение было удалено.
K_ERR_PEND_TIMEOUT Завершение не выполнено в течение заданного интервала времени.
k_err_t tos_completion_post(k_completion_t *completion);
Описание функции
Отпускает завершение (состояние завершения изменяется на завершенное) и пробуждает одну задачу из очереди ожидания. Если несколько задач ожидают данного завершения, пробуждается задача с наивысшим приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Успешное отпускание завершения.
k_err_t tos_completion_post_all(k_completion_t *completion);
Описание функции
Отпускает завершение (состояние завершения изменяется на завершенное) и пробуждает все задачи из очереди ожидания.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_ERR_NONE Успешное отпускание завершения.
k_err_t tos_completion_reset(k_completion_t *completion);
Описание функции
Сбрасывает завершение (изменяет состояние завершения на не завершенное).
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
K_ERR_NONE Успешное завершение сброса.
k_err_t tos_completion_is_done(k_completion_t *completion);
Описание функции
Проверяет, завершено ли данное завершение.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | completion | Обработчик завершения |
Возвращаемое значение
K_TRUE Завершение завершено.
K_FALSE Завершение не завершено.
k_err_t tos_countdownlatch_create(k_countdownlatch_t *countdownlatch, k_countdownlatch_cnt_t count);
Описание функции
Создает счетчик блокировки.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетчика блокировки |
[in] | count | Ожидаемое количество счетчиков |
Возвращаемое значение
K_ERR_NONE Создание счетного блокировочного замка выполнено успешно.
K_ERR_OBJ_PTR_NULL Указатель на countdownlatch равен NULL.
k_err_t tos_countdownlatch_destroy(k_countdownlatch_t *countdownlatch);
Описание функции
Уничтожает счетный блокировочный замок.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетного блокировочного замка |
Возвращаемое значение
K_ERR_NONE Уничтожение счетного блокировочного замка выполнено успешно. K_ERR_OBJ_PTR_NULL Указатель на countdownlatch равен NULL.
K_ERR_OBJ_INVALID Указатель на countdownlatch указывает на недействительный счетный блокировочный замок.
k_err_t tos_countdownlatch_pend(k_countdownlatch_t *countdownlatch);
Описание функции
Ожидает завершения счетного блокировочного замка (постоянное блокирование).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетного блокировочного замка |
Возвращаемое значение
K_ERR_NONE Счетный блокировочный замок завершен.
K_ERR_PEND_SCHED_LOCKED Счетный блокировочный замок не завершен, и блокировка планировщика системы установлена.
K_ERR_PEND_DESTROY Счетный блокировочный замок, на который было установлено ожидание, был удален.
k_err_t tos_countdownlatch_pend_timed(k_countdownlatch_t *countdownlatch, k_tick_t timeout);
Описание функции
Пытается дождаться завершения счетного блокировочного замка (временное блокирование).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетного блокировочного замка |
[in] | timeout | Параметр времени ожидания |
Возвращаемое значение
K_ERR_NONE Счетный блокировочный замок завершен.
K_ERR_PEND_NOWAIT Счетный блокировочный замок не завершен, и параметр timeout равен TOS_TIME_NOWAIT (означает, что функция должна немедленно вернуться, если счетный блокировочный замок не завершен). K_ERR_PEND_SCHED_LOCKED Счетный блокировочный замок не завершен, и блокировка планировщика системы установлена.
K_ERR_PEND_DESTROY Счетный блокировочный замок, на который было установлено ожидание, был удален.
K_ERR_PEND_TIMEOUT Счетный блокировочный замок не завершен в течение времени, заданного параметром timeout.
k_err_t tos_countdownlatch_post(k_countdownlatch_t *countdownlatch);
Описание функции
Уменьшает значение счетного блокировочного замка на единицу и пробуждает одну задачу из очереди ожидания. Если в очереди ожидания несколько задач, пробуждается задача с наивысшим приоритетом.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетного блокировщика |
Возвращаемое значение
K_ERR_NONE Счетный блокировщик успешно освобожден.
k_err_t tos_countdownlatch_reset(k_countdownlatch_t *countdownlatch, k_countdownlatch_cnt_t count);
Описание функции
Сбрасывает счетный блокировщик (устанавливает текущее значение счетного блокировщика на новое ожидаемое значение).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | countdownlatch | Обработчик счетного блокировщика |
[in] | count | Новое ожидаемое значение счетного блокировщика |
K_ERR_NONE Счетный блокировщик успешно сброшен.
k_err_t tos_msg_q_create(k_msg_q_t *msg_q, void *pool, size_t msg_cnt);
Описание функции
Создает очередь сообщений (сообщение представляет собой указатель). Очередь сообщений используется для передачи указателей между задачами. Буфер pool передается пользователем и представляет собой область памяти размером (msg_cnt * sizeof(void *)).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
[in] | pool | Буфер очереди сообщений |
[in] | msg_cnt | Максимальное количество сообщений в очереди |
Возвращаемое значение
K_ERR_NONE Очередь сообщений успешно создана.
K_ERR_OBJ_PTR_NULL msg_q указатель пуст.
k_err_t tos_msg_q_create_dyn(k_msg_q_t *msg_q, size_t msg_cnt);
Описание функции
Динамически создает очередь сообщений (сообщение представляет собой указатель). Очередь сообщений используется для передачи указателей между задачами. Внутренний буфер создается динамически.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
[in] | msg_cnt | Максимальное количество сообщений в очереди |
K_ERR_NONE Очередь сообщений успешно создана.
K_ERR_OBJ_PTR_NULL msg_q указатель пуст.
K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_msg_q_destroy(k_msg_q_t *msg_q);
Описание функции
Уничтожение очереди сообщений.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
Возвращаемое значение
K_ERR_NONE Успешное уничтожение очереди сообщений.
K_ERR_OBJ_PTR_NULL msg_q указатель пуст.
K_ERR_OBJ_INVALID msg_q указывает на нелегальную очередь сообщений.
k_err_t tos_msg_q_destroy_dyn(k_msg_q_t *msg_q);
Описание функции
Уничтожение динамически созданной (tos_msg_q_create_dyn) очереди сообщений.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
Возвращаемое значение
K_ERR_NONE Успешное уничтожение очереди сообщений.
K_ERR_OBJ_PTR_NULL msg_q указатель пуст.
K_ERR_OBJ_INVALID msg_q указывает на нелегальную очередь сообщений.
k_err_t tos_msg_q_flush(k_msg_q_t *msg_q);
Описание функции
Очистка очереди сообщений (удаление всех сообщений из очереди).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
Возвращаемое значение K_ERR_NONE Успешная очистка очереди сообщений.
K_ERR_OBJ_PTR_NULL msg_q указатель пуст.
K_ERR_OBJ_INVALID msg_q указывает на нелегальную очередь сообщений.
k_err_t tos_msg_q_pend(k_msg_q_t *msg_q, void **msg_ptr, k_tick_t timeout);
Описание функции
Попытка получения сообщения из очереди сообщений.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
[out] | msg_ptr | Адрес полученного сообщения |
[in] | timeout | Параметр ожидания |
Возвращаемое значение
K_ERR_NONE Успешное получение сообщения из очереди сообщений, msg_addr и msg_size — это адрес и длина полученного сообщения соответственно.
K_ERR_PEND_NOWAIT Не удалось получить сообщение из очереди сообщений, и параметр timeout равен TOS_TIME_NOWAIT (означает немедленный возврат при отсутствии сообщения).
K_ERR_PEND_SCHED_LOCKED Не удалось получить сообщение из очереди сообщений, и система находится в состоянии блокировки.
K_ERR_PEND_TIMEOUT Не удалось получить сообщение из очереди сообщений в течение времени, заданного параметром timeout.
K_ERR_PEND_DESTROY Попытка получения сообщения из очереди сообщений, которая была уничтожена (tos_msg_q_destroy).### tos_msg_q_post
k_err_t tos_msg_q_post(k_msg_q_t *msg_q, void *msg_ptr);
Описание функцииДобавляет сообщение в очередь сообщений и пробуждает одну задачу из ожидаемой очереди. Если несколько задач ожидают в этой очереди сообщений, пробуждается задача с наивысшим приоритетом.- Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
[in] | msg_ptr | Адрес сообщения |
Возвращаемое значение
K_ERR_NONE — добавление сообщения в очередь сообщений выполнено успешно.
K_ERR_RING_Q_FULL — очередь сообщений заполнена.
k_err_t tos_msg_q_post_all(k_msg_q_t *msg_q, void *msg_ptr);
Описание функции
Добавляет сообщение в очередь сообщений и пробуждает все задачи из ожидаемой очереди.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | msg_q | Обработчик очереди сообщений |
[in] | msg_ptr | Адрес сообщения |
Возвращаемое значение
K_ERR_NONE — добавление сообщения в очередь сообщений выполнено успешно.
K_ERR_RING_Q_FULL — очередь сообщений заполнена.
k_err_t tos_mail_q_create(k_mail_q_t *mail_q, void *pool, size_t mail_cnt, size_t mail_size);
Описание функции
Создает очередь почтовых сообщений (почтовое сообщение — это фиксированного размера блок памяти). Очередь почтовых сообщений используется для передачи информации между задачами, имеющей фиксированный размер. Пул памяти передается пользователем, пул представляет собой буфер памяти размером (mail_cnt * mail_size).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди почтовых сообщений |
[in] | pool | Пул памяти для хранения почтовых сообщений |
[in] | mail_cnt | Количество почтовых сообщений в пуле |
[in] | mail_size | Размер каждого почтового сообщения |
---------- | -------- | ---------------------- |
[in] | mail_q | Обработчик очереди почтовых сообщений |
[in] | pool | Пул очереди почтовых сообщений |
[in] | mail_cnt | Максимальное количество сообщений |
[in] | mail_size | Размер сообщения |
K_ERR_NONE — создание очереди почтовых сообщений выполнено успешно.
K_ERR_OBJ_PTR_NULL — указатель mail_q пуст.
k_err_t tos_mail_q_create_dyn(k_mail_q_t *mail_q, size_t mail_cnt, size_t mail_size);
Описание функции
Создает динамически очередь почтовых сообщений (почтовое сообщение — это фиксированного размера блок памяти). Очередь почтовых сообщений используется для передачи информации между задачами, имеющей фиксированный размер. Внутренний буфер памяти создается динамически.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
[in] | mail_cnt | Максимальное количество писем |
[in] | mail_size | Размер письма |
Возвращаемое значение
K_ERR_NONE — очередь электронной почты успешно создана.
K_ERR_OBJ_PTR_NULL — указатель mail_q пуст.
K_ERR_OUT_OF_MEMORY — недостаточно памяти в куче.
k_err_t tos_mail_q_destroy(k_mail_q_t *mail_q);
Описание
Уничтожает очередь электронной почты.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
Возвращаемое значение
K_ERR_NONE — очередь электронной почты успешно уничтожена.
K_ERR_OBJ_PTR_NULL — указатель mail_q пуст.
K_ERR_OBJ_INVALID — указатель mail_q указывает на недействительную очередь электронной почты.### tos_mail_q_destroy_dyn
k_err_t tos_mail_q_destroy_dyn(k_mail_q_t *mail_q);
Описание
Уничтожает динамически созданную очередь электронной почты (tos_mail_q_create_dyn).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
Возвращаемое значение
K_ERR_NONE Очередь электронной почты успешно уничтожена.
K_ERR_OBJ_PTR_NULL mail_q указатель пуст.
K_ERR_OBJ_INVALID mail_q указывает на недействительную очередь электронной почты.
k_err_t tos_mail_q_flush(k_mail_q_t *mail_q);
Описание
Очищает очередь электронной почты (удаляет все письма из очереди).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
Возвращаемое значение
K_ERR_NONE Очередь электронной почты успешно очищена.
K_ERR_OBJ_PTR_NULL mail_q указатель пуст.
K_ERR_OBJ_INVALID mail_q указывает на недействительную очередь электронной почты.
k_err_t tos_mail_q_pend(k_mail_q_t *mail_q, void *mail_buf, size_t *mail_size, k_tick_t timeout);
Описание
Пытается получить письмо из очереди электронной почты.
Параметры | Вход/Выход | Имя параметра | Описание | | ---------- | ------------- | -------- | | [in] | mail_q | Обработчик очереди электронной почты | | [out] | mail_buf | Адрес буфера для хранения письма | | [in] | mail_size | Размер полученного письма |
[in] | timeout | Параметр ожидания |
---|---|---|
- Возвращаемое значение K_ERR_NONE Успешное получение сообщения из очереди электронной почты, содержимое сообщения записано в mail_buf, msg_size содержит длину полученного сообщения. |
K_ERR_PEND_NOWAIT Не удалось получить сообщение из очереди электронной почты, параметр timeout равен TOS_TIME_NOWAIT (означает немедленный возврат при отсутствии сообщения).
K_ERR_PEND_SCHED_LOCKED Не удалось получить сообщение из очереди электронной почты, система находится в состоянии блокировки.
K_ERR_PEND_TIMEOUT Не удалось получить сообщение из очереди электронной почты в течение заданного времени.
K_ERR_PEND_DESTROY Очередь, ожидающая получение сообщения, была уничтожена (tos_mail_q_destroy).
k_err_t tos_mail_q_post(k_mail_q_t *mail_q, void *mail_buf, size_t mail_size);
Описание функции
Добавляет сообщение в очередь электронной почты и пробуждает одну из ожидающих задач. Если несколько задач ожидают в очереди электронной почты, пробуждается задача с наивысшим приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
[in] | mail_buf | Сообщение для добавления в очередь электронной почты |
[in] | mail_size | Размер сообщения |
Возвращаемое значение
K_ERR_NONE Успешное добавление сообщения в очередь электронной почты.
K_ERR_RING_Q_FULL Очередь электронной почты заполнена.### tos_mail_q_post_all
k_err_t tos_mail_q_post_all(k_mail_q_t *mail_q, void *mail_buf, size_t mail_size);
Описание функции
Добавляет сообщение в очередь электронной почты и пробуждает все ожидающие задачи.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | mail_q | Обработчик очереди электронной почты |
[in] | mail_buf | Сообщение для добавления в очередь электронной почты |
[in] | mail_size | Размер сообщения |
Возвращаемое значение
K_ERR_NONE — успешное добавление сообщения в очередь электронной почты.
K_ERR_RING_Q_FULL — очередь электронной почты заполнена.
k_err_t tos_prio_msg_q_create(k_prio_msg_q_t *prio_msg_q, void *pool, size_t msg_cnt);
Описание функции
Создает приоритетную очередь сообщений (где сообщение представляет собой указатель). Приоритетная очередь сообщений используется для передачи указателей между задачами. Отличие от обычной очереди сообщений заключается в том, что приоритетная очередь позволяет присваивать сообщениям приоритет, при этом сообщения с более высоким приоритетом (меньшим числовым значением) будут передаваться быстрее, чем сообщения с более низким приоритетом. Пул (pool) предоставляется пользователем и представляет собой буфер памяти размером (msg_cnt * sizeof(void *)).
Параметры | IN/OUT | Параметр | Описание | | ------ | -------- | ------------------------------ | | [in] | prio_msg_q | Обработчик очереди сообщений с приоритетом | | [in] | pool | Буферная пул очереди сообщений с приоритетом | | [in] | msg_cnt | Максимальное количество сообщений в очереди с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь сообщений с приоритетом создана успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_msg_q пуст.
k_err_t tos_prio_msg_q_create_dyn(k_prio_msg_q_t *prio_msg_q, size_t msg_cnt);
Описание
Создает динамически очередь сообщений с приоритетом (сообщения представляют собой указатели). Очередь сообщений с приоритетом используется для передачи указателей между задачами. Отличие от обычной очереди сообщений заключается в том, что сообщениям можно присваивать приоритет, и сообщения с более высоким приоритетом (меньшим числовым значением) будут передаваться в задачи, ожидающие их, быстрее. Внутренние буферы создаются динамически.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Обработчик очереди сообщений с приоритетом |
[in] | msg_cnt | Максимальное количество сообщений в очереди с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь сообщений с приоритетом создана успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_msg_q пуст. K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_prio_msg_q_destroy(k_prio_msg_q_t *prio_msg_q);
Описание
Уничтожает очередь сообщений с приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Обработчик очереди сообщений с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь сообщений с приоритетом уничтожена успешно.
K_ERR_OBJ_PTR_NULL Обработчик msg_q пуст.
K_ERR_OBJ_INVALID Обработчик prio_msg_q не указывает на действительную очередь сообщений с приоритетом.
k_err_t tos_prio_msg_q_destroy_dyn(k_prio_msg_q_t *prio_msg_q);
Описание
Уничтожает динамически созданную (tos_prio_msg_q_create_dyn) очередь сообщений с приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Обработчик очереди сообщений с приоритетом |
Возвращаемое значение
K_ERR_NONE Успешное удаление приоритетной очереди сообщений.
K_ERR_OBJ_PTR_NULL Указатель на prio_msg_q пуст.
K_ERR_OBJ_INVALID Обработчик prio_msg_q не указывает на легитимную приоритетную очередь сообщений.
k_err_t tos_prio_msg_q_flush(k_prio_msg_q_t *prio_msg_q);
Описание функции
Очистка приоритетной очереди сообщений (удаление всех сообщений из приоритетной очереди сообщений).
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Обработчик приоритетной очереди сообщений |
K_ERR_NONE Успешная очистка приоритетной очереди сообщений.
K_ERR_OBJ_PTR_NULL Указатель на prio_msg_q
пуст.
K_ERR_OBJ_INVALID prio_msg_q
указывает на нелегитимную приоритетную очередь сообщений.
k_err_t tos_prio_msg_q_pend(k_prio_msg_q_t *prio_msg_q, void **msg_ptr, k_tick_t timeout);
Описание функции
Попытка получения сообщения из приоритетной очереди сообщений.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q |
Обработчик приоритетной очереди сообщений |
[out] | msg_ptr |
Адрес полученного сообщения |
[in] | timeout |
Параметр ожидания |
Возвращаемое значение
K_ERR_NONE Успешное получение сообщения из приоритетной очереди сообщений, msg_addr
и msg_size
— это адрес и размер полученного сообщения соответственно.
K_ERR_PEND_NOWAIT Не удалось получить сообщение из приоритетной очереди сообщений, и параметр timeout
равен TOS_TIME_NOWAIT
(означает немедленный возврат, если сообщение не может быть получено).
K_ERR_PEND_SCHED_LOCKED Не удалось получить сообщение из приоритетной очереди сообщений, и система находится в состоянии блокировки.
K_ERR_PEND_TIMEOUT Не удалось получить сообщение из приоритетной очереди сообщений в течение времени, заданного параметром timeout
.
K_ERR_PEND_DESTROY Очередь сообщений, из которой пытались получить сообщение, была удалена (tos_prio_msg_q_destroy
).### tos_prio_msg_q_post
k_err_t tos_prio_msg_q_post(k_prio_msg_q_t *prio_msg_q, void *msg_ptr, k_prio_t prio);
Описание функции
Вставка сообщения в приоритетную очередь сообщений и пробуждение задачи из ожидания. Если несколько задач ожидают в этой приоритетной очереди сообщений, пробуждается задача с наивысшим приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Обработчик приоритетной очереди сообщений |
[in] | msg_ptr | Адрес сообщения |
[in] | prio | Приоритет сообщения |
Возвращаемое значение
K_ERR_NONE — сообщение успешно добавлено в приоритетную очередь сообщений.
K_ERR_RING_Q_FULL — приоритетная очередь сообщений заполнена.
k_err_t tos_prio_msg_q_post_all(k_prio_msg_q_t *prio_msg_q, void *msg_ptr, k_prio_t prio);
Описание функции
Добавляет сообщение в приоритетную очередь сообщений и пробуждает все задачи, ожидающие в очереди.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_msg_q | Приоритетная очередь сообщений |
[in] | msg_ptr | Адрес сообщения |
[in] | prio | Приоритет сообщения |
Возвращаемое значение
K_ERR_NONE — сообщение успешно добавлено в приоритетную очередь сообщений.
K_ERR_RING_Q_FULL — приоритетная очередь сообщений заполнена.
k_err_t tos_prio_mail_q_create(k_prio_mail_q_t *prio_mail_q, void *pool, size_t mail_cnt, size_t mail_size);
Описание функции
Создает приоритетную почтовую очередь (почтовое сообщение — это фиксированного размера блок памяти). Приоритетная почтовая очередь используется для передачи информации между задачами, где каждое сообщение имеет определенный размер. Отличие от обычной почтовой очереди заключается в том, что сообщения в приоритетной очереди имеют приоритет, и сообщения с более высоким приоритетом (меньшим числовым значением) передаются быстрее. Pool — это блок памяти размером (mail_cnt * mail_size), передаваемый пользователем.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_mail_q | Приоритетная почтовая очередь |
[in] | pool | Блок памяти для очереди |
[in] | mail_cnt | Максимальное количество сообщений |
[in] | mail_size | Размер сообщения |
Возвращаемое значение
K_ERR_NONE — приоритетная почтовая очередь создана успешно.
K_ERR_OBJ_PTR_NULL — указатель на приоритетную почтовую очередь пуст.
k_err_t tos_prio_mail_q_create_dyn(k_prio_mail_q_t *prio_mail_q, size_t mail_cnt, size_t mail_size);
Описание функции
Создает динамически выделенную приоритетную почтовую очередь (почтовое сообщение — это фиксированного размера блок памяти). Приоритетная почтовая очередь используется для передачи информации между задачами, где каждое сообщение имеет определенный размер. Отличие от обычной почтовой очереди заключается в том, что сообщения в приоритетной очереди имеют приоритет, и сообщения с более высоким приоритетом (меньшим числовым значением) передаются быстрее. Динамически создает приоритетную почтовую очередь (почтовое сообщение — это блок памяти фиксированного размера). Приоритетная почтовая очередь используется для передачи информации между задачами, где каждое сообщение имеет определённый размер. Внутренний блок памяти создается динамически. - Параметры | IN/OUT | Параметр | Описание | | ------ | ----------------- | ---------------------------------- | | [in] | prio_mail_q | Обработчик очереди электронной почты с приоритетом | | [in] | mail_cnt | Максимальное количество писем | | [in] | mail_size | Размер писем |
Возвращаемое значение
K_ERR_NONE Очередь электронной почты с приоритетом создана успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_mail_q пуст.
K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_prio_mail_q_destroy(k_prio_mail_q_t *prio_mail_q);
Описание
Уничтожает очередь электронной почты с приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_mail_q | Обработчик очереди электронной почты с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь электронной почты с приоритетом уничтожена успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_mail_q пуст.
K_ERR_OBJ_INVALID Обработчик prio_mail_q указывает на недействительную очередь электронной почты.
k_err_t tos_prio_mail_q_destroy_dyn(k_prio_mail_q_t *prio_mail_q);
Описание
Уничтожает динамически созданную (tos_mail_q_create_dyn) очередь электронной почты с приоритетом.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | prio_mail_q | Обработчик очереди электронной почты с приоритетом |
K_ERR_NONE Очередь электронной почты с приоритетом очищена успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_mail_q
пуст.
K_ERR_OBJ_INVALID Обработчик prio_mail_q
указывает на недействительную очередь электронной почты с приоритетом.
k_err_t tos_prio_mail_q_flush(k_prio_mail_q_t *prio_mail_q);
Описание
Очищает очередь электронной почты (удаляет все письма из очереди).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_mail_q |
Обработчик очереди электронной почты с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь электронной почты с приоритетом очищена успешно.
K_ERR_OBJ_PTR_NULL Обработчик prio_mail_q
пуст.
K_ERR_OBJ_INVALID Обработчик prio_mail_q
указывает на недействительную очередь электронной почты с приоритетом.
k_err_t tos_prio_mail_q_pend(k_prio_mail_q_t *prio_mail_q, void *mail_buf, size_t *mail_size, k_tick_t timeout);
Функциональное описание
Попытка извлечения письма из очереди электронной почты с приоритетом.
Пояснение параметров
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | prio_mail_q |
Обработчик очереди электронной почты с приоритетом |
[out] | mail_buf |
Адрес буфера для хранения содержимого письма |
[in] | mail_size |
Длина полученного письма |
[in] | timeout |
Параметр ожидания с таймаутом |
K_ERR_NONE Успешное извлечение письма из очереди электронной почты с приоритетом, содержимое письма записано в mail_buf
, msg_size
— длина полученного письма.
K_ERR_PEND_NOWAIT Не удалось извлечь письмо из очереди электронной почты с приоритетом, параметр timeout
имеет значение TOS_TIME_NOWAIT
(означает немедленный возврат при отсутствии писем).
K_ERR_PEND_SCHED_LOCKED Не удалось извлечь письмо из очереди электронной почты с приоритетом, система находится в состоянии блокировки.
K_ERR_PEND_TIMEOUT Не удалось извлечь письмо из очереди электронной почты с приоритетом в течение указанного времени.
K_ERR_PEND_DESTROY Очередь, из которой пытались извлечь письмо, была уничтожена.
k_err_t tos_prio_mail_q_post(k_prio_mail_q_t *prio_mail_q, void *mail_buf, size_t mail_size, k_prio_t prio);
Функциональное описание
Вставка письма в очередь электронной почты с приоритетом и пробуждение задачи, ожидающей в очереди.
Пояснение параметров
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | prio_mail_q | Обработчик очереди электронной почты с приоритетом |
[in] | mail_buf | Письмо для вставки в очередь электронной почты с приоритетом |
[in] | mail_size | Длина письма |
[in] | prio | Приоритет письма |
Возвращаемое значение
K_ERR_NONE Успешная вставка письма в очередь электронной почты с приоритетом. K_ERR_RING_Q_FULL Очередь с приоритетом заполнена.
k_err_t tos_prio_mail_q_post_all(k_prio_mail_q_t *prio_mail_q, void *mail_buf, size_t mail_size, k_prio_t prio);
Функциональное описание
Вставка письма в очередь с приоритетом и пробуждение всех задач, ожидающих в очереди.
Пояснение параметров | IN/OUT | Параметр | Описание | | ------ | ------------- | ------------------------------ | | [in] | prio_mail_q | Обработчик очереди с приоритетом | | [in] | mail_buf | Письмо для помещения в очередь с приоритетом | | [in] | mail_size | Размер письма | | [in] | prio | Приоритет письма |
Возвращаемое значение
K_ERR_NONE Успешное помещение письма в очередь с приоритетом.
K_ERR_RING_Q_FULL Очередь с приоритетом заполнена.
k_err_t tos_ring_q_create(k_ring_q_t *ring_q, void *pool, size_t item_cnt, size_t item_size);
Описание функции
Создает кольцевую очередь. Кольцевая очередь предоставляет механизм управления данными по принципу "первым пришел - первым ушел". Она может использоваться как базовый контейнер данных для верхних уровней структур данных или алгоритмов. Пул памяти pool передается пользователем и представляет собой буфер памяти размером (item_cnt * item_size).- Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевой очереди |
[in] | pool | Пул буфера кольцевой очереди |
[in] | item_cnt | Количество элементов в кольцевой очереди |
[in] | item_size | Размер элемента в кольцевой очереди |
Возвращаемое значение
K_ERR_NONE Успешное создание кольцевой очереди.
k_err_t tos_ring_q_create(k_ring_q_t *ring_q, size_t item_cnt, size_t item_size);
Описание функции
Создает динамически выделенную кольцевую очередь. Кольцевая очередь предоставляет механизм управления данными по принципу "первым пришел - первым ушел". Она может использоваться как базовый контейнер данных для верхних уровней структур данных или алгоритмов. Внутренний пул памяти pool выделяется динамически.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевой очереди |
[in] | item_cnt | Количество элементов в кольцевой очереди |
[in] | item_size | Размер элемента в кольцевой очереди |
Возвращаемое значение
K_ERR_NONE Успешное создание кольцевой очереди.
K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_ring_q_destroy(k_ring_q_t *ring_q);
Описание функции
Уничтожает кольцевую очередь.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевой очереди |
K_ERR_NONE Успешное удаление кольцевого буфера.
K_ERR_OBJ_INVALID ring_q не указывает на действительный кольцевой буфер.
k_err_t tos_ring_q_destroy_dyn(k_ring_q_t *ring_q);
Описание
Удаляет динамически созданный кольцевой буфер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
Возвращаемое значение
K_ERR_NONE Успешное удаление кольцевого буфера.
K_ERR_OBJ_INVALID ring_q не указывает на действительный кольцевой буфер.
k_err_t tos_ring_q_enqueue(k_ring_q_t *ring_q, void *item, size_t item_size);
Описание
Добавляет элемент в кольцевой буфер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
[in] | item | Адрес элемента для добавления |
[in] | item_size | Размер элемента для добавления |
Возвращаемое значение
K_ERR_NONE Успешное добавление элемента.
K_ERR_RING_Q_FULL Кольцевой буфер заполнен.
k_err_t tos_ring_q_dequeue(k_ring_q_t *ring_q, void *item, size_t *item_size);
Описание
Извлекает элемент из кольцевого буфера.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
[out] | item | Буфер для хранения извлеченного элемента |
[out] | item_size | Размер извлеченного элемента |
K_ERR_NONE — успешное извлечение элемента.
K_ERR_RING_Q_EMPTY — кольцевой буфер пуст.
k_err_t tos_ring_q_flush(k_ring_q_t *ring_q);
Описание
Очистка кольцевого буфера (сброс кольцевого буфера, удаление всех элементов).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
Возвращаемое значение
K_ERR_NONE — успешная очистка кольцевого буфера.
k_err_t tos_ring_q_is_empty(k_ring_q_t *ring_q);
Функциональное описание
Проверяет, пуст ли кольцевой буфер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
Возвращаемое значение
K_TRUE — кольцевой буфер пуст.
K_FALSE — кольцевой буфер не пуст.
k_err_t tos_ring_q_is_full(k_ring_q_t *ring_q);
Функциональное описание
Проверяет, заполнен ли кольцевой буфер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ring_q | Обработчик кольцевого буфера |
Возвращаемое значение
K_TRUE — кольцевой буфер заполнен.
K_FALSE — кольцевой буфер не заполнен.
k_err_t tos_chr_fifo_create(k_chr_fifo_t *chr_fifo, uint8_t *buffer, size_t size);
Функциональное описание
Создает поток символов FIFO. Внутренний контейнер данных для потока символов FIFO — это кольцевой буфер.- Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик потока символов FIFO |
[in] | buffer | Память для потока символов FIFO |
[in] | size | Размер памяти для потока символов FIFO |
Возвращаемое значение
K_ERR_NONE — создание FIFO успешно завершено.
K_ERR_OBJ_PTR_NULL — FIFO — это пустой указатель.
k_err_t tos_chr_fifo_create(k_chr_fifo_t *chr_fifo, size_t fifo_size);
Функциональное описание
Создает поток символов FIFO динамически (внутренняя память buffer динамически выделяется).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик потока символов FIFO |
[in] | size | Размер памяти для потока символов FIFO |
Возвращаемое значение
K_ERR_NONE — создание FIFO успешно завершено.
K_ERR_OBJ_PTR_NULL — chr_fifo — это пустой указатель.
K_ERR_OUT_OF_MEMORY — недостаточно памяти в куче.
k_err_t tos_chr_fifo_destroy(k_chr_fifo_t *chr_fifo);
Функциональное описание
Уничтожает поток символов FIFO.
Возвращаемое значение
K_ERR_NONE — уничтожение FIFO успешно завершено.
K_ERR_OBJ_PTR_NULL — chr_fifo — это пустой указатель.
K_ERR_OBJ_INVALID — chr_fifo указывает на нелегальную очередь FIFO.
k_err_t tos_chr_fifo_destroy_dyn(k_chr_fifo_t *chr_fifo);
```- **Описание функции**
Уничтожает динамически созданную (tos_chr_fifo_create_dyn) очередь FIFO для потока символов.
- **Параметры**
| Вход/Выход | Параметр | Описание |
| ---------- | -------- | -------------------------- |
| [in] | chr_fifo | Обработчик очереди FIFO для потока символов |
- **Возвращаемое значение**
K_ERR_NONE Уничтожение очереди успешно завершено.
K_ERR_OBJ_PTR_NULL chr_fifo является пустым указателем.
K_ERR_OBJ_INVALID chr_fifo указывает на нелегальную очередь FIFO.
### tos_chr_fifo_push
```c
k_err_t tos_chr_fifo_push(k_chr_fifo_t *chr_fifo, uint8_t data);
Описание функции
Добавляет символ в очередь FIFO для потока символов.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик очереди FIFO для потока символов |
[in] | data | Добавляемый символ |
Возвращаемое значение
K_ERR_NONE Добавление символа успешно завершено.
K_ERR_FIFO_FULL Очередь FIFO для потока символов заполнена.
k_err_t tos_chr_fifo_push_stream(k_chr_fifo_t *chr_fifo, uint8_t *stream, size_t size);
Описание функции
Добавляет поток символов в очередь FIFO для потока символов.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик очереди FIFO для потока символов |
Yöntem | [in] | stream |
[in] | size | Длина потока символов |
Реальная длина добавленного потока символов.
k_err_t tos_chr_fifo_pop(k_chr_fifo_t *chr_fifo, uint8_t *out);
Описание функции
Извлекает символ из очереди FIFO для потока символов.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик очереди FIFO для потока символов |
[out] | out | Извлеченный символ |
Возвращаемое значение
K_ERR_NONE — успешное извлечение символов.
K_ERR_FIFO_EMPTY — очередь FIFO символов пуста.
int tos_chr_fifo_pop_stream(k_chr_fifo_t *fifo, uint8_t *buffer, size_t size);
Описание функции
Извлекает поток символов из очереди FIFO символов.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | fifo | Обработчик очереди FIFO символов |
[out] | buffer | Извлеченный поток символов |
[in] | size | Размер потока символов |
Возвращаемое значение
Действительный размер извлеченного потока символов.
void tos_chr_fifo_flush(k_chr_fifo_t *chr_fifo);
Описание функции
Очищает очередь FIFO символов.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик очереди FIFO символов |
Возвращаемое значение
Нет
int tos_chr_fifo_is_empty(k_chr_fifo_t *chr_fifo);
```- **Описание функции**
Проверяет, пуста ли очередь FIFO символов.
- **Параметры**
| IN/OUT | Параметр | Описание |
| ------ | ---------- | -------------------------- |
| [in] | chr_fifo | Обработчик очереди FIFO символов |
- **Возвращаемое значение**
0, если очередь FIFO не пуста.
Ненулевое значение, если очередь FIFO пуста.
### tos_chr_fifo_is_full
```c
int tos_chr_fifo_is_full(k_chr_fifo_t *chr_fifo);
Описание функции
Проверяет, заполнена ли очередь FIFO символов.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | chr_fifo | Обработчик очереди FIFO символов |
Возвращаемое значение
0, если очередь FIFO не заполнена.
Ненулевое значение, если очередь FIFO заполнена.
k_err_t tos_bin_heap_create(k_bin_heap_t *bin_heap, void *pool, size_t item_cnt, size_t item_size, k_bin_heap_cmp cmp);
Описание функции
Создает двоичную кучу. Двоичная куча является базовой структурой данных для реализации очереди с приоритетами. Пул памяти pool
передается пользователем, размер памяти равен (item_cnt * item_size)
, cmp
— это функция сравнения двух элементов.- Параметры | ВХОД/ВЫХОД | Имя параметра | Описание |
| ---------- | ------------- | -------------------------------- |
| [in] | bin_heap | Обработчик биномиальной кучи |
| [in] | pool | Буферная куча биномиальной кучи |
| [in] | item_cnt | Количество элементов, управляемых биномиальной кучей |
| [in] | item_size | Размер элементов, управляемых биномиальной кучей |
| [in] | cmp | Интерфейс для сравнения двух элементов биномиальной кучи |- Возвращаемое значение
K_ERR_NONE Биномиальная куча создана успешно.
k_err_t tos_bin_heap_create_dyn(k_bin_heap_t *bin_heap, size_t item_cnt, size_t item_size, k_bin_heap_cmp cmp);
Описание функции
Создает биномиальную кучу динамически. Внутренняя буферная куча pool создается с использованием динамической памяти.
Параметры
ВХОД/ВЫХОД | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
[in] | item_cnt | Количество элементов, управляемых биномиальной кучей |
[in] | item_size | Размер элементов, управляемых биномиальной кучей |
[in] | cmp | Интерфейс для сравнения двух элементов биномиальной кучи |
Возвращаемое значение
K_ERR_NONE Биномиальная куча создана успешно.
K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_bin_heap_destroy(k_bin_heap_t *bin_heap);
Описание функции
Уничтожает биномиальную кучу.
Параметры
ВХОД/ВЫХОД | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
Возвращаемое значение
K_ERR_NONE Уничтожение биномиальной кучи выполнено успешно.
K_ERR_OBJ_INVALID bin_heap не указывает на валидную биномиальную кучу.
k_err_t tos_bin_heap_destroy_dyn(k_bin_heap_t *bin_heap);
```- **Описание функции**
Уничтожает динамически созданную биномиальную кучу.
- **Параметры**
| ВХОД/ВЫХОД | Имя параметра | Описание |
| ---------- | ------------- | -------------- |
| [in] | bin_heap | Обработчик биномиальной кучи |
- **Возвращаемое значение**
K_ERR_NONE — уничтожение биномиальной кучи выполнено успешно.
K_ERR_OBJ_INVALID — bin_heap не указывает на валидную биномиальную кучу.
### tos_bin_heap_push
```c
k_err_t tos_bin_heap_push(k_bin_heap_t *bin_heap, void *item, size_t item_size);
Описание функции
Добавляет элемент в биномиальную кучу.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
[in] | item | Адрес элемента, который будет добавлен в кучу |
[in] | item_size | Размер элемента, который будет добавлен в кучу |
Возвращаемое значение
K_ERR_NONE — элемент успешно добавлен в кучу.
K_ERR_BIN_HEAP_FULL — биномиальная куча заполнена.
k_err_t tos_bin_heap_pop(k_bin_heap_t *bin_heap, void *item, size_t *item_size);
Описание
Извлекает элемент из биномиальной кучи.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
[out] | item | Буфер для хранения извлеченного элемента |
[out] | item_size | Размер извлеченного элемента |
Возвращаемое значение K_ERR_NONE — элемент успешно извлечен из кучи.
K_ERR_BIN_HEAP_EMPTY — биномиальная куча пуста.
k_err_t tos_bin_heap_flush(k_bin_heap_t *bin_heap);
Описание
Очистка биномиальной кучи (сброс кучи, удаление всех элементов).
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
Возвращаемое значение
K_ERR_NONE — биномиальная куча успешно очищена.
int tos_bin_heap_is_empty(k_bin_heap_t *bin_heap);
Описание
Проверка, пуста ли биномиальная куча.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
Возвращаемое значение
K_TRUE — биномиальная куча пуста.
K_FALSE — биномиальная куча не пуста.
int tos_bin_heap_is_full(k_bin_heap_t *bin_heap);
Описание
Проверка, заполнена ли биномиальная куча.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | bin_heap | Обработчик биномиальной кучи |
Возвращаемое значение
K_TRUE — биномиальная куча заполнена.
K_FALSE — биномиальная куча не заполнена.
k_err_t tos_prio_q_create(k_prio_q_t *prio_q, void *mgr_array, void *pool, size_t item_cnt, size_t item_size);
```- **Описание** Создайте приоритетную очередь. Приоритеты предоставляют механизм управления данными на основе их приоритетов, так что каждый раз из очереди выходит элемент с наивысшим приоритетом. Это может использоваться как базовый контейнер данных для более сложных структур данных или алгоритмов. Буфер памяти pool передается пользователем и имеет размер (item_cnt * item_size). Буфер памяти mgr_array также передается пользователем и имеет размер TOS_PRIO_Q_MGR_ARRAY_SIZE(item_cnt).
- **Параметры** | Вход/Выход | Параметр | Описание |
| ---------- | --------- | ------------------------------ |
| [in] | prio_q | Обработчик очереди с приоритетом |
| [in] | mgr_array | Внутренний буфер управления очередью с приоритетом |
| [in] | pool | Буфер очереди с приоритетом |
| [in] | item_cnt | Количество элементов управления очередью с приоритетом |
| [in] | item_size | Размер элементов управления очередью с приоритетом |
- **Возвращаемое значение**
K_ERR_NONE Очередь с приоритетом создана успешно.
### tos_prio_q_create_dyn
```c
k_err_t tos_prio_q_create_dyn(k_prio_q_t *prio_q, size_t item_cnt, size_t item_size);
Описание
Создает динамически выделенную очередь с приоритетом. Приоритеты предоставляют механизм управления данными на основе приоритетов, при этом каждый раз из очереди выходит элемент с наивысшим приоритетом. Это может быть использовано как базовый контейнер данных для верхних уровней структур данных или алгоритмов. Внутренние буферы и буферы управления создаются динамически.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик очереди с приоритетом |
[in] | item_cnt | Количество элементов управления очередью с приоритетом |
[in] | item_size | Размер элементов управления очередью с приоритетом |
Возвращаемое значение K_ERR_NONE Очередь с приоритетом создана успешно.
K_ERR_OUT_OF_MEMORY Недостаточно памяти в куче.
k_err_t tos_prio_q_destroy(k_prio_q_t *prio_q);
Описание
Уничтожает очередь с приоритетом.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик очереди с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь с приоритетом уничтожена успешно.
K_ERR_OBJ_INVALID Объект prio_q не является валидной очередью с приоритетом.
k_err_t tos_prio_q_destroy_dyn(k_prio_q_t *prio_q);
Описание
Уничтожает динамически созданную очередь с приоритетом.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик очереди с приоритетом |
Возвращаемое значение
K_ERR_NONE Очередь с приоритетом уничтожена успешно.
K_ERR_OBJ_INVALID Объект prio_q не является валидной очередью с приоритетом.
k_err_t tos_prio_q_enqueue(k_prio_q_t *prio_q, void *item, size_t item_size, k_prio_t prio);
Описание функции
Добавляет элемент в приоритетную очередь.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик приоритетной очереди |
[in] | item | Адрес элемента для добавления |
[in] | item_size | Размер элемента для добавления |
[in] | prio | Приоритет добавляемого элемента |
K_ERR_NONE — элемент успешно добавлен.
K_ERR_PRIO_Q_FULL — приоритетная очередь заполнена.
k_err_t tos_prio_q_dequeue(k_prio_q_t *prio_q, void *item, size_t *item_size, k_prio_t *prio);
Описание функции
Извлекает элемент из приоритетной очереди.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик приоритетной очереди |
[out] | item | Буфер для хранения извлекаемого элемента |
[out] | item_size | Размер извлекаемого элемента |
[out] | prio | Приоритет извлекаемого элемента |
Возвращаемое значение
K_ERR_NONE — элемент успешно извлечен.
K_ERR_PRIO_Q_EMPTY — приоритетная очередь пуста.
k_err_t tos_prio_q_flush(k_prio_q_t *prio_q);
Описание функции
Очищает приоритетную очередь (сбрасывает очередь, удаляет все элементы).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик приоритетной очереди |
Возвращаемое значение
K_ERR_NONE — очистка приоритетной очереди выполнена успешно.
int tos_prio_q_is_empty(k_prio_q_t *prio_q);
Описание функции
Проверяет, пуста ли приоритетная очередь.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик приоритетной очереди |
Возвращаемое значение
K_TRUE — приоритетная очередь пуста. K_FALSE — приоритетная очередь не пуста.
int tos_prio_q_is_full(k_prio_q_t *prio_q);
Описание функции
Проверяет, заполнена ли приоритетная очередь.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | prio_q | Обработчик приоритетной очереди |
Возвращаемое значение
K_TRUE — приоритетная очередь заполнена.
K_FALSE — приоритетная очередь не заполнена.
k_err_t tos_timer_create(k_timer_t *tmr,
k_tick_t delay,
k_tick_t period,
k_timer_callback_t callback,
void *cb_arg,
k_opt_t opt);
Описание функции
Создает таймер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | tmr | Обработчик таймера |
Yö | [in] | delay |
[in] | period | Периодический таймер: период |
[in] | callback | Обратный вызов таймера |
[in] | cb_arg | Аргумент обратного вызова таймера |
[in] | opt | Опции |
Примечания
Описание опций opt:
Одноразовый таймер, передача этого параметра при создании таймера указывает, что этот таймер одноразовый и будет выполнен только один раз.
Периодический таймер, передача этого параметра при создании таймера указывает, что этот таймер периодический, и при истечении таймера он будет перезапущен с периодом, заданным параметром period.- Возвращаемое значение
K_ERR_NONE создание таймера выполнено успешно.
K_ERR_TIMER_INVALID_PERIOD неправильный параметр period.
K_ERR_TIMER_INVALID_DELAY неправильная задержка delay.
k_err_t tos_timer_destroy(k_timer_t *tmr);
Описание функции
Уничтожает таймер.
IN/OUT | Параметр | Описание |
---|---|---|
[in] | tmr | Обработчик таймера |
Возвращаемое значение
K_ERR_NONE уничтожение таймера выполнено успешно.
K_ERR_TIMER_INACTIVE таймер не был создан.
k_err_t tos_timer_start(k_timer_t *tmr);
Описание функции
Запускает таймер.
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | tmr | Обработчик таймера |
Возвращаемое значение
K_ERR_NONE запуск таймера выполнен успешно.
K_ERR_TIMER_INACTIVE таймер не был создан.
K_ERR_TIMER_INVALID_STATE неправильное состояние таймера.
k_err_t tos_timer_stop(k_timer_t *tmr);
Функциональное описание
Останавливает таймер.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | tmr | Обработчик таймера |
Возвращаемое значение
K_ERR_NONE — таймер успешно остановлен.
K_ERR_TIMER_INACTIVE — таймер не был создан.
K_ERR_TIMER_STOPPED — таймер уже остановлен.
k_err_t tos_timer_delay_change(k_timer_t *tmr, k_tick_t delay);
Функциональное описание
Изменяет задержку триггера таймера.
Параметры | Вход/Выход | Параметр | Описание | | ---------- | -------- | ------------------------- | | [in] | tmr | Обработчик таймера | | [in] | delay | Новый параметр задержки триггера |
Возвращаемое значение
K_ERR_NONE — задержка триггера таймера успешно изменена.
K_ERR_TIMER_INACTIVE — таймер не был создан.
K_ERR_TIMER_RUNNING — таймер находится в состоянии выполнения (изменение параметра задержки триггера запрещено для работающего таймера).
K_ERR_TIMER_INVALID_DELAY — недопустимое значение задержки (попытка изменить задержку одноразового таймера на 0).
k_err_t tos_timer_period_change(k_timer_t *tmr, k_tick_t period);
Функциональное описание
Изменить период триггера таймера.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | tmr | Обработчик таймера |
[in] | period | Новый параметр периода триггера |
Возвращаемое значение
K_ERR_NONE — период триггера таймера успешно изменен.
K_ERR_TIMER_INACTIVE — таймер не был создан.
K_ERR_TIMER_RUNNING — таймер находится в состоянии выполнения (изменение параметра периода триггера запрещено для работающего таймера).
K_ERR_TIMER_INVALID_PERIOD — недопустимое значение периода (попытка изменить период повторяющегося таймера на 0).
k_tick_t tos_systick_get(void);
Функциональное описание Получить количество тиков системы.
Параметры
Отсутствуют.
Возвращаемое значение
Количество тиков системы с момента запуска.
void tos_systick_set(k_tick_t tick);
Функциональное описание
Установить количество тиков системы.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | tick | Количество тиков системы |
Возвращаемое значение
Нет
k_time_t tos_tick2millisec(k_tick_t tick);
Описание функции
Преобразование системного тика в миллисекунды.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | tick | Системный тик |
Возвращаемое значение
Количество миллисекунд.
k_tick_t tos_millisec2tick(k_time_t millisec);
Описание функции
Преобразование миллисекунд в системный тик.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | millisec | Количество миллисекунд |
Возвращаемое значение
Системный тик.
k_err_t tos_sleep_ms(k_time_t millisec);
Описание функции
Засыпание текущего задания на заданное количество миллисекунд.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | millisec | Количество миллисекунд для засыпания |
Возвращаемое значение K_ERR_NONE Засыпание выполнено успешно.
K_ERR_DELAY_ZERO Заданное количество миллисекунд равно нулю.
k_err_t tos_sleep_hmsm(k_time_t hour, k_time_t minute, k_time_t second, k_time_t millisec);
Описание функции
Засыпание текущего задания на заданное количество часов, минут, секунд и миллисекунд.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | hour | Количество часов |
[in] | minute | Количество минут |
[in] | second | Количество секунд |
[in] | millisec | Количество миллисекунд |
Возвращаемое значение
K_ERR_NONE Засыпание выполнено успешно.
K_ERR_DELAY_ZERO Заданное количество миллисекунд равно нулю.
k_err_t tos_pm_cpu_lpwr_mode_set(k_cpu_lpwr_mode_t cpu_lpwr_mode);
Описание функции
Установка режима низкого энергопотребления для процессора.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | cpu_lpwr_mode | Режим низкого энергопотребления для процессора |
Возвращаемое значение
K_ERR_PM_WKUP_SOURCE_NOT_INSTALL Нет установленного источника пробуждения для заданного режима низкого энергопотребления.
K_ERR_NONE Успешное установление режима низкого энергопотребления.
int tos_pm_device_register(k_pm_device_t *device);
Описание функции
Регистрация устройства управления энергопотреблением.- Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | device | Устройство управления энергопотреблением |
void tos_tickless_wkup_alarm_install(k_cpu_lpwr_mode_t mode, k_tickless_wkup_alarm_t *wkup_alarm);
Описание функции
Устанавливает будильник для пробуждения из режима низкого энергопотребления.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mode | Режим низкого энергопотребления |
[in] | wkup_alarm | Будильник для пробуждения |
Возвращаемое значение
Нет
int tos_tickless_wkup_alarm_init(k_cpu_lpwr_mode_t mode);
Описание функции
Инициализирует будильник для пробуждения из определенного режима низкого энергопотребления.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mode | Режим низкого энергопотребления |
Возвращаемое значение
K_ERR_TICKLESS_WKUP_ALARM_NOT_INSTALLED Будильник для пробуждения не установлен для данного режима низкого энергопотребления
K_ERR_TICKLESS_WKUP_ALARM_NO_INIT Будильник для пробуждения не инициализирован для данного режима низкого энергопотребления
int tos_mqtt_connect(char *host, const char *port, mqtt_con_param_t *param);
Описание функции
Подключается к MQTT серверу.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | host | Адрес MQTT сервера |
[in] | port | Порт MQTT сервера |
[in] | param | Параметры подключения |
Возвращаемое значение
Код ошибки подключения | Вход/Выход | Параметр | Описание | | ---------- | -------- | -------- | | [in] | host | IP адрес или домен сервера | | [in] | port | Порт сервера | | [in] | param | Параметры подключения |
Возвращаемое значение
Успешно, возвращает socket fd.
Неудачно, возвращает -1.
int tos_mqtt_publish(int sock, mqtt_pub_param_t *param);
Описание функции
Публикует MQTT-сообщение.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | socket fd, полученное из tos_mqtt_connect |
[in] | param | Параметры публикации |
Возвращаемое значение
0, публикация успешна.
-1, публикация неудачна.
int tos_mqtt_subscribe(int sock, mqtt_sub_param_t *param);
Описание функции
Подписывается на MQTT-сообщение.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | sock | Сокет fd, полученное значение из tos_mqtt_connect. |
[in] | param | Параметры подписки сообщений |
Возвращаемое значение
0, если подписка успешна.
-1, если подписка не удалась.
int tos_mqtt_receive(char *topic, int topic_len, unsigned char *payload, int payload_len);
Описание функции
Получение MQTT-сообщений.
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[out] | topic | Полученный MQTT-топик |
[in] | topic_len | Длина буфера MQTT-топика |
[out] | payload | Полученный payload |
[in] | payload_len | Длина буфера payload |
Успешно, возвращает длину полученного payload.
Неудачно, возвращает -1.
osStatus osKernelStart(void);
Описание функции
Запуск ядра
Параметры
Отсутствуют
Возвращаемое значение
osOK, если запуск успешен.
osErrorOS, если запуск не удался.
osStatus osKernelInitialize(void);
Описание функции
Инициализация ядра
Параметры
Отсутствуют
Возвращаемое значение
osOK, если инициализация успешна.
osErrorOS, если инициализация не удалась.
int32_t osKernelRunning(void);
Описание функции
Возвращает состояние ядра (запущено или нет)
Параметры
Отсутствуют
Возвращаемое значение
0, если ядро не запущено.
Ненулевое значение, если ядро запущено.
uint32_t osKernelSysTick(void);
Описание функции
Получение количества тиков системного таймера
Параметры
Отсутствуют
Возвращаемое значение
Количество тиков системного таймера с момента запуска системы.
osThreadId osThreadCreate(const osThreadDef_t *thread_def, void *argument);
Описание функции
Создание задачи
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | thread_def | Параметры инициализации задачи |
[in] | argument | Аргументы, передаваемые задаче |
Возвращаемое значение
Успешно, возвращает идентификатор задачи.
Неудачно, возвращает NULL. Успешно, возвращает идентификатор созданной задачи.
Неудачно, возвращает NULL.
osThreadId osThreadGetId(void);
Функциональное описание
Получить текущий дескриптор потока
Параметры
Отсутствуют
Возвращаемое значение
Текущий дескриптор потока.
osStatus osThreadTerminate(osThreadId thread_id);
Функциональное описание
Завершить выполнение потока и удалить его
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | thread_id | Дескриптор потока |
Возвращаемое значение
osOK, если выполнено успешно.
osErrorOS, если выполнено с ошибкой.
osStatus osThreadSetPriority(osThreadId thread_id, osPriority priority);
Функциональное описание
Установить приоритет потока
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | thread_id | Дескриптор потока |
[in] | priority | Приоритет |
Возвращаемое значение
osOK, если выполнено успешно.
osErrorOS, если выполнено с ошибкой.
osPriority osThreadGetPriority(osThreadId thread_id);
Функциональное описание
Получить приоритет потока
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | thread_id | Дескриптор потока |
Возвращаемое значение
Приоритет потока.
osStatus osDelay(uint32_t millisec);
Функциональное описание
Задержать выполнение на указанное количество миллисекунд. Установить текущий поток в состояние ожидания на заданное количество миллисекунд.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | millisec | Время ожидания в миллисекундах |
Возвращаемое значение
osOK, если выполнено успешно.
osErrorOS, если выполнено с ошибкой.
osTimerId osTimerCreate(const osTimerDef_t *timer_def, os_timer_type type, void *argument);
Функциональное описание
Создать таймер
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | timer_def | Параметры инициализации таймера |
[in] | type | Тип таймера |
[in] | argument | Аргументы обратного вызова |
Возвращаемое значение
В случае успеха возвращается дескриптор созданного таймера.
В случае ошибки возвращается NULL.
osStatus osTimerStart(osTimerId timer_id, uint32_t millisec);
Функциональное описание
Запустить таймер
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | timer_id | Дескриптор таймера |
[in] | millisec | Параметр задержки выполнения |
Возвращаемое значение
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osStatus osTimerStop(osTimerId timer_id);
Описание функции
Остановить таймер
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | timer_id | Идентификатор таймера |
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osStatus osTimerDelete(osTimerId timer_id);
Описание функции
Удаление таймера
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | timer_id | Идентификатор таймера |
Возвращаемое значение
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osStatus osMutexCreate(const osMutexDef_t *mutex_def);
Описание функции
Создание мьютекса
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex_def | Определение параметров инициализации мьютекса |
Возвращаемое значение
Успешное выполнение, возвращает идентификатор созданного мьютекса.
Неудачное выполнение, возвращает NULL.
osStatus osMutexWait(osMutexId mutex_id, uint32_t millisec);
Описание функции
Попытка получения мьютекса
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex_id | Идентификатор мьютекса |
[in] | millisec | Параметр времени ожидания |
Возвращаемое значение
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osStatus osMutexRelease(osMutexId mutex_id);
Описание функции
Освобождение мьютекса
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex_id | Идентификатор мьютекса |
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osStatus osMutexDelete(osMutexId mutex_id);
Описание функции
Удаление мьютекса
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | mutex_id | Идентификатор мьютекса |
Возвращаемое значение
osOK, успешное выполнение.
osErrorOS, неудачное выполнение.
osSemaphoreId osSemaphoreCreate(const osSemaphoreDef_t *semaphore_def, int32_t count);
Описание функции
Создание семафора
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | semaphore_def | Параметры инициализации семафора |
[in] | count | Начальное значение семафора |
Возвращаемое значение
Успешно — возвращает дескриптор создаваемого семафора.
Неуспешно — возвращает NULL.
int32_t osSemaphoreWait(osSemaphoreId semaphore_id, uint32_t millisec);
Описание функции
Ожидание семафора
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | semaphore_id | Дескриптор семафора |
[in] | millisec | Параметр таймаута |
Возвращаемое значение
Успешно — возвращает количество доступных ресурсов семафора.
Неуспешно — возвращает -1.
osStatus osSemaphoreRelease(osSemaphoreId semaphore_id);
Описание функции
Освобождение семафора
Параметры | Вход/Выход | Имя параметра | Описание | | ---------- | ------------- | -------- | | [in] | semaphore_id | Дескриптор семафора |
Возвращаемое значение
osOK — возвращает успешное выполнение.
osErrorOS — возвращает неуспешное выполнение.
osStatus osSemaphoreDelete(osSemaphoreId semaphore_id);
Описание функции
Удаление семафора
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | semaphore_id | Дескриптор семафора |
Возвращаемое значение
osOK — возвращает успешное выполнение.
osErrorOS — возвращает неуспешное выполнение.
osPoolId osPoolCreate(const osPoolDef_t *pool_def);
Описание функции
Создание пула памяти
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | pool_def | Параметры инициализации пула памяти |
Возвращаемое значение
Успешно — возвращает дескриптор созданного пула памяти.
Неуспешно — возвращает NULL.
void *osPoolAlloc(osPoolId pool_id);
Описание функции
Получение блока памяти из пула памяти
Параметры
Вход/Выход | Имя параметра | Описание |
---|---|---|
[in] | pool_id | Дескриптор пула памяти |
Возвращаемое значение
Успешно — возвращает адрес начала выделенного блока памяти.
Неуспешно — возвращает NULL.
void *osPoolCAlloc(osPoolId pool_id);
```- **Описание функции**
Получает блок памяти из пула памяти и очищает его до нуля.
- **Параметры**
| Вход/Выход | Параметр | Описание |
| ---------- | -------- | -------------- |
| [in] | pool_id | Идентификатор пула памяти |
- **Возвращаемое значение**
При успешном выполнении возвращает адрес начала выделенного блока памяти.
При неудаче возвращает NULL.
### osPoolFree
```c
osStatus osPoolFree(osPoolId pool_id, void *block);
Описание функции
Освобождает блок памяти.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | pool_id | Идентификатор пула памяти |
[in] | block | Адрес начала блока памяти |
Возвращаемое значение
osOK, возвращает успешное выполнение.
osErrorOS, возвращает неудачу.
osMessageQId osMessageCreate(const osMessageQDef_t *queue_def, osThreadId thread_id);
Описание функции
Создает очередь.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | queue_def | Параметры инициализации очереди |
[in] | thread_id | Идентификатор задачи |
Возвращаемое значение
При успешном выполнении возвращает идентификатор созданной очереди.
При неудаче возвращает NULL.
osStatus osMessagePut(osMessageQId queue_id, uint32_t info, uint32_t millisec);
Описание функции
Размещает сообщение в очереди.
Параметры | Вход/Выход | Параметр | Описание | | ---------- | ---------- | ------------------ | | [in] | queue_id | Идентификатор очереди | | [in] | info | Тело сообщения для помещения | | [in] | millisec | Параметр таймаута |- Возвращаемое значение
osOK, возвращает успешное выполнение.
osErrorOS, возвращает неудачу.
osEvent osMessageGet(osMessageQId queue_id, uint32_t millisec);
Описание функции
Получает сообщение из очереди.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | queue_id | Идентификатор очереди |
[in] | millisec | Параметр таймаута |
Возвращаемое значение
Возвращает структуру osEvent, содержащую информацию о состоянии возврата.
int tos_sal_module_register(sal_module_t *module);
Описание функции
Регистрация модуля связи
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | module | Обработчик модуля связи |
Возвращаемое значение
0 — операция выполнена успешно.
-1 — операция завершилась ошибкой.
int tos_sal_module_init(void);
Описание
Инициализация модуля
Параметры
Отсутствуют
Возвращаемое значение
0 — операция выполнена успешно.
-1 — операция завершилась ошибкой.
int tos_sal_module_parse_domain(const char *host_name, char *host_ip);
Описание
Разрешение домена, преобразование доменного имени в IP-адрес.
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | host_name | Имя домена для разрешения |
[out] | host_ip | Полученный IP-адрес |
0 — операция выполнена успешно.
-1 — операция завершилась ошибкой.
int tos_sal_module_connect(const char *ip, const char *port, sal_proto_t proto);
Описание
Установка соединения с удаленным узлом
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | ip | IP-адрес |
[in] | port | Порт |
[in] | proto | Протокол TCP/UDP |
Возвращаемое значение
Успешное выполнение — возвращается идентификатор сокета.
Ошибка — возвращается -1.
int tos_sal_module_send(int sock, const void *buf, size_t len);
Описание
Отправка данных на удаленный узел (TCP-стек)
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | Идентификатор сокета (получен с помощью tos_sal_module_connect) |
[in] | buf | Адрес начала отправляемых данных |
[in] | len | Длина отправляемых данных |
Возвращаемое значение
Длина отправленных данных.
int tos_sal_module_recv(int sock, void *buf, size_t len);
Описание
Чтение данных с удаленного узла (TCP-стек)
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | Идентификатор сокета (получен с помощью tos_sal_module_connect) |
[out] | buf | Буфер для получения данных |
[in] | len | Размер буфера для получения данных |
Возвращаемое значение
Длина фактически полученных данных.### tos_sal_module_recv_timeout
int tos_sal_module_recv_timeout(int sock, void *buf, size_t len, uint32_t timeout);
Описание функции
Получение данных из удаленного источника (TCP-стек).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | идентификатор сокета (получен с помощью tos_sal_module_connect) |
[in] | buf | начальный адрес данных |
[in] | len | длина данных |
[in] | timeout | параметр времени ожидания |
Возвращаемое значение Длина фактически полученных данных.
int tos_sal_module_sendto(int sock, char *ip, char *port, void *buf, size_t len);
Описание функции
Отправка данных в удаленный источник (UDP-стек).
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | идентификатор сокета (получен с помощью tos_sal_module_connect) |
[in] | ip | IP-адрес |
[in] | port | порт |
[in] | buf | начальный адрес данных для отправки |
[in] | len | длина данных для отправки |
Возвращаемое значение Длина отправленных данных.
int tos_sal_module_recvfrom(int sock, char *ip, char *port, void *buf, size_t len);
Описание функции
Получение данных из удаленного источника (UDP-стек).- Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | sock | идентификатор сокета (получен с помощью tos_sal_module_connect) |
[in] | ip | IP-адрес |
[in] | port | порт |
[in] | buf | начальный адрес буфера для получения данных |
[in] | len | длина буфера для получения данных |
Возвращаемое значение Длина фактически полученных данных.
int tos_sal_module_close(int sock);
- **Функциональное описание**
Закрытие соединения с удалённым устройством
- **Параметры**
| Вход/Выход | Параметр | Описание |
| ---------- | -------- | --------------------------------------------- |
| [in] | sock | ID сокета (получено с помощью tos_sal_module_connect) |
- **Возвращаемое значение**
0 — успешное завершение.
-1 — неуспешное завершение.
## Интерфейсы для работы с LoRa-модулем
### tos_lora_module_register
```c
int tos_lora_module_register(lora_module_t *module);
Функциональное описание
Регистрация LoRa-модуля
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | module | Обработчик LoRa |
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение.
int tos_lora_module_init(void);
Функциональное описание
Инициализация LoRa-модуля- Параметры
Отсутствуют
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение.
int tos_lora_module_join(void);
Функциональное описание
Присоединение к LoRa-сети
Параметры
Отсутствуют
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение.
int tos_lora_module_send(const void *buf, size_t len);
Функциональное описание
Отправка данных через LoRa-модуль
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | buf | Адрес начала отправляемых данных |
[in] | len | Длина отправляемых данных |
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение.
int tos_lora_module_recv(void *buf, size_t len);
Функциональное описание
Приём данных через LoRa-модуль
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[out] | buf | Адрес буфера для приёма данных |
[in] | len | Длина буфера |
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение.
int tos_lora_module_recv_timeout(void *buf, size_t len, uint32_t timeout);
Функциональное описание
Приём данных через LoRa-модуль с таймаутом
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[out] | buf | Адрес буфера для приёма данных |
[in] | len | Длина буфера |
[in] | timeout | Таймаут в миллисекундах |
Возвращаемое значение
0 — успешное завершение.
-1 — неуспешное завершение. | Вход/Выход | Параметр | Описание | | ---------- | --------- | ------------------------ | | [in] | buf | Адрес буфера для приема данных | | [in] | len | Длина буфера | | [in] | timeout | Значение таймаута | Возвращаемое значение | 0 — успешное завершение.
-1 — неудачное завершение.
int tos_lora_module_close(void);
Описание функции
Закрытие модуля LoRa
Параметры
Отсутствуют
Возвращаемое значение
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_register(tencent_firmware_module_t *module);
Описание функции
Регистрация модуля с кастомной прошивкой от Tencent
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | module | Объект модуля с кастомной прошивкой от Tencent |
Возвращаемое значение
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_init(void);
Описание функции
Инициализация модуля с кастомной прошивкой от Tencent
Параметры
Отсутствуют
Возвращаемое значение
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_info_set(device_info_t *info, tls_mode_t tls_mode);
Описание функции
Установка информации о устройстве для модуля с кастомной прошивкой от Tencent
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | info | Объект структуры с информацией о устройстве |
[in] | tls_mode | Режим проверки TLS |
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_mqtt_conn(mqtt_param_t init_params);
Описание функции
Установка соединения MQTT с модулем с кастомной прошивкой от Tencent
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | init_params | Параметры соединения MQTT |
Возвращаемое значение
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_mqtt_discon(void);
Описание функции
Отключение соединения MQTT с модулем с кастомной прошивкой от Tencent
Параметры
Отсутствуют
Возвращаемое значение
0 — успешное завершение.
-1 — неудачное завершение.
int tos_tf_module_mqtt_pub(const char *topic, qos_t qos, char *payload);
Описание функции
Публикация темы
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | topic | Тема |
[in] | qos | Качество обслуживания |
[in] | payload | Загрузка сообщения темы |
Возвращаемое значение
0 — успешное выполнение.
-1 — неудачное выполнение.
int tos_tf_module_mqtt_publ(const char *topic, qos_t qos, char *payload);
Описание функции
Публикация длинного сообщения (более 200 символов) по заданной теме
Параметры
Вход/Выход | Параметр | Описание |
---|---|---|
[in] | topic | Тема |
[in] | qos | Качество обслуживания |
[in] | payload | Загружаемое сообщение |
0, успешное выполнение.
-1, неудачное выполнение.
int tos_tf_module_mqtt_sub(char *topic, qos_t qos);
Описание функции
Подписка на тему
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | topic | Тема |
[in] | qos | Качество обслуживания |
Возвращаемое значение
0, успешное выполнение.
-1, неудачное выполнение.
int tos_tf_module_mqtt_unsub(char *topic);
Описание функции
Отмена подписки на тему
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | topic | Тема |
Возвращаемое значение
0, успешное выполнение.
-1, неудачное выполнение.
int tos_tf_module_mqtt_state(mqtt_state_t *state);
Описание функции
Получение состояния MQTT-соединения
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[out] | state | Состояние соединения |
Возвращаемое значение
0, успешное выполнение.
-1, неудачное выполнение.
int tos_tf_module_debug_level_set(int log_level);
Описание функции
Установка уровня отладочного логирования модуля
Параметры
IN/OUT | Параметр | Описание |
---|---|---|
[in] | log_level | Уровень отладочного логирования |
Возвращаемое значение
0, успешное выполнение.
-1, неудачное выполнение.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )