static void* check_updates_worker(void* arg){ timing_info timing; reset_timing(&timing); while(!stop){ start_timing(&timing); if(!updated && push_commit){ if(push_commit){ pthread_mutex_lock(&commit_mutex); if(push_result_shell(push_commit, NULL)){ puts("Failed to push coin, reseting."); pthread_mutex_lock(&update_mutex); fetch_updates(); updated = 1; pthread_mutex_unlock(&update_mutex); } else { puts("Earned it!"); } push_commit = NULL; pthread_mutex_unlock(&commit_mutex); } else { if(check_updates()){ pthread_mutex_lock(&update_mutex); updated = 1; pthread_mutex_unlock(&update_mutex); } } time_point(&timing); print_timing(&timing); } else { skip_point(&timing); usleep(10); } } puts("Update thread ending"); pthread_exit(NULL); }
void klawisz(GtkWidget *widget, GdkEventKey *event, int stan) { /* parametr stan jest przekazywany do funkcji i przyjmuje wartości 1 lub 0 */ uint klawisz; klawisz = ((GdkEventKey*) event)->keyval; uint klawisz_hardware; klawisz_hardware = ((GdkEventKey*) event)->hardware_keycode; uint czas; czas = ((GdkEventKey*) event)->time; /*pressing keys*/ if (stan == 1) { printf("klawisz wcisnięty: %6X,%6X,%8hd\n", klawisz, klawisz_hardware, czas); if (klawisz == 0xff51) /* strzalka w lewo */ { stick_x = -32768; sprintf(wychylenie_x, "%d", stick_x); gtk_label_set_text(label_x1, wychylenie_x); wyslij_stick(0, stick_x); } if (klawisz == 0xff53) /* strzalka w prawo */ { stick_x = 32767; sprintf(wychylenie_x, "%d", stick_x); gtk_label_set_text(label_x1, wychylenie_x); wyslij_stick(0, stick_x); } if (klawisz == 0xff52) /* strzalka w górę */ { /* stick_y = -32768; sprintf(wychylenie_y, "%d", stick_y); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(1, stick_y); */ // half speed throttle = 16384; sprintf(wychylenie_y, "%d", throttle); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(4, throttle); } if (klawisz == 0xff54) /* strzalka w dół */ { /* stick_y = 32767; sprintf(wychylenie_y, "%d", stick_y); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(1, stick_y); */ // quarter speed throttle = 8192; sprintf(wychylenie_y, "%d", throttle); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(4, throttle); } /* numpad */ if (klawisz == 0xff96 || klawisz == 0xffb4) /* numpad 4 */ { //push_item(statusbar, GINT_TO_POINTER(context_id), "numpad 4 pressed"); wyslij_stick(8, -32768); } if (klawisz == 0xff98 || klawisz == 0xffb6) /* numpad 6 */ { //push_item(statusbar, GINT_TO_POINTER(context_id), "numpad 6 pressed"); wyslij_stick(8, 32767); } if (klawisz == 0xff97 || klawisz == 0xffb8) /* numpad 8 */ { //push_item(statusbar, GINT_TO_POINTER(context_id), "numpad 8 pressed"); wyslij_stick(9, -32768); } if (klawisz == 0xff99 || klawisz == 0xffb2) /* numpad 2 */ { //push_item(statusbar, GINT_TO_POINTER(context_id), "numpad 2 pressed"); wyslij_stick(9, 32767); } /* end of numpad */ if (klawisz == 'e') { switch_Expo(); } if (klawisz == 'f') { toggle_Fullscreen(); } /** PID */ if (klawisz == 'q') /* increase proportional */ {wyslij_dwustan(13, 1);} if (klawisz == 'a') /* decrease proportional */ {wyslij_dwustan(13, 0);} if (klawisz == 'w') /* increase integral */ {wyslij_dwustan(14, 1);} if (klawisz == 's') /* decrease integral */ {wyslij_dwustan(14, 0);} if (klawisz == 'e') /* increase derivative */ {wyslij_dwustan(15, 1);} if (klawisz == 'd') /* decrease derivative */ {wyslij_dwustan(15, 0);} if (klawisz == 0x002C) {/* ',' */ wyslij_stick(6, 32767); } if (klawisz == 0x002E) {/* '.' */ wyslij_stick(6, -32768); } if (klawisz == '=') { wyslij_stick(7, -32768); } if (klawisz == '-') { wyslij_stick(7, 32767); } if (klawisz == '[') { printf("\'[\' - waypoint action No 1\n"); push_item(statusbar, GINT_TO_POINTER(context_id), "\'[\' - waypoint action No 1"); //TODO: include sending waypoints } if (klawisz == ']') { printf("\']\' - waypoint action No 2\n"); push_item(statusbar, GINT_TO_POINTER(context_id), "\']\' - waypoint action No 2 (skip waypoint)"); skip_point(); } if (klawisz == 'i') { printf("sending introduction\n"); //push_item(statusbar, GINT_TO_POINTER(context_id), "sending introduction"); } if (klawisz == 'h') { wyslij_dwustan(9, 1); } if (klawisz == 'k') { if (synchronization) { synchronization = FALSE; gtk_statusbar_push(statusbar, GINT_TO_POINTER(context_id), "synchro OFF"); } else { synchronization = TRUE; gtk_statusbar_push(statusbar, GINT_TO_POINTER(context_id), "synchro ON"); } } if (klawisz == 'l') { switch_Shining(); } } /*releasing keys*/ if (stan == 0) { printf("klawisz zwolniony: %6X,%6X,%8hd\n", klawisz, klawisz_hardware, czas); if (klawisz == 0xff51) /* strzalka w lewo zwolniona */ { stick_x = 0; sprintf(wychylenie_x, "%d", stick_x); gtk_label_set_text(label_x1, wychylenie_x); wyslij_stick(0, stick_x); } if (klawisz == 0xff53) /* strzalka w prawo zwolniona */ { stick_x = 0; sprintf(wychylenie_x, "%d", stick_x); gtk_label_set_text(label_x1, wychylenie_x); wyslij_stick(0, stick_x); } if (klawisz == 0xff52) /* strzalka w górę zwolniona */ { /* stick_y = 0; sprintf(wychylenie_y, "%d", stick_y); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(1, stick_y); */ throttle = 0; sprintf(wychylenie_y, "%d", throttle); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(4, throttle); } if (klawisz == 0xff54) /* strzalka w dół zwolniona */ { /* stick_y = 0; sprintf(wychylenie_y, "%d", stick_y); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(1, stick_y); */ throttle = 0; sprintf(wychylenie_y, "%d", throttle); gtk_label_set_text(label_y1, wychylenie_y); wyslij_stick(4, throttle); } if (klawisz == 0x002C) {/* ',' */ wyslij_stick(6, 0); } if (klawisz == 0x002E) {/* '.' */ wyslij_stick(6, 0); } if (klawisz == '=') { wyslij_stick(7, 0); } if (klawisz == '-') { wyslij_stick(7, 0); } if (klawisz == 'h') { wyslij_dwustan(9, 0); } /* numpad */ if (klawisz == 0xff96 || klawisz == 0xffb4) /* numpad 4 */ { wyslij_stick(8, 0); } if (klawisz == 0xff98 || klawisz == 0xffb6) /* numpad 6 */ { wyslij_stick(8, 0); } if (klawisz == 0xff97 || klawisz == 0xffb8) /* numpad 8 */ { wyslij_stick(9, 0); } if (klawisz == 0xff99 || klawisz == 0xffb2) /* numpad 2 */ { wyslij_stick(9, 0); } /* end of numpad */ } }