library for implementing ir transmission

Files at this revision

API Documentation at this revision

Comitter:
cmulady
Date:
Sat Oct 06 17:45:20 2012 +0000
Parent:
6:281167565d6d
Commit message:
good stopping point. ir tx works well enough

Changed in this revision

XMIT_IR.cpp Show annotated file Show diff for this revision Revisions of this file
XMIT_IR.h Show annotated file Show diff for this revision Revisions of this file
--- 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;
-}
-
--- a/XMIT_IR.h	Sat Oct 06 17:36:37 2012 +0000
+++ b/XMIT_IR.h	Sat Oct 06 17:45:20 2012 +0000
@@ -11,23 +11,19 @@
 class IRTransmitter
 {
 public:
-    IRTransmitter(PinName TX, PinName PWM, PinName RX, int data_buff_len, void (*fptr_isr_rx)(void), void (*fptr_isr_tx)(void));
+    IRTransmitter(PinName TX, PinName PWM, PinName RX, int data_buff_len, void (*fptr_isr_rx)(void));
     ~IRTransmitter();
     void MakePacket(char* data,int len);
     char ReadPacket(char* data, int len);
-    void isr_uartrx(void);
     void isr_rx(char data);
-    char isr_tx(void);
     void set_debug_port(Serial* port);
 
 private:
     char packet_is_valid(int data_len);
     void update_packet_buffer(char new_data, int data_len);
-    void mail_tx_packet(char data);
 
 public:
-    Mail<char,32> ir_rxdata_mailbox;
-    Mail<char,32> ir_txdata_mailbox;
+    Mail<char,64> ir_rxdata_mailbox;
     
     Serial* debug_port;