Available Languages?:

CЕРВИСЫ OSA (ПАМЯТКА)

Ниже приведен полный перечень сервисов OSA. В правой графе стоят пиктограммы, отображающие свойства сервисов:

Использует системный таймер
Нельзя вызывать из прерывания
Разрешен вызов только в контексте задачи
Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
Переключает контекст
Разрешен вызов только в прерывании
Есть расширенный сервис с суффиксом _I для работы в прерывании

Системные сервисы

Сервис Аргументы Описание Свойства
Системные
OS_Sched Основная работа операционки, вызывается в главном цикле функции main()
OS_Run Запускает ядро операционки в работу. main()
OS_Init Инициализация переменных системы. Нельзя вызывать из прерывания
OS_Timer Обработка всех таймеров Использует системный таймер
Ожидание
OS_Yield Передача управления планировщику Разрешен вызов только в контексте задачиПереключает контекст
OS_Delay (delaytime) Выдерживаем паузу внутри задачи Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Wait (condition) Ожидаем выполнения условия Разрешен вызов только в контексте задачиПереключает контекст
OS_Wait_TO (condition, timeout) Ожидаем выполнения условия с таймаутом Разрешен вызов только в контексте задачиПереключает контекстиспользует системный таймер
Проверка состояния
bool
OS_IsTimeout
Проверка, вышли ли из ожидания по таймауту Использует системный таймер
bool
OS_IsError
Проверка, была ли ошибка
bool
OS_IsEventError
Проверка, была ли ошибка события
bool
OS_IsInCriticalSection
Возвращает 1, если одна из задач находится в критической секции.
Прерывания
OS_EnterInt Должна выполняться при входе в прерывание (сохраняет FSR) Разрешен вызов только в прерывании
OS_LeaveInt Должна выполняться перед выходом из прерывания (восстанавливает FSR) Разрешен вызов только в прерывании
char
OS_DI
Запретить прерывания. Текущие значения GIEx сохраняются Нельзя вызывать из прерывания
OS_EI Разрешить прерывания Нельзя вызывать из прерывания
OS_RI (char) Восстановить сохраненные в OS_DI() значения GIEx. Нельзя вызывать из прерывания
OS_EnterCriticalSection Вход в критическую секцию Разрешен вызов только в контексте задачи
OS_LeaveCriticalSection Выход из критической секции Разрешен вызов только в контексте задачи

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

Сервис Аргументы Описание Свойства
Создание/удаление
OS_Task_Define (TaskName) Для CCS: сообщает компилятору, что функция вызывается по указателю. main()
OS_Task_Create (priority, TaskName) Инициализируем конкретную задачу. Нельзя вызывать из прерывания
OS_Task_Replace (priority, TaskName) Заменить текущую задачу на новую. Разрешен вызов только в контексте задачи
OS_Task_Delete (tp) Удалить задачу Переключает контекст
Управление состоянием
OST_TASK_POINTER
OS_Task_GetCur
Получить указатель на дескриптор текущей задачи Разрешен вызов только в контексте задачи
OST_TASK_POINTER
OS_Task_GetCreated
Получить указатель на дескриптор только что созданной задачи
OS_Task_Pause (tp) Приостановить задачу Переключает контекст
OS_Task_Continue (tp) Продолжить выполнение ранее приостановленной задачи
char
OS_Task_GetPriority
(tp) Возвращает приоритет текущей задачи
OS_Task_SetPriority (tp, priority) Изменить приоритет текущей задачи
OS_Task_IsPaused (tp) Проверить, приостановлена ли задача

Двоичные семафоры

Сервис Аргументы Описание Свойства
Управление
OS_Bsem_Set (bsem) Устанавливает семафор Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Bsem_Reset (bsem) Сбрасывает семафор Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Bsem_Switch (bsem) Переключает семафор в противоположное состояние Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
OST_WORD
OS_Bsem_Check
(bsem) Смотрим, установлен ли конкретный семафор Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Bsem_Wait (bsem) Ожидаем установку семафора. Разрешен вызов только в контексте задачиПереключает контекст
OS_Bsem_Wait_TO (bsem, timeout) Ожидаем установку семафора с таймаутом. Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

