![](/media/cache/profiles/68a15b5278e4f7c4c056df9d5f1d3b1f.jpg.50x50_q85.jpg)
save loops
simpleLaserRenderer.h
- Committer:
- mbedalvaro
- Date:
- 2014-12-02
- Revision:
- 1:3be7b7d050f4
- Parent:
- 0:df6fdd9b99f0
File content as of revision 1:3be7b7d050f4:
#ifndef simpleLaserSensingRenderer_h #define simpleLaserSensingRenderer_h #include "blobConfig.h" // Include hardware interface for display and sensing: #include "hardwareIO.h" //extern DigitalOut myled3; // for tests... //#define debugDelayMirrors // this is to check visually the mirror delay (but it is also beautiful) #define RED_BLANKING // note: RED blanking introduces problems because the Lock-in looses signal, but we can add more points to compensate when there // are many blobs, see "DEFAULT_OVERLAP_POINTS" (but will slow down...) #define RENDER_INTERVAL 0.00011 // good value in previous version (monaco) was 0.00011 // in seconds (Ticker) #define WAIT_NORMAL 0 // good :0 // (minimum is 0) waiting time for setting mirror position MINUS waiting laser time (note that this total waiting time may be equal to 0 if we set a good sampling freq for the renderer, but // and if the shape is regular so that this time does not change significatively - this is not the case for multiple blobs or highly deformed blobs). #define WAIT_LASER 0 // (minimum is 0) waiting time for activating the laser (if there are color changes IN BETWEEN points). Maybe needed for the green laser // WHEN THERE IS MORE THAN ONE SPOT: #define WAIT_FIRST 12 // special waiting time for mirror positioning to first point on next blob BEFORE re-activating laser #define WAIT_FIRST_LASER 0 // IMPORTANT waiting time for the activation of the RED laser and LOCK-IN (also waiting time for the mirrors) #define WAIT_LAST 0 // special waiting time for last point // Redundant drawing for avoiding deformed saccade (note: this could be active when there is more than one blob, instead of using a #define...) #define DEFAULT_OVERLAP_POINTS 5 // 10 enum lsdStateType {NORMAL_POINT, LAST_POINT, MOVE_NEXT_BLOB, START_POINT}; class simpleLaserSensingRenderer { public: void setConfigToRender(blobConfig*); //void startRenderer(); // pb: I cannot use the ticker function inside the class! void laserRenderThread(); void laserRenderThreadONEBLOBONLY(); // void laserRender(blobConfig*); blobConfig* ptBlobCfToRender; lsdStateType stateLsd; int totalBlobs; int currentBlob; int currentPoint; int currentMirrorDelay; int currentTotalPoints; int currentColor; unsigned short x,y; // auxiliary variables storing mirror position(0-4096) // New method to check complete display of one loop: unsigned char configTotalPoints; unsigned char pointDisplayCounter; unsigned char numOverlapPoints; void startFullDisplay(); bool endedFullDisplay(); bool endedFractionDisplay(int fract); int waitNormal, waitLaser, waitFirst, waitFirstLaser, waitLast; }; #endif