Example #1
0
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 */
}
}