DesktopDevice::DesktopDevice() : IDevice(Core::Id(DESKTOP_DEVICE_TYPE), IDevice::AutoDetected, IDevice::Hardware, Core::Id(DESKTOP_DEVICE_ID)) { setDisplayName(QCoreApplication::translate("ProjectExplorer::DesktopDevice", "Local PC")); setDeviceState(IDevice::DeviceStateUnknown); const QString portRange = QString::fromLatin1("%1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END); setFreePorts(Utils::PortList::fromString(portRange)); }
int main(int argc, char **argv) { wiringPiSetup(); pinMode(PIN, OUTPUT); digitalWrite(PIN, LOW); printf("Pale yellow-green gas.\n\n[*] Listening on port %i.\n", PORT); int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { fprintf(stderr, "[!] Cannot open socket.\n"); exit(1); } struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(PORT); if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { fprintf(stderr, "[!] Cannot bind socket.\n"); exit(1); } listen(sockfd, 5); while (true) { struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); int clientfd = accept(sockfd, (struct sockaddr *)&client_addr, &client_addr_len); if (clientfd >= 0) { char buffer[255]; memset(buffer, 0, sizeof(buffer)); int len = read(clientfd, buffer, sizeof(buffer)); if (len >= (7+1)) { if (buffer[6] == '/') { char letter = toupper(buffer[5]); bool state = (buffer[7] == '1'); printf("[:] Turned device %c %s.\n", letter, ((state) ? "on" : "off")); setDeviceState(letter, state); // respond to avoid error write(clientfd, MESSAGE, strlen(MESSAGE)); } } else { printf("[*] Something went wrong reading from the client.\n"); } close(clientfd); } else { printf("[*] Something went wrong accepting a client.\n"); } } }