diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-02-25 19:39:53 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-02-25 19:39:53 +0100 |
commit | e15a7e1267a6f733d734c5d3b59f3acc28bb4b29 (patch) | |
tree | 9d9c513492939c4467c0932a25291a63d787a7ca /arduino/ace_old/ace.ino | |
download | ace-e15a7e1267a6f733d734c5d3b59f3acc28bb4b29.tar.gz ace-e15a7e1267a6f733d734c5d3b59f3acc28bb4b29.tar.bz2 ace-e15a7e1267a6f733d734c5d3b59f3acc28bb4b29.zip |
initial commit
Diffstat (limited to 'arduino/ace_old/ace.ino')
-rw-r--r-- | arduino/ace_old/ace.ino | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/arduino/ace_old/ace.ino b/arduino/ace_old/ace.ino new file mode 100644 index 0000000..33984dc --- /dev/null +++ b/arduino/ace_old/ace.ino @@ -0,0 +1,117 @@ +#include "link.h" +#include "physical.h" +#include "transport.h" + + +// include the library code: +#include <LiquidCrystal.h> + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(8, 9, 4, 5, 6, 11); + +int freeRam () { + extern int __heap_start, *__brkval; + int v; + return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); +} + +#define LED_PIN 13 +uint8_t msg_buffer[] = {97,98,99}; + message msg = {msg_buffer, 3}; + +void setup() { + pinMode(LED_PIN, OUTPUT); + lcd.begin(16, 2); + init_physical_layer(115200); + init_transport_layer(200); + +} + + +void step_circle() { + static volatile uint8_t position = 0; + static const char chars[] = {'|', '/', '-', '\\'}; + position = position + 1; + if (position >= 4) position = 0; + + lcd.setCursor(15, 0); + lcd.print(chars[position]); +} + + +void loop() { + + //lcd.print(freeRam()); + + int x = analogRead (0); + //lcd.setCursor(10,1); + if (x < 100) { + //lcd.print ("Right "); + } + else if (x < 200) { + //lcd.print ("Up "); + } + else if (x < 400){ + //lcd.print ("Down "); + } + else if (x < 600){ +// lcd.print ("Raw "); + to_physical_layer(97); + } + else if (x < 800){ + lcd.setCursor(0,0); + lcd.print ("SENDING..."); + to_transport_layer(&msg); + lcd.print ("DONE"); + } + else { + + } + + delay(100); + + //step_circle(); +} + +/*void from_physical_layer(uint8_t byte) { + if (byte == 'A') digitalWrite(LED_PIN, HIGH); + else digitalWrite(LED_PIN, LOW); +}*/ +/*void from_link_layer(packet* s) { + if (s->data[0] == 'A') digitalWrite(LED_PIN, HIGH); + else digitalWrite(LED_PIN, LOW); + +};*/ + + +static volatile uint32_t errs = 0; +void from_transport_layer(transport_code code, message* s) { + lcd.clear(); + lcd.setCursor(0,0); + if (code == RECEIVED) { + lcd.print("RECEIVED"); + lcd.setCursor(0,1); + for (int i = 0; i < s->length; ++i) lcd.write(s->data[i]); + } + + if (code == SEND_SUCCESS) { + lcd.print("SENT"); + for (int i = 0; i < s->length; ++i) lcd.write(s->data[i]); + } + + if (code >= SEND_ERROR) { + lcd.print("ERROR"); + lcd.setCursor(0,1); + switch(code) { + case NO_ACK: + lcd.print("NO ACK"); + break; + case BAD_ACK: + lcd.print("BAD ACK"); + break; + case BUSY: + lcd.print("BUSY"); + break; + } + } +} //implemented in transport |