Текущий раздел:

Описания RDS

Приложения

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

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

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

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

# Приложения

## Приложение А. Функции, константы и структуры 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 {
        RDSCSTR ModelNameA;       // Имя модели (UTF8)
        RDSWCSTR ModelNameW;      // Имя модели (UTF16)
        //RDSXCSTR ModelName;     // Имя модели (поле-псевдоним)
        RDSCSTR ModelNameUCA;     // Имя модели в верхнем регистре (UTF8)
        RDSWCSTR ModelNameUCW;    // Имя модели в верхнем регистре (UTF16)
        //RDSXCSTR ModelNameUC;   // Имя модели в верхнем регистре (поле-псевдоним)
        RDSCSTR AltModelNameA;    // Альтернативное имя модели (UTF8)
        RDSWCSTR AltModelNameW;   // Альтернативное имя модели (UTF16)
        //RDSXCSTR AltModelName;  // Альтернативное имя модели (поле-псевдоним)
        RDS_BHANDLE Block;        // Идентификатор блока
        RDSINT32 AttachReason;    // Причина подключения (RDS_COMP_AR_*)
        BOOL ChangeModel;         // Возврат: подключить другую
                                  // модель вместо этой
      } RDS_COMPCANATTACHBLKDATA;
      typedef RDS_COMPCANATTACHBLKDATA *RDS_PCOMPCANATTACHBLKDATA;

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

ModelNameA(RDSCSTR),ModelNameW(RDSWCSTR),ModelName(RDSXCSTR)
  Указатель на строку во внутренней памяти RDS, содержащую имя подключаемой к блоку модели в том виде, в каком его указал пользователь. Функция модуля не должна изменять это поле.
ModelNameUCA(RDSCSTR),ModelNameUCW(RDSWCSTR),ModelNameUC(RDSXCSTR)
  Указатель на строку во внутренней памяти RDS, содержащую имя подключаемой к блоку модели в верхнем регистре. Функция модуля не должна изменять это поле.
AltModelNameA(RDSCSTR),AltModelNameW(RDSWCSTR),AltModelName(RDSXCSTR)
  Указатель на строку во внутренней памяти 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.