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

bsp.cpp

Committer:
tylerjw
Date:
2012-02-16
Revision:
0:60800820b5a8

File content as of revision 0:60800820b5a8:

#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];
}
//............................................................................