#include <mega32.h> 
#include <io.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <spi.h>
#include <sdcard.h>
#include <ff.h>

#include "3310_lib_at32_pc.c"

unsigned char Buffer[256];

FRESULT res;
FATFS fat;
FIL file_1;

FILINFO fno;
    DIR dir;
    
int i;
char *fn;


unsigned int nbytes;

interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
TCNT0 = 0x06;

disk_timerproc();
}

interrupt [TIM1_OVF] void timer1_ovf_isr (void)
{
TCNT1H=0xFF;
TCNT1L=0x06;
}

typedef struct _mytab  {
                        char *ffname;
                        char *flink;
                        //void(*pFunction)(void);
                        } MY_TAB;

 MY_TAB listing[5]; 

void main(void)
{
unsigned char disk_status;
unsigned char *path = "0:/";
     
//char chr;
int i=0,y=0;
PORTC=0xFF;
DDRC=0xFF;

// Инициализация Timer 0
TCCR0=0x03;
TCNT0=0x06;         

// Инициализация Timer 1
TCCR1B=0x05;
TCCR1A=0x00;
TCNT1H=0xFF;
TCNT1L=0x06;
OCR1BL=0x00;
OCR1BH=0x00;
OCR1AL=0x00;
OCR1AH=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;
MCUCSR=0x00;


TIMSK=0x05;

ACSR=0x80;
SFIOR=0x00;

SPCR=0x50;
SPSR=0x01;
 
LCD_3310_INIT();
ClearBuf();

disk_status = disk_initialize(0); 
        
    if(disk_status) putstr("Disk init false",5,0);
    else            putstr("Disk init ok",5,0);

res = f_mount(0,&fat);
    if(res)         putstr("mounted false",5,1);
    else            putstr("mounted ok",5,1);

//-------------------------------------------------------------
//Directory open    
res = f_opendir(&dir, path);
    if(res)         putstr("open root false",5,2); 
    else            putstr("open root ok",5,2);
     
/*res = f_readdir(&dir, &fno); fn = fno.fname;
    if(res)         putstr("read dir false",5,3);
    else            putstr("read dir ok",5,3);*/

                      putstr("skan directory",5,3);
LcdUpdate();    
delay_ms(1000);
ClearBuf();
 
//Directory scan 
while(((res=f_readdir(&dir, &fno))==FR_OK) && (fno.fname[0]))
{
 fn = fno.fname; 
 
                    
                   strcpy(listing[i].ffname,fn);
                   strcpy(listing[i].flink,path);
  
 i++;
}

LcdUpdate();    
delay_ms(1000);
ClearBuf();


while (y<i)
            {
            putstr(listing[y].ffname,0,y);
            putstr(listing[y].flink,70,y);
            y++;
            }

//--------------------------------------------------------------   
LcdUpdate();

while (1)
      {
      };
}
