Available Languages?:

OSA : Типы данных

Системные

OST_UINT8

Платформонезависимое беззнаковое 8-битное целое

OST_UINT16

Платформонезависимое беззнаковое 16-битное целое

OST_UINT32

Платформонезависимое беззнаковое 32-битное целое

OST_WORD

Платформозависимое беззнаковое целое. Имеет разрядность шины данных выбранного контроллера.

Общие

OST_CSEM

Тип счетного семафора.

Определение

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)

OST_FLAG

Флаги.

Определение

typedef OST_UINT8   OST_FLAG;
typedef OST_UINT16  OST_FLAG16;
typedef OST_UINT32  OST_FLAG32;

Переопределение

Не предусмотрено.

OST_MSG

Указатель на сообщение.

Определение

typedef void * OST_MSG;

Переопределение

Этот тип можно переопределить, задав константу OS_MSG_TYPE в файле OSAcfg.h:

typedef struct
{
    char * Name;
    char Age;
} MyType;
 
#define OS_MSG_TYPE MyType *

OS_MSG_TYPE можно задавать любым: от простого целого до указателя на память программы.

OST_MSG_CB

Дескриптор указателя на сообщения. Помимо самого указателя содержит флаг состояния свободен/занят.

Определение

typedef struct
{
    char      status;     // Состояние (активно/неактивно)
    OST_MSG   msg;        // Указатель на сообщение
} OST_MSG_CB;

Переопределение

Возможно переопределение только самого указателя OST_MSG.

OST_DTIMER

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

Определение

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)

OST_QTIMER

Таймер для работы с очередью таймеров.

Определение

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)

OST_QUEUE

Очередь указателей на сообщения.

Определение

typedef struct
{
    OST_QUEUE_CONTROL Q;
    OST_MSG *pMsg;              // Указатель на саму очередь
} OST_QUEUE;

Q - блок управления очередью. pMsg - указатель на буфер в памяти, где будут храниться сами указатели на сообщения.

Переопределение

Возможно переопределение только указателя на сообщение OST_MSG.

OST_SQUEUE

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

Определение

typedef struct {
    OST_QUEUE_CONTROL Q;
    OST_SMSG *pSMsg;             // Указатель на очередь сообщений
} OST_SQUEUE;

Q - блок управления очередью. pSMsg - указатель на буфер в памяти, где будут храниться теля коротких однобайтовых сообщений.

Переопределение

Возможно переопределение только тип короткого сообщения OST_SMSG.

OST_SMSG

Короткое однобайтовое сообщение. Предназначено для обмена задачами коротких сообщений, не прибегая к использованию указателей.

Определение

typedef OST_UINT8   OST_SMSG;

Переопределение

Этот тип можно переопределить, задав константу OS_SMSG_TYPE в файле OSAcfg.h:

#define OS_SMSG_TYPE unsigned long

Допустимы любые перечислимые типы. Следует помнить, что это сообщение не имеет отдельного блока управления или дескриптора, который бы содержал информацию о состоянии сообщения (свободно/занято). Эта информация в самом сообщении: =0 - свободно, !=0 - занято.

OST_TASK_POINTER

переменные этого типа используются для управления задачами из любого метса программы. Декрипторы задач недоступны напрямую, поэтому доступ к ним осуществляется через указатели на них.

Определение

typedef OS_TASKS_BANK OST_TCB *  OST_TASK_POINTER;

Следует обратить внимание, что изпользуется префикс OS_TASKS_BANK.

Переопределение

Невозможно

Счетчики таймеров

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

Если константа OS_DTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.

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

Если константа OS_STIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.

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

Если константа OS_TTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.

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

Если константа OS_QTIMER_SIZE не определена, то по умолчанию она будет равна OS_TIMER_SIZE.

 
osa/ref/description/data_types.txt · Последние изменения: 23.11.2010 13:22 От osa_chief
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki