+++ /dev/null
-/*\r
- * FreeRTOS+FAT SL V1.0.1 (C) 2014 HCC Embedded\r
- *\r
- * The FreeRTOS+FAT SL license terms are different to the FreeRTOS license \r
- * terms.\r
- * \r
- * FreeRTOS+FAT SL uses a dual license model that allows the software to be used \r
- * under a standard GPL open source license, or a commercial license. The \r
- * standard GPL license (unlike the modified GPL license under which FreeRTOS \r
- * itself is distributed) requires that all software statically linked with \r
- * FreeRTOS+FAT SL is also distributed under the same GPL V2 license terms. \r
- * Details of both license options follow:\r
- * \r
- * - Open source licensing -\r
- * FreeRTOS+FAT SL is a free download and may be used, modified, evaluated and\r
- * distributed without charge provided the user adheres to version two of the \r
- * GNU General Public License (GPL) and does not remove the copyright notice or \r
- * this text. The GPL V2 text is available on the gnu.org web site, and on the\r
- * following URL: http://www.FreeRTOS.org/gpl-2.0.txt.\r
- * \r
- * - Commercial licensing -\r
- * Businesses and individuals who for commercial or other reasons cannot comply\r
- * with the terms of the GPL V2 license must obtain a commercial license before \r
- * incorporating FreeRTOS+FAT SL into proprietary software for distribution in \r
- * any form. Commercial licenses can be purchased from \r
- * http://shop.freertos.org/fat_sl and do not require any source files to be \r
- * changed.\r
- *\r
- * FreeRTOS+FAT SL is distributed in the hope that it will be useful. You\r
- * cannot use FreeRTOS+FAT SL unless you agree that you use the software 'as\r
- * is'. FreeRTOS+FAT SL is provided WITHOUT ANY WARRANTY; without even the\r
- * implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A\r
- * PARTICULAR PURPOSE. Real Time Engineers Ltd. and HCC Embedded disclaims all\r
- * conditions and terms, be they implied, expressed, or statutory.\r
- *\r
- * http://www.FreeRTOS.org\r
- * http://www.FreeRTOS.org/FreeRTOS-Plus\r
- *\r
- */\r
-\r
-#include "../../api/fat_sl.h"\r
-#include "../../psp/include/psp_rtc.h"\r
-#include "dir.h"\r
-\r
-#include "util.h"\r
-\r
-#include "../../version/ver_fat_sl.h"\r
-#if VER_FAT_SL_MAJOR != 5 || VER_FAT_SL_MINOR != 2\r
- #error Incompatible FAT_SL version number!\r
-#endif\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _f_getword\r
- *\r
- * get a word 16bit number from a memory (it uses LITTLE ENDIAN mode always)\r
- *\r
- * INPUTS\r
- *\r
- * ptr - pointer where data is\r
- *\r
- * RETURNS\r
- *\r
- * word number\r
- *\r
- ***************************************************************************/\r
-unsigned short _f_getword ( void * ptr )\r
-{\r
- unsigned char * sptr = (unsigned char *)ptr;\r
- unsigned short ret;\r
-\r
- ret = (unsigned short)( sptr[1] & 0xff );\r
- ret <<= 8;\r
- ret |= ( sptr[0] & 0xff );\r
- return ret;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _f_setword\r
- *\r
- * set a word 16bit number into a memory (it uses LITTLE ENDIAN mode always)\r
- *\r
- * INPUTS\r
- *\r
- * ptr - where to store data\r
- * num - 16 bit number to store\r
- *\r
- ***************************************************************************/\r
-void _f_setword ( void * ptr, unsigned short num )\r
-{\r
- unsigned char * sptr = (unsigned char *)ptr;\r
-\r
- sptr[1] = (unsigned char)( num >> 8 );\r
- sptr[0] = (unsigned char)( num );\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _f_getlong\r
- *\r
- * get a long 32bit number from a memory (it uses LITTLE ENDIAN mode always)\r
- *\r
- * INPUTS\r
- *\r
- * ptr - pointer where data is\r
- *\r
- * RETURNS\r
- *\r
- * long number\r
- *\r
- ***************************************************************************/\r
-unsigned long _f_getlong ( void * ptr )\r
-{\r
- unsigned char * sptr = (unsigned char *)ptr;\r
- unsigned long ret;\r
-\r
- ret = (unsigned long)( sptr[3] & 0xff );\r
- ret <<= 8;\r
- ret |= ( sptr[2] & 0xff );\r
- ret <<= 8;\r
- ret |= ( sptr[1] & 0xff );\r
- ret <<= 8;\r
- ret |= ( sptr[0] & 0xff );\r
- return ret;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _f_setlong\r
- *\r
- * set a long 32bit number into a memory (it uses LITTLE ENDIAN mode always)\r
- *\r
- * INPUTS\r
- *\r
- * ptr - where to store data\r
- * num - 32 bit number to store\r
- *\r
- ***************************************************************************/\r
-void _f_setlong ( void * ptr, unsigned long num )\r
-{\r
- unsigned char * sptr = (unsigned char *)ptr;\r
-\r
- sptr[3] = (unsigned char)( num >> 24 );\r
- sptr[2] = (unsigned char)( num >> 16 );\r
- sptr[1] = (unsigned char)( num >> 8 );\r
- sptr[0] = (unsigned char)( num );\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _setcharzero\r
- *\r
- * fills with zero charater to memory\r
- *\r
- * INPUTS\r
- *\r
- * num - number of characters\r
- * ptr - where to store data\r
- *\r
- * RETURNS\r
- *\r
- * last write position\r
- *\r
- ***************************************************************************/\r
-unsigned char * _setcharzero ( int num, unsigned char * ptr )\r
-{\r
- while ( num-- )\r
- {\r
- *ptr++ = 0;\r
- }\r
-\r
- return ptr;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _setchar\r
- *\r
- * copy a charater string to memory\r
- *\r
- * INPUTS\r
- *\r
- * array - original code what to copy\r
- * num - number of characters\r
- * ptr - where to store data\r
- *\r
- * RETURNS\r
- *\r
- * last write position\r
- *\r
- ***************************************************************************/\r
-unsigned char * _setchar ( const unsigned char * array, int num, unsigned char * ptr )\r
-{\r
- if ( !array )\r
- {\r
- return _setcharzero( num, ptr );\r
- }\r
-\r
- while ( num-- )\r
- {\r
- *ptr++ = *array++;\r
- }\r
-\r
- return ptr;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _setword\r
- *\r
- * store a 16bit word into memory\r
- *\r
- * INPUTS\r
- *\r
- * num - 16bit number to store\r
- * ptr - where to store data\r
- *\r
- * RETURNS\r
- *\r
- * last write position\r
- *\r
- ***************************************************************************/\r
-unsigned char * _setword ( unsigned short num, unsigned char * ptr )\r
-{\r
- _f_setword( ptr, num );\r
- return ptr + 2;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _setlong\r
- *\r
- * store a 32bit long number into memory\r
- *\r
- * INPUTS\r
- *\r
- * num - 32bit number to store\r
- * ptr - where to store data\r
- *\r
- * RETURNS\r
- *\r
- * last write position\r
- *\r
- ***************************************************************************/\r
-unsigned char * _setlong ( unsigned long num, unsigned char * ptr )\r
-{\r
- _f_setlong( ptr, num );\r
- return ptr + 4;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * _f_toupper\r
- *\r
- * convert a string into lower case\r
- *\r
- * INPUTS\r
- *\r
- * s - input string to convert\r
- *\r
- ***************************************************************************/\r
-char _f_toupper ( char ch )\r
-{\r
- if ( ( ch >= 'a' ) && ( ch <= 'z' ) )\r
- {\r
- return (char)( ch - 'a' + 'A' );\r
- }\r
-\r
- return ch;\r
-}\r
-\r
-\r
-/****************************************************************************\r
- *\r
- * f_igettimedate\r
- *\r
- * INPUTS\r
- * time - pointer to time variable\r
- * date - pointer to date variable\r
- * OUTPUTS\r
- * time - current time\r
- * date - current date\r
- *\r
- * RETURNS\r
- * none\r
- *\r
- ***************************************************************************/\r
-void f_igettimedate ( unsigned short * time, unsigned short * date )\r
-{\r
- t_psp_timedate s_timedate;\r
-\r
- psp_getcurrenttimedate( &s_timedate );\r
-\r
- *time = ( ( (uint16_t)s_timedate.hour << F_CTIME_HOUR_SHIFT ) & F_CTIME_HOUR_MASK )\r
- | ( ( (uint16_t)s_timedate.min << F_CTIME_MIN_SHIFT ) & F_CTIME_MIN_MASK )\r
- | ( ( ( (uint16_t)s_timedate.sec >> 1 ) << F_CTIME_SEC_SHIFT ) & F_CTIME_SEC_MASK );\r
-\r
- *date = ( ( ( s_timedate.year - 1980 ) << F_CDATE_YEAR_SHIFT ) & F_CDATE_YEAR_MASK )\r
- | ( ( (uint16_t)s_timedate.month << F_CDATE_MONTH_SHIFT ) & F_CDATE_MONTH_MASK )\r
- | ( ( (uint16_t)s_timedate.day << F_CDATE_DAY_SHIFT ) & F_CDATE_DAY_MASK );\r
-\r
- return;\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r