Includes itoa implementation and functions for interacting with lcd display and joystick

Files at this revision

API Documentation at this revision

Comitter:
tylerjw
Date:
Thu Feb 16 14:28:40 2012 +0000
Commit message:

Changed in this revision

bsp.cpp Show annotated file Show diff for this revision Revisions of this file
bsp.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 60800820b5a8 bsp.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bsp.cpp	Thu Feb 16 14:28:40 2012 +0000
@@ -0,0 +1,99 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "bsp.h"
+
+TextLCD lcd(p10, p11, p17, p18, p19, p20); // rs, e, d4-d7
+AnalogIn joystick(p16);
+DigitalIn selectPin(p13);
+
+//............................................................................
+int BSP_joyUpdate() {
+    int pos = joystick.read()*100;
+    if (pos < 40)
+        return JOY_DOWN;  // going down
+    else if (pos > 60)
+        return JOY_UP; // going up
+    else
+        return JOY_CENTER;
+}
+//............................................................................
+void BSP_lcdScrollIn(char* line1, char* line2) {
+// scroller algorithm
+    lcd.cls();
+    char output1[17];
+    char output2[17];
+    for ( int i = 0; i < 17; i++) {
+        output1[i] = ' ';
+        output2[i] = ' ';
+    }
+    for (int i = 0; i < 17; i++) {
+        for (int col = 0; col < 17; col++) {
+
+            if (col >= i) {
+                output1[col] = ' ';
+                output2[col] = ' ';
+            } else {
+                output1[col] = (line1[col+(16-i)]);
+                output2[col] = (line2[col+(16-i)]);
+            }
+            lcd.locate(col,0);
+            lcd.putc(output1[col]);
+            lcd.locate(col,1);
+            lcd.putc(output2[col]);
+        }
+        wait(0.4);
+    }
+}
+//............................................................................
+void BSP_lcdUpdate(char* line1,char* line2) {
+TextLCD lcd(p10, p11, p17, p18, p19, p20); // rs, e, d4-d7
+    uint8_t length1 = strlen(line1);
+    uint8_t length2 = strlen(line2);
+    lcd.cls();
+    for (int col = 0; col < 17; col++) {
+        if (col < length1) {
+            lcd.locate(col,0);
+            lcd.putc(*(line1+col));
+        }
+        if (col < length2) {
+            lcd.locate(col,1);
+            lcd.putc(*(line2+col));
+        }
+    }
+}
+//............................................................................
+char* itoa(int val, int base) {
+    static char buf[BUFF_LEN] = {0};
+    int i = BUFF_LEN-2;
+    for (; val && i ; --i, val /= base)
+        buf[i] = "0123456789abcdef"[val % base];
+
+    return &buf[i+1];
+}
+//............................................................................
+char* cat(char* first, char* second, char* output) {
+    size_t len1 = strlen(first);
+    size_t len2 = strlen(second);
+    size_t outlen = strlen(output);
+    bool done = false;
+    int i = 0;
+
+    static char buf[BUFF_LEN] = {0};
+    for(; i < len1 && !done; i++)
+    {
+        if(i == (BUFF_LEN-1)){ done = true; break; }
+        buf[i] = first[i];
+    }
+    for(int b = 0; b < len2 && !done; i++, b++)
+    {
+        if(i == (BUFF_LEN-1)){ done = true; break; }
+        buf[i] = second[b];    
+    }
+    for(;i < outlen && !done; i++)
+    {
+        if(i == (BUFF_LEN-1)){ done = true; break; }
+        buf[i] = ' ';
+    }
+    return &buf[0];
+}
+//............................................................................
\ No newline at end of file
diff -r 000000000000 -r 60800820b5a8 bsp.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bsp.h	Thu Feb 16 14:28:40 2012 +0000
@@ -0,0 +1,20 @@
+#ifndef bsp_h
+#define bsp_h
+
+#define BSP_TICKS_PER_SEC   100     // system clock tick rate
+
+#define JOYSTICK_INPUT_PIN  p16
+#define JOYSTICK_SELECT_PIN p13
+
+#define JOY_UP      1
+#define JOY_DOWN    2
+#define JOY_CENTER  3
+
+void BSP_lcdScrollIn(char*, char*); // display functions
+void BSP_lcdUpdate(char*,char*);
+int BSP_joyUpdate(void); // returns joystick value
+
+char* itoa(int, int); // int to char, number and base
+char* cat(char*, char*, char*); // concatonate, first, second, output(for filling with ' ' if lenght of first+second<output )
+
+#endif
\ No newline at end of file