#include #include #include #include #include #include #include #include #include using namespace std; void log(string log_str, struct tm * timeinfo) { char logname[35]; memset(logname,0,sizeof(logname)); sprintf(logname,"/home/lucas/.LOG/BTlog%.2i%.2i.txt",timeinfo->tm_mon+1,timeinfo->tm_mday); system("find /home/lucas/.LOG/BTlog* -mtime +10 -type f -delete"); ofstream logfile(logname, ios::app); if(logfile.is_open()) { logfile << timeinfo->tm_mon<<"."<tm_mday<<";"<tm_hour<<":"<tm_min<<":"<tm_sec<<": BTserver: "<< log_str <<"\n"; logfile.close(); } } int exec_cmd(int cmd_value,struct tm *timeinfo){ string key,cmd=string("irsend SEND_ONCE SAMSUNG "); switch(cmd_value){ case 1://ON key=string("KEY_0"); break; case 2://Up key=string("KEY_UP"); break; case 3://OFF key=string("KEY_POWER"); break; case 4://Left key=string("KEY_LEFT"); break; case 5://Enter key=string("KEY_ENTER"); break; case 6://Right key=string("KEY_RIGHT"); break; case 7://Volume UP key=string("KEY_VOLUMEUP"); break; case 8://Down key=string("KEY_DOWN"); break; case 9://Volume Down key=string("KEY_VOLUMEDOWN"); break; case 10://Source key=string("KEY_MEDIA"); break; case 11://Play key=string("KEY_PLAY"); break; case 12://Pause key=string("KEY_PAUSE"); break; case 13://Mute key=string("KEY_MUTE"); break; case 14://Mute key=string("KEY_BACK"); break; case 15://Mute key=string("KEY_EXIT"); break; default: log(to_string(cmd_value),timeinfo); return 1; } cmd.append(key); if(system(cmd.c_str())==0) { log(key,timeinfo); return 0; } else return -1; return -1; } int setBTdevice(int device, struct tm * timeinfo) { int s; struct sockaddr_rc loc_addr = { 0 }; struct hci_dev_info di; // allocate socket s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); // bind socket to port 1 of the first available // local bluetooth adapter if(hci_devinfo(device, &di) < 0) { log("HCI device info failed",timeinfo); exit(1); } string dev_log=string("Local device: ")+ batostr(&di.bdaddr); log(dev_log,timeinfo); loc_addr.rc_bdaddr = di.bdaddr; loc_addr.rc_family = AF_BLUETOOTH; loc_addr.rc_channel = (uint8_t) 1; if(bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr)) < 0) { log("Socket bind Error",timeinfo); exit(1); } return s; } int main(int argc, char **argv) { if(argc < 2) { cout << "Usage:\n<1/0> BTdevice"< 0 ) { time ( &rawtime ); timeinfo= localtime ( &rawtime ); bytes_read = read(client, buf, sizeof(buf)); if(exec_cmd(atoi(buf),timeinfo)<0) { log_str.assign("Remote Command Failed: " + string(buf)); log(log_str,timeinfo); break; } memset(buf, 0, sizeof(buf)); } close(client); log_str.assign("Disconnected from: "+dev_addr); log(log_str,timeinfo); } } // close connection close(sock); return 0; }