Code clean up - modify Datatypes

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of merged_code2_3rd_nov_2017_15th_dec_2017_magicno_removal by nikita teggi

ec_bp.cpp

Committer:
nikitateggi
Date:
2017-12-19
Revision:
61:2143f39103f7
Parent:
59:e21cf7e08ebf

File content as of revision 61:2143f39103f7:

#include "mbed.h"
#include "ec_bp.h"

SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCLK) ;
DigitalIn DRDY_BAR(PTC8);
 
DigitalOut CHIPSEL_BAR(PTD0);
DigitalOut ADS_START(PTC16);
DigitalOut RESET_BAR(PTC17);
DigitalOut myled(LED1);
PwmOut led(PTB18);

 uint8_t value = 0;                                                             // datatype changed from float to uint8_t nikita 
 uint8_t value1 = 0;
 uint8_t value2 = 0;
 uint8_t value3 = 0;
 uint8_t value4 = 0;
 uint8_t value5 = 0;
 uint8_t value6 = 0;
 uint8_t data1 = 0;

 /* SPI is the spi function written in mbed and mySpi is the instance name*/

typedef void (*func_ptr)(void) ; /*creates typedef to function pointer, does not take any arguement and returns void*/


typedef struct _cmd_func 
{
    char *name ;
    func_ptr func ;
} cmd_func_type ;

cmd_func_type cmd_list[] = {   /*"cmd_func_type cmd_list[]" is same as "struct cmd_list[]"*/
    {"help", doHelp},
    {"status", doStatus},
    {"freq", doFreq},
    {"mode", doMode},
    {"bit",  doBit},
    {"write", doWrite},
    {"read",  doRead},
    {"loop", doLoop},
    { 0, 0 }
} ;

func_ptr getFunc(char *cmd)  /*here "func_ptr is same as void*/
{
    uint8_t i = 0 ;                                                              // datatype changed from int to uint8_t nikita 
    while(cmd_list[i].name != 0) 
    {
        if (strcmp(cmd, cmd_list[i].name) == 0)
        {
            return(cmd_list[i].func) ; ;
        }
        i++ ;
    }
    return(0) ;
}

void doHello()
{
    printf("=== spi test program ===\n\r") ;
    printf("please set your terminal program\n\r") ;
    printf("local echo on\n\r") ;
    printf("\n\r") ; 
}


void setup()
{
   //initially make all inputs low until power is up and stabilized
    CHIPSEL_BAR = 0;
    ADS_START = 0;
    RESET_BAR = 0;
    //wait for oscillator to wake up
    wait(1);     
    
    CHIPSEL_BAR = 1;
    RESET_BAR = 1; //wait for tpor time
    //wait for power on reset
    wait(1);
    RESET_BAR = 0; // send a reset pulse and wait for t_reset amount of time
    wait(1);
    RESET_BAR = 1;//release the reset
    //Wait for 18 tclks = 36 us
    wait_us(36);
    
    //Device wakes up in RDATAC mode so send SDATAC command to write to registers
    cmdWrite(CMD_SDATAC) ;
//    printf("Device is in SDATAC mode\n");
    
    regRead(REG_ID);
    printf("DEVICE ID register read from ADS is= 0x%X\n",data1);  
    wait(1);
    
    //Since we are using internal 2.42V reference and enable clock on the CLK PIN
    //Write 0xA8 to CONFIG2 register
    regWrite(REG_CONFIG2,NO_MODE);
       
    //Set continuous sampling mode, 500 SPS
    regWrite(REG_CONFIG1,SPS500);
        
    //PGA Gain = 6, inputs shorted for noise measurements
    regWrite(REG_CH1SET, OFFSET_MEASURE);
    
    //read data from CONFIG2 register
    regRead(REG_CONFIG2);
//    printf("REG_CONFIG2 register read from ADS for initial setup is= 0x%X\n",data1);
    
    //read data from CONFIG1 register
    regRead(REG_CONFIG1);
//    printf("REG_CONFIG1 register read from ADS for initial setup is= 0x%X\n",data1);
    
    //read data from CONFIG1 register
    regRead(REG_CH1SET);
//    printf("REG_CH1SET register read from ADS for initial setup is= 0x%X\n",data1);
}   

void testsetup()
{
 //Send SDATAC command to write to registers to set test signals 
    cmdWrite(CMD_SDATAC) ;
    printf("Device is in SDATAC mode\n");
            
    //Since we are using internal 2.42V reference and enable clock on the CLK PIN
    //Write 0xA3 to CONFIG2 register to set test signal and its freq = 1Hz
    regWrite(REG_CONFIG2,TEST_MODE);
       
    //PGA Gain = 6, test signal selected
    regWrite(REG_CH1SET, TEST_INPUT);
    
    //read data from CONFIG2 register
    regRead(REG_CONFIG2);
    printf("REG_CONFIG2 register read from ADS for test signal setup is= 0x%X\n",data1);
    
    //read data from CONFIG1 register
    regRead(REG_CH1SET);
    printf("REG_CH1SET register read from ADS for test signal setup is= 0x%X\n",data1);  
}

