#include #include #include #include #include #include #include #include #include /* Driver Header files */ #include #include #include #include /* Driver configuration */ #include "ti_drivers_config.h" /* Buffer size used for the file copy process */ #ifndef CPY_BUFF_SIZE #define CPY_BUFF_SIZE 2048 #endif /* String conversion macro */ #define STR_(n) #n #define STR(n) STR_(n) /* Drive number used for FatFs */ #define DRIVE_NUM 0 const char inputfile[] = "fat:"STR(DRIVE_NUM)":input.txt"; char textarray[100]; static Display_Handle display; /* File name prefix for this filesystem for use with TI C RTS */ char fatfsPrefix[] = "fat"; unsigned char cpy_buff[CPY_BUFF_SIZE + 1]; void *mainThread(void *arg0) { char input; unsigned int i=0; UART_Handle uart; UART_Params uartParams; SDFatFS_Handle sdfatfsHandle; /* Variables for the CIO functions */ FILE *src; unsigned int filesize; /* Call driver init functions */ GPIO_init(); UART_init(); Display_init(); SDFatFS_init(); /* Configure the LED pin */ GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); /* add_device() should be called once and is used for all media types */ add_device(fatfsPrefix, _MSA, ffcio_open, ffcio_close, ffcio_read, ffcio_write, ffcio_lseek, ffcio_unlink, ffcio_rename); /* Turn on user LED */ GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON); /* Create a UART with data processing off. */ UART_Params_init(&uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_RETURN_FULL; uartParams.baudRate = 115200; uart = UART_open(CONFIG_UART_0, &uartParams); if (uart == NULL) { /* UART_open() failed */ while (1); } /* Loop forever echoing */ while (1) { /* Mount and register the SD Card */ sdfatfsHandle = SDFatFS_open(CONFIG_SDFatFS_0, DRIVE_NUM); if (sdfatfsHandle == NULL) { Display_printf(display, 0, 0, "Error starting the SD card\n"); while (1); } else { Display_printf(display, 0, 0, "Drive %u is mounted\n", DRIVE_NUM); } for (i=0; i < strlen (textarray); i++ ) { char c = UART_read(uart, &input, 1); UART_write(uart, &input, 1); textarray [i] = c; } /* Try to open the source file */ src = fopen(inputfile, "r"); if (!src) { Display_printf(display, 0, 0, "Creating a new file \"%s\"...", inputfile); /* Open file for both reading and writing */ src = fopen(inputfile, "w+"); if (!src) { Display_printf(display, 0, 0, "Error: \"%s\" could not be created.\nPlease check the " "Board.html if additional jumpers are necessary.\n", inputfile); Display_printf(display, 0, 0, "Aborting...\n"); while (1); } fwrite (textarray,1,strlen(textarray),src); fflush(src); /* Reset the internal file pointer */ rewind(src); Display_printf(display, 0, 0, "done\n"); } else { Display_printf(display, 0, 0, "Using existing copy of \"%s\"\n", inputfile); } } } /* * ======== fatfs_getFatTime ======== */ int32_t fatfs_getFatTime(void) { /* * FatFs uses this API to get the current time in FatTime format. User's * must implement this function based on their system's timekeeping * mechanism. See FatFs documentation for details on FatTime format. */ /* Jan 1 2017 00:00:00 */ return (0x4A210000); }