Dialogic IP Phone 05-2239-009 User Manual

Page of 604
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);
}