nidas v1.2.3
PIP_Serial.h
Go to the documentation of this file.
1// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4; -*-
2// vim: set shiftwidth=4 softtabstop=4 expandtab:
3/*
4 ********************************************************************
5 ** NIDAS: NCAR In-situ Data Acquistion Software
6 **
7 ** 2007, Copyright University Corporation for Atmospheric Research
8 **
9 ** This program is free software; you can redistribute it and/or modify
10 ** it under the terms of the GNU General Public License as published by
11 ** the Free Software Foundation; either version 2 of the License, or
12 ** (at your option) any later version.
13 **
14 ** This program is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ** GNU General Public License for more details.
18 **
19 ** The LICENSE.txt file accompanying this software contains
20 ** a copy of the GNU General Public License. If it is not found,
21 ** write to the Free Software Foundation, Inc.,
22 ** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 **
24 ********************************************************************
25*/
26
27#ifndef NIDAS_DYNLD_RAF_PIP_SERIAL_H
28#define NIDAS_DYNLD_RAF_PIP_SERIAL_H
29
30#include "SppSerial.h"
32#include <iostream>
33
34namespace nidas { namespace dynld { namespace raf {
35
41{
42public:
43
44 PIP_Serial();
45
46 void validate();
47
48 void sendInitString();
49
50 bool process(const Sample* samp,std::list<const Sample*>& results);
51
52 static const size_t N_PIP_CHANNELS = 62;
53 static const size_t N_PIP_HSKP = 16;
54
55 // Packet to initialize probe with.
57 {
58 unsigned char esc; // ESC 0x1b
59 unsigned char id; // cmd id
62 unsigned char pSizeDim; // ParticleSizingDimension
63 unsigned char rc; // recovery coefficient
65 };
66
67 static const int _InitPacketSize = 10;
68 static const int _setTimePacketSize = 8;
69
78 {
79 unsigned char esc;
80 unsigned char id; // ESC 0x1b id =0x02
85 };
86
87 static const int _SendDataPacketSize = 12;
89 {
90 unsigned char esc;
91 unsigned char id; //5
92 unsigned char sec; //sec/milisec may need to be swapped
93 unsigned char milisec;
94 unsigned char hour; //hour/min may need to be swapped
95 unsigned char min;
96 //DMT_UShort secMili; //seconds and miliseconds
97 // DMT_UShort hourMin; //set hour and min
99 };
100
104 struct PIP_blk
105 {
106 unsigned char header1;
107 unsigned char header2;
115// mixing types here to see what actually comes out of all this
116// unsigned char sec; //sec/milisec may need to be swapped
117// unsigned char milisec;
118 DMT_UShort SecMili; //Seconds and Milliseconds
119 unsigned char hour; // hour/min may need to be swapped
120 unsigned char min;
121 // DMT_UShort SecMili; //Seconds and Milliseconds
122 // DMT_UShort HourMin; //Hour and minute
126 unsigned char trailer1;
127 unsigned char trailer2;
128 };
129
130
134 virtual void
135 derivedDataNotify(const nidas::core:: DerivedDataReader * s)
136 throw();
140 void open(int flags);
141
142 void close();
143
144protected:
145
146 int packetLen() const {
147 return (180); //use _nChannels if binCount ends up being variable
148 }
149
153 void sendTimePacket();
154
155 int appendDataAndFindGood(const Sample* sample);
156
157 // These are instantiated in .cc, used for indexing into the housekeeping array
160
161 unsigned short _dofReject;
162 unsigned short _airspeedSource;
163
168};
169
170}}} // namespace nidas namespace dynld raf
171
172#endif
Interface of a DerivedDataClient of the DerivedDataReader.
Definition DerivedDataClient.h:37
Interface to a data sample.
Definition Sample.h:190
A class for reading DMT PIP/CIP probe histogram data.
Definition PIP_Serial.h:41
PIP_Serial()
Definition PIP_Serial.cc:56
static const size_t REJDOF
Definition PIP_Serial.h:159
static const size_t PIPLSRP
Definition PIP_Serial.h:159
static const int _SendDataPacketSize
Definition PIP_Serial.h:87
static const size_t PIPEDV64
Definition PIP_Serial.h:158
void validate()
Implementation of DSMSensor::validate for a Character Sensor.
Definition PIP_Serial.cc:88
int appendDataAndFindGood(const Sample *sample)
Append _packetLen bytes of data to _waitingData, and find the earliest "good" record possible,...
Definition PIP_Serial.cc:262
static const size_t REJEND
Definition PIP_Serial.h:159
unsigned short _airspeedSource
Definition PIP_Serial.h:162
void sendTimePacket()
Set probe time.
Definition PIP_Serial.cc:120
static const size_t PIPEDV32
Definition PIP_Serial.h:158
static const size_t REJOFLOW
Definition PIP_Serial.h:159
static const size_t N_PIP_HSKP
Definition PIP_Serial.h:53
static const size_t PIPPS
Definition PIP_Serial.h:158
static const size_t PIPEDV0
Definition PIP_Serial.h:158
static const size_t PIPRT
Definition PIP_Serial.h:159
static const size_t PIPRH
Definition PIP_Serial.h:159
float _trueAirSpeed
True air speed, received from IWGADTS feed.
Definition PIP_Serial.h:167
static const size_t PIPLWCSLV
Definition PIP_Serial.h:158
static const int _setTimePacketSize
Definition PIP_Serial.h:68
static const size_t PIPQC
Definition PIP_Serial.h:158
bool process(const Sample *samp, std::list< const Sample * > &results)
Process a raw sample, which in this case means do a sscanf on the character string contents,...
Definition PIP_Serial.cc:188
static const size_t PIPCBTMP
Definition PIP_Serial.h:159
static const int _InitPacketSize
Definition PIP_Serial.h:67
static const size_t PIPLSRC
Definition PIP_Serial.h:159
void sendInitString()
Definition PIP_Serial.cc:151
void open(int flags)
open the sensor and perform any intialization to the driver.
Definition PIP_Serial.cc:337
unsigned short _dofReject
Definition PIP_Serial.h:161
static const size_t PIPLWC
Definition PIP_Serial.h:158
static const size_t N_PIP_CHANNELS
Definition PIP_Serial.h:52
virtual void derivedDataNotify(const nidas::core::DerivedDataReader *s)
PIP has dynamic TAS.
Definition PIP_Serial.cc:361
int packetLen() const
Return the expected data packet length in bytes based on the number of channels being used.
Definition PIP_Serial.h:146
void close()
close my associated device.
Definition PIP_Serial.cc:352
Base class for many DMT Probes, including SPP100, SPP200, SPP300 and the CDP.
Definition SppSerial.h:100
unsigned char DMT_ULong[4]
DMT 4-byte ints are packed with byte order 2301, where byte 0 is the low-order byte.
Definition SppSerial.h:78
unsigned char DMT_UShort[2]
DMT 2-byte ints are packed with byte order 01, where byte 0 is the low-order byte.
Definition SppSerial.h:52
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31
unsigned char esc
Definition PIP_Serial.h:58
unsigned char id
Definition PIP_Serial.h:59
unsigned char rc
Definition PIP_Serial.h:63
DMT_UShort dofRej
Definition PIP_Serial.h:61
unsigned char pSizeDim
Definition PIP_Serial.h:62
DMT_UShort chksum
Definition PIP_Serial.h:64
DMT_UShort airspeedSource
Definition PIP_Serial.h:60
Data packet back from probe.
Definition PIP_Serial.h:105
DMT_UShort oversizeReject
Definition PIP_Serial.h:109
unsigned char trailer1
Definition PIP_Serial.h:126
DMT_UShort DOFRejectCount
Definition PIP_Serial.h:111
unsigned char header2
Definition PIP_Serial.h:107
unsigned char header1
Definition PIP_Serial.h:106
DMT_UShort ParticleCounter
Definition PIP_Serial.h:114
unsigned char hour
Definition PIP_Serial.h:119
DMT_UShort SecMili
Definition PIP_Serial.h:118
DMT_UShort hostSyncCounter
Definition PIP_Serial.h:123
unsigned char trailer2
Definition PIP_Serial.h:127
DMT_UShort chksum
Definition PIP_Serial.h:125
DMT_UShort housekeeping[N_PIP_HSKP]
Definition PIP_Serial.h:113
DMT_UShort resetFlag
Definition PIP_Serial.h:124
DMT_UShort EndRejectCount
Definition PIP_Serial.h:112
DMT_UShort packetByteCount
Definition PIP_Serial.h:108
DMT_UShort binCount[N_PIP_CHANNELS]
Definition PIP_Serial.h:110
unsigned char min
Definition PIP_Serial.h:120
Packet sent to probe to begin sending data.
Definition PIP_Serial.h:78
DMT_UShort hostSyncCounter
Definition PIP_Serial.h:81
DMT_ULong PASCoefficient
Definition PIP_Serial.h:82
DMT_UShort chksum
Definition PIP_Serial.h:84
unsigned char id
Definition PIP_Serial.h:80
unsigned char esc
Definition PIP_Serial.h:79
DMT_UShort relayControl
Definition PIP_Serial.h:83
unsigned char esc
Definition PIP_Serial.h:90
DMT_UShort chksum
Definition PIP_Serial.h:98
unsigned char min
Definition PIP_Serial.h:95
unsigned char id
Definition PIP_Serial.h:91
unsigned char hour
Definition PIP_Serial.h:94
unsigned char sec
Definition PIP_Serial.h:92
unsigned char milisec
Definition PIP_Serial.h:93