Rev 108 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 108 | Rev 109 | ||
|---|---|---|---|
| Line 2... | Line 2... | ||
| 2 | * |
2 | * |
| 3 | * Main application |
3 | * Main application |
| 4 | * |
4 | * |
| 5 | ********************************************************************* |
5 | ********************************************************************* |
| 6 | * FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Main.c $ |
6 | * FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Main.c $ |
| 7 | * Last changed: $LastChangedDate: 2006-11-15 |
7 | * Last changed: $LastChangedDate: 2006-11-15 18:49:55 +0100 (Wed, 15 Nov 2006) $ |
| 8 | * By: $LastChangedBy: johboh $ |
8 | * By: $LastChangedBy: johboh $ |
| 9 | * Revision: $Revision: |
9 | * Revision: $Revision: 109 $ |
| 10 | ********************************************************************/ |
10 | ********************************************************************/ |
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | #include <compiler.h> |
13 | #include <compiler.h> |
| 14 | #include <stackTasks.h> |
14 | #include <stackTasks.h> |
| Line 45... | Line 45... | ||
| 45 | if (EERead(NODE_ID_EE)==NODE_HAS_ID) |
45 | if (EERead(NODE_ID_EE)==NODE_HAS_ID) |
| 46 | { |
46 | { |
| 47 | MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); |
47 | MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); |
| 48 | MY_NID=EERead(NODE_ID_EE + 3); |
48 | MY_NID=EERead(NODE_ID_EE + 3); |
| 49 | } |
49 | } |
| - | 50 | ||
| - | 51 | // Send user program startup heatbeat |
|
| - | 52 | outCm.funct = FUNCT_BOOTLOADER; |
|
| - | 53 | outCm.funcc = FUNCC_BOOT_HEARTBEAT; |
|
| - | 54 | outCm.nid = MY_NID; |
|
| - | 55 | outCm.sid = MY_ID; |
|
| - | 56 | outCm.data_length = 1; |
|
| - | 57 | outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; |
|
| - | 58 | while(!canSendMessage(outCm,PRIO_HIGH)); |
|
| - | 59 | ||
| 50 | 60 | ||
| 51 | while(1) |
61 | while(1) |
| 52 | { |
62 | { |
| 53 | static TICK t = 0; |
63 | static TICK t = 0; |
| 54 | static TICK heartbeat = 0; |
64 | static TICK heartbeat = 0; |
| 55 | 65 | ||
| 56 | 66 | ||
| 57 | if ((tickGet()-heartbeat)>TICK_SECOND*5) |
67 | if ((tickGet()-heartbeat)>TICK_SECOND*5) |
| 58 | { |
68 | { |
| - | 69 | // Send alive heartbeat |
|
| 59 | outCm.funct = FUNCT_BOOTLOADER; |
70 | outCm.funct = FUNCT_BOOTLOADER; |
| 60 | outCm.funcc = FUNCC_BOOT_HEARTBEAT; |
71 | outCm.funcc = FUNCC_BOOT_HEARTBEAT; |
| 61 | outCm.nid = MY_NID; |
72 | outCm.nid = MY_NID; |
| 62 | outCm.sid = MY_ID; |
73 | outCm.sid = MY_ID; |
| 63 | outCm.data_length = |
74 | outCm.data_length = 1; |
| - | 75 | outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; |
|
| 64 | while(!canSendMessage(outCm,PRIO_HIGH)); |
76 | while(!canSendMessage(outCm,PRIO_HIGH)); |
| 65 | 77 | ||
| 66 | heartbeat = tickGet(); |
78 | heartbeat = tickGet(); |
| 67 | } |
79 | } |
| 68 | if ((tickGet()-t)>TICK_SECOND) |
80 | if ((tickGet()-t)>TICK_SECOND) |
| Line 143... | Line 155... | ||
| 143 | switch(cm.funcc) |
155 | switch(cm.funcc) |
| 144 | { |
156 | { |
| 145 | case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. |
157 | case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. |
| 146 | case FUNCC_BOOT_SET_ID: |
158 | case FUNCC_BOOT_SET_ID: |
| 147 | // Change my ID and NID |
159 | // Change my ID and NID |
| 148 | MY_ID=(((WORD)cm.data[ |
160 | MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; |
| 149 | MY_NID=cm.data[ |
161 | MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; |
| 150 | EEWrite(NODE_ID_EE+1,cm.data[ |
162 | EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); |
| 151 | EEWrite(NODE_ID_EE+2,cm.data[ |
163 | EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); |
| 152 | EEWrite(NODE_ID_EE+3,cm.data[ |
164 | EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); |
| 153 | EEWrite(NODE_ID_EE,NODE_HAS_ID); |
165 | EEWrite(NODE_ID_EE,NODE_HAS_ID); |
| 154 | // Send ack with new id. |
166 | // Send ack with new id. |
| 155 | outCm.funct = FUNCT_BOOTLOADER; |
167 | outCm.funct = FUNCT_BOOTLOADER; |
| 156 | outCm.funcc = FUNCC_BOOT_ACK; |
168 | outCm.funcc = FUNCC_BOOT_ACK; |
| 157 | outCm.nid = MY_NID; |
169 | outCm.nid = MY_NID; |