/* * SoftScanConverter.h * * Created on: 22/feb/2018 * Author: chessaa */ #ifndef SOFTSCANCONVERTER_H_ #define SOFTSCANCONVERTER_H_ #include class SoftScanConverterDriver; class SoftScanConverterObject { public: static SoftScanConverterDriver& instance(); }; class SoftScanConverterDriver { public: struct ScBuffer { unsigned int dx; unsigned int dy; unsigned int pitch; uint8_t* buffer; unsigned int width() const { return dx;} unsigned int height() const { return dy;} unsigned int bytesPerLine() const { return pitch;} uint8_t* row(int y) { return scanLine(y);} uint8_t& at(int x, int y) { return scanLine(y)[x];} uint8_t* scanLine(unsigned int y) { return &buffer[pitch*y]; } }; struct SweepHeader { float platform_azimuth; float map_reference_azimuth; float rbin_len_meters; float scan_limit_min; float scan_limit_max; float azimuth; unsigned int rbins; float vx; float vy; unsigned int inversions; int direction; //0=stop, -1=decrese, 1=increase const uint8_t* data; }; void enableMapDbg(bool enable); void displayWaveforms(bool show=true); void setTimestamp(int y, int m, int d, int s, unsigned int tt); void updateMessage(int n, const char* msg); void displayMessages(bool show=true); void addSweep(const SweepHeader& sweep); bool setImage(unsigned int bpp, int ox, int oy, int dx, int dy, int stride, int rows, const void* p, float heading=0, float lat=0, float lon=0, float resolutions=0); void showWaveforms(unsigned int wfn, unsigned int samples, char* data); void generate(void* fb); void generateDebug(void* fb); //ScBuffer buffer(); void setZoom(int ox, int oy, float factor); void setInterpolation(bool enable); void enable(bool ena=true); void reset(); void setGeometry(unsigned int dx, unsigned int dy, unsigned int pitch); void setScanVolumeFromSweep(bool from_sweep); void setScanVolume(float scan_center, float scan_width); void setNavigation(float range_scale, float vx, float vy); void setDbsMode(bool enable); void simulateSweep(float angle, float* data, int samples, int direction, float f_center, float scan_center, float left_limit, float right_limit); static void resize(int dxy, int cx, int cy); static void block(unsigned int timeout=0); static void unblock(); public: class ScImplementation; SoftScanConverterDriver(ScImplementation&); SoftScanConverterDriver(); ScImplementation& p_; friend class SoftScanConverterObject; }; #endif /* SOFTSCANCONVERTER_H_ */