am_defs.h

The following is a partial listing of this file showing you important definitions you need to know:

#ifndef _AM_DEFS_H
#define _AM_DEFS_H
#include <inc_path/ddl.h>
#include <inc_path/rtr_bcst.h>
#include <inc_path/counter.h>
#include <inc_path/ptm_defs.h>
#include <inc_path/am_defs_constants.h>
#include <malloc.h>

TCHAR* amrp_get_longname(const TCHAR* short_name, TCHAR* long_name, int long_name_len);
TCHAR* amrp_get_long_ref_id(const TCHAR* alarm_id, const TCHAR* ref_id, TCHAR* long_name, int long_name_len);

#define ALARM_GET_LONG_NAME(short_name) amrp_get_longname(short_name, (TCHAR*)_alloca((MAX_ALM_ID_LEN+1) * sizeof(TCHAR)), MAX_ALM_ID_LEN+1)
#ifndef ADHOC_DEFS_H
   #include <inc_path/adhoc_defs.h>
#endif

/***************************************/
/* Internal format of Datagram Address */
/***************************************/

typedef TCHAR AM_DADDR[DATAGRAM_NODESIZE+1+OBJECT_NAME_LEN+1];
#define AM_BLANK_MSG _T("                                             ")

/******************************************************************/
/* Interaction between AMRP and process Generating or Updating    */
/* Alarm Status                                                   */
/******************************************************************/
/* Types of responses a process can request.  Full implies, wait  */
/* until after processing is complete and sent a response on the  */
/* success or failure of the request.                             */
/******************************************************************/
typedef int AM_RESP_TYPE;
#define AM_FULL_RESP      0
#define AM_CAPTURED_RESP  1
#define AM_NO_RESP        2

/***********************************************************************/
/* Typedef for Key for identifying which segment is being responded to */
/***********************************************************************/

typedef int AM_RESP_KEY;
/*******************************************************************/
/* Alarm States                                                    */
/* WARNING - the order here must not be changed.  For efficiency   */
/* the module AM_TERM_INFO assumes the order as specified. If this */
/* is changed, active terminal alarm information will be incorrect.*/
/*                   */
/* AM_REPEATED is not an actual state, but is used for auto-repeat */
/* updates.                    */
/* AM_COMMENT_DEL is not an actual state, used for logging info.   */
/* AM_UPDATE is not a state but used to indicate that the alarm might have updated values */
/***********************************************************************/

typedef int AM_STATE_TYPE;
#define AM_GENERATED          0
#define AM_ACKNOWLEDGED       1
#define AM_CLEARED            2
#define AM_DELETED            3
#define AM_NONEXISTENT        4
#define AM_COMMENT_MSG        5
#define AM_NOSTATE            6
#define AM_REPEATED           7
#define AM_COMMENT_DEL        8
#define AM_UPDATE_ALARM       9
#define AM_SHELVED_ONESHOT   10
#define AM_SHELVED_TIMEOUT   11
#define AM_UNSHELVED         12
#define AM_CONFIRMED         13
#define AM_UNCONFIRMED       14
#define AM_BLOCKED_FLTR      15
#define AM_UNBLOCKED_FLTR    16
#define AM_SHELVED_ALL       17
/*****************************************************************/
/* number of permanent states - I.E. state in which in an alarm  */
/* can remain                                                    */
/*****************************************************************/
#define AM_NUM_PERMANENT_STATES 9  /* gen, ack, clear, shelved, unshelved, confirmed, unconfirmed, blocked, unblocked */
#define AM_STATE_TYPE_NOT_PERMAMENT COR_MAXU1
// see amaru_state_type_to_mask and amaru_bit_index_to_state_type
#define AM_GENERATED_BIT         0
#define AM_ACKNOWLEDGED_BIT      1
#define AM_CLEARED_BIT           2
#define AM_DELETED_BIT           AM_STATE_TYPE_NOT_PERMAMENT
#define AM_NONEXISTENT_BIT       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_COMMENT_MSG_BIT       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_NOSTATE_BIT           AM_STATE_TYPE_NOT_PERMAMENT
#define AM_REPEATED_BIT          AM_STATE_TYPE_NOT_PERMAMENT
#define AM_COMMENT_DEL_BIT       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_UPDATE_ALARM_BIT      AM_STATE_TYPE_NOT_PERMAMENT
#define AM_SHELVED_ONESHOT_BIT   AM_STATE_TYPE_NOT_PERMAMENT
#define AM_SHELVED_TIMEOUT_BIT   AM_STATE_TYPE_NOT_PERMAMENT
#define AM_UNSHELVED_BIT         3
#define AM_CONFIRMED_BIT         4
#define AM_UNCONFIRMED_BIT       5
#define AM_BLOCKED_FLTR_BIT      6
#define AM_UNBLOCKED_FLTR_BIT    7
#define AM_SHELVED_ALL_BIT       8
// see amaru_state_type_to_array_index and amaru_state_array_index_to_type
#define AM_GENERATED_ARRAY_INDEX         0
#define AM_ACKNOWLEDGED_ARRAY_INDEX      2 // for historical reasons, these are swapped
#define AM_CLEARED_ARRAY_INDEX           1 // for historical reasons, these are swapped
#define AM_DELETED_ARRAY_INDEX           AM_STATE_TYPE_NOT_PERMAMENT
#define AM_NONEXISTENT_ARRAY_INDEX       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_COMMENT_MSG_ARRAY_INDEX       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_NOSTATE_ARRAY_INDEX           AM_STATE_TYPE_NOT_PERMAMENT
#define AM_REPEATED_ARRAY_INDEX          AM_STATE_TYPE_NOT_PERMAMENT
#define AM_COMMENT_DEL_ARRAY_INDEX       AM_STATE_TYPE_NOT_PERMAMENT
#define AM_UPDATE_ALARM_ARRAY_INDEX      AM_STATE_TYPE_NOT_PERMAMENT
#define AM_SHELVED_ONESHOT_ARRAY_INDEX   AM_STATE_TYPE_NOT_PERMAMENT
#define AM_SHELVED_TIMEOUT_ARRAY_INDEX   AM_STATE_TYPE_NOT_PERMAMENT
#define AM_UNSHELVED_ARRAY_INDEX         3
#define AM_CONFIRMED_ARRAY_INDEX         4
#define AM_UNCONFIRMED_ARRAY_INDEX       5
#define AM_BLOCKED_FLTR_ARRAY_INDEX      6
#define AM_UNBLOCKED_FLTR_ARRAY_INDEX    7
#define AM_SHELVED_ALL_ARRAY_INDEX       8
/**********************/
/* Legal Filter Types */
/**********************/

