示例#1
0
文件: main.c 项目: nibelungen/HCAN
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;
}
示例#2
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;
}