F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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)