Ниже приведен полный перечень сервисов OSA. В правой графе стоят пиктограммы, отображающие свойства сервисов:
Сервис | Аргументы | Описание | Свойства |
---|---|---|---|
Системные | |||
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) | Устанавливает семафор | |
OS_Bsem_Reset | (bsem) | Сбрасывает семафор | |
OS_Bsem_Switch | (bsem) | Переключает семафор в противоположное состояние | |
Проверка | |||
OST_WORD OS_Bsem_Check | (bsem) | Смотрим, установлен ли конкретный семафор | |
Ожидание | |||
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 (без ожидания при переполнении). | |
OS_Csem_Set | (csem) | Устанавливаем счетный семафор в 1. | |
OS_Csem_SetValue | (csem, value) | Устанавливаем счетный семафор в конкретное значение value. | |
OS_Csem_Reset | (csem) | Обнуляем счетный семафор | |
Проверка | |||
OS_Csem_Accept | (csem) | Принимаем счетный семафор (уменьшаем его на 1). | |
bool OS_Csem_Check | (csem) | Смотрим, установлен ли семафор (д.б. != 0) | |
Ожидание | |||
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 без ожидания освобождения | |
Проверка | |||
bool OS_Msg_Check | (msg_cb) | Проверить, активно ли сообщение (присутствует ли оно). | |
OS_Msg_Accept | (msg_cb, os_msg_type_var) | Принять существующее сообщение. | |
Ожидание | |||
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 без ожидания освобождения | |
Проверка | |||
bool OS_Smsg_Check | (smsg) | Проверить, активно ли сообщение (присутствует ли оно). | |
OS_Smsg_Accept | (smsg, os_smsg_type_var) | Принять существующее сообщение | |
Ожидание | |||
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 без ожидания свободной ячейки | |
Проверка | |||
bool OS_Queue_Check | (queue) | Проверить, есть ли сообщение в очереди. | |
bool OS_Queue_IsFull | (queue) | Проверка переполненности буфера | |
Ожидание | |||
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 без ожидания свободной ячейки | |
Проверка | |||
bool OS_Squeue_Check | (squeue) | Проверить, есть ли сообщение в очереди. | |
bool OS_Squeue_IsFull | (squeue) | Проверка переполненности буфера. Возвращает true, если в очереди нет места. | |
Ожидание | |||
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) | Устанавливает все флаги в заданное значение | |
OS_Flag_Set | (flags, mask) | Установка флагов по маске | |
OS_Flag_Clear | (flags, mask) | Сброс флагов по маске | |
Проверка | |||
bool OS_Flag_Check_AllOn | (flags, mask) | Проверить, все ли флаги по маске установлены | |
bool OS_Flag_Check_On | (flags, mask) | Проверить, есть ли хотя бы один установленный флаг по маске | |
bool OS_Flag_Check_AllOff | (flags, mask) | Проверить, все ли флаги по маске сброшены | |
bool OS_Flag_Check_Off | (flags, mask) | Проверить, есть ли хотя бы один сброшенный флаг по маске | |
Ожидание | |||
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) | Ожидаем завершения счета таймера |