#include "n5_regs.h"
#include "n5_drv.h"

/* GPIO */
void gpio_set_dir(unsigned int d) { 
    *GPIO_DIR = d; 
}

void gpio_write(unsigned int d) { 
    *GPIO_DOUT = d;
}

unsigned int gpio_read() {  
    return *GPIO_DIN;
}

void gpio_pull (unsigned char d){
    *GPIO_PD = 0;
    *GPIO_PU = 0;
    if(d==0) *GPIO_PD = 1;
    else *GPIO_PU = 1;
}

void gpio_im(unsigned int im){
    *GPIO_IM = im;
}

/* UART */
int uart_init(unsigned int n, unsigned int prescaler){
    if(n>1) return -1;
    if(n==1){
        *UART1_PRESCALER = prescaler;
        *UART1_IM = 0;
        *UART1_CTRL = 1;
    }
    else {
        *UART0_PRESCALER = prescaler;
        *UART0_IM = 0;
        *UART0_CTRL = 1;
    }
}

int uart_puts(unsigned int n, unsigned char *msg, unsigned int len){
    int i;
    if(n>1) return -1;
    if(n==0){
        for(i=0; i<len; i++){
            while(*UART0_STATUS&1); // TX Not Full
            *UART0_DATA = msg[i]; 
        }
    }  else {
        for(i=0; i<len; i++){
            while(*UART1_STATUS&1); // TX Not Full
            *UART1_DATA = msg[i]; 
        }
    }   
    return 0;
}

int uart_gets(unsigned int n, unsigned char *msg, unsigned int len){
    int i;
    if(n>1) return -1;
    if(n==0){
        for(i=0; i<len; i++){
            while(*UART0_STATUS&8); // RX Not Empty
            msg[i] = *UART0_DATA;  
        }
    } else {
        for(i=0; i<len; i++){
            while(*UART1_STATUS&8); // RX Not Empty
            msg[i] = *UART1_DATA;  
        }
    }    
    return 0;
}

/* SPI */
int spi_init(unsigned int n, unsigned char cpol, unsigned char cpha, unsigned char clkdiv){
  unsigned int cfg_value = 0;
  cfg_value |=  cpol;
  cfg_value |=  (cpha << 1);
  cfg_value |=  ((unsigned int)clkdiv << 2);
  if(n>1) return -1;
  if(n==0)  *SPI0_CFG = cfg_value;
  else *SPI1_CFG = cfg_value;
}

unsigned int spi_status(unsigned int n){
    if(n>1) return -1;
    if(n==0)    
        return *SPI0_STATUS & 1;
    else 
        return *SPI1_STATUS & 1;
}

unsigned char spi_read(unsigned int n){
    if(n>1) return -1;
    if(n==0)  
        return *SPI0_DATA;
    else 
        return *SPI1_DATA;
}

int spi_write(unsigned int n, unsigned char data){
    if(n>1) return -1;
    if(n==0) {
        *SPI0_DATA =  data;
        SET_BIT(*SPI0_CTRL, SPI_GO_BIT);
        CLR_BIT(*SPI0_CTRL, SPI_GO_BIT);
        while(!spi_status(n));
    } else{
        *SPI1_DATA =  data;
        SET_BIT(*SPI1_CTRL, SPI_GO_BIT);
        CLR_BIT(*SPI1_CTRL, SPI_GO_BIT);
        while(!spi_status(n));
    }
    return 0;
}

int spi_start(unsigned int n){
    if(n>1) return -1;
    if(n==0) {    
        SET_BIT(*SPI0_CTRL, SPI_SS_BIT);
    } else {
        SET_BIT(*SPI1_CTRL, SPI_SS_BIT);
    }
    return 0;
}

int spi_end(unsigned int n){
    if(n>1) return -1;
    if(n==0)    
        CLR_BIT(*SPI0_CTRL, SPI_SS_BIT);
    else 
        CLR_BIT(*SPI1_CTRL, SPI_SS_BIT);
    return 0;
}

/* i2c */
int i2c_init(unsigned int n, unsigned int pre){
    if(n>1) return -1;
    if(n==0) {
        *(I2C0_PRE_LO) = pre & 0xff;
        *(I2C0_PRE_HI) = pre & 0xff00;
        *(I2C0_CTRL) = I2C_CTRL_EN | I2C_CTRL_IEN;
    } else {
        *(I2C1_PRE_LO) = pre & 0xff;
        *(I2C1_PRE_HI) = pre & 0xff00;
        *(I2C1_CTRL) = I2C_CTRL_EN | I2C_CTRL_IEN;
    }
}

int i2c_start(unsigned int n, unsigned char control)
{
    if(n>1) return -1;
    if(n==0) {
        *(I2C0_TX) = control;
        *(I2C0_CMD) = I2C_CMD_STA | I2C_CMD_WR;
        while( ((*I2C0_STAT) & I2C_STAT_TIP) != 0 );

        if( ((*I2C0_STAT) & I2C_STAT_RXACK)) {
            *(I2C0_CMD) = I2C_CMD_STO;
            return 0;
        }
        return 1;

    } else {
        *(I2C1_TX) = control;
        *(I2C1_CMD) = I2C_CMD_STA | I2C_CMD_WR;
        while( ((*I2C1_STAT) & I2C_STAT_TIP) != 0 );

        if( ((*I2C1_STAT) & I2C_STAT_RXACK)) {
            *(I2C1_CMD) = I2C_CMD_STO;
            return 0;
        }
        return 1;
    }
}

int i2c_sendByte(unsigned char b){
        *(I2C0_TX) = b;
        *(I2C0_CMD) = I2C_CMD_WR;
        while( (*I2C0_STAT) & I2C_STAT_TIP );
        if( ((*I2C0_STAT) & I2C_STAT_RXACK )){
            *(I2C0_CMD) = I2C_CMD_STO;
            return 0;
        }  
        return 1;
}

