ir-puck
Dependencies: IRSender Puck mbed
Fork of ir-puck by
main.cpp
- Committer:
- cristea
- Date:
- 2014-08-06
- Revision:
- 18:e96a99547f54
- Parent:
- 17:6375c75a88a5
File content as of revision 18:e96a99547f54:
/** * Copyright 2014 Nordic Semiconductor * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ #include "mbed.h" #include "IRSender.h" #define LOG_LEVEL_ERROR #include "Log.h" #include "Puck.h" Puck* puck = &Puck::getPuck(); IRSender irpin(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 200 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"); irpin.irSeq(period, receiveIndex, 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()); }