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


  * [[osa:ref:services:alphabetical|Алфавитный указатель]]


Ниже приведен полный перечень сервисов OSA. В правой графе стоят пиктограммы, отображающие свойства сервисов:
{|class = ""
|-
|{{osa:ref:attr_call_to.png}}
|Использует системный таймер
|-
|{{osa:ref:attr_call_not_int.png}}
|Нельзя вызывать из прерывания
|-
|{{osa:ref:attr_call_task.png}}
|Разрешен вызов только в контексте задачи
|-
|{{osa:ref:attr_call_task_plus.png}}
|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)
|-
|{{osa:ref:attr_call_ct_sw.png}}
|Переключает контекст
|-
|{{osa:ref:attr_call_int.png}}
|Разрешен вызов только в прерывании
|-
|{{osa:ref:attr_call_can_int.png}}
|Есть расширенный сервис с суффиксом _I для работы в прерывании
|}


~~UP~~


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

^  Сервис  ^  Аргументы   ^  Описание  ^  Свойства  ^
| **Системные**  ||||
| ##[[osa:ref:allservices:OS_Sched|OS_Sched]]##  |  ''''  | Основная работа операционки, вызывается в главном цикле  функции main()  |   |
| ##[[osa:ref:allservices:OS_Run|OS_Run]]##  |  ''''  | Запускает ядро операционки в работу.  | **main()**  |
| ##[[osa:ref:allservices:OS_Init|OS_Init]]##  |  ''''  | Инициализация переменных системы.   | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_Timer|OS_Timer]]##  |  ''''  | Обработка всех таймеров   | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| **Ожидание**  ||||
| ##[[osa:ref:allservices:OS_Yield|OS_Yield]]##  |  ''''  | Передача управления планировщику  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Delay|OS_Delay]]##  |  ''(delaytime)''  | Выдерживаем паузу внутри задачи  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Wait|OS_Wait]]##  |  ''(condition)''  | Ожидаем выполнения условия  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Wait_TO|OS_Wait_TO]]##  |  ''(condition, timeout)''  | Ожидаем выполнения условия с таймаутом  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|использует системный таймер}}  |
| **Проверка состояния**  ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_IsTimeout|OS_IsTimeout]]##  |  ''''  | Проверка, вышли ли из ожидания по таймауту  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_IsError|OS_IsError]]##  |  ''''  | Проверка, была ли ошибка  |   |
| ''bool ''\\ ##[[osa:ref:allservices:OS_IsEventError|OS_IsEventError]]##  |  ''''  | Проверка, была ли ошибка события  |   |
| ''bool ''\\ ##[[osa:ref:allservices:OS_IsInCriticalSection|OS_IsInCriticalSection]]##  |  ''''  | Возвращает 1, если одна из задач находится в критической секции.  |   |
| **Прерывания**  ||||
| ##[[osa:ref:allservices:OS_EnterInt|OS_EnterInt]]##  |  ''''  | Должна выполняться при входе в прерывание (сохраняет FSR)  | {{osa:ref:attr_call_int.png|Разрешен вызов только в прерывании}}  |
| ##[[osa:ref:allservices:OS_LeaveInt|OS_LeaveInt]]##  |  ''''  | Должна выполняться перед выходом из прерывания (восстанавливает FSR)  | {{osa:ref:attr_call_int.png|Разрешен вызов только в прерывании}}  |
| ''char ''\\ ##[[osa:ref:allservices:OS_DI|OS_DI]]##  |  ''''  | Запретить прерывания. Текущие значения GIEx сохраняются  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_EI|OS_EI]]##  |  ''''  | Разрешить прерывания  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_RI|OS_RI]]##  |  ''(char)''  | Восстановить сохраненные в ##[[osa:ref:allservices:OS_DI|OS_DI]]##() значения GIEx.  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_EnterCriticalSection|OS_EnterCriticalSection]]##  |  ''''  | Вход в критическую секцию  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| ##[[osa:ref:allservices:OS_LeaveCriticalSection|OS_LeaveCriticalSection]]##  |  ''''  | Выход из критической секции  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |




