• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

epics/apps/cbm_jul12/cbmApp/src/devcaDIMInterfaceSoft.h (r4864/r2274)

Go to the documentation of this file.
00001 #ifndef DEVCADIMINTERFACESOFT_H_
00002 #define DEVCADIMINTERFACESOFT_H_
00003 #include "initHooks.h"
00004 
00005 /*
00006 #ifndef DABC_SUPPORT
00007 #warning explicitly setting DABC_SUPPORT
00008 #define DABC_SUPPORT
00009 #endif
00010 */
00011 
00012 void error_routine (int severity, int error_code, char* message);
00013 void client_exit_routine (int *tag);
00014 void exit_routine (int *code);
00015 bool makeServerName(struct dbCommon* pRecord);
00016 int errorDeactivateRecord(struct dbCommon *pRecord, int line, char* fcn, char* format, ... );
00017 
00018 char* setRecordVariablesString(char **element, char argument[], char discription[], char key);
00019 
00020 typedef struct recordVariables
00021 {
00022    void *dimData;
00023    unsigned int dataSize;
00024    void *recordAddress;
00025    unsigned int   index;
00026    int   dimCommandServiceID;
00027    int   dimServiceServiceID;
00028    char  dimTierType;
00029    int   calledFromCallback;
00030    char *dimCommandName;
00031    char *dimServiceName;
00032    char *dimCommandFormat;
00033    char *dimServiceFormat;
00034    char *dimServiceDataTypes;
00035    char *dimCommandDataTypes;
00036    unsigned int dimNumberOfServiceFormats;
00037    unsigned int dimNumberOfCommandFormats;
00038    unsigned int *dimNumberOfServiceDataTypesPerFormat;
00039    unsigned int *dimNumberOfCommandDataTypesPerFormat;
00040    char *dimDnsAddress;
00041    int   dimDnsPort;
00042    char *recordType;
00043    int   recordTypeIndex;
00044    char *dimServicesNamePrefix;
00045    bool  dimServiceExists;
00046    bool  dimCommandExists;
00047    char* dimGetDefaultSuffix;
00048    char* dimPutDefaultSuffix;
00049    int dimServiceScanType;
00050    int dimServiceScanInterval;
00051    bool clientServiceCallbackOk;
00052    bool serverCommandCallbackOk;
00053    unsigned int dimDataTypeFormatIndexOfInterest;
00054    bool stringTransportCommand;
00055    bool stringTransportService;
00056    bool stringTransportBoth;
00057    char *dimStringTransportCommandFormat;
00058    char *dimStringTransportServiceFormat;
00059    char *dimStringTransportServiceDataTypes;
00060    char *dimStringTransportCommandDataTypes;
00061    unsigned int dimStringTransportNumberOfServiceFormats;
00062    unsigned int dimStringTransportNumberOfCommandFormats;
00063    unsigned int *dimStringTransportNumberOfServiceDataTypesPerFormat;
00064    unsigned int *dimStringTransportNumberOfCommandDataTypesPerFormat;
00065 
00066    bool dimCreateBoth;
00067    bool complexDataType;
00068    bool isString;
00069 #ifdef DABC_SUPPORT
00070    bool dabcRecord;
00071    unsigned int dabcRecordTypeIndex;
00072 #endif
00073 
00074 } recordVariables;
00075 
00076 void dumpStruct ( struct recordVariables *rec, FILE *stream );
00077 recordVariables* createAndInitVariables( struct dbCommon        *pRecord );
00078 void clearStructRecordVariables( struct recordVariables *thisRecord );
00079 epicsEnum16 determineRecordType(struct dbCommon* pRecord);
00080 bool checkValidType(char *type);
00081 bool disassembleFormat(char formatString[],
00082                        unsigned int* dimNumberOfCommandFormats,
00083                        char** dimCommandDataTypes,
00084                        unsigned int** dimNumberOfCommandDataTypesPerFormat );
00085 bool supplementServersNamesAndFormats(struct recordVariables *thisRecord);
00086 bool supplementServersFormat(struct recordVariables *thisRecord);
00087 bool supplementStringTransportServersFormat(struct recordVariables *thisRecord);
00088 bool recreateServersSupplementNames(char** element, char name[], char suffix[], char title[]);
00089 bool setCombinedDnsAddressAndPort(struct recordVariables* thisRecord, char argumentArray[]);
00090 bool setCombinedClientServiceScanTypeAndInterval(struct recordVariables* thisRecord, char argument[]);
00091 bool checkValidUnsignedInt(char arg[]);
00092 bool setDnsAddress(struct recordVariables *thisRecord);
00093 bool setDnsPort(struct recordVariables *thisRecord);
00094 long copyEpicsToDimData(struct recordVariables *thisRecord);
00095 long copyDimToEpicsData(struct recordVariables *thisRecord);
00096 unsigned int calculateDataSize(unsigned int numberOfFormats,
00097                                char dataTypes[],
00098                                unsigned int numberOfDataTypesPerFormat[]);
00099 unsigned int determineDataSize(struct recordVariables *thisRecord);
00100 bool checkConsistencyFormatTypes(struct recordVariables *thisRecord);
00101 bool checkConsistencyRecordSpecific(struct recordVariables *thisRecord);
00102 bool addServersPrefix(struct recordVariables *thisRecord);
00103 bool setServersDefaultDataFormat(struct recordVariables *thisRecord);
00104 bool getServiceFormat(char *serviceFormat, struct recordVariables *thisRecord);
00105 bool getCommandFormat(char *serviceFormat, struct recordVariables *thisRecord);
00106 bool retrieveAndSetClientServicesFormat(struct recordVariables *thisRecord);
00107 int  clearString( char string[], uint size);
00108 epicsUInt16 getArrayIndexOfMatchingStringElement( const char* string, char* array[], epicsUInt16 arraySize );
00109 
00110 epicsBoolean DIMextensionComplexStructureStringFormatChecks(char format[], int dimNumberOfFormats, char dimDataTypes[], char key[], char argument[], unsigned int dataTypeFormatIndexOfInterest);
00111 epicsBoolean parseDIMextensionComplexStructureString(struct recordVariables *thisRecord, char key[], char argument[]);
00112 epicsBoolean getInputOutputLink(struct dbCommon* pRecord, DBLINK *inputOutputLink);
00113 epicsBoolean setDimTierType(struct recordVariables *thisRecord, const char dimTierType);
00114 
00115 void processRecordByCallback(struct recordVariables *calledBackRecord);
00116 
00117 extern const char *DIMInterfaceSupportedRecordNames[];
00118 extern const char DIMInterfaceSupportedDIMDataTypesNames [];
00119 extern char *DIMextensionsComplexStructureNames [];
00120 
00121 int caDevInterfaceHookInit(void);
00122 
00123 #endif /*DEVCADIMINTERFACESOFT_H_*/

Generated on Tue Dec 10 2013 04:52:21 for ROCsoft by  doxygen 1.7.1