1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/topnetfish-TencentOS-tiny

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
05.TencentOS_tiny_SDK_documentation.md 180 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 27.04.2025 08:26 ea59f9a

Документация SDK для TencentOS Tiny

[TOC]

ЯдраPI

Системное управление

tos_knl_init

k_err_t tos_knl_init(void);
  • Описание функции

    Инициализация ядра.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    K_ERR_NONE — инициализация ядра выполнена успешно.

    Не K_ERR_NONE — инициализация ядра не выполнена.

tos_knl_start

k_err_t tos_knl_start(void);
  • Описание функции

    Запуск ядра.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    K_ERR_NONE — запуск ядра выполнен успешно.

    Не K_ERR_NONE — запуск ядра не выполнен.

tos_knl_is_running

int tos_knl_is_running(void);
  • Описание функции

    Проверка, выполняется ли ядро.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    0 — ядро не выполняется.

    Не 0 — ядро выполняется.

tos_knl_irq_enter

void tos_knl_irq_enter(void);
  • Описание функции

    Вызов этой функции должен быть сделан перед началом обработки прерываний.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    Отсутствуют.

tos_knl_irq_leave

void tos_knl_irq_leave(void);
  • Описание функции

    Вызов этой функции должен быть сделан перед завершением обработки прерываний.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    Отсутствуют.

tos_knl_sched_lock

k_err_t tos_knl_sched_lock(void);
  • Описание функции

    Закрытие планировщика ядра.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    K_ERR_NONE — закрытие планировщика ядра выполнено успешно. K_ERR_KNL_NOT_RUNNING — ядро не выполняется.

    K_ERR_LOCK_NESTING_OVERFLOW — переполнение стека блокировок.

tos_knl_sched_unlock

k_err_t tos_knl_sched_unlock(void);
  • Описание функции

    Разблокировка планировщика ядра.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    K_ERR_NONE — разблокировка планировщика ядра выполнена успешно.

    K_ERR_KNL_NOT_RUNNING — ядро не выполняется.

    K_ERR_SCHED_NOT_LOCKED — планировщик ядра не заблокирован.

Управление задачами

tos_task_create

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 — неправильный приоритет задачи.

tos_task_create_dyn

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 — недостаточно памяти в куче системы.

tos_task_destroy

k_err_t tos_task_destroy(k_task_t *task)
  • Описание функции

    Уничтожение задачи.

  • Параметры

    IN/OUT Параметр Описание
    [in] task Дескриптор структуры задачи

    K_ERR_NONE — задача успешно уничтожена.

    K_ERR_TASK_DESTROY_IDLE — попытка уничтожения задачи idle (недопустимо).

tos_task_destroy_dyn

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 (недопустимо).

tos_task_delay

k_err_t tos_task_delay(k_tick_t delay);
  • Описание функции

    Устанавливает задержку для текущей задачи, измеряемую в тиках системного таймера.

  • Параметры

    Вход/Выход Параметр Описание
    [in] delay Время задержки задачи
  • Возвращаемое значение

    K_ERR_NONE — успешное установление задержки.

    K_ERR_DELAY_ZERO — значение задержки равно нулю (недопустимо).

tos_task_delay_abort

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 Задача была приостановлена (приостановлена).

tos_task_suspend

k_err_t tos_task_suspend(k_task_t *task);
  • Описание функции

    Приостанавливает задачу (отнимает у задачи возможность выполнения).

  • Параметры

    Вход/Выход Параметр Описание
    [in] task Структура описания задачи
  • Возвращаемое значение

    TOS_ERR_NONE Успешное приостановление задачи.

    K_ERR_TASK_SUSPEND_IDLE Попытка приостановить задачу idle (недопустимо).

tos_task_resume

k_err_t tos_task_resume(k_task_t *task);
  • Описание функции

    Восстанавливает задачу для выполнения.

  • Параметры

    Вход/Выход Параметр Описание
    [in] task Структура описания задачи
  • Возвращаемое значение

    TOS_ERR_NONE Успешное восстановление задачи.

    K_ERR_TASK_RESUME_SELF Попытка восстановить текущую задачу (недопустимо).

tos_task_prio_change

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);
  • Функциональное описание

    Текущая задача добровольно уступает процессор.

  • Пояснение параметров

    Нет

  • Возвращаемое значение

    Нет

tos_task_stack_draught_depth

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 Стек задачи переполнен.

tos_task_curr_task_get

k_task_t *tos_task_curr_task_get(void);
  • Функциональное описание

    Получение дескриптора текущей задачи.

  • Пояснение параметров

    Нет

  • Возвращаемое значение

    K_NULL Нет текущей задачи (ядра еще не запущено).

    Нечто отличное от K_NULL Дескриптор задачи.

tos_task_walkthru

void tos_task_walkthru(k_task_walker walker);
  • Функциональное описание

    Перебор всех созданных задач (не включая удаленные) и вызов пользовательского обратного вызова для каждой задачи.

  • Пояснение параметров

    ВХОД/ВЫХОД Название параметра Описание
    [in] walker Обратный вызов для перебора задач

    Нет

    Нечто отличное от K_NULL Дескриптор задачи.

Управление кучей памяти

tos_mmheap_pool_add

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 неправильный размер пула памяти.

tos_mmheap_pool_rmv

k_err_t tos_mmheap_pool_rmv(void *pool_start);
  • Описание функции

    Удаляет пул памяти из кучи.

  • Параметры

    Вход/Выход Параметр Описание
    [in] pool_start Адрес начала пула памяти для удаления
  • Возвращаемое значение

    Нет