~~UP~~




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

^  Сервис  ^  Аргументы   ^  Описание  ^  Свойства  ^
| **Создание/удаление**  ||||
| ##[[osa:ref:allservices:OS_Task_Define|OS_Task_Define]]##  |  ''(TaskName)''  | **Для CCS**: сообщает компилятору, что функция вызывается по указателю.  | **main()**  |
| ##[[osa:ref:allservices:OS_Task_Create|OS_Task_Create]]##  |  ''(priority, TaskName)''  | Инициализируем конкретную задачу.  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_Task_Replace|OS_Task_Replace]]##  |  ''(priority, TaskName)''  | Заменить текущую задачу на новую.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| ##[[osa:ref:allservices:OS_Task_Delete|OS_Task_Delete]]##  |  ''(tp)''  | Удалить задачу  | {{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| **Управление состоянием**  ||||
| ''[[osa:ref:description:data_types#OST_TASK_POINTER|OST_TASK_POINTER]]''\\ ##[[osa:ref:allservices:OS_Task_GetCur|OS_Task_GetCur]]##  |  ''''  | Получить указатель на дескриптор текущей задачи  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| ''[[osa:ref:description:data_types#OST_TASK_POINTER|OST_TASK_POINTER]]''\\ ##[[osa:ref:allservices:OS_Task_GetCreated|OS_Task_GetCreated]]##  |  ''''  | Получить указатель на дескриптор только что созданной задачи  |   |
| ##[[osa:ref:allservices:OS_Task_Pause|OS_Task_Pause]]##  |  ''(tp)''  | Приостановить задачу  | {{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Task_Continue|OS_Task_Continue]]##  |  ''(tp)''  | Продолжить выполнение ранее приостановленной задачи  |   |
| ''char ''\\ ##[[osa:ref:allservices:OS_Task_GetPriority|OS_Task_GetPriority]]##  |  ''(tp)''  | Возвращает приоритет текущей задачи  |   |
| ##[[osa:ref:allservices:OS_Task_SetPriority|OS_Task_SetPriority]]##  |  ''(tp, priority)''  | Изменить приоритет текущей задачи  |   |
| ##[[osa:ref:allservices:OS_Task_IsPaused|OS_Task_IsPaused]]##  |  ''(tp)''  | Проверить, приостановлена ли задача  |   |

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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Bsem_Set|OS_Bsem_Set]]##  |  ''(bsem)''  | Устанавливает семафор  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Bsem_Reset|OS_Bsem_Reset]]##  |  ''(bsem)''  | Сбрасывает семафор  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Bsem_Switch|OS_Bsem_Switch]]##  |  ''(bsem)''  | Переключает семафор в противоположное состояние  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| [[osa:ref:description:data_types#OST_WORD|OST_WORD]]\\ ##[[osa:ref:allservices:OS_Bsem_Check|OS_Bsem_Check]]##  |  ''(bsem)''  | Смотрим, установлен ли конкретный семафор  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**  ||||
| ##[[osa:ref:allservices:OS_Bsem_Wait|OS_Bsem_Wait]]##  |  ''(bsem)''  | Ожидаем установку семафора.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Bsem_Wait_TO|OS_Bsem_Wait_TO]]##  |  ''(bsem, timeout)''  | Ожидаем установку семафора с таймаутом.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |

~~UP~~

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


