Subversion Repositories HomeAutomation

Rev

Rev 1909 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
801 linlun 1
#include <inttypes.h>
2
#include <avr/interrupt.h>
3
#include <stdio.h>
4
#include <string.h>
819 migan 5
#include <drivers/can/stdcan.h>
801 linlun 6
#include <config.h> // All configuration parameters
7
#include <bios.h>   // BIOS interface declarations, including CAN structure and ID defines.
8
#include <drivers/timer/timer.h>
9
 
905 arune 10
#include <drivers/can/canprintf.h>
11
 
801 linlun 12
%INCLUDE
13
 
14
int main(void)
15
{
819 migan 16
	StdCan_Msg_t rxMsg; // Message storage
801 linlun 17
 
18
	// Enable interrupts as early as possible
19
	sei();
20
 
21
	Timer_Init();
22
 
23
	StdCan_Init();
905 arune 24
 
25
#if CAN_PRINTF==1
26
	#warning can_printf in use
27
	CanPrintf_Init();
28
#endif
801 linlun 29
 
30
	Timer_SetTimeout(APP_HEARTBEAT_TIMER, STDCAN_HEARTBEAT_PERIOD, TimerTypeFreeRunning, StdCan_SendHeartbeat);
905 arune 31
 
801 linlun 32
	%INIT
33
 
819 migan 34
	while (1)
35
	{
801 linlun 36
		%PROCESS
37
 
819 migan 38
		if (StdCan_Get(&rxMsg) == StdCan_Ret_OK)
39
		{
1909 arune 40
			uint32_t HwId=BIOS_GetHwId();
986 runge 41
			if (	StdCan_Ret_class(rxMsg.Header) == CAN_MODULE_CLASS_MNMT &&
948 runge 42
				StdCan_Ret_direction(rxMsg.Header) == DIRECTIONFLAG_TO_OWNER &&
43
				rxMsg.Header.Command == CAN_MODULE_CMD_GLOBAL_LIST &&
1924 arune 44
				rxMsg.Data[0] == (HwId&0xff) &&
45
				rxMsg.Data[1] == ((HwId>>8)&0xff) &&
46
				rxMsg.Data[2] == ((HwId>>16)&0xff) &&
47
				rxMsg.Data[3] == ((HwId>>24)&0xff))
819 migan 48
			{
49
				%LIST
801 linlun 50
			}
819 migan 51
			else
52
			{
53
				%HANDLEMSG
801 linlun 54
			}
819 migan 55
		}
801 linlun 56
	}
57
 
58
	return 0;
59
}