You can turn on the TV everywhere.
Dependencies: RemoteIR WIZnetInterface mbed
Diff: main.cpp
- Revision:
- 0:5cc1166c695e
--- /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();
+ }
+
+ }
+}
+