ir-puck
Dependencies: IRSender Puck mbed
Fork of ir-puck by
main.cpp
- Committer:
- stiaje
- Date:
- 2014-08-01
- Revision:
- 15:cf6c517f31ad
- Parent:
- 14:b00d0c5ba8e3
- Parent:
- 12:a7d9b4f303fd
- Child:
- 16:0891823672f4
File content as of revision 15:cf6c517f31ad:
#include "mbed.h" #include "TxIR.hpp" #define LOG_LEVEL_ERROR #include "Log.h" #include "Puck.h" Puck* puck = &Puck::getPuck(); TxIR txir(p14); const UUID IR_SERVICE_UUID = stringToUUID("bftj ir "); const UUID COMMAND_UUID = stringToUUID("bftj ir command "); const UUID DATA_UUID = stringToUUID("bftj ir data "); const UUID PERIOD_UUID = stringToUUID("bftj ir period "); #define DATA_BUFFER_SIZE 100 unsigned int dataBuffer[DATA_BUFFER_SIZE]; uint8_t period = 26; int receiveIndex; #define COMMAND_BEGIN_CODE_TRANSMISSION 0 #define COMMAND_END_CODE_TRANSMISSION 1 void onCommandWrite(uint8_t* value) { switch(value[0]) { case COMMAND_BEGIN_CODE_TRANSMISSION: receiveIndex = 0; break; case COMMAND_END_CODE_TRANSMISSION: puck->getBle().disconnect(); LOG_INFO("Going to fire IR code...\n"); txir.txSeq(period, DATA_BUFFER_SIZE, dataBuffer); LOG_INFO("Fire complete!\n"); break; } } void onDataWrite(uint8_t* value) { for(int i = 0; i < 20 && receiveIndex < DATA_BUFFER_SIZE; i += 2) { dataBuffer[receiveIndex++] = (value[i] << 8) | value[i + 1]; } } void onPeriodWrite(uint8_t* value) { period = value[0]; } int main() { puck->addCharacteristic(IR_SERVICE_UUID, COMMAND_UUID, 1); puck->addCharacteristic(IR_SERVICE_UUID, DATA_UUID, 20); puck->addCharacteristic(IR_SERVICE_UUID, PERIOD_UUID, 1); puck->init(0xABBA); puck->onCharacteristicWrite(&COMMAND_UUID, onCommandWrite); puck->onCharacteristicWrite(&DATA_UUID, onDataWrite); puck->onCharacteristicWrite(&PERIOD_UUID, onPeriodWrite); while (puck->drive()); }