(Page 9 of 32 in this chapter) Version
typedef union _NMS_GR303_CHANNEL_LOCATION_T
{
struct {
DWORD boardNb;
DWORD trunkNb;
DWORD timeslotNb;
} CG;
}NMS_GR303_CHANNEL_LOCATION_T
typedef void(*NMS_GR303_CHANNEL_CALLBACK_T)
(NMS_GR303_INTERFACE_ID_T interfaceId, NMS_GR303_CHANNEL_LOCATION_T channel_loc, NMS_GR303_CHANNEL_EVENT_T channel_event, void *databuffer, DWORD datasize);
void ProvisionInterface( void )
{
NMS_INTERFACE NewInterface = {0};
NMS_GR303_RESULT_T NmsResult;
char Selection;
printf("NMS_GR303ProvisionInterface:\n");
/* Set parameters */
promptdw_nodft("Enter interfaceId", &NewInterface.InterfaceId);
NewInterface.ChannelRxBufferSize = NMS_GR303_RX_BUFFER_SIZE;
NewInterface.ChannelRxBuffer = calloc(
NewInterface.ChannelRxBufferSize, 1 );
/* Configure channel parameters */
do
{
Selection = 'y';
promptchar("Add a new channel ? (y/n)", &Selection );
if(Selection == 'y')
{
GetChannelLocationNMS(
&NewInterface.NMS_Channels[NewInterface.NumChannels++] );
}
}
while (Selection != 'n' && NewInterface.NumChannels <
NMS_GR303_CHANNEL_LOCATIONS);
NmsResult = NMS_GR303ProvisionInterface (
NewInterface.InterfaceId,
NewInterface.NumChannels,
NewInterface.NMS_Channels,
ChannelCallBackFunction,
NewInterface.ChannelRxBuffer,
NewInterface.ChannelRxBufferSize);
Result=%s\n",PRINT_RESULT(NmsResult));
if( NMSGR303_SUCCESS != NmsResult )
{
/* Discard bad interface configuration */
free(NewInterface.ChannelRxBuffer);
}
}
(Page 9 of 32 in this chapter) Version