📄 u_cvar.c
字号:
/************************************************************************//* SISCO SOFTWARE MODULE HEADER *****************************************//************************************************************************//* (c) Copyright Systems Integration Specialists Company, Inc., *//* 1986 - 2002, All Rights Reserved. *//* *//* MODULE NAME : u_cvar.c *//* PRODUCT(S) : MMSEASE *//* *//* MODULE DESCRIPTION : *//* This module contains user confirm functions. These functions *//* are invoked from 'mms_req_serve' when the response to an *//* outstanding request is received. These functions should check *//* the resp_err member of the request control structure before *//* assuming returned data. *//* *//* NOTES ON REQUEST INFORMATION : *//* In the user application, request information structures may be *//* committed when the request is made (e.g. for error recovery). *//* If so, these information buffers could be freed in the confirm *//* functions. In the sample application, all request information *//* structures are automatic or handled when the request is issued. *//* *//* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : *//* *//* MODIFICATION LOG : *//* Date Who Rev Comments *//* -------- --- ------ ------------------------------------------- *//* 07/03/02 EJV 12 MMS_UTC_TIME: chg name usec to fraction. *//* 11/15/01 EJV 11 Added support for new MMS type UtcTime: *//* arb_print_ctrl[]: added prtUtc. *//* 12/17/98 DSF 10 Fixed misplaced return in prtOct () *//* 01/28/98 EJV 09 Changed 1 arg to ST_INT32 prtBt4, prtBt6 *//* and made appropriate adj in functions. *//* 12/02/97 DSF 08 Minor INT64 Changes *//* 11/20/97 RKR 07 printf data type formats *//* 09/11/97 MDE 06 MMS ARB user funs now return ST_RET *//* 09/10/97 MDE 05 Changed BTOD print for new M_ARB_DATA_CTRL *//* 09/05/97 MDE 04 Btod print, typeless read changes *//* 07/16/97 RKR 03 64 bit integer support *//* 06/21/97 RKR 02 worked on print_arb_data *//* 06/09/97 MDE 01 Changes to RuntimeType handling *//* 04/15/97 DSF 7.00 MMSEASE 7.0 release. See MODL70.DOC for *//* history. *//************************************************************************/#include "glbtypes.h"#include "sysincs.h"#include "mms_usr.h"#include "mms_pvar.h"#include "mms_vvar.h"#include "userdefs.h"#include "mmsop_en.h"#include "mem_chk.h"#include "gvaldefs.h"#include "scrndefs.h"#include "fkeydefs.h"/************************************************************************/ST_VOID no_action (MMSREQ_PEND *req_ptr) { }ST_VOID (*sfun)(MMSREQ_PEND *req_ptr) = no_action;/************************************************************************//* For debug version, use a static pointer to avoid duplication of *//* __FILE__ strings. *//************************************************************************/#ifdef DEBUG_SISCOstatic ST_CHAR *thisFileName = __FILE__;#endif/************************************************************************//************************************************************************//* VARIABLE ACCESS MANAGEMENT *//************************************************************************/ST_RET prtArrStart (RT_AA_CTRL *rtaa) { printf ("\n\tArrayStart"); return (SD_SUCCESS); }ST_RET prtArrEnd (RT_AA_CTRL *rtaa) { printf ("\n\tArrayEnd"); return (SD_SUCCESS); }ST_RET prtStrStart (RT_AA_CTRL *rtaa) { printf ("\n\tStructureStart"); return (SD_SUCCESS); }ST_RET prtStrEnd (RT_AA_CTRL *rtaa) { printf ("\n\tStructureEnd"); return (SD_SUCCESS); }ST_RET prtInt8 (ST_INT8 *data_ptr, RT_AA_CTRL *rtaa) {ST_UCHAR *ubyteptr;ST_INT int_val; ubyteptr = (ST_UCHAR *) data_ptr; int_val = (ST_INT) (*ubyteptr); printf ("\n\tINTEGER 8 value : %d",int_val); return (SD_SUCCESS); }ST_RET prtInt16 (ST_INT16 *data_ptr, RT_AA_CTRL *rtaa) {ST_INT i;ST_INT16 *sp; sp = (ST_INT16 *) data_ptr; i = *sp; printf ("\n\tINTEGER 16 value : %d", (ST_INT) i); return (SD_SUCCESS); }ST_RET prtInt32 (ST_INT32 *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tINTEGER 32 value : %ld", *((ST_INT32 *) data_ptr)); return (SD_SUCCESS); }ST_RET prtInt64 (ST_INT64 *data_ptr, RT_AA_CTRL *rtaa) {#ifdef INT64_SUPPORT#ifdef _WIN32 printf ("\n\tINTEGER 64 value : %I64d", *((ST_INT64 *) data_ptr));#else printf ("\n\tINTEGER 64 value : %ld", *((ST_INT64 *) data_ptr));#endif#endif return (SD_SUCCESS); }ST_RET prtUint8 (ST_UINT8 *data_ptr, RT_AA_CTRL *rtaa) {ST_UCHAR *ubyteptr;ST_INT int_val; ubyteptr = (ST_UCHAR *) data_ptr; int_val = (ST_INT) (*ubyteptr); printf ("\n\tUNSIGNED 8 value : %d",int_val); return (SD_SUCCESS); }ST_RET prtUint16(ST_UINT16 *data_ptr, RT_AA_CTRL *rtaa) {ST_INT i;ST_INT16 *sp; sp = (ST_INT16 *) data_ptr; i = *sp; printf ("\n\tUNSIGNED 16 value : %d", (ST_INT) i); return (SD_SUCCESS); }ST_RET prtUint32(ST_UINT32 *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tUNSIGNED 32 value : %ld", *((ST_INT32 *) data_ptr)); return (SD_SUCCESS); }ST_RET prtUint64(ST_UINT64 *data_ptr, RT_AA_CTRL *rtaa) {#ifdef INT64_SUPPORT#ifdef _WIN32 printf ("\n\tUNSIGNED 64 value : %I64d", *((ST_UINT64 *) data_ptr));#else printf ("\n\tUNSIGNED 64 value : %ld", *((ST_UINT64 *) data_ptr));#endif#endif return (SD_SUCCESS); }ST_RET prtFlt (ST_FLOAT *data_ptr, RT_AA_CTRL *rtaa) {ST_DOUBLE d; d = (ST_DOUBLE)(*(ST_FLOAT *) data_ptr); printf ("\n\tST_FLOAT value : %f", d); return (SD_SUCCESS); }ST_RET prtDbl (ST_DOUBLE *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tST_DOUBLE value : %f", *((ST_DOUBLE *) data_ptr)); return (SD_SUCCESS); }ST_RET prtOct (ST_UCHAR *data_ptr, RT_AA_CTRL *rtaa) {ST_INT i;ST_INT16 *sp; if (rtaa->rt->u.p.el_len < 0) { sp = (ST_INT16 *) data_ptr; i = *sp; printf ("\n\tOCTET STRING length: %d", i); printf ("\n\tOCTET STRING value: "); list_bytes ((ST_UCHAR *)(data_ptr+2), i); } else { printf ("\n\tOCTET STRING value: "); list_bytes ((ST_UCHAR *) data_ptr, abs (rtaa->rt->u.p.el_len)); } return (SD_SUCCESS); }ST_RET prtBool (ST_BOOLEAN *data_ptr, RT_AA_CTRL *rtaa) {ST_BOOLEAN *bptr;ST_INT int_val; bptr = (ST_BOOLEAN *) data_ptr; int_val = (ST_INT) (*bptr); printf ("\n\tST_BOOLEAN value : %d", int_val); return (SD_SUCCESS); }ST_RET prtBcd1 (ST_INT8 *data_ptr, RT_AA_CTRL *rtaa) {ST_UCHAR *ubyteptr;ST_INT int_val; ubyteptr = (ST_UCHAR *) data_ptr; int_val = (ST_INT) (*ubyteptr); printf ("\n\tBCD 8 value : %d", int_val); return (SD_SUCCESS); }ST_RET prtBcd2 (ST_INT16 *data_ptr, RT_AA_CTRL *rtaa) {ST_INT i;ST_INT16 *sp; sp = (ST_INT16 *) data_ptr; i = *sp; printf ("\n\tBCD 16 value : %d", (ST_INT) i); return (SD_SUCCESS); }ST_RET prtBcd4 (ST_INT32 *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tBCD 32 value : %ld", *((ST_INT32 *) data_ptr)); return (SD_SUCCESS); }ST_RET prtBs (ST_UCHAR *data_ptr, RT_AA_CTRL *rtaa) {ST_INT i;ST_INT abs_len;ST_INT16 *sp; if (rtaa->rt->u.p.el_len < 0) { sp = (ST_INT16 *) data_ptr; i = *sp; abs_len = (i+7) / 8; printf ("\n\tBIT STRING length: %d", i); printf ("\n\tBIT STRING value: "); list_bytes ((ST_UCHAR *)(data_ptr+2), abs_len); } else { printf ("\n\tBIT STRING value : "); abs_len = (abs (rtaa->rt->u.p.el_len)+7) / 8; list_bytes ((ST_UCHAR *) data_ptr, abs_len); } return (SD_SUCCESS); }ST_RET prtVis (ST_CHAR *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tVIS STRING value : %s", data_ptr); return (SD_SUCCESS); }ST_RET prtBt4 (ST_INT32 *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tBTOD Number ms since midnight: %ld", (ST_LONG) *data_ptr); printf ("\n\tBTOD Number days since 1/1/1984: Not included"); return (SD_SUCCESS); }ST_RET prtBt6 (ST_INT32 *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tBTOD Number ms since midnight: %ld", (ST_LONG) *data_ptr); printf ("\n\tBTOD Number days since 1/1/1984: %ld", (ST_LONG) *(data_ptr+1)); return (SD_SUCCESS); }ST_RET prtGt (time_t *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tTIME value : %s", ctime (data_ptr)); return (SD_SUCCESS); }ST_RET prtUtc (MMS_UTC_TIME *data_ptr, RT_AA_CTRL *rtaa) { printf ("\n\tUTC TIME seconds : %u (0x%8.8X)", data_ptr->secs, data_ptr->secs); printf ("\n\t fraction : %u (0x%8.8X)", data_ptr->fraction, data_ptr->fraction); printf ("\n\t quality flags : 0x%2.2X", data_ptr->qflags); return (SD_SUCCESS); }M_ARB_DATA_CTRL arb_print_ctrl = { prtArrStart, /* arrStart */ prtArrEnd, /* arrEnd */ prtStrStart, /* strStart */ prtStrEnd, /* strEnd */ prtInt8, /* int8 */ prtInt16, /* int16 */ prtInt32, /* int32 */ prtInt64, /* int64 */ prtUint8, /* uint8 */ prtUint16, /* uint16 */ prtUint32, /* uint32 */ prtUint64, /* uint64 */ prtFlt, /* flt */ prtDbl, /* dbl */ prtOct, /* oct */ prtBool, /* bool */ prtBcd1, /* bcd1 */ prtBcd2, /* bcd2 */ prtBcd4, /* bcd4 */ prtBs, /* bs */ prtVis, /* vis */ prtBt4, /* Bin Time */ prtBt6, /* Bin Time */ prtGt, /* Gen Time */ prtUtc /* Utc Time */ };/************************************************************************/ST_VOID print_arb_data (ST_CHAR *src, NAMED_TYPE *type, ST_BOOLEAN alt_acc_pres, ST_BOOLEAN alt_acc_packed, ALT_ACCESS *alt_acc_ptr) {#if defined(NEST_RT_TYPES)ST_BOOLEAN free_rt;#endif ms_process_arb_data (src, type->rt_head, type->rt_num, alt_acc_pres, alt_acc_packed, alt_acc_ptr, &arb_print_ctrl);#if defined(NEST_RT_TYPES) if (free_rt) chk_free (rt_head);#endif }/************************************************************************//* MV READ *//************************************************************************//* This user defined function is called when a Virtual Machine read req *//* is complete. The parameter 'req_ptr' is a pointer to the request *//* control structure that was selected when the request was made. The *//* structure now contains the results of the operation, and if OK, the *//* response data (in local representation) is available in the selected *//* buffer/location *//************************************************************************/#if MMS_MV_READ_EN & REQ_ENST_VOID u_mv_read_conf (MMSREQ_PEND *req_ptr) {READVARS_REQ_INFO *req;MV_VARDESC *varlist;READ_RESP_INFO *rsp_ptr;ACCESS_RESULT *ar_list;NAMED_TYPE *type;ST_INT i, ch;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -