From 0c226b822921c57d3e508bb47cf2f6b8c4886f2e Mon Sep 17 00:00:00 2001 From: Tom Igoe Date: Sun, 26 May 2013 08:28:56 -0400 Subject: [PATCH] Added possible boot watcher --- .../BootWatcher001/BootWatcher001.ino | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 hardware/arduino/avr/libraries/Bridge/examples/BootWatcher001/BootWatcher001.ino diff --git a/hardware/arduino/avr/libraries/Bridge/examples/BootWatcher001/BootWatcher001.ino b/hardware/arduino/avr/libraries/Bridge/examples/BootWatcher001/BootWatcher001.ino new file mode 100644 index 000000000..7833d5498 --- /dev/null +++ b/hardware/arduino/avr/libraries/Bridge/examples/BootWatcher001/BootWatcher001.ino @@ -0,0 +1,90 @@ + +/* + Arduino Yun Boot watcher + + Allows you to use the Yun's 32U4 processor as a + serial terminal for the linino processor + + Upload this to an Arduino Yun via serial (not WiFi) + then open the serial monitor at 115200 to see the boot process + of the linino processor. You can also use the serial monitor + as a basic command line interface for the linino processor using + this sketch. + + The circuit: + * Arduino Yun + + created March 2013 + by Massimo Banzi + modified 26 May 2013 + by Tom Igoe + + This example code is in the public domain. + */ + +long baud = 115200; + +// Pin 13 has an LED connected on most Arduino boards. +// give it a name: +int led = 13; +int ledState = HIGH; // whether the LED is high or low + +String bootString = ""; +int bootLineCount = 0; +boolean booting = true; + +void setup() { + Serial.begin(baud); // open serial connection to Linino + Serial1.begin(baud); // open serial connection via USB-Serial + + // initialize the digital pin as an output. + pinMode(led, OUTPUT); + digitalWrite(led, ledState); // turn the LED on (HIGH is the voltage level) + while(booting) { + listenForBoot(); + } + delay(500); +} + + +void loop() { + // After booting, become a serial terminal: + if (Serial.available()) { // got anything from USB-Serial? + char c = (char)Serial.read(); // read from USB-serial + Serial1.write(c); // write to Linino + ledState=!ledState; // invert LED state + digitalWrite(led, ledState); // toggle the LED + } + if (Serial1.available()) { // got anything from Linino? + char c = (char)Serial1.read(); // read from Linino + Serial.write(c); // write to USB-serial + } + +} + +void listenForBoot() { + char c; + if (Serial1.available()) { // got anything from Linino? + c = (char)Serial1.read(); // read from Linino + + if (c == '\n') { // clear the bootString every newline + bootLineCount++; // increment the boot line counter + Serial.println(bootLineCount); // print the count + bootString = ""; // clear the boot string + } + else { // anything other than newline, add to string + bootString += c; + } + } + + // look for the final boot string message: + if (bootString.endsWith("entered forwarding state")) { + Serial1.println(); + } + + // look for the command prompt: + if (bootString.endsWith(":/#")) { + Serial.println("Ready for action."); + booting = false; + } +}