ir-puck

Dependencies:   IRSender Puck mbed

Fork of ir-puck by Nordic Pucks

Committer:
stiaje
Date:
Fri Aug 01 13:46:03 2014 +0000
Revision:
15:cf6c517f31ad
Parent:
14:b00d0c5ba8e3
Parent:
12:a7d9b4f303fd
Child:
16:0891823672f4
Merge pull request 'new bt interface'

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sigveseb 0:c94311378ec1 1 #include "mbed.h"
sigveseb 13:f016a0bc4a7d 2 #include "TxIR.hpp"
sigveseb 0:c94311378ec1 3
cristea 10:35d78d589580 4 #define LOG_LEVEL_ERROR
cristea 10:35d78d589580 5 #include "Log.h"
sigveseb 5:3642c0af497e 6 #include "Puck.h"
sigveseb 0:c94311378ec1 7
sigveseb 5:3642c0af497e 8 Puck* puck = &Puck::getPuck();
sigveseb 0:c94311378ec1 9
sigveseb 13:f016a0bc4a7d 10 TxIR txir(p14);
sigveseb 13:f016a0bc4a7d 11
sigveseb 5:3642c0af497e 12 const UUID IR_SERVICE_UUID = stringToUUID("bftj ir ");
sigveseb 13:f016a0bc4a7d 13 const UUID COMMAND_UUID = stringToUUID("bftj ir command ");
sigveseb 13:f016a0bc4a7d 14 const UUID DATA_UUID = stringToUUID("bftj ir data ");
sigveseb 13:f016a0bc4a7d 15 const UUID PERIOD_UUID = stringToUUID("bftj ir period ");
sigveseb 13:f016a0bc4a7d 16
sigveseb 14:b00d0c5ba8e3 17 #define DATA_BUFFER_SIZE 100
sigveseb 14:b00d0c5ba8e3 18 unsigned int dataBuffer[DATA_BUFFER_SIZE];
sigveseb 13:f016a0bc4a7d 19 uint8_t period = 26;
sigveseb 13:f016a0bc4a7d 20 int receiveIndex;
sigveseb 13:f016a0bc4a7d 21
sigveseb 13:f016a0bc4a7d 22 #define COMMAND_BEGIN_CODE_TRANSMISSION 0
sigveseb 13:f016a0bc4a7d 23 #define COMMAND_END_CODE_TRANSMISSION 1
sigveseb 0:c94311378ec1 24
sigveseb 13:f016a0bc4a7d 25 void onCommandWrite(uint8_t* value) {
sigveseb 13:f016a0bc4a7d 26 switch(value[0]) {
sigveseb 13:f016a0bc4a7d 27 case COMMAND_BEGIN_CODE_TRANSMISSION:
sigveseb 13:f016a0bc4a7d 28 receiveIndex = 0;
sigveseb 13:f016a0bc4a7d 29 break;
sigveseb 13:f016a0bc4a7d 30 case COMMAND_END_CODE_TRANSMISSION:
stiaje 15:cf6c517f31ad 31 puck->getBle().disconnect();
sigveseb 13:f016a0bc4a7d 32 LOG_INFO("Going to fire IR code...\n");
sigveseb 14:b00d0c5ba8e3 33 txir.txSeq(period, DATA_BUFFER_SIZE, dataBuffer);
sigveseb 13:f016a0bc4a7d 34 LOG_INFO("Fire complete!\n");
sigveseb 13:f016a0bc4a7d 35 break;
sigveseb 13:f016a0bc4a7d 36 }
sigveseb 13:f016a0bc4a7d 37 }
sigveseb 0:c94311378ec1 38
stiaje 4:24d9873936e6 39
sigveseb 13:f016a0bc4a7d 40 void onDataWrite(uint8_t* value) {
sigveseb 14:b00d0c5ba8e3 41 for(int i = 0; i < 20 && receiveIndex < DATA_BUFFER_SIZE; i += 2) {
sigveseb 13:f016a0bc4a7d 42 dataBuffer[receiveIndex++] = (value[i] << 8) | value[i + 1];
sigveseb 13:f016a0bc4a7d 43 }
sigveseb 13:f016a0bc4a7d 44 }
sigveseb 13:f016a0bc4a7d 45
sigveseb 13:f016a0bc4a7d 46
sigveseb 13:f016a0bc4a7d 47 void onPeriodWrite(uint8_t* value) {
sigveseb 13:f016a0bc4a7d 48 period = value[0];
sigveseb 0:c94311378ec1 49 }
sigveseb 0:c94311378ec1 50
sigveseb 0:c94311378ec1 51
sigveseb 5:3642c0af497e 52 int main() {
sigveseb 13:f016a0bc4a7d 53 puck->addCharacteristic(IR_SERVICE_UUID, COMMAND_UUID, 1);
sigveseb 13:f016a0bc4a7d 54 puck->addCharacteristic(IR_SERVICE_UUID, DATA_UUID, 20);
sigveseb 13:f016a0bc4a7d 55 puck->addCharacteristic(IR_SERVICE_UUID, PERIOD_UUID, 1);
sigveseb 5:3642c0af497e 56 puck->init(0xABBA);
stiaje 15:cf6c517f31ad 57
sigveseb 14:b00d0c5ba8e3 58 puck->onCharacteristicWrite(&COMMAND_UUID, onCommandWrite);
sigveseb 14:b00d0c5ba8e3 59 puck->onCharacteristicWrite(&DATA_UUID, onDataWrite);
sigveseb 14:b00d0c5ba8e3 60 puck->onCharacteristicWrite(&PERIOD_UUID, onPeriodWrite);
stiaje 15:cf6c517f31ad 61
sigveseb 5:3642c0af497e 62 while (puck->drive());
sigveseb 0:c94311378ec1 63 }