Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.3. События модуля автокомпиляции и связанные с ними структуры

А.3.4. События модуля автокомпиляции

А.3.4.2. RDS_COMPM_CANATTACHBLK – проверка возможности подключения модели к блоку

Первый параметр функции модуля (int CallMode)

Константа RDS_COMPM_CANATTACHBLK.

Третий параметр функции модуля (void *ExtParam)

Указатель на структуру RDS_COMPCANATTACHBLKDATA, содержащую идентификатор блока, идентификатор подключаемой к нему модели и причину подключения.

Возвращаемое функцией модуля значение

RDS_COMPR_DONE Подключение данной модели к данному блоку возможно.
RDS_COMPR_ERROR Подключение данной модели к данному блоку невозможно, выводится сообщение об ошибке.
RDS_COMPR_ERRORNOMSG Подключение данной модели к данному блоку невозможно, сообщение об ошибке не выводится.

Примечания

Событие RDS_COMPM_CANATTACHBLK возникает непосредственно перед подключением автокомпилируемой модели к блоку. Данные модели в этот момент еще не созданы и идентификатора для нее еще нет, поэтому в структуре параметров события RDS_COMPCANATTACHBLKDATA передается только имя модели. Реагируя на этот вызов, функция модуля должна проверить принципиальную возможность подключения данной модели к данному блоку. Например, модель, использующая статические переменные, не может подключаться к подсистемам, внешним входам/выходам и вводам шин, поскольку их структура переменных устроена не так, как у простых блоков. Если подключение модели к блоку невозможно, функция либо возвращает константу RDS_COMPR_ERROR или RDS_COMPR_ERRORNOMSG, либо вызывает сервисную функцию rdscompAttachDifferentModel, сообщая RDS, что, хотя модель с данными именем подключить нельзя, вместо нее можно подключить модель с другим именем.

В параметре ExtParam при реакции на событие RDS_COMPM_CANATTACHBLOCK передается указатель на структуру RDS_COMPCANATTACHBLKDATA:

  typedef struct {
     ModelNameA;       // Имя модели (UTF8)
     ModelNameW;      // Имя модели (UTF16)
    // ModelName;     // Имя модели ()
     ModelNameUCA;     // Имя модели в верхнем регистре (UTF8)
     ModelNameUCW;    // Имя модели в верхнем регистре (UTF16)
    // ModelNameUC;   // Имя модели в верхнем регистре ()
     AltModelNameA;    // Альтернативное имя модели (UTF8)
     AltModelNameW;   // Альтернативное имя модели (UTF16)
    // AltModelName;  // Альтернативное имя модели ()
     Block;        // Идентификатор блока
     AttachReason;    // Причина подключения (RDS_COMP_AR_*)
     ChangeModel;         // Возврат: подключить другую
                              // модель вместо этой
  } RDS_COMPCANATTACHBLKDATA;
  typedef RDS_COMPCANATTACHBLKDATA *RDS_PCOMPCANATTACHBLKDATA;

Поля структуры

ModelNameA (RDSCSTR), ModelNameW (RDSWCSTR), ModelName (RDSXCSTR)
Указатель на строку во внутренней памяти RDS, содержащую имя подключаемой к блоку модели в том виде, в каком его указал пользователь. Функция модуля не должна изменять это поле.
ModelNameUCA (), ModelNameUCW (), ModelNameUC ()
Указатель на строку во внутренней памяти RDS, содержащую имя подключаемой к блоку модели в верхнем регистре. Функция модуля не должна изменять это поле.
AltModelNameA (), AltModelNameW (), AltModelName ()
Указатель на строку во внутренней памяти RDS, содержащую альтернативное имя подключаемой к блоку модели. Функция модуля не должна изменять это поле.
Block (RDS_BHANDLE)
Идентификатор блока, к которому подключается указанная модель.
AttachReason (RDSINT32)
Причина подключения модели к блоку – одна из констант RDS_COMP_AR_*.
ChangeModel (BOOL)
Возвращаемый признак подключения другой модели. Перед вызовом функции модуля для реакции на событие RDS_COMPM_CANATTACHBLK RDS записывает в это поле значение FALSE. Если функция модуля хочет подключить к указанному блоку другую модель вместо той, имя которой передано в поле ModelName, она должна записать в ChangeModel значение TRUE, указать новое имя подключаемой модели вызовом сервисной функции rdscompAttachDifferentModel, и вернуть значение RDS_COMPR_DONE.

Пример

Пример реакции модуля на это событие приведен в §3.3 руководства программиста.

См. также

RDS_COMPM_ATTACHBLOCK, rdscompAttachDifferentModel.


<< >> Оглавление Указатель