00001
00002
00003
00004
00005
00006
00007
00008 #ifndef INC_BBD_H
00009 #define INC_BBD_H
00010
00011 #include "vxWorks.h"
00012 #include "semLib.h"
00013
00014
00015
00016 typedef enum
00017 {
00018 BBD_NULL = 0,
00019
00020 BBD_MULT_READER = 2,
00021 BBD_SOLE_WRITER = 3,
00022 BBD_MULT_WRITER = 4
00023 }
00024 BBD_TYPE;
00025
00026
00027 typedef enum
00028 {
00029 BBD_PLAIN_READ = 1,
00030 BBD_FRESH_READ = 2,
00031 BBD_SPY_READ = 3
00032 }
00033 BBD_READ_TYPE;
00034
00035 typedef enum
00036 {
00037 BBD_PLAIN_WRITE = 1,
00038 BBD_WAIT_WRITE = 2
00039 }
00040 BBD_WRITE_TYPE;
00041
00042 typedef void *BBD;
00043
00044
00045 #ifdef __STDC__
00046
00047 IMPORT BBD bbdConnect (char *bbdName, BBD_TYPE bbdType, int bbdSize);
00048 IMPORT STATUS bbdRead (BBD id, void *data, BBD_READ_TYPE readType,
00049 int timeout);
00050 IMPORT STATUS bbdClear (BBD id);
00051 IMPORT STATUS bbdWrite (BBD id, void *data, BBD_WRITE_TYPE writeType, ...);
00052
00053 IMPORT STATUS bbdDelete (BBD id);
00054 IMPORT char *bbdName (BBD id);
00055 IMPORT BBD bbdNameToId (char *name);
00056 IMPORT STATUS bbdShow (BBD id, char *name);
00057
00058 #else
00059
00060 IMPORT BBD bbdConnect ();
00061 IMPORT int bbdRead ();
00062 IMPORT int bbdClear ();
00063 IMPORT int bbdWrite ();
00064 IMPORT STATUS bbdDelete ();
00065 IMPORT char *bbdName ();
00066 IMPORT BBD bbdNameToId ();
00067 IMPORT int bbdShow ();
00068
00069 #endif
00070
00071
00072 #define BBD_NAME_SIZE 100
00073
00074 typedef struct bbdWriter
00075 {
00076 BBD_TYPE type;
00077 SEM_ID sem;
00078 char name[BBD_NAME_SIZE];
00079 char *buf;
00080 int size;
00081 int writeCnt;
00082 int readCnt;
00083 SEM_ID waitingToWriteSem;
00084 SEM_ID waitingToReadSem;
00085
00086
00087 int taskId;
00088 struct bbdReader *readers;
00089 struct bbdWriter *next;
00090 }
00091 BBD_WRITER;
00092
00093 typedef struct bbdReader
00094 {
00095 BBD_TYPE type;
00096 BBD_WRITER *bbd;
00097 int readCnt;
00098 int taskId;
00099 struct bbdReader *next;
00100 }
00101 BBD_READER;
00102
00103
00104 #endif
00105