typedef int AM_FILTER_TYPE;
#define AM_TIME_FILTER  0
#define AM_STATE_FILTER 1
#define AM_FR_FILTER    2
#define AM_CLASS_FILTER 3
#define AM_FLD_FILTER   4 // this also includes FR and CLASS filters in new setups

/* alarm block state
Alarm can remain in any of the following states.
AM_ALARM
AM_BLOCKED
AM_NO_ALARM
*/

typedef int AM_BLOCK_TYPE;
#define AM_ALARM           0
#define AM_BLOCKED         1
#define AM_NO_ALARM        2
// flags that can modify how an alarm gen is handled
#define AM_GEN_UPDATE_ALARM (1 << 0)
#define AM_GEN_IF_EXISTING  (1 << 1)
#define AM_GEN_CREATE       (1 << 2)
#define AM_GEN_ACK          (1 << 3)
#define AM_GEN_RESET        (1 << 4)
#define AM_GEN_MSGCHANGE    (1 << 5)
#define AM_GEN_IGNORE_TIME  (1 << 6)

/******************************************/
/* Type Definitions for Filter Parameters */
/******************************************/
#define SIZEOF_AM_FILTER COR_MAX(CLASS_ID_LEN+1,FR_ID_LEN+1)

/******************************************/
/* Proficy Process Systems                */
/******************************************/
//#define PPS_REF_ID          _T("ProficyProcessSystemsAlarm #")
#define PPS_REF_ID          _T("PROFICYPROCESSSYSTEMSALARM #")
 
// Values to indicate which field will be filtered on
typedef unsigned char AM_FIELD_ID;
//Values defined in am_defs_constants.h
// Value to indicate how a field will be matched
typedef unsigned char AM_FIELD_FILTER_TYPE;
//Values defined in am_defs_constants.h
// There can only be one instance of this type of filter in a segment

typedef struct am_time_state_filter
{
   COR_STAMP start_time;     // 0 if this filter is not applied
   COR_U2 alarm_state_mask;  // bit mask for alarm states to filter
} AM_TIME_STATE_FILTER;

typedef struct am_setup_field_filter
{
   AM_FIELD_ID fieldIndex;
   AM_FIELD_FILTER_TYPE matchType;
   TCHAR *filterString;
   void *regExp;
   TCHAR *upperCaseFilterString;
} AM_SETUP_FIELD_FILTER;

// Multiple field filters in a segment are represented by this structure,
// which represents the same data as AM_SETUP_FIELD_FILTER,
// but is used in segment repeat group with variable-length, NULL-terminated string
typedef struct am_field_filter
{
   AM_FIELD_ID fieldIndex;
   AM_FIELD_FILTER_TYPE matchType;
   TCHAR filterString[1];
} AM_FIELD_FILTER;

#define am_field_filter_calc_size(filter_string) (offsetof(AM_FIELD_FILTER, filterString) + (_tcslen(filter_string) + 1) * sizeof(TCHAR))
typedef union am_filter
{
   COR_STAMP      start_time;
   TCHAR          class_id[CLASS_ID_LEN+1];
   AM_STATE_TYPE  alarm_state;
   TCHAR          fr_id[FR_ID_LEN+1];
   COR_I1         _pad[DO_ALIGN(SIZEOF_AM_FILTER,4)]; /* alignment data */
} AM_FILTER;

typedef struct am_filter_parm
{
   AM_FILTER_TYPE type;
   AM_FILTER filter;
} AM_FILTER_PARM;

typedef struct am_stacked_info
{
   COR_STAMP gentime;
   AM_STATE_TYPE alarm_state;
   TCHAR alarm_msg[ALARM_MSG_LEN+1];
   COR_I1 alarmLevel;
   COR_I2 severity;
} AM_STACKED_INFO;

//SCR23024. Added to support alarm clear time in AMV's StackView option.
typedef struct am_stacked_info_ex
{
   COR_STAMP gentime;
   AM_STATE_TYPE alarm_state;
   TCHAR alarm_msg[EXPANDED_ALARM_MSG_LEN+1];
   COR_I1 alarmLevel;
   COR_I2 severity;
   COR_STAMP clrtime;
} AM_STACKED_INFO_EX;

typedef struct am_stacked_info_exV1
{
   COR_STAMP gentime;
   AM_STATE_TYPE alarm_state;
   TCHAR alarm_msg[ALARM_MSG_LEN+1];
   COR_I1 alarmLevel;
   COR_I2 severity;
   COR_STAMP clrtime;
} AM_STACKED_INFO_EX_V1;

typedef struct am_stacked_info2
{
   COR_STAMP gentime;
   AM_STATE_TYPE alarm_state;
   COR_U2 alarm_msg_ofs ; //[ALARM_MSG_LEN+1];
//          COR_I1 _pad;                 /* alignment data */
   COR_I2 severity;
   COR_U1 alarmLevel;
} AM_STACKED_INFO2 ;

typedef LCID AM_LOCALEID;
typedef unsigned short AM_UNICODESIZE;
typedef unsigned short AM_UNICODENUMBER;
struct amUnicodeStringsHeader
{
   AM_UNICODESIZE size;
   AM_UNICODENUMBER number;
   // repeated number of times
   // AM_LOCALEID langid;
   // WCHAR language[];
   // BYTE unicodeMsg[length]
};

/*********************************************************************/
/* Maximum Number of Stacked Alarms (in addition to the most recent) */
/*********************************************************************/
#define AM_MAX_STACKED 19
 
/*************************************/
/* Max length of Alarm Comment       */
/*************************************/
#define old_AM_COMMENT_LEN 72
typedef struct old_am_comment_info
{
   COR_STAMP gentime;
   TCHAR alarm_comment[old_AM_COMMENT_LEN+1];
   COR_I1 _pad[3];                        /* alignment data */
} old_AM_COMMENT_INFO;
#define AM_COMMENT2_LINE_LEN 72
#define AM_COMMENT2_LEN (AM_COMMENT2_LINE_LEN*10)

typedef struct am_comment_info2
{
   COR_STAMP gentime;
   TCHAR alarm_comment[AM_COMMENT2_LEN+1];
   COR_I1 _pad[3];                        /* alignment data */
} AM_COMMENT2_INFO;
#define AM_COMMENT_ACT_ADD           _T('A')
#define AM_COMMENT_ACT_DELETE        _T('D')

/*********************************************************************/
/* Maximum Number of Alarm Comments                                  */
/*********************************************************************/
#define AM_MAX_ALARM_COMMENTS 20

/************************************/
/* Maximum size of a string parameter */
/************************************/
#define AM_MAX_STR 73

