Rev 332 | Rev 335 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 332 | Rev 334 | ||
|---|---|---|---|
| Line 32... | Line 32... | ||
| 32 | #define TRUE 1 |
32 | #define TRUE 1 |
| 33 | #define FALSE 0 |
33 | #define FALSE 0 |
| 34 | 34 | ||
| 35 | uint8_t currentView = MAIN_VIEW, msg_received = FALSE, encoderPosition, rot = FALSE; |
35 | uint8_t currentView = MAIN_VIEW, msg_received = FALSE, encoderPosition, rot = FALSE; |
| 36 | Can_Message_t rxMsg; |
36 | Can_Message_t rxMsg; |
| 37 | uint8_t temperatureData[8], |
37 | uint8_t temperatureData[8], servoPosition[4], //relayStatus[4], dimmerStatus[4], |
| 38 | temperatureLength= |
38 | temperatureLength = 8, servoLength = 0; //, relayLength=0; //TODO mer generaliserat |
| 39 | uint32_t rot_timeStamp; |
39 | uint32_t rot_timeStamp; |
| - | 40 | char buf[10]; |
|
| 40 | 41 | ||
| 41 | ISR( PCINT2_vect ){ |
42 | ISR( PCINT2_vect ){ |
| 42 | 43 | ||
| 43 | rot_timeStamp = bios->timebase_get(); |
44 | rot_timeStamp = bios->timebase_get(); |
| 44 | rot = TRUE; |
45 | rot = TRUE; |
| 45 | /* stäng av interrupt på pinnarna */ |
46 | /* stäng av interrupt på pinnarna */ |
| 46 | PCICR &= ~(1<<PCIE2); |
47 | PCICR &= ~(1<<PCIE2); |
| 47 | } |
48 | } |
| 48 | 49 | ||
| 49 | void can_receive(Can_Message_t *msg){ |
50 | void can_receive(Can_Message_t *msg){ |
| 50 | uint8_t temp; |
51 | uint8_t temp, m; |
| 51 | /* Check for incoming messages from IR-receiver node */ |
52 | /* Check for incoming messages from IR-receiver node */ |
| 52 | if( CLASS_SNS == ((msg->Id & CLASS_MASK) >> CLASS_MASK_BITS) ){ |
53 | if( CLASS_SNS == ((msg->Id & CLASS_MASK) >> CLASS_MASK_BITS) ){ |
| 53 | /* FIXME detta är väldigt fult och borde fixas |
54 | /* FIXME detta är väldigt fult och borde fixas |
| 54 | * knapp 4 på fjärren bläddrar åt vänster |
55 | * knapp 4 på fjärren bläddrar åt vänster |
| 55 | * knapp 6 åt höger |
56 | * knapp 6 åt höger |
| Line 68... | Line 69... | ||
| 68 | /* Other sensor messages should be placed here */ |
69 | /* Other sensor messages should be placed here */ |
| 69 | 70 | ||
| 70 | /* DS18S20 sensors */ |
71 | /* DS18S20 sensors */ |
| 71 | if( SNS_TEMP_DS18S20 == (msg->Id & SNS_TYPE_MASK)>>SNS_TYPE_BITS ){ |
72 | if( SNS_TEMP_DS18S20 == (msg->Id & SNS_TYPE_MASK)>>SNS_TYPE_BITS ){ |
| 72 | temp = (msg->Id & SNS_ID_MASK)>>SNS_ID_BITS; |
73 | temp = (msg->Id & SNS_ID_MASK)>>SNS_ID_BITS; |
| 73 | temperatureData[ temp ] = msg->Data.bytes[0]; |
74 | temperatureData[ (temp-1)*2 ] = msg->Data.bytes[0]; |
| 74 | temperatureData[ temp+1 ] = msg->Data.bytes[1]; |
75 | temperatureData[ (temp-1)*2+1 ] = msg->Data.bytes[1]; |
| 75 | // if(temp == 1){ |
- | |
| 76 | // lcd_puts("ute "); |
- | |
| 77 | // } |
- | |
| 78 | } |
76 | } |
| - | 77 | ||
| - | 78 | /* Servo controllers */ |
|
| - | 79 | if( SNS_ACT_STATUS_SERVO == (msg->Id & TYPE_MASK)>>TYPE_MASK_BITS ){ // TODO annan struktur på statusmeddelanden från servo |
|
| - | 80 | temp = msg->DataLength - 3; |
|
| - | 81 | for(m=0;m<temp;m++){ |
|
| - | 82 | servoPosition[ m ] = msg->Data.bytes[m+3]; |
|
| - | 83 | } |
|
| - | 84 | servoLength = temp; |
|
| 79 | } |
85 | } |
| - | 86 | ||
| 80 | } |
87 | } |
| - | 88 | } |
|
| 81 | 89 | ||
| 82 | 90 | ||
| 83 | /*----------------------------------------------------------------------------- |
91 | /*----------------------------------------------------------------------------- |
| 84 | * Main Program |
92 | * Main Program |
| 85 | *---------------------------------------------------------------------------*/ |
93 | *---------------------------------------------------------------------------*/ |
| 86 | int main(void) { |
94 | int main(void) { |
| 87 | 95 | ||
| 88 | char buffer[ BUFFER_SIZE ]; |
96 | char buffer[ BUFFER_SIZE ]; |
| 89 | // uint8_t a=0, b=0; |
- | |
| 90 | /* uint8_t m, temperatureData[8], servoPosition[4], relayStatus[4], dimmerStatus[4], |
- | |
| 91 | temperatureLength, servoLength, relayLength; |
- | |
| 92 | */ |
- | |
| 93 | /* |
97 | /* |
| 94 | * Initialize rotaryencoders and buttons |
98 | * Initialize rotaryencoders and buttons |
| 95 | */ |
99 | */ |
| 96 | /* Set as input and enable pull-up */ |
100 | /* Set as input and enable pull-up */ |
| 97 | DDRD &= ~( (1<<DDD6)|(1<<DDD7) ); |
101 | DDRD &= ~( (1<<DDD6)|(1<<DDD7) ); |
| Line 104... | Line 108... | ||
| 104 | sei(); |
108 | sei(); |
| 105 | bios->can_callback = &can_receive; |
109 | bios->can_callback = &can_receive; |
| 106 | 110 | ||
| 107 | lcd_init( LCD_DISP_ON ); |
111 | lcd_init( LCD_DISP_ON ); |
| 108 | lcd_clrscr(); |
112 | lcd_clrscr(); |
| 109 | // lcd_puts("CAN LCD\n"); |
- | |
| 110 | 113 | ||
| 111 | lcd_clrscr(); |
114 | lcd_clrscr(); |
| 112 | printLCDview( MAIN_VIEW ); |
115 | printLCDview( MAIN_VIEW ); |
| 113 | 116 | ||
| 114 | /* main loop */ |
117 | /* main loop */ |
| Line 117... | Line 120... | ||
| 117 | if(msg_received){ |
120 | if(msg_received){ |
| 118 | /* Print views skeleton and if existing its data */ |
121 | /* Print views skeleton and if existing its data */ |
| 119 | printLCDview( currentView ); |
122 | printLCDview( currentView ); |
| 120 | if(currentView == TEMPSENS_VIEW){ |
123 | if(currentView == TEMPSENS_VIEW){ |
| 121 | printLCDviewData( TEMPSENS_VIEW, temperatureData, temperatureLength); |
124 | printLCDviewData( TEMPSENS_VIEW, temperatureData, temperatureLength); |
| 122 |
|
125 | }else if(currentView == SERVO_VIEW){ |
| 123 |
|
126 | printLCDviewData( SERVO_VIEW, servoPosition, servoLength); |
| 124 | } |
127 | } |
| 125 | msg_received = FALSE; |
128 | msg_received = FALSE; |
| 126 | } |
129 | } |
| 127 | 130 | ||
| 128 | // TODO använd rotary encoders för att växla view |
131 | // TODO använd rotary encoders för att växla view |