tos_mmheap_alloc

void *tos_mmheap_alloc(size_t size);
  • Описание функции

    Выделяет блок памяти из кучи.

  • Параметры

    Вход/Выход Параметр Описание
    [in] size Размер блока памяти для выделения
  • Возвращаемое значение

    Адрес начала выделенного блока памяти (возвращается K_NULL, если выделение не удалось).

tos_mmheap_aligned_alloc```c

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, если перераспределение не удалось).

tos_mmheap_free

void tos_mmheap_free(void *ptr);
  • Описание функции

    Освобождает блок памяти, выделенный из кучи.

  • Параметры

    Вход/Выход Параметр Описание
    [in] ptr Адрес начала блока памяти для освобождения
  • Возвращаемое значение

    Нет.

tos_mmheap_pool_check

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 — пустой указатель.

tos_mmheap_check

k_err_t tos_mmheap_check(k_mmheap_info_t *info);
  • Описание функции

    Получает общую информацию о состоянии кучи (включая все пулы).

  • Параметры

    Вход/Выход Параметр Описание
    [out] info Общая информация о состоянии кучи (использованное и свободное пространство)
  • Возвращаемое значение

    K_ERR_NONE Функция завершилась успешно.

    K_ERR_OBJ_PTR_NULL info — пустой указатель.

Управление блочными пулами памяти

tos_mmblk_pool_create

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 — недопустимый размер блока памяти.

tos_mmblk_alloc

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.

tos_mmblk_free

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 — пул памяти заполнен.

Мьютекс mutex

tos_mutex_create

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 указывает на недействительный мьютекс.

tos_mutex_destroy

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 указывает на недействительный мьютекс.

tos_mutex_pend

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).

tos_mutex_pend_timed

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.

tos_mutex_post

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 Вложенное освобождение мьютекса владельцем.

Сигнальные блоки semaphore

tos_sem_create

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.

tos_sem_create_max

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 пуст.

tos_sem_destroy

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 пуст.

tos_sem_pend```c

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 — значение семафора переполнено.

tos_sem_post_all

k_err_t tos_sem_post_all(k_sem_t *sem);
  • Описание функции

    Освобождает семафор и пробуждает все задачи из очереди ожидания.

  • Параметры | Вход/Выход | Параметр | Описание | | ---------- | -------- | ---------------| | [in] | sem | Указатель семафора |

  • Возвращаемое значение

    K_ERR_NONE - освобождение семафора выполнено успешно.

    K_ERR_SEM_OVERFLOW - значение семафора переполнено.

Событие event

tos_event_create

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.

tos_event_destroy

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 - указатель на событие указывает на недействительное событие.

tos_event_pend

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:

    1. TOS_OPT_EVENT_PEND_ANY

    ​ Пытается получить из события набор флагов, и этот набор флагов должен содержать хотя бы один из флагов, указанных в 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]).

    1. TOS_OPT_EVENT_PEND_ALL

    ​ Пытается получить из события набор флагов, и этот набор флагов должен содержать все флаги, указанные в flag_expect. Если это условие считается успешным получением события, opt передает этот параметр.

    ​ Например, если переданный flag_expect равен 0x9 (0x8 | 0x1), и opt равен TOS_OPT_EVENT_PEND_ALL, то событие считается успешно полученным, если содержит флаги 0x9. То есть, событие должно содержать флаги (0x9 | X, где X — целое число, X ∈ (0, 0xFFFFFFFF]).

    1. TOS_OPT_EVENT_PEND_CLR

    ​ Если вы хотите, чтобы после чтения события все флаги события были сброшены, передайте этот параметр 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).

tos_event_post

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 указывает на недействительное событие.

Завершение операции completion

tos_completion_create

k_err_t tos_completion_create(k_completion_t *completion);
  • Описание

    Создает объект завершения операции.

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] completion Обработчик завершения
  • Возвращаемое значение

    K_ERR_NONE Создание объекта завершения выполнено успешно.

    K_ERR_OBJ_PTR_NULL Указатель на completion является пустым.

tos_completion_destroy

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 указывает на недействительный объект завершения.

tos_completion_pend

k_err_t tos_completion_pend(k_completion_t *completion);
  • Описание

    Ожидает завершения операции (бесконечное ожидание).

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] completion Обработчик завершения
  • Возвращаемое значение

    K_ERR_NONE Операция завершена.

    K_ERR_PEND_SCHED_LOCKED Операция не завершена, и система находится в состоянии блокировки.

    K_ERR_PEND_DESTROY Попытка ожидания завершения операции, которая была удалена.

tos_completion_pend_timed

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 Завершение не выполнено в течение заданного интервала времени.

tos_completion_post

k_err_t tos_completion_post(k_completion_t *completion);
  • Описание функции

    Отпускает завершение (состояние завершения изменяется на завершенное) и пробуждает одну задачу из очереди ожидания. Если несколько задач ожидают данного завершения, пробуждается задача с наивысшим приоритетом.

  • Параметры

    IN/OUT Параметр Описание
    [in] completion Обработчик завершения
  • Возвращаемое значение

    K_ERR_NONE Успешное отпускание завершения.

tos_completion_post_all

k_err_t tos_completion_post_all(k_completion_t *completion);
  • Описание функции

    Отпускает завершение (состояние завершения изменяется на завершенное) и пробуждает все задачи из очереди ожидания.

  • Параметры

    IN/OUT Параметр Описание
    [in] completion Обработчик завершения
  • Возвращаемое значение

    K_ERR_NONE Успешное отпускание завершения.

