F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
BufferLogger.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title BufferLogger.hpp
3 // \author bocchino, dinkel, mereweth
4 // \brief Svc Buffer Logger interface
5 //
6 // \copyright
7 // Copyright (C) 2015-2017 California Institute of Technology.
8 // ALL RIGHTS RESERVED. United States Government Sponsorship
9 // acknowledged.
10 //
11 // ======================================================================
12 
13 #ifndef Svc_BufferLogger_HPP
14 #define Svc_BufferLogger_HPP
15 
17 #include "Os/File.hpp"
19 #include "Fw/Types/Assert.hpp"
20 #include "Os/Mutex.hpp"
21 #include "Utils/Hash/Hash.hpp"
22 
23 namespace Svc {
24 
25  class BufferLogger :
27  {
28 
29  PRIVATE:
30 
31  // ----------------------------------------------------------------------
32  // Types
33  // ----------------------------------------------------------------------
34 
36  class File {
37 
38  public:
39 
41  struct Mode {
42  typedef enum {
43  CLOSED = 0,
44  OPEN = 1
45  } t;
46  };
47 
48  public:
49 
52  BufferLogger& bufferLogger
53  );
54 
56  ~File(void);
57 
58  public:
59 
61  void init(
62  const char *const prefix,
63  const char *const suffix,
64  const U32 maxSize,
65  const U8 sizeOfSize
66  );
67 
71  );
72 
74  void logBuffer(
75  const U8 *const data,
76  const U32 size
77  );
78 
80  void closeAndEmitEvent(void);
81 
83  bool flush(void);
84 
86 
88  void open(void);
89 
93  const U8 *const data,
94  const U32 size
95  );
96 
99  bool writeSize(
100  const U32 size
101  );
102 
106  const void *const data,
107  const U32 length
108  );
109 
111  void writeHashFile(void);
112 
114  void close(void);
115 
117 
119  BufferLogger& bufferLogger;
120 
123 
126 
129 
132 
134  U32 maxSize;
135 
138 
141 
142  // The current mode
143  Mode::t mode;
144 
147 
150 
151  }; // class File
152 
153  public:
154 
155  // ----------------------------------------------------------------------
156  // Construction, initialization, and destruction
157  // ----------------------------------------------------------------------
158 
160  BufferLogger(
161  const char *const compName
162  );
163 
165  void init(
166  const NATIVE_INT_TYPE queueDepth,
167  const NATIVE_INT_TYPE instance
168  );
169 
170  // ----------------------------------------------------------------------
171  // Public methods
172  // ----------------------------------------------------------------------
173 
175  void initLog(
176  const char *const logFilePrefix,
177  const char *const logFileSuffix,
178  const U32 maxFileSize,
179  const U8 sizeOfSize
180  );
181 
183 
184  // ----------------------------------------------------------------------
185  // Handler implementations for user-defined typed input ports
186  // ----------------------------------------------------------------------
187 
190  void bufferSendIn_handler(
191  const NATIVE_INT_TYPE portNum,
193  );
194 
197  void comIn_handler(
198  const NATIVE_INT_TYPE portNum,
199  Fw::ComBuffer &data,
200  U32 context
201  );
202 
205  void pingIn_handler(
206  const NATIVE_INT_TYPE portNum,
207  U32 key
208  );
209 
212  void schedIn_handler(
213  const NATIVE_INT_TYPE portNum,
214  NATIVE_UINT_TYPE context
215  );
216 
218 
219  // ----------------------------------------------------------------------
220  // Command handler implementations
221  // ----------------------------------------------------------------------
222 
225  void BL_OpenFile_cmdHandler(
226  const FwOpcodeType opCode,
227  const U32 cmdSeq,
229  );
230 
234  const FwOpcodeType opCode,
235  const U32 cmdSeq
236  );
237 
241  const FwOpcodeType opCode,
242  const U32 cmdSeq,
243  LogState state
244  );
245 
249  const FwOpcodeType opCode,
250  const U32 cmdSeq
251  );
252 
254 
255  // ----------------------------------------------------------------------
256  // Private instance variables
257  // ----------------------------------------------------------------------
258 
260  LogState m_state;
261 
264 
265  };
266 
267 }
268 
269 #endif
Svc::BufferLogger::BufferLogger
BufferLogger(const char *const compName)
Create a BufferLogger object.
Definition: BufferLogger.cpp:22
Svc::BufferLogger::setBaseName
void setBaseName(const Fw::EightyCharString &baseName)
Set base file name.
Svc::BufferLogger::osFile
Os::File osFile
The underlying Os::File representation.
Definition: BufferLogger.hpp:146
PRIVATE
#define PRIVATE
overridable private for unit testing
Definition: BasicTypes.hpp:118
Svc::BufferLogger::close
void close(void)
Close the file.
Svc::BufferLogger::maxSize
U32 maxSize
The maximum file size.
Definition: BufferLogger.hpp:134
Svc::BufferLogger::closeAndEmitEvent
void closeAndEmitEvent(void)
Close the file and emit an event.
U8
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.hpp:76
Svc::BufferLogger::File
File(BufferLogger &bufferLogger)
Construct a File object.
Fw::EightyCharString
Definition: EightyCharString.hpp:10
Svc::BufferLoggerComponentBase::portNum
PRIVATE NATIVE_INT_TYPE portNum
Definition: BufferLoggerComponentAc.hpp:947
Fw::Buffer
Definition: BufferSerializableAc.hpp:24
Fw::CmdStringArg
Definition: CmdString.hpp:11
Assert.hpp
Svc::BufferLogger::initLog
void initLog(const char *const logFilePrefix, const char *const logFileSuffix, const U32 maxFileSize, const U8 sizeOfSize)
Set up log file parameters.
Definition: BufferLogger.cpp:45
Svc::BufferLogger
Definition: BufferLogger.hpp:27
EightyCharString.hpp
Svc::BufferLogger::comIn_handler
void comIn_handler(const NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Definition: BufferLogger.cpp:74
Svc::BufferLogger::writeHashFile
void writeHashFile(void)
Write a hash file.
Fw::ObjBase::init
void init(void)
Object initializer.
Definition: ObjBase.cpp:26
Svc::BufferLogger::logBuffer
void logBuffer(const U8 *const data, const U32 size)
Log a buffer.
Svc::BufferLogger::BL_CloseFile_cmdHandler
void BL_CloseFile_cmdHandler(const FwOpcodeType opCode, const U32 cmdSeq)
Definition: BufferLogger.cpp:119
BufferLoggerComponentAc.hpp
Svc::BufferLogger::flush
bool flush(void)
Flush the file.
Svc::BufferLogger::name
Fw::EightyCharString name
The name of the currently open file.
Definition: BufferLogger.hpp:140
Svc::BufferLogger::mode
Mode::t mode
Definition: BufferLogger.hpp:143
Hash.hpp
Svc::BufferLogger::cmdSeq
PRIVATE const U32 cmdSeq
Definition: BufferLogger.hpp:227
Svc::BufferLogger::fwBuffer
PRIVATE Fw::Buffer & fwBuffer
Definition: BufferLogger.hpp:193
FwOpcodeType
#define FwOpcodeType
Type representation for a command opcode.
Definition: FpConfig.hpp:62
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Svc::BufferLogger::writeBuffer
bool writeBuffer(const U8 *const data, const U32 size)
Svc::BufferLogger::fileCounter
NATIVE_UINT_TYPE fileCounter
The counter to use for the same file name.
Definition: BufferLogger.hpp:131
File.hpp
Svc::BufferLogger::file
PRIVATE const U32 const Fw::CmdStringArg & file
Definition: BufferLogger.hpp:229
Svc::BufferLoggerComponentBase::LogState
PROTECTED LogState_MAX LogState
Definition: BufferLoggerComponentAc.hpp:610
Svc::BufferLogger::baseName
Fw::EightyCharString baseName
The file name base.
Definition: BufferLogger.hpp:128
Svc::BufferLogger::writeBytes
bool writeBytes(const void *const data, const U32 length)
Svc::BufferLogger::bytesWritten
U32 bytesWritten
The number of bytes written to the current file.
Definition: BufferLogger.hpp:149
Svc
Definition: ActiveLoggerComponentAc.cpp:22
Svc::BufferLogger::BL_SetLogging_cmdHandler
void BL_SetLogging_cmdHandler(const FwOpcodeType opCode, const U32 cmdSeq, LogState state)
Definition: BufferLogger.cpp:129
Svc::BufferLogger::~File
~File(void)
Destroy a File object.
Mutex.hpp
Svc::BufferLogger::schedIn_handler
void schedIn_handler(const NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Definition: BufferLogger.cpp:94
Svc::BufferLogger::sizeOfSize
U8 sizeOfSize
The number of bytes to use when storing the size field at the start of each buffer.
Definition: BufferLogger.hpp:137
Svc::BufferLoggerComponentBase
Auto-generated base for BufferLogger component.
Definition: BufferLoggerComponentAc.hpp:51
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Svc::BufferLogger::m_file
File m_file
The file.
Definition: BufferLogger.hpp:263
Svc::BufferLogger::BL_FlushFile_cmdHandler
void BL_FlushFile_cmdHandler(const FwOpcodeType opCode, const U32 cmdSeq)
Definition: BufferLogger.cpp:143
Fw::ComBuffer
Definition: ComBuffer.hpp:21
Svc::BufferLogger::suffix
Fw::EightyCharString suffix
The suffix to use for file names.
Definition: BufferLogger.hpp:125
Svc::BufferLogger::prefix
Fw::EightyCharString prefix
The prefix to use for file names.
Definition: BufferLogger.hpp:122
Svc::BufferLogger::pingIn_handler
void pingIn_handler(const NATIVE_INT_TYPE portNum, U32 key)
Definition: BufferLogger.cpp:88
Os::File
Definition: File.hpp:11
Svc::BufferLogger::init
void init(const char *const prefix, const char *const suffix, const U32 maxSize, const U8 sizeOfSize)
Set File object parameters.
Svc::BufferLogger::writeSize
bool writeSize(const U32 size)