Exemplo n.º 1
0
void printMacAddress(void){
    if(macFG==TRUE && UCA1BRW == 52){ //when mac address needed, will take from buffer, and print to screen.
       while(IOTBufferReceive[37]=='\0'); //wait until all received
       for(i=21;i<=28;i++){ //capture first half of MAC address
           firstMacBuff[i-21]=IOTBufferReceive[i];
       }
       for(i=30;i<=37;i++){ //capture second half of MAC address
           secondMacBuff[i-30]=IOTBufferReceive[i];
       }
       lcd_4line();
       display_1="Mac Addr:";
       macPtr=firstMacBuff;
       display_2=macPtr;
       macPtr=secondMacBuff;
       display_3=macPtr;
       display_4="          ";
       Display_Process();
       macFG=FALSE;
       
       for(i=0;i<40;i++){ //clear IOT buffer so that junk isnt written to terminal after junk-->command
           IOTBufferReceive[i]='\0';
       }
       
       IOTIndexReceive=0;
   }
}
Exemplo n.º 2
0
void parseIOTData(void){
    for(i=0;i<=100-3;i++){ //search through received strings
        if(receiving[i]=='D'){
            if(receiving[i+1]==':'){
                if(receiving[i+2]=='2'){
                    Five_msec_Delay(1);
                    if(receiving[i+3]=='1'){
                        display_4="Scanning";
                        Display_Process();
                    }
                    else if(receiving[i+3]=='4'){
                        countP=0; //initialize period counter
                        Five_msec_Delay(3); //short delay to allow all characters to enter
                        j=0;
                        for(i=17;receiving[i] != '\r';i++){ //go from beginning of address until 2nd period hit (2nd group)
                            if(receiving[i] == '.'){
                                countP++;
                            }
                            if(countP >=2){ //stop copying to buffer if 2nd period has been hit (2nd "group" is copied)
                                break;
                            }
                            firstipBuff[j]=receiving[i];
                            j++;
                        }
                        posL3=(10-j)/2; //center first half of ip address
                        i++; //skip the period
                        for(j=0;receiving[i] != '\r';i++){
                            secondipBuff[j]=receiving[i];
                            j++;
                        }
                        posL4=(10-j)/2; //center second half of ip address
                        display_1=SSIDPtr; //from D:25 
                        display_2="  ipaddr  ";
                        ipPtr=firstipBuff;
                        display_3=ipPtr;
                        ipPtr=secondipBuff;
                        display_4=ipPtr;
                        lcd_4line();
                        Display_Process();
                        Five_msec_Delay(600); //display IP for 3 seconds before screen gets cleared by menus
                        posL1=0; //reset line positions back to beginning
                        posL3=0;
                        posL4=0;
                        
                    }
                    else if(receiving[i+3]=='5'){
                        Five_msec_Delay(5);//short delay to allow all characters to enter
                        for(i=32;receiving[i] != '\'' && i<=42 ;i++){ //copy SSID until end of quoted name or until max size for LCD is hit
                            SSIDBuff[i-32]=receiving[i];
                        }
                        SSIDPtr=SSIDBuff;
                        posL1=(10-(i-32))/2; //center SSID
                        //SSID is displayed in D:24
                    }
                    
                }
                else if(receiving[i+2]=='3'){ //clear display once scanning is complete
                    if(receiving[i+3]=='5'){
                        display_4="          "; 
                        Display_Process();
                    }
                }
                else if(receiving[i+2]=='4'){ //detect disassociation --> reassociate by resetting module
                    if(receiving[i+3]=='1'){
                        uart_puts("AT+CFUN=1\r"); //Get SSID to ncsu
                        PJOUT &= ~IOT_RESET; //reset IOT
                        Five_msec_Delay(10); //wait 50 ms
                        PJOUT |= IOT_RESET; //turn IOT back on (stop reset)
                    }
                }
            }
        }
    }
}
Exemplo n.º 3
0
Arquivo: menu.c Projeto: lzheng5/xcar
void Menu_Process()
{
  // Handle Menu Display depending on user input
  switch (menuState)
    {
    case HOMEMENU:
      lcd_4line();
      
      display_1 = home[HOMEITEMBEGIN];
      display_2 = home[HOMEITEMFIRST];
      display_3 = home[HOMEITEMSECOND];
      display_4 = home[HOMEITEMTHIRD];
      
      // get next menuIDX
      if (NEWHOMEIDX != menuIDX)
	{
	  unselALL();
	  menuIDX = NEWHOMEIDX;
	  sel();
	}
      break;

      // IP Address
    case IPADDR:
      lcd_4line();
      
      showIPAddress();
      
      display_1 = "IP:";
      display_2 = (char*)ip_address;
      display_3 = NEXTLINE((char*)ip_address);
      display_4 = "";
      break;

      // HOME Config
    case HOMECONFIG:
      if (!HAVE_SET_UP_HOME)
	{
	  startConfig();
	  configHome();
	  DONE(ONCE_HOME);
	  endConfig();
	}
      else
	deviceConfigured();
      break;

      // NCSU Config
    case NCSUCONFIG:
      if (!HAVE_SET_UP_NCSU)
	{
	  startConfig();
	  configNCSU();
	  DONE(ONCE_NCSU);
	  endConfig();
	}
      else
	deviceConfigured();
      break;
      
  default:
    return;
    }
}
Exemplo n.º 4
0
void receive_command(char* command)
{
  BufferString temp_command;
  temp_command.head = command;
  temp_command.offset = START_ZERO;
  
  if(compare(command, COMMAND_AKNOWLEDGE))
  {
    uca0_transmit_message(AKNOWLEDGE_MESSAGE, NO_OFFSET);
  }
  else if(compare(command, SLOW_BAUD))
  {
    uca1_set_current_baud(BAUD_115200);
    
    uca0_transmit_message(SLOW_BAUD_MESSAGE, NO_OFFSET);  
    uca1_transmit_message(SLOW_BAUD_COMMAND, NO_OFFSET);  
    
    five_msec_delay(SECOND + SECOND);
    
    uca1_transmit_message(SAVE_COMMAND, NO_OFFSET); 
    
    
    five_msec_delay(SECOND);
    uca1_set_current_baud(BAUD_9600);
    
    uca1_transmit_message(RESET_COMMAND, NO_OFFSET);
    PJOUT &= ~IOT_RESET;
    
    five_msec_delay(QUARTER_SECOND);
    
    PJOUT |= IOT_RESET;  
    
    uca0_transmit_message(RESET_MESSAGE, NO_OFFSET);
    
    five_msec_delay(QUARTER_SECOND);
    
    uca1_transmit_message(G_MAC_COMMAND, NO_OFFSET);
  }
  else if(compare(command, FAST_BAUD))
  {
     uca1_set_current_baud(BAUD_9600);
    
    uca0_transmit_message(FAST_BAUD_MESSAGE, NO_OFFSET);  
    uca1_transmit_message(FAST_BAUD_COMMAND, NO_OFFSET);  
    
    five_msec_delay(SECOND + SECOND);
    
    uca1_transmit_message(SAVE_COMMAND, NO_OFFSET); 
    
    
    five_msec_delay(SECOND);
    uca1_set_current_baud(BAUD_115200);
    
    uca1_transmit_message(RESET_COMMAND, NO_OFFSET);
    PJOUT &= ~IOT_RESET;
    
    five_msec_delay(QUARTER_SECOND);
    
    PJOUT |= IOT_RESET;  
    
    uca0_transmit_message(RESET_MESSAGE, NO_OFFSET);
  }
  else if(compare(command, CONNECT_NCSU))
  {
    uca0_transmit_message(CONNECT_NCSU_MESSAGE, NO_OFFSET);    
    uca1_transmit_message(SET_SSID_NCSU_COMMAND, NO_OFFSET);
    uca1_transmit_message(GET_SSID_NCSU_COMMAND, NO_OFFSET);
    
    five_msec_delay(QUARTER_SECOND);
    
    uca1_transmit_message(SET_HOST_NAME_COMMAND, NO_OFFSET);
    uca1_transmit_message(GET_HOST_NAME_COMMAND, NO_OFFSET);
    
    five_msec_delay(QUARTER_SECOND);
    
    uca1_transmit_message(SET_PRIVACY_MODE_COMMAND, NO_OFFSET);
    uca1_transmit_message(GET_PRIVACY_MODE_COMMAND, NO_OFFSET);
    
    five_msec_delay(QUARTER_SECOND);
    
    uca1_transmit_message(SET_NETWORK_MODE_COMMAND, NO_OFFSET);
    uca1_transmit_message(GET_NETWORK_MODE_COMMAND, NO_OFFSET);
    
    uca1_transmit_message(SAVE_COMMAND, NO_OFFSET);
    uca1_transmit_message(GET_NETWORK_MODE_COMMAND, NO_OFFSET);
    
    uca1_transmit_message(SAVE_COMMAND, NO_OFFSET);
    
    five_msec_delay(QUARTER_SECOND);
    
    uca1_transmit_message(RESET_COMMAND, NO_OFFSET);
    PJOUT &= ~IOT_RESET;
    
    five_msec_delay(QUARTER_SECOND);    
    PJOUT |= IOT_RESET;  
    
    uca0_transmit_message(RESET_MESSAGE, NO_OFFSET);   
  }
  else if(compare(command, GET_WIFI_STATUS))
  {
    uca1_transmit_message(GET_WIFI_STATUS_COMMAND, NO_OFFSET);
  }
  else if(compare(command, GET_WIFI_IP))
  {
    uca1_transmit_message(GET_WIFI_IP_COMMAND, NO_OFFSET);
  }
  // Forward Command
  else if(find(CAR_FORWARD, temp_command))
  {
    display_1 = CLEAR_LINE;
    display_2 = command;
    display_3 = CLEAR_LINE;
    display_4 = CLEAR_LINE;
    
    set_motor_speed(R_FORWARD, (int) (MAX_SPEED * 0.87f));
    set_motor_speed(L_FORWARD, MAX_SPEED);
    
    lcd_BIG_mid();
    five_msec_delay(QUARTER_SECOND);
    Display_Process();
    
    uca0_transmit_message("SUCCESS", NO_OFFSET);    
     
    turn_on_motor(R_FORWARD);
    turn_on_motor(L_FORWARD);
    
    if(CH_TO_DIG(command[COMMAND_TIME_POS]) <= 9)
      five_msec_delay(SECOND * CH_TO_DIG(command[COMMAND_TIME_POS]) / COMMAND_TURN_RATIO);
    
    turn_off_motor(R_FORWARD);
    turn_off_motor(L_FORWARD);
    
     lcd_4line();
     
     if(command[COMMAND_LENGTH] == COMMAND_CHAR_SYMBOL)
       receive_command(command + COMMAND_LENGTH);
  }
  // Backward Command
   else if(find(CAR_BACKWARD, temp_command))
  {
    display_1 = CLEAR_LINE;
    display_2 = command;
    display_3 = CLEAR_LINE;
    display_4 = CLEAR_LINE;
    
    lcd_BIG_mid();
    five_msec_delay(QUARTER_SECOND);
    Display_Process();
    
     uca0_transmit_message("SUCCESS", NO_OFFSET);    
     
    turn_on_motor(R_REVERSE);
    turn_on_motor(L_REVERSE);
    
    five_msec_delay(SECOND * CH_TO_DIG(command[COMMAND_TIME_POS]));
    
    turn_off_motor(R_REVERSE);
    turn_off_motor(L_REVERSE);
    
     lcd_4line();
     
     if(command[COMMAND_LENGTH] == COMMAND_CHAR_SYMBOL)
       receive_command(command + COMMAND_LENGTH);
  }
  // Right Command
   else if(find(CAR_RIGHT, temp_command))
  {
    display_1 = CLEAR_LINE;
    display_2 = command;
    display_3 = CLEAR_LINE;
    display_4 = CLEAR_LINE;
    
    lcd_BIG_mid();
    five_msec_delay(QUARTER_SECOND);
    Display_Process();
    
     uca0_transmit_message("SUCCESS", NO_OFFSET);    
     
    turn_on_motor(R_REVERSE);
    turn_on_motor(L_FORWARD);
    
    if(CH_TO_DIG(command[COMMAND_TIME_POS]) <= 9)
      five_msec_delay(SECOND * CH_TO_DIG(command[COMMAND_TIME_POS]) / COMMAND_TURN_RATIO);
    
    turn_off_motor(R_REVERSE);
    turn_off_motor(L_FORWARD);
    
     lcd_4line();
     
     if(command[COMMAND_LENGTH] == COMMAND_CHAR_SYMBOL)
       receive_command(command + COMMAND_LENGTH);
  }
  // Left Command
   else if(find(CAR_LEFT, temp_command))
  {
    display_1 = CLEAR_LINE;
    display_2 = command;
    display_3 = CLEAR_LINE;
    display_4 = CLEAR_LINE;
    
    lcd_BIG_mid();
    five_msec_delay(QUARTER_SECOND);
    Display_Process();
    
    uca0_transmit_message("SUCCESS", NO_OFFSET);    
     
    turn_on_motor(R_FORWARD);
    turn_on_motor(L_REVERSE);
    
     if(CH_TO_DIG(command[COMMAND_TIME_POS]) <= 9)
      five_msec_delay(SECOND * CH_TO_DIG(command[COMMAND_TIME_POS]) / COMMAND_TURN_RATIO);
    
    turn_off_motor(R_FORWARD);
    turn_off_motor(L_REVERSE);
    
     lcd_4line();
     
     if(command[COMMAND_LENGTH] == COMMAND_CHAR_SYMBOL)
       receive_command(command + COMMAND_LENGTH);
  }
  else if(find(CAR_LINE_FOLLOW, temp_command))
  {
    is_follow_running = is_follow_running ? FALSE : TRUE;
  }
}