Subversion Repositories HomeAutomation

Rev

Rev 1839 | Rev 1847 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1839 Rev 1844
Line 114... Line 114...
114
    msg.setData("Act3", 80); // 2.1
114
    msg.setData("Act3", 80); // 2.1
115
    msg.setData("Pas3", 83);
115
    msg.setData("Pas3", 83);
116
    msg.setData("Repeat", 0);
116
    msg.setData("Repeat", 0);
117
    sendMessage(msg);
117
    sendMessage(msg);
118
    sleep(10);
118
    sleep(10);
-
 
119
}
-
 
120
 
-
 
121
function hexString2NumberArray(hexString)
-
 
122
{
-
 
123
    var tokens = hexString.split(' ');
-
 
124
    var numbers = new Array();
-
 
125
    for (var i=0; i<tokens.length; i++) {
-
 
126
        numbers[i] = parseInt(tokens[i], 16)
-
 
127
    }
-
 
128
    return numbers;
-
 
129
}
-
 
130
 
-
 
131
// prontoHexString is a space-separated hex string, including both the pronto header and the data
-
 
132
irTransceive.prototype.sendProntoHex = function(channel, prontoHexString)
-
 
133
{
-
 
134
    var prontoNumbers = hexString2NumberArray(prontoHexString);
-
 
135
   
-
 
136
    // header
-
 
137
    var format = prontoNumbers[0];
-
 
138
    var frqDiv = prontoNumbers[1];
-
 
139
    var onceSeqLen = prontoNumbers[2];
-
 
140
    var repSeqLen = prontoNumbers[3];
-
 
141
   
-
 
142
    print("Sending START. CH=" + channel + ", fmt=" + format + ", wFrqDiv=" + frqDiv + ", onceLen=" + onceSeqLen + ", repLen=" + repSeqLen + "\n");
-
 
143
    var msg = new CanMessage("sns", "To_Owner", this.myName, this.myId, "IrProntoStart");
-
 
144
    msg.setData("Channel", channel);
-
 
145
    msg.setData("Format", format);
-
 
146
    msg.setData("wFrqDiv", frqDiv);
-
 
147
    msg.setData("OnceSeqLen", onceSeqLen);
-
 
148
    msg.setData("RepSeqLen",  repSeqLen);
-
 
149
    sendMessage(msg);
-
 
150
    sleep(10);
-
 
151
   
-
 
152
    // data
-
 
153
    var nrBytes = 0;
-
 
154
    var bytes = new Array();
-
 
155
    var seqNr = 0;
-
 
156
    for (var i=4; i<prontoNumbers.length; i++) {
-
 
157
        // 8bit value?
-
 
158
        if (prontoNumbers[i] <= 255) {
-
 
159
            // compress into single byte
-
 
160
            bytes[nrBytes] = prontoNumbers[i];
-
 
161
            nrBytes++;
-
 
162
        }
-
 
163
        // 16bit value?
-
 
164
        else {
-
 
165
            // occupy 3 bytes to describe this value
-
 
166
            bytes[nrBytes] = (prontoNumbers[i] & 0xFF00) >> 8;
-
 
167
            bytes[nrBytes+1] = 0x00;
-
 
168
            bytes[nrBytes+2] = (prontoNumbers[i] & 0x00FF) >> 0;
-
 
169
            nrBytes += 3;
-
 
170
        }
-
 
171
        // time to send?
-
 
172
        if (nrBytes >= 8) {
-
 
173
            print("Sending DATA. " + nrBytes + " bytes: " + bytes + " (SEQ NR:" + (seqNr+1) + ")\n");
-
 
174
            msg = new CanMessage("sns", "To_Owner", this.myName, this.myId, "IrProntoData" + (seqNr+1));
-
 
175
            msg.setData("Act1", bytes[0]);
-
 
176
            msg.setData("Pas1", bytes[1]);
-
 
177
            msg.setData("Act2", bytes[2]);
-
 
178
            msg.setData("Pas2", bytes[3]);
-
 
179
            msg.setData("Act3", bytes[4]);
-
 
180
            msg.setData("Pas3", bytes[5]);
-
 
181
            msg.setData("Act4", bytes[6]);
-
 
182
            msg.setData("Pas4", bytes[7]);
-
 
183
            sendMessage(msg);
-
 
184
            sleep(10);
-
 
185
           
-
 
186
            bytes = new Array();
-
 
187
            nrBytes = 0;
-
 
188
            seqNr = (seqNr + 1) % 16;
-
 
189
        }
-
 
190
    }
-
 
191
   
-
 
192
    print("Sending END. " + nrBytes + " bytes: " + bytes + " (SEQ NR:" + (seqNr+1) + ")\n");
-
 
193
    msg = new CanMessage("sns", "To_Owner", this.myName, this.myId, "IrProntoEnd" + (seqNr+1));
-
 
194
    if (nrBytes > 1) msg.setData("Act1", bytes[0]);
-
 
195
    if (nrBytes > 2) msg.setData("Pas1", bytes[1]);
-
 
196
    if (nrBytes > 3) msg.setData("Act2", bytes[2]);
-
 
197
    if (nrBytes > 4) msg.setData("Pas2", bytes[3]);
-
 
198
    if (nrBytes > 5) msg.setData("Act3", bytes[4]);
-
 
199
    if (nrBytes > 6) msg.setData("Pas3", bytes[5]);
-
 
200
    msg.setData("Repeat", 0x00);
-
 
201
    sendMessage(msg);
-
 
202
    sleep(10);
-
 
203
}
-
 
204
 
-
 
205
function sendProntoTest()
-
 
206
{
-
 
207
    var ir = ServiceManager.getService("Can","irTransceive",1);
-
 
208
    ir.sendProntoHex(1, "0000 006d 0022 0002 0156 00ad 0016 0016 0016 0041 0016 0041 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 05ed 0156 0056 0016 0e62");
119
}
209
}