⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffs_coat.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
+-----------------------------------------------------------------------------
|  Modul   :  ffs_coat
+-----------------------------------------------------------------------------
|  Copyright 2002 Texas Instruments Berlin, AG
|                 All rights reserved.
|
|                 This file is confidential and a trade secret of Texas
|                 Instruments Berlin, AG
|                 The receipt of or possession of this file does not convey
|                 any rights to reproduce or disclose its contents or to
|                 manufacture, use, or sell anything it may describe, in
|                 whole, or in part, without the specific written consent of
|                 Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
|  Purpose :  Encapsulate the FFS API.
+-----------------------------------------------------------------------------
*/

#ifndef __FFS_COAT_C__
#define __FFS_COAT_C__

/*==== INCLUDES ===================================================*/
#define SAP_ACI

#include "typedefs.h"
#include "pconst.cdg"
#include "prim.h"
#include "vsi.h"
#include <ffs.h>
#include <ffs_coat.h>


/*==== CONSTANTS ==================================================*/

/*==== TYPES ======================================================*/

/*==== CONSTANTS ==================================================*/
//#define FFS_STATE_CHECK
#define FFS_PAR_CHECK
#define FFS_ERR_CHECK

/*==== EXTERNALS ==================================================*/

/*==== VARIABLES ==================================================*/

/*==== MACROS =====================================================*/
#if defined(FFS_STATE_CHECK)
#define _STATE_CHECK(ffs_ret)\
  {ffs_ret=_FFS_StateCheck (_FFS_FCT_NAME,hMMI,file,line);\
   if (ffs_ret NEQ EFFS_OK)return ffs_ret;}
#else /* FFS_PAR_CHECK */
#define _STATE_CHECK(ffs_ret)
#endif /* FFS_PAR_CHECK */

#if defined(FFS_PAR_CHECK)
#define _PAR_CHECK_NULL(parname,parnumber,ret)\
  if (!parname){\
    _FFS_ParCheck ("NULL", _FFS_FCT_NAME, parnumber, hMMI,file, line);\
    return ret;}

#define _PAR_CHECK_LESSZERO(parname,parnumber,ret)\
  if (parname < 0){\
    _FFS_ParCheck ("<0", _FFS_FCT_NAME, parnumber, hMMI,file, line);\
    return ret;}
#else /* FFS_PAR_CHECK */
#define _PAR_CHECK_NULL(parname,parnumber,ret)
#define _PAR_CHECK_LESSZERO(parname,parnumber,ret)
#endif /* FFS_PAR_CHECK */


#if defined(FFS_ERR_CHECK)
#define _ERROR_CHECK(ffs_ret)\
  if (ffs_ret < 0)_FFS_ErrorMsg(NULL, _FFS_FCT_NAME, ffs_ret, hMMI,file, line)
#else  /* FFS_ERR_CHECK */
#define _ERROR_CHECK(ffs_ret)
#endif  /* FFS_ERR_CHECK */

/*==== FUNCTIONS ==================================================*/
#if defined(FFS_COAT_ENABLED)
static  void _FFS_ParCheck (const char * const errmsg, const char * const fct,
                          int parameter,
                          T_HANDLE hMMI, const char * const file, int line);

static  void _FFS_ErrorMsg (const char * const errmsg, const char * const fct,
                          int ffs_ret,
                          T_HANDLE hMMI, const char * const file, int line);

/* FFS functions whose positive return value has a meaning */
T_FFS_FD  _FFS_open(const char *name, T_FFS_OPEN_FLAGS option,
                   T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_open"
T_FFS_FD  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_BADNAME);

  ffs_ret = ffs_open (name, option);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}

