Lab 7

Dependencies:   MPL3115A2 mbed

Fork of AltTest2 by CPS_Lab*

main.cpp

Committer:
ajwhelan
Date:
2018-03-02
Revision:
2:126622942102
Parent:
1:03565a1413e6
Child:
3:93ba3e6cdaf3

File content as of revision 2:126622942102:

#include "mbed.h"
#include "MPL3115A2.h"
#include <string.h>
#include <stdlib.h>

Serial pc(SERIAL_TX, SERIAL_RX);
DigitalOut myled(LED1);
MPL3115A2 pressure_sensor(PB_7,PB_6,0x60);

/*
char *int_array_to_string(uint8_t int_array[], int size_of_array) {
  char returnstring[size_of_array];
  for (int temp = 0; temp < size_of_array; temp++)
    returnstring[temp] = itoa(int_array[temp]);
  return returnstring;
}
*/
int MPL3115A2_reg_print(int start, int length) {
    int num_regs = length;  //redundant, but it helps me think
    uint8_t valArray[num_regs];  //the array of register values we'll be returning
    
    pressure_sensor.readRegs(start, valArray, num_regs - 1);    //populates valArray with register values, one per element, starting at i

    if(length == 0)
        length = 45;
    int i = start, end = start + length;     
    if(start > 0x2D || start < 0x00)
        return(-1);
    if(length < 0)
        return(-1);
    if (pressure_sensor.getID()!=0xC4)
        return(-1);
    if (end > 46)
        return(-1);
        
    for( i = start; i <= end; i++) {
        char name[25];
        switch (i) {
                case 0x00:
                    strcpy(name,"MPL_STATUS");
                    break;
                case 0x01:
                    strcpy(name,"MPL_OUT_P_MSB");
                    break;
                case 0x02:
                    strcpy(name, "MPL_OUT_P_CSB");
                    break;
                case 0x03:
                    strcpy(name,"MPL_OUT_P_LSB");
                    break;
                case 0x04:
                    strcpy(name,"MPL_OUT_T_MSB");
                    break;
                case 0x05:
                    strcpy(name,"MPL_OUT_T_LSB");
                    break;
                case 0x06:
                    strcpy(name,"MPL_DR_STATUS");
                    break;
                case 0x07:
                    strcpy(name,"MPL_OUT_P_DELTA_MSB");
                    break;
                case 0x08:
                    strcpy(name,"MPL_OUT_P_DELTA_CSB");
                    break;
                case 0x09:
                    strcpy(name,"MPL_OUT_P_DELTA_LSB");
                    break;
                case 0x0A:
                    strcpy(name,"MPL_OUT_T_DELTA_MSB");
                    break;
                case 0x0B:
                    strcpy(name,"MPL_OUT_T_DELTA_LSB");
                    break;
                case 0x0C:
                    strcpy(name,"MPL_WHO_AM_I");
                    break;
                case 0x0D:
                    strcpy(name,"MPL_F_STATUS");
                    break;
                case 0x0E:
                    strcpy(name,"MPL_F_DATA");
                    break;
                case 0x0F:
                    strcpy(name,"MPL_F_SETUP");
                    break;
                case 0x10:
                    strcpy(name,"MPL_TIME_DLY");
                    break;
                case 0x11:
                    strcpy(name,"MPL_SYSMOD");
                    break;
                case 0x12:
                    strcpy(name,"MPL_INT_SOURCE");
                    break;
                case 0x13:
                    strcpy(name,"MPL_PT_DATA_CFG");
                    break;
                case 0x14:
                    strcpy(name,"MPL_BAR_IN_MSB");
                    break;
                case 0x15:
                    strcpy(name,"MPL_BAR_IN_LSB");
                    break;
                case 0x16:
                    strcpy(name,"MPL_P_TGT_MSB");
                    break;
                case 0x17:
                    strcpy(name,"MPL_P_TGT_LSB");
                    break;
                case 0x18:
                    strcpy(name,"MPL_T_TGT");
                    break;
                case 0x19:
                    strcpy(name,"MPL_P_WND_MSB");
                    break;
                case 0x1A:
                    strcpy(name,"MPL_P_WND_LSB");
                    break;
                case 0x1B:
                    strcpy(name,"MPL_T_WND");
                    break;
                case 0x1C:
                    strcpy(name,"MPL_P_MIN_MSB");
                    break;
                case 0x1D:
                    strcpy(name,"MPL_P_MIN_CSB");
                    break;
                case 0x1E:
                    strcpy(name,"MPL_P_MIN_LSB");
                    break;
                case 0x1F:
                    strcpy(name,"MPL_T_MIN_MSB");
                    break;
                case 0x20:
                    strcpy(name,"MPL_T_MIN_LSB");
                    break;
                case 0x21:
                    strcpy(name,"MPL_P_MAX_MSB");
                    break;
                case 0x22:
                    strcpy(name,"MPL_P_MAX_CSB");
                    break;
                case 0x23:
                    strcpy(name,"MPL_P_MAX_LSB");
                    break;
                case 0x24:
                    strcpy(name,"MPL_T_MAX_MSB");
                    break;
                case 0x25:
                    strcpy(name,"MPL_T_MAX_LSB");
                    break;
                case 0x26:
                    strcpy(name,"MPL_CTRL_REG1");
                    break;
                case 0x27:
                    strcpy(name,"MPL_CTRL_REG2");
                    break;
                case 0x28:
                    strcpy(name,"MPL_CTRL_REG3");
                    break;
                case 0x29:
                    strcpy(name,"MPL_CTRL_REG4");
                    break;
                case 0x2A:
                    strcpy(name,"MPL_CTRL_REG5");
                    break;
                case 0x2B:
                    strcpy(name,"MPL_OFF_P");
                    break;
                case 0x2C:
                    strcpy(name,"MPL_OFF_T");
                    break;
                case 0x2D:
                    strcpy(name,"MPL_OFF_H");
                    break;
                default:
                    printf("ERR\n\r");
        }    
        printf("0x%02X: %s = ", i, name);
        for(int j = 0; j < num_regs; j++)
            printf("%d\n\r", valArray[j]);
        printf("\n\r"); 
        
    }
    return(0);
} 



int main() {
    int start, length;
    while (1){
        printf("Enter start: \n\r");
        scanf("%d", &start);
        printf("Enter length: \n\r");
        scanf("%d", &length);
        printf("Printing registers: \n\r");
        MPL3115A2_reg_print(start, length);
        wait_ms(500);
    }
    //no return; while(1) never exited       
}