Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

adf.h

Committer:
shreeshas95
Date:
2015-09-17
Revision:
17:2b04e53f3b1d
Parent:
14:a4c259ca0325

File content as of revision 17:2b04e53f3b1d:

DigitalOut cs_adf(D10);
DigitalOut led2(LED_RED);
InterruptIn IRQ(D8);
Ticker ticker;
unsigned char buffer_half=1; 
unsigned char buffer_counter = 0;
bool transmission_done = false;
bool sent_tmfrom_SDcard;
unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xc2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00};
//void inline bbram_write(){   
//    SPI_mutex.lock(); 
//    cs_adf=0;
//    spi.write(0xB0);//PHY_OFF
//    wait_us(300);
//    cs_adf=1;
//    SPI_mutex.unlock();
//    
//    SPI_mutex.lock();
//    // Write bbram
//    cs_adf=0;
//    for(int i=0;i<66;i++){
//        spi.write(bbram_buffer[i]);    
//    }
//    cs_adf=1;
//    SPI_mutex.unlock();
//}
 
 
/******************************************************************************************/
 
//void initiate(void){
//    SPI_mutex.lock();
//    cs_adf=0;
//    spi.write(0xFF);
//    spi.write(0xFF);
//    cs_adf=1;
////    wait_ms(2);
// 
//    cs_adf=0;
//    spi.write(0x08);    // TRANSMIT_DATA LENGTH
//    spi.write(0x14);
//    spi.write(0xFF);
//    cs_adf=1;
////    wait_ms(2);
//    cs_adf=0;
//    spi.write(0x08);        // TRANSMIT_DATA LENGTH
//    spi.write(0x15);
//    spi.write(0xFF);
//    cs_adf=1;
////    wait_ms(2);
//    
//    cs_adf=0;
//    spi.write(0x09);
//    spi.write(0x24);   // TX_BASE ADDRESS   0x20(starting Tx Byte)
//    spi.write(0x20);
//    cs_adf=1;
////    wait_ms(2);
//    
//    cs_adf=0;
//    spi.write(0x09);
//    spi.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size
//    spi.write(0xE0);
//    cs_adf=1;
////    wait_ms(2);
//    
//    cs_adf=0;
//    spi.write(0x09);
//    spi.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled
//    spi.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given
//    cs_adf=1;
////    wait_ms(2);
//    
//    
//    cs_adf=0;
//    spi.write(0x09);
//    spi.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled
//    spi.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given
//    cs_adf=1;
////    wait_ms(2);    
//    SPI_mutex.unlock();
//    }
// 
// 
 
void write_data(void){
   
    cs_adf=0;
    spi.write(0x0B);//IRQ_SOURCE_Random write //To read CMD = 2B 36 FF FF
    spi.write(0x36);//Address : 0x336
    spi.write(0xFF);//Put Low
    cs_adf=1;
 
    cs_adf=0;
    static bool first_2_time = true;
    buffer_counter=0;
 
    if(first_2_time==false && last_buffer==false){
       
        spi.write(0x18);
        if(buffer_half==1){
            spi.write(0x20);
            buffer_half = 2;
        }
        else if(buffer_half==2){
            spi.write(0x90);
            buffer_half = 1;
        }
        
        buffer_counter = 0;
        while(buffer_counter<112){
            spi.write(buffer_112[buffer_counter]);  
            buffer_counter++;
        }
           
    }
 
    if(first_2_time == true && last_buffer==false){
        
        spi.write(0x18);
        if(buffer_half==1){
            spi.write(0x20);
            buffer_half=2;
        }
        else{
            spi.write(0x90);
            buffer_half=1;
            first_2_time = false;
        }
        
        while(buffer_counter<112){
            spi.write(buffer_112[buffer_counter]);  
            buffer_counter++;
        }
            
    }
 
    if(last_buffer){
        cs_adf=0;
        spi.write(0x18);
        spi.write(0x20);
       
        while(buffer_counter<112){
            spi.write(buffer_112[buffer_counter]);  
            buffer_counter++;
        }
        cs_adf=1;
            
        ticker.detach();
        cs_adf=0;
         spi.write(0xB1);
        cs_adf=1;
        transmission_done=true;
    }
                          
cs_adf=1;
}
    
 
void check(){   
    
    if(IRQ){
        VAR_SPACE::mng_tmtc_thread->signal_set(0x02);
    }
}
  
