ir-puck

Dependencies:   IRSender Puck mbed

Fork of ir-puck by Nordic Pucks

Committer:
sigveseb
Date:
Fri Aug 01 12:37:29 2014 +0000
Revision:
13:f016a0bc4a7d
Parent:
5:3642c0af497e
Child:
14:b00d0c5ba8e3
Start changing IR 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
sigveseb 5:3642c0af497e 4 #define LOG_LEVEL_VERBOSE
sigveseb 5:3642c0af497e 5 #include "Puck.h"
sigveseb 0:c94311378ec1 6
sigveseb 5:3642c0af497e 7 Puck* puck = &Puck::getPuck();
sigveseb 0:c94311378ec1 8
sigveseb 13:f016a0bc4a7d 9 TxIR txir(p14);
sigveseb 13:f016a0bc4a7d 10
sigveseb 5:3642c0af497e 11 const UUID IR_SERVICE_UUID = stringToUUID("bftj ir ");
sigveseb 13:f016a0bc4a7d 12 const UUID COMMAND_UUID = stringToUUID("bftj ir command ");
sigveseb 13:f016a0bc4a7d 13 const UUID DATA_UUID = stringToUUID("bftj ir data ");
sigveseb 13:f016a0bc4a7d 14 const UUID PERIOD_UUID = stringToUUID("bftj ir period ");
sigveseb 13:f016a0bc4a7d 15
sigveseb 13:f016a0bc4a7d 16 unsigned int dataBuffer[100];
sigveseb 13:f016a0bc4a7d 17 uint8_t period = 26;
sigveseb 13:f016a0bc4a7d 18 int receiveIndex;
sigveseb 13:f016a0bc4a7d 19
sigveseb 13:f016a0bc4a7d 20 #define COMMAND_BEGIN_CODE_TRANSMISSION 0
sigveseb 13:f016a0bc4a7d 21 #define COMMAND_END_CODE_TRANSMISSION 1
sigveseb 0:c94311378ec1 22
stiaje 4:24d9873936e6 23
sigveseb 13:f016a0bc4a7d 24 void onCommandWrite(uint8_t* value) {
sigveseb 13:f016a0bc4a7d 25 LOG_VERBOSE("Got command: %i\n", value[0]);
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:
sigveseb 13:f016a0bc4a7d 31 LOG_INFO("Going to fire IR code...\n");
sigveseb 13:f016a0bc4a7d 32 txir.txSeq(period, 200, dataBuffer);
sigveseb 13:f016a0bc4a7d 33 LOG_INFO("Fire complete!\n");
sigveseb 13:f016a0bc4a7d 34 break;
sigveseb 13:f016a0bc4a7d 35 }
sigveseb 13:f016a0bc4a7d 36 }
sigveseb 13:f016a0bc4a7d 37
sigveseb 13:f016a0bc4a7d 38
sigveseb 13:f016a0bc4a7d 39 void onDataWrite(uint8_t* value) {
sigveseb 13:f016a0bc4a7d 40 LOG_VERBOSE("Got data, index: %i\n", receiveIndex);
sigveseb 13:f016a0bc4a7d 41 for(int i = 0; i < 20 && receiveIndex < 100; 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 13:f016a0bc4a7d 49 LOG_VERBOSE("Period is now: %i\n", period);
sigveseb 0:c94311378ec1 50 }
sigveseb 0:c94311378ec1 51
sigveseb 0:c94311378ec1 52
sigveseb 5:3642c0af497e 53 int main() {
sigveseb 13:f016a0bc4a7d 54 puck->addCharacteristic(IR_SERVICE_UUID, COMMAND_UUID, 1);
sigveseb 13:f016a0bc4a7d 55 puck->addCharacteristic(IR_SERVICE_UUID, DATA_UUID, 20);
sigveseb 13:f016a0bc4a7d 56 puck->addCharacteristic(IR_SERVICE_UUID, PERIOD_UUID, 1);
sigveseb 5:3642c0af497e 57 puck->init(0xABBA);
sigveseb 13:f016a0bc4a7d 58 puck->onCharacteristicWrite(COMMAND_UUID, onCommandWrite);
sigveseb 13:f016a0bc4a7d 59 puck->onCharacteristicWrite(DATA_UUID, onDataWrite);
sigveseb 13:f016a0bc4a7d 60 puck->onCharacteristicWrite(PERIOD_UUID, onPeriodWrite);
sigveseb 5:3642c0af497e 61 while (puck->drive());
sigveseb 0:c94311378ec1 62 }