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
--- /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
--- /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