Rev 605 | Rev 627 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 605 | Rev 607 | ||
|---|---|---|---|
| Line 111... | Line 111... | ||
| 111 | 111 | ||
| 112 | /*----------------------------------------------------------------------------- |
112 | /*----------------------------------------------------------------------------- |
| 113 | * Main Program |
113 | * Main Program |
| 114 | *---------------------------------------------------------------------------*/ |
114 | *---------------------------------------------------------------------------*/ |
| 115 | int main(void) { |
115 | int main(void) { |
| 116 |
|
116 | // uint32_t act; not used anymoer |
| 117 |
|
117 | // uint8_t act_type, lcd_size; not used anymore |
| - | 118 | uint8_t m, lcd_action; |
|
| 118 | 119 | ||
| 119 | sei(); |
120 | sei(); |
| 120 | 121 | ||
| 121 | /* |
122 | /* |
| 122 | * Initialize rotaryencoders and buttons |
123 | * Initialize rotaryencoders and buttons |
| Line 141... | Line 142... | ||
| 141 | 142 | ||
| 142 | // Backlight |
143 | // Backlight |
| 143 | TCCR1A |= (1<<COM1A1)|(1<<WGM11); |
144 | TCCR1A |= (1<<COM1A1)|(1<<WGM11); |
| 144 | TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS10); |
145 | TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS10); |
| 145 | ICR1 = 0xFF; // Make it 8 bits |
146 | ICR1 = 0xFF; // Make it 8 bits |
| 146 | OCR1A = |
147 | OCR1A = 0xFF; |
| 147 | DDRB |= (1<<DDB1); |
148 | DDRB |= (1<<DDB1); |
| - | 149 | ||
| 148 | 150 | ||
| 149 | Can_Message_t txMsg; |
151 | Can_Message_t txMsg; |
| 150 | txMsg.ExtendedFlag=1; |
152 | txMsg.ExtendedFlag=1; |
| 151 | txMsg.RemoteFlag=0; |
153 | txMsg.RemoteFlag=0; |
| 152 | // FIXME skicka app startad |
154 | // FIXME skicka app startad |
| 153 | BIOS_CanCallback = &can_receive; |
155 | BIOS_CanCallback = &can_receive; |
| 154 | 156 | ||
| 155 | lcd_init( LCD_DISP_ON ); |
157 | lcd_init( LCD_DISP_ON ); |
| 156 | lcd_clrscr(); |
158 | lcd_clrscr(); |
| 157 | lcd_puts("HomeAutomation\n"); |
159 | lcd_puts("HomeAutomation\n"); |
| 158 | 160 | ||
| 159 | send_dimensions(); |
161 | send_dimensions(); |
| 160 | lcd_puts("Very nice!\n"); |
162 | lcd_puts("Very nice!\n"); |
| 161 | 163 | ||
| 162 | /* main loop */ |
164 | /* main loop */ |
| 163 | while(1){ |
165 | while(1){ |
| 164 | /* check if any messages have been received */ |
166 | /* check if any messages have been received */ |
| 165 | if(rxMsgFull){ |
167 | if(rxMsgFull){ |
| 166 |
|
168 | uint16_t act_type; |
| - | 169 | uint8_t lcdid; |
|
| 167 |
|
170 | if ( ((rxMsg.Id & CAN_MASK_CLASS)>>CAN_SHIFT_CLASS) == CAN_ACT){// FIXME ett jäkla herk, städa upp |
| 168 | act = (rxMsg.Id & TYPE_MASK) >> TYPE_MASK_BITS; |
- | |
| 169 | act_type = (act & ACT_TYPE_MASK) >> ACT_TYPE_BITS; |
- | |
| 170 | lcd_action = (act & LCD_ACTION_MASK) >> LCD_ACTION_BITS; |
- | |
| 171 | lcd_size = (act & LCD_SIZE_MASK) >> LCD_SIZE_BITS; |
- | |
| 172 | 171 | ||
| - | 172 | ||
| - | 173 | act_type =(uint16_t)((rxMsg.Id & CAN_MASK_ACT_TYPE) >> CAN_SHIFT_ACT_TYPE); |
|
| - | 174 | ||
| - | 175 | lcdid = (uint8_t)((rxMsg.Id & CAN_MASK_ACT_ID) >> CAN_SHIFT_ACT_ID); |
|
| - | 176 | ||
| - | 177 | ||
| 173 |
|
178 | if( act_type == ACT_TYPE_LCD ){ //FIXME add id to check here |
| - | 179 | lcd_action = rxMsg.Data.bytes[0]; |
|
| 174 | switch( lcd_action ){ |
180 | switch( lcd_action ){ |
| 175 | case LCD_ACTION_CLR: |
181 | case LCD_ACTION_CLR: |
| 176 | // Clear LCD |
182 | // Clear LCD |
| 177 | lcd_clrscr(); |
183 | lcd_clrscr(); |
| 178 | break; |
184 | break; |
| 179 | case LCD_ACTION_CURS: |
185 | case LCD_ACTION_CURS: |
| 180 | // Move cursor |
186 | // Move cursor |
| 181 |
|
187 | lcd_gotoxy( rxMsg.Data.bytes[1],rxMsg.Data.bytes[2] ); |
| 182 | break; |
188 | break; |
| 183 | case LCD_ACTION_GET_SIZE: |
189 | case LCD_ACTION_GET_SIZE: |
| 184 | // Request LCD dimension |
190 | // Request LCD dimension |
| 185 | send_dimensions(); |
191 | send_dimensions(); |
| 186 | break; |
192 | break; |
| 187 | case LCD_ACTION_TEXT: |
193 | case LCD_ACTION_TEXT: |
| 188 | // Print text to LCD |
194 | // Print text to LCD |
| 189 |
|
195 | for(m=1;m<rxMsg.DataLength;m++){ |
| 190 | lcd_putc( (char)rxMsg.Data.bytes[m] ); |
196 | lcd_putc( (char)rxMsg.Data.bytes[m] ); |
| 191 | } |
197 | } |
| 192 | break; |
198 | break; |
| 193 | case LCD_ACTION_SET_CONT: |
199 | case LCD_ACTION_SET_CONT: |
| 194 | // Set contrast |
200 | // Set contrast |
| 195 | if(rxMsg.DataLength == 1){ |
201 | if(rxMsg.DataLength == 1){ |
| 196 |
|
202 | OCR0B = rxMsg.Data.bytes[1]; |
| 197 | } |
203 | } |
| 198 | break; |
204 | break; |
| 199 | case LCD_ACTION_SET_BLIGHT: |
205 | case LCD_ACTION_SET_BLIGHT: |
| 200 | // Set backlight |
206 | // Set backlight |
| 201 |
|
207 | if(rxMsg.DataLength == 2){ |
| 202 |
|
208 | OCR1AL = rxMsg.Data.bytes[1]; |
| 203 | } |
209 | } |
| 204 | break; |
210 | break; |
| 205 | case LCD_ACTION_GET_CONT: |
211 | case LCD_ACTION_GET_CONT: |
| 206 | // Get contrast |
212 | // Get contrast |
| 207 | txMsg.DataLength = 1; |
213 | txMsg.DataLength = 1; |
| 208 |
|
214 | //txMsg.Id = ( CLASS_ACT<<CLASS_MASK_BITS )|( ACT_TYPE_LCD<<ACT_TYPE_BITS )|( LCD_ACTION_SEND_CONT<<LCD_ACTION_BITS )|NODE_ID; FIXME |
| 209 |
|
215 | txMsg.Data.bytes[1] = OCR0B; |
| 210 | BIOS_CanSend(&txMsg); |
216 | BIOS_CanSend(&txMsg); |
| 211 | break; |
217 | break; |
| 212 | case LCD_ACTION_GET_BLIGHT: |
218 | case LCD_ACTION_GET_BLIGHT: |
| 213 | // Get backlight |
219 | // Get backlight |
| 214 | txMsg.DataLength = 1; |
220 | txMsg.DataLength = 1; |
| 215 |
|
221 | //txMsg.Id = ( CLASS_ACT<<CLASS_MASK_BITS )|( ACT_TYPE_LCD<<ACT_TYPE_BITS )|( LCD_ACTION_SEND_BLIGHT<<LCD_ACTION_BITS )|NODE_ID; FIXME |
| 216 |
|
222 | txMsg.Data.bytes[1] = OCR1AL; |
| 217 | BIOS_CanSend(&txMsg); |
223 | BIOS_CanSend(&txMsg); |
| 218 | break; |
224 | break; |
| 219 | default: |
225 | default: |
| 220 | // Take over the world |
226 | // Take over the world |
| 221 | break; |
227 | break; |
| 222 | } |
228 | } |
| 223 | } |
229 | } |
| 224 | } |
230 | } |
| 225 | rxMsgFull = 0; |
231 | rxMsgFull = 0; |
| 226 |
|
232 | } |
| 227 | } |
233 | } |
| 228 | } |
234 | } |
| 229 | 235 | ||
| 230 | void send_dimensions(){ |
236 | void send_dimensions(){ |
| 231 | Can_Message_t txMsg; |
237 | Can_Message_t txMsg; |