ir-puck
Dependencies: IRSender Puck mbed
Fork of ir-puck by
main.cpp@14:b00d0c5ba8e3, 2014-08-01 (annotated)
- Committer:
- sigveseb
- Date:
- Fri Aug 01 13:06:27 2014 +0000
- Revision:
- 14:b00d0c5ba8e3
- Parent:
- 13:f016a0bc4a7d
- Child:
- 15:cf6c517f31ad
Change IR bt interface
Who changed what in which revision?
User | Revision | Line number | New 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 | 14:b00d0c5ba8e3 | 16 | #define DATA_BUFFER_SIZE 100 |
sigveseb | 14:b00d0c5ba8e3 | 17 | unsigned int dataBuffer[DATA_BUFFER_SIZE]; |
sigveseb | 13:f016a0bc4a7d | 18 | uint8_t period = 26; |
sigveseb | 13:f016a0bc4a7d | 19 | int receiveIndex; |
sigveseb | 13:f016a0bc4a7d | 20 | |
sigveseb | 13:f016a0bc4a7d | 21 | #define COMMAND_BEGIN_CODE_TRANSMISSION 0 |
sigveseb | 13:f016a0bc4a7d | 22 | #define COMMAND_END_CODE_TRANSMISSION 1 |
sigveseb | 0:c94311378ec1 | 23 | |
stiaje | 4:24d9873936e6 | 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: |
sigveseb | 13:f016a0bc4a7d | 31 | LOG_INFO("Going to fire IR code...\n"); |
sigveseb | 14:b00d0c5ba8e3 | 32 | txir.txSeq(period, DATA_BUFFER_SIZE, 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 | 14:b00d0c5ba8e3 | 40 | for(int i = 0; i < 20 && receiveIndex < DATA_BUFFER_SIZE; i += 2) { |
sigveseb | 13:f016a0bc4a7d | 41 | dataBuffer[receiveIndex++] = (value[i] << 8) | value[i + 1]; |
sigveseb | 13:f016a0bc4a7d | 42 | } |
sigveseb | 13:f016a0bc4a7d | 43 | } |
sigveseb | 13:f016a0bc4a7d | 44 | |
sigveseb | 13:f016a0bc4a7d | 45 | |
sigveseb | 13:f016a0bc4a7d | 46 | void onPeriodWrite(uint8_t* value) { |
sigveseb | 13:f016a0bc4a7d | 47 | period = value[0]; |
sigveseb | 0:c94311378ec1 | 48 | } |
sigveseb | 0:c94311378ec1 | 49 | |
sigveseb | 0:c94311378ec1 | 50 | |
sigveseb | 5:3642c0af497e | 51 | int main() { |
sigveseb | 13:f016a0bc4a7d | 52 | puck->addCharacteristic(IR_SERVICE_UUID, COMMAND_UUID, 1); |
sigveseb | 13:f016a0bc4a7d | 53 | puck->addCharacteristic(IR_SERVICE_UUID, DATA_UUID, 20); |
sigveseb | 13:f016a0bc4a7d | 54 | puck->addCharacteristic(IR_SERVICE_UUID, PERIOD_UUID, 1); |
sigveseb | 5:3642c0af497e | 55 | puck->init(0xABBA); |
sigveseb | 14:b00d0c5ba8e3 | 56 | puck->onCharacteristicWrite(&COMMAND_UUID, onCommandWrite); |
sigveseb | 14:b00d0c5ba8e3 | 57 | puck->onCharacteristicWrite(&DATA_UUID, onDataWrite); |
sigveseb | 14:b00d0c5ba8e3 | 58 | puck->onCharacteristicWrite(&PERIOD_UUID, onPeriodWrite); |
sigveseb | 5:3642c0af497e | 59 | while (puck->drive()); |
sigveseb | 0:c94311378ec1 | 60 | } |