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