RobotControl::RobotOutput RobotControl::parse_robot_out() { const long N = 1000; RobotOutput output; char buffer[N]; qint64 n = port.readLine(buffer, N); if (n < 3 || (buffer[1] != ':')) { output.type = INVALID; } else { switch(*buffer) { case 'p': output.type = POSITION; break; case 't': output.type = TIMESTAMP; break; case 'm': output.type = MOVE; break; case 's': output.type = SPEED; break; } scan_params(buffer, &output); } //qDebug() << output.type << ":" << output.param1 << "," << // output.param2; return output; }
int main(int argc, char **argv) { struct sigaction sigact; init_pagefile(); // init page file open_logger(); // open logfile /* Create shared memory and init vmem structure */ vmem_init(); TEST_AND_EXIT_ERRNO(!vmem, "Error initialising vmem"); PRINT_DEBUG((stderr, "vmem successfully created\n")); // scan parameter vmem->adm.program_name = argv[0]; vmem->adm.page_rep_algo = VMEM_ALGO_AGING; scan_params(argc, argv); /* Setup signal handler */ sigact.sa_handler = sighandler; sigemptyset(&sigact.sa_mask); sigact.sa_flags = 0; TEST_AND_EXIT_ERRNO(sigaction(SIGUSR1, &sigact, NULL) == -1, "Error installing signal handler for USR1"); PRINT_DEBUG((stderr, "USR1 handler successfully installed\n")); TEST_AND_EXIT_ERRNO(sigaction(SIGUSR2, &sigact, NULL) == -1, "Error installing signal handler for USR2"); PRINT_DEBUG((stderr, "USR2 handler successfully installed\n")); TEST_AND_EXIT_ERRNO(sigaction(SIGINT, &sigact, NULL) == -1, "Error installing signal handler for INT"); PRINT_DEBUG((stderr, "INT handler successfully installed\n")); /* Signal processing loop */ while (1) { signal_number = 0; pause(); if (signal_number == SIGUSR1) { /* Page fault */ PRINT_DEBUG((stderr, "Processed SIGUSR1\n")); signal_number = 0; } else if (signal_number == SIGUSR2) { /* PT dump */ PRINT_DEBUG((stderr, "Processed SIGUSR2\n")); signal_number = 0; } else if (signal_number == SIGINT) { PRINT_DEBUG((stderr, "Processed SIGINT\n")); } } return 0; }