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; }
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); } } }