thermferm/rc-switch.c

Thu, 25 Apr 2024 14:26:47 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 25 Apr 2024 14:26:47 +0200
changeset 708
13555c27b592
parent 652
16d3d4b58b5b
permissions
-rw-r--r--

Version 0.9.19a6. Fixes after a short trial on the production controller. Fixed json for alternate beer termperature sensor. Fixed division by 1000 for the room temperature and humidity values. The dropdown list for devices shows the address instead of description in the list.

180
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
2 * Copyright (C) 2014-2024
180
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"
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
28 #include "delay.h"
180
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 #include "rc-switch.h"
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 #ifdef HAVE_WIRINGPI_H
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 #define TYPE_UNDEF 0
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 #define TYPE_MINIMUM 0
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 #define TYPE_A 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 #define TYPE_B 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 #define TYPE_C 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 #define TYPE_D 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 #define TYPE_E 3 // TODO: Which Protocol does REV use?
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 #define TYPE_MAXIMUM 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 // Number of maximum High/Low changes per packet.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 // 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
45 #define RCSWITCH_MAX_CHANGES 67
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 // i.e. ProtocolCount + 1 (for TYPE_UNDEF)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 #define MAX_PROTOCOLS 5
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 #define PROTOCOL_A_SYNC_FACTOR 31
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 #define PROTOCOL_A_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 #define PROTOCOL_A_ZERO_SECOND_CYCLES 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 #define PROTOCOL_A_ONE_FIRST_CYCLES 3
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 #define PROTOCOL_A_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 #define PROTOCOL_A_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 #define PROTOCOL_B_SYNC_FACTOR 10
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 #define PROTOCOL_B_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 #define PROTOCOL_B_ZERO_SECOND_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 #define PROTOCOL_B_ONE_FIRST_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 #define PROTOCOL_B_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 #define PROTOCOL_B_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 #define PROTOCOL_C_SYNC_FACTOR 71
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 #define PROTOCOL_C_ZERO_FIRST_CYCLES 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 #define PROTOCOL_C_ZERO_SECOND_CYCLES 11
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 #define PROTOCOL_C_ONE_FIRST_CYCLES 9
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 #define PROTOCOL_C_ONE_SECOND_CYCLES 6
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 #define PROTOCOL_C_HIGH_FIRST TRUE
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 // 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
72 // 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
73 // the sync factor is totally undetermined.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 // Malte Diers, 22.11.2013
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 #define PROTOCOL_D_SYNC_FACTOR 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 #define PROTOCOL_D_ZERO_FIRST_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 #define PROTOCOL_D_ZERO_SECOND_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 #define PROTOCOL_D_ONE_FIRST_CYCLES 2
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 #define PROTOCOL_D_ONE_SECOND_CYCLES 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 #define PROTOCOL_D_HIGH_FIRST FALSE
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 #define PROTOCOL3_SYNC_FACTOR 71
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 #define PROTOCOL3_0_HIGH_CYCLES 4
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 #define PROTOCOL3_0_LOW_CYCLES 11
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 #define PROTOCOL3_1_HIGH_CYCLES 9
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 #define PROTOCOL3_1_LOW_CYCLES 6
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 unsigned long rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 unsigned int rcReceivedBitlength = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 unsigned int rcReceivedDelay = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 unsigned int rcReceivedProtocol = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 int rcReceiveTolerance = 60;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 int rcReceiverInterruptPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 unsigned int timings[RCSWITCH_MAX_CHANGES];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 int rcTransmitterPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 int rcPulseLength = 350; // thermometers 2.4 msec = 2400
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 int rcRepeatTransmit = 10;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 int rcProtocol = 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 int backupProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 int backupPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106 int backupRepeatTransmit;
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 //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
110 const char TYPE_B_CODE[ 5][5] = { "FFFF", "0FFF", "F0FF", "FF0F", "FFF0" };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 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
112 "000F", "F00F", "0F0F", "FF0F", "00FF", "F0FF", "0FFF", "FFFF" };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 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
114 { "11000011", "11010010" }, { "01000001", "01010000" } };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 /* Type A Type D */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116 const int PULSE_LENGTH[MAX_PROTOCOLS] = { 0, 350, 650, 100, 666, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 const int REPEAT_TRANSMIT[MAX_PROTOCOLS] = { 0, 10, 10, 10, 4, };
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 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
119 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
120 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
121 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
122 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
123 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
124
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 char *getCodeWordA(char*, char*, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127 char *getCodeWordB(int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 char *getCodeWordC(char, int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 char *getCodeWordE(char, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 void sendTriState(char*);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 void transmit(int, int, int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 void send0(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 void send1(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 void sendT0(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 void sendT1(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 void sendTF(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 void sendSync(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 int receiveProtocol(int, unsigned int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 void handleInterrupt(void);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141 char *dec2binWcharfill(unsigned long, unsigned int, char);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 void setReceiveTolerance(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144 void setProtocol(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 void saveProtocol(int);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 void loadProtocol(void);
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
152 * Sets the protocol to send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154 void setProtocol(int nProtocol) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 if ((nProtocol < TYPE_MINIMUM) || (nProtocol > TYPE_MAXIMUM)) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 return;
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 rcProtocol = nProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 rcPulseLength = PULSE_LENGTH[nProtocol];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162 rcRepeatTransmit = REPEAT_TRANSMIT[nProtocol];
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 * Set Receiving Tolerance
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 void setReceiveTolerance(int nPercent) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 rcReceiveTolerance = nPercent;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 * Enable transmissions
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179 * @param nTransmitterPin Pin to which the sender is connected to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
181 void enableTransmit(int nTransmitterPin) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182 rcTransmitterPin = nTransmitterPin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183 pinMode(rcTransmitterPin, OUTPUT);
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189 * Disable transmissions
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
190 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
191 void disableTransmit(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
192 rcTransmitterPin = -1;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
198 * 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
199 * group 3, device 2, status on.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
200 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
201 int toggleSwitch(char *command)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
202 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
203 static char *cmd = NULL;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
204 char *s, cType;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
205 int rc, iGroup, iDevice, iState;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
206
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
207 cmd = xstrcpy(command);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
208 s = strtok(cmd, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
209 cType = s[0];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
210
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
211 if (cType == 'A') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
212
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
213 } else if (cType == 'B') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
214 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
215 rc = sscanf(s, "%d", &iGroup);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
216 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
217 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
218 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
219 rc = sscanf(s, "%d", &iDevice);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
220 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
221 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
222 s = strtok(NULL, ",\0");
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
223 rc = sscanf(s, "%d", &iState);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
224 if (rc != 1)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
225 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
226 free(cmd);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
227 return toggleTypeB(iGroup, iDevice, iState);
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
230 free(cmd);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
231 return 1;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
237 * Switch a remote switch on (Type E REV)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 * @param sGroup Code of the switch group (A,B,C,D)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
240 * @param nDevice Number of the switch itself (1..3)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
241 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
243 int toggleTypeE(char sGroup, int nDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244 sendTriState( getCodeWordE(sGroup, nDevice, bStatus) );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
245 return 0;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
251 * Switch a remote switch on (Type C Intertechno)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
252 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
253 * @param sFamily Familycode (a..f)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
254 * @param nGroup Number of group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
255 * @param nDevice Number of device (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
256 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
257 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
258 int toggleTypeC(char sFamily, int nGroup, int nDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
259 char *str = xstrcpy(getCodeWordC(sFamily, nGroup, nDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
260
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
261 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
262 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
263
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
264 saveProtocol(TYPE_A); // ???
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
265 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
266 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
267 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
268 return 0;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 * 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
275 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276 * @param iGroup Number of the switch group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 * @param iDevice Number of the switch itself (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280 int toggleTypeB(int iGroup, int iDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282 char *str = xstrcpy(getCodeWordB(iGroup, iDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
287 saveProtocol(TYPE_A); // They do better with protocol A timings.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
288 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
289 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
290 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
291 return 0;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
297 * Switch a remote switch on (Type A with 10 pole DIP switches)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
298 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
299 * @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
300 * @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
301 * @param bStatus Status to toggle to
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
302 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
303 int toggleTypeA(char* sGroup, char* sDevice, int bStatus) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
304 char *str = xstrcpy(getCodeWordA(sGroup, sDevice, bStatus));
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
305
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
306 if (strlen(str) == 0)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
307 return 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
308
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309 saveProtocol(TYPE_A);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310 sendTriState( str );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311 loadProtocol();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312 free(str);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313 return 0;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
319 * Returns a char[13], representing the Code Word to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
320 * 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
321 * 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
322 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323 * +-------------------------------+--------------------------------+-----------------------------------------+-----------------------------------------+----------------------+------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
324 * | 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
325 * | 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
326 * +-------------------------------+--------------------------------+-----------------------------------------+-----------------------------------------+----------------------+------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
327 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 * @param nAddressCode Number of the switch group (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329 * @param nChannelCode Number of the switch itself (1..4)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332 * @return char[13]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
333 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
334 char *getCodeWordB(int nAddressCode, int nChannelCode, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
335 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
336 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
337 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
338
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
339 if (nAddressCode < 1 || nAddressCode > 4 || nChannelCode < 1 || nChannelCode > 4) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
340 return '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
341 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
342 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
343 sReturn[nReturnPos++] = TYPE_B_CODE[nAddressCode][i];
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
346 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
347 sReturn[nReturnPos++] = TYPE_B_CODE[nChannelCode][i];
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
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++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
353 sReturn[nReturnPos++] = bStatus ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
354 sReturn[nReturnPos] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
355
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
356 return sReturn;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
362 * Returns a char[13], representing the Code Word to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
363 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
364 * getCodeWordA(char*, char*)
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 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
367 char *getCodeWordA(char* sGroup, char* sDevice, int bOn)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
368 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
369 static char sDipSwitches[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
370 int i, j = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
371
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
372 for (i=0; i < 5; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
373 sDipSwitches[j++] = (sGroup[i] == '0') ? 'F' : '0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
376 for (i=0; i < 5; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
377 sDipSwitches[j++] = (sDevice[i] == '0') ? 'F' : '0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
380 if ( bOn ) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
381 sDipSwitches[j++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
382 sDipSwitches[j++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
383 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
384 sDipSwitches[j++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 sDipSwitches[j++] = '0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
388 sDipSwitches[j] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
389 return sDipSwitches;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
395 * Like getCodeWord (Type C = Intertechno)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
396 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
397 char *getCodeWordC(char sFamily, int nGroup, int nDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
398 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
399 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
400 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
401
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
402 if (sFamily < 'a') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
403 // To also enable capital 'A' to 'F'
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
404 sFamily += 32;
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407 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
408 return '\0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
411 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
412 sReturn[nReturnPos++] = TYPE_C_CODE[ sFamily - 'a' ][i];
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 char *sDeviceGroupCode = dec2binWzerofill( (nDevice-1) + (nGroup-1)*4, 4 );
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
416 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
417 sReturn[nReturnPos++] = (sDeviceGroupCode[3-i] == '1' ? 'F' : '0');
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
420 sReturn[nReturnPos++] = '0';
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++] = 'F';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
423 sReturn[nReturnPos++] = bStatus ? 'F' : '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
424 sReturn[nReturnPos] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
425
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
426 return sReturn;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
432 * Decoding for the Quigg Switch Type
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
433 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
434 * Returns a char[22], representing the States to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
435 * 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
436 * A Code Bit can have 2 different states: "0" (low), "1" (high)
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 * +--------------+--------------------------------+------------------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
439 * | 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
440 * | 1 | 110011001100 | 00010001 |
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 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
443 * 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
444 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
445 * @param sGroup 12-bit Binary ID of the Device Group
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
446 * @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
447 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
448 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
449 * @return char[22]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
450 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
451 char *getCodeWordD(char *sGroup, int nDevice, int bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
452 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
453 static char sReturn[22];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
454 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
455
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
456 /* Startbit */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
457 sReturn[nReturnPos++] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
458
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
459 /* 12 bit Group */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
460 for (i = 0; i < 12; ++i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
461 sReturn[nReturnPos++] = sGroup[i];
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
464 /* 8 Bit Device Identifier + Status (undividable!) */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
465 for (i = 0; i < 8; ++i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
466 sReturn[nReturnPos++] = TYPE_D_CODE[nDevice][bStatus][i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
467 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
468 sReturn[nReturnPos] = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
469
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
470 return sReturn;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
476 * Decoding for the REV Switch Type
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
477 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
478 * Returns a char[13], representing the Tristate to be send.
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
479 * 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
480 * 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
481 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
482 * +-------------------------------+--------------------------------+-----------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
483 * | 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
484 * | 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
485 * +-------------------------------+--------------------------------+-----------------------+
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
486 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
487 * Source: http://www.the-intruder.net/funksteckdosen-von-rev-uber-arduino-ansteuern/
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
488 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
489 * @param sGroup Name of the switch group (A..D, resp. a..d)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
490 * @param nDevice Number of the switch itself (1..3)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
491 * @param bStatus Wether to switch on (true) or off (false)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
492 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
493 * @return char[13]
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
494 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
495 char *getCodeWordE(char sGroup, int nDevice, int bStatus){
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
496 static char sReturn[13];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
497 int i, nReturnPos = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
498
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
499 // Building 4 bits address
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
500 // (Potential problem if dec2binWcharfill not returning correct string)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
501 char *sGroupCode;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
502 switch(sGroup){
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 case 'A':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
505 sGroupCode = dec2binWcharfill(8, 4, 'F'); break;
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 case 'B':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
508 sGroupCode = dec2binWcharfill(4, 4, 'F'); break;
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 case 'C':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
511 sGroupCode = dec2binWcharfill(2, 4, 'F'); break;
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 case 'D':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
514 sGroupCode = dec2binWcharfill(1, 4, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
515 default:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
516 return '\0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
519 for (i = 0; i<4; i++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
520 sReturn[nReturnPos++] = sGroupCode[i];
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
524 // Building 3 bits address
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
525 // (Potential problem if dec2binWcharfill not returning correct string)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
526 char *sDevice;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
527 switch(nDevice) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
528 case 1:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
529 sDevice = dec2binWcharfill(4, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
530 case 2:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
531 sDevice = dec2binWcharfill(2, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
532 case 3:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
533 sDevice = dec2binWcharfill(1, 3, 'F'); break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
534 default:
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
535 return '\0';
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
538 for (i = 0; i<3; i++)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
539 sReturn[nReturnPos++] = sDevice[i];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
540
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
541 // fill up rest with zeros
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
542 for (i = 0; i<5; i++)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
543 sReturn[nReturnPos++] = '0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
544
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
545 // encode on or off
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
546 if (bStatus)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
547 sReturn[10] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
548 else
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
549 sReturn[11] = '1';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
550
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
551 // last position terminate string
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
552 sReturn[12] = '\0';
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
553 return sReturn;
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
560 * @param sCodeWord /^[10FS]*$/ -> see getCodeWord
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
561 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
562 void sendTriState(char* sCodeWord) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
563 int nRepeat;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
564
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
565 for (nRepeat = 0; nRepeat < rcRepeatTransmit; nRepeat++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
566 int i = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
567 while (sCodeWord[i] != '\0') {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
568 switch(sCodeWord[i]) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
569 case '0':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
570 sendT0();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
571 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
572 case 'F':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
573 sendTF();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
574 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
575 case '1':
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
576 sendT1();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
577 break;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
578 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
579 i++;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
580 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
581 sendSync();
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
587 void transmit(int nFirstPulses, int nSecondPulses, int bHighFirst)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
588 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
589 int disabled_Receive = FALSE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
590 int nReceiverInterrupt_backup = rcReceiverInterruptPin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
591
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
592 if (rcTransmitterPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
593 if (rcReceiverInterruptPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
594 disableReceive();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
595 disabled_Receive = TRUE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
596 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
597 digitalWrite(rcTransmitterPin, bHighFirst ? HIGH : LOW);
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
598 uDelay(rcPulseLength * nFirstPulses);
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
599 // delayMicroseconds( rcPulseLength * nFirstPulses);
180
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
600 digitalWrite(rcTransmitterPin, bHighFirst ? LOW : HIGH);
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
601 uDelay(rcPulseLength * nSecondPulses);
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
602 // delayMicroseconds( rcPulseLength * nSecondPulses);
180
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 if (disabled_Receive) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
605 enableReceiveIRQ(nReceiverInterrupt_backup);
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
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
613 * Sends a Tri-State "0" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
614 * _ _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
615 * Waveform: | |___| |___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
616 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
617 void sendT0(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
618 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
619 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
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
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
625 * Sends a Tri-State "1" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
626 * ___ ___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
627 * Waveform: | |_| |_
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
628 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
629 void sendT1(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
630 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
631 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
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
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
637 * Sends a Tri-State "F" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
638 * _ ___
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
639 * Waveform: | |___| |_
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
640 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
641 void sendTF(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
642 transmit(ZERO_FIRST_CYCLES[rcProtocol], ZERO_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
643 transmit(ONE_FIRST_CYCLES[rcProtocol], ONE_SECOND_CYCLES[rcProtocol], HIGH_FIRST[rcProtocol]);
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
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 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
649 * Sends a "Sync" Bit
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
650 * _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
651 * Waveform Protocol 1: | |_______________________________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
652 * _
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
653 * Waveform Protocol 2: | |__________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
654 * ____
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
655 * Waveform Protocol 3: | |_______________________________________________________________________
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
656 *
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
657 * Waveform Protocol D: (none, just pause 80 msecs)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
658 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
659 void sendSync(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
660
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
661 if (rcProtocol == TYPE_A) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
662 transmit(1,31,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
663 } else if (rcProtocol == TYPE_B) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
664 transmit(1,10,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
665 } else if (rcProtocol == TYPE_C) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
666 transmit(4,71,TRUE);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
667 } else if (rcProtocol == TYPE_D) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
668 transmit(0,1,FALSE);
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
669 mDelay(80);
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
670 // delayMicroseconds(80000);
180
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
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
676 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
677 * Enable receiving data
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 void enableReceiveIRQ(int Pin) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
680 rcReceiverInterruptPin = Pin;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
681 enableReceive();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
682 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
683
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
684 void enableReceive(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
685 if (rcReceiverInterruptPin != -1) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
686 rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
687 rcReceivedBitlength = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
688 wiringPiISR(rcReceiverInterruptPin, INT_EDGE_BOTH, &handleInterrupt);
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
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
694 /*
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
695 * Disable receiving data
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 void disableReceive() {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
698 // wiringPi disable interrupts ???
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
699 rcReceiverInterruptPin = -1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
700 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
701
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 int available(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
705 return rcReceivedValue != 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
706 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
707
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 void resetAvailable(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
711 rcReceivedValue = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
712 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
713
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 unsigned long getReceivedValue(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
717 return rcReceivedValue;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
718 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
719
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 unsigned int getReceivedBitlength(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
723 return rcReceivedBitlength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
724 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
725
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 unsigned int getReceivedDelay(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
729 return rcReceivedDelay;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
730 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
731
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 unsigned int getReceivedProtocol(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
735 return rcReceivedProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
736 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
737
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 unsigned int* getReceivedRawdata(void) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
741 return timings;
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
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
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 * ASK protool 1
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
748 */
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
749 int receiveProtocol(int prot, unsigned int changeCount)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
750 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
751 unsigned long code = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
752 unsigned long ldelay = timings[0] / SYNC_FACTOR[prot];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
753 unsigned long delayTolerance = ldelay * rcReceiveTolerance * 0.01;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
754 int i;
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 if (prot < TYPE_MINIMUM || prot > TYPE_MAXIMUM) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
757 return FALSE;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
758 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
759
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
760 for (i = 1; i<changeCount ; i=i+2) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
761
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
762 if (timings[i] > ldelay * ZERO_FIRST_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
763 timings[i] < ldelay * ZERO_FIRST_CYCLES[prot] + delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
764 timings[i+1] > ldelay * ZERO_SECOND_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
765 timings[i+1] < ldelay * ZERO_SECOND_CYCLES[prot] + delayTolerance) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
766 code = code << 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
767 } else if (timings[i] > ldelay * ONE_FIRST_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
768 timings[i] < ldelay * ONE_FIRST_CYCLES[prot] + delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
769 timings[i+1] > ldelay * ONE_SECOND_CYCLES[prot] - delayTolerance &&
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
770 timings[i+1] < ldelay * ONE_SECOND_CYCLES[prot] + delayTolerance) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
771 code+=1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
772 code = code << 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
773 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
774 // Failed
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
775 i = changeCount;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
776 code = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
777 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
778 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
779 code = code >> 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
780 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
781 rcReceivedValue = code;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
782 rcReceivedBitlength = changeCount / 2;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
783 rcReceivedDelay = ldelay;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
784 rcReceivedProtocol = prot;
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 return (code != 0);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
788 }
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
791
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
792 void handleInterrupt() {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
793
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
794 static unsigned int duration;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
795 static unsigned int changeCount;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
796 static unsigned long lastTime;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
797 static unsigned int repeatCount;
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
800 long thistime = micros();
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
801 duration = thistime - lastTime;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
802
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
803 if (duration > 5000 && duration > timings[0] - 200 && duration < timings[0] + 200) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
804 repeatCount++;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
805 changeCount--;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
806 if (repeatCount == 2) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
807 if (receiveProtocol(TYPE_A, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
808 if (receiveProtocol(TYPE_B, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
809 if (receiveProtocol(TYPE_C, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
810 if (receiveProtocol(TYPE_D, changeCount) == FALSE) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
811 //failed
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
812 }
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 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
815 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
816 repeatCount = 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 changeCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
819 } else if (duration > 5000) {
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 }
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 if (changeCount >= RCSWITCH_MAX_CHANGES) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
824 changeCount = 0;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
825 repeatCount = 0;
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 timings[changeCount++] = duration;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
828 lastTime = thistime;
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
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
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 * Turns a decimal value to its binary representation
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 char *dec2binWzerofill(unsigned long Dec, unsigned int bitLength)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
837 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
838 return dec2binWcharfill(Dec, bitLength, '0');
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
839 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
840
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
841 char *dec2binWcharfill(unsigned long Dec, unsigned int bitLength, char fill)
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
842 {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
843 static char bin[64];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
844 unsigned int i = 0, j;
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 while (Dec > 0) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
847 bin[32+i++] = ((Dec & 1) > 0) ? '1' : fill;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
848 Dec = Dec >> 1;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
849 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
850
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
851 for (j = 0; j< bitLength; j++) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
852 if (j >= bitLength - i) {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
853 bin[j] = bin[ 31 + i - (j - (bitLength - i)) ];
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
854 } else {
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
855 bin[j] = fill;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
856 }
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 bin[bitLength] = '\0';
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 return bin;
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
863
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
864 void saveProtocol(int prot)
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 backupProtocol = rcProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
867 backupPulseLength = rcPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
868 backupRepeatTransmit = rcRepeatTransmit;
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 setProtocol(prot);
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
871 }
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
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
874
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
875 void loadProtocol(void)
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 rcProtocol = backupProtocol;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
878 rcPulseLength = backupPulseLength;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
879 rcRepeatTransmit = backupRepeatTransmit;
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
880 }
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
881
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
882
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
883 #endif
b62644eb442f Add missing sources
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
884

mercurial