====== 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~~