/********************************************/
/* Log and Delete Option Character Meanings */
/********************************************/
#define AM_ACK_CHAR  _T('A')
#define AM_CLR_CHAR  _T('R')
#define AM_DEL_CHAR  _T('D')
#define AM_GEN_CHAR  _T('G')
#define AM_SHELVE_CHAR  _T('S')
#define AM_TIMEDSHELVE_CHAR  _T('T')

/*******************************************************************/
/* Defines for alarm visibility type                               */
/* WARNING - the order here must not be changed.  For efficiency   */
/* the module AM_TERM_INFO assumes the order as specified. If this */
/* is changed, active terminal alarm information will be incorrect.*/
#define AM_ALL_ALARMS  0  /* all alarms visible by this user */
#define AM_UNACK_ONLY  1  /* all unacknowledged alarms visible by this user  */
#define AM_UNACK_UNCLR 2  /* all unacknowledged, uncleared alarms visible by */
/* this user */
 
/**********************************/
/* Defines for Message Formatting */
/**********************************/
#define AM_DG       _T('D')
#define AM_NON_DG   _T('L')
#define AM_LL       _T('L')
 
/***************************/
/* Resident Process States */
/***************************/
typedef int AMRP_STATE_TYPE;

/*********************/
/* Legal AMRP States */
/*********************/
#define AMRP_ACTIVE    0
#define AMRP_STANDBY     1

/***************************/
/* Legal Alarm Field Types */
/***************************/
typedef int AM_FIELD_TYPE;
#define AM_CHAR 0
#define AM_STR 1
#define AM_INT 2
#define AM_COR_I1 3
#define AM_COR_I2 4
#define AM_COR_I4 5
#define AM_COR_BOOLEAN 6
#define AM_COR_U1 7
#define AM_COR_U2 8
#define AM_COR_U4 9
#define AM_FLOAT 10
#define AM_SEVERITY 11  // this is a special field that holds the alarm severity level
#define AM_LEVEL 12  // this is a special field that holds the alarm state(Alarm - hi, lo: Warning - hi, lo)
#define AM_OPC_CATEGORY 13
#define AM_OPC_CONDITION 14
#define AM_OPC_SUBCONDITION 15
#define AM_STR_CONCAT 16
#define AM_POINT_VALUE 17
#define AM_STR_TRANSLATE 18
#define AM_USER_BITS 20
#define AM_POINT_VALUE1 21
#define AM_POINT_VALUE2 22
#define AM_POINT_VALUE3 23
#define AM_POINT_VALUE4 24
#define AM_POINT_VALUE5 25
#define AM_POINT_VALUE6 26
#define AM_POINT_VALUE7 27
#define AM_POINT_VALUE8 28
#define AM_POINT_VALUE9 29
#define AM_POINT_ID1 31
#define AM_POINT_ID2 32
#define AM_POINT_ID3 33
#define AM_POINT_ID4 34
#define AM_POINT_ID5 35
#define AM_POINT_ID6 36
#define AM_POINT_ID7 37
#define AM_POINT_ID8 38
#define AM_POINT_ID9 39
#define AM_COR_U8 40
#define AM_COR_I8 41
#define AM_STR_SHORT 42
#define AM_EXP_MSG_LEN      EXPANDED_ALARM_MSG_LEN  //( ALARM_MSG_LEN ) /* from sc_recs.h */
 
#define AM_MAX_FIELDS   6 /* warning, if this number is changed, so must   */
/* the case statement in procedure am_msg_expand */
// optional fields that can be enabled thru configuration now
#define AM_POINT_VALUE_FIELD _T("point_val")
#define AM_USER_BITS_FIELD _T("user_bits")
#define AM_POINT_VALUE1_FIELD _T("point_val_1")
#define AM_POINT_ID1_FIELD _T("point_id_1")
#define AM_POINT_VALUE2_FIELD _T("point_val_2")
#define AM_POINT_ID2_FIELD _T("point_id_2")
#define AM_POINT_VALUE3_FIELD _T("point_val_3")
#define AM_POINT_ID3_FIELD _T("point_id_3")
#define AM_POINT_VALUE4_FIELD _T("point_val_4")
#define AM_POINT_ID4_FIELD _T("point_id_4")
#define AM_POINT_VALUE5_FIELD _T("point_val_5")
#define AM_POINT_ID5_FIELD _T("point_id_5")
#define AM_POINT_VALUE6_FIELD _T("point_val_6")
#define AM_POINT_ID6_FIELD _T("point_id_6")
#define AM_POINT_VALUE7_FIELD _T("point_val_7")
#define AM_POINT_ID7_FIELD _T("point_id_7")
#define AM_POINT_VALUE8_FIELD _T("point_val_8")
#define AM_POINT_ID8_FIELD _T("point_id_8")
#define AM_POINT_VALUE9_FIELD _T("point_val_9")
#define AM_POINT_ID9_FIELD _T("point_id_9")
// Defines for the OPC A&E Server, do not use 0
#define AM_OPC_TYPE_CONDITION 1
#define AM_OPC_TYPE_SIMPLE    2
#define AM_OPC_TYPE_TRAKING   3
 
#define AM_STATE_LEN    3
#define AM_TIME_LEN    22
/************************************************************/
/* Typedefs neccessary to define unformatted message fields */
/************************************************************/
#define SIZEOF_AM_FIELD (AM_MAX_STR+1)

typedef union am_field
{
   COR_I4 cori4_val;
   COR_I2 cori2_val;
   COR_I1 cori1_val;
   COR_I8 cori8_val;
   COR_U4 coru4_val;
   COR_U2 coru2_val;
   COR_U1 coru1_val;
   COR_U8 coru8_val;
   COR_BOOLEAN corbool_val;
   int ival;
   float fval;
   __int64 val64;
   unsigned __int64 valu64;
   TCHAR chval;
   TCHAR str[AM_MAX_STR+1];
   /* This structure must be aligned because it is contained
    * in the AM_GEN_SEG message segment, which may be passed
    * in a hybrid environment. */
   COR_I1 _pad[DO_ALIGN(SIZEOF_AM_FIELD,8)];
} AM_FIELD;

typedef struct am_msg_field
{
   AM_FIELD_TYPE ftype;
   AM_FIELD field;
} AM_MSG_FIELD;