tos_completion_reset

k_err_t tos_completion_reset(k_completion_t *completion);
  • Описание функции

    Сбрасывает завершение (изменяет состояние завершения на не завершенное).

  • Параметры

    IN/OUT Параметр Описание
    [in] completion Обработчик завершения

    K_ERR_NONE Успешное завершение сброса.

tos_completion_is_done

k_err_t tos_completion_is_done(k_completion_t *completion);
  • Описание функции

    Проверяет, завершено ли данное завершение.

  • Параметры

    Вход/Выход Параметр Описание
    [in] completion Обработчик завершения
  • Возвращаемое значение

    K_TRUE Завершение завершено.

    K_FALSE Завершение не завершено.

Счетчик блокировки countdown latch

tos_countdownlatch_create

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.

tos_countdownlatch_destroy

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 указывает на недействительный счетный блокировочный замок.

tos_countdownlatch_pend

k_err_t tos_countdownlatch_pend(k_countdownlatch_t *countdownlatch);
  • Описание функции

    Ожидает завершения счетного блокировочного замка (постоянное блокирование).

  • Параметры

    Вход/Выход Параметр Описание
    [in] countdownlatch Обработчик счетного блокировочного замка
  • Возвращаемое значение

    K_ERR_NONE Счетный блокировочный замок завершен.

    K_ERR_PEND_SCHED_LOCKED Счетный блокировочный замок не завершен, и блокировка планировщика системы установлена.

    K_ERR_PEND_DESTROY Счетный блокировочный замок, на который было установлено ожидание, был удален.

tos_countdownlatch_pend_timed

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.

tos_countdownlatch_post

k_err_t tos_countdownlatch_post(k_countdownlatch_t *countdownlatch);
  • Описание функции

    Уменьшает значение счетного блокировочного замка на единицу и пробуждает одну задачу из очереди ожидания. Если в очереди ожидания несколько задач, пробуждается задача с наивысшим приоритетом.

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] countdownlatch Обработчик счетного блокировщика
  • Возвращаемое значение

    K_ERR_NONE Счетный блокировщик успешно освобожден.

tos_countdownlatch_reset

k_err_t tos_countdownlatch_reset(k_countdownlatch_t *countdownlatch, k_countdownlatch_cnt_t count);
  • Описание функции

    Сбрасывает счетный блокировщик (устанавливает текущее значение счетного блокировщика на новое ожидаемое значение).

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] countdownlatch Обработчик счетного блокировщика
    [in] count Новое ожидаемое значение счетного блокировщика

    K_ERR_NONE Счетный блокировщик успешно сброшен.

Очередь сообщений

tos_msg_q_create

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 указатель пуст.

tos_msg_q_create_dyn

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 Недостаточно памяти в куче.

tos_msg_q_destroy

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 указывает на нелегальную очередь сообщений.

tos_msg_q_destroy_dyn

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 указывает на нелегальную очередь сообщений.

tos_msg_q_flush

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 указывает на нелегальную очередь сообщений.

tos_msg_q_pend

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 — очередь сообщений заполнена.

tos_msg_q_post_all

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 — очередь сообщений заполнена.

Очередь почтовых сообщений (mail queue)

tos_mail_q_create

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 пуст.

tos_mail_q_create_dyn

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 — недостаточно памяти в куче.

tos_mail_q_destroy

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 указывает на недействительную очередь электронной почты.

tos_mail_q_flush

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 указывает на недействительную очередь электронной почты.

tos_mail_q_pend

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).

tos_mail_q_post

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 — очередь электронной почты заполнена.

Очередь сообщений с приоритетом

tos_prio_msg_q_create

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 пуст.

tos_prio_msg_q_create_dyn

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 Недостаточно памяти в куче.

tos_prio_msg_q_destroy

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 не указывает на действительную очередь сообщений с приоритетом.

tos_prio_msg_q_destroy_dyn

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 не указывает на легитимную приоритетную очередь сообщений.

tos_prio_msg_q_flush

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 указывает на нелегитимную приоритетную очередь сообщений.

tos_prio_msg_q_pend

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 — приоритетная очередь сообщений заполнена.

tos_prio_msg_q_post_all

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 — приоритетная очередь сообщений заполнена.

Приоритетная очередь сообщений (priority message queue)### tos_prio_mail_q_create

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 — указатель на приоритетную почтовую очередь пуст.

tos_prio_mail_q_create_dyn

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 Недостаточно памяти в куче.

tos_prio_mail_q_destroy

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 указывает на недействительную очередь электронной почты.

tos_prio_mail_q_destroy_dyn

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 указывает на недействительную очередь электронной почты с приоритетом.

tos_prio_mail_q_flush

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 указывает на недействительную очередь электронной почты с приоритетом.

tos_prio_mail_q_pend

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 Очередь, из которой пытались извлечь письмо, была уничтожена.

tos_prio_mail_q_post

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 Очередь с приоритетом заполнена.

tos_prio_mail_q_post_all

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 Очередь с приоритетом заполнена.

Кольцевая очередь ring queue

tos_ring_q_create

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 Успешное создание кольцевой очереди.

tos_ring_q_create_dyn

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 Недостаточно памяти в куче.

tos_ring_q_destroy

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 не указывает на действительный кольцевой буфер.

tos_ring_q_destroy_dyn

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 не указывает на действительный кольцевой буфер.

tos_ring_q_enqueue

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 Кольцевой буфер заполнен.

tos_ring_q_dequeue

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 — кольцевой буфер пуст.

