f87ca9819b41e4c91cd3f8597d76cf0f065bb9f0
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

1) /* Blinker
2)    Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4)    a blinkenarea.org project */
5) 
6) #include <iostream>
7) #include <stdlib.h>
8) #include <string>
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

9) #include <string.h>
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

10) 
11) #include <BlinkenLib/BlinkenFrame.h>
12) 
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

13) #include "CallMgr.h"
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

14) #include "Directory.h"
15) #include "File.h"
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

16) #include "Module.h"
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

17) #include "Printer.h"
18) #include "SettingFile.h"
19) #include "StreamMgr.h"
20) #include "StreamRecv.h"
21) 
22) namespace Blinker {
23) 
24) /**
25)  * @brief constructor
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

26)  * @param[in] callMgr callback manager
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

27)  * @param[in] streamMgr stream manager
28)  * @param[in] dirBase base directory
29)  */
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

30) Printer::Printer(CallMgr &callMgr, StreamMgr &streamMgr,
31)                  const Directory &dirBase):
32)   Module(callMgr, streamMgr, dirBase),
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

33)   m_fileInStream(dirBase.getFile("instream")),
34)   m_pInStream(NULL)
35) {
Stefan Schuermans implemented automatic check...

Stefan Schuermans authored 13 years ago

36)   // get input stream and attach to it
37)   getInStream();
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

38) }
39) 
40) /// virtual destructor
41) Printer::~Printer()
42) {
Stefan Schuermans implemented automatic check...

Stefan Schuermans authored 13 years ago

43)   // detach from input stream and release it
44)   releaseInStream();
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

45) }
46) 
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

47) /// check for update of configuration
48) void Printer::updateConfig()
49) {
Stefan Schuermans implemented automatic check...

Stefan Schuermans authored 13 years ago

50)   // input stream name file was modified -> re-get input stream
51)   if (m_fileInStream.checkModified()) {
52)     releaseInStream();
53)     getInStream();
54)   }
Stefan Schuermans implemented base class for...

Stefan Schuermans authored 13 years ago

55) }
56) 
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

57) /**
58)  * @brief set current frame
Stefan Schuermans added stream name to stream...

Stefan Schuermans authored 12 years ago

59)  * @param[in] stream stream name
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

60)  * @param[in] pFrame current frame (NULL for none)
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

61)  */
Stefan Schuermans added stream name to stream...

Stefan Schuermans authored 12 years ago

62) void Printer::setFrame(const std::string &stream, stBlinkenFrame *pFrame)
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

63) {
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

64)   if (pFrame) {
65)     char *str = BlinkenFrameToString(pFrame);
66)     for (int i = strlen(str) - 2; i >= 0 && str[i] != '\n'; --i)
67)       str[i] = 0; // remove last line (delay)
68)     std::cout << "frame" << std::endl << str;
69)     free(str);
70)   } else {
71)     std::cout << "no frame" << std::endl;
72)   }
Stefan Schuermans added stream name to stream...

Stefan Schuermans authored 12 years ago

73)   (void)stream; // unused
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

74) }
75) 
Stefan Schuermans implemented automatic check...

Stefan Schuermans authored 13 years ago

76) /// get input stream and attach to it
77) void Printer::getInStream()
78) {
79)   // get input stream
80)   m_fileInStream.getStr(m_nameInStream);
81)   m_pInStream = &m_streamMgr.refStream(m_nameInStream);
82) 
83)   // attach to input stream
84)   if (m_pInStream)
85)     m_pInStream->attach(this);
86) }
87) 
88) /// detach from input stream and release it
89) void Printer::releaseInStream()
90) {
91)   // detach from input stream
92)   if (m_pInStream)
93)     m_pInStream->detach(this);
94) 
95)   // unreference stream
96)   m_pInStream = NULL;
97)   m_streamMgr.unrefStream(m_nameInStream);
98) }
99)