4.2.5. gc_GetSigInfo( )
The gc_GetSigInfo( ) function enables an application to retrieve the content of the message that triggered an event. This can be used if the application requires access to some SS7 specific message parameter that is not directly accessible using another Global Call function. It is then up to the application to parse the message and extract the information it requires.
Since events are delivered to the application using an asynchronous mechanism (SRL event queue), it is possible that a subsequent message may already be received and other events already be put in the queue by the time the application calls the gc_GetSigInfo( ) function. Therefore the SS7 call control library stores messages in a cyclic buffer so that the application can retrieve a message associated with a particular event. The event for which the application wishes to retrieve the associated message is specified by passing the Global Call metaevent to the function.
The size of the cyclic buffer is configurable by using the gc_SetParm( ) function and specifying the GCPR_RECEIVE_INFO_BUF parameter. There is one cyclic buffer for each circuit. The default size of the buffer being 0, an application that wishes to use the gc_GetSigInfo( ) function must set the GCPR_RECEIVE_INFO_BUF parameter for each line device.
- Note: The third parameter in the gc_GetSigInfo( ) function signature, info_id, is ignored by the SS7 call control library.
The retrieved messages are returned as an S7_SIGINFO_BLK structure in the buffer provided by the application. See Section 7.4, S7_SIGINFO_BLK Structure. The structure contains the ISUP primitive (for example, IAM, ACM, ANM...) and the message parameters. The message parameters are in a format that corresponds very closely to the ISUP format, the difference being that all parameters are formatted the same way whether they are mandatory or optional in the message. All parameters follow the format of ISUP optional parameters (parameter type, length and value). Due to the way in which the SS7 stack is implemented, for protocols other than ISUP, messages are mapped to ISUP primitive and parameters format.
The following code demonstrates the use of gc_GetSigInfo( ):
char buffer[350]; // Should be enough to hold the GC/SS7 SIGINFO header // + any ISUP message S7_SIGINFO_BLK *blk_p = (S7_SIGINFO_BLK *)buffer; gc_GetSigInfo(ldevH, buffer, U_IES, &metaevt); // blk_p->prim is the primitive // blk_p->length is the total dara length // blk_p->data holds the first IE. Other IEs follow, the next one starting // after the end of the data for the previous one.
Click here to contact Telecom Support Resources
Copyright 2003, Intel Corporation