tos_ring_q_flush

k_err_t tos_ring_q_flush(k_ring_q_t *ring_q);
  • Описание

    Очистка кольцевого буфера (сброс кольцевого буфера, удаление всех элементов).

  • Параметры

    Вход/Выход Параметр Описание
    [in] ring_q Обработчик кольцевого буфера
  • Возвращаемое значение

    K_ERR_NONE — успешная очистка кольцевого буфера.

tos_ring_q_is_empty

k_err_t tos_ring_q_is_empty(k_ring_q_t *ring_q);
  • Функциональное описание

    Проверяет, пуст ли кольцевой буфер.

  • Параметры

    Вход/Выход Параметр Описание
    [in] ring_q Обработчик кольцевого буфера
  • Возвращаемое значение

    K_TRUE — кольцевой буфер пуст.

    K_FALSE — кольцевой буфер не пуст.

tos_ring_q_is_full

k_err_t tos_ring_q_is_full(k_ring_q_t *ring_q);
  • Функциональное описание

    Проверяет, заполнен ли кольцевой буфер.

  • Параметры

    Вход/Выход Параметр Описание
    [in] ring_q Обработчик кольцевого буфера
  • Возвращаемое значение

    K_TRUE — кольцевой буфер заполнен.

    K_FALSE — кольцевой буфер не заполнен.

Поток символов FIFO

tos_chr_fifo_create

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 — это пустой указатель.

tos_chr_fifo_create_dyn

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 — недостаточно памяти в куче.

tos_chr_fifo_destroy

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.

tos_chr_fifo_destroy_dyn

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 для потока символов заполнена.

tos_chr_fifo_push_stream

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 Длина потока символов

    Реальная длина добавленного потока символов.

tos_chr_fifo_pop

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 символов пуста.

tos_chr_fifo_pop_stream

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 Размер потока символов
  • Возвращаемое значение

    Действительный размер извлеченного потока символов.

tos_chr_fifo_flush

void tos_chr_fifo_flush(k_chr_fifo_t *chr_fifo);
  • Описание функции

    Очищает очередь FIFO символов.

  • Параметры

    Вход/Выход Параметр Описание
    [in] chr_fifo Обработчик очереди FIFO символов
  • Возвращаемое значение

    Нет

tos_chr_fifo_is_empty

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 заполнена.

Двоичная куча binary heap

tos_bin_heap_create

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 Биномиальная куча создана успешно.

tos_bin_heap_create_dyn

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 Недостаточно памяти в куче.

tos_bin_heap_destroy

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 не указывает на валидную биномиальную кучу.

tos_bin_heap_destroy_dyn

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 — биномиальная куча заполнена.

tos_bin_heap_pop

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 — биномиальная куча пуста.

tos_bin_heap_flush

k_err_t tos_bin_heap_flush(k_bin_heap_t *bin_heap);
  • Описание

    Очистка биномиальной кучи (сброс кучи, удаление всех элементов).

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] bin_heap Обработчик биномиальной кучи
  • Возвращаемое значение

    K_ERR_NONE — биномиальная куча успешно очищена.

tos_bin_heap_is_empty

int tos_bin_heap_is_empty(k_bin_heap_t *bin_heap);
  • Описание

    Проверка, пуста ли биномиальная куча.

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] bin_heap Обработчик биномиальной кучи
  • Возвращаемое значение

    K_TRUE — биномиальная куча пуста.

    K_FALSE — биномиальная куча не пуста.

tos_bin_heap_is_full

int tos_bin_heap_is_full(k_bin_heap_t *bin_heap);
  • Описание

    Проверка, заполнена ли биномиальная куча.

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] bin_heap Обработчик биномиальной кучи
  • Возвращаемое значение

    K_TRUE — биномиальная куча заполнена.

    K_FALSE — биномиальная куча не заполнена.

Очередь с приоритетами (priority queue)

tos_prio_q_create

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 Недостаточно памяти в куче.

tos_prio_q_destroy

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 не является валидной очередью с приоритетом.

tos_prio_q_destroy_dyn

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 не является валидной очередью с приоритетом.

tos_prio_q_enqueue

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 — приоритетная очередь заполнена.

tos_prio_q_dequeue

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 — приоритетная очередь пуста.

tos_prio_q_flush

k_err_t tos_prio_q_flush(k_prio_q_t *prio_q);
  • Описание функции

    Очищает приоритетную очередь (сбрасывает очередь, удаляет все элементы).

  • Параметры

    Вход/Выход Параметр Описание
    [in] prio_q Обработчик приоритетной очереди
  • Возвращаемое значение

    K_ERR_NONE — очистка приоритетной очереди выполнена успешно.

tos_prio_q_is_empty

int tos_prio_q_is_empty(k_prio_q_t *prio_q);
  • Описание функции

    Проверяет, пуста ли приоритетная очередь.

  • Параметры

    Вход/Выход Параметр Описание
    [in] prio_q Обработчик приоритетной очереди
  • Возвращаемое значение

    K_TRUE — приоритетная очередь пуста. K_FALSE — приоритетная очередь не пуста.

tos_prio_q_is_full

int tos_prio_q_is_full(k_prio_q_t *prio_q);
  • Описание функции

    Проверяет, заполнена ли приоритетная очередь.

  • Параметры

    Вход/Выход Параметр Описание
    [in] prio_q Обработчик приоритетной очереди
  • Возвращаемое значение

    K_TRUE — приоритетная очередь заполнена.

    K_FALSE — приоритетная очередь не заполнена.