typedef struct am_field_parms
{
   int fld_sz ;
   void *pfld_data ;
   unsigned char fld_type ;
} AM_FIELD_PARMS ;
typedef struct alarm_ca_alarmoper_req
{
   TCHAR performuserid[USER_ID_LEN + 1 ];
   TCHAR performpassword[PASSWORD_LEN+1];
   TCHAR performcomment[CHANGEAPPROVAL_COMMENT_LEN + 1];
   TCHAR verifyuserid[USER_ID_LEN + 1];
   TCHAR verifypassword[PASSWORD_LEN+1];
   TCHAR verifycomment[CHANGEAPPROVAL_COMMENT_LEN + 1];
   TCHAR location[MAX_COMPUTERNAME_LENGTH + 1];
} ALARM_CA_ALARM_OPER_REQ;
/*************************************/
/* Max length of reference id string */
/*************************************/
//REF_ID_LEN - AM_REF_ID_LEN must be at least as large as REF_ID_LEN!!!
#define AM_REF_ID_LEN REF_ID_LEN
#define AM_REF_ID_LEN32 32 //for compat. with older mf items / systems
#define AM_NULL_REF_ID -1
#define AM_NULL_ID -1
/***********************************/
/* Length of buffer in am_log    */
/***********************************/
#define AM_LOG_BUF_SIZE 156

// Lower 4 bits in log_file of ALARM_DEF
#define AM_LOG_ALARM_FILE     0
#define AM_LOG_ALTERNATE_FILE 1
#define AM_LOG_BOTH_FILES     2
#define LOBITS(n)           (n & 0x0F)
#define HIBITS(n)           ((n & 0xF0) >> 4)
 
/* The character that begins a site-wide setup name. */
#define AM_SITE_WIDE_CHAR  _T('$')
/* These help us create aligned messages. */
#define SETUP_ID_MFLEN DO_ALIGN(SETUP_ID_LEN+1,4)
#define USER_ID_MFLEN  DO_ALIGN(USER_ID_LEN+1,4)
/* The name that is displayed when the user is using an ad hoc
 * setup.  (This must be SETUP_ID_LEN characters or less).
 *                        0123456789ABCDEF
 */
#define AMAP_ADHOC_SETUP _T("<AD HOC SETUP>")
#define AM_HELPTEXT_LEN 72
#define AM_HELPTEXT_NUM_LINES 59
// Flags for the AM_GEN_LIST_EX2 struct alarmRequestFlags field
#define ALM_REQ_DELETED_ALARMS 0x01
#define ALM_REQ_OPC_ALARMS     0x02
/*********************************************************************/

typedef struct
{
   int             seg_num ;
   AM_STATE_TYPE   action ;
   COR_I4          seq_num ;
   TCHAR           *alarm_id;
   TCHAR           *fr_id;
   TCHAR           *ref_id;
   TCHAR           *user_or_serv_id;
   /* These items only in update_ex_seg, AM_VERS_1 */
   COR_STAMP       upd_time ;
   COR_I4          version ;
   char *conc_alarm_id;
   TCHAR *perform_user_id;
   TCHAR *perform_user_password;
   TCHAR *perform_user_comments;
   TCHAR *verify_user_id;
   TCHAR *verify_user_password;
   TCHAR *verify_user_comments;
} AMU_UPDATE_INFO ;
/* segment/feature Versioning information */
/* initiated with creation of am_list_ex, am_upd_inf_ex, am_gen_list_ex */
#define AM_VERS_0   0
#define AM_VERS_1   1
#define AM_VERS_2               2
#define AM_VERS_3   3 /*lengthened, perm., comments */
#define AM_VERS_4   4 /* added alarm severity to the AM_STACKED_INFO structure */
#define AM_VERS_5   5 /* added alarm blinking */
#define AM_VERS_6   6 /* lengthened alarm IDs */
#define AM_VERS_6_1 7 // added support for OPC
#define AM_VERS_6_1_1 8 // added support for unicode messages
#define AM_VERS_6_1_3 9 // added OPC CV
#define AM_VERS_6_1_4 10 // COR_STAMP
#define AM_VERS_6_1_4_1 11 // fix COR_STAMP reset time usage
#define AM_VERS_6_1_5_1  12    //SCR23024
#define AM_VERS_6_3   13 // OPC changes for events
#define AM_VERS_7_0   14 // ackStamp and deletedStamp
#define AM_VERS_8_1 15 // some alarm parameters split to provide individual parameter for each alarm level
#define AM_VERS_8_2 16 //Change approval support for alarms.
#define AM_VERS_9_0 17 //Long name support for alarms
#define AM_VERS_10_0 18 // Shelving support for alarms
#define AM_VERS_10_99 19 // description in alarm data
#define AM_VERS_OFFSET 1000 // AM version 6_0 sends back the client version in AM_LIST_EX2
// so if the version is > AM_VERS_OFFSET subtract the offset and you get the correct version
/* If you add a new version, bump the current version, as all code
** using this should be compatible
** with any earlier versions (provided fields are NOT removed.)
*/
#define AM_VERS_CURRENT   AM_VERS_10_99
// Prototypes
void am_alloc_init(void);
void am_alloc_gen_list(TCHAR (*alloc_addr)[30],TCHAR (*cm_addr)[30],TCHAR dyn_disp_mode,int *total_alarms, COR_BOOLEAN comments_wanted, int version, AM_LOCALEID langId, WCHAR *language, COR_BOOLEAN allLanguages, COR_U2 alarmRequestFlags, struct cor_status *ret_stat);
void am_alloc_snd_list(struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag,TCHAR (*alloc_addr)[30],int max_to_send,struct cor_status *ret_stat);
void am_alloc_creseg(int size,int seg_type,int rep_count,TCHAR need_all,TCHAR **seg_ptr,int *ret_count,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag,struct cor_status *ret_stat);
void am_alloc_rem_proc(TCHAR (*alloc_addr)[30],struct cor_status *ret_stat);
void am_alloc_add_proc(TCHAR (*alloc_addr)[30],TCHAR (*cm_addr)[30],struct ipc_time_stamp *stamp,struct cor_status *ret_stat);
void am_alloc_rem_all_ap_alarms(long *alloc_proc_ptr);
void am_alloc_unexp_term(struct datagram_address *sender);
void am_allocq_add(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag, int ipc_version);
void am_allocq_process(void);
void am_allocq_rem_req(long *alloc_req_ptr);
void am_allocq_add_resp(long *alloc_req_ptr,struct cor_status *ret_stat,TCHAR total_valid,int total_alarms);
void am_allocq_rem_all_resp(long *alloc_req_ptr);
void am_allocq_send_resp(long *alloc_req_ptr,int msg_status);
void am_allocq_send_slave(TCHAR *body,int segment);
long *am_ap_add_alarm(long *alloc_proc_ptr,long *alarm_occur_ptr,int insert_location,long *ap_pos_ptr);
void am_ap_rem_alarm(long *ap_alarm_ptr);
void am_auto_init(void);
void am_auto_start_timer(void);
void am_auto(void);
void am_auto_add_clr(long *alarm_def_ptr,long *alarm_occur_ptr, int which_level);
void am_auto_add_ack(long *alarm_def_ptr,long *alarm_occur_ptr, int which_level);
void am_auto_add_repeat(long *alarm_def_ptr,long *alarm_occur_ptr, int which_level);
void am_auto_rem_ack(long *alarm_occur_ptr, int which_level);
void am_auto_rem_clr(long *alarm_occur_ptr, int which_level);
void am_auto_rem_repeat(long *alarm_occur_ptr, int which_level);
void am_auto_gen_explist(void);
void am_auto_process_explist(void);
void am_auto_slave_init(void);
void am_auto_slave_flush(void);
void am_auto_slave_upd_add(TCHAR *alarm_id,TCHAR *fr_id,TCHAR *ref_id,int action,int seq_num);
void am_build_alarm_list(long *alloc_proc_ptr,long *active_term_ptr,struct cor_status *ret_stat);
void am_build_by_fr(long *alloc_proc_ptr,long *active_term_ptr);
void am_build_by_class(long *alloc_proc_ptr,long *active_term_ptr);
void am_build_by_state(long *alloc_proc_ptr,long *active_term_ptr);
void am_build_by_time(long *alloc_proc_ptr,long *active_term_ptr);
COR_BOOLEAN am_check_ff(long *alloc_proc_ptr,long *alarm_occur_ptr,long *active_term_ptr, long *alarm_info);
COR_BOOLEAN am_check_fr(long *alloc_proc_ptr,long *alarm_occur_ptr,long *active_term_ptr, long *alarm_info);
COR_BOOLEAN am_check_class(long *alloc_proc_ptr,long *alarm_def_ptr, long *alarm_info);
COR_BOOLEAN am_check_role(long *role_ptr,long *alarm_def_ptr);
COR_BOOLEAN am_check_state(struct allocated_process * alloc_proc_ptr,
                           struct alarm_info * alarm_info_ptr, //pointer to DMS alarm info record
                           struct alarm_occurrence * alarm_occurrence_ptr);
