Ejemplo n.º 1
0
int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "ERROR: Please set an upper bound for the backoff!\n");
        exit(EXIT_SUCCESS);
    } else {
        sscanf(argv[1], "%d", &MAX_BACK);
    }

    sim_struct = getAlignedMemory(CACHE_LINE_SIZE, sizeof(SimStruct));
    SimInit(sim_struct, MAX_BACK);
    BarrierInit(&bar, N_THREADS);
    StartThreadsN(N_THREADS, Execute, _USE_UTHREADS_);
    JoinThreadsN(N_THREADS);
    d2 = getTimeMillis();

    printf("time: %d (ms)\tthroughput: %.2f (millions ops/sec)\t", (int) (d2 - d1), RUNS*N_THREADS/(1000.0*(d2 - d1)));
    printStats(N_THREADS);
    
#ifdef DEBUG
    SimObjectState *l = (SimObjectState *)&sim_struct->pool[((pointer_t*)&sim_struct->sp)->struct_data.index];
    fprintf(stderr, "Object state long value: %d\n", l->counter);
    fprintf(stderr, "object counter: %d\n", l->counter);
    fprintf(stderr, "rounds: %d\n", l->rounds);
    fprintf(stderr, "Average helping: %f\n", (float)l->counter/l->rounds);
    fprintf(stderr, "\n");
#endif

    return 0;
}
Ejemplo n.º 2
0
int main(void) {
	unsigned char button_val;
	unsigned char Delta;
	unsigned char Rawstate;

	//
	// Setup the system clock to run at 80 Mhz from PLL with crystal reference
	//
	SysCtlClockSet(
			SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN
					| SYSCTL_XTAL_16MHZ);

	//
	// Enable and configure the GPIO port for the LED operation.
	//
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
	GPIOPinTypeGPIOOutput(LED, RED_LED | BLUE_LED | GREEN_LED);
	GPIOPinWrite(LED, RED_LED | BLUE_LED | GREEN_LED, 0x00);

	Blink(GREEN_LED | BLUE_LED, 5, 50);

	ButtonsInit();
	UARTInit();

	while (1) {
		SysCtlDelay(100000);

		button_val = ButtonsPoll(&Delta, &Rawstate);

		if (BUTTON_PRESSED(LEFT_BUTTON,button_val,Delta)) {
			if (SendAndCheck("AT", 1)) {
				Blink(BLUE_LED, 1, 300);
			} else {
				Blink(RED_LED, 1, 300);
			}
		}

		if (BUTTON_PRESSED(RIGHT_BUTTON,button_val,Delta)) {
			break;
		}
	}

	Blink(GREEN_LED, 1, 1000);

	ADCInit();
	InitSonar();
	SimInit();

	Blink(BLUE_LED, 1, 1000);

	//
	// Loop Forever
	//
	while (1) {
		SysCtlDelay(100000);

		button_val = ButtonsPoll(&Delta, &Rawstate);

		if (BUTTON_PRESSED(LEFT_BUTTON,button_val,Delta)) {
			GPIOPinWrite(LED, RED_LED | BLUE_LED | GREEN_LED, GREEN_LED);
			max_distance = GetDistanceSonar();
			GPIOPinWrite(LED, RED_LED | BLUE_LED | GREEN_LED, 0x00);

			if (SendAndCheck("AT", 1)) {
				Blink(BLUE_LED, 1, 300);
			} else {
				Blink(RED_LED, 1, 300);
			}
		}

		if (BUTTON_PRESSED(RIGHT_BUTTON,button_val,Delta)) {
			isRunning = !isRunning;
		}

		if (isRunning) {
			tempC = GetTemperature();
			if (tempC > 70) {
				SendData(DATA_TEMP, tempC);
				Blink(RED_LED, 3, 100);
			}

			distance = GetDistanceSonar();
			percentage = (int) floor(
					((max_distance - distance) * 100.0) / max_distance);
			if ((percentage >= 0) && (percentage <= 100)
					&& abs(percentage - oldPercentage) > 10) {
				SendData(DATA_TRASH, percentage);
				oldPercentage = percentage;
			}

			Blink(GREEN_LED, 1, 10);
		}
	}
}