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

Описания RDS

Приложения

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

А.5. Сервисные функции и макросы RDS

А.5.7. Сохранение и загрузка состояния схемы

А.5.7.4. rdsSaveSystemState – сохранить состояние блока/подсистемы

# Приложения

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

### А.5. Сервисные функции и макросы RDS

#### А.5.7. Сохранение и загрузка состояния схемы

##### А.5.7.4. rdsSaveSystemState – сохранить состояние блока/подсистемы

Функция rdsSaveSystemState сохраняет в памяти состояние указанного блока или подсистемы. Позже это состояние может быть загружено функцией rdsLoadSystemState.

      int RDSCALL rdsSaveSystemState(
        RDS_BHANDLE Block,    // Блок или подсистема
        int StateNum,         // Номер состояния или -1
        BOOL Recurse,         // Включать вложенные блоки
        RDS_BBhpB CallBack    // Функция проверки
      );

Тип указателя на эту функцию

RDS_IBhIBCb2

Параметры

Block(RDS_BHANDLE)
  Идентификатор блока (подсистемы), состояние которого нужно сохранить.
StateNum(int)
  Номер ранее сохраненного состояния схемы, которое нужно заменить на сохраняемое, или −1, если нужно создать в памяти новое сохраненное состояние.
Recurse(BOOL)
  Если Block – подсистема, в этом параметре передается TRUE, если нужно сохранять состояние не только этой подсистемы и всех блоков, непосредственно находящихся в ней, но всех блоков во всех ее вложенных подсистемах. FALSE, если нужно вызывать функцию только для блоков, непосредственно находящихся в подсистеме Block. Если Block – не подсистема, этот параметр игнорируется.
CallBack(RDS_BBhpB)
  Указатель на пользовательскую функцию, которую нужно вызвать для каждого блока, состояние которого будет сохраняться, или NULL, если такой функции нет. С помощью этой пользовательской функции можно, при необходимости, запретить запись состояния отдельных блоков. Она должна иметь следующий вид:

        BOOL RDSCALL имя_функции(RDS_BHANDLE block,BOOL *pgo);

  В параметре block пользовательской функции передается идентификатор блока, состояние которого должно сейчас сохраниться. Если состояние этого блока нужно сохранять, функция должна вернуть TRUE, если же его нужно пропустить и перейти к записи состояния следующего блока, функция должна вернуть FALSE. В параметре pgo передается указатель на логическую переменную, в которую функция может записать FALSE (исходно в этой переменной находится TRUE), чтобы после обработки блока block прекратить запись состояний оставшихся блоков.

Возвращаемое значение

Номер сохраненного состояния, который может использоваться для его загрузки функцией rdsLoadSystemState и удаления функцией rdsDeleteSystemState.

Примечания

Эта функция сохраняет в памяти текущее состояние отдельного блока или подсистемы. Если в параметре Block передан идентификатор простого блока, внешнего входа/выхода или ввода шины, сохраняется состояние только этого блока. Если в параметре Block передан идентификатор подсистемы, сохраняется состояние этой подсистемы и всех непосредственно находящихся в ней блоков. Если параметр Recurse имеет значение TRUE, будут также сохранены состояния всех блоков, находящихся в подсистеме Block на более низких уровнях иерархии (внутренние блоки внутренних подсистем). При необходимости, в параметре CallBack можно передать указатель на функцию обратного вызова, с помощью которой можно разрешать или запрещать сохранение состояния каждого из блоков, а также прервать сохранение состояния в нужный момент. Если в CallBack передано значение NULL, будут записаны все состояния блоков, удовлетворяющих параметрам функции.

При сохранении состояния блока в память записываются значения всех его статических переменных, после чего модель блока вызывается для реакции на событие RDS_BFM_SAVESTATE, в которой она должна записать в память все остальные данные, относящиеся к текущему состоянию блока. Сохраненному состоянию присваивается уникальный целый номер, который можно использовать для его последующей загрузки или удаления. Можно не создавать новое сохраненное состояние, а заменить им уже существующее, передав в параметре StateNum номер этого существующего состояния (функция в этом случае вернет число, равное StateNum).

Пример

Пример использования функции rdsSaveSystemState приведен в §2.14.3 руководства программиста.

См. также

rdsLoadSystemState, rdsDeleteSystemState, RDS_BFM_LOADSTATE, RDS_BFM_SAVESTATE, rdsWriteBlockData.