00001 #ifndef _ots_FESlowControlsChannel_h_
00002 #define _ots_FESlowControlsChannel_h_
00003
00004 #include <string>
00005 #include <iostream>
00006
00007 namespace ots
00008 {
00009
00010 class FESlowControlsChannel
00011 {
00012 public:
00013 FESlowControlsChannel(
00014 const std::string& interfaceUID,
00015 const std::string& channelName,
00016 const std::string& dataType,
00017 unsigned int universalDataSize,
00018 unsigned int universalAddressSize,
00019 const std::string& universalAddress,
00020 unsigned int universalDataBitOffset,
00021 bool readAccess,
00022 bool writeAccess,
00023 bool monitoringEnabled,
00024 bool recordChangesOnly,
00025 time_t delayBetweenSamples,
00026 bool saveEnabled,
00027 const std::string& savePath,
00028 const std::string& saveFileRadix,
00029 bool saveBinaryFormat,
00030 bool alarmsEnabled,
00031 bool latchAlarms,
00032 const std::string& lolo,
00033 const std::string& lo,
00034 const std::string& hi,
00035 const std::string& hihi
00036 );
00037
00038 ~FESlowControlsChannel();
00039
00040 char * getUniversalAddress() {return &universalAddress_[0];}
00041 void handleSample(const std::string& universalReadValue, std::string& txBuffer, FILE *fpAggregate = 0, bool aggregateIsBinaryFormat = false);
00042 void clearAlarms(int targetAlarm = -1);
00043
00044 static std::string underscoreString(const std::string& str);
00045
00046 private:
00047 void extractSample(const std::string& universalReadValue);
00048 char checkAlarms(std::string& txBuffer);
00049 void convertStringToBuffer(const std::string& inString, std::string& buffer, bool useDataType = false);
00050
00051
00052 public:
00053 const std::string interfaceUID_;
00054 const std::string channelName_;
00055 const std::string fullChannelName_;
00056 const std::string dataType_;
00057
00058 private:
00059 std::string universalAddress_;
00060 unsigned int sizeOfDataTypeBits_;
00061 unsigned int sizeOfDataTypeBytes_;
00062 unsigned int universalDataBitOffset_;
00063 unsigned char txPacketSequenceNumber_;
00064
00065 public:
00066 const bool readAccess_, writeAccess_, monitoringEnabled_;
00067 const bool recordChangesOnly_;
00068 const time_t delayBetweenSamples_;
00069
00070 const bool saveEnabled_;
00071 const std::string savePath_;
00072 const std::string saveFileRadix_;
00073 const bool saveBinaryFormat_;
00074
00075 const bool alarmsEnabled_, latchAlarms_;
00076
00077 private:
00078 std::string sample_, lastSample_;
00079 std::string lolo_, lo_, hi_, hihi_;
00080 time_t lastSampleTime_;
00081 bool loloAlarmed_, loAlarmed_, hiAlarmed_, hihiAlarmed_;
00082
00083 std::string saveFullFileName_;
00084
00085
00086 };
00087
00088 }
00089
00090 #endif