You can turn on the TV everywhere.

Dependencies:   RemoteIR WIZnetInterface mbed

Files at this revision

API Documentation at this revision

Comitter:
jehoon
Date:
Wed Aug 26 14:04:54 2015 +0000
Commit message:
You can turn on the TV everywhere.

Changed in this revision

RemoteIR.lib Show annotated file Show diff for this revision Revisions of this file
WIZnetInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 5cc1166c695e RemoteIR.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RemoteIR.lib	Wed Aug 26 14:04:54 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/shintamainjp/code/RemoteIR/#268cc2ab63bd
diff -r 000000000000 -r 5cc1166c695e WIZnetInterface.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WIZnetInterface.lib	Wed Aug 26 14:04:54 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#3b64df29662f
diff -r 000000000000 -r 5cc1166c695e main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 26 14:04:54 2015 +0000
@@ -0,0 +1,135 @@
+/**
+ * RemoteIR library - Test program.
+ *
+ * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
+ * http://shinta.main.jp/
+ */
+ 
+#include <mbed.h>
+
+#include "EthernetInterface.h"
+#include "TransmitterIR.h"
+#include "RemoteIR.h"
+
+TransmitterIR ir_tx(D5);
+Serial pc(USBTX, USBRX);
+
+
+int transmit(RemoteIR::Format format, uint8_t *buf, int bitlength, int timeout = 1000) {
+    int cnt = 0;
+    while (ir_tx.getState() != TransmitterIR::Idle) {
+        cnt++;
+        if (timeout < cnt) {
+            return -1;
+        }
+    }
+    return ir_tx.setData(format, buf, bitlength);
+}
+
+
+void sort_data(char *buf, int n, char *type, char *cmd){
+   
+    bool flag = 0;
+    int s = 0;
+    int i, j;
+    int addBinary = 1;
+    int pontOfcommand = 0;
+    //devide
+    for(i=0;i<n;i++){
+        if(buf[i]==','){
+            flag = 1;
+            s = i;
+            continue;
+        }    
+        if(flag){
+            j = i-(s+1);
+            
+            if(j%8 == 0 && j != 0) {pontOfcommand++; addBinary = 1;} 
+            
+            if(buf[i] == '1') cmd[pontOfcommand] += addBinary;
+
+            addBinary*=2;
+        }
+        else
+            type[i] = buf[i];
+    }       
+}
+
+/**
+ * Entry point.
+ */
+int main(void) {
+    pc.baud(115200);
+    RemoteIR::Format format;
+    
+    pc.printf("Wait a second...\r\n");
+
+    int phy_link;
+    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
+    EthernetInterface eth;
+    eth.init(mac_addr); //Use DHCP
+    eth.connect();
+    do{
+        phy_link = eth.ethernet_link();
+         pc.printf("...");
+         wait(2);
+     }while(!phy_link);
+     printf("\r\n");
+     pc.printf("Server IP Address is %s\r\n", eth.getIPAddress());
+    
+     TCPSocketServer server;
+     server.bind(5000);
+     server.listen();
+    
+    
+    while (1) {
+
+        //char buf[50]="NEC,00100000110111110001000011101111\n";
+   
+        printf("Wait for new connection...\r\n");
+        TCPSocketConnection client;
+        server.accept(client);
+        client.set_blocking(false, 15000); // Timeout after (1.5)s
+        printf("Connection from: %s\r\n", client.get_address());
+             
+            while (true) {
+                char buf[50] = {0};
+                char type[10] = {0};
+                char cmd[4] = {0};
+                int bitlength=0;
+                int n = client.receive(buf, sizeof(buf));
+                if(n <= 0) continue;
+                
+                // print received message to terminal
+                //buf[n] = '\0';
+                pc.printf("Received message from Client :\n %s\n",buf);
+                
+                sort_data(buf, n, type, cmd);
+               
+                if(!strncmp(type,"NEC",strlen("NEC")))
+                    format = RemoteIR::NEC;
+                else if(!strncmp(type,"AEHA",strlen("AEHA")))
+                    format = RemoteIR::AEHA;
+                else if(!strncmp(type,"SONY",strlen("SONY")))
+                    format = RemoteIR::SONY;
+                else if(!strncmp(type,"NEC_REPEAT",strlen("NEC_REPEAT")))
+                    format = RemoteIR::NEC_REPEAT;
+                else if(!strncmp(type,"AEHA_REPEAT",strlen("AEHA_REPEAT")))
+                    format = RemoteIR::AEHA_REPEAT;
+                else
+                    format = RemoteIR::UNKNOWN;
+
+                pc.printf("SEND HEX: %2x %2x %2x %2x\n",cmd[0],cmd[1],cmd[2],cmd[3]);
+
+                    {
+                        bitlength = transmit(format, (uint8_t*)cmd, 32);
+                        if (bitlength < 0) {
+                             continue;
+                        }
+                    }
+                    client.close();
+        }
+        
+   }
+}
+    
diff -r 000000000000 -r 5cc1166c695e mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Aug 26 14:04:54 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/8ed44a420e5c
\ No newline at end of file