Таймер timer

tos_timer_create

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 Обработчик таймера
    [in] delay
    [in] period Периодический таймер: период
    [in] callback Обратный вызов таймера
    [in] cb_arg Аргумент обратного вызова таймера
    [in] opt Опции
  • Примечания

    Описание опций opt:

    1. TOS_OPT_TIMER_ONESHOT

    ​ Одноразовый таймер, передача этого параметра при создании таймера указывает, что этот таймер одноразовый и будет выполнен только один раз.

    1. TOS_OPT_TIMER_PERIODIC

    ​ Периодический таймер, передача этого параметра при создании таймера указывает, что этот таймер периодический, и при истечении таймера он будет перезапущен с периодом, заданным параметром period.- Возвращаемое значение

    K_ERR_NONE создание таймера выполнено успешно.

    K_ERR_TIMER_INVALID_PERIOD неправильный параметр period.

    K_ERR_TIMER_INVALID_DELAY неправильная задержка delay.

tos_timer_destroy

k_err_t tos_timer_destroy(k_timer_t *tmr);
  • Описание функции

    Уничтожает таймер.

    IN/OUT Параметр Описание
    [in] tmr Обработчик таймера
  • Возвращаемое значение

    K_ERR_NONE уничтожение таймера выполнено успешно.

    K_ERR_TIMER_INACTIVE таймер не был создан.

tos_timer_start

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 неправильное состояние таймера.

tos_timer_stop

k_err_t tos_timer_stop(k_timer_t *tmr);
  • Функциональное описание

    Останавливает таймер.

  • Параметры

    Вход/Выход Параметр Описание
    [in] tmr Обработчик таймера
  • Возвращаемое значение

    K_ERR_NONE — таймер успешно остановлен.

    K_ERR_TIMER_INACTIVE — таймер не был создан.

    K_ERR_TIMER_STOPPED — таймер уже остановлен.

tos_timer_delay_change

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).

tos_timer_period_change

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).

Управление временем

tos_systick_get

k_tick_t tos_systick_get(void);
  • Функциональное описание Получить количество тиков системы.

  • Параметры

    Отсутствуют.

  • Возвращаемое значение

    Количество тиков системы с момента запуска.

tos_systick_set

void tos_systick_set(k_tick_t tick);
  • Функциональное описание

    Установить количество тиков системы.

  • Параметры

    Вход/Выход Параметр Описание
    [in] tick Количество тиков системы
  • Возвращаемое значение

    Нет

tos_tick2millisec

k_time_t tos_tick2millisec(k_tick_t tick);
  • Описание функции

    Преобразование системного тика в миллисекунды.

  • Параметры

    Вход/Выход Параметр Описание
    [in] tick Системный тик
  • Возвращаемое значение

    Количество миллисекунд.

tos_millisec2tick

k_tick_t tos_millisec2tick(k_time_t millisec);
  • Описание функции

    Преобразование миллисекунд в системный тик.

  • Параметры

    Вход/Выход Параметр Описание
    [in] millisec Количество миллисекунд
  • Возвращаемое значение

    Системный тик.

tos_sleep_ms

k_err_t tos_sleep_ms(k_time_t millisec);
  • Описание функции

    Засыпание текущего задания на заданное количество миллисекунд.

  • Параметры

    Вход/Выход Параметр Описание
    [in] millisec Количество миллисекунд для засыпания
  • Возвращаемое значение K_ERR_NONE Засыпание выполнено успешно.

    K_ERR_DELAY_ZERO Заданное количество миллисекунд равно нулю.

tos_sleep_hmsm

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 Заданное количество миллисекунд равно нулю.

Управление энергопотреблением

tos_pm_cpu_lpwr_mode_set

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 Успешное установление режима низкого энергопотребления.

tos_pm_device_register

int tos_pm_device_register(k_pm_device_t *device);
  • Описание функции

    Регистрация устройства управления энергопотреблением.- Параметры

    Вход/Выход Параметр Описание
    [in] device Устройство управления энергопотреблением

tos_tickless_wkup_alarm_install

void tos_tickless_wkup_alarm_install(k_cpu_lpwr_mode_t mode, k_tickless_wkup_alarm_t *wkup_alarm);
  • Описание функции

    Устанавливает будильник для пробуждения из режима низкого энергопотребления.

  • Параметры

    Вход/Выход Параметр Описание
    [in] mode Режим низкого энергопотребления
    [in] wkup_alarm Будильник для пробуждения
  • Возвращаемое значение

    Нет

tos_tickless_wkup_alarm_init

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 Будильник для пробуждения не инициализирован для данного режима низкого энергопотребления

Компонентные API

MQTT облачное подключение

tos_mqtt_connect

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.

tos_mqtt_publish

int tos_mqtt_publish(int sock, mqtt_pub_param_t *param);
  • Описание функции

    Публикует MQTT-сообщение.

  • Параметры

    Вход/Выход Параметр Описание
    [in] sock socket fd, полученное из tos_mqtt_connect
    [in] param Параметры публикации
  • Возвращаемое значение

    0, публикация успешна.

    -1, публикация неудачна.

tos_mqtt_subscribe

int tos_mqtt_subscribe(int sock, mqtt_sub_param_t *param);
  • Описание функции

    Подписывается на MQTT-сообщение.

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] sock Сокет fd, полученное значение из tos_mqtt_connect.
    [in] param Параметры подписки сообщений
  • Возвращаемое значение

    0, если подписка успешна.

    -1, если подписка не удалась.

tos_mqtt_receive

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.

