This application translates HTTP GET requests into the proper RS232 commands to control a Sharp Aquos TV
Dependencies: EthernetInterface mbed-rtos mbed
AquosTV.cpp
- Committer:
- davisw00
- Date:
- 2014-07-29
- Revision:
- 1:64bfc05e387d
- Parent:
- 0:427a14ebab60
- Child:
- 2:3637af74f7f0
File content as of revision 1:64bfc05e387d:
#include "AquosTV.h" AquosTV::AquosTV(DebugPort* dbg) { m_dbg = dbg; init(); } AquosTV::~AquosTV() { delete m_tv; } void AquosTV::init() { m_tv = new Serial(PTC17,PTC16); m_tv->baud(9600); m_tv->format(8,SerialBase::None,1); memset(httpcmd,0,sizeof(char)*BUF_SIZE); memset(rs232cmd,0,sizeof(char)*BUF_SIZE); m_tv->printf("RSPW1 \r"); //--- enable rs232 commands for power on/off } bool AquosTV::processCommand(const char* httpin) { int i; int j; bool ret=false; char request[BUF_SIZE]; strncpy(httpcmd,httpin,BUF_SIZE-1); httpcmd[AQUOSBUF-1] = '\0'; rs232cmd[0]='\0'; if(httpcmd[0] == 'G' && httpcmd[1] == 'E' && httpcmd[2]=='T' && httpcmd[3]==' ' && httpcmd[4]=='/') { for(i=5;httpcmd[i]!=' '&&httpcmd[i]!='\0'&&i<AQUOSBUF-1;++i) { request[i-5]=(httpcmd[i] | 0x20); //make lower case } request[i-5]='\0'; m_dbg->send("\n\rReceived Command Request: "); m_dbg->send(request); m_dbg->send("\n\r"); if(strncmp(request,"poweron",BUF_SIZE-1)==0) { strncpy(rs232cmd,"POWR1 \r",BUF_SIZE-1); ret = true; } else if(strncmp(request,"poweroff",BUF_SIZE-1)==0) { strncpy(rs232cmd,"POWR0 \r",BUF_SIZE-1); ret = true; } else if(strncmp(request,"selecttv",BUF_SIZE-1)==0) { strncpy(rs232cmd,"ITVD0 \r",BUF_SIZE-1); ret = true; } else if(strncmp(request,"input",5)==0) { i=request[5]-'0'; if(i>0 && i<10) { snprintf(rs232cmd,BUF_SIZE-1,"IAVD%i \r",i); ret = true; } } else if(strncmp(request,"volume",6)==0) { i=request[6]-'0'; j=request[7]-'0'; if(i>=0&&i<10) { if(j>=0&&j<10) { i = 10*i + j; } snprintf(rs232cmd,BUF_SIZE-1,"VOLM%02i \r",i); ret = true; } } } if(ret) { m_dbg->send("\n\rCommand Interpreted: "); m_dbg->send(rs232cmd); m_dbg->send("\n"); m_tv->printf(rs232cmd); } else { m_dbg->send("Unknown Command Request\n\r"); } return ret; } const char* AquosTV::tvcmd() { return rs232cmd; } const char* AquosTV::http() { return httpcmd; }