/[H9]/trunk/Embedded/main.c
ViewVC logotype

Diff of /trunk/Embedded/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 148 by hedin, Tue Dec 4 17:23:27 2007 UTC revision 151 by hedin, Wed Dec 5 07:30:04 2007 UTC
# Line 9  Line 9 
9    
10  #define LCD_LENGTH 16  #define LCD_LENGTH 16
11  #define LCD_ROWS 2  #define LCD_ROWS 2
12  #define SEND_BUFFER 128  #define BUFFER 128
13  #define PWRFAIL RB1  #define PWRFAIL RB1
14  #define FIREDET RB2  #define FIREDET RB2
15  #define FEEDING RB3  #define FEEDING RB3
# Line 18  Line 18 
18    
19  unsigned char global_Pot_Hi, global_Pot_Lo;  unsigned char global_Pot_Hi, global_Pot_Lo;
20  unsigned char global_LCD_Buffer[LCD_ROWS][LCD_LENGTH];  unsigned char global_LCD_Buffer[LCD_ROWS][LCD_LENGTH];
21  unsigned char global_serial_send[SEND_BUFFER], global_serial_recieve_buffer[SEND_BUFFER];  unsigned char global_serial_send[BUFFER], global_serial_recieve_buffer[BUFFER];
22  bit global_recieve_done = 0, global_interval_changed = 0;  bit global_recieve_done = 0, global_interval_changed = 0;
23  unsigned int global_serial_byte_counter = 0, global_sms_counter = 1, global_time_counter = 0;  unsigned int global_serial_byte_counter = 0, global_sms_counter = 1, global_time_counter = 0;
24  unsigned int global_emergency_counter = 600, global_time_interval = 3600;  unsigned int global_emergency_counter = 600, global_time_interval = 3600;
25  unsigned char global_temp = 0;  unsigned char global_temp = 0;
26    
27  unsigned char cell_nr[15] = ""; // = "21681784";  unsigned char global_lcd_buf[16];
28    
29    unsigned short global_imei_tversum;
30    
31    unsigned char cell_nr[15] = ""; // = "21681784";
32    bit global_modem_init = 0;
33    
34  __EEPROM_DATA( 60, 0, 1, 8, '2', '1', '6', '8');  __EEPROM_DATA( 60, 0, 1, 8, '2', '1', '6', '8');
35  __EEPROM_DATA( '1', '7', '8', '4',0,0,0,0);  __EEPROM_DATA( '1', '7', '8', '4',0,0,0,0);
# Line 35  void serial_send(void); Line 39  void serial_send(void);
39  void update_lcd(void);  void update_lcd(void);
40  void convertTemp(void);  void convertTemp(void);
41  void timer1_interrupt(void);  void timer1_interrupt(void);
42    void on_recieve(void);
43    void on_initial_recieve(void);
44    
45    
46    void reset_recieve_buffer(void)
47    {
48            global_recieve_done = 0;
49            global_serial_byte_counter=0;
50    }      
51    
52    
53  // Nicked from H7  void ad_init(void) // Nicked from H7
 void ad_init(void)  
