Provides a simple way to generate complex square wave signals on any available pin. In addition the SignalGenerator can generate a carrier wave which is useful when generating IR signals to control electronic devices like a TV etc. The signal generation can be carried out either synchronously or asynchronously. In the case of synchronous signal generation all interrupts can optionally be disabled to improve timing accuracy.

Revision:
0:b7c65c0d82d3
Child:
1:4a1bcc41c473
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SignalGenerator.h	Fri Sep 12 04:04:46 2014 +0000
@@ -0,0 +1,27 @@
+#ifndef __SIGNALGENERATOR_H__
+#define __SIGNALGENERATOR_H__
+
+/** Simplifies generation of a high frequency signal on any pin with optional support for a carrier frequency.
+*/
+class SignalGenerator
+{
+    public:
+        /** Create a SignalGenerator tied to the specified pin. */
+        SignalGenerator(PinName pin);
+        
+        /** Set the state of the pin associated with the SignalGenerator. */  
+        void set(bool pinState);
+        
+        /** Set parameter and generate the corresponding signal on the pin associated with the SignalGenerator. 
+         * @param initialState Defines the initial state of the signal pin
+         * @param timingBuffer Specificies the wime periods in microseconds before the signal pin changes state
+         * @param bufferCount The count of transition times passed in the timingBuffer
+         * @param lastStateHoldTime The time in microseconds that the last state is held
+         * @param carrierFrequency The carrier frequency in Hz
+        */  
+        void set(bool initialState, uint32_t timingBuffer[], uint16_t bufferCount, uint32_t lastStateHoldTime = 0, int carrierFrequency = -1);
+    private:
+        DigitalOut  _pin;
+};
+
+#endif //__SIGNALGENERATOR_H__
\ No newline at end of file