int main(void) { wdt_enable(WDTO_2S); canix_init(); // Haus-Elektrik Service Handler installieren canix_reg_frame_callback(hauselektrik_callback, -1, HCAN_PROTO_SFP, HCAN_SRV_HES); canix_reg_rtc_callback(timer_handler); canix_reg_idle_callback(idle_handler); lcd_init(LCD_DISP_ON); lcd_clrscr(); /* * HINT: Grad Celsius = \337 * (octal fuer 206 bzw. 0xdf) */ lcdctrl_init(); keys_init(); lcdstatemachine_init(); canix_mainloop(); return 0; }
uint8_t canix_init(void) { uint8_t i; uint8_t res; // RTC init canix_rtc_init(); // init callbacks for (i = 0; i < MAX_FRAME_CALLBACKS; i++) frame_callback_entry[i].callback = (canix_frame_callback) 0; for (i = 0; i < MAX_IDLE_CALLBACKS; i++) idle_callback[i] = (canix_idle_callback) 0; for (i = 0; i < MAX_RTC_CALLBACKS; i++) rtc_callback[i] = (canix_rtc_callback) 0; #ifdef CANIX_LED_SETUP1 canix_led_init_ports(); #endif #ifdef CANIX_LED_SETUP2 canix_led_init_ports(); #endif // Eingangsbuffer leeren for (i = 0; i < CANIX_QUEUE_SIZE; i++) canix_rx_queue[i].used = 0; spi_init(); res = can_open_interface(); #ifdef CANIX_HMS // HMS Stuff canix_reg_frame_callback(canix_SFP_HMS_handler, canix_selfaddr(), HCAN_PROTO_SFP, HCAN_SRV_HMS); canix_reg_frame_callback(canix_SFP_HMS_handler, HCAN_MULTICAST_INFO, HCAN_PROTO_SFP, HCAN_SRV_HMS); #endif #ifdef CANIX_RTS // RTS Stuff (Real Time Service, just passive receiving) canix_reg_frame_callback(canix_SFP_RTS_handler, HCAN_MULTICAST_INFO, HCAN_PROTO_SFP, HCAN_SRV_RTS); canix_reg_frame_callback(canix_SFP_RTS_handler, canix_selfaddr(), HCAN_PROTO_SFP, HCAN_SRV_RTS); #endif #ifdef CANIX_SYSLOG // enable syslog debug messages canix_set_syslog_level(eeprom_read_byte((uint8_t *)EEPR_DEBUG_LEVEL)); #endif sei(); #ifdef CANIX_EDS eds_init(); canix_reg_frame_callback(eds_can_callback, canix_selfaddr(), HCAN_PROTO_SFP, HCAN_SRV_EDS); #endif return res; }