83 lines
3.2 KiB
C
83 lines
3.2 KiB
C
|
|
/************************************************************************/
|
||
|
|
/* SISCO SOFTWARE MODULE HEADER *****************************************/
|
||
|
|
/************************************************************************/
|
||
|
|
/* (c) Copyright Systems Integration Specialists Company, Inc., */
|
||
|
|
/* 1986 - 2004, All Rights Reserved. */
|
||
|
|
/* */
|
||
|
|
/* PROPRIETARY AND CONFIDENTIAL */
|
||
|
|
/* */
|
||
|
|
/* MODULE NAME : are_utc.c */
|
||
|
|
/* PRODUCT(S) : ASN1DE */
|
||
|
|
/* */
|
||
|
|
/* MODULE DESCRIPTION : Encode MMS UtcTime */
|
||
|
|
/* */
|
||
|
|
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
|
||
|
|
/* */
|
||
|
|
/* MODIFICATION LOG : */
|
||
|
|
/* Date Who Rev Comments */
|
||
|
|
/* -------- --- ------ ------------------------------------------- */
|
||
|
|
/* 03/16/04 EJV 07 Added ST_(U)LONG typecast to logs,on some sys*/
|
||
|
|
/* ST_(U)INT32 can be (unsigned) long or int. */
|
||
|
|
/* 01/14/03 JRB 06 Avoid redundant logging of encode overrun. */
|
||
|
|
/* 07/26/02 EJV 05 Time Quality byte chg position to lowest. */
|
||
|
|
/* Added logging. */
|
||
|
|
/* 07/03/02 EJV 04 MMS_UTC_TIME: chg name usec to fraction. */
|
||
|
|
/* 01/22/02 JRB 03 Chg asn1r_end_of_buffer to asn1r_buf_start. */
|
||
|
|
/* 12/20/01 JRB 02 Chg ASN1_CTXT to ASN1_ENC_CTXT. */
|
||
|
|
/* 11/08/01 EJV 01 New module, derived from are_btod.c */
|
||
|
|
/************************************************************************/
|
||
|
|
|
||
|
|
#include "glbtypes.h"
|
||
|
|
#include "sysincs.h"
|
||
|
|
#include "asn1r.h"
|
||
|
|
#include "asn1log.h"
|
||
|
|
|
||
|
|
/************************************************************************/
|
||
|
|
/* For debug version, use a static pointer to avoid duplication of */
|
||
|
|
/* __FILE__ strings. */
|
||
|
|
|
||
|
|
#ifdef DEBUG_SISCO
|
||
|
|
SD_CONST static ST_CHAR *SD_CONST thisFileName = __FILE__;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/************************************************************************/
|
||
|
|
/* asn1r_wr_utc_time */
|
||
|
|
/************************************************************************/
|
||
|
|
|
||
|
|
ST_VOID asn1r_wr_utc_time (ASN1_ENC_CTXT *ac, MMS_UTC_TIME *data)
|
||
|
|
{
|
||
|
|
#define _ASN1R_UTCTIME_LEN 8
|
||
|
|
|
||
|
|
ALOG_ENC0("Encoding UtcTime");
|
||
|
|
|
||
|
|
/* check for overun of buffer (UtcTime is encoded on 8 bytes) */
|
||
|
|
if (ac->asn1r_field_ptr - _ASN1R_UTCTIME_LEN < ac->asn1r_buf_start)
|
||
|
|
{
|
||
|
|
ac->asn1r_encode_overrun = SD_TRUE;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
ALOG_CENC1("seconds: %lu", (ST_ULONG) data->secs);
|
||
|
|
ALOG_CENC1("fraction: %lu", (ST_ULONG) data->fraction);
|
||
|
|
ALOG_CENC1("quality: 0x%lX", (ST_ULONG) data->qflags);
|
||
|
|
|
||
|
|
/* write the quality flags */
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) data->qflags;
|
||
|
|
|
||
|
|
/* write fraction of a second (3 bytes) */
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) (data->fraction & 0xFF);
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) ((data->fraction >> 8) & 0xFF);
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) ((data->fraction >> 16) & 0xFF);
|
||
|
|
|
||
|
|
/* write the number of seconds since January 1, 1970 */
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) (data->secs & 0xFF);
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) ((data->secs >> 8) & 0xFF);
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) ((data->secs >> 16) & 0xFF);
|
||
|
|
*(ac->asn1r_field_ptr--) = (ST_UCHAR) ((data->secs >> 24) & 0xFF);
|
||
|
|
|
||
|
|
ALOG_CENC1("Encoded %d bytes:", _ASN1R_UTCTIME_LEN);
|
||
|
|
ALOG_ENCH(_ASN1R_UTCTIME_LEN, ac->asn1r_field_ptr + 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
|