Счетные семафоры

Сервис Аргументы Описание Свойства
Создание
OS_Csem_Create (csem) Подготавливает счетный семафор к работе (обнуляет его) Нельзя вызывать из прерывания
Управление
OS_Csem_Signal (csem) Увеличивает значение семафора на 1 (с ожиданием при переполнении) Разрешен вызов только в контексте задачиПереключает контекст
OS_Csem_Signal_Now (csem) Увеличивает значение семафора на 1 (без ожидания при переполнении). Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Csem_Set (csem) Устанавливаем счетный семафор в 1. Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Csem_SetValue (csem, value) Устанавливаем счетный семафор в конкретное значение value. Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Csem_Reset (csem) Обнуляем счетный семафор Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
OS_Csem_Accept (csem) Принимаем счетный семафор (уменьшаем его на 1). Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Csem_Check
(csem) Смотрим, установлен ли семафор (д.б. != 0) Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Csem_Wait (csem) Ожидаем установки семафора в ненулевое значение. Уменьшает значение семафора на 1. Разрешен вызов только в контексте задачиПереключает контекст
OS_Csem_Wait_TO (csem, timeout) Ожидаем установки семафора с таймаутом. Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

Сообщения

Сервис Аргументы Описание Свойства
Создание
OS_Msg_Create (msg_cb) Создает сообщение. Нельзя вызывать из прерывания
Отправка
OS_Msg_Send (msg_cb, message) Отправляем сообщение msg_cb (тип OST_MSG_CB) с ожиданием освобождения Разрешен вызов только в контексте задачиПереключает контекст
OS_Msg_Send_TO (msg_cb, message, timeout) То же, что и OS_Msg_Send с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Msg_Send_Now (msg_cb, message) Отправляем сообщение msg_cb без ожидания освобождения Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
bool
OS_Msg_Check
(msg_cb) Проверить, активно ли сообщение (присутствует ли оно). Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Msg_Accept (msg_cb, os_msg_type_var) Принять существующее сообщение. Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Msg_Wait (msg_cb, os_msg_type_var) Ожидаем сообщение msg_cb. Разрешен вызов только в контексте задачиПереключает контекст
OS_Msg_Wait_TO (msg_cb, os_msg_type_var, timeout) То же, что и OS_Msg_Wait, с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

Короткие сообщения

Сервис Аргументы Описание Свойства
Создание
OS_Smsg_Create (smsg) Создает короткое сообщение (фактически - просто обнуляет его)
Отправка
OS_Smsg_Send (smsg, smessage) Отправляем сообщение smsg с содержимым smessage с ожиданием освобождения Разрешен вызов только в контексте задачиПереключает контекст
OS_Smsg_Send_TO (smsg, smessage, timeout) То же, что и OS_Smsg_Send, но с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Smsg_Send_Now (smsg, smessage) Отправляем короткое сообщение smsg с содержимым smessage без ожидания освобождения Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
bool
OS_Smsg_Check
(smsg) Проверить, активно ли сообщение (присутствует ли оно). Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Smsg_Accept (smsg, os_smsg_type_var) Принять существующее сообщение Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Smsg_Wait (smsg, os_smsg_type_var) Ожидаем короткое сообщение smsg. Разрешен вызов только в контексте задачиПереключает контекст
OS_Smsg_Wait_TO (smsg, os_smsg_type_var, timeout) То же, что и OS_Smsg_Wait, с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

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

