Ejemplo n.º 1
0
int srv_get_waypoints(LonLat32* waypoints, int path_len) {

    /** request waypoints **/
    Serial.println("request waypoints");

    /**wait for waypoints **/
    
    //initialize timer
    unsigned long timer = millis();
    int i = 0;
    while(1) {
        if (millis() - timer > 1000) {
            //timeout
            Serial.println("request timeout");
            return -1;
        }
        
        if (Serial.available()) {
            // check for acknowledgement
            String check_srv = Serial.readStringUntil('\n');
            if (check_srv == "server ready") {
				
				String get_waypoint = Serial.readStringUntil('\n');
				Serial.print("waypoint: ");
				Serial.println(get_waypoint);
				
				char first_letter = get_waypoint.charAt(0);
				
				if (first_letter == 'E') {
					break;
					}
				
				if (first_letter == 'W') {
                /* save waypoint
					 * format/position:
					 * W XXXXXXX -XXXXXXXX<\n>
					 *   2     8 10      18
					 * 
					 * lat: from 2-8, lon: from 10-18
				*/
                String lat_ = get_waypoint.substring(2,9);
                String lon_ = get_waypoint.substring(10,19);
                
                waypoints[i] = LonLat32(lon_.toInt(), lat_.toInt());

                Serial.println("A");
                Serial.println();
				}
			i++;
			}
			// restart timer for new request
			timer = millis();
		}
    }
    return 0;
}
Ejemplo n.º 2
0
int srv_get_waypoints(LonLat32* waypoints, int path_len) 
{
	// make sure println prints the last thing
	Serial.println(""); 
	
	Serial.println("A"); 
	
	// store waypoint from server and acknowledge it
	int i = 0;
	unsigned long startTime = millis(); 
	while (true) 
	{
		if (millis() - startTime > 1000) 
		{
			Serial.println("TIMEOUT");
			return false;
		}
		if (Serial.available()) {
			String inLine = Serial.readStringUntil('\n');
			// session has ended 
			if (inLine.substring(0,1) == "E") {
				break;
			}
			// waypoint string
			if (inLine.substring(0,1) == "W") {
				// store the waypoint
				waypoints[i] = LonLat32(inLine.substring(10,19).toInt(),inLine.substring(2,9).toInt());
				// send acknowledgement
				Serial.println("A\n"); 
			}
	
			i += 1;
			startTime = millis(); 
		}
	}
	Serial.println(millis() - startTime); 

	return 0;
}