/** * Read call */ ssize_t kb_read(IODevice* self, void* buffer, size_t nbytes) { size_t i; char* cbuffer = (char*)buffer; for (i = 0; i < nbytes; ++i) { cbuffer[i] = kb_getc(); } return i; }
//-------------------------------Keyboard_input------------------------------------------ void* keyboard_input(void* notuse) { char kbInput = 0; //Stores keyboard input char out_msg[100]; int instr; printMenu(); while(killFlg == 0) { instr = 100; strcpy(out_msg,"o"); kbInput = kb_getc(); if (memData.autoModeOn == OFF || kbInput == ' ' || kbInput == 'a' || kbInput == 'c' || kbInput == 'C' || kbInput == 'L' || kbInput == 'l') switch (kbInput) { case 'q': case 'Q': strcpy(out_msg, "Program Exiting... \n"); instr = GUIQUIT; killFlg = 1; break; case 'm': case 'M': strcpy(out_msg, "Printing Menu... \n"); printMenu(); break; case ' ': //timer_delete(timerid); strcpy(out_msg, "ESTOP pressed. \n"); instr = ESTOP; break; case 'B': strcpy(out_msg,"BaseCW pressed. \n"); instr = BASECW; break; case 'b': strcpy(out_msg,"BaseCCW pressed. \n"); instr = BASECCW; break; case 'S': strcpy(out_msg,"ShoulderUp pressed. \n"); instr = SHOULDERUP; break; case 's': strcpy(out_msg,"ShoulderDown pressed. \n"); instr = SHOULDERDW; break; case 'E': strcpy(out_msg,"ElbowUp pressed. \n"); instr = ELBOWUP; break; case 'e': strcpy(out_msg,"ElbowDown pressed. \n"); instr = ELBOWDW; break; case 'P': strcpy(out_msg,"PitchUp pressed. \n"); instr = PITCHUP; break; case 'p': strcpy(out_msg,"PitchDown pressed. \n"); instr = PITCHDW; break; case 'R': strcpy(out_msg,"RollCW pressed. \n"); instr = ROLLCW; break; case 'r': strcpy(out_msg,"RollCCW pressed. \n"); instr = ROLLCCW; break; case 'G': strcpy(out_msg,"GripperOpen pressed. \n"); instr = GRIPPEROP; break; case 'g': strcpy(out_msg,"GripperClose pressed. \n"); instr = GRIPPERCLOSE; break; case 'C': strcpy(out_msg,"ConveyorOn pressed. \n"); instr = CONVEYORON; break; case 'c': strcpy(out_msg,"ConveyorOFF pressed. \n"); instr = CONVEYOROFF; break; case 'L': strcpy(out_msg,"UnloadLeft pressed. \n"); instr = UNLOADLEFT; break; case 'l': strcpy(out_msg,"UnloadRight pressed. \n"); instr = UNLOADRIGHT; break; case 'H': case 'h': strcpy(out_msg,"Home pressed. \n"); instr = HOMEROBOT; break; case 'A': strcpy(out_msg,"AutomodeOn pressed. \n"); instr = MANUALOFF; break; case 'a': strcpy(out_msg,"AutomodeOff pressed. \n"); instr = MANUALON; break; case 'D': case 'd': strcpy(out_msg,"Display pressed. \n"); readMsg(0,1); break; default: break; } if (out_msg[0] != 'o') { printf(out_msg); flushall(); } if (instr != 100) { last_input = instr; writeMsg(instr); } //start the timer if ((kbInput == 'B')||(kbInput == 'b')||(kbInput == 'S')||(kbInput == 's')|| (kbInput == 'E')||(kbInput == 'e')||(kbInput == 'P')||(kbInput == 'p')|| (kbInput == 'R')||(kbInput == 'r')||(kbInput == 'G')||(kbInput == 'g')|| (kbInput == 'L')||(kbInput == 'l')) { timer_settime(timerid, 0, &timer,NULL); } delay(100); } return EXIT_SUCCESS; }