I messed up the merge, so pushing it over to another repo so I don't lose it. Will tidy up and remove later

Dependencies:   BufferedSerial FatFileSystemCpp mbed

Committer:
JamieB
Date:
Thu Dec 15 06:05:30 2022 +0000
Revision:
85:0cc5931bb9ef
Parent:
10:053bac3e326b
Push to somewhere else due to merge issue

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndyA 0:97661408d0f9 1 #ifndef __LTCDECODE_H__
AndyA 0:97661408d0f9 2 #define __LTCDECODE_H__
AndyA 0:97661408d0f9 3
AndyA 0:97661408d0f9 4 #include "mbed.h"
AndyA 0:97661408d0f9 5
AndyA 0:97661408d0f9 6
AndyA 9:7214e3c3e5f8 7 class LTCDecode
AndyA 9:7214e3c3e5f8 8 {
AndyA 0:97661408d0f9 9
AndyA 0:97661408d0f9 10 public:
AndyA 9:7214e3c3e5f8 11 LTCDecode(const PinName pin);
AndyA 0:97661408d0f9 12
AndyA 9:7214e3c3e5f8 13 inline bool synced()
AndyA 9:7214e3c3e5f8 14 {
AndyA 9:7214e3c3e5f8 15 return LTCsynced;
AndyA 9:7214e3c3e5f8 16 };
AndyA 0:97661408d0f9 17
AndyA 9:7214e3c3e5f8 18 void enable(bool enable);
AndyA 0:97661408d0f9 19
AndyA 9:7214e3c3e5f8 20 void attachFrame(void (*callback)(void))
AndyA 9:7214e3c3e5f8 21 {
AndyA 9:7214e3c3e5f8 22 FrameCallback.attach(callback);
AndyA 9:7214e3c3e5f8 23 }
AndyA 0:97661408d0f9 24
AndyA 9:7214e3c3e5f8 25 inline void getTime(int *hour, int *minute, int *second, int *frame)
AndyA 9:7214e3c3e5f8 26 {
AndyA 9:7214e3c3e5f8 27 *hour = _hours;
AndyA 9:7214e3c3e5f8 28 *minute = _minutes;
AndyA 9:7214e3c3e5f8 29 *second = _seconds;
AndyA 9:7214e3c3e5f8 30 *frame = _frame;
AndyA 9:7214e3c3e5f8 31 }
AndyA 9:7214e3c3e5f8 32
AndyA 9:7214e3c3e5f8 33 inline bool isFrameDrop() {return _frameDrop;}
AndyA 0:97661408d0f9 34
AndyA 9:7214e3c3e5f8 35 template<typename T>
AndyA 9:7214e3c3e5f8 36 void attachFrame(T* tptr, void (T::*mptr)(void))
AndyA 9:7214e3c3e5f8 37 {
AndyA 9:7214e3c3e5f8 38 FrameCallback.attach(tptr, mptr);
AndyA 9:7214e3c3e5f8 39 }
AndyA 0:97661408d0f9 40
AndyA 0:97661408d0f9 41 private:
AndyA 9:7214e3c3e5f8 42 void LTCOnEdge(void);
AndyA 0:97661408d0f9 43
AndyA 9:7214e3c3e5f8 44 InterruptIn _LTCIn;
AndyA 9:7214e3c3e5f8 45 Timer inputTimer;
AndyA 0:97661408d0f9 46
AndyA 9:7214e3c3e5f8 47 FunctionPointer FrameCallback;
AndyA 0:97661408d0f9 48
AndyA 9:7214e3c3e5f8 49 // add a bit. Return true if we got the end of frame pattern
AndyA 9:7214e3c3e5f8 50 bool addBitToBuffer(bool bit);
AndyA 9:7214e3c3e5f8 51 void decodeTime();
AndyA 9:7214e3c3e5f8 52 int _hours;
AndyA 9:7214e3c3e5f8 53 int _minutes;
AndyA 9:7214e3c3e5f8 54 int _seconds;
AndyA 9:7214e3c3e5f8 55 int _frame;
AndyA 9:7214e3c3e5f8 56 bool _frameDrop;
AndyA 0:97661408d0f9 57
AndyA 9:7214e3c3e5f8 58 bool LTCsynced;
AndyA 0:97661408d0f9 59
AndyA 9:7214e3c3e5f8 60 volatile int newBitsWrite;
AndyA 9:7214e3c3e5f8 61 int newBitsRead;
AndyA 0:97661408d0f9 62
AndyA 9:7214e3c3e5f8 63 // max bit period = 520.8 ms (1920 Hz)
AndyA 9:7214e3c3e5f8 64 // min bit period = 416.7 ms (2400 Hz)
AndyA 9:7214e3c3e5f8 65 // max period of a '1' symbol = 260.4ms (1920Hz * 2)
AndyA 9:7214e3c3e5f8 66
AndyA 9:7214e3c3e5f8 67 uint32_t lastTransition;
AndyA 9:7214e3c3e5f8 68 uint32_t lastBitStart;
AndyA 9:7214e3c3e5f8 69
AndyA 9:7214e3c3e5f8 70 uint32_t LTCBuffer[3];
AndyA 0:97661408d0f9 71 };
AndyA 0:97661408d0f9 72
AndyA 0:97661408d0f9 73 #endif