COR_BOOLEAN am_check_time(long * alloc_proc_ptr, long * alarm_info_ptr);
COR_BOOLEAN am_should_severity_override_filter(struct alarm_info *alarm_info_ptr);
long * am_create_alarm_info();
void am_set_alarm_info_severity(long* alarm_info_ptr, COR_I2 severity);
void am_cmd_init(void);
void am_cmd_get(int *cmd,TCHAR **msg_ptr,struct datagram_address *sender,struct ipc_time_stamp **stamp,TCHAR *rr_flag, int *ipc_version);
void am_cmd_get_dg(int *cmd,TCHAR **msg_ptr,struct datagram_address *sender,struct ipc_time_stamp **stamp,TCHAR *rr_flag, int *ipc_version,int curr_state,struct cor_status *ret_stat);
void am_cmd_get_ur(int *cmd,TCHAR **msg_ptr,struct cor_status *ret_stat);
void am_cmd_get_master(int *cmd,TCHAR **msg_ptr,DADDR *psender,struct cor_status *ret_stat);
void am_ipc_link_term(struct cor_status *ret_stat,int link_index);
void am_comm_init(void);
void am_comm_term(void);
void am_comment_alarm(const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,int action,const TCHAR *alarm_comment,struct cor_time_stamp *gentime,struct cor_status *ret_stat, COR_BOOLEAN skip_log);
void am_comment_add(long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,const TCHAR *alarm_comment,struct cor_time_stamp *gentime,struct cor_status *ret_stat, long *alarm_def_ptr);
void am_conc_proc_alarm_gen(struct testContext* pContext, struct AlarmInfo* pAlarmInfo);
void am_conc_proc_alarm_almmoddel(struct testContext *pContext, TCHAR *pAlmInf);
void am_config_terminate(void);
void am_config_init(void);
void am_config_get_type_info(TCHAR *sc_type_ptr,struct cor_status *ret_stat);
void am_config_type_info(void);
void am_config_class(void);
void am_config_role(void);
void am_config_fr_info(void);
COR_BOOLEAN am_config_get_info(TCHAR *sc_def_ptr,struct cor_status *ret_stat, LPCTSTR alarmId, int alarm_num,TCHAR dynamic_cfg, LPCTSTR roleAlarm);
COR_BOOLEAN am_config_get_info_ex(TCHAR *sc_def_ptr,struct cor_status *ret_stat, struct cor_statusV1 *ret_v1stat,LPCTSTR alarmId, int alarm_num,TCHAR dynamic_cfg, LPCTSTR roleAlarm);
void am_config_create_alarm(LPCTSTR alarmId, LPCTSTR modelAlarm);
void am_config_alarm_info(struct cor_status *ret_stat);
void am_config_init_alarm_info(void);
void am_config_global_data(void);
void am_config_link_field(long *alarm_field_ptr,long *alarm_type_ptr);
void am_config_link_class(long *class_ptr);
void am_config_init_ref_info(void);
void am_config_ptm_ack(void);
int am_config_user_setups(void);
void am_daddr_to(TCHAR *dest,struct datagram_address *src);
void am_daddr_from(struct datagram_address *dest,TCHAR *src);
void am_dd_rem_alloc_proc(long *alloc_proc_ptr);
void am_dd_info_upd(long *alarm_def_ptr,long *alarm_occur_ptr,long *alarm_info_ptr,int prev_state,int action);
void am_dd_info_upd_EX(RECORD_PTR alarm_def_ptr,
                       RECORD_PTR alarm_occur_ptr,
                       RECORD_PTR alarm_info_ptr,
                       AM_STATE_TYPE prev_state,
                       AM_STATE_TYPE action,
                       BOOL sendDeleted);