Сервис Аргументы Описание Свойства
Создание
OS_Queue_Create (queue, buffer, size) Создаем очередь сообщений queue, указывая буфер и его размер Нельзя вызывать из прерывания
Отправка
OS_Queue_Send (queue, message) Отправляем сообщение с содержимым message в очередь queue с ожиданием свободной ячейки Разрешен вызов только в контексте задачиПереключает контекст
OS_Queue_Send_TO (queue, message, timeout) То же, что и OS_Queue_Send, но с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Queue_Send_Now (queue, message) Отправляем сообщение с содержимым message в очередь queue без ожидания свободной ячейки Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
bool
OS_Queue_Check
(queue) Проверить, есть ли сообщение в очереди. Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Queue_IsFull
(queue) Проверка переполненности буфера Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Queue_Wait (queue, os_msg_type_var) Ожидаем сообщение из очереди queue Разрешен вызов только в контексте задачиПереключает контекст
OS_Queue_Wait_TO (queue, os_msg_type_var, timeout) То же, что и OS_Queue_Wait, но с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

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

Сервис Аргументы Описание Свойства
Создание
OS_Squeue_Create (squeue, buffer, size) Создаем очередь коротких сообщений squeue, указывая буфер и его размер Нельзя вызывать из прерывания
Отправка
OS_Squeue_Send (squeue, smessage) Отправляем сообщение с содержимым smessage в очередь squeue с ожиданием свободной ячейки Разрешен вызов только в контексте задачиПереключает контекст
OS_Squeue_Send_TO (squeue, smessage, timeout) То же, что и OS_Squeue_Send, но с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Squeue_Send_Now (squeue, smessage) Отправляем сообщение с содержимым smessage в очередь squeue без ожидания свободной ячейки Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
bool
OS_Squeue_Check
(squeue) Проверить, есть ли сообщение в очереди. Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Squeue_IsFull
(squeue) Проверка переполненности буфера. Возвращает true, если в очереди нет места. Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Squeue_Wait (squeue, os_smsg_type_var) Ожидаем сообщение из очереди squeue Разрешен вызов только в контексте задачиПереключает контекст
OS_Squeue_Wait_TO (squeue, os_smsg_type_var, timeout) То же, что и OS_Squeue_Wait, но с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

Флаги

Сервис Аргументы Описание Свойства
Создание
OS_Flag_Create (flags) Создает флаги (фактически просто сбрасывает все флаги)
Управление
OS_Flag_Init (flags, value) Устанавливает все флаги в заданное значение Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Flag_Set (flags, mask) Установка флагов по маске Есть расширенный сервис с суффиксом _I для работы в прерывании
OS_Flag_Clear (flags, mask) Сброс флагов по маске Есть расширенный сервис с суффиксом _I для работы в прерывании
Проверка
bool
OS_Flag_Check_AllOn
(flags, mask) Проверить, все ли флаги по маске установлены Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Flag_Check_On
(flags, mask) Проверить, есть ли хотя бы один установленный флаг по маске Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Flag_Check_AllOff
(flags, mask) Проверить, все ли флаги по маске сброшены Есть расширенный сервис с суффиксом _I для работы в прерывании
bool
OS_Flag_Check_Off
(flags, mask) Проверить, есть ли хотя бы один сброшенный флаг по маске Есть расширенный сервис с суффиксом _I для работы в прерывании
Ожидание
OS_Flag_Wait_AllOn (flags, mask) Ожидаем установки всех флагов по маске Разрешен вызов только в контексте задачиПереключает контекст
OS_Flag_Wait_On (flags, mask) Ожидаем установки хотя бы одного флага из маски Разрешен вызов только в контексте задачиПереключает контекст
OS_Flag_Wait_AllOff (flags, mask) Ожидаем сброса всех флагов по маске Разрешен вызов только в контексте задачиПереключает контекст
OS_Flag_Wait_Off (flags, mask) Ожидаем сброса хотя бы одного флага из маски Разрешен вызов только в контексте задачиПереключает контекст
OS_Flag_Wait_AllOn_TO (flags, mask, timeout) Ожидаем установки всех флагов по маске с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Flag_Wait_On_TO (flags, mask, timeout) Ожидаем установки хотя бы одного флага из маски с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Flag_Wait_AllOff_TO (flags, mask, timeout) Ожидаем сброса всех флагов по маске с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер
OS_Flag_Wait_Off_TO (flags, mask, timeout) Ожидаем сброса хотя бы одного флага из маски с выходом по таймауту Разрешен вызов только в контексте задачиПереключает контекстИспользует системный таймер