int i2c_sendHWord(unsigned int hw){
        if(i2c_sendByte(hw>>8) == 0)
            return 0;
        return i2c_sendByte(hw&0xFF);
}

int i2c_readByte(){
    *(I2C0_CMD) = I2C_CMD_RD;
    while( ((*I2C0_STAT) & I2C_STAT_TIP) != 0 );
    return *(I2C0_RX);
}

int i2c_stop(){
    *(I2C0_CMD) = I2C_CMD_STO;
}


int i2c_send(unsigned int n, unsigned char saddr, unsigned char sdata){
    if(n>1) return -1;
    if(n==0) {
        *(I2C0_TX) = saddr;
        *(I2C0_CMD) = I2C_CMD_STA | I2C_CMD_WR;
        while( ((*I2C0_STAT) & I2C_STAT_TIP) != 0 );
        //(*I2C_STAT) & I2C_STAT_TIP ;

        if( ((*I2C0_STAT) & I2C_STAT_RXACK)) {
            *(I2C0_CMD) = I2C_CMD_STO;
            return 0;
        }
        *(I2C0_TX) = sdata;
        *(I2C0_CMD) = I2C_CMD_WR;
        while( (*I2C0_STAT) & I2C_STAT_TIP );
        *(I2C0_CMD) = I2C_CMD_STO;
        if( ((*I2C0_STAT) & I2C_STAT_RXACK ))
            return 0;
        else
            return 1;
    } else {
        *(I2C1_TX) = saddr;
        *(I2C1_CMD) = I2C_CMD_STA | I2C_CMD_WR;
        while( ((*I2C1_STAT) & I2C_STAT_TIP) != 0 );
        //(*I2C_STAT) & I2C_STAT_TIP ;

        if( ((*I2C1_STAT) & I2C_STAT_RXACK)) {
            *(I2C1_CMD) = I2C_CMD_STO;
            return 0;
        }
        *(I2C1_TX) = sdata;
        *(I2C1_CMD) = I2C_CMD_WR;
        while( (*I2C1_STAT) & I2C_STAT_TIP );
        *(I2C1_CMD) = I2C_CMD_STO;
        if( ((*I2C1_STAT) & I2C_STAT_RXACK ))
            return 0;
        else
            return 1;
    }
}

/* PWM */
int pwm_init(unsigned int n, unsigned int cmp1, unsigned int cmp2, unsigned int pre){
  if(n>1) return -1;
    if(n==0) {
        *PWM0_CMP1 = cmp1;
        *PWM0_CMP2 = cmp2;
        *PWM0_PRE = pre;
    } else {
        *PWM1_CMP1 = cmp1;
        *PWM1_CMP2 = cmp2;
        *PWM1_PRE = pre;
    }
    return 0;
}

int pwm_enable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *PWM0_CTRL = 0x1;
    else
        *PWM0_CTRL = 0x1;
    return 0;
}

int pwm_disable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *PWM0_CTRL = 0x0;
    else
        *PWM0_CTRL = 0x0;
    return 0;
}

/* Timers */
int tmr_init(unsigned int n, unsigned int pre, unsigned int cmp){
  if(n>1) return -1;
    if(n==0) {
        *TMR0_CMP = cmp;
        *TMR0_PRE = pre;
        *TMR0_OVCLR = 1;
        *TMR0_OVCLR = 0;        
    } else {
        *TMR1_CMP = cmp;
        *TMR1_PRE = pre;
        *TMR1_OVCLR = 1;
        *TMR1_OVCLR = 0;        
    }
    return 0;
}

int tmr_enable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *TMR0_EN = 0x1;
    else
        *TMR1_EN = 0x1;
    return 0;
}

int tmr_disable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *TMR0_EN = 0x0;
    else
        *TMR1_EN = 0x0;
    return 0;
}

int tmr_wait(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        while(*TMR0_STATUS == 0);
    else
        while(*TMR1_STATUS == 0);
    return 0;
}

int tmr_ei(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *TMR0_IM == 1;
    else
        *TMR1_IM == 1;
    return 0;
}

int tmr_di(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *TMR0_IM == 0;
    else
        *TMR1_IM == 0;
    return 0;
}

int tmr_clrov(unsigned int n){
    if(n>1) return -1;
    if(n==0)  {
        *TMR0_OVCLR == 1;
        *TMR0_OVCLR == 0;
    }
    else{
        *TMR1_OVCLR == 1;
        *TMR1_OVCLR == 0;
    }
    return 0;
}

int tmr_read(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        return *TMR0;
    else
        return *TMR1;
    return 0;
}

/* Watch dog Timers */
int wdt_init(unsigned int n){
    if(n>1) return -1;
    if(n==0) {
        *WDT0_OVCLR = 1;
        *WDT0_OVCLR = 0;        
    } else {
        *WDT1_OVCLR = 1;
        *WDT1_OVCLR = 0;          
    }
    return 0;
}

int wdt_enable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *WDT0_EN = 0x1;
    else
        *WDT1_EN = 0x1;
    return 0;
}

int wdt_load(unsigned int n, unsigned int val) {
    if(n>1) return -1;
    if(n==0) {
        *WDT0_LOAD = val;
    } else {
        *WDT1_LOAD = val;
    }
    return 0;
}

int wdt_read(unsigned int n){
    if(n>1) return -1;
    if(n==0) {
        return *WDT0_TMR;
    } else {
        return *WDT1_TMR;
    }
    return 0;
}

int wdt_disable(unsigned int n){
    if(n>1) return -1;
    if(n==0) 
        *WDT0_EN = 0x0;
    else
        *WDT1_EN = 0x0;
    return 0;
}