Component Test's Software to work with "Universal Controller Box" - Software is an interpreter or "compiler" for programs to be done with a .txt file and read off of the SD Card

Dependencies:   BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed

Devices/PinIN.cpp

Committer:
mehatfie
Date:
2014-09-23
Revision:
5:e36e0538a903
Parent:
4:86d0d04cc055
Child:
9:5a0c4c6e39c7

File content as of revision 5:e36e0538a903:

#include "PinIN.hpp"
//#include "mbed.h"
//#include "LocalPinNames.h"
//#include "BridgeDriver.h"

//Constructor
PinIN::PinIN(LineData lineData){
    
    string _pinName = lineData.word[3]; // Local Pin
    string _pinMode = lineData.word[4]; // Pin Mode to Select
    
    if(_pinName.compare("DIO0") == 0)
        this->pinName = DIO0;
    else if(_pinName.compare("DIO1") == 0)
        this->pinName = DIO1;
    else if(_pinName.compare("DIO2") == 0)
        this->pinName = DIO2;
    else if(_pinName.compare("DIO3") == 0)
        this->pinName = DIO3;
    else if(_pinName.compare("DIO4") == 0)
        this->pinName = DIO4;
    else if(_pinName.compare("DIO5") == 0)
        this->pinName = DIO5;
    else if(_pinName.compare("DIO6") == 0)
        this->pinName = DIO6;
    else if(_pinName.compare("DIO7") == 0)
        this->pinName = DIO7;
    else if(_pinName.compare("DIO8") == 0)
        this->pinName = DIO8;
    else if(_pinName.compare("DIO9") == 0)
        this->pinName = DIO9;
    else if(_pinName.compare("DIO10") == 0)
        this->pinName = DIO10;
    else if(_pinName.compare("DIO11") == 0)
        this->pinName = DIO11;
        
    else if(_pinName.compare("AI0") == 0)
        this->pinName = AI0;
    else if(_pinName.compare("AI1") == 0)
        this->pinName = AI1;
    else if(_pinName.compare("AI2") == 0)
        this->pinName = AI2;
    else if(_pinName.compare("AI3") == 0)
        this->pinName = AI3;
    else if(_pinName.compare("AI4") == 0)
        this->pinName = AI4;
    else if(_pinName.compare("AI5") == 0)
        this->pinName = AI5;
        
        
    if(_pinMode.compare("PU") == 0)
        this->pinMode = PullUp;
    else if(_pinMode.compare("PD") == 0)
        this->pinMode = PullDown;
    else if(_pinMode.compare("PN") == 0)
        this->pinMode = PullNone;
    else if(_pinMode.compare("OD") == 0)
        this->pinMode = OpenDrain;
    
}
/*
 #define DIO0        P2_2
#define DIO1        P2_3
#define DIO2        P2_4
#define DIO3        P2_5
#define DIO4        P2_6
#define DIO5        P2_7
#define DIO6        P2_8
#define DIO7        P2_9
#define DIO8        P1_1
#define DIO9        P1_4
#define DIO10       P1_8
#define DIO11       P1_9
#define SS1         P0_19
#define SS2         P0_20
#define SS3         P0_21
#define SS4         P0_22
#define SS_ADC      P1_0
#define AI0         P0_23
#define AI1         P0_24
#define AI2         P0_25
#define AI3         P0_26
#define AI4         P1_30
#define AI5         P1_31
#define KILL        P2_11
#define CAN1_RX     P0_0
#define CAN1_TX     P0_1
#define CAN2_RX     P0_4
#define CAN2_TX     P0_5   
    */


//A line consists of [ __(Local_Name)__ __(function)__ __(parameter1)__ __(parameter2)__ __(parameter3)__ ... and so on]
int PinIN::interpret(LineData &lineData){
    /*
    lcd.setAddress(0,2);
    lcd.printf("CHECK Motor 123456");
    lcd.setAddress(0,3);
    lcd.printf("func: %s  ", lineData.word[1]);
    wait(2);*/

    DigitalIn signal(pinName, pinMode);
    
    //Order of Line: Local_Name, Function_Name, Param1, Param2, Param3,.......
    string func = lineData.word[1];
        
    /******************************************************************************/
    /***                        <Func: wait>                               ***/
    /******************************************************************************/
    if (func.compare("wait") == 0){
        
        if (lineData.numWords != 3){
             //Error Check, incorrect number of parameter, error out
            return 0;
        }
        
        //Initialize and Convert Parameters
        string pinValue = lineData.word[2];
        int pinValue_Value = 0;
        sscanf(pinValue.c_str(), "%d", &pinValue_Value);
        
        while(signal.read() != pinValue_Value);
    }
  
  
    /******************************************************************************/
    /***                            <Func: val>                                 ***/
    /******************************************************************************/
    // returns 1 if the check value is equal to the current check value of the Pin
    if (func.compare("val") == 0){
        
        if (lineData.numWords != 3){
             //Error Check, incorrect number of parameter, error out
            return 0;
        }
        
        //Initialize and Convert Parameters
        string checkValue = lineData.word[2];
        int checkValue_Value = 0;
        sscanf(checkValue.c_str(), "%d", &checkValue_Value);
        
        if(signal.read() == checkValue_Value)
            return 1;
        else
            return 0;
    }
    
    else {
        return 0;
        
    }  
    
    return 0;
}