Платформонезависимое беззнаковое 8-битное целое
Платформонезависимое беззнаковое 16-битное целое
Платформонезависимое беззнаковое 32-битное целое
Платформозависимое беззнаковое целое. Имеет разрядность шины данных выбранного контроллера.
Тип счетного семафора.
typedef OST_UINT8 OST_CSEM;
Тип доступен, только если в OSAcfg.h определена константа OS_ENABLE_CSEM
Этот тип можно изменить, задав вручную его размерность в файле OSAcfg.h:
#define OS_CSEM_SIZE 4
Допустимые значения для OS_CSEM_SIZE:
1 | OST_UINT8 (0..2^8-1) |
2 | OST_UINT16 (0..2^16-1) |
4 | OST_UINT32 (0..2^32-1) |
Флаги.
typedef OST_UINT8 OST_FLAG; typedef OST_UINT16 OST_FLAG16; typedef OST_UINT32 OST_FLAG32;
Указатель на сообщение.
typedef void * OST_MSG;
Этот тип можно переопределить, задав константу OS_MSG_TYPE в файле OSAcfg.h:
typedef struct { char * Name; char Age; } MyType; #define OS_MSG_TYPE MyType *
OS_MSG_TYPE можно задавать любым: от простого целого до указателя на память программы.
Дескриптор указателя на сообщения. Помимо самого указателя содержит флаг состояния свободен/занят.
typedef struct { char status; // Состояние (активно/неактивно) OST_MSG msg; // Указатель на сообщение } OST_MSG_CB;
Возможно переопределение только самого указателя OST_MSG.
Динамический таймер.
typedef struct { OST_DTIMER_FLAGS Flags; // Флаги управления и состояния таймера void * Next; // Указатель на следующий таймер OS_DTIMER_TYPE Timer; // Сам таймер } OST_DTIMER;
Каждый таймер помимо самого счетчика содержит информацию о состоянии таймера. Флаги состояния говорят обработчику OS_Timer, нужно ли увеличивать значение таймера, является ли таймер активным и т.д.
Flags | Флаги состояния (см. OST_DTIMER_FLAGS) |
Next | Указатель на следующий активный таймер в списке |
Timer | Сам счетчик. Разрядность определяется константой OS_DTIMER_SIZE |
Т.к. сам счетчик имеет тип системного таймера, то разрядность динамического таймера можно изменить, задав константу OS_DTIMER_SIZE в файле OSAcfg.h:
#define OS_DTIMER_SIZE 4
Допустимые значения для OS_DTIMER_SIZE:
1 | OST_UINT8 (0..2^8-1) |
2 | OST_UINT16 (0..2^16-1) |
4 | OST_UINT32 (0..2^32-1) |
Таймер для работы с очередью таймеров.
typedef struct { OST_QTIMER_FLAGS Flags; // Флаги управления и состояния таймера void * Next; // Указатель на следующий таймер OS_QTIMER_TYPE Timer; // Сам таймер } OST_QTIMER;
Каждый таймер помимо самого счетчика содержит информацию о состоянии таймера. Флаги состояния говорят обработчику OS_Timer, нужно ли увеличивать значение таймера.
Flags | Флаги состояния (см. OST_QTIMER_FLAGS) |
Next | Указатель на следующий активный таймер в списке |
Timer | Сам счетчик. Разрядность определяется константой OS_QTIMER_SIZE |
Т.к. сам счетчик имеет тип системного таймера, то разрядность таймера можно изменить, задав константу OS_QTIMER_SIZE в файле OSAcfg.h:
#define OS_QTIMER_SIZE 4
Допустимые значения для OS_QTIMER_SIZE:
1 | OST_UINT8 (0..2^8-1) |
2 | OST_UINT16 (0..2^16-1) |
4 | OST_UINT32 (0..2^32-1) |
Очередь указателей на сообщения.
typedef struct { OST_QUEUE_CONTROL Q; OST_MSG *pMsg; // Указатель на саму очередь } OST_QUEUE;
Q - блок управления очередью. pMsg - указатель на буфер в памяти, где будут храниться сами указатели на сообщения.
Возможно переопределение только указателя на сообщение OST_MSG.
Очередь коротких однобайтовых сообщений.
typedef struct { OST_QUEUE_CONTROL Q; OST_SMSG *pSMsg; // Указатель на очередь сообщений } OST_SQUEUE;
Q - блок управления очередью. pSMsg - указатель на буфер в памяти, где будут храниться теля коротких однобайтовых сообщений.
Возможно переопределение только тип короткого сообщения OST_SMSG.
Короткое однобайтовое сообщение. Предназначено для обмена задачами коротких сообщений, не прибегая к использованию указателей.
typedef OST_UINT8 OST_SMSG;
Этот тип можно переопределить, задав константу OS_SMSG_TYPE в файле OSAcfg.h:
#define OS_SMSG_TYPE unsigned long
Допустимы любые перечислимые типы. Следует помнить, что это сообщение не имеет отдельного блока управления или дескриптора, который бы содержал информацию о состоянии сообщения (свободно/занято). Эта информация в самом сообщении: =0 - свободно, !=0 - занято.
переменные этого типа используются для управления задачами из любого метса программы. Декрипторы задач недоступны напрямую, поэтому доступ к ним осуществляется через указатели на них.
typedef OS_TASKS_BANK OST_TCB * OST_TASK_POINTER;
Следует обратить внимание, что изпользуется префикс OS_TASKS_BANK.
Тип счетчика динамического таймера.
#if OS_DTIMER_SIZE == 1 #define OS_DTIMER_TYPE OST_UINT8 #elif OS_DTIMER_SIZE == 2 #define OS_DTIMER_TYPE OST_UINT16 #elif OS_DTIMER_SIZE == 4 #define OS_DTIMER_TYPE OST_UINT32 #endif
Если константа OS_DTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.
Тип статического таймера.
#if OS_STIMER_SIZE == 1 #define OS_STIMER_TYPE OST_UINT8 #elif OS_STIMER_SIZE == 2 #define OS_STIMER_TYPE OST_UINT16 #elif OS_STIMER_SIZE == 4 #define OS_STIMER_TYPE OST_UINT32 #endif
Если константа OS_STIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.
Тип таймера в задачах.
#if OS_TTIMER_SIZE == 1 #define OS_TTIMER_TYPE OST_UINT8 #elif OS_TTIMER_SIZE == 2 #define OS_TTIMER_TYPE OST_UINT16 #elif OS_TTIMER_SIZE == 4 #define OS_TTIMER_TYPE OST_UINT32 #endif
Если константа OS_TTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.
Тип таймера в очереди таймеров.
#if OS_QTIMER_SIZE == 1 #define OS_QTIMER_TYPE OST_UINT8 #elif OS_QTIMER_SIZE == 2 #define OS_QTIMER_TYPE OST_UINT16 #elif OS_QTIMER_SIZE == 4 #define OS_QTIMER_TYPE OST_UINT32 #endif
Если константа OS_QTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.