3.4.19. gc_Start( )
The gc_Start( ) function is used to specify the number of IPT boards to create. See Section 2.2.1, IPT Board Devices for the meaning of an IPT board device. The number of IPT board devices is specified in the IPCCLIB_START_DATA structure; the maximum is 8. See Section 7.2, IPCCLIB_START_DATA for more information.
- Note: When using the SIP protocol, multiple IPT boards are not currently supported.
The IPCCLIB_START_DATA structure contains a pointer to an IP_VIRTBOARD structure for each IPT board device that contains board information such as:
- Total number of IPT devices that can be open concurrently
- Maximum number of IPT devices to be used for H.323 calls
- H.323 local address and signaling port
- Maximum number of IPT devices to be used for SIP calls
- SIP local address and signaling port
See Section 7.11, IP_VIRTBOARD for more information.
The total number of IPT devices is not necessarily the number of IPT devices used for H.323 calls plus the number of IPT devices used for SIP calls. Each IPT device can be used for both H.323 and SIP. If there are 2016 devices available (total_max_calls=2016, three Intel® NetStructure IPT boards), you can specify that all 2016 devices can be used for both H.323 calls (max_h323=2016) and SIP (max_sip=2016), or half are used for H.323 only (max_h323=1008) and half are used for SIP only (max_sip=1008), or any other such combination.
The default value for the maximum number of IPT devices is 120, but this can be set to a value up to 2016. See Section 7.11, IP_VIRTBOARD for more information. The local IP address for each IPT board device is a parameter of type IPADDR in the IP_VIRTBOARD structure. See Section 7.1, IPADDR for more information.
- Notes:
- 1. When using Intel® NetStructure IPT boards that have higher numbers of IP resources, it is important to remember to change the default maximum number of IPT devices (120) to take advantage of the larger number of IP resources.
2. The GC_LIB_START structure must include both the GC_H3R_LIB and GC_IPM_LIB libraries since there are inter-dependencies.
3. The maximum value of the num_boards field is 8.
4. When using the H.323 stack, the maximum number of simultaneous calls recommended is 240.The following code example shows how to create and populate an IPCCLIB_START_DATA structure when using the gc_Start( ) function.
/* only 1 board is currently supported */ #define BOARDS_NUM 1 /* initialize start parameters */ IPCCLIB_START_DATA cclibStartData; memset(&cclibStartData,0,sizeof(IPCCLIB_START_DATA)); IP_VIRTBOARD virtBoards[BOARDS_NUM]; memset(virtBoards,0,sizeof(IP_VIRTBOARD)*BOARDS_NUM); cclibStartData.version = 0x0100; // must be set to 0x0100 cclibStartData.delimiter = ','; cclibStartData.num_boards = BOARDS_NUM; cclibStartData.board_list = virtBoards; virtBoards[0].version = 0x0100; virtBoards[0].total_max_calls = IP_CFG_MAX_AVAILABLE_CALLS; virtBoards[0].h323_max_calls = IP_CFG_MAX_AVAILABLE_CALLS; virtBoards[0].sip_max_calls = IP_CFG_MAX_AVAILABLE_CALLS; virtBoards[0].localIP.ip_ver = IPVER4; // must be set to IPVER4 virtBoards[0].localIP.u_ipaddr.ipv4 = IP_CFG_DEFAULT; virtBoards[0].h323_signaling_port = IP_CFG_DEFAULT; virtBoards[0].sip_signaling_port = IP_CFG_DEFAULT; virtBoards[0].reserved = NULL; // must be set to NULL CCLIB_START_STRUCT cclibStartStruct[] = { {"GC_IPM_LIB", NULL}, {"GC_H3R_LIB", &cclibStartData} }; GC_START_STRUCT gcStartStruct; gcStartStruct.cclib_list = cclibStartStruct; gcStartStruct.num_cclibs = 2; int rc = gc_Start(&gcStartStruct); if(GC_SUCCESS != rc) { // handle the error }Some variations on the code above are as follows:
/* open 120 IPT devices, 120 H323 calls, 120 SIP calls */ virtBoards[0].total_max_calls = IP_CFG_DEFAULT; virtBoards[0].h323_max_calls = IP_CFG_DEFAULT; virtBoards[0].sip_max_calls = IP_CFG_DEFAULT; /* open 2016 IPT devices, 2016 H323 calls, 2016 SIP calls */ virtBoards[0].total_max_calls = 2016; virtBoards[0].h323_max_calls = 2016; virtBoards[0].sip_max_calls = 2016; /* open 2016 IPT devices, 2016 H323 calls, no SIP calls */ virtBoards[0].total_max_calls = 2016; virtBoards[0].h323_max_calls = IP_CFG_MAX_AVAILABLE_CALLS; virtBoards[0].sip_max_calls = IP_CFG_NO_CALLS; /* open 2016 IPT devices, 1008 H323 calls, 1008 SIP calls */ virtBoards[0].total_max_calls = 2016; virtBoards[0].h323_max_calls = 1008; virtBoards[0].sip_max_calls = 1008;The following #defines have been provided as a convenience to the application developer:
- IP_CFG_DEFAULT indicates to the call control library that it should determine and fill in the correct value.
- IP_CFG_MAX_AVAILABLE_CALLS indicates to the call control library that it should use the maximum available resources.
- IP_CFG_NO_CALLS indicates to the call control library that it should not allocate any resources.
The following restrictions apply when populating the IPCCLIB_START_DATA structure. The gc_Start( ) function will fail if these restrictions are not observed.
- The total number of devices (total_max_calls) must not be larger than the sum of the values for the maximum number of H.323 calls (h323_max_calls) and the maximum number of SIP calls (sip_max_calls).
- The total number of devices (total_max_calls) cannot be set to IP_CFG_NO_CALLS.
- The maximum number of H.323 calls (h323_max_calls) and maximum number of SIP calls (sip_max_calls) values cannot both be set to IP_CFG_NO_CALLS.
- When configuring multiple board devices, IP_CFG_DEFAULT cannot be used as an address specifier.
- If different IP addresses or port numbers are not used when running multiple instances of an application for any one technology (H.323 or SIP), then the xxx_max_calls (xxx = h323 or sip) parameter for the other technology must be set to IP_CFG_NO_CALLS.
Click here to contact Telecom Support Resources
Copyright 2003, Intel Corporation