# NMS_V5PhSendData

Sends a LAPV5 frame to a specified HDLC channel.

#### Prototype

NMS_V5_RESULT_T NMS_V5PhSendData ( NMS_GR303_INTERFACE_ID_T interfaceId, NMS_V5_CHANNEL_LOCATION_T channel_loc, DWORD number_bytes, void *lapv_data)

Argument | Description
interfaceId | Interface ID of a provisioned interface.
channel_loc | HDLC channel location to which to send data. typedef union _NMS_V5_CHANNEL_LOCATION_T { struct { DWORD boardNb; DWORD trunkNb; DWORD timeslotNb; } CG; }NMS_V5_CHANNEL_LOCATION_T
number_bytes | Size of LAPV frame in bytes. The maximum number of bytes is 260.
lapv_data | Pointer to an application buffer containing the LAPV frame to send.

#### Return values

Return value | Description
NMSV5_SUCCESS |
NMSV5_INTERNAL_FAILURE | Internal failure. Refer to the trace log for more information.
NMSV5_INVALID_CHANNEL | Specified HDLC channel is not provisioned on this channel.
NMSV5_INVALID_INTERFACE_ID | Specified interface is not provisioned.
NMSV5_INVALID_PARMS | Invalid function arguments.
NMSV5_INVALID_STATE | Specified interface is not started.
NMSV5_NOT_INITIALIZED | NMS V5 library was not initialized with NMS_V5Initialize.

#### Events

Event | Description
NMSV5_EVENT_TX_ERROR | Internal HDLC transmit error occurred (no buffer is returned). Returned by a NMS_V5PhSendData call.
NMSV5_EVENT_TX_FIFO_UNDERRUN | HDLC transmit FIFO underrun. No buffer is returned. Not supported for CG 6100C or CG 6500C boards.
NMSV5_EVENT_TX_FIFO_OVERRUN | HDLC transmit FIFO overrun. No buffer is returned. Not supported for CG 6100C or CG 6500C boards.
NMSV5_EVENT_TX_FIFO_QUEUE_FULL | HDLC transmit send queue is full (no buffer is returned). This error should not occur under normal circumstances.

#### Details

NMS_V5PhSendData is asynchronous and returns without waiting for the board to report the result of the send operation. The application must start the interface before it calls NMS_V5PhSendData.

If an error occurs during the transmission, the error is reported to the application by the following application-defined callback:

typedef void( *NMS_V5_CHANNEL_CALLBACK_T )
( NMS_V5_INTERFACE_ID_T interfaceId,
NMS_V5_CHANNEL_LOCATION_T channel_loc,
NMS_V5_CHANNEL_EVENT_T channel_event,
void *databuffer,
DWORD datasize);

To return error information, the NMS V5 library invokes an application-defined callback (channel_callback) and specifies the type of transmit error in the channel_event field. When the NMS V5 library returns a transmission error, it does not indicate the send request with which the error is associated.

Note: Results of send operations are not reported on CG 6100C boards.

#### See also

NMS_V5StartInterface

#### Example

void SendData(BYTE *FrameBuffer, DWORD NumberBytes )
{
NMS_V5_RESULT_T NmsResult;
DWORD InterfaceId;
NMS_V5_CHANNEL_LOCATION_T ChannelLocation;
printf("SendData:\n");
/* Get parameters */
promptdw_nodft("Enter interfaceId", &InterfaceId);
printf("Enter channel location:\n");
GetChannelLocationNMS( &ChannelLocation );
NmsResult = NMS_V5PhSendData( InterfaceId,
ChannelLocation,
NumberBytes,
FrameBuffer );
printf ("PhSendData: Result=%s\n",PRINT_RESULT(NmsResult));
}