T_FFS_SIZE _FFS_write(T_FFS_FD fdi, void *src, T_FFS_SIZE amount,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_write"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (src, 2, EFFS_BADOP);

  ffs_ret = ffs_write (fdi, src, amount);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_read(T_FFS_FD fdi, void *src, T_FFS_SIZE size,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_read"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (src, 2, EFFS_BADOP);

  ffs_ret = ffs_read (fdi, src, size);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_seek(T_FFS_FD fdi, T_FFS_SIZE offset, T_FFS_WHENCE whence,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_seek"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_LESSZERO (offset, 2, EFFS_BADOP);

  ffs_ret = ffs_seek (fdi, offset, whence);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_opendir(const char *name, T_FFS_DIR *dir,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_opendir"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTADIR);
  _PAR_CHECK_NULL (dir, 2, EFFS_NOTADIR);

  ffs_ret = ffs_opendir (name, dir);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_readdir (T_FFS_DIR *dir, char *name, T_FFS_SIZE size,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_readdir"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (dir, 1, EFFS_NOTADIR);
  _PAR_CHECK_NULL (name, 2, EFFS_NOTADIR);
  _PAR_CHECK_LESSZERO (size, 3, EFFS_NOTADIR);

  ffs_ret = ffs_readdir (dir, name, size);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_readlink(const char *name, char *addr, T_FFS_SIZE size,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_readlink"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTAFILE);
  _PAR_CHECK_NULL (addr, 2, EFFS_NOTAFILE);
  _PAR_CHECK_LESSZERO (size, 3, EFFS_FILETOOBIG);

  ffs_ret = ffs_readlink (name, addr, size);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_file_read(const char *name, void *addr, T_FFS_SIZE size,
                       T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_file_read"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTAFILE);
  _PAR_CHECK_NULL (addr, 2, EFFS_NOTAFILE);
  _PAR_CHECK_LESSZERO (size, 3, EFFS_FILETOOBIG);

  ffs_ret = ffs_file_read (name, addr, size);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_SIZE _FFS_fread(const char *name, void *addr, T_FFS_SIZE size,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_fread"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTAFILE);
  _PAR_CHECK_NULL (addr, 2, EFFS_NOTAFILE);
  _PAR_CHECK_LESSZERO (size, 3, EFFS_FILETOOBIG);

  /* ffs_fread is deprecated, use ffs_file_read instead */
  ffs_ret = ffs_file_read (name, addr, size);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}



/* FFS functions which return a value EFFS_OK if OK */
T_FFS_RET _FFS_preformat(UINT16 magic,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_preformat"
T_FFS_SIZE  ffs_ret;

  ffs_ret = ffs_preformat (magic);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_format(const char *name, UINT16 magic,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_format"
T_FFS_SIZE  ffs_ret;

  _PAR_CHECK_NULL (name, 1, EFFS_BADNAME);

  ffs_ret = ffs_format (name, magic);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_close(T_FFS_FD fdi,
                   T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_close"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);

  ffs_ret = ffs_close (fdi);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_truncate(const char *path, T_FFS_OFFSET length,
                     T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_truncate"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (path, 1, EFFS_NOTFOUND);
  _PAR_CHECK_LESSZERO (length, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_truncate (path, length);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_ftruncate(T_FFS_FD fdi, T_FFS_OFFSET length,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_ftruncate"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (fdi, 1, EFFS_BADFD);
  _PAR_CHECK_LESSZERO (length, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_ftruncate (fdi, length);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_fdatasync(T_FFS_FD fdi,
                      T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_fdatasync"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (fdi, 1, EFFS_BADFD);

  ffs_ret = ffs_fdatasync (fdi);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_stat(const char *name, T_FFS_STAT *stat,
                  T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_stat"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTFOUND);
  _PAR_CHECK_NULL (stat, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_stat (name, stat);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_fstat(T_FFS_FD fdi, T_FFS_STAT *stat,
                   T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_fstat"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (fdi, 1, EFFS_BADFD);
  _PAR_CHECK_NULL (stat, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_fstat (fdi, stat);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_lstat(const char *name, T_FFS_STAT *stat,
                   T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_lstat"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTFOUND);
  _PAR_CHECK_NULL (stat, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_lstat (name, stat);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_xlstat(const char *name, T_FFS_XSTAT *stat,
                    T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_xlstat"
T_FFS_SIZE  ffs_ret;

  _STATE_CHECK (ffs_ret);
  _PAR_CHECK_NULL (name, 1, EFFS_NOTFOUND);
  _PAR_CHECK_NULL (stat, 2, EFFS_NOTFOUND);

  ffs_ret = ffs_xlstat (name, stat);
  _ERROR_CHECK (ffs_ret);

  return ffs_ret;
#undef   _FFS_FCT_NAME
}


T_FFS_RET _FFS_linkstat(const char *name, T_FFS_STAT *stat,
                     T_HANDLE hMMI, const char * const file, int line)
{
#define   _FFS_FCT_NAME "ffs_linkstat"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -