Dialogic Dialogic Global Call IP IP Phone User Manual


 
267
Dialogic Corporation
When a GCEV_ALARM event occurs, use the Dialogic
®
Global Call API Alarm Management
System (GCAMS) functions such as, gc_AlarmNumber( ) to retrieve information about the alarm.
The following code demonstrates how to process a QoS alarm when it occurs. In this case the
application simply logs information about the alarm.
/****************************************************************
* NAME: void print_alarm_info(METAEVENTP metaeventp,
* struct channel *pline)
* DESCRIPTION: Prints alarm information
* INPUTS: metaeventp - pointer to the alarm event
* pline - pointer to the channel data structure
* RETURNS: NA
* CAUTIONS: Assumes already known to be an alarm event
****************************************************************/
static void print_alarm_info(METAEVENTP metaeventp, struct channel *pline)
{
long alarm_number;
char *alarm_name;
unsigned long alarm_source_objectID;
char *alarm_source_object_name;
char str[MAX_STRING_SIZE];
if (gc_AlarmNumber(metaeventp, &alarm_number) != GC_SUCCESS)
{
sprintf(str, "gc_AlarmNumber(...) FAILED");
printandlog(pline->index, GC_APIERR, NULL, str);
printandlog(pline->index, STATE, NULL, " ");
exitdemo(1);
}
if (gc_AlarmName(metaeventp, &alarm_name) != GC_SUCCESS)
{
sprintf(str, "gc_AlarmName(...) FAILED");
printandlog(pline->index, GC_APIERR, NULL, str);
printandlog(pline->index, STATE, NULL, " ");
exitdemo(1);
}
if (gc_AlarmSourceObjectID(metaeventp, &alarm_source_objectID) != GC_SUCCESS)
{
sprintf(str, "gc_AlarmSourceObjectID(...) FAILED");
printandlog(pline->index, GC_APIERR, NULL, str);
printandlog(pline->index, STATE, NULL, " ");
exitdemo(1);
}
if (gc_AlarmSourceObjectName(metaeventp, &alarm_source_object_name) != GC_SUCCESS)
{
sprintf(str, "gc_AlarmSourceObjectName(...) FAILED");
printandlog(pline->index, GC_APIERR, NULL, str);
printandlog(pline->index, STATE, NULL, " ");
exitdemo(1);
}
sprintf(str, "Alarm %s (%d) occurred on ASO %s (%d)",
alarm_name, (int) alarm_number, alarm_source_object_name,
(int) alarm_source_objectID);
printandlog(pline->index, MISC, NULL, str);
}