^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Csem_Create|OS_Csem_Create]]##  |  ''(csem)''  | Подготавливает счетный семафор к работе (обнуляет его)  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Csem_Signal|OS_Csem_Signal]]##  |  ''(csem)''  | Увеличивает значение семафора на 1 (с ожиданием при переполнении)  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Csem_Signal_Now|OS_Csem_Signal_Now]]##  |  ''(csem)''  | Увеличивает значение семафора на 1 (без ожидания при переполнении).  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Csem_Set|OS_Csem_Set]]##  |  ''(csem)''  | Устанавливаем счетный семафор в 1.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Csem_SetValue|OS_Csem_SetValue]]##  |  ''(csem, value)''  | Устанавливаем счетный семафор в конкретное значение //value//.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Csem_Reset|OS_Csem_Reset]]##  |  ''(csem)''  | Обнуляем счетный семафор  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ##[[osa:ref:allservices:OS_Csem_Accept|OS_Csem_Accept]]##  |  ''(csem)''  | Принимаем счетный семафор (уменьшаем его на 1).  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Csem_Check|OS_Csem_Check]]##  |  ''(csem)''  | Смотрим, установлен ли семафор (д.б. != 0)  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Csem_Wait|OS_Csem_Wait]]##  |  ''(csem)''  | Ожидаем установки семафора в ненулевое значение. Уменьшает значение семафора на 1.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Csem_Wait_TO|OS_Csem_Wait_TO]]##  |  ''(csem, timeout)''  | Ожидаем установки семафора с таймаутом.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |


~~UP~~

===== Сообщения =====

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Msg_Create|OS_Msg_Create]]##  |  ''(msg_cb)''  | Создает сообщение.  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Отправка**    ||||
| ##[[osa:ref:allservices:OS_Msg_Send|OS_Msg_Send]]##  |  ''(msg_cb, message)''  | Отправляем сообщение //msg_cb// (тип ##[[osa:ref:description:data_types#OST_MSG_CB|OST_MSG_CB]]##) с ожиданием освобождения  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Msg_Send_TO|OS_Msg_Send_TO]]##  |  ''(msg_cb, message, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Msg_Send|OS_Msg_Send]]## с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Msg_Send_Now|OS_Msg_Send_Now]]##  |  ''(msg_cb, message)''  | Отправляем сообщение //msg_cb// без ожидания освобождения  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Msg_Check|OS_Msg_Check]]##  |  ''(msg_cb)''  | Проверить, активно ли сообщение (присутствует ли оно).  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Msg_Accept|OS_Msg_Accept]]##  |  ''(msg_cb, os_msg_type_var)''  | Принять существующее сообщение.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Msg_Wait|OS_Msg_Wait]]##  |  ''(msg_cb, os_msg_type_var)''  | Ожидаем сообщение msg_cb.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Msg_Wait_TO|OS_Msg_Wait_TO]]##  |  ''(msg_cb, os_msg_type_var, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Msg_Wait|OS_Msg_Wait]]##, с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |



~~UP~~

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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Smsg_Create|OS_Smsg_Create]]##  |  ''(smsg)''  | Создает короткое сообщение (фактически - просто обнуляет его)  |   |
| **Отправка**    ||||
| ##[[osa:ref:allservices:OS_Smsg_Send|OS_Smsg_Send]]##  |  ''(smsg, smessage)''  | Отправляем сообщение //smsg// с содержимым //smessage// с ожиданием освобождения  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Smsg_Send_TO|OS_Smsg_Send_TO]]##  |  ''(smsg, smessage, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Smsg_Send|OS_Smsg_Send]]##, но с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Smsg_Send_Now|OS_Smsg_Send_Now]]##  |  ''(smsg, smessage)''  | Отправляем короткое сообщение //smsg// с содержимым //smessage// без ожидания освобождения  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Smsg_Check|OS_Smsg_Check]]##  |  ''(smsg)''  | Проверить, активно ли сообщение (присутствует ли оно).  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Smsg_Accept|OS_Smsg_Accept]]##  |  ''(smsg, os_smsg_type_var)''  | Принять существующее сообщение  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Smsg_Wait|OS_Smsg_Wait]]##  |  ''(smsg, os_smsg_type_var)''  | Ожидаем короткое сообщение //smsg//.  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Smsg_Wait_TO|OS_Smsg_Wait_TO]]##  |  ''(smsg, os_smsg_type_var, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Smsg_Wait|OS_Smsg_Wait]]##, с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |




