#include "vxWorks.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "taskLib.h"
#include "float.h"
#include "application.conf"
Defines | |
#define | USHPOS(i) USHPUNI[(i)].ushpos |
#define | USHPCH(i) USHPUNI[(i)].ushpchr |
#define | PNTUSH(i) (usphdr + USHPOS(i)) |
#define | SWAPBYTES |
#define | NOSWAP |
#define | NOSUPP |
#define | CVTvaxDATA SWAPBYTES |
#define | CVTvxwDATA NOSWAP |
#define | CVTultDATA SWAPBYTES |
#define | CVTosfDATA SWAPBYTES |
#define | CVTlnxDATA SWAPBYTES |
#define | xHDFRE htotal->hdata.stddat.hdfree |
#define | MAXALvax 2 |
#define | MAXALvxw 2 |
#define | MAXALult 32 |
#define | MAXALosf 32 |
#define | MAXALlnx 4 |
#define | UNKNOWN |
#define | UNSUPP |
#define | NOSWAP |
#define | SWAPBYTES |
#define | VAXF2LITTLES |
#define | VAXF2BIGS |
#define | VAXD2LITTLET |
#define | VAXD2BIGT |
#define | MAXALIGN MAXALvxw |
#define | CVTvaxINT SWAPBYTES |
#define | CVTvaxFLT VAXF2BIGS |
#define | CVTvaxDBL VAXD2BIGT |
#define | CVTvxwINT NOSWAP |
#define | CVTvxwFLT NOSWAP |
#define | CVTvxwDBL NOSWAP |
#define | CVTultINT SWAPBYTES |
#define | CVTultFLT SWAPBYTES |
#define | CVTultDBL SWAPBYTES |
#define | CVTosfINT SWAPBYTES |
#define | CVTosfFLT SWAPBYTES |
#define | CVTosfDBL SWAPBYTES |
#define | CVTlnxINT SWAPBYTES |
#define | CVTlnxFLT SWAPBYTES |
#define | CVTlnxDBL SWAPBYTES |
#define | CVTunknown UNKNOWN |
#define | xIDHDR htempo->hdata.stddat.idhdr |
#define | xHDFRE ((HEADER *)header)->hdata.stddat.hdfree |
#define | xIDHDR ((HEADER *)header)->hdata.stddat.idhdr |
Functions | |
static int | cvthdr (HEADER *htotal, HEADER *htempo) |
static void | mkush (char byte0, char byte1, char *phdr) |
int | sOpen (void) |
int | sClose (void) |
void | SwiSpe (int spenum) |
int | SwiHdr (char *idhdr, char *idprg) |
void * | Illacc (char *cccc) |
void | sZero (void) |
DATAC | sChanl (unsigned long chan_numb) |
int | CvtHdr (HEADER *htotal, HEADER *htempo) |
int | PutUsh (int mode, char *datid, char *data, int datlen) |
int | GetUsh (char *datid, char *data, int datlen) |
int | RemUsh (char *datid) |
Variables | |
HTYPES | htypes [MAXHTYPS] |
SPEPNTR | spepntr [MAXSPECS] |
int | iselspe = 0 |
SPEPNTR * | pselspe = &spepntr[0] |
UINT4 | iplanes = 1 |
char * | usphdr |
modification history -------------------- 15aug08 kHu DOXYGEN comments added 20apr07 kHu DIM3SPEC, IPLANES, NPLANE 16apr03 kHu Fit gemacht fuer -Wall GCC-Option 25mar03 kHu sChanl(), CvtHdr() voellig ueberarbeitet 12mar03 kHu Portierung nach Linux 12sep02 kHu XSPHDR=XHSPCD=NULL raus aus sClose() 16aug02 kHu Direktzugriff zu Header in Messprogramm mkush(), RemUsh() neu 04jul02 kHu USHPOS(i) sorgfaeltiger abgeprueft (access violations) 18jun02 kHu OSF1 Typ in PutUsh und GetUsh 10may02 kHu dan30.c:checkhdr() -> dan31.c:SwiHdr() 06may02 kHu sChanl(): Alpha-OSF type spectrum neu 28may02 kHu sZero neu 29mar00 kHu STATUS bereinigt 09mar00 kHu Inpar(1/3): TOTLEN IHDLEN BLOCKT 09mar00 kHu SwiSpe(): transfer common status bits 15feb00 kHu erweitert auf verschiedene Header Typen 11nov99 kHu Newprog Standard 02sep99 kHu Abschluss Pruefung 24aug99 kHu ueberarbeitet 19jul99 kHu neue Struktur 28apr99 kHu Multiple spectra 24feb99 kHu User data block in header 21jan99 kHu Header Konvertierung 13jan99 kHu Umstellung auf dan-Library 01sep98 kHu OSF1-Alpha Portierung 30aug96 kHu ueberarbeitet auf MCA Standard 17nov95 kHu Ultrix, VxWorks Portierung (C) 08feb88 kHu PDP11 Version (F77, Macro-11)
#define CVTlnxDATA SWAPBYTES |
#define CVTlnxDBL SWAPBYTES |
#define CVTlnxFLT SWAPBYTES |
#define CVTlnxINT SWAPBYTES |
#define CVTosfDATA SWAPBYTES |
#define CVTosfDBL SWAPBYTES |
#define CVTosfFLT SWAPBYTES |
#define CVTosfINT SWAPBYTES |
#define CVTultDATA SWAPBYTES |
#define CVTultDBL SWAPBYTES |
#define CVTultFLT SWAPBYTES |
#define CVTultINT SWAPBYTES |
#define CVTunknown UNKNOWN |
#define CVTvaxDATA SWAPBYTES |
#define CVTvaxDBL VAXD2BIGT |
#define CVTvaxFLT VAXF2BIGS |
#define CVTvaxINT SWAPBYTES |
#define CVTvxwDATA NOSWAP |
#define CVTvxwDBL NOSWAP |
#define CVTvxwFLT NOSWAP |
#define CVTvxwINT NOSWAP |
#define MAXALIGN MAXALvxw |
#define MAXALlnx 4 |
#define MAXALosf 32 |
#define MAXALult 32 |
#define MAXALvax 2 |
#define MAXALvxw 2 |
#define NOSUPP |
Value:
{ /* Platform not supported */ \ /* Termnl(7,3,"sChanl(): Platform not supported"); */ \ return 0xffffffff; \ }
#define NOSWAP |
Value:
/* Don't swap bytes */ \ for(j=0; j<hstot; j++) { \ *(putp+ppos) = *(getp+gpos); \ gpos++; \ ppos++; \ } \
#define NOSWAP |
Value:
{ /* Don't swap bytes */ \ return SPEDATA[chan_numb]; \ }
#define PNTUSH | ( | i | ) | (usphdr + USHPOS(i)) |
#define SWAPBYTES |
Value:
/* Swap bytes, Big <-> Little */ \ for(j=0; j<hsnum; j++) { \ for(k=0; k<hslen; k++) { \ *(putp+ppos+hslen-1-k) = *(getp+gpos+k); \ } \ gpos += hslen; \ ppos += hslen; \ } \
#define SWAPBYTES |
#define UNKNOWN |
#define UNSUPP |
#define USHPCH | ( | i | ) | USHPUNI[(i)].ushpchr |
#define USHPOS | ( | i | ) | USHPUNI[(i)].ushpos |
#define VAXD2BIGT |
Value:
/* VAX D to Big T */ \ for(j=0; j<hsnum; j++) { \ union { \ UINT1 u1[8]; \ UINT4 u4[2]; \ INT2 i2[4]; \ REAL8 f8[1]; \ } tmp; \ /* Read data bytes */ \ tmp.u1[7] = *(getp+gpos+6); \ tmp.u1[6] = *(getp+gpos+7); \ tmp.u1[5] = *(getp+gpos+4); \ tmp.u1[4] = *(getp+gpos+5); \ tmp.u1[3] = *(getp+gpos+2); \ tmp.u1[2] = *(getp+gpos+3); \ tmp.u1[1] = *(getp+gpos+0); \ tmp.u1[0] = *(getp+gpos+1); \ /* Make mantissa */ \ tmp.u4[1] = (tmp.u4[1] >> 3) | (tmp.u4[0] << 29); \ tmp.u4[0] = (tmp.u4[0] & 0x7fffffff) >> 3; \ /* Make 11 bit exponent -2 */ \ tmp.i2[0] = tmp.i2[0] -0x820 +0x4000; \ /* Add sign */ \ tmp.u1[0] |= (*(getp+gpos+1) & 0x80); \ *((REAL8 *)(putp+ppos+0)) = tmp.f8[0]; \ gpos += hslen; \ ppos += hslen; \ } \
#define VAXD2LITTLET |
Value:
/* VAX D to Little T */ \ for(j=0; j<hsnum; j++) { \ union { \ UINT1 u1[8]; \ UINT4 u4[2]; \ INT2 i2[4]; \ REAL8 f8[1]; \ } tmp; \ /* Read data bytes */ \ tmp.u1[0] = *(getp+gpos+6); \ tmp.u1[1] = *(getp+gpos+7); \ tmp.u1[2] = *(getp+gpos+4); \ tmp.u1[3] = *(getp+gpos+5); \ tmp.u1[4] = *(getp+gpos+2); \ tmp.u1[5] = *(getp+gpos+3); \ tmp.u1[6] = *(getp+gpos+0); \ tmp.u1[7] = *(getp+gpos+1); \ /* Make mantissa */ \ tmp.u4[0] = (tmp.u4[0] >> 3) | (tmp.u4[1] << 29); \ tmp.u4[1] = (tmp.u4[1] & 0x7fffffff) >> 3; \ /* Make 11 bit exponent -2 */ \ tmp.i2[3] = tmp.i2[3] -0x820 +0x4000; \ /* Add sign */ \ tmp.u1[7] |= (*(getp+gpos+1) & 0x80); \ *((REAL8 *)(putp+ppos+0)) = tmp.f8[0]; \ gpos += hslen; \ ppos += hslen; \ } \
#define VAXF2BIGS |
Value:
/* VAX F to Big S */ \ for(j=0; j<hsnum; j++) { \ union { \ UINT1 u1[4]; \ INT2 i2[2]; \ REAL4 f4[1]; \ } tmp; \ /* Read data bytes */ \ tmp.u1[3] = *(getp+gpos+2); \ tmp.u1[2] = *(getp+gpos+3); \ tmp.u1[1] = *(getp+gpos+0); \ tmp.u1[0] = *(getp+gpos+1); \ /* Make exponent -2 */ \ tmp.i2[0] = (tmp.i2[0] & 0x7fff) -0x0100; \ if(tmp.i2[0] < 0) { /* Underflow */ \ tmp.f4[0] = FLT_MIN; \ } else { /* Add sign */ \ tmp.u1[0] |= (*(getp+gpos+1) & 0x80); \ } \ *((REAL4 *)(putp+ppos+0)) = tmp.f4[0]; \ gpos += hslen; \ ppos += hslen; \ } \
#define VAXF2LITTLES |
Value:
/* VAX F to Little S */ \ for(j=0; j<hsnum; j++) { \ union { \ UINT1 u1[4]; \ INT2 i2[2]; \ REAL4 f4[1]; \ } tmp; \ /* Read data bytes */ \ tmp.u1[0] = *(getp+gpos+2); \ tmp.u1[1] = *(getp+gpos+3); \ tmp.u1[2] = *(getp+gpos+0); \ tmp.u1[3] = *(getp+gpos+1); \ /* Make exponent -2 */ \ tmp.i2[1] = (tmp.i2[1] & 0x7fff) -0x0100; \ if(tmp.i2[1] < 0) { /* Underflow */ \ tmp.f4[0] = FLT_MIN; \ } else { /* Add sign */ \ tmp.u1[3] |= (*(getp+gpos+1) & 0x80); \ } \ *((REAL4 *)(putp+ppos+0)) = tmp.f4[0]; \ gpos += hslen; \ ppos += hslen; \ } \
#define xHDFRE ((HEADER *)header)->hdata.stddat.hdfree |
#define xHDFRE htotal->hdata.stddat.hdfree |
#define xIDHDR ((HEADER *)header)->hdata.stddat.idhdr |
#define xIDHDR htempo->hdata.stddat.idhdr |
int CvtHdr | ( | HEADER * | htotal, | |
HEADER * | htempo | |||
) |
static int cvthdr | ( | HEADER * | htotal, | |
HEADER * | htempo | |||
) | [static] |
int GetUsh | ( | char * | datid, | |
char * | data, | |||
int | datlen | |||
) |
void* Illacc | ( | char * | cccc | ) |
static void mkush | ( | char | byte0, | |
char | byte1, | |||
char * | phdr | |||
) | [static] |
int PutUsh | ( | int | mode, | |
char * | datid, | |||
char * | data, | |||
int | datlen | |||
) |
int RemUsh | ( | char * | datid | ) |
DATAC sChanl | ( | unsigned long | chan_numb | ) |
int sClose | ( | void | ) |
int sOpen | ( | void | ) |
int SwiHdr | ( | char * | idhdr, | |
char * | idprg | |||
) |
void SwiSpe | ( | int | spenum | ) |
void sZero | ( | void | ) |
Initial value:
{ INITHTYPES }
UINT4 iplanes = 1 |
int iselspe = 0 |
Initial value:
{ INITSPEPNTR }
char* usphdr |