Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:32

0001 /* 
0002 ** CframeV1.C
0003 ** 
0004 ** Author: $Author: phnxbld $  
0005 **   Date: $Date: 2009/09/19 14:34:27 $ 
0006 ** 
0007 ** $Log: CframeV1.C,v $
0008 ** Revision 1.2  2009/09/19 14:34:27  phnxbld
0009 ** fix compiler warning
0010 **
0011 ** Revision 1.1.1.1  2000/07/21 01:51:10  purschke
0012 ** mlp -- adding the new automakified "basic" module to CVS.
0013 **
0014 **
0015 ** Revision 1.3  1998/12/11 22:01:58  markacs
0016 ** (stephen markacs) adding log into cvs tags
0017 ** 
0018 */
0019 #include "CframeV1.h"
0020 
0021 /*
0022 **  makeFrameHdrV1 makes a Version 1 frame header.  It takes the address pointed to by
0023 **    the frame_ptr passed to it, clears the right amount of space for the header
0024 **    (sets all bytes to 0), sets the frameMark, hdrVersion, hdrLength, and
0025 **    frameLength fields to the appropriate values for an empty Version 1 header,  
0026 **    sets the dataType, frameType and sourceId fields to the values passes to it,
0027 **    and copies the alignment block from the location pointed to by the 
0028 **    alignment pointer passed to it.
0029 */
0030 VALUE_ret makeFrameHdrV1 (PHDWORD* frame_ptr, UINT maxFrameLen, UINT dataType, 
0031               UINT frameType, UINT sourceId) 
0032 {
0033   if (maxFrameLen < currentFrameHdrLength) return valueFailure;
0034 
0035   dwordClear (frame_ptr, currentFrameHdrLength);
0036 
0037   setFrameMark(frame_ptr,currentFrameMark);
0038   setFrameHdrVersion(frame_ptr,currentFrameHdrVersion);
0039   setFrameHdrLength(frame_ptr,currentFrameHdrLength); 
0040 
0041   setDataType(frame_ptr, dataType);
0042   setFrameType(frame_ptr, frameType);
0043   setSourceId(frame_ptr, sourceId);
0044   setFrameLength(frame_ptr, V1_FRAMEHDR_LENGTH);
0045   setFrameAlignLength(frame_ptr, V1_ALIGN_LENGTH);
0046 
0047   return 0; 
0048 }
0049 
0050 VALUE_ret getFrameDataLengthV1 (FRAME_ptr frame_ptr) 
0051 {
0052   PHDWORD dataLength =   getFrameLength(frame_ptr) 
0053                      - getFrameHdrLength(frame_ptr)
0054                      - getFrameErrorLengthV1(frame_ptr)
0055                      - getFrameHistoryLengthV1(frame_ptr)
0056                      - getFramePaddingV1(frame_ptr)       ;
0057 
0058   if (dataLength > getFrameLength(frame_ptr) )
0059   {
0060     setFrameError(FORMAT_ERR_INVALID_HEADER, frame_ptr, 0);
0061     return valueFailure;
0062   }
0063   else 
0064   {
0065     setFrameSuccess();
0066     return dataLength;
0067   }
0068 }
0069 
0070 /* set bits in the frame status word */
0071 VALUE_ret orFrameStatusV1 (FRAME_ptr frame_ptr, UINT statusBits)
0072 {
0073   UINT status;
0074   /*
0075   **  Make sure intended bits fit within field length
0076   */
0077   if ((statusBits & ((1<<STATUS_NUM_BITS)-1)) == statusBits)
0078     {
0079       status = getBitsMACRO(frame_ptr,              STATUS_OFFSET_OF_DWORD,
0080                             STATUS_OFFSET_IN_DWORD, STATUS_MASK        );
0081       status|=statusBits;
0082       setBitsMACRO(frame_ptr, 
0083                    STATUS_OFFSET_OF_DWORD,
0084                    STATUS_OFFSET_IN_DWORD,
0085                    STATUS_MASK,
0086                    status                 );
0087       return status;
0088     }
0089   else 
0090     {
0091       setUserError (FORMAT_ERR_INVALID_DATA, statusBits);
0092       return valueFailure;
0093     }
0094 }
0095 
0096 
0097 
0098 VALUE_ret adjustFrameHistoryLengthV1 (FRAME_ptr frame_ptr, UINT newDwords)
0099 {
0100   UINT newLength = getFrameHistoryLengthV1(frame_ptr) + newDwords;
0101 
0102   /*
0103   ** Make sure it fits in the current field size
0104   */
0105   if (newLength > maxSwordValue) 
0106   {
0107     setFrameError(FORMAT_ERR_HISTORY_OVERFLOW, frame_ptr, newDwords);
0108     return valueFailure;
0109   }
0110   else  
0111   {
0112     setBitsMACRO(frame_ptr, 
0113                  HISTORY_LENGTH_OFFSET_OF_DWORD,
0114                  HISTORY_LENGTH_OFFSET_IN_DWORD,
0115                  HISTORY_LENGTH_MASK,
0116                  newLength                      );
0117     setFrameSuccess();    
0118     return newLength;
0119   }
0120 }
0121 
0122 
0123 
0124 VALUE_ret adjustFrameErrorLengthV1 (FRAME_ptr frame_ptr, UINT newDwords)
0125 {
0126   UINT newLength = getFrameErrorLengthV1(frame_ptr) + newDwords;
0127 
0128   /*
0129   ** Make sure it fits in the current field size
0130   */
0131   if (newLength > maxSwordValue) 
0132   {
0133     setFrameError(FORMAT_ERR_ERROR_OVERFLOW, frame_ptr, newDwords);
0134     return valueFailure;
0135   }
0136   else  
0137   {
0138     setBitsMACRO(frame_ptr, 
0139                  ERROR_LENGTH_OFFSET_OF_DWORD,
0140                  ERROR_LENGTH_OFFSET_IN_DWORD,
0141                  ERROR_LENGTH_MASK,
0142                  newLength                      );
0143     setFrameSuccess();    
0144     return newLength;
0145   }
0146 }
0147 
0148 
0149