~~UP~~

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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Queue_Create|OS_Queue_Create]]##  |  ''(queue, buffer, size)''  | Создаем очередь сообщений queue, указывая буфер и его размер  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Отправка**    ||||
| ##[[osa:ref:allservices:OS_Queue_Send|OS_Queue_Send]]##  |  ''(queue, message)''  | Отправляем сообщение с содержимым message в очередь queue с ожиданием свободной ячейки  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Queue_Send_TO|OS_Queue_Send_TO]]##  |  ''(queue, message, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Queue_Send|OS_Queue_Send]]##, но с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Queue_Send_Now|OS_Queue_Send_Now]]##  |  ''(queue, message)''  | Отправляем сообщение с содержимым message в очередь queue без ожидания свободной ячейки  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Queue_Check|OS_Queue_Check]]##  |  ''(queue)''  | Проверить, есть ли сообщение в очереди.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Queue_IsFull|OS_Queue_IsFull]]##  |  ''(queue)''  | Проверка переполненности буфера  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Queue_Wait|OS_Queue_Wait]]##  |  ''(queue, os_msg_type_var)''  | Ожидаем сообщение из очереди queue  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Queue_Wait_TO|OS_Queue_Wait_TO]]##  |  ''(queue, os_msg_type_var, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Queue_Wait|OS_Queue_Wait]]##, но с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |




~~UP~~

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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Squeue_Create|OS_Squeue_Create]]##  |  ''(squeue, buffer, size)''  | Создаем очередь коротких сообщений squeue, указывая буфер и его размер  | {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Отправка**    ||||
| ##[[osa:ref:allservices:OS_Squeue_Send|OS_Squeue_Send]]##  |  ''(squeue, smessage)''  | Отправляем сообщение с содержимым smessage в очередь squeue с ожиданием свободной ячейки  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Squeue_Send_TO|OS_Squeue_Send_TO]]##  |  ''(squeue, smessage, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Squeue_Send|OS_Squeue_Send]]##, но с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Squeue_Send_Now|OS_Squeue_Send_Now]]##  |  ''(squeue, smessage)''  | Отправляем сообщение с содержимым smessage в очередь squeue без ожидания свободной ячейки  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Squeue_Check|OS_Squeue_Check]]##  |  ''(squeue)''  | Проверить, есть ли сообщение в очереди.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Squeue_IsFull|OS_Squeue_IsFull]]##  |  ''(squeue)''  | Проверка переполненности буфера. Возвращает true, если в очереди нет места.  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Squeue_Wait|OS_Squeue_Wait]]##  |  ''(squeue, os_smsg_type_var)''  | Ожидаем сообщение из очереди squeue  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Squeue_Wait_TO|OS_Squeue_Wait_TO]]##  |  ''(squeue, os_smsg_type_var, timeout)''  | То же, что и ##[[osa:ref:allservices:OS_Squeue_Wait|OS_Squeue_Wait]]##, но с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |




~~UP~~

===== Флаги =====

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание**    ||||
| ##[[osa:ref:allservices:OS_Flag_Create|OS_Flag_Create]]##  |  ''(flags)''  | Создает флаги (фактически просто сбрасывает все флаги)  |   |
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Flag_Init|OS_Flag_Init]]##  |  ''(flags, value)''  | Устанавливает все флаги в заданное значение  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Flag_Set|OS_Flag_Set]]##  |  ''(flags, mask)''  | Установка флагов по маске  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ##[[osa:ref:allservices:OS_Flag_Clear|OS_Flag_Clear]]##  |  ''(flags, mask)''  | Сброс флагов по маске  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Flag_Check_AllOn|OS_Flag_Check_AllOn]]##  |  ''(flags, mask)''  | Проверить, все ли флаги по маске установлены  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Flag_Check_On|OS_Flag_Check_On]]##  |  ''(flags, mask)''  | Проверить, есть ли хотя бы один установленный флаг по маске  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Flag_Check_AllOff|OS_Flag_Check_AllOff]]##  |  ''(flags, mask)''  | Проверить, все ли флаги по маске сброшены  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Flag_Check_Off|OS_Flag_Check_Off]]##  |  ''(flags, mask)''  | Проверить, есть ли хотя бы один сброшенный флаг по маске  | {{osa:ref:attr_call_can_int.png|Есть расширенный сервис с суффиксом _I для работы в прерывании}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Flag_Wait_AllOn|OS_Flag_Wait_AllOn]]##  |  ''(flags, mask)''  | Ожидаем установки всех флагов по маске  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_On|OS_Flag_Wait_On]]##  |  ''(flags, mask)''  | Ожидаем установки хотя бы одного флага из маски  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_AllOff|OS_Flag_Wait_AllOff]]##  |  ''(flags, mask)''  | Ожидаем сброса всех флагов по маске  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_Off|OS_Flag_Wait_Off]]##  |  ''(flags, mask)''  | Ожидаем сброса хотя бы одного флага из маски  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_AllOn_TO|OS_Flag_Wait_AllOn_TO]]##  |  ''(flags, mask, timeout)''  | Ожидаем установки всех флагов по маске с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_On_TO|OS_Flag_Wait_On_TO]]##  |  ''(flags, mask, timeout)''  | Ожидаем установки хотя бы одного флага из маски с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_AllOff_TO|OS_Flag_Wait_AllOff_TO]]##  |  ''(flags, mask, timeout)''  | Ожидаем сброса всех флагов по маске с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Flag_Wait_Off_TO|OS_Flag_Wait_Off_TO]]##  |  ''(flags, mask, timeout)''  | Ожидаем сброса хотя бы одного флага из маски с выходом по таймауту  | {{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}{{osa:ref:attr_call_to.png|Использует системный таймер}}  |




