// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void init(void) { play_led_en(); play_led_off(); dbg_led_en(); dbg_led_on(); // initialize effects sfx_init(); // initialize SPI EEPROM support spie_init(); // initialize USART uart_init(); // setup the UART receive interrupt handler uartBeginReceive(&receiveCallback); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // establish event timer & handler // timer1, event timer // Set CTC mode (Clear Timer on Compare Match) (p.133) // Have to set OCR1A *before anything else*, otherwise it gets reset to 0! PRR &= ~(1<<PRTIM1); OCR1A = (F_CPU / SAMPLE_RATE); TCCR1A = 0; TCCR1B = (1<<WGM12) | // CTC (1<<CS10); TIMSK1 = (1<<OCIE1A); setTimeBase(SAMPLE_RATE); // setup sleep mode set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); // setup switch input SWITCH_DDR &= ~(1<<SWITCH_PIN); SWITCH_PINS |= (1<<SWITCH_PIN); SWITCH_PCMSK |= (1<<SWITCH_PCINT); PCICR |= (1<<SWITCH_PCICR); registerHighPriorityEvent(fadeStatusLed, 0, EVENT_STATE_NONE); registerEvent(readNextStatusVal, 500, EVENT_STATE_NONE); // enable all interrupts sei(); }
int main(int argc, char *argv[]){ char *rdir; short port = SERVER_DEFAULT_PORT; int rc; #if 1 if(argc < 2){ usage(); return -1; } rdir = argv[1]; rc = stat(rdir, &rs); if(rc != 0){ usage(); return -1; } if(argc > 2){ port = (short)atoi(argv[2]); } #else rdir = "/opt/PieBox"; #endif logger_init(); rc = spie_init(&__sp); if(rc != 0){ log_warn("init sharepie struct fail!\n"); return -1; } rc = spie_set_param(&__sp, rdir, port); if(rc != 0){ log_warn("set sharepie param fail:%d\n", rc); return -1; } spie_start(&__sp, 0); return 0; }