void am_dd_info_process(long *alarm_def_ptr,long *alloc_proc_ptr,long *active_term_ptr,long *alarm_occur_ptr,long *alarm_info_ptr,long *fr_ptr,int prev_state,int action);
void am_dd_info_upd_load(long *alloc_proc_ptr,long *alarm_def_ptr,long *alarm_occur_ptr,long *alarm_info_ptr,int prev_state,int action,long *fr_ptr,struct cor_status *ret_stat);
void am_dd_flush(void);
void am_debug_on(void);
void am_debug_off(void);
void am_driver_reset(void);
void am_driver_inc_gen(void);
void am_driver_inc_upd(void);
void am_driver_inc_log(int diff);
void am_driver_auto(void);
void am_dyncfg_proc(TCHAR *body_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr);
void am_dyncfg_delete_proc(TCHAR *body_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr);
void am_filter_mod_parms(long *alloc_proc_ptr,int primary_filter,TCHAR first_filter_msg,struct am_filter_parm *filter_parms,int num_filter_parms,struct cor_status *ret_stat);
void am_filter_mod_parms_ex(long *alloc_proc_ptr, int primary_filter, const AM_TIME_STATE_FILTER* ts_filter, TCHAR first_filter_msg, const unsigned char* field_filters, int num_filters, int total_filter_bytes, struct cor_status *ret_stat);
void am_filter_rem_frs(long *alloc_proc_ptr);
void am_filter_rem_ffs(long *alloc_proc_ptr);
void am_filter_rem_classes(long *alloc_proc_ptr);
void am_filter_set_default(long *alloc_proc_ptr);
void am_filter_default_states(long *alloc_proc_ptr);
void am_filter_default_ff(long *alloc_proc_ptr);
void am_filter_default_fr(long *alloc_proc_ptr);
void am_filter_default_classes(long *alloc_proc_ptr);
void am_find_master(TCHAR *am_ptm_resync);
//fld_fmt identifies:
//1==structured format for alarm msg parameters
//2==linear memory format for alarm msg parameters

void am_gen_alarm(int fld_fmt, const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,int seq_num,
                  void/*struct am_msg_field*/ *alarm_fields,TCHAR reset_follows,int num_fields,
                  COR_STAMP *gentime, long **palarm_occurrence, COR_U2 alarm_gen_flags, struct cor_status *ret_stat);
void am_gen_new_alarm(int fld_fmt, long *alarm_def_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,
                      long *service_ptr,void /*struct am_msg_field*/ *alarm_fields,int num_fields,
                      const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,int seq_num,
                      COR_STAMP *gentime, long **palarm_occurrence, COR_U2 genFlags, struct cor_status *ret_stat);
void am_gen_existing_alarm(int fld_fmt, long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,
                           long *ref_ptr,long *service_ptr,void /*struct am_msg_field*/ *alarm_fields,
                           TCHAR reset_follows,int num_fields,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,
                           const TCHAR *user_or_serv_id,int seq_num, COR_STAMP *gentime, COR_U2 genFlags,
                           struct cor_status *ret_stat);
void am_gen_update_alarm(int fld_fmt, long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,
                         long *ref_ptr,long *service_ptr,void /*struct am_msg_field*/ *alarm_fields,
                         TCHAR reset_follows,int num_fields,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,
                         const TCHAR *user_or_serv_id,int seq_num, COR_STAMP *gentime,
                         struct cor_status *ret_stat);
void am_get_alarms(struct cor_status *ret_stat,int link_index);
void am_init(void);
void am_intproc_upd(long *fr_ptr,long *alarm_def_ptr,long *alarm_info_ptr,int prev_state,int action,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *service_sought,COR_I4 seq_num,BOOL blocked);
void am_jrnl_init(void);
int am_jrnl_open(int file,struct cor_status *ret_stat);
void am_jrnl_write_delta(TCHAR *msg_ptr,int msglen);
int am_jrnl_timer(int action,struct cor_status *ret_stat);
int am_jrnl_rollover(struct cor_status *ret_stat);
void am_jrnl_check_rollover(void);
int am_jrnl_write_dump(struct cor_status *ret_stat);
int am_jrnl_read_delta(struct cor_status *ret_stat);
int am_jrnl_read_dump(struct cor_status *ret_stat);
int am_jrnl_reset_delta(struct cor_status *ret_stat);
int am_jrnl_rename_dump(struct cor_status *ret_stat);
int am_jrnl_recover(int cond,struct cor_status *ret_stat);
void am_jrnl_error(long code,TCHAR *proc_id,struct cor_status *ret_stat);
void am_jrnl_recov_err(int cond,struct cor_status *ret_stat);
void am_jrnl_terminate(void);
void am_log_upd(long *alarm_def_ptr,long *alarm_info_ptr,int prev_state,int action,const TCHAR *alarm_id,
                const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *log_id, void /*struct am_msg_field*/ *alarm_fields, int num_fields, COR_STAMP *stamp );
void am_log_ca_serv_upd(long *alarm_def_ptr,long *alarm_info_ptr,int action,int actStatus,const TCHAR *alarm_id,const TCHAR *user_or_serv_id,
                        TCHAR *location);
