Subversion Repositories HomeAutomation

Rev

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
    uint32_t act;
116
//  uint32_t act; not used anymoer
117
    uint8_t m, act_type, lcd_action, lcd_size;
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 = 0x80;
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
/* FIXME noddan kommenterar bort allt
168
            uint16_t act_type;
-
 
169
            uint8_t lcdid;
167
            if( ((rxMsg.Id & CLASS_MASK)>> CLASS_MASK_BITS) == CLASS_ACT ){ // FIXME ett jäkla herk, städa upp
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
                if( act_type == ACT_TYPE_LCD && (lcd_size == SIZE_LCD || lcd_size == LCD_SIZE_ALL)){
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
                        lcd_gotoxy( rxMsg.Data.bytes[0],rxMsg.Data.bytes[1] );
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
                        for(m=0;m<rxMsg.DataLength;m++){
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
                            OCR0B = rxMsg.Data.bytes[0];
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
                        if(rxMsg.DataLength == 1){
207
                        if(rxMsg.DataLength == 2){
202
                            OCR1AL = rxMsg.Data.bytes[0];
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
                        txMsg.Id = ( CLASS_ACT<<CLASS_MASK_BITS )|( ACT_TYPE_LCD<<ACT_TYPE_BITS )|( LCD_ACTION_SEND_CONT<<LCD_ACTION_BITS )|NODE_ID;
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
                        txMsg.Data.bytes[0] = OCR0B;
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
                        txMsg.Id = ( CLASS_ACT<<CLASS_MASK_BITS )|( ACT_TYPE_LCD<<ACT_TYPE_BITS )|( LCD_ACTION_SEND_BLIGHT<<LCD_ACTION_BITS )|NODE_ID;
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
                        txMsg.Data.bytes[0] = OCR1AL;
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;