a fork to test out advertising process

Dependencies:   BLE_API TxIR mbed nRF51822

Fork of ir-puck by Nordic Pucks

IR.cpp

Committer:
stiaje
Date:
2014-07-08
Revision:
1:6ba27220d1da
Parent:
0:c94311378ec1

File content as of revision 1:6ba27220d1da:

#include "mbed.h"
#include "IR.h"
#include "TxIR.hpp"

#define WORD(x, i) ((x)[(i)] << 8 | (x)[(i) + 1])

TxIR txir(p14);

#define DEBUG 1
#ifdef DEBUG
    Serial px(USBTX, USBRX);
    #define LOG(args...)    px.printf(args)
#else
    #define LOG(args...)
#endif

void fireIRCode(uint8_t* header, uint8_t* one, uint8_t* zero, uint8_t* ptrail, uint8_t* predata, uint8_t* code) {
    LOG("Going to fire.\n");
    int raw_codes_length = 67;
    unsigned raw_codes[raw_codes_length];
    raw_codes[0] = WORD(header, 0);
    raw_codes[1] = WORD(header, 2);
    int offset = 2;
    for(int i = 0; i < 16 * 2; i += 2) {
        int bit = predata[i / 16] & 0x80;
        uint8_t* signal = bit ? one : zero;
        raw_codes[i + offset] = WORD(signal, 0);
        raw_codes[i + offset + 1] = WORD(signal, 2);
        predata[i / 16] <<= 1;
    }
    offset = 34;
    for(int i = 0; i <  16 * 2; i += 2) {
        int bit = code[i / 16] & 0x80;
        uint8_t* signal = bit ? one : zero;
        raw_codes[i + offset] = WORD(signal, 0);
        raw_codes[i + offset + 1] = WORD(signal, 2);
        code[i / 16] <<= 1;
    }
    raw_codes[67] = WORD(ptrail, 0);
    
    txir.txSeq(26.32 / 1000000.0, 67, raw_codes);
    
    LOG("Wrote message :)\n");
}