Demo

Dependencies:   mbed

PeripheralLayer/AirAdaptorLib.cpp

Committer:
nightseas
Date:
2016-05-19
Revision:
2:0ee90da44162
Parent:
0:3dac4f477e98

File content as of revision 2:0ee90da44162:

#include "SysConfig.h"

//On-board LED number
const int LED_NUM_MAX = 3;

//I2C for SHT20 & BMP180
I2C i2c_sen(PB_11, PB_10);

//USART2 to PC, USART1 to sensors & WiFi module
Serial uart_pc(SERIAL_TX, SERIAL_RX);
Serial uart_sen(PA_9, PA_10);

//LEDs on mother board and daughter board
DigitalOut led_mb(LED1, 0), led_db1_n(PB_1, 1), led_db2_n(PB_2, 1); 

//GPIO for CD4052 serial mux control
DigitalOut smux_a(PB_14, 0), smux_b(PB_13, 0), smux_oe_n(PB_15, 1);

AnalogIn adc_ch10(PC_0), adc_ch11(PC_1);


//Init board library
//--> Success return 0
int BoardLibInit(void)
{    
    //Init LED status
    LedOnAll();
        
    //Init debug & sensor UART
    uart_pc.baud(115200);
    uart_sen.baud(9600);
    
    //Init sensor I2C
    i2c_sen.frequency(100000);
    
    //Init serial mux chip
    SerialMuxDisable();
    SerialMuxSel(0);  
     
    //Return 0 if success
    return 0; 
}

void SerialMuxSel(int ch)
{
    switch(ch)
    {
        case 1:
            smux_a = 1;
            smux_b = 0;
            break;  
            
        case 2:
            smux_a = 0;
            smux_b = 1;
            break;  
            
        case 3:
            smux_a = 1;
            smux_b = 1;
            break;  
            
            
        case 0:
        default:
            smux_a = 0;
            smux_b = 0;
            break;    
    }    
}

void SerialMuxEnable(void)
{
    smux_oe_n = 0;       
}

void SerialMuxDisable(void)
{
    smux_oe_n = 0;       
}

void LedOn(int ch)
{
    switch(ch)
    {
        case 0:
            led_mb = 1;
            break;  
            
        case 1:
            led_db1_n = 0;
            break;  
            
        case 2:
            led_db2_n = 0;
            break;  
            
        default:
            break;   
    }           
}

void LedOff(int ch)
{
    switch(ch)
    {
        case 0:
            led_mb = 0;
            break;  
            
        case 1:
            led_db1_n = 1;
            break;  
            
        case 2:
            led_db2_n = 1;
            break;  
            
        default:
            break;   
    }           
}

void LedToggle(int ch)
{
    switch(ch)
    {
        case 0:
            if(led_mb)
                led_mb = 0;
            else
                led_mb = 1;
            break;  
            
        case 1:
            if(led_db1_n)
                led_db1_n = 0;
            else
                led_db1_n = 1;
            break;  
            
        case 2:
            if(led_db2_n)
                led_db2_n = 0;
            else
                led_db2_n = 1;
            break;  
            
        default:
            break;   
    }           
}

void LedOnAll(void)
{
    for(int ledNum = 0; ledNum < LED_NUM_MAX; ledNum++)
        LedOn(ledNum);    
}

void LedOffAll(void)
{
    for(int ledNum = 0; ledNum < LED_NUM_MAX; ledNum++)
        LedOff(ledNum);    
}