CMSIS-адаптация

osKernelStart

osStatus osKernelStart(void);
  • Описание функции

    Запуск ядра

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    osOK, если запуск успешен.

    osErrorOS, если запуск не удался.

osKernelInitialize

osStatus osKernelInitialize(void);
  • Описание функции

    Инициализация ядра

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    osOK, если инициализация успешна.

    osErrorOS, если инициализация не удалась.

osKernelRunning

int32_t osKernelRunning(void);
  • Описание функции

    Возвращает состояние ядра (запущено или нет)

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0, если ядро не запущено.

    Ненулевое значение, если ядро запущено.

osKernelSysTick

uint32_t osKernelSysTick(void);
  • Описание функции

    Получение количества тиков системного таймера

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    Количество тиков системного таймера с момента запуска системы.

osThreadCreate

osThreadId osThreadCreate(const osThreadDef_t *thread_def, void *argument);
  • Описание функции

    Создание задачи

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] thread_def Параметры инициализации задачи
    [in] argument Аргументы, передаваемые задаче
  • Возвращаемое значение

    Успешно, возвращает идентификатор задачи.

    Неудачно, возвращает NULL. Успешно, возвращает идентификатор созданной задачи.

    Неудачно, возвращает NULL.

osThreadGetId

osThreadId osThreadGetId(void);
  • Функциональное описание

    Получить текущий дескриптор потока

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    Текущий дескриптор потока.

osThreadTerminate

osStatus osThreadTerminate(osThreadId thread_id);
  • Функциональное описание

    Завершить выполнение потока и удалить его

  • Параметры

    Вход/Выход Параметр Описание
    [in] thread_id Дескриптор потока
  • Возвращаемое значение

    osOK, если выполнено успешно.

    osErrorOS, если выполнено с ошибкой.

osThreadSetPriority

osStatus osThreadSetPriority(osThreadId thread_id, osPriority priority);
  • Функциональное описание

    Установить приоритет потока

  • Параметры

    Вход/Выход Параметр Описание
    [in] thread_id Дескриптор потока
    [in] priority Приоритет
  • Возвращаемое значение

    osOK, если выполнено успешно.

    osErrorOS, если выполнено с ошибкой.

osThreadGetPriority

osPriority osThreadGetPriority(osThreadId thread_id);
  • Функциональное описание

    Получить приоритет потока

  • Параметры

    Вход/Выход Параметр Описание
    [in] thread_id Дескриптор потока
  • Возвращаемое значение

    Приоритет потока.

osDelay

osStatus osDelay(uint32_t millisec);
  • Функциональное описание

    Задержать выполнение на указанное количество миллисекунд. Установить текущий поток в состояние ожидания на заданное количество миллисекунд.

  • Параметры

    Вход/Выход Параметр Описание
    [in] millisec Время ожидания в миллисекундах
  • Возвращаемое значение

    osOK, если выполнено успешно.

    osErrorOS, если выполнено с ошибкой.

osTimerCreate

osTimerId osTimerCreate(const osTimerDef_t *timer_def, os_timer_type type, void *argument);
  • Функциональное описание

    Создать таймер

  • Параметры

    Вход/Выход Параметр Описание
    [in] timer_def Параметры инициализации таймера
    [in] type Тип таймера
    [in] argument Аргументы обратного вызова
  • Возвращаемое значение

    В случае успеха возвращается дескриптор созданного таймера.

    В случае ошибки возвращается NULL.

osTimerStart

osStatus osTimerStart(osTimerId timer_id, uint32_t millisec);
  • Функциональное описание

    Запустить таймер

  • Параметры

    Вход/Выход Параметр Описание
    [in] timer_id Дескриптор таймера
    [in] millisec Параметр задержки выполнения
  • Возвращаемое значение

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osTimerStop

osStatus osTimerStop(osTimerId timer_id);
  • Описание функции

    Остановить таймер

  • Параметры

    Вход/Выход Параметр Описание
    [in] timer_id Идентификатор таймера

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osTimerDelete

osStatus osTimerDelete(osTimerId timer_id);
  • Описание функции

    Удаление таймера

  • Параметры

    Вход/Выход Параметр Описание
    [in] timer_id Идентификатор таймера
  • Возвращаемое значение

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osMutexCreate

osStatus osMutexCreate(const osMutexDef_t *mutex_def);
  • Описание функции

    Создание мьютекса

  • Параметры

    Вход/Выход Параметр Описание
    [in] mutex_def Определение параметров инициализации мьютекса
  • Возвращаемое значение

    Успешное выполнение, возвращает идентификатор созданного мьютекса.

    Неудачное выполнение, возвращает NULL.

osMutexWait

osStatus osMutexWait(osMutexId mutex_id, uint32_t millisec);
  • Описание функции

    Попытка получения мьютекса

  • Параметры

    Вход/Выход Параметр Описание
    [in] mutex_id Идентификатор мьютекса
    [in] millisec Параметр времени ожидания
  • Возвращаемое значение

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osMutexRelease

osStatus osMutexRelease(osMutexId mutex_id);
  • Описание функции

    Освобождение мьютекса

  • Параметры

    Вход/Выход Параметр Описание
    [in] mutex_id Идентификатор мьютекса

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osMutexDelete

osStatus osMutexDelete(osMutexId mutex_id);
  • Описание функции

    Удаление мьютекса

  • Параметры

    Вход/Выход Параметр Описание
    [in] mutex_id Идентификатор мьютекса
  • Возвращаемое значение

    osOK, успешное выполнение.

    osErrorOS, неудачное выполнение.