~~UP~~

===== Таймеры =====


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


^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Ttimer_Run|OS_Ttimer_Run]]##  |  ''(time)''  | Запустить таймер текущей задачи на отсчет времени time. Флаг переполнения сбрасывается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| ##[[osa:ref:allservices:OS_Ttimer_Break|OS_Ttimer_Break]]##  |  ''(qtimer)''  | Останавливаем таймер. Флаг переполнения устанавливается   | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| ##[[osa:ref:allservices:OS_Ttimer_Wait|OS_Ttimer_Wait]]##  |  ''()''  | Ожидаем завершения счета таймера текущей задачи.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Ttimer_Delay|OS_Ttimer_Delay]]##  |  ''(delay)''  | (то же, что и ##[[osa:ref:allservices:OS_Delay|OS_Delay]]##) Выдержать задержку с применением таймера текущей задачи  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| **Проверка**    ||||
| ''[[osa:ref:description:data_types#_OST_TTIMER|_OST_TTIMER]] ''\\ ##[[osa:ref:allservices:OS_Ttimer_Get|OS_Ttimer_Get]]##  |  ''()''  | Получить оставшееся время счета (необходимо запрещать прерывания или приостанавливать счет)  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Ttimer_Check|OS_Ttimer_Check]]##  |  ''()''  | Проверить, закончил ли таймер текущей задачи счет.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Ttimer_IsRun|OS_Ttimer_IsRun]]##  |  ''()''  | Проверить, считает ли таймер текущей задачи  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| **Дополнительно** ||||
| ##[[osa:ref:allservices:OS_Ttimer_Pause|OS_Ttimer_Pause]]##  |  ''()''  | Останавливаем таймер текущей задачи. Флаг переполнения утсанавливается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |
| ##[[osa:ref:allservices:OS_Ttimer_Continue|OS_Ttimer_Continue]]##  |  ''()''  | Восстанавливаем счет таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task_plus.png|Разрешается вызов из задачи и функций, вызываемых задачей (любой вложенности)}}  |


~~UP~~

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


^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание/удаление**  ||||
| ##[[osa:ref:allservices:OS_Stimer_Alloc|OS_Stimer_Alloc]]##  |  ''(var_stimer_id)''  | Выделяет не занятый на данный момент времени таймер и возвращает его номер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| ##[[osa:ref:allservices:OS_Stimer_Free|OS_Stimer_Free]]##  |  ''(stimer_id)''  | Помечает таймер как свободный  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Stimer_Found|OS_Stimer_Found]]##  |  ''()''  | Проверяет, есть ли свободный статический таймер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}  |
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Stimer_Run|OS_Stimer_Run]]##  |  ''(stimer_id, time)''  | Запустить таймер stimer_id на отсчет времени time. Флаг переполнения сбрасывается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Stimer_Break|OS_Stimer_Break]]##  |  ''(qtimer)''  | Останавливаем таймер. Флаг переполнения устанавливается   | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Stimer_Wait|OS_Stimer_Wait]]##  |  ''(stimer_id)''  | Ожидаем завершения счета таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Stimer_Delay|OS_Stimer_Delay]]##  |  ''(stimer_id, delay)''  | Выдержать задержку с применением статического таймера stimer_id  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| **Проверка**    ||||
| ''[[osa:ref:description:data_types#_OST_STIMER|_OST_STIMER]] ''\\ ##[[osa:ref:allservices:OS_Stimer_Get|OS_Stimer_Get]]##  |  ''(stimer_id)''  | Получить оставшееся время счета (необходимо запрещать прерывания)  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Stimer_Check|OS_Stimer_Check]]##  |  ''(stimer_id)''  | Проверить, было ли переполнение.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Stimer_IsRun|OS_Stimer_IsRun]]##  |  ''(stimer_id)''  | Проверить, считает ли таймер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| **Дополнительно** |||
| ##[[osa:ref:allservices:OS_Stimer_Pause|OS_Stimer_Pause]]##  |  ''(stimer_id)''  | Останавливаем таймер. Флаг переполнения утсанавливается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Stimer_Continue|OS_Stimer_Continue]]##  |  ''(stimer_id)''  | Восстанавливаем счет таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |




~~UP~~


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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание/Удаление**    ||||
| ##[[osa:ref:allservices:OS_Qtimer_Create|OS_Qtimer_Create]]##  |  ''(qtimer)''  | Добавляет qtimer в очередь активных таймеров. После создания таймер обнулен остановлен, флаг переполнения сброшен.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_Qtimer_Delete|OS_Qtimer_Delete]]##  |  ''(qtimer)''  | Удаляет qtimer из очереди активных таймеров.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Qtimer_Run|OS_Qtimer_Run]]##  |  ''(qtimer, time)''  | Запустить qtimer на отсчет времени time с момента вызова этого сервиса. Флаг переполнения сбрасывается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Qtimer_Break|OS_Qtimer_Break]]##  |  ''(qtimer)''  | Останавливаем таймер. Флаг переполнения устанавливается   | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Qtimer_Wait|OS_Qtimer_Wait]]##  |  ''(qtimer)''  | Ожидаем завершения счета таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Qtimer_Delay|OS_Qtimer_Delay]]##  |  ''(qtimer, time)''  | Выдержать задержку с использованием таймера qtimer  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| **Проверка**  ||||
| ''[[osa:ref:description:data_types#_OST_QTIMER|_OST_QTIMER]] ''\\ ##[[osa:ref:allservices:OS_Qtimer_Get|OS_Qtimer_Get]]##  |  ''(qtimer)''  | Получить оставшееся время счета  (необходимо запрещать прерывания)  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Qtimer_Check|OS_Qtimer_Check]]##  |  ''(qtimer)''  | Проверить, было ли переполнение.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Qtimer_IsRun|OS_Qtimer_IsRun]]##  |  ''(qtimer)''  | Проверить, считает ли таймер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |


~~UP~~


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

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

^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Создание/Удаление**    ||||
| ##[[osa:ref:allservices:OS_Dtimer_Create|OS_Dtimer_Create]]##  |  ''(dtimer)''  | Добавляет dtimer в очередь активных таймеров. После создания таймер обнулен остановлен, флаг переполнения сброшен.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Delete|OS_Dtimer_Delete]]##  |  ''(dtimer)''  | Удаляет dtimer из очереди активных таймеров.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}}  |
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Dtimer_Run|OS_Dtimer_Run]]##  |  ''(dtimer, newtime)''  | Запустить dtimer на отсчет времени newtime с момента вызова этого сервиса. Флаг переполнения сбрасывается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Break|OS_Dtimer_Break]]##  |  ''(dtimer)''  | Останавливаем таймер. Он остается активным, но не увеличивается при выполнении ##[[osa:ref:allservices:OS_Timer|OS_Timer]]##(). Флаг переполнения устанавливается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Wait|OS_Dtimer_Wait]]##  |  ''(dtimer)''  | Ожидаем завершения счета таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Delay|OS_Dtimer_Delay]]##  |  ''(dtimer, delay)''  | Выдержать задержку с использованием динамического таймера dtimer  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
| **Проверка**  ||||
| ''[[osa:ref:description:data_types#_OST_DTIMER|_OST_DTIMER]] ''\\ ##[[osa:ref:allservices:OS_Dtimer_Get|OS_Dtimer_Get]]##  |  ''(dtimer)''  | Получить оставшееся время счета  (необходимо запрещать прерывания)  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Dtimer_Check|OS_Dtimer_Check]]##  |  ''(dtimer)''  | Проверить, было ли переполнение.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Dtimer_IsRun|OS_Dtimer_IsRun]]##  |  ''(dtimer)''  | Проверить, считает ли таймер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| **Дополнительно**  ||||
| ##[[osa:ref:allservices:OS_Dtimer_Pause|OS_Dtimer_Pause]]##  |  ''(dtimer)''  | Останавливаем таймер. Он остается активным, но не увеличивается при выполнении ##[[osa:ref:allservices:OS_Timer|OS_Timer]]##(). Флаг переполнения остается без изменений.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Continue|OS_Dtimer_Continue]]##  |  ''(dtimer)''  | Восстанавливаем счет таймера.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Update|OS_Dtimer_Update]]##  |  ''(dtimer, time)''  | Запустить таймер на отсчет времени time с момента последнего переполнения. Флаг переполнения сбрасывается.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Dtimer_Add|OS_Dtimer_Add]]##  |  ''(dtimer, addtime)''  | Добавить время к таймеру во время счета. Флаг переполнения остается без изменений.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Dtimer_IsActive|OS_Dtimer_IsActive]]##  |  ''(dtimer)''  | Проверить, есть ли таймер в списке активных таймеров.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ''bool ''\\ ##[[osa:ref:allservices:OS_Dtimer_IsStopped|OS_Dtimer_IsStopped]]##  |  ''(dtimer)''  | Проверить, остановлен ли таймер  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |


~~UP~~



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


^  Сервис  ^  Аргументы  ^  Описание  ^  Свойства  ^
| **Управление**  ||||
| ##[[osa:ref:allservices:OS_Oldtimer_Run8|OS_Oldtimer_Run8]]##  |  ''(timer8_id, time)''  | Запустить 8-разрядный таймер для отсчета  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Oldtimer_Run16|OS_Oldtimer_Run16]]##  |  ''(timer16_id, time)''  | Запустить 16-разрядный таймер для отсчета  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Oldtimer_Run24|OS_Oldtimer_Run24]]##  |  ''(timer24_id, time)''  | Запустить 24-разрядный таймер для отсчета  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Oldtimer_Run32|OS_Oldtimer_Run32]]##  |  ''(timer32_id, time)''  | Запустить 32-разрядный таймер для отсчета  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| ##[[osa:ref:allservices:OS_Oldtimer_Stop|OS_Oldtimer_Stop]]##  |  ''(timer_id)''  | Останавливаем таймер (при этом устанавливается флаг Timeout для этого таймера)  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| **Проверка**    ||||
| ''bool ''\\ ##[[osa:ref:allservices:OS_Oldtimer_Check|OS_Oldtimer_Check]]##  |  ''(timer_id)''  | Проверить, закончил ли таймер счет.  | {{osa:ref:attr_call_to.png|Использует системный таймер}}  |
| **Ожидание**    ||||
| ##[[osa:ref:allservices:OS_Oldtimer_Wait|OS_Oldtimer_Wait]]##  |  ''(timer_id)''  | Ожидаем завершения счета таймера  | {{osa:ref:attr_call_to.png|Использует системный таймер}}{{osa:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}{{osa:ref:attr_call_ct_sw.png|Переключает контекст}}  |
~~UP~~