Таймеры

Таймеры задач

Сервис Аргументы Описание Свойства
Управление
OS_Ttimer_Run (time) Запустить таймер текущей задачи на отсчет времени time. Флаг переполнения сбрасывается. Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
OS_Ttimer_Break (qtimer) Останавливаем таймер. Флаг переполнения устанавливается Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
OS_Ttimer_Wait () Ожидаем завершения счета таймера текущей задачи. Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
OS_Ttimer_Delay (delay) (то же, что и OS_Delay) Выдержать задержку с применением таймера текущей задачи Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
Проверка
_OST_TTIMER
OS_Ttimer_Get
() Получить оставшееся время счета (необходимо запрещать прерывания или приостанавливать счет) Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
bool
OS_Ttimer_Check
() Проверить, закончил ли таймер текущей задачи счет. Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
bool
OS_Ttimer_IsRun
() Проверить, считает ли таймер текущей задачи Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
Дополнительно
OS_Ttimer_Pause () Останавливаем таймер текущей задачи. Флаг переполнения утсанавливается. Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
OS_Ttimer_Continue () Восстанавливаем счет таймера. Использует системный таймерРазрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)

Статические таймеры

Сервис Аргументы Описание Свойства
Создание/удаление
OS_Stimer_Alloc (var_stimer_id) Выделяет не занятый на данный момент времени таймер и возвращает его номер Использует системный таймерРазрешен вызов только в контексте задачи
OS_Stimer_Free (stimer_id) Помечает таймер как свободный Использует системный таймерРазрешен вызов только в контексте задачи
bool
OS_Stimer_Found
() Проверяет, есть ли свободный статический таймер Использует системный таймерРазрешен вызов только в контексте задачи
Управление
OS_Stimer_Run (stimer_id, time) Запустить таймер stimer_id на отсчет времени time. Флаг переполнения сбрасывается. Использует системный таймер
OS_Stimer_Break (qtimer) Останавливаем таймер. Флаг переполнения устанавливается Использует системный таймер
OS_Stimer_Wait (stimer_id) Ожидаем завершения счета таймера. Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
OS_Stimer_Delay (stimer_id, delay) Выдержать задержку с применением статического таймера stimer_id Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
Проверка
_OST_STIMER
OS_Stimer_Get
(stimer_id) Получить оставшееся время счета (необходимо запрещать прерывания) Использует системный таймер
bool
OS_Stimer_Check
(stimer_id) Проверить, было ли переполнение. Использует системный таймер
bool
OS_Stimer_IsRun
(stimer_id) Проверить, считает ли таймер Использует системный таймер
Дополнительно
OS_Stimer_Pause (stimer_id) Останавливаем таймер. Флаг переполнения утсанавливается. Использует системный таймер
OS_Stimer_Continue (stimer_id) Восстанавливаем счет таймера. Использует системный таймер

Очередь таймеров

Сервис Аргументы Описание Свойства
Создание/Удаление
OS_Qtimer_Create (qtimer) Добавляет qtimer в очередь активных таймеров. После создания таймер обнулен остановлен, флаг переполнения сброшен. Использует системный таймерНельзя вызывать из прерывания
OS_Qtimer_Delete (qtimer) Удаляет qtimer из очереди активных таймеров. Использует системный таймерНельзя вызывать из прерывания
Управление
OS_Qtimer_Run (qtimer, time) Запустить qtimer на отсчет времени time с момента вызова этого сервиса. Флаг переполнения сбрасывается. Использует системный таймер
OS_Qtimer_Break (qtimer) Останавливаем таймер. Флаг переполнения устанавливается Использует системный таймер
OS_Qtimer_Wait (qtimer) Ожидаем завершения счета таймера. Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
OS_Qtimer_Delay (qtimer, time) Выдержать задержку с использованием таймера qtimer Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
Проверка
_OST_QTIMER
OS_Qtimer_Get
(qtimer) Получить оставшееся время счета (необходимо запрещать прерывания) Использует системный таймер
bool
OS_Qtimer_Check
(qtimer) Проверить, было ли переполнение. Использует системный таймер
bool
OS_Qtimer_IsRun
(qtimer) Проверить, считает ли таймер Использует системный таймер

