RS232 control for TVOne products

Dependents:   SPK-DVIMXR

Committer:
tobyspark
Date:
Tue Dec 04 19:09:06 2012 +0000
Revision:
17:68b9bb89da2b
Parent:
16:ed8d08386034
Child:
18:d765b0d9271c
Timer overflow if idle fix (unverified)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tobyspark 0:533cfae24a1b 1 // *spark audio-visual
tobyspark 0:533cfae24a1b 2 // RS232 Control for TV-One products
tobyspark 0:533cfae24a1b 3 // Good for 1T-C2-750, others will need some extra work
tobyspark 1:349d6da461df 4
tobyspark 1:349d6da461df 5 /* Copyright (c) 2011 Toby Harris, MIT License
tobyspark 1:349d6da461df 6 *
tobyspark 1:349d6da461df 7 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
tobyspark 1:349d6da461df 8 * and associated documentation files (the "Software"), to deal in the Software without restriction,
tobyspark 1:349d6da461df 9 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
tobyspark 1:349d6da461df 10 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
tobyspark 1:349d6da461df 11 * furnished to do so, subject to the following conditions:
tobyspark 1:349d6da461df 12 *
tobyspark 1:349d6da461df 13 * The above copyright notice and this permission notice shall be included in all copies or
tobyspark 1:349d6da461df 14 * substantial portions of the Software.
tobyspark 1:349d6da461df 15 *
tobyspark 1:349d6da461df 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
tobyspark 1:349d6da461df 17 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
tobyspark 1:349d6da461df 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
tobyspark 1:349d6da461df 19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
tobyspark 1:349d6da461df 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
tobyspark 1:349d6da461df 21 */
tobyspark 0:533cfae24a1b 22
tobyspark 0:533cfae24a1b 23 #ifndef SPKTVOne_mBed_h
tobyspark 0:533cfae24a1b 24 #define SPKTVOne_mBed_h
tobyspark 0:533cfae24a1b 25
tobyspark 0:533cfae24a1b 26 #include "spk_tvone.h"
tobyspark 0:533cfae24a1b 27 #include "mbed.h"
tobyspark 0:533cfae24a1b 28
tobyspark 0:533cfae24a1b 29 class SPKTVOne
tobyspark 0:533cfae24a1b 30 {
tobyspark 0:533cfae24a1b 31 public:
tobyspark 0:533cfae24a1b 32 SPKTVOne(PinName txPin, PinName rxPin, PinName signWritePin = NC, PinName signErrorPin = NC, Serial *debugSerial = NULL);
tobyspark 0:533cfae24a1b 33
tobyspark 11:90e5a72a0034 34 enum commandType {writeCommandType = 0, readCommandType = 1};
tobyspark 10:5f398fc9b5c1 35 static const int standardAckLength = 20;
tobyspark 10:5f398fc9b5c1 36
tobyspark 0:533cfae24a1b 37 bool command(uint8_t channel, uint8_t window, int32_t func, int32_t payload);
tobyspark 11:90e5a72a0034 38 bool readCommand(uint8_t channel, uint8_t window, int32_t func, int32_t &payload);
tobyspark 14:da403a01f9ef 39
tobyspark 16:ed8d08386034 40 bool uploadEDID(FILE* file, int edidSlotIndex);
tobyspark 16:ed8d08386034 41 bool uploadImage(FILE* file, int sisIndex);
tobyspark 11:90e5a72a0034 42
tobyspark 11:90e5a72a0034 43 bool setCustomResolutions();
tobyspark 3:03e7e7b7a870 44 bool setHDCPOn(bool state);
tobyspark 14:da403a01f9ef 45
tobyspark 14:da403a01f9ef 46 int timeoutCommandPeriod;
tobyspark 14:da403a01f9ef 47 int minimumCommandPeriod;
tobyspark 14:da403a01f9ef 48
tobyspark 14:da403a01f9ef 49 int millisSinceLastCommandSent();
tobyspark 0:533cfae24a1b 50
tobyspark 0:533cfae24a1b 51 private:
tobyspark 11:90e5a72a0034 52 bool command(commandType readWrite, int* ackBuffer, int ackLength, uint8_t channel, uint8_t window, int32_t func, int32_t payload);
tobyspark 16:ed8d08386034 53 bool uploadFile(char command, FILE* file, int dataLength, int index);
tobyspark 14:da403a01f9ef 54
tobyspark 11:90e5a72a0034 55 bool set1920x480(int resStoreNumber);
tobyspark 11:90e5a72a0034 56 bool set1600x600(int resStoreNumber);
tobyspark 11:90e5a72a0034 57 bool set2048x768(int resStoreNumber);
tobyspark 0:533cfae24a1b 58
tobyspark 9:42c83cac2f6d 59 Serial *serial;
tobyspark 0:533cfae24a1b 60 Serial *debug;
tobyspark 0:533cfae24a1b 61
tobyspark 14:da403a01f9ef 62 Timer timer;
tobyspark 17:68b9bb89da2b 63 Ticker timerCheckTicker;
tobyspark 17:68b9bb89da2b 64 void timerCheck();
tobyspark 14:da403a01f9ef 65
tobyspark 0:533cfae24a1b 66 DigitalOut *writeDO;
tobyspark 0:533cfae24a1b 67 DigitalOut *errorDO;
tobyspark 0:533cfae24a1b 68 Timeout signErrorTimeout;
tobyspark 0:533cfae24a1b 69 void signErrorOff();
tobyspark 0:533cfae24a1b 70 };
tobyspark 0:533cfae24a1b 71
tobyspark 0:533cfae24a1b 72 #endif