Repository for import to local machine
Dependencies: DMBasicGUI DMSupport
ServiceInterval.h@8:26e49e6955bd, 2017-07-31 (annotated)
- Committer:
- jmitc91516
- Date:
- Mon Jul 31 15:37:57 2017 +0000
- Revision:
- 8:26e49e6955bd
- Parent:
- 1:a5258871b33d
Method ramp scrolling improved, and more bitmaps moved to QSPI memory
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jmitc91516 | 1:a5258871b33d | 1 | #ifndef SERVICEINTERVAL_H |
jmitc91516 | 1:a5258871b33d | 2 | #define SERVICEINTERVAL_H |
jmitc91516 | 1:a5258871b33d | 3 | |
jmitc91516 | 1:a5258871b33d | 4 | #include "mbed.h" |
jmitc91516 | 1:a5258871b33d | 5 | #include "DMBoard.h" |
jmitc91516 | 1:a5258871b33d | 6 | |
jmitc91516 | 1:a5258871b33d | 7 | #include "USBHostGC.h" |
jmitc91516 | 1:a5258871b33d | 8 | |
jmitc91516 | 1:a5258871b33d | 9 | /* |
jmitc91516 | 1:a5258871b33d | 10 | These classes do what the name implies - handle service intervals. These are measured |
jmitc91516 | 1:a5258871b33d | 11 | either in instrument cycles (i.e. runs), or time - in the latter case, the interval |
jmitc91516 | 1:a5258871b33d | 12 | is always twelve months. |
jmitc91516 | 1:a5258871b33d | 13 | |
jmitc91516 | 1:a5258871b33d | 14 | Each ServiceInterval object deals with one (and only one) service interval, allowing the caller |
jmitc91516 | 1:a5258871b33d | 15 | to specify its description (a text string). |
jmitc91516 | 1:a5258871b33d | 16 | |
jmitc91516 | 1:a5258871b33d | 17 | Note that the caller must 'poll' the ServiceInterval object to find out whether or not |
jmitc91516 | 1:a5258871b33d | 18 | it has expired - it does not raise an interrupt, or call a callback function, |
jmitc91516 | 1:a5258871b33d | 19 | or do anything unsolicited. |
jmitc91516 | 1:a5258871b33d | 20 | */ |
jmitc91516 | 1:a5258871b33d | 21 | |
jmitc91516 | 1:a5258871b33d | 22 | //#define SERVICE_INTERVALS_ACTIVE // #define this to activate the ServiceInterval code in the whole application |
jmitc91516 | 1:a5258871b33d | 23 | |
jmitc91516 | 1:a5258871b33d | 24 | class ServiceInterval { |
jmitc91516 | 1:a5258871b33d | 25 | public: |
jmitc91516 | 1:a5258871b33d | 26 | ServiceInterval(char *intervalDescription, int touchAreaIndex); |
jmitc91516 | 1:a5258871b33d | 27 | ~ServiceInterval(); |
jmitc91516 | 1:a5258871b33d | 28 | |
jmitc91516 | 1:a5258871b33d | 29 | int GetDescriptionLength(void); |
jmitc91516 | 1:a5258871b33d | 30 | void GetDescription(char *buffer); |
jmitc91516 | 1:a5258871b33d | 31 | |
jmitc91516 | 1:a5258871b33d | 32 | virtual void Start(void) = 0; |
jmitc91516 | 1:a5258871b33d | 33 | |
jmitc91516 | 1:a5258871b33d | 34 | virtual void InstrumentHasCycled(void) = 0; |
jmitc91516 | 1:a5258871b33d | 35 | |
jmitc91516 | 1:a5258871b33d | 36 | virtual bool HasExpired(void) = 0; |
jmitc91516 | 1:a5258871b33d | 37 | |
jmitc91516 | 1:a5258871b33d | 38 | bool IntervalHasStarted(void) { return intervalHasStarted; } |
jmitc91516 | 1:a5258871b33d | 39 | |
jmitc91516 | 1:a5258871b33d | 40 | virtual void SaveToQSPISettings(void) = 0; |
jmitc91516 | 1:a5258871b33d | 41 | virtual void ReadFromQSPISettings(void) = 0; |
jmitc91516 | 1:a5258871b33d | 42 | |
jmitc91516 | 1:a5258871b33d | 43 | static void SetupAllServiceIntervals(void); |
jmitc91516 | 1:a5258871b33d | 44 | static void StartAllServiceIntervals(void); |
jmitc91516 | 1:a5258871b33d | 45 | static int GetServiceIntervalCount(void) { return SERVICE_INTERVAL_COUNT; } |
jmitc91516 | 1:a5258871b33d | 46 | static ServiceInterval* GetServiceInterval(int serviceIntervalIndex); |
jmitc91516 | 1:a5258871b33d | 47 | static void TellAllServiceIntervalsInstrumentHasCycled(void); |
jmitc91516 | 1:a5258871b33d | 48 | static bool AtLeastOneServiceIntervalHasExpired(void); |
jmitc91516 | 1:a5258871b33d | 49 | static ServiceInterval* GetNextExpiredServiceInterval(ServiceInterval* thisExpiredInterval); |
jmitc91516 | 1:a5258871b33d | 50 | static void SaveAllServiceIntervalsToQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 51 | static void ReadAllServiceIntervalsFromQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 52 | static bool IsServicedTouchArea(int touchAreaIndex); |
jmitc91516 | 1:a5258871b33d | 53 | static bool DealWithServicedTouchArea(int touchAreaIndex); |
jmitc91516 | 1:a5258871b33d | 54 | |
jmitc91516 | 1:a5258871b33d | 55 | |
jmitc91516 | 1:a5258871b33d | 56 | private: |
jmitc91516 | 1:a5258871b33d | 57 | char *description; |
jmitc91516 | 1:a5258871b33d | 58 | |
jmitc91516 | 1:a5258871b33d | 59 | enum { SERVICE_INTERVAL_COUNT = 6 }; |
jmitc91516 | 1:a5258871b33d | 60 | static ServiceInterval* serviceIntervalArray[SERVICE_INTERVAL_COUNT]; |
jmitc91516 | 1:a5258871b33d | 61 | |
jmitc91516 | 1:a5258871b33d | 62 | int servicedTouchArea; // The easyGUI touch area that specifies "this component has now been serviced" |
jmitc91516 | 1:a5258871b33d | 63 | |
jmitc91516 | 1:a5258871b33d | 64 | |
jmitc91516 | 1:a5258871b33d | 65 | protected: |
jmitc91516 | 1:a5258871b33d | 66 | bool intervalHasStarted; |
jmitc91516 | 1:a5258871b33d | 67 | }; |
jmitc91516 | 1:a5258871b33d | 68 | |
jmitc91516 | 1:a5258871b33d | 69 | class CyclesServiceInterval : public ServiceInterval { |
jmitc91516 | 1:a5258871b33d | 70 | public: |
jmitc91516 | 1:a5258871b33d | 71 | CyclesServiceInterval(char *intervalDescription, int touchAreaIndex); |
jmitc91516 | 1:a5258871b33d | 72 | |
jmitc91516 | 1:a5258871b33d | 73 | void SetDurationInNumberOfInstrumentCycles(int newDurationInNumberOfInstrumentCycles); |
jmitc91516 | 1:a5258871b33d | 74 | |
jmitc91516 | 1:a5258871b33d | 75 | virtual void InstrumentHasCycled(void); |
jmitc91516 | 1:a5258871b33d | 76 | |
jmitc91516 | 1:a5258871b33d | 77 | virtual void Start(void); |
jmitc91516 | 1:a5258871b33d | 78 | |
jmitc91516 | 1:a5258871b33d | 79 | virtual bool HasExpired(void) { return intervalHasExpired; } |
jmitc91516 | 1:a5258871b33d | 80 | |
jmitc91516 | 1:a5258871b33d | 81 | virtual void SaveToQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 82 | virtual void ReadFromQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 83 | |
jmitc91516 | 1:a5258871b33d | 84 | private: |
jmitc91516 | 1:a5258871b33d | 85 | int durationInNumberOfInstrumentCycles; |
jmitc91516 | 1:a5258871b33d | 86 | int countOfRemainingCycles; |
jmitc91516 | 1:a5258871b33d | 87 | |
jmitc91516 | 1:a5258871b33d | 88 | bool intervalHasExpired; |
jmitc91516 | 1:a5258871b33d | 89 | }; |
jmitc91516 | 1:a5258871b33d | 90 | |
jmitc91516 | 1:a5258871b33d | 91 | class TwelveMonthServiceInterval : public ServiceInterval { |
jmitc91516 | 1:a5258871b33d | 92 | public: |
jmitc91516 | 1:a5258871b33d | 93 | TwelveMonthServiceInterval(char *intervalDescription, int touchAreaIndex); |
jmitc91516 | 1:a5258871b33d | 94 | |
jmitc91516 | 1:a5258871b33d | 95 | virtual void Start(void); |
jmitc91516 | 1:a5258871b33d | 96 | |
jmitc91516 | 1:a5258871b33d | 97 | virtual void InstrumentHasCycled(void); |
jmitc91516 | 1:a5258871b33d | 98 | |
jmitc91516 | 1:a5258871b33d | 99 | virtual bool HasExpired(void); |
jmitc91516 | 1:a5258871b33d | 100 | |
jmitc91516 | 1:a5258871b33d | 101 | virtual void SaveToQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 102 | virtual void ReadFromQSPISettings(void); |
jmitc91516 | 1:a5258871b33d | 103 | |
jmitc91516 | 1:a5258871b33d | 104 | private: |
jmitc91516 | 1:a5258871b33d | 105 | struct tm startTime; |
jmitc91516 | 1:a5258871b33d | 106 | |
jmitc91516 | 1:a5258871b33d | 107 | static void GetCurrentLocalTime(struct tm *currentLocalTime); |
jmitc91516 | 1:a5258871b33d | 108 | }; |
jmitc91516 | 1:a5258871b33d | 109 | |
jmitc91516 | 1:a5258871b33d | 110 | #endif // SERVICEINTERVAL_H |
jmitc91516 | 1:a5258871b33d | 111 |