view src/g23m-aci/aci/db_int.h @ 196:5f3544fc0308

AT@SPENH brought over from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 24 May 2020 19:46:18 +0000
parents d393cd9bb723
children
line wrap: on
line source

/* 
+----------------------------------------------------------------------------- 
|  Project :  PHB
|  Modul   :  DBM
+----------------------------------------------------------------------------- 
|  Copyright 2005 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 :  Internal declarations for DBM module
+----------------------------------------------------------------------------- 
*/ 
#ifndef DB_INT_H
#define DB_INT_H

#include "db.h"

/* This macro allows us to close the file before
   returning from function */
#define FFS_OPEN_PROBLEM_PATCH

/* If this macro is activated, we close earlier activated file
   before opening next file */
#define FFS_CLOSE_BEFORE_OPEN

/* Mutually exclusive macros */
#ifdef FFS_CLOSE_BEFORE_OPEN
#undef FFS_OPEN_PROBLEM_PATCH
#endif

#ifdef FFS_CLOSE_BEFORE_OPEN

  #define MAX_OPEN_READ_PER_DB 2
  #define MAX_OPEN_WRITE_PER_DB 1

#endif

#ifdef _SIMULATION_
  #include "ffs_pc_api.h"
#else
  #include "ffs/ffs.h"
#endif

#include "vsi.h"
#include "aci_mem.h"

#define RECORD_BITMAP_SIZE      32  /* Based on MAX_NUM_RECORDS 
                                        RECORD_BITMAP_SIZE = MAX_NUM_RECORDS/8*/
#define MAX_LEN_DIRECTORY       16  /* Assumed to be max 16 characters        */


/* 
    DBM state 
 */
typedef enum
{
  
  DBM_NOT_INITIALISED = 0, 
  DBM_INITIALISED 

} T_DBM_STATE;

/* 
    Database state 
*/
typedef enum
{ 

  CLOSED = 0, 
  OPEN,
  IN_USE,
  UNUSED_ENTRY = 0xFF

} T_DB_STATE;

#ifdef FFS_CLOSE_BEFORE_OPEN

typedef struct
{

  UBYTE    fld_ctr;
  T_FFS_FD filehandle;

} FileHandleRecord;

#endif

/* 
    Field record
 */
typedef struct
{

  USHORT    FieldID;                                /* Elementary file identifier                           */
  T_DB_TYPE DBType;                                 /* database type (UNMANAGED, FREELIST)                  */
  USHORT    RecordSize;                             /* Size of data in data base record                     */
  UBYTE     NumOfRecords;                           /* Number of records                                    */
  UBYTE     UsedRecords;                            /* Number of used records                               */
  UBYTE     RecordBitMap [RECORD_BITMAP_SIZE];      /* Bitmap representing whether record is present or not */
  BOOL      Clean;                                  /* File consistency                                     */
  UBYTE     SortIndexList [MAX_NUM_OF_SORT_INDEXS]; /* Number of associated index files                     */
  UBYTE*    SortedLists [MAX_NUM_OF_SORT_INDEXS];   /* Sorted lists                                         */

#ifndef FFS_CLOSE_BEFORE_OPEN
  T_FFS_FD  FFSFileHandle;                          /* FFS File Handle for User file                        */
#endif

  UBYTE     NextRecordNum;                          /* To take care of non-seqential write                  */

} T_DBM_FIELDRECORD;


typedef struct 
{

  UBYTE               DBDirectory[MAX_LEN_DIRECTORY]; /* Directory path                                       */
  UBYTE               NumOfFiles;                     /* Maximum files in that database                       */
  UBYTE               UsedFiles;                      /* Number of used files                                 */
  BOOL                Clean;                          /* Clean: Database is consistent                        */
  BOOL                Tracked;                        /* Tracked: History log to be maintained                */
  T_DB_STATE          DBState;                        /* Database state                                       */

  T_FFS_FD            FFSFileHandle;                  /* FFS File Handle for DD_<db_handle>                   */

#ifdef FFS_CLOSE_BEFORE_OPEN
  FileHandleRecord READ_OPEN_FIELDS [MAX_OPEN_READ_PER_DB];   /* fields opened for read only                  */
  FileHandleRecord WRITE_OPEN_FIELDS [MAX_OPEN_WRITE_PER_DB]; /* fields opened for read/write both            */
  UBYTE  old_read;                                            /* remeber oldest open                          */
  UBYTE  old_write;                                           /* remeber oldest read                          */
#endif

  T_DBM_FIELDRECORD*  ptrFieldRecord;                 /* pointer to fields                                    */

} T_DBM_MASTERRECORD;

#endif