void main(){ if (wiringPiSetup() == -1) {printf("pi setup error\n");exit(1);} init_led_pins(); sleeper.tv_sec = 0; sleeper.tv_nsec = 1 * 1000000 ; sleeper2.tv_sec = 0; sleeper2.tv_nsec = 1 * 200000000 ; unsigned char c_ne; unsigned char c_nw; unsigned char c_se; unsigned char c_sw; int rc,old_scheduler_policy; struct sched_param my_params; old_scheduler_policy=sched_getscheduler(0); my_params.sched_priority=sched_get_priority_max(SCHED_RR); rc=sched_setscheduler(0,SCHED_RR,&my_params); if(rc<0){ perror("sched_setscheduler to SCHED_RR error"); exit(0); } old_scheduler_policy=sched_getscheduler(0); rc=sched_setscheduler(0,SCHED_FIFO,&my_params); if(rc<0){ perror("sched_setscheduler to SCHED_FIFO error"); exit(0); } old_scheduler_policy=sched_getscheduler(0); FILE *f; int i = 0; int rest = 0; char buf[255]; int status = 0; // 0:loading, 1:playing_time, 2:stop, 3:cry, 4:qrcode, 5:qr_success int time = 0; while (1) { if (rest <= 0) status = 0; if(status == 0 && (f=fopen("/dev/shm/led_camera.buf","rb"))!=NULL){ fgets(buf, 255, f); if (buf[0] == '2') { status = 5; } else if (buf[0] == '1' ) { status = 4; } fclose(f); } if(status == 0 && (f=fopen("/dev/shm/led_network.buf","rb"))!=NULL){ fgets(buf, 255, f); if (buf[0] == '1' ) { status = 3; } fclose(f); } if(status == 0 && (f=fopen("/dev/shm/led_ce.buf","rb"))!=NULL){ fgets(buf, 255, f); if (strlen(buf) > 0) { if (buf[0] == 'p'){ status = 2; }else{ status = 1; sscanf(buf, "%d", &time); } } fclose(f); } switch(status){ case 0: print_loading(i); break; case 1: print_time(time); if (rest <= 0) rest = 20; break; case 2: print_led(stop); if (rest <= 0) rest = 20; break; case 3: print_led(cry); if (rest <= 0) rest = 20; break; case 4: print_led(qrcode); if (rest <= 0) rest = 20; break; case 5: print_led(right); if (rest <= 0) rest = 20; break; } i++; rest--; } }
int main (void) { /* Insert system clock initialization code here (sysclk_init()). */ board_init(); sysclk_init(); ioport_init(); /* Insert application code here, after the board has been initialized. */ //Own variables bool running = true; bool error = false; uint8_t spi_counter = 0; //Testdata uint32_t testdata = 0; //Create command & data storage uint8_t commandUSART[NUMBER_CTRL_BYTES]; uint8_t commandSPI[NUMBER_CTRL_BYTES]; //Memory uint8_t write_page[EEPROM_PAGE_SIZE]; uint8_t read_page[EEPROM_PAGE_SIZE]; //Own inits init_led_pins(); //Boot sequence initiated switch_led(BOOT, true); init_usart_driver(PIN3_bm, PIN2_bm, &USART_data_Stepper, &USARTD0); init_usart_driver(PIN3_bm, PIN2_bm, &USART_data_PreAmp, &USARTC0); //Test blinking for(int i = 0; i < 10; i++) { blink_led(BOOT, 100); blink_led(RUNNING, 50); blink_led(RXTX, 50); blink_led(FAILURE, 100); blink_led(RXTX, 50); blink_led(RUNNING, 50); } //Load Stuff from memory, no clue what I should load memset(read_page, 0x0, EEPROM_PAGE_SIZE); nvm_eeprom_read_buffer(POSITION_ADDR, read_page, EEPROM_PAGE_SIZE); testdata = ((uint32_t)read_page[3] << 24) | ((uint32_t)read_page[2] << 16) | ((uint32_t)read_page[1] << 8) | read_page[0]; memset(read_page, 0x0, EEPROM_PAGE_SIZE); nvm_eeprom_read_buffer(SPEED_ADDR, read_page, EEPROM_PAGE_SIZE); //currentSpeed = ((uint32_t)read_page[0] << 24) | ((uint32_t)read_page[1] << 16) | ((uint32_t)read_page[2] << 8) | read_page[3]; memset(read_page, 0x0, EEPROM_PAGE_SIZE); //Boot sequence finished switch_led(BOOT, false); //Test of data if(testdata != 3) { switch_led(RXTX, true); //testdata = 10; } else switch_led(RUNNING, true); delay_ms(1000); testdata = 3; //End of test data; if(error != true) { memset(write_page, 0x0, EEPROM_PAGE_SIZE); write_page[3] = testdata >> 24; write_page[2] = testdata >> 16; write_page[1] = testdata >> 8; write_page[0] = testdata; nvm_eeprom_load_page_to_buffer(write_page); nvm_eeprom_atomic_write_page(POSITION_ADDR); memset(write_page, 0x0, EEPROM_PAGE_SIZE); write_page[3] = testdata >> 24; write_page[2] = testdata >> 16; write_page[1] = testdata >> 8; write_page[0] = testdata; nvm_eeprom_load_page_to_buffer(write_page); nvm_eeprom_atomic_write_page(POSITION_ADDR); memset(write_page, 0x0, EEPROM_PAGE_SIZE); switch_led(RUNNING, false); switch_led(RXTX, true); switch_led(BOOT, true); //Shutdown procedure can be executed }