int am_log_check(long *alarm_def_ptr,int log_on_action, COR_I2 alarm_level);
void am_log_init(void);
void am_log_flush(void);
void am_log_terminate(void);
void am_log_load_data_field(void);
void am_master_init(void);
void am_master_slave_add(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_master_slave_rem(long *slave_ptr);
void am_master_upd_slaves(TCHAR *msg_ptr,int msg_len);
void am_master_upd_slaves_wsender(TCHAR *msg_ptr,int msg_len,DADDR *psender, COR_STATUS *pret_stat);
void am_master_transition(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_msg_expand(long *alarm_def_ptr,long *alarm_info_ptr,struct am_msg_field *alarm_fields,int num_fields,TCHAR *category,TCHAR *condition,TCHAR *subcondition, TCHAR *opcCv, struct cor_status *ret_stat);
void am_msg_gen2_expand(long *alarm_def_ptr,long *alarm_info_ptr, void /*struct am_msg_field*/ *alarm_fields,int num_fields,TCHAR *category,TCHAR *condition,TCHAR *subcondition, TCHAR *opcCv, struct cor_status *ret_stat);
int am_msg_cvt(TCHAR *msg,int endian,int fp);
void am_new_master(struct ipc_dad_lst *list_proc_ptr,int cnt,struct cor_status *ret_stat);
void am_occur_find(const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,long **alarm_occur_ptr,long **alarm_def_ptr,long **fr_ptr,long **alarm_fr_ptr,long **ref_ptr,long **service_ptr,struct cor_status *ret_stat);
void am_occur_rem(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,long *service_ptr);
void am_ptm_inform(TCHAR resync);
void refresh_alarm_info_to_ptm();
void am_ptm_ack_info(const TCHAR *user_or_serv_id,const TCHAR *ref_id,int seq_num);
void am_ptm_ack_info_flush(void);
void am_ptm_alm_info(RECORD_PTR fr_ptr,RECORD_PTR alarm_def_ptr,RECORD_PTR alarm_info_ptr,AM_STATE_TYPE prev_state,AM_STATE_TYPE action,const TCHAR alarm_id[ALARM_ID_LEN+1],const TCHAR fr_id[FR_ID_LEN+1],const TCHAR ref_id[AM_REF_ID_LEN+1],COR_I4 seq_num);
int am_ptm_process_que(struct datagram_address *sender);
void am_purge_init(void);
int am_purge_or_delete_alarms(const TCHAR *user_or_serv_id,int action, struct cor_status *ret_stat);
void am_report_error_init(void);
void am_report_error(const TCHAR proc_name[],COR_STATUS *ret_stat,int severity);
void am_report_error_wparam(const TCHAR proc_name[], COR_STATUS *ret_stat,int severity,const TCHAR param[],const TCHAR param2[]);
void am_report_error_wparam_ex(const TCHAR proc_name[], COR_STATUS *ret_stat,COR_STATUSV1 *ret_v1stat,int severity,const TCHAR param[],const TCHAR param2[]);
void am_sched_init(struct am_sched_data *am_sched_array);
void am_sched_next_action(struct am_sched_data *am_sched_array,int *next_action);
void am_sched_sort_sched(struct am_sched_data *am_sched_array);
int am_seq_set(TCHAR *msg_ptr,struct cor_status *ret_stat);
int am_setup_exists(TCHAR *user_id,TCHAR *setup_id,struct cor_status *ret_stat);
void am_setup_makegroupkey(TCHAR *user_id,TCHAR *setup_id,TCHAR *key_value);
int am_setup_delete(TCHAR *user_id,TCHAR *setup_id,struct cor_status *ret_stat);
int am_setup_delete_FF(TCHAR *user_id,TCHAR *setup_id,struct cor_status *ret_stat);
int am_setup_delete_helper(int record_id,int key_id,TCHAR *key_value,struct cor_status *ret_stat);
int am_setup_do_save(long *alloc_proc_ptr,TCHAR *user_id,TCHAR *setup_id,COR_BOOLEAN deleteFF,struct cor_status *ret_stat);
void am_setup_invalidate_list(void);
int am_setup_set_default(TCHAR *user_id,TCHAR *setup_id,struct cor_status *ret_stat);
void am_setup_clear(TCHAR *alloc_addr,long *alloc_req_ptr,struct cor_status *ret_stat);
int am_setup_count(long *alloc_proc_ptr,TCHAR *user_id);
int am_setup_send_filter(TCHAR *alloc_addr,long *alloc_req_ptr,long *alloc_proc_ptr,TCHAR *setup_id);
int am_setup_send_filter_v10(TCHAR *alloc_addr,long *alloc_req_ptr,long *alloc_proc_ptr,TCHAR *setup_id);
int am_setup_send_filter_current(TCHAR *alloc_addr,long *alloc_req_ptr,long *alloc_proc_ptr,TCHAR *setup_id);
void am_setup_send_filter_add_n_send_v10(struct datagram_address *sender,struct ipc_time_stamp *stamp,long *alloc_proc_ptr,TCHAR **seg_ptr,int *count,int *curr_repeat,int *repeats,struct am_filter_parm *filter_parm,const TCHAR* setup_id,struct cor_status *ret_stat);
void am_setup_send_filter_add_n_send_current(struct datagram_address *sender,struct ipc_time_stamp *stamp, COR_U2 alarm_state_mask, COR_STAMP* alarm_timestamp, long *alloc_proc_ptr,TCHAR **seg_ptr,int *count_repeat_bytes,int *curr_repeat_byte,int *curr_filter_count,int *repeats, AM_FIELD_FILTER* filed_filter,const TCHAR *filter_string, const TCHAR *setup_id,struct cor_status *ret_stat);
int am_setup_list(TCHAR *alloc_addr,long *alloc_req_ptr,TCHAR *user_id,struct cor_status *ret_stat);
int am_setup_load(TCHAR *alloc_addr,long *alloc_req_ptr,TCHAR *user_id,TCHAR *setup_id,struct cor_status *ret_stat);
int am_setup_save(TCHAR *alloc_addr,TCHAR *user_id,TCHAR *setup_id,TCHAR first_filter_msg,TCHAR last_filter_msg,int primary_filter,struct am_filter_parm *filter_parms,int num_filter_parms,struct cor_status *ret_stat);
int am_setup_save_ex(TCHAR *alloc_addr, TCHAR *user_id, TCHAR *setup_id, TCHAR first_filter_msg, TCHAR last_filter_msg, int primary_filter, const AM_TIME_STATE_FILTER* ts_filter, const unsigned char *field_filters, int num_filters, int total_filter_bytes, struct cor_status *ret_stat);
void am_shutdown(void);
void am_slave_snd_not_master(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_snd_alarm_info(int link_id,struct cor_status *ret_stat);
void am_snd_alarm_info_creseg(int size,int seg_type,int rep_count,TCHAR need_all,TCHAR **seg_ptr,int *ret_cnt,int link_id,struct cor_status *ret_stat);
void am_snd_segerr_stat(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_snd_stat(struct cor_status *stat,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_snd_stat(struct cor_status *stat,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag);
void am_snd_stat_ex(struct cor_status *stat,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR snd_as_rr, TCHAR resp_2_rr);
void am_term_init(void);
void am_term_process_ur(TCHAR *msg_ptr);
void am_term_add(TCHAR *msg_ptr,TCHAR *seg_ptr, int seg_type);
void am_term_rem(struct datagram_address *cm_addr);
void am_term_info_upd(long *alarm_def_ptr,long *alarm_occur_ptr,long *alarm_info_ptr,int prev_state);
void am_term_info_process(long *alarm_def_ptr,long *role_ptr,long *active_term_ptr,long *alarm_info_ptr,int prev_state);
void am_term_info_prc_actions(long *active_term_ptr,long *alarm_info_ptr,long *role_ptr,int *action_set);
void am_term_info_summary(long *active_term_ptr,long *role_ptr,TCHAR need_count);
void am_upd_alarm(const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,int action,
                  int seq_num, COR_STAMP *upd_time, struct cor_status *ret_stat,COR_STAMP *unshelve_time,TCHAR *comment, void *objCaData);
void am_upd_ack(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,
                long *service_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,
                COR_STAMP *upd_time, TCHAR *occur_deleted, void *objCaData, struct cor_status *ret_stat);
void am_upd_clr(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,
                long *service_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,
                COR_STAMP *upd_time, TCHAR *occur_deleted, void *objCaData, struct cor_status *ret_stat);
void am_upd_repeat(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,
                   long *ref_ptr,long *service_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,
                   const TCHAR *user_or_serv_id, COR_STAMP *upd_time, TCHAR *occur_deleted,
                   struct cor_status *ret_stat);
void am_upd_del(long *alarm_def_ptr, long *alarm_occur_ptr, long *fr_ptr, long *alarm_fr_ptr,
                long *ref_ptr, long *service_ptr, const TCHAR *alarm_id, const TCHAR *fr_id, const TCHAR *ref_id,
                const TCHAR *user_or_serv_id, COR_STAMP *upd_time,  void *objCaData, struct cor_status *ret_stat);
void am_upd_ca_serv_ack(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,
                        long *service_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,
                        COR_STAMP *upd_time, TCHAR *occur_deleted,TCHAR *location,struct cor_status *ret_stat);
void am_upd_ca_serv_clr(long *alarm_def_ptr,long *alarm_occur_ptr,long *fr_ptr,long *alarm_fr_ptr,long *ref_ptr,
                        long *service_ptr,const TCHAR *alarm_id,const TCHAR *fr_id,const TCHAR *ref_id,const TCHAR *user_or_serv_id,
                        COR_STAMP *upd_time, TCHAR *occur_deleted,TCHAR *location,struct cor_status *ret_stat);
void am_upd_ca_serv_del(long *alarm_def_ptr, long *alarm_occur_ptr, long *fr_ptr, long *alarm_fr_ptr,
                        long *ref_ptr, long *service_ptr, const TCHAR *alarm_id, const TCHAR *fr_id, const TCHAR *ref_id,
                        const TCHAR *user_or_serv_id, COR_STAMP *upd_time,TCHAR *location, struct cor_status *ret_stat);
void am_upd_active_terms(void);
void am_updq_add(TCHAR *msg_ptr,struct datagram_address *sender,struct ipc_time_stamp *stamp,TCHAR rr_flag,TCHAR jrnl_recover);
void am_updq_process(struct cor_time_stamp *gentime);
void am_updq_add_resp(long *upd_req_ptr,int key,struct cor_status *cor_stat,int seq_num);
void am_updq_rem_req(long *upd_req_ptr);
void am_updq_rem_all_resp(long *upd_req_ptr);
void am_updq_send_resp(long *upd_req_ptr);
void am_ur_caradd(struct cor_status *ret_stat);
void am_ur_findnew(void);
int amrp_state(void);
void amrp_setstate(int new_state);
void amrp_remove_master_logical(void);
long *am_find_extmgr(struct datagram_address *pdaddr, TCHAR proc_name[]) ;
COR_I4   am_conc_pass_update_extmgr(DADDR *extmgr_daddr, int seg_type, TCHAR *seg_ptr, COR_I4  seg_len, COR_I4 rpt_len, COR_STATUS *ret_stat) ;
void am_process_ext_asmgr_req(TCHAR *msg_ptr, DADDR *sender, IPC_stamp *stamp, COR_BOOLEAN was_rr_flag) ;
COR_I4 am_init_extmgr() ;
void am_dd_comment_upd ( long *alarm_occur_ptr, long *alarm_comm_ptr, TCHAR comment_action ) ;
void am_dd_reset_term (RECORD_PTR alloc_proc_ptr);
int am_operhlp_load(AM_DADDR alloc_addr, RECORD_PTR alloc_req_ptr, TCHAR *alarmId, COR_STATUS *ret_stat);
COR_BOOLEAN am_proc_dead_asmgr (DADDR * psender);
COR_I4 am_init_updq_mutex(COR_STATUS *ret_stat);
int am_operhlp_filename(const TCHAR alarm_id[ALARM_ID_LEN + 1],
                        TCHAR helpFile[HELP_FNAME_LEN+1],
                        COR_STATUS *ret_stat);
int am_operhlp_count_lines(const TCHAR *help_file, int *count, COR_STATUS *retstat);
//scr 23546
BOOL am_remove_operhlp_extension(const TCHAR* i_help_file, TCHAR* o_help_file_no_ext);
BOOL am_gen_set_block_state(RECORD_PTR alarm_def_ptr,const TCHAR* fr_id);
void am_alarm_dump(TCHAR *msg_ptr);
void am_unblock_get_group_ptr(RECORD_PTR alarm_def_ptr,const TCHAR *fr_id,RECORD_PTR* org_blk_alarm_ptr,RECORD_PTR* blk_group_ptr);
void am_config_alarm_blk(void);
COR_I4 am_comment_file_erase(const TCHAR *palarm_id, const TCHAR *pres_id, const TCHAR *pref_id, COR_STATUS *pretstat);
COR_I4 am_comment_file_add(const TCHAR *palarm_id, const TCHAR *palarm_comment, COR_STAMP *pgentime
                           , const TCHAR *pres_id, const TCHAR *pref_id, COR_STATUS *pretstat);
COR_I4 am_comment_file_fetch(const TCHAR *palarm_id, RECORD_PTR alarm_occur_ptr
                             , const TCHAR *pres_id, const TCHAR *pref_id, COR_STATUS *pretstat);
void am_remove_all_alarm_comments(RECORD_PTR alarm_occur_ptr) ;
void am_comment_delete (
   COR_STATUS    *pret_stat,
   const TCHAR          *alarm_id,
   const TCHAR          *fr_id,
   const TCHAR          *ref_id,
   const TCHAR          *user_or_serv_id,
   AM_STATE_TYPE action,
   AM_COMMENT2_INFO *pcomment_info,
   COR_STAMP     *gentime,
   RECORD_PTR     alarm_occur_ptr,
   RECORD_PTR     alarm_def_ptr
) ;
void am_inc_alarm_count(RECORD_PTR alarm_def_ptr,int count);
void am_inc_alarm_acked_count(RECORD_PTR alarm_def_ptr,int count);
void am_inc_alarm_reset_count(RECORD_PTR alarm_def_ptr,int count);
void am_process_req_alarm_list(TCHAR* msg_ptr,DADDR* sender,COR_BOOLEAN rr_flag);
void am_process_req_alarm_state(TCHAR* msg_ptr,DADDR* sender,COR_BOOLEAN rr_flag);
int am_proc_alm_setup(TCHAR *setUpId);
int am_proc_alm_user(TCHAR *UserId);

RECORD_PTR am_config_new_user_id(TCHAR *user_id);
int GetAlarmLevelIndex(COR_I2 alarm_level);
void am_alloc_alarm_state(TCHAR (*alloc_addr)[30], TCHAR (*cm_addr)[30], RECORD_PTR alloc_req_ptr, const TCHAR* alarm_id, const TCHAR* fr_id, const TCHAR* ref_id, COR_STATUS* retstat);
void AddFilterItem(RECORD_PTR alloc_proc_ptr, int fieldIndex, int matchFlag, TCHAR *filterString);

#endif // _AM_DEFS_H