thermferm/rc-switch.c

Sat, 25 Apr 2020 20:31:31 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 25 Apr 2020 20:31:31 +0200
changeset 605
e00f8ff4de9a
parent 213
2317b8d644fa
child 652
16d3d4b58b5b
permissions
-rw-r--r--

Version 0.9.8. Added extra path to the fonts for Debian buster. Changed the PID to work on Proportional on Measurement. Added loops so that it looks like the PID is running at 100 mSec intervals.

180
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * Copyright (C) 2014
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * Michiel Broek <mbroek at mbse dot eu>
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * This file is part of the mbsePi-apps
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * Based on the Arduino libary for remote control outlet switches.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * Project home: http://code.google.com/p/rc-switch/
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * This is free software; you can redistribute it and/or modify it
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 * under the terms of the GNU General Public License as published by the
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 * Free Software Foundation; either version 2, or (at your option) any
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * later version.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * mbsePi-apps is distributed in the hope that it will be useful, but
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 * General Public License for more details.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 180
diff changeset
22 * along with ThermFerm; see the file COPYING. If not, write to the Free
180
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 *****************************************************************************/
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 #include "thermferm.h"
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 #include "xutil.h"
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 #include "rc-switch.h"
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 #ifdef HAVE_WIRINGPI_H
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 #define TYPE_UNDEF 0
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 #define TYPE_MINIMUM 0
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 #define TYPE_A 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 #define TYPE_B 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 #define TYPE_C 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 #define TYPE_D 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 #define TYPE_E 3 // TODO: Which Protocol does REV use?
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 #define TYPE_MAXIMUM 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 // Number of maximum High/Low changes per packet.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 // We can handle up to (unsigned long) => 32 bit * 2 H/L changes per bit + 2 for sync
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 #define RCSWITCH_MAX_CHANGES 67
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 // i.e. ProtocolCount + 1 (for TYPE_UNDEF)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 #define MAX_PROTOCOLS 5
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 #define PROTOCOL_A_SYNC_FACTOR 31
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 #define PROTOCOL_A_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 #define PROTOCOL_A_ZERO_SECOND_CYCLES 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 #define PROTOCOL_A_ONE_FIRST_CYCLES 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 #define PROTOCOL_A_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 #define PROTOCOL_A_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 #define PROTOCOL_B_SYNC_FACTOR 10
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 #define PROTOCOL_B_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 #define PROTOCOL_B_ZERO_SECOND_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 #define PROTOCOL_B_ONE_FIRST_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 #define PROTOCOL_B_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 #define PROTOCOL_B_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 #define PROTOCOL_C_SYNC_FACTOR 71
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 #define PROTOCOL_C_ZERO_FIRST_CYCLES 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 #define PROTOCOL_C_ZERO_SECOND_CYCLES 11
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 #define PROTOCOL_C_ONE_FIRST_CYCLES 9
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 #define PROTOCOL_C_ONE_SECOND_CYCLES 6
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 #define PROTOCOL_C_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 // I think, this will work for receive, however, I haven't tested, as I don't own a receiver...
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 // As Type D doesn't sync acc. to https://github.com/d-a-n/433-codes/blob/master/database.md#quigg
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 // the sync factor is totally undetermined.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 // Malte Diers, 22.11.2013
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 #define PROTOCOL_D_SYNC_FACTOR 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 #define PROTOCOL_D_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 #define PROTOCOL_D_ZERO_SECOND_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 #define PROTOCOL_D_ONE_FIRST_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 #define PROTOCOL_D_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 #define PROTOCOL_D_HIGH_FIRST FALSE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 #define PROTOCOL3_SYNC_FACTOR 71
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 #define PROTOCOL3_0_HIGH_CYCLES 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 #define PROTOCOL3_0_LOW_CYCLES 11
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 #define PROTOCOL3_1_HIGH_CYCLES 9
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 #define PROTOCOL3_1_LOW_CYCLES 6
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 unsigned long rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 unsigned int rcReceivedBitlength = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 unsigned int rcReceivedDelay = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 unsigned int rcReceivedProtocol = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 int rcReceiveTolerance = 60;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 int rcReceiverInterruptPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97 unsigned int timings[RCSWITCH_MAX_CHANGES];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 int rcTransmitterPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 int rcPulseLength = 350; // thermometers 2.4 msec = 2400
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 int rcRepeatTransmit = 10;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 int rcProtocol = 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 int backupProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 int backupPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 int backupRepeatTransmit;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 //const char TYPE_A_CODE[ 6][6] = { "00000", "10000", "01000", "00100", "00010", "00001"};
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 const char TYPE_B_CODE[ 5][5] = { "FFFF", "0FFF", "F0FF", "FF0F", "FFF0" };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 const char TYPE_C_CODE[16][5] = { "0000", "F000", "0F00", "FF00", "00F0", "F0F0", "0FF0", "FFF0",
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 "000F", "F00F", "0F0F", "FF0F", "00FF", "F0FF", "0FFF", "FFFF" };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 const char TYPE_D_CODE[5][2][9] = { { "11100001", "11110000" }, { "00000000", "00010001" }, { "10000010", "10010011" },
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 { "11000011", "11010010" }, { "01000001", "01010000" } };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 /* Type A Type D */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 const int PULSE_LENGTH[MAX_PROTOCOLS] = { 0, 350, 650, 100, 666, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116 const int REPEAT_TRANSMIT[MAX_PROTOCOLS] = { 0, 10, 10, 10, 4, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 const int SYNC_FACTOR[MAX_PROTOCOLS] = { 0, PROTOCOL_A_SYNC_FACTOR, PROTOCOL_B_SYNC_FACTOR, PROTOCOL_C_SYNC_FACTOR, PROTOCOL_D_SYNC_FACTOR, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 const int ZERO_FIRST_CYCLES[MAX_PROTOCOLS] = { 0, PROTOCOL_A_ZERO_FIRST_CYCLES, PROTOCOL_B_ZERO_FIRST_CYCLES, PROTOCOL_C_ZERO_FIRST_CYCLES, PROTOCOL_D_ZERO_FIRST_CYCLES, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
119 const int ZERO_SECOND_CYCLES[MAX_PROTOCOLS] = { 0, PROTOCOL_A_ZERO_SECOND_CYCLES, PROTOCOL_B_ZERO_SECOND_CYCLES, PROTOCOL_C_ZERO_SECOND_CYCLES, PROTOCOL_D_ZERO_SECOND_CYCLES, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 const int ONE_FIRST_CYCLES[MAX_PROTOCOLS] = { 0, PROTOCOL_A_ONE_FIRST_CYCLES, PROTOCOL_B_ONE_FIRST_CYCLES, PROTOCOL_C_ONE_FIRST_CYCLES, PROTOCOL_D_ONE_FIRST_CYCLES, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 const int ONE_SECOND_CYCLES[MAX_PROTOCOLS] = { 0, PROTOCOL_A_ONE_SECOND_CYCLES, PROTOCOL_B_ONE_SECOND_CYCLES, PROTOCOL_C_ONE_SECOND_CYCLES, PROTOCOL_D_ONE_SECOND_CYCLES, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 const int HIGH_FIRST[MAX_PROTOCOLS] = { 0, PROTOCOL_A_HIGH_FIRST, PROTOCOL_B_HIGH_FIRST, PROTOCOL_C_HIGH_FIRST, PROTOCOL_D_HIGH_FIRST, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125 char *getCodeWordA(char*, char*, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 char *getCodeWordB(int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127 char *getCodeWordC(char, int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 char *getCodeWordE(char, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 void sendTriState(char*);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 void transmit(int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 void send0(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 void send1(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 void sendT0(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 void sendT1(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 void sendTF(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 void sendSync(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 int receiveProtocol(int, unsigned int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 void handleInterrupt(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 char *dec2binWcharfill(unsigned long, unsigned int, char);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142 void setReceiveTolerance(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 void setProtocol(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145 void saveProtocol(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 void loadProtocol(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
150 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
151 * Sets the protocol to send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
152 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153 void setProtocol(int nProtocol) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155 if ((nProtocol < TYPE_MINIMUM) || (nProtocol > TYPE_MAXIMUM)) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 return;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
159 rcProtocol = nProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 rcPulseLength = PULSE_LENGTH[nProtocol];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 rcRepeatTransmit = REPEAT_TRANSMIT[nProtocol];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
163
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
164
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
165
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
166 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
167 * Set Receiving Tolerance
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 void setReceiveTolerance(int nPercent) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 rcReceiveTolerance = nPercent;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
172
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
173
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176 * Enable transmissions
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 * @param nTransmitterPin Pin to which the sender is connected to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180 void enableTransmit(int nTransmitterPin) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
181 rcTransmitterPin = nTransmitterPin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182 pinMode(rcTransmitterPin, OUTPUT);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
184
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
185
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
186
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
187 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
188 * Disable transmissions
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
190 void disableTransmit(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
191 rcTransmitterPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
192 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
193
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
194
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
195
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
196 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
197 * Toggle switch, a command looks like B,3,2,1 which means switch type B,
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
198 * group 3, device 2, status on.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
199 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
200 int toggleSwitch(char *command)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
201 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
202 static char *cmd = NULL;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
203 char *s, cType;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
204 int rc, iGroup, iDevice, iState;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
205
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
206 cmd = xstrcpy(command);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
207 s = strtok(cmd, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
208 cType = s[0];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
209
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
210 if (cType == 'A') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
211
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
212 } else if (cType == 'B') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
213 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
214 rc = sscanf(s, "%d", &iGroup);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
215 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
216 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
217 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
218 rc = sscanf(s, "%d", &iDevice);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
219 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
220 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
221 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
222 rc = sscanf(s, "%d", &iState);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
223 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
224 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
225 free(cmd);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
226 return toggleTypeB(iGroup, iDevice, iState);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
227 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
228
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
229 free(cmd);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
230 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
231 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
232
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
233
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
234
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
235 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
236 * Switch a remote switch on (Type E REV)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
237 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 * @param sGroup Code of the switch group (A,B,C,D)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 * @param nDevice Number of the switch itself (1..3)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
240 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
241 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242 int toggleTypeE(char sGroup, int nDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
243 sendTriState( getCodeWordE(sGroup, nDevice, bStatus) );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244 return 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
245 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
246
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
247
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
248
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
249 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
250 * Switch a remote switch on (Type C Intertechno)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
251 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
252 * @param sFamily Familycode (a..f)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
253 * @param nGroup Number of group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
254 * @param nDevice Number of device (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
255 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
256 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
257 int toggleTypeC(char sFamily, int nGroup, int nDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
258 char *str = xstrcpy(getCodeWordC(sFamily, nGroup, nDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
259
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
260 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
261 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
262
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
263 saveProtocol(TYPE_A); // ???
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
264 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
265 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
266 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
267 return 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
268 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
269
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
270
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
271
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
272 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
273 * Switch a remote switch on/off (Type B with two rotary/sliding switches)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
275 * @param iGroup Number of the switch group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276 * @param iDevice Number of the switch itself (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 int toggleTypeB(int iGroup, int iDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281 char *str = xstrcpy(getCodeWordB(iGroup, iDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286 saveProtocol(TYPE_A); // They do better with protocol A timings.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
287 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
288 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
289 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
290 return 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
291 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
292
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
293
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
294
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
295 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
296 * Switch a remote switch on (Type A with 10 pole DIP switches)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
297 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
298 * @param sGroup Code of the switch group (refers to DIP switches 1..5 where "1" = on and "0" = off, if all DIP switches are on it's "11111")
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
299 * @param sDevice Code of the switch device (refers to DIP switches 6..10 (A..E) where "1" = on and "0" = off, if all DIP switches are on it's "11111")
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
300 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
301 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
302 int toggleTypeA(char* sGroup, char* sDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
303 char *str = xstrcpy(getCodeWordA(sGroup, sDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
304
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
305 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
306 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
307
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
308 saveProtocol(TYPE_A);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312 return 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
314
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
315
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
316
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
317 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
318 * Returns a char[13], representing the Code Word to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
319 * A Code Word consists of 9 address bits, 3 data bits and one sync bit but in our case only the first 8 address bits and the last 2 data bits were used.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
320 * A Code Bit can have 4 different states: "F" (floating), "0" (low), "1" (high), "S" (synchronous bit)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
321 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
322 * +-------------------------------+--------------------------------+-----------------------------------------+-----------------------------------------+----------------------+------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323 * | 4 bits address (switch group) | 4 bits address (switch number) | 1 bit address (not used, so never mind) | 1 bit address (not used, so never mind) | 2 data bits (on|off) | 1 sync bit |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
324 * | 1=0FFF 2=F0FF 3=FF0F 4=FFF0 | 1=0FFF 2=F0FF 3=FF0F 4=FFF0 | F | F | on=FF off=F0 | S |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
325 * +-------------------------------+--------------------------------+-----------------------------------------+-----------------------------------------+----------------------+------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
326 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
327 * @param nAddressCode Number of the switch group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 * @param nChannelCode Number of the switch itself (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331 * @return char[13]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
333 char *getCodeWordB(int nAddressCode, int nChannelCode, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
334 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
335 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
336 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
337
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
338 if (nAddressCode < 1 || nAddressCode > 4 || nChannelCode < 1 || nChannelCode > 4) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
339 return '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
340 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
341 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
342 sReturn[nReturnPos++] = TYPE_B_CODE[nAddressCode][i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
343 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
344
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
345 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
346 sReturn[nReturnPos++] = TYPE_B_CODE[nChannelCode][i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
347 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
348
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
349 sReturn[nReturnPos++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
350 sReturn[nReturnPos++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
351 sReturn[nReturnPos++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
352 sReturn[nReturnPos++] = bStatus ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
353 sReturn[nReturnPos] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
354
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
355 return sReturn;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
356 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
357
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
358
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
359
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
360 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
361 * Returns a char[13], representing the Code Word to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
362 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
363 * getCodeWordA(char*, char*)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
364 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
365 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
366 char *getCodeWordA(char* sGroup, char* sDevice, int bOn)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
367 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
368 static char sDipSwitches[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
369 int i, j = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
370
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
371 for (i=0; i < 5; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
372 sDipSwitches[j++] = (sGroup[i] == '0') ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
373 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
374
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
375 for (i=0; i < 5; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
376 sDipSwitches[j++] = (sDevice[i] == '0') ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
377 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
378
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
379 if ( bOn ) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
380 sDipSwitches[j++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
381 sDipSwitches[j++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
382 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
383 sDipSwitches[j++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
384 sDipSwitches[j++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
386
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
387 sDipSwitches[j] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
388 return sDipSwitches;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
389 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
390
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
391
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
392
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
393 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
394 * Like getCodeWord (Type C = Intertechno)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
395 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
396 char *getCodeWordC(char sFamily, int nGroup, int nDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
397 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
398 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
399 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
400
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
401 if (sFamily < 'a') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
402 // To also enable capital 'A' to 'F'
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
403 sFamily += 32;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
404 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
405
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
406 if ( sFamily < 'a' || sFamily > 'f' || nGroup < 1 || nGroup > 4 || nDevice < 1 || nDevice > 4) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407 return '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
408 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
409
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
410 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
411 sReturn[nReturnPos++] = TYPE_C_CODE[ sFamily - 'a' ][i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
412 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
413
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
414 char *sDeviceGroupCode = dec2binWzerofill( (nDevice-1) + (nGroup-1)*4, 4 );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
416 sReturn[nReturnPos++] = (sDeviceGroupCode[3-i] == '1' ? 'F' : '0');
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
417 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
418
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
419 sReturn[nReturnPos++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
420 sReturn[nReturnPos++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
421 sReturn[nReturnPos++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
422 sReturn[nReturnPos++] = bStatus ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
423 sReturn[nReturnPos] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
424
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
425 return sReturn;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
426 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
427
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
428
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
429
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
430 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
431 * Decoding for the Quigg Switch Type
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
432 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
433 * Returns a char[22], representing the States to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
434 * A Code Word consists of 1 start bit, 12 address bits and 8 command data bits.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
435 * A Code Bit can have 2 different states: "0" (low), "1" (high)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
436 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
437 * +--------------+--------------------------------+------------------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
438 * | 1 bits start | 12 bits address (device group) | 8 bits (command/switch data) |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
439 * | 1 | 110011001100 | 00010001 |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
440 * +--------------+--------------------------------+------------------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
441 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
442 * Source: https://github.com/d-a-n/433-codes/blob/master/database.md#quigg
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
443 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
444 * @param sGroup 12-bit Binary ID of the Device Group
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
445 * @param nDevice Number of the switch itself (1..4, or 0 to switch the entire Group)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
446 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
447 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
448 * @return char[22]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
449 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
450 char *getCodeWordD(char *sGroup, int nDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
451 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
452 static char sReturn[22];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
453 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
454
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
455 /* Startbit */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
456 sReturn[nReturnPos++] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
457
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
458 /* 12 bit Group */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
459 for (i = 0; i < 12; ++i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
460 sReturn[nReturnPos++] = sGroup[i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
461 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
462
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
463 /* 8 Bit Device Identifier + Status (undividable!) */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
464 for (i = 0; i < 8; ++i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
465 sReturn[nReturnPos++] = TYPE_D_CODE[nDevice][bStatus][i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
466 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
467 sReturn[nReturnPos] = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
468
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
469 return sReturn;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
470 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
471
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
472
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
473
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
474 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
475 * Decoding for the REV Switch Type
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
476 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
477 * Returns a char[13], representing the Tristate to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
478 * A Code Word consists of 7 address bits and 5 command data bits.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
479 * A Code Bit can have 3 different states: "F" (floating), "0" (low), "1" (high)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
480 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
481 * +-------------------------------+--------------------------------+-----------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
482 * | 4 bits address (switch group) | 3 bits address (device number) | 5 bits (command data) |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
483 * | A=1FFF B=F1FF C=FF1F D=FFF1 | 1=0FFF 2=F0FF 3=FF0F 4=FFF0 | on=00010 off=00001 |
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
484 * +-------------------------------+--------------------------------+-----------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
485 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
486 * Source: http://www.the-intruder.net/funksteckdosen-von-rev-uber-arduino-ansteuern/
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
487 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
488 * @param sGroup Name of the switch group (A..D, resp. a..d)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
489 * @param nDevice Number of the switch itself (1..3)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
490 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
491 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
492 * @return char[13]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
493 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
494 char *getCodeWordE(char sGroup, int nDevice, int bStatus){
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
495 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
496 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
497
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
498 // Building 4 bits address
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
499 // (Potential problem if dec2binWcharfill not returning correct string)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
500 char *sGroupCode;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
501 switch(sGroup){
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
502 case 'a':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
503 case 'A':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
504 sGroupCode = dec2binWcharfill(8, 4, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
505 case 'b':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
506 case 'B':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
507 sGroupCode = dec2binWcharfill(4, 4, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
508 case 'c':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
509 case 'C':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
510 sGroupCode = dec2binWcharfill(2, 4, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
511 case 'd':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
512 case 'D':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
513 sGroupCode = dec2binWcharfill(1, 4, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
514 default:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
515 return '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
516 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
517
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
518 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
519 sReturn[nReturnPos++] = sGroupCode[i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
520 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
521
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
522
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
523 // Building 3 bits address
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
524 // (Potential problem if dec2binWcharfill not returning correct string)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
525 char *sDevice;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
526 switch(nDevice) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
527 case 1:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
528 sDevice = dec2binWcharfill(4, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
529 case 2:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
530 sDevice = dec2binWcharfill(2, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
531 case 3:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
532 sDevice = dec2binWcharfill(1, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
533 default:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
534 return '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
535 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
536
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
537 for (i = 0; i<3; i++)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
538 sReturn[nReturnPos++] = sDevice[i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
539
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
540 // fill up rest with zeros
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
541 for (i = 0; i<5; i++)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
542 sReturn[nReturnPos++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
543
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
544 // encode on or off
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
545 if (bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
546 sReturn[10] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
547 else
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
548 sReturn[11] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
549
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
550 // last position terminate string
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
551 sReturn[12] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
552 return sReturn;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
553
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
554 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
555
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
556
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
557
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
558 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
559 * @param sCodeWord /^[10FS]*$/ -> see getCodeWord
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
560 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
561 void sendTriState(char* sCodeWord) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
562 int nRepeat;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
563
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
564 for (nRepeat = 0; nRepeat < rcRepeatTransmit; nRepeat++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
565 int i = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
566 while (sCodeWord[i] != '\0') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
567 switch(sCodeWord[i]) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
568 case '0':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
569 sendT0();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
570 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
571 case 'F':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
572 sendTF();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
573 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
574 case '1':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
575 sendT1();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
576 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
577 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
578 i++;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
579 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
580 sendSync();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
581 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
582 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
583
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
584
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
585
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
586 void transmit(int nFirstPulses, int nSecondPulses, int bHighFirst)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
587 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
588 int disabled_Receive = FALSE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
589 int nReceiverInterrupt_backup = rcReceiverInterruptPin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
590
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
591 if (rcTransmitterPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
592 if (rcReceiverInterruptPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
593 disableReceive();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
594 disabled_Receive = TRUE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
595 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
596 digitalWrite(rcTransmitterPin, bHighFirst ? HIGH : LOW);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
597 delayMicroseconds( rcPulseLength * nFirstPulses);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
598 digitalWrite(rcTransmitterPin, bHighFirst ? LOW : HIGH);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
599 delayMicroseconds( rcPulseLength * nSecondPulses);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
600
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
601 if (disabled_Receive) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
602 enableReceiveIRQ(nReceiverInterrupt_backup);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
603 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
604 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
605 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
606
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
607
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
608
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
609 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
610 * Sends a Tri-State "0" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
611 * _ _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
612 * Waveform: | |___| |___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
613 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
614 void sendT0(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
615 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
616 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
617 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
618
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
619
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
620
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
621 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
622 * Sends a Tri-State "1" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
623 * ___ ___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
624 * Waveform: | |_| |_
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
625 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
626 void sendT1(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
627 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
628 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
629 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
630
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
631
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
632
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
633 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
634 * Sends a Tri-State "F" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
635 * _ ___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
636 * Waveform: | |___| |_
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
637 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
638 void sendTF(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
639 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
640 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
641 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
642
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
643
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
644
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
645 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
646 * Sends a "Sync" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
647 * _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
648 * Waveform Protocol 1: | |_______________________________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
649 * _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
650 * Waveform Protocol 2: | |__________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
651 * ____
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
652 * Waveform Protocol 3: | |_______________________________________________________________________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
653 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
654 * Waveform Protocol D: (none, just pause 80 msecs)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
655 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
656 void sendSync(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
657
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
658 if (rcProtocol == TYPE_A) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
659 transmit(1,31,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
660 } else if (rcProtocol == TYPE_B) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
661 transmit(1,10,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
662 } else if (rcProtocol == TYPE_C) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
663 transmit(4,71,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
664 } else if (rcProtocol == TYPE_D) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
665 transmit(0,1,FALSE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
666 delayMicroseconds(80000);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
667 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
668 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
669
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
670
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
671
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
672 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
673 * Enable receiving data
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
674 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
675 void enableReceiveIRQ(int Pin) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
676 rcReceiverInterruptPin = Pin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
677 enableReceive();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
678 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
679
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
680 void enableReceive(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
681 if (rcReceiverInterruptPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
682 rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
683 rcReceivedBitlength = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
684 wiringPiISR(rcReceiverInterruptPin, INT_EDGE_BOTH, &handleInterrupt);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
685 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
686 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
687
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
688
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
689
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
690 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
691 * Disable receiving data
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
692 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
693 void disableReceive() {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
694 // wiringPi disable interrupts ???
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
695 rcReceiverInterruptPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
696 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
697
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
698
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
699
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
700 int available(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
701 return rcReceivedValue != 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
702 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
703
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
704
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
705
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
706 void resetAvailable(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
707 rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
708 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
709
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
710
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
711
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
712 unsigned long getReceivedValue(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
713 return rcReceivedValue;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
714 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
715
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
716
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
717
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
718 unsigned int getReceivedBitlength(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
719 return rcReceivedBitlength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
720 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
721
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
722
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
723
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
724 unsigned int getReceivedDelay(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
725 return rcReceivedDelay;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
726 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
727
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
728
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
729
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
730 unsigned int getReceivedProtocol(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
731 return rcReceivedProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
732 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
733
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
734
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
735
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
736 unsigned int* getReceivedRawdata(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
737 return timings;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
738 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
739
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
740
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
741
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
742 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
743 * ASK protool 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
744 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
745 int receiveProtocol(int prot, unsigned int changeCount)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
746 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
747 unsigned long code = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
748 unsigned long ldelay = timings[0] / SYNC_FACTOR[prot];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
749 unsigned long delayTolerance = ldelay * rcReceiveTolerance * 0.01;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
750 int i;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
751
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
752 if (prot < TYPE_MINIMUM || prot > TYPE_MAXIMUM) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
753 return FALSE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
754 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
755
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
756 for (i = 1; i<changeCount ; i=i+2) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
757
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
758 if (timings[i] > ldelay * ZERO_FIRST_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
759 timings[i] < ldelay * ZERO_FIRST_CYCLES[prot] + delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
760 timings[i+1] > ldelay * ZERO_SECOND_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
761 timings[i+1] < ldelay * ZERO_SECOND_CYCLES[prot] + delayTolerance) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
762 code = code << 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
763 } else if (timings[i] > ldelay * ONE_FIRST_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
764 timings[i] < ldelay * ONE_FIRST_CYCLES[prot] + delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
765 timings[i+1] > ldelay * ONE_SECOND_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
766 timings[i+1] < ldelay * ONE_SECOND_CYCLES[prot] + delayTolerance) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
767 code+=1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
768 code = code << 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
769 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
770 // Failed
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
771 i = changeCount;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
772 code = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
773 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
774 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
775 code = code >> 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
776 if (changeCount > 6) { // ignore < 4bit values as there are no devices sending 4bit values => noise
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
777 rcReceivedValue = code;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
778 rcReceivedBitlength = changeCount / 2;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
779 rcReceivedDelay = ldelay;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
780 rcReceivedProtocol = prot;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
781 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
782
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
783 return (code != 0);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
784 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
785
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
786
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
787
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
788 void handleInterrupt() {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
789
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
790 static unsigned int duration;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
791 static unsigned int changeCount;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
792 static unsigned long lastTime;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
793 static unsigned int repeatCount;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
794
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
795
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
796 long thistime = micros();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
797 duration = thistime - lastTime;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
798
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
799 if (duration > 5000 && duration > timings[0] - 200 && duration < timings[0] + 200) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
800 repeatCount++;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
801 changeCount--;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
802 if (repeatCount == 2) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
803 if (receiveProtocol(TYPE_A, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
804 if (receiveProtocol(TYPE_B, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
805 if (receiveProtocol(TYPE_C, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
806 if (receiveProtocol(TYPE_D, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
807 //failed
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
808 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
809 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
810 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
811 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
812 repeatCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
813 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
814 changeCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
815 } else if (duration > 5000) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
816 changeCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
817 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
818
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
819 if (changeCount >= RCSWITCH_MAX_CHANGES) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
820 changeCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
821 repeatCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
822 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
823 timings[changeCount++] = duration;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
824 lastTime = thistime;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
825 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
826
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
827
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
828
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
829 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
830 * Turns a decimal value to its binary representation
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
831 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
832 char *dec2binWzerofill(unsigned long Dec, unsigned int bitLength)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
833 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
834 return dec2binWcharfill(Dec, bitLength, '0');
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
835 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
836
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
837 char *dec2binWcharfill(unsigned long Dec, unsigned int bitLength, char fill)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
838 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
839 static char bin[64];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
840 unsigned int i = 0, j;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
841
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
842 while (Dec > 0) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
843 bin[32+i++] = ((Dec & 1) > 0) ? '1' : fill;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
844 Dec = Dec >> 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
845 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
846
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
847 for (j = 0; j< bitLength; j++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
848 if (j >= bitLength - i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
849 bin[j] = bin[ 31 + i - (j - (bitLength - i)) ];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
850 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
851 bin[j] = fill;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
852 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
853 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
854 bin[bitLength] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
855
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
856 return bin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
857 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
858
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
859
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
860 void saveProtocol(int prot)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
861 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
862 backupProtocol = rcProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
863 backupPulseLength = rcPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
864 backupRepeatTransmit = rcRepeatTransmit;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
865
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
866 setProtocol(prot);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
867 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
868
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
869
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
870
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
871 void loadProtocol(void)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
872 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
873 rcProtocol = backupProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
874 rcPulseLength = backupPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
875 rcRepeatTransmit = backupRepeatTransmit;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
876 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
877
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
878
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
879 #endif
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
880

mercurial