// 
//void send_data(void){
//    SPI_mutex.lock();
//    cs_adf=0;
//    spi.write(0xBB);
//    cs_adf=1;
////    wait_us(300); 
//    
//    cs_adf=0;
//    spi.write(0xFF);
//    spi.write(0xFF);
//    cs_adf=1;
//    SPI_mutex.unlock();
////    wait_ms(2);
//    if(sent_tmfrom_SDcard){
//        printf("inside if\r\n");
//        send_tm_from_SD_card();
//    }
//    else{
//        printf("inside else\r\n");
//        snd_tm.transmit_data(buffer_112,&last_buffer);
//    }
////    SPI_mutex.lock();
////    write_data();
////    SPI_mutex.unlock();
////    if(sent_tmfrom_SDcard)
////    {
////        send_tm_from_SD_card();
////    }
////    else
////    { 
////        snd_tm.transmit_data(buffer_112,&last_buffer);
////    }
////    SPI_mutex.lock();
////    write_data();
////    SPI_mutex.unlock();
////    if(sent_tmfrom_SDcard)
////    {
////        send_tm_from_SD_card();
////    }
////    else
////    { 
////        snd_tm.transmit_data(buffer_112,&last_buffer);
////    }
////    SPI_mutex.lock();
////    cs_adf=0;
////    spi.write(0xB1);
////    cs_adf=1;
////    SPI_mutex.unlock();
////    wait_us(300); 
////    SPI_mutex.lock();
////    cs_adf=0;
////    spi.write(0xFF);
////    spi.write(0xFF);
////    cs_adf=1;
////    
//////    wait_ms(2);  
////    
////    cs_adf=0;
////    spi.write(0xB5);
////    cs_adf=1;
//////    cout<<"B5 given"<<ENDL;
////    SPI_mutex.unlock();
////    wait_us(300);  
//////    int b5=t.read_us();
////    SPI_mutex.lock();
////    cs_adf=0;
////    spi.write(0xFF);
////    spi.write(0xFF);
////    cs_adf=1;
////    SPI_mutex.unlock();
//////    wait_ms(2);
////    ticker.attach_us(&check,32000);
////    
////    while(!transmission_done){
////        led2=!led2;
////        printf("x");
////        Thread::signal_wait(0x2);
////        
////        SPI_mutex.lock();
////        write_data();
////        SPI_mutex.unlock();
////        if(sent_tmfrom_SDcard){
////            send_tm_from_SD_card();
////        }
////        else{
////            snd_tm.transmit_data(buffer_112,&last_buffer);
////        }
////    }
//}
//    
//    
    
void inline spi_SND_SDCard(uint64_t x,uint64_t y ){
    start_block_num = x;
    end_block_num = y;
    sent_tmfrom_SDcard = true;
    spi.format(8,0);
    spi.frequency(1000000);
 
//    bbram_write();
//    initiate();
//    send_data();
 
}
    