54  {  {
55          // AD Conversion clock          // AD Conversion clock
56          ADCS0 = 0;          ADCS0 = 0;
# Line 115  void sms_init(void) Line 128  void sms_init(void)
128  {  {
129          int i;          int i;
130    
131            reset_recieve_buffer();
132          sprintf(global_serial_send,"at+cgsn\r");          sprintf(global_serial_send,"at+cgsn\r");
133          serial_send();          serial_send();
134          DelaySek(1);          DelaySek(1);
# Line 123  void sms_init(void) Line 137  void sms_init(void)
137    
138          sprintf(global_serial_send,"%s", "at+cpin=8043\r");          sprintf(global_serial_send,"%s", "at+cpin=8043\r");
139          serial_send();          serial_send();
         DelaySek(30);  
140                    
141          update_lcd();          while(global_modem_init == 0)
142          DelaySek(5);          {
143                    on_initial_recieve();
144            }
145  }  }
146    
147    
# Line 151  void serial_send(void) Line 166  void serial_send(void)
166  {  {
167          int i;          int i;
168          char data_byte;          char data_byte;
169          for(i = 0; i < SEND_BUFFER; i++)          for(i = 0; i < BUFFER; i++)
170          {          {
171                  data_byte = global_serial_send[i];                  data_byte = global_serial_send[i];
172                  if( data_byte == '\r')                  if( data_byte == '\r')
173                          i = (SEND_BUFFER - 1);                          i = (BUFFER - 1);
174                  TXREG = data_byte;                  TXREG = data_byte;
175                  while(TRMT==0) ;                  while(TRMT==0) ;
176                  DelayMs(10);                  DelayMs(10);
# Line 170  void serial_recieved(void) Line 185  void serial_recieved(void)
185                    
186          data_byte = RCREG;          data_byte = RCREG;
187                    
188            if (data_byte == '\n')
189                    return;
190                    
191            if (global_serial_byte_counter == 0 && data_byte == '\r')
192                    return;
193    
194          global_serial_recieve_buffer[global_serial_byte_counter] = data_byte;          global_serial_recieve_buffer[global_serial_byte_counter] = data_byte;
195          if(data_byte == '\r')                  
196            if (data_byte == '\r')
197          {          {
198                  global_recieve_done = 1;                  global_recieve_done = 1;
199                  global_serial_byte_counter = 0;                  //global_serial_byte_counter = 0;
200                    global_serial_recieve_buffer[global_serial_byte_counter+1] = 0; //zero terminate
201          }                }      
202          else          else
203          {          {
# Line 196  void update_lcd(void) Line 219  void update_lcd(void)
219  {  {
220          lcd_clear();          lcd_clear();
221          lcd_goto(0x00);          lcd_goto(0x00);
222          lcd_puts(global_temp);          
223            sprintf(global_lcd_buf, "%d", global_temp);
224            lcd_puts(global_lcd_buf);
225    
226  }  }
227                    
# Line 257  void eeprom_reader(void) Line 282  void eeprom_reader(void)
282          cell_nr[i] = 0; //zero terminated!          cell_nr[i] = 0; //zero terminated!
283  }        }      
284    
285    void on_initial_recieve(void)
286    {
287            char imei[16];
288            char* ptr;
289            char i;
290            
291            if (strstr(global_serial_recieve_buffer,"+WIND: 11") != 0)
292            {
293                    global_modem_init = 1;
294    
295                    ptr = strstr(global_serial_recieve_buffer,"cgsn");
296                    ptr +=4;
297                    strncpy(imei, ptr,15);
298                    imei[15] = 0;
299    
300                    global_imei_tversum = 0;
301                    for (i=0; i<15; ++i)
302                    {
303                            global_imei_tversum += (imei[i] - '0');
304                    }
305                    
306                    
307                    reset_recieve_buffer();
308            }
309    }
310    
311    
312  void on_recieve(void)  void on_recieve(void)
313  {  {
314            char tmp[17];
315            char* ptr;
316            tmp[0]=0;
317                    
318            if (global_recieve_done == 0)
319                    return;
320    
321            lcd_goto(0x00);
322            lcd_puts(global_serial_recieve_buffer);        
323            
324            if (strstr(global_serial_recieve_buffer,"CMTI") == 0)
325            {
326                    ptr = strstr(global_serial_recieve_buffer,"'");
327                    strcat(tmp,ptr);
328    
329    
330            lcd_goto(0x40);
331            lcd_puts(tmp);
332                    
333            }
334                    
335            reset_recieve_buffer();
336  }  }
337    
338  void main()  void main()
# Line 279  void main() Line 352  void main()
352          eeprom_reader();          eeprom_reader();
353  ///////////////  ///////////////
354  // Main loop //  // Main loop //
355  send_update();  
356            DelayMs(50);
357            reset_recieve_buffer();
358    
359          while(1)          while(1)
360          {          {
361          // If there happends to be a critical state on the system, we send a sms.          // If there happends to be a critical state on the system, we send a sms.
# Line 310  send_update(); Line 386  send_update();
386                          global_Pot_Hi = ADRESH;                          global_Pot_Hi = ADRESH;
387                          global_Pot_Lo = ADRESL;                          global_Pot_Lo = ADRESL;
388                          convertTemp();                          convertTemp();
389                          update_lcd();                          //update_lcd();
390                          GODONE = 1;                          GODONE = 1;
391                  }                  }
392            // Handels the recieve sms'es.
393                    on_recieve();
394          }          }
395  }  }

Legend:
Removed from v.148  
changed lines
  Added in v.151

  ViewVC Help
Powered by ViewVC 1.1.20