thermferm/rc-switch.c

Wed, 12 May 2021 21:17:59 +0200

author
Michiel Broek
date
Wed, 12 May 2021 21:17:59 +0200
changeset 611
732d482f47c8
parent 213
2317b8d644fa
child 652
16d3d4b58b5b
permissions
-rw-r--r--

Improved logging if wiringpi failed.

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