00001 #ifndef EDDPLOTDATASOURCE_H
00002 #define EDDPLOTDATASOURCE_H
00003 
00004 #include <EDDSourceLib/inc/EDDDataSource.h>
00005 #include <proto/EDDPlotDataMsg.h>
00006 
00007 #ifndef EDD_EXPORT
00008 #define EDD_EXPORT
00009 #endif
00010 
00018 class EDD_EXPORT tcEDDPlotDataSource : public tcEDDDataSource
00019 {
00020 public:
00022         typedef enum
00023         {
00024                 eeX = 0,
00025                 eeY = 1,
00026                 eeZ = 2 
00027         } teAxis;
00028         
00029         tcEDDPlotDataSource(char* apDesc, bool abIsContinuous = false, int anMaxContPoints = 1024);
00030         
00031         virtual ~tcEDDPlotDataSource(void);
00032         
00033         virtual int HandleMsg(tsEDDMsgHdr* apMsg);
00034 
00036 
00045         int SendPlotData(float* X, float* Y, int N);
00046         int SendPlotData(int32_t* X, int32_t* Y, int N);
00047         int SendPlotData(int16_t* X, int16_t* Y, int N);
00048         int SendPlotData(int8_t* X, int8_t* Y, int N);
00049         int SendPlotData(uint32_t* X, uint32_t* Y, int N);
00050         int SendPlotData(uint16_t* X, uint16_t* Y, int N);
00051         int SendPlotData(uint8_t* X, uint8_t* Y, int N);
00053     
00055 
00063         int SendPlotData(float* Y, int N);
00064         int SendPlotData(uint32_t* Y, int N);
00065         int SendPlotData(uint16_t* Y, int N);
00066         int SendPlotData(uint8_t* Y, int N);
00067         int SendPlotData(int32_t* Y, int N);
00068         int SendPlotData(int16_t* Y, int N);
00069         int SendPlotData(int8_t* Y, int N);
00071         
00072         int SetLabel(teAxis, char* apLabel);
00073         int SetDescription(char* apDesc);
00074         
00075         int SetOffset(teAxis aeAxis, float anOffset) { maOffset[aeAxis] = anOffset; return 0; } 
00076         int SetScale(teAxis aeAxis, float anScale) { maScale[aeAxis] = anScale; return 0; } 
00077         
00078         static const int gnMaxStringLen = 64;
00079         
00080 protected:
00081     int  Send2DData(void* Xdata, void* Ydata, int N, int WordSizeBytes, uint8_t anDataType);
00082     int  Send1DData(void* Ydata, int N, int WordSizeBytes, uint8_t anDataType);
00083     
00084     void SendPlotDescriptor(int32_t anNumPoints, uint8_t anType);
00085     void BuildOutputBuffer(void);
00086         
00087         int       mnPlotType;  
00088         char      maDescription[gnMaxStringLen]; 
00089         char      maXLabel[gnMaxStringLen];  
00090         char      maYLabel[gnMaxStringLen];  
00091         char      maZLabel[gnMaxStringLen];  
00092         float     maScale[3];   
00093         float     maOffset[3];  
00094         uint16_t  mnPlotNo;     
00095         char*     mpOutputBuffer;  
00096         int       mnOutputBufferLen;  
00097         int       mnMaxContPoints;  
00098         bool      mbIsContinuous;  
00099 };
00100 
00101 #endif