nidas v1.2.3
Classes | Functions | Variables
sing.cc File Reference
#include <nidas/util/SerialPort.h>
#include <nidas/util/SerialOptions.h>
#include <nidas/util/Thread.h>
#include <nidas/util/UTime.h>
#include <nidas/util/util.h>
#include <nidas/util/auto_ptr.h>
#include <vector>
#include <cstring>
#include <memory>
#include <iostream>
#include <iomanip>
#include <assert.h>
#include <limits.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <cstdlib>
#include <math.h>
#include <stdio.h>
#include <stdint.h>

Classes

class  Sender
 
class  Receiver
 
class  ModemLineSetter
 
class  ModemLineMonitor
 

Functions

static uint32_t cksum (const unsigned char *input, size_t len)
 
int usage (const char *argv0)
 
int parseRunstring (int argc, char **argv)
 
void openPort ()
 
static void sigAction (int sig, siginfo_t *siginfo, void *)
 
static void setupSignals ()
 
int main (int argc, char **argv)
 
static int __attribute__ ((__unused__)) cksum_test(int
 
 if (! fp)
 
 fclose (fp)
 
 printf ("%u %08x %d\n", crc, crc, len)
 

Variables

static float rate = -1.0
 
static bool isSender = true
 
static bool ascii = false
 
static int dataSize = 0
 
static unsigned int nPacketsOut = 999998
 
static string defaultTermioOpts = "9600n81lnr"
 
static string termioOpts = defaultTermioOpts
 
static string device
 
static bool verbose = false
 
static int timeoutSecs = 0
 
static int interrupted = 0
 
static unsigned int periodMsec = 0
 
static bool testModemLines = false
 
static n_u::SerialPort port
 
static string shortName
 
const int START_OF_DATA = 23
 Format of test packet:
 
const int LENGTH_OF_CRC = 8
 
const int MIN_PACKET_LENGTH = START_OF_DATA + LENGTH_OF_CRC + 1
 
int MAX_PACKET_LENGTH = 65535
 
int MAX_DATA_LENGTH = MAX_PACKET_LENGTH - MIN_PACKET_LENGTH
 
char ETX = '\x04'
 
unsigned int EOF_NPACK = 999999
 
static uint32_t const crctab [256]
 
static int char **FILE * fp = fopen("cksum.c","r")
 
int len = fread(buf,1,sizeof(buf),fp)
 
uint32_t crc = cksum(buf,len)
 
 return
 

Function Documentation

◆ __attribute__()

static int __attribute__ ( (__unused__) )
static

◆ cksum()

static uint32_t cksum ( const unsigned char * input,
size_t len )
static

◆ fclose()

fclose ( fp )

◆ if()

if ( ! fp)

◆ main()

int main ( int argc,
char ** argv )

◆ openPort()

void openPort ( )

◆ parseRunstring()

int parseRunstring ( int argc,
char ** argv )

◆ printf()

printf ( "%u %08x %d\n" ,
crc ,
crc ,
len  )

◆ setupSignals()

static void setupSignals ( )
static

References sigAction().

Referenced by main().

◆ sigAction()

static void sigAction ( int sig,
siginfo_t * siginfo,
void *  )
static

References interrupted.

Referenced by setupSignals().

◆ usage()

int usage ( const char * argv0)

References defaultTermioOpts.

Referenced by parseRunstring().

Variable Documentation

◆ ascii

bool ascii = false
static

Referenced by main(), and parseRunstring().

◆ crc

uint32_t crc = cksum(buf,len)

◆ crctab

uint32_t const crctab[256]
static

Referenced by cksum().

◆ dataSize

int dataSize = 0
static

Referenced by main(), openPort(), and parseRunstring().

◆ defaultTermioOpts

string defaultTermioOpts = "9600n81lnr"
static

Referenced by usage().

◆ device

string device
static

◆ EOF_NPACK

unsigned int EOF_NPACK = 999999

◆ ETX

char ETX = '\x04'

◆ fp

int char** FILE* fp = fopen("cksum.c","r")

Referenced by nidas::core::DSMSensor::applyConversions(), nidas::dynld::isff::NCAR_TRH::convertVariable(), copy_variables_to_record(), nidas::dynld::ParoSci_202BG_P::createPressureSample(), div_10(), nidas::core::SampleAverager::flush(), nidas::util::Process::getVMemSize(), nidas::core::DerivedDataReader::parseIWGADTS(), PacketReader::parseRunstring(), nidas::dynld::IR104_Relays::process(), nidas::dynld::iss::WICORSensor::process(), nidas::dynld::DSC_Event::process(), nidas::dynld::DSC_FreqCounter::process(), nidas::dynld::DSC_PulseCounter::process(), nidas::dynld::ParoSci_202BG_T::process(), nidas::dynld::raf::DSMAnalogSensor::process(), nidas::dynld::A2DSensor::process(), nidas::dynld::raf::DSMAnalogSensor::readFilterFile(), TeeI2C::readNMEAFile(), nidas::core::SampleAverager::receive(), nidas::dynld::AsciiOutput::receive(), nidas::dynld::raf::CVIOutput::receive(), nidas::dynld::raf::DSMMesaSensor::selectfiletype(), nidas::dynld::raf::DSMMesaSensor::sendFPGACodeToDriver(), nidas::core::Polynomial::setCoefficients(), nidas::core::DSMSensor::trimUnparsed(), nidas::dynld::isff::WisardMote::unpack100thSec(), nidas::dynld::isff::WisardMote::unpack10thSec(), nidas::dynld::isff::WisardMote::unpackAccumSec(), nidas::dynld::isff::WisardMote::unpackCNR2(), nidas::dynld::isff::WisardMote::unpackGsoil(), nidas::dynld::isff::WisardMote::unpackInt16(), nidas::dynld::isff::WisardMote::unpackInt32(), nidas::dynld::isff::WisardMote::unpackNR01(), nidas::dynld::isff::WisardMote::unpackPicTime(), nidas::dynld::isff::WisardMote::unpackPicTimeFields(), nidas::dynld::isff::WisardMote::unpackPower(), nidas::dynld::isff::WisardMote::unpackQsoil(), nidas::dynld::isff::WisardMote::unpackRlw(), nidas::dynld::isff::WisardMote::unpackRlwKZ(), nidas::dynld::isff::WisardMote::unpackRnet(), nidas::dynld::isff::WisardMote::unpackRsw(), nidas::dynld::isff::WisardMote::unpackRsw2(), nidas::dynld::isff::WisardMote::unpackStatus(), nidas::dynld::isff::WisardMote::unpackTP01(), nidas::dynld::isff::WisardMote::unpackTRH(), nidas::dynld::isff::WisardMote::unpackTsoil(), nidas::dynld::isff::WisardMote::unpackUint16(), nidas::dynld::isff::WisardMote::unpackUint32(), and nidas::dynld::isff::WisardMote::unpackXbee().

◆ interrupted

int interrupted = 0
static

◆ isSender

bool isSender = true
static

Referenced by main(), openPort(), and parseRunstring().

◆ len

int len = fread(buf,1,sizeof(buf),fp)

Referenced by nidas::dynld::UDPSampleOutput::allocateBuffer(), nidas::dynld::GPS_NMEA_Serial::appendChecksum(), nidas::core::IOStream::backup(), nidas::dynld::Uio48Sensor::buildSampleScanner(), nidas::dynld::GPS_NMEA_Serial::calcChecksum(), nidas::dynld::GPS_NMEA_Serial::checksumOK(), cksum(), nidas::dynld::raf::SppSerial::computeCheckSum(), dmmat_ioctl_a2d(), dmmat_ioctl_d2a(), dmmat_ioctl_d2d(), nidas::dynld::raf::A2D_Serial::extractStatus(), nidas::dynld::raf::UDPArincSensor::extractStatus(), nidas::dynld::GPS_NMEA_Serial::findChecksum(), nidas::dynld::raf::UHSAS_Serial::findMarker(), Sender::flush(), nidas::core::CharacterSensor::fromDOMElement(), nidas::util::SocketImpl::getKeepAlive(), nidas::util::SocketImpl::getKeepAliveIdleSecs(), nidas::core::getSample(), nidas::core::SamplePool< SampleType >::getSample(), nidas::core::getSample(), nidas::core::getSample(), nidas::core::SamplePool< SampleType >::getSample(), nidas::util::SocketImpl::getTcpNoDelay(), nidas::core::DSMSensor::ioctl(), main(), main(), ncar_a2d_ioctl(), nidas::core::DriverSampleScanner::nextSample(), nidas::util::NMEAchecksumOK(), nidas::dynld::GPS_Novatel_Serial::novatelChecksumOK(), nidas::core::SampleInputHeader::parseMagic(), nidas::core::SampleInputHeader::parseTag(), pc104sg_ioctl(), nidas::dynld::isff::CSI_CRX_Binary::process(), nidas::dynld::isff::CU_Coldwire::process(), nidas::dynld::isff::CSI_IRGA_Sonic::process(), nidas::dynld::raf::LamsNetSensor::process(), nidas::dynld::raf::LamsSensor::process(), nidas::dynld::raf::Watlow::process(), nidas::core::SamplePool< SampleType >::putSample(), nidas::util::SerialPort::read(), nidas::dynld::raf::SyncRecordReader::read(), nidas::core::DatagramSocket::read(), nidas::core::DSMSensor::read(), nidas::core::FileSet::read(), nidas::core::IOStream::read(), nidas::core::ServerSocketIODevice::read(), nidas::core::Socket::read(), nidas::core::TCPSocketIODevice::read(), nidas::core::UDPSocketIODevice::read(), nidas::core::UnixIOChannel::read(), nidas::core::UnixIODevice::read(), nidas::core::DSMSensor::read(), nidas::core::ServerSocketIODevice::read(), nidas::core::TCPSocketIODevice::read(), nidas::core::UDPSocketIODevice::read(), nidas::core::UnixIODevice::read(), ublox::read_rdwr(), ublox::read_smbus(), nidas::core::IOStream::readBuf(), nidas::core::SampleScanner::readBuffer(), nidas::core::DatagramSampleScanner::readBuffer(), nidas::util::SerialPort::readLine(), TeeI2C::readNMEAFile(), nidas::util::SerialPort::readUntil(), nidas::core::IOStream::readUntil(), Receiver::reallocateBuffer(), nidas::core::IOStream::reallocateBuffer(), nidas::util::SocketImpl::recv(), nidas::util::Socket::recv(), nidas::util::DatagramSocket::recv(), nidas::util::SocketImpl::recvfrom(), nidas::util::DatagramSocket::recvfrom(), Receiver::run(), SyncDumper::run(), nidas::core::SampleChar::SampleChar(), nidas::util::SocketImpl::send(), nidas::util::DatagramSocket::send(), nidas::util::Socket::send(), nidas::util::SocketImpl::sendall(), nidas::util::Socket::sendall(), nidas::dynld::raf::SppSerial::sendInitPacketAndCheckAck(), Csat3Sim::sendMessage(), nidas::util::SocketImpl::sendto(), nidas::util::DatagramSocket::sendto(), nidas::util::SocketImpl::setKeepAlive(), nidas::util::SocketImpl::setKeepAliveIdleSecs(), nidas::core::SerialSensor::setMessageParameters(), nidas::core::MessageSampleScanner::setMessageParameters(), nidas::core::MessageStreamScanner::setMessageParameters(), nidas::core::CharacterSensor::setMessageParameters(), nidas::util::SocketImpl::setPktInfo(), nidas::util::SocketImpl::setTcpNoDelay(), nidas::core::SampleT< DataT >::setValues(), nidas::core::IOStream::skip(), RemoteSerial::socketReadLine(), string_token(), nidas::core::SampleInputHeader::toString(), nidas::util::UnixSocketAddress::UnixSocketAddress(), nidas::core::NidasAppArg::usage(), nidas::util::SerialPort::write(), nidas::core::DatagramSocket::write(), nidas::core::DSMSensor::write(), nidas::core::FileSet::write(), nidas::core::MultipleUDPSockets::write(), nidas::core::SampleOutputBase::write(), nidas::core::SerialPortIODevice::write(), nidas::core::ServerSocketIODevice::write(), nidas::core::Socket::write(), nidas::core::TCPSocketIODevice::write(), nidas::core::UDPSocketIODevice::write(), nidas::core::UnixIOChannel::write(), nidas::core::UnixIODevice::write(), nidas::core::IOStream::write(), nidas::dynld::SampleOutputStream::write(), TeeI2C::writeFilteredOutput(), and TeeI2C::writeOutput().

◆ LENGTH_OF_CRC

const int LENGTH_OF_CRC = 8

Referenced by Receiver::scanBuffer().

◆ MAX_DATA_LENGTH

int MAX_DATA_LENGTH = MAX_PACKET_LENGTH - MIN_PACKET_LENGTH

Referenced by Receiver::scanBuffer().

◆ MAX_PACKET_LENGTH

int MAX_PACKET_LENGTH = 65535

◆ MIN_PACKET_LENGTH

const int MIN_PACKET_LENGTH = START_OF_DATA + LENGTH_OF_CRC + 1

◆ nPacketsOut

unsigned int nPacketsOut = 999998
static

Referenced by parseRunstring(), and Sender::run().

◆ periodMsec

unsigned int periodMsec = 0
static

◆ port

n_u::SerialPort port
static

Referenced by nidas::util::SocketImpl::bind(), nidas::util::DatagramSocket::bind(), nidas::util::SocketImpl::bind(), nidas::util::SocketImpl::connect(), nidas::util::Socket::connect(), nidas::util::DatagramSocket::connect(), nidas::util::SocketImpl::connect(), nidas::util::Socket::connect(), nidas::util::DatagramSocket::connect(), nidas::util::DatagramSocket::DatagramSocket(), nidas::util::DatagramSocket::DatagramSocket(), emerald_ioctl(), emerald_open(), emm_get_digio_port_out(), emm_get_port_mode(), emm_get_port_mode_eeprom(), emm_read_digio_port(), emm_set_digio_port_out(), emm_set_port_mode(), emm_set_port_mode_eeprom(), emm_write_digio_port(), Sender::flush(), nidas::core::DatagramSocket::fromDOMElement(), nidas::core::DSMConfig::fromDOMElement(), nidas::core::DSMServer::fromDOMElement(), nidas::core::McSocket::fromDOMElement(), nidas::core::McSocketUDP::fromDOMElement(), nidas::core::MultipleUDPSockets::fromDOMElement(), nidas::core::Socket::fromDOMElement(), nidas::core::ServerSocket::fromDOMElement(), nidas::util::Inet4SocketAddress::Inet4SocketAddress(), nidas::util::Inet4SocketAddress::Inet4SocketAddress(), PConfig::loadRemoteXML(), PConfig::main(), SensorSimApp::main(), main(), nidas::dynld::raf::PSI9116_Sensor::open(), nidas::dynld::raf::UDPArincSensor::open(), openPort(), nidas::core::SocketIODevice::parseAddress(), nidas::core::NidasApp::parseInputs(), PConfig::parseRemoteSpecifier(), SensorExtract::parseRunstring(), SyncDumper::parseRunstring(), nidas::core::DSMEngine::parseRunstring(), parseRunstring(), Receiver::run(), ModemLineSetter::run(), ModemLineMonitor::run(), Receiver::scanBuffer(), nidas::util::ServerSocket::ServerSocket(), nidas::util::ServerSocket::ServerSocket(), nidas::core::NidasAppInputFilesArg::setDefaultInput(), nidas::core::DatagramSocket::setHostPort(), nidas::core::Socket::setRemoteHostPort(), nidas::util::Socket::Socket(), and nidas::util::Socket::Socket().

◆ rate

float rate = -1.0
static

◆ return

return

◆ shortName

string shortName
static

◆ START_OF_DATA

const int START_OF_DATA = 23

Format of test packet:

* NNNNNN MMMMMMMMM ccccc <data>HHHHHHHH\x04
* NNNNNN: packet number starting at 0, 6 ASCII digits, followed by space.
* MMMMMMMM: number of milliseconds since program start:
*      9 digits followed by a space.
* ccccc: length of data portion, in bytes, 0 or larger.
*      5 digits, followed by space.
* <data>: data portion of packet, may be 0 bytes in length.
* HHHHHHHH: CRC of packet contents, up to but not including CRC (duh),
*      8 ASCII hex digits.
* \x04: trailing ETX byte
* Length of packet is then 7 + 10 + 6 + dataSize + 8 + 1 = 32 + dataSize
* 

Referenced by Receiver::scanBuffer(), and Sender::send().

◆ termioOpts

string termioOpts = defaultTermioOpts
static

Referenced by openPort(), and parseRunstring().

◆ testModemLines

bool testModemLines = false
static

Referenced by main(), openPort(), and parseRunstring().

◆ timeoutSecs

int timeoutSecs = 0
static

◆ verbose

bool verbose = false
static