osSemaphoreCreate

osSemaphoreId osSemaphoreCreate(const osSemaphoreDef_t *semaphore_def, int32_t count);
  • Описание функции

    Создание семафора

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] semaphore_def Параметры инициализации семафора
    [in] count Начальное значение семафора
  • Возвращаемое значение

    Успешно — возвращает дескриптор создаваемого семафора.

    Неуспешно — возвращает NULL.

osSemaphoreWait

int32_t osSemaphoreWait(osSemaphoreId semaphore_id, uint32_t millisec);
  • Описание функции

    Ожидание семафора

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] semaphore_id Дескриптор семафора
    [in] millisec Параметр таймаута
  • Возвращаемое значение

    Успешно — возвращает количество доступных ресурсов семафора.

    Неуспешно — возвращает -1.

osSemaphoreRelease

osStatus osSemaphoreRelease(osSemaphoreId semaphore_id);
  • Описание функции

    Освобождение семафора

  • Параметры | Вход/Выход | Имя параметра | Описание | | ---------- | ------------- | -------- | | [in] | semaphore_id | Дескриптор семафора |

  • Возвращаемое значение

    osOK — возвращает успешное выполнение.

    osErrorOS — возвращает неуспешное выполнение.

osSemaphoreDelete

osStatus osSemaphoreDelete(osSemaphoreId semaphore_id);
  • Описание функции

    Удаление семафора

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] semaphore_id Дескриптор семафора
  • Возвращаемое значение

    osOK — возвращает успешное выполнение.

    osErrorOS — возвращает неуспешное выполнение.

osPoolCreate

osPoolId osPoolCreate(const osPoolDef_t *pool_def);
  • Описание функции

    Создание пула памяти

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] pool_def Параметры инициализации пула памяти
  • Возвращаемое значение

    Успешно — возвращает дескриптор созданного пула памяти.

    Неуспешно — возвращает NULL.

osPoolAlloc

void *osPoolAlloc(osPoolId pool_id);
  • Описание функции

    Получение блока памяти из пула памяти

  • Параметры

    Вход/Выход Имя параметра Описание
    [in] pool_id Дескриптор пула памяти
  • Возвращаемое значение

    Успешно — возвращает адрес начала выделенного блока памяти.

    Неуспешно — возвращает NULL.

osPoolCAlloc

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, возвращает неудачу.

osMessageCreate

osMessageQId osMessageCreate(const osMessageQDef_t *queue_def, osThreadId thread_id);
  • Описание функции

    Создает очередь.

  • Параметры

    Вход/Выход Параметр Описание
    [in] queue_def Параметры инициализации очереди
    [in] thread_id Идентификатор задачи
  • Возвращаемое значение

    При успешном выполнении возвращает идентификатор созданной очереди.

    При неудаче возвращает NULL.

osMessagePut

osStatus osMessagePut(osMessageQId queue_id, uint32_t info, uint32_t millisec);
  • Описание функции

    Размещает сообщение в очереди.

  • Параметры | Вход/Выход | Параметр | Описание | | ---------- | ---------- | ------------------ | | [in] | queue_id | Идентификатор очереди | | [in] | info | Тело сообщения для помещения | | [in] | millisec | Параметр таймаута |- Возвращаемое значение

    osOK, возвращает успешное выполнение.

    osErrorOS, возвращает неудачу.

osMessageGet

osEvent osMessageGet(osMessageQId queue_id, uint32_t millisec);
  • Описание функции

    Получает сообщение из очереди.

  • Параметры

    Вход/Выход Параметр Описание
    [in] queue_id Идентификатор очереди
    [in] millisec Параметр таймаута
  • Возвращаемое значение

    Возвращает структуру osEvent, содержащую информацию о состоянии возврата.

API для работы с сетью

Интерфейсы для подключения модулей SAL

tos_sal_module_register

int tos_sal_module_register(sal_module_t *module);
  • Описание функции

    Регистрация модуля связи

  • Параметры

    Вход/Выход Параметр Описание
    [in] module Обработчик модуля связи
  • Возвращаемое значение

    0 — операция выполнена успешно.

    -1 — операция завершилась ошибкой.

tos_sal_module_init

int tos_sal_module_init(void);
  • Описание

    Инициализация модуля

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — операция выполнена успешно.

    -1 — операция завершилась ошибкой.

tos_sal_module_parse_domain

int tos_sal_module_parse_domain(const char *host_name, char *host_ip);
  • Описание

    Разрешение домена, преобразование доменного имени в IP-адрес.

  • Параметры

    Вход/Выход Параметр Описание
    [in] host_name Имя домена для разрешения
    [out] host_ip Полученный IP-адрес

    0 — операция выполнена успешно.

    -1 — операция завершилась ошибкой.

tos_sal_module_connect

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.

tos_sal_module_send

int tos_sal_module_send(int sock, const void *buf, size_t len);
  • Описание

    Отправка данных на удаленный узел (TCP-стек)

  • Параметры

    Вход/Выход Параметр Описание
    [in] sock Идентификатор сокета (получен с помощью tos_sal_module_connect)
    [in] buf Адрес начала отправляемых данных
    [in] len Длина отправляемых данных
  • Возвращаемое значение

    Длина отправленных данных.

tos_sal_module_recv

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 параметр времени ожидания
  • Возвращаемое значение Длина фактически полученных данных.

tos_sal_module_sendto

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 длина данных для отправки
  • Возвращаемое значение Длина отправленных данных.