void ecgsetup()
{
    cmdWrite(CMD_SDATAC) ; //Set to SDATAC mode to set CH1SET register
    
    regWrite(REG_CONFIG1,SPS500);
    regWrite(REG_CONFIG2, DEFAULT_MODE);//put INT_TEST and TEST_FREQ bits to default mode(set those bits to '0')
    regWrite(REG_LOFF, LEAD_OFF_CONFG);
    regWrite(REG_CH1SET, ELECTRODE_INPUT);// Set to read normal electrode input
    regWrite(REG_RLD_SENS, RLD_SENSE_SIG);//Set RLD_SENS
    regWrite(REG_LOFF_SENS, LOFF_SENSE_SIG);//Set LOFF_SENS
    regWrite(REG_MISC1, MISC1_INPUT );//Set RESP1
    regWrite(REG_MISC2, MISC2_INPUT );//Set RESP2
    //printf("connect ECG leads\n");
    wait(0.5);
    regRead(REG_LOFF_STAT);//Read LOFF_STAT register
    printf("REG_LOFF_STAT register read from ADS for ecg setup is= 0x%X\n",data1); 

}

void doHelp(void) 
{
    printf("=== spi test ===\n\r") ;
    printf("commands available\n\r") ;
    printf("help\n\r") ;
    printf("status\n\r") ;
    printf("freq freq_in_hz\n\r") ;
    printf("mode (0 | 1 | 2 | 3)\n\r") ;
    printf("bit (4 - 16)\n\r") ;
    printf("write value\n\r") ;
    printf("read\n\r") ;
    printf("loop number (set repeat number for read/write)\n\r") ;
}

void doStatus(void)
{
    printf("=== Status Report ===\n\r") ;
    printf("bits: %d\n\r", ECG_SPI_BITS) ;
    printf("mode: %d\n\r", ECG_SPI_MODE) ;
    printf("SPI_FREQUENCY: %d Hz\n\r", ECG_SPI_FREQUENCY) ;
    printf("loop: %d\n\r", ECG_SPI_LOOP) ;
}

void doFreq(void)
{
    printf("setting frequency to %d\n\r", ECG_SPI_FREQUENCY) ;
    mySpi.frequency(ECG_SPI_FREQUENCY) ;
}

void doMode(void)
{
    printf("setting format(%d, %d)\n\r",ECG_SPI_BITS, ECG_SPI_MODE) ;
    mySpi.format(ECG_SPI_BITS, ECG_SPI_MODE) ;       
}

void doBit(void) 
{
    printf("setting format(%d, %d)\n\r",ECG_SPI_BITS, ECG_SPI_MODE) ;
    mySpi.format(ECG_SPI_BITS, ECG_SPI_MODE) ;
}

void doWrite(void) 
{    
    CHIPSEL_BAR = 0;
    value1 =  mySpi.write(0x00);
    value2 =  mySpi.write(0x00);
    value3 =  mySpi.write(0x00);
    value4 =  mySpi.write(0x00);
    value5 =  mySpi.write(0x00);
    value6 =  mySpi.write(0x00);
    
    CHIPSEL_BAR = 0;    
}

void doRead(void) 
{
    uint8_t dummy = 0 ;                                                          // datatype changed from int to uint8_t nikita 
    
    while(!DRDY_BAR)
        ADS_START = 0;
    
    value = mySpi.write(dummy) ;
         
}

void doLoop(void)
{
   
    printf("repeat number has been set to %d\n\r", ECG_SPI_LOOP) ;
}

void cmdWrite(uint8_t data)                                                     // datatype changed from int to uint8_t nikita  
{
    CHIPSEL_BAR = 0;
    mySpi.write(data) ;
    wait_ms(1);
    CHIPSEL_BAR = 1;  
}

void regWrite(uint8_t address, uint8_t data)                                    // datatype changed from int to uint8_t nikita  
{
    uint8_t data_to_send = CMD_WREG << 5;                                       // datatype changed from int to uint8_t nikita 
    data_to_send = data_to_send | address;
    CHIPSEL_BAR = 0;
    mySpi.write(data_to_send);
    wait_ms(1);
    mySpi.write(0x00) ;
    wait_ms(1);
    mySpi.write(data) ;
    wait_ms(1);
    CHIPSEL_BAR = 1;  
}

void regRead(uint8_t address)                                                   // datatype changed from int to uint8_t nikita 
{
    uint8_t data_to_receive = CMD_RREG << 5;                                    // datatype changed from int to uint8_t nikita 
    data_to_receive = data_to_receive | address;
    CHIPSEL_BAR = 0;
    mySpi.write(data_to_receive);
    wait_ms(1);
    mySpi.write(0x00) ;
    wait_ms(1);
    data1 = mySpi.write(0x00) ;
    CHIPSEL_BAR = 1;       
}

void freqset()
{
    mySpi.frequency(ECG_SPI_FREQUENCY) ;
    mySpi.format(ECG_SPI_BITS, ECG_SPI_MODE) ; 
}
    
void setupfunc()
{   
    setup() ;  
    cmdWrite(CMD_RDATAC) ;
    ADS_START = 1;
} 
  
uint8_t ecgsetupfunc()
{ 
    ecgsetup();   // To set the ADS1291 registers for ECG signal generation
    cmdWrite(CMD_RDATAC) ;
    ADS_START = 1; 
    return data1;            // returns lead off reg value // 14/06
}
  
void ecgtestsetupfunc()
{ 
    testsetup();   // To set the ADS1291 registers for ECG signal generation
    cmdWrite(CMD_RDATAC) ;
    ADS_START = 1; 
  
} 
uint32_t readvalue()
{
    uint32_t concatenate_value = 0;
    while(DRDY_BAR);
    doWrite() ;
    concatenate_value = ((value4<< 16)|(value5 <<8) |(value6));
    
    return  concatenate_value;
}