library for implementing ir transmission
Diff: XMIT_IR.cpp
- Revision:
- 7:01243fe65940
- Parent:
- 6:281167565d6d
diff -r 281167565d6d -r 01243fe65940 XMIT_IR.cpp --- a/XMIT_IR.cpp Sat Oct 06 17:36:37 2012 +0000 +++ b/XMIT_IR.cpp Sat Oct 06 17:45:20 2012 +0000 @@ -2,7 +2,7 @@ #include "XMIT_IR.h" -IRTransmitter::IRTransmitter(PinName TX, PinName PWM, PinName RX, int data_buff_len, void (*fptr_isr_rx)(void), void (*fptr_isr_tx)(void)) +IRTransmitter::IRTransmitter(PinName TX, PinName PWM, PinName RX, int data_buff_len, void (*fptr_isr_rx)(void)) { ir_serial = new Serial(TX,RX); ir_pwm = new PwmOut(PWM); @@ -14,11 +14,6 @@ (*ir_pwm) = 0.5; //pulse width = 50% (*ir_serial).baud(2400); (*ir_serial).attach(fptr_isr_rx,Serial::RxIrq); - (*ir_serial).attach(fptr_isr_tx,Serial::TxIrq); - -// uint_32 tmp = LPC_UART1->IER; - -// LPC_UART1->IER = tmp; //Initialize Variables for(int i=0; i<data_buff_len+3; i++) @@ -42,38 +37,15 @@ void IRTransmitter::MakePacket(char* data,int len) { char check =0x0; - Timer t; - t.reset(); - t.start(); - - //(*ir_serial).putc(ASCII_STX); - mail_tx_packet(ASCII_STX); + + (*ir_serial).putc(ASCII_STX); for(int i=0; i<len; i++) { check^=data[i]; - //(*ir_serial).putc(data[i]); - mail_tx_packet(data[i]); + (*ir_serial).putc(data[i]); } - //(*ir_serial).putc(check); - mail_tx_packet(check); - //(*ir_serial).putc(ASCII_ETX); - mail_tx_packet(ASCII_ETX); - - t.stop(); - int time = t.read_ms(); - (*debug_port).printf("\nms=%d\n",time); + (*ir_serial).putc(check); + (*ir_serial).putc(ASCII_ETX); - char tmp = isr_tx(); - LPC_UART1->THR = (uint32_t)data; - - - -} - -void IRTransmitter::mail_tx_packet(char data) -{ - char* mail = ir_txdata_mailbox.alloc(); - mail[0] = data; - ir_txdata_mailbox.put(mail); } @@ -102,10 +74,6 @@ } (*debug_port).printf(" PKT_VALID=0x%02X.",packet_is_valid(len));*/ - if((*data)=='?') { - (*debug_port).putc('*'); - } - if(packet_is_valid(len)==0) { @@ -163,22 +131,4 @@ ir_rxdata_mailbox.put(mail); } -char IRTransmitter::isr_tx(void) -{ - //char* mail = ir_rxdata_mailbox.alloc(); - //mail[0] = (char)data; - //ir_rxdata_mailbox.put(mail); - char data = 0xF1; - osEvent evt = ir_txdata_mailbox.get(); - if(evt.status == osEventMail) { - char* mail = (char*)evt.value.p; - data = (*mail); - - //(*ir_serial).putc(data); - ir_rxdata_mailbox.free(mail); - } - //(*debug_port).printf("TX=0x%02X.",data); - return data; -} -