tos_sal_module_recvfrom

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 длина буфера для получения данных
  • Возвращаемое значение Длина фактически полученных данных.

tos_sal_module_close```c

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 — неуспешное завершение.

tos_lora_module_init

int tos_lora_module_init(void);
  • Функциональное описание

    Инициализация LoRa-модуля- Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неуспешное завершение.

tos_lora_module_join

int tos_lora_module_join(void);
  • Функциональное описание

    Присоединение к LoRa-сети

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неуспешное завершение.

tos_lora_module_send

int tos_lora_module_send(const void *buf, size_t len);
  • Функциональное описание

    Отправка данных через LoRa-модуль

  • Параметры

    Вход/Выход Параметр Описание
    [in] buf Адрес начала отправляемых данных
    [in] len Длина отправляемых данных
  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неуспешное завершение.

tos_lora_module_recv

int tos_lora_module_recv(void *buf, size_t len);
  • Функциональное описание

    Приём данных через LoRa-модуль

  • Параметры

    Вход/Выход Параметр Описание
    [out] buf Адрес буфера для приёма данных
    [in] len Длина буфера
  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неуспешное завершение.

tos_lora_module_recv_timeout

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 — неудачное завершение.

tos_lora_module_close

int tos_lora_module_close(void);
  • Описание функции

    Закрытие модуля LoRa

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неудачное завершение.

Интерфейсы для модулей с кастомной прошивкой от Tencent

tos_tf_module_register

int tos_tf_module_register(tencent_firmware_module_t *module);
  • Описание функции

    Регистрация модуля с кастомной прошивкой от Tencent

  • Параметры

    Вход/Выход Параметр Описание
    [in] module Объект модуля с кастомной прошивкой от Tencent
  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неудачное завершение.

tos_tf_module_init

int tos_tf_module_init(void);
  • Описание функции

    Инициализация модуля с кастомной прошивкой от Tencent

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неудачное завершение.

tos_tf_module_info_set

int tos_tf_module_info_set(device_info_t *info, tls_mode_t tls_mode);
  • Описание функции

    Установка информации о устройстве для модуля с кастомной прошивкой от Tencent

  • Параметры

    Вход/Выход Параметр Описание
    [in] info Объект структуры с информацией о устройстве
    [in] tls_mode Режим проверки TLS

    0 — успешное завершение.

    -1 — неудачное завершение.

tos_tf_module_mqtt_conn

int tos_tf_module_mqtt_conn(mqtt_param_t init_params);
  • Описание функции

    Установка соединения MQTT с модулем с кастомной прошивкой от Tencent

  • Параметры

    Вход/Выход Параметр Описание
    [in] init_params Параметры соединения MQTT
  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неудачное завершение.

tos_tf_module_mqtt_discon

int tos_tf_module_mqtt_discon(void);
  • Описание функции

    Отключение соединения MQTT с модулем с кастомной прошивкой от Tencent

  • Параметры

    Отсутствуют

  • Возвращаемое значение

    0 — успешное завершение.

    -1 — неудачное завершение.

tos_tf_module_mqtt_pub

int tos_tf_module_mqtt_pub(const char *topic, qos_t qos, char *payload);
  • Описание функции

    Публикация темы

  • Параметры

    Вход/Выход Параметр Описание
    [in] topic Тема
    [in] qos Качество обслуживания
    [in] payload Загрузка сообщения темы
  • Возвращаемое значение

    0 — успешное выполнение.

    -1 — неудачное выполнение.

tos_tf_module_mqtt_publ

int tos_tf_module_mqtt_publ(const char *topic, qos_t qos, char *payload);
  • Описание функции

    Публикация длинного сообщения (более 200 символов) по заданной теме

  • Параметры

    Вход/Выход Параметр Описание
    [in] topic Тема
    [in] qos Качество обслуживания
    [in] payload Загружаемое сообщение

    0, успешное выполнение.

    -1, неудачное выполнение.

tos_tf_module_mqtt_sub

int tos_tf_module_mqtt_sub(char *topic, qos_t qos);
  • Описание функции

    Подписка на тему

  • Параметры

    IN/OUT Параметр Описание
    [in] topic Тема
    [in] qos Качество обслуживания
  • Возвращаемое значение

    0, успешное выполнение.

    -1, неудачное выполнение.

tos_tf_module_mqtt_unsub

int tos_tf_module_mqtt_unsub(char *topic);
  • Описание функции

    Отмена подписки на тему

  • Параметры

    IN/OUT Параметр Описание
    [in] topic Тема
  • Возвращаемое значение

    0, успешное выполнение.

    -1, неудачное выполнение.

tos_tf_module_mqtt_state

int tos_tf_module_mqtt_state(mqtt_state_t *state);
  • Описание функции

    Получение состояния MQTT-соединения

  • Параметры

    IN/OUT Параметр Описание
    [out] state Состояние соединения
  • Возвращаемое значение

    0, успешное выполнение.

    -1, неудачное выполнение.

tos_tf_module_debug_level_set

int tos_tf_module_debug_level_set(int log_level);
  • Описание функции

    Установка уровня отладочного логирования модуля

  • Параметры

    IN/OUT Параметр Описание
    [in] log_level Уровень отладочного логирования
  • Возвращаемое значение

    0, успешное выполнение.

    -1, неудачное выполнение.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/topnetfish-TencentOS-tiny.git
git@api.gitlife.ru:oschina-mirror/topnetfish-TencentOS-tiny.git
oschina-mirror
topnetfish-TencentOS-tiny
topnetfish-TencentOS-tiny
master