ir-puck

Dependencies:   Puck IRSender mbed

Fork of ir-puck by Nordic Pucks

Committer:
stiaje
Date:
Tue Jul 15 08:49:45 2014 +0000
Revision:
4:24d9873936e6
Parent:
1:e92c3b50191d
Child:
5:3642c0af497e
Wait for bluetooth disconnect before sending IR signal.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sigveseb 0:c94311378ec1 1 #include "mbed.h"
sigveseb 0:c94311378ec1 2 #include "IR.h"
sigveseb 0:c94311378ec1 3 #include "TxIR.hpp"
sigveseb 0:c94311378ec1 4
sigveseb 0:c94311378ec1 5 #define WORD(x, i) ((x)[(i)] << 8 | (x)[(i) + 1])
sigveseb 0:c94311378ec1 6
sigveseb 0:c94311378ec1 7 TxIR txir(p14);
sigveseb 0:c94311378ec1 8 Serial px(USBTX, USBRX);
sigveseb 0:c94311378ec1 9
aleksanb 1:e92c3b50191d 10 void fireIRCode(uint8_t* header, uint8_t* one, uint8_t* zero, uint8_t* ptrail, uint8_t* predata, uint8_t* code)
aleksanb 1:e92c3b50191d 11 {
sigveseb 0:c94311378ec1 12 px.printf("Going to fire.\n");
sigveseb 0:c94311378ec1 13 int raw_codes_length = 67;
sigveseb 0:c94311378ec1 14 unsigned raw_codes[raw_codes_length];
sigveseb 0:c94311378ec1 15 raw_codes[0] = WORD(header, 0);
sigveseb 0:c94311378ec1 16 raw_codes[1] = WORD(header, 2);
sigveseb 0:c94311378ec1 17 int offset = 2;
sigveseb 0:c94311378ec1 18 for(int i = 0; i < 16 * 2; i += 2) {
sigveseb 0:c94311378ec1 19 int bit = predata[i / 16] & 0x80;
sigveseb 0:c94311378ec1 20 uint8_t* signal = bit ? one : zero;
sigveseb 0:c94311378ec1 21 raw_codes[i + offset] = WORD(signal, 0);
sigveseb 0:c94311378ec1 22 raw_codes[i + offset + 1] = WORD(signal, 2);
sigveseb 0:c94311378ec1 23 predata[i / 16] <<= 1;
sigveseb 0:c94311378ec1 24 }
sigveseb 0:c94311378ec1 25 offset = 34;
sigveseb 0:c94311378ec1 26 for(int i = 0; i < 16 * 2; i += 2) {
sigveseb 0:c94311378ec1 27 int bit = code[i / 16] & 0x80;
sigveseb 0:c94311378ec1 28 uint8_t* signal = bit ? one : zero;
sigveseb 0:c94311378ec1 29 raw_codes[i + offset] = WORD(signal, 0);
sigveseb 0:c94311378ec1 30 raw_codes[i + offset + 1] = WORD(signal, 2);
sigveseb 0:c94311378ec1 31 code[i / 16] <<= 1;
sigveseb 0:c94311378ec1 32 }
aleksanb 1:e92c3b50191d 33 raw_codes[66] = WORD(ptrail, 0);
stiaje 4:24d9873936e6 34
stiaje 4:24d9873936e6 35 px.printf("Full sequence received: [%i", raw_codes[0]);
stiaje 4:24d9873936e6 36 for (int i=1; i<67; i++) {
stiaje 4:24d9873936e6 37 px.printf(", %i", raw_codes[i]);
stiaje 4:24d9873936e6 38 }
stiaje 4:24d9873936e6 39 px.printf("]\n");
stiaje 4:24d9873936e6 40
aleksanb 1:e92c3b50191d 41 txir.txSeq(26, 67, raw_codes);
aleksanb 1:e92c3b50191d 42
sigveseb 0:c94311378ec1 43 px.printf("Wrote message :)\n");
sigveseb 0:c94311378ec1 44 }