void read_TC(TC_list* TC_ptr){
    unsigned char service_subtype = 0;
    uint64_t starting_add  = 0, ending_add = 0;
    service_subtype = (TC_ptr->TC_string[2])&0x0f;
    starting_add =  (TC_ptr->TC_string[5]) +  ( (TC_ptr->TC_string[4])<<8 ) + ( (TC_ptr->TC_string[3]) <<16);
    ending_add =  (TC_ptr->TC_string[8]) +  ( (TC_ptr->TC_string[7])<<8 ) + ( (TC_ptr->TC_string[6]) <<16);
    spi_SND_SDCard(starting_add , ending_add);   
}
    
 
void inline adf_not_SDcard(){
    spi.format(8,0);
    spi.frequency(1000000);
    sent_tmfrom_SDcard = false;
//    bbram_write();
    SPI_mutex.lock(); 
    cs_adf=0;
    spi.write(0xB0);//PHY_OFF
    wait_us(300);
    cs_adf=1;
    SPI_mutex.unlock();
    
    SPI_mutex.lock();
    // Write bbram
    cs_adf=0;
    for(int i=0;i<66;i++){
        spi.write(bbram_buffer[i]);    
    }
    cs_adf=1;
    SPI_mutex.unlock();
//    initiate();

SPI_mutex.lock();
    cs_adf=0;
    spi.write(0xFF);
    spi.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
 
    cs_adf=0;
    spi.write(0x08);    // TRANSMIT_DATA LENGTH
    spi.write(0x14);
    spi.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
    cs_adf=0;
    spi.write(0x08);        // TRANSMIT_DATA LENGTH
    spi.write(0x15);
    spi.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    spi.write(0x09);
    spi.write(0x24);   // TX_BASE ADDRESS   0x20(starting Tx Byte)
    spi.write(0x20);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    spi.write(0x09);
    spi.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size
    spi.write(0xE0);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    spi.write(0x09);
    spi.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled
    spi.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given
    cs_adf=1;
//    wait_ms(2);
    
    
    cs_adf=0;
    spi.write(0x09);
    spi.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled
    spi.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given
    cs_adf=1;
//    wait_ms(2);    
    SPI_mutex.unlock();
//    send_data();

SPI_mutex.lock();
    cs_adf=0;
    spi.write(0xBB);
    cs_adf=1;
//    wait_us(300); 
    
    cs_adf=0;
    spi.write(0xFF);
    spi.write(0xFF);
    cs_adf=1;
    SPI_mutex.unlock();
//    wait_ms(2);
    if(sent_tmfrom_SDcard){
        send_tm_from_SD_card();
    }
    else{
        snd_tm.transmit_data(buffer_112,&last_buffer);
    }
    SPI_mutex.lock();
    write_data();
    SPI_mutex.unlock();
    if(sent_tmfrom_SDcard)
    {
        send_tm_from_SD_card();
    }
    else
    { 
        snd_tm.transmit_data(buffer_112,&last_buffer);
    }
    SPI_mutex.lock();
    write_data();
    SPI_mutex.unlock();
    if(sent_tmfrom_SDcard)
    {
        send_tm_from_SD_card();
    }
    else
    { 
        snd_tm.transmit_data(buffer_112,&last_buffer);
    }
    SPI_mutex.lock();
    cs_adf=0;
    spi.write(0xB1);
    cs_adf=1;
    SPI_mutex.unlock();
    wait_us(300); 
    SPI_mutex.lock();
    cs_adf=0;
    spi.write(0xFF);
    spi.write(0xFF);
    cs_adf=1;
    
//    wait_ms(2);  
    
    cs_adf=0;
    spi.write(0xB5);
    cs_adf=1;
//    cout<<"B5 given"<<ENDL;
    SPI_mutex.unlock();
    wait_us(300);  
//    int b5=t.read_us();
    SPI_mutex.lock();
    cs_adf=0;
    spi.write(0xFF);
    spi.write(0xFF);
    cs_adf=1;
    SPI_mutex.unlock();
//    wait_ms(2);
    ticker.attach_us(&check,32000);
    
    while(!transmission_done){
        led2=!led2;
        Thread::signal_wait(0x2);
        
        SPI_mutex.lock();
        write_data();
        SPI_mutex.unlock();
        if(sent_tmfrom_SDcard){
            send_tm_from_SD_card();
        }
        else{
            snd_tm.transmit_data(buffer_112,&last_buffer);
        }
    }
}