|
|
Line 1: |
Line 1: |
| == EPICS: IOC database access == | | == EPICS: IOC database access == |
| May 25 2005 | | May 26 2005 |
| <center> | | <center> |
|
| |
|
Line 10: |
Line 10: |
| implement and how it uses dbdClass definitions to implement the | | implement and how it uses dbdClass definitions to implement the |
| actions. | | actions. |
|
| |
|
| |
| Not yet defined is how the following are created:
| |
| * DbdStructList - The list of the description of each structure type.
| |
| * DbdRecordList - The list of the description of each record type.
| |
| * DbdLinkList - The list of the description of each DBD link definition
| |
| * DbdDeviceList - The list of the description of each DBD device definition.
| |
|
| |
| The following assumes that these lists have been created.
| |
|
| |
| ----
| |
| <center>
| |
|
| |
| == dbLoadRecords ==
| |
| </center>
| |
|
| |
| To create and initialize a new record instance the following is done:
| |
|
| |
| allocate a DbdRecordInstance
| |
| Search DbdRecordList to find DbdRecord (record type description)
| |
| Call DbdRecord.plifetime->allocate
| |
| for each DbdStructField in DbdRecord.pfield
| |
| switch DbdStructField.type
| |
| case: epicsBooleanT, ..., epicsFloat64T
| |
| initialize the field if DbdStructFieldAttribute.default is defined.
| |
| break;
| |
| case: epicsStructT
| |
| initialize EpicsStruct.pstructDef
| |
| Call EpicsStructDef.plifetime->allocate
| |
| break;
| |
| case: epicsStructT
| |
| initialize EpicsStruct.pstructDef
| |
| Call EpicsStructDef.plifetime->allocate
| |
| break;
| |
| default:
| |
| do nothing. Let record support handle it
| |