Таймеры (устаревшие)

Динамические таймеры

Сервис Аргументы Описание Свойства
Создание/Удаление
OS_Dtimer_Create (dtimer) Добавляет dtimer в очередь активных таймеров. После создания таймер обнулен остановлен, флаг переполнения сброшен. Использует системный таймерНельзя вызывать из прерывания
OS_Dtimer_Delete (dtimer) Удаляет dtimer из очереди активных таймеров. Использует системный таймерНельзя вызывать из прерывания
Управление
OS_Dtimer_Run (dtimer, newtime) Запустить dtimer на отсчет времени newtime с момента вызова этого сервиса. Флаг переполнения сбрасывается. Использует системный таймер
OS_Dtimer_Break (dtimer) Останавливаем таймер. Он остается активным, но не увеличивается при выполнении OS_Timer(). Флаг переполнения устанавливается. Использует системный таймер
OS_Dtimer_Wait (dtimer) Ожидаем завершения счета таймера. Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
OS_Dtimer_Delay (dtimer, delay) Выдержать задержку с использованием динамического таймера dtimer Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
Проверка
_OST_DTIMER
OS_Dtimer_Get
(dtimer) Получить оставшееся время счета (необходимо запрещать прерывания) Использует системный таймер
bool
OS_Dtimer_Check
(dtimer) Проверить, было ли переполнение. Использует системный таймер
bool
OS_Dtimer_IsRun
(dtimer) Проверить, считает ли таймер Использует системный таймер
Дополнительно
OS_Dtimer_Pause (dtimer) Останавливаем таймер. Он остается активным, но не увеличивается при выполнении OS_Timer(). Флаг переполнения остается без изменений. Использует системный таймер
OS_Dtimer_Continue (dtimer) Восстанавливаем счет таймера. Использует системный таймер
OS_Dtimer_Update (dtimer, time) Запустить таймер на отсчет времени time с момента последнего переполнения. Флаг переполнения сбрасывается. Использует системный таймер
OS_Dtimer_Add (dtimer, addtime) Добавить время к таймеру во время счета. Флаг переполнения остается без изменений. Использует системный таймер
bool
OS_Dtimer_IsActive
(dtimer) Проверить, есть ли таймер в списке активных таймеров. Использует системный таймер
bool
OS_Dtimer_IsStopped
(dtimer) Проверить, остановлен ли таймер Использует системный таймер

Статические таймеры старого типа

Сервис Аргументы Описание Свойства
Управление
OS_Oldtimer_Run8 (timer8_id, time) Запустить 8-разрядный таймер для отсчета Использует системный таймер
OS_Oldtimer_Run16 (timer16_id, time) Запустить 16-разрядный таймер для отсчета Использует системный таймер
OS_Oldtimer_Run24 (timer24_id, time) Запустить 24-разрядный таймер для отсчета Использует системный таймер
OS_Oldtimer_Run32 (timer32_id, time) Запустить 32-разрядный таймер для отсчета Использует системный таймер
OS_Oldtimer_Stop (timer_id) Останавливаем таймер (при этом устанавливается флаг Timeout для этого таймера) Использует системный таймер
Проверка
bool
OS_Oldtimer_Check
(timer_id) Проверить, закончил ли таймер счет. Использует системный таймер
Ожидание
OS_Oldtimer_Wait (timer_id) Ожидаем завершения счета таймера Использует системный таймерРазрешен вызов только в контексте задачиПереключает контекст
 
osa/ref/services/brieflist.txt · Последние изменения: 07.10.2010 13:54 (внешнее изменение)
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki