# h324VendorIDIndication

Sends a vendor ID indication to the remote terminal.

#### Prototype

DWORD h324VendorIDIndication ( MSPHD msphd, H324_VENDORID_INDICATION *pVendorInd)

Argument | Description
msphd | MSPP handle associated with the MUX endpoint.
pVendorInd | Pointer to the H_324_VENDORID_INDICATION structure that describes the VendorID indication to transmit: typedef struct tag_H324_VENDORID_INDICATION { unsigned short vendorIDLen; unsigned short productNumberLen; unsigned short versionNumberLen; unsigned char isNonStandard; unsigned char bytes[sizeof(char)]; // "vendorID" field resides at bytes[0] through bytes[vendorIDLen-1]. // OPTIONAL "productNumber" resides at // bytes[vendorIDLen] through // bytes[vendorIDLen+productNumberLen-1]. // OPTIONAL "versionNumber" resides at // bytes[vendorIDLen+productNumberLen] // through bytes[vendorIDLen+productNumberLen+versionNumberLen-1]. } H324_VENDORID_INDICATION; For information about the fields in this structure, see H324_VENDORID_INDICATION.

#### Return values

Return value | Description
SUCCESS |
CTAERR_NOT_FOUND | msphd was not found. Neither h324Start nor h324Delete were called.
H324ERR_INTERNAL_ERROR | Internal error in the 3G-324M Middleware.
H324ERR_MUTEX_LOCK_FAILED | Internal error trying to lock mutex.
H324ERR_NOT_INITIALIZED | h324Initialize was not called first.

#### Events

None.

#### Example

#include <h324def.h>
unsigned char vendor_id[] = { 1, 28, 111, 97, 111, 84, 43, 86, 49 };
char prod_num[] = "N5000";
char vers_num[] = "1.23.5";
enum vendorIdType { t_ObjectId, t_h221NonStandard };
int sendVendorIDIndication(unsigned char * vendor_p, unsigned vendor_len,
unsigned char * prodNum_p, unsigned prodNum_len,
unsigned char * verNum_p, unsigned verNum_len,
vendorIdType type, MSPHD msphd)
{
unsigned result, payloadSz = vendor_len + prodNum_len + verNum_len;
H324_VENDORID_INDICATION * pVIBuf;
if (!( pVIBuf = (H324_VENDORID_INDICATION *) malloc(
sizeof(H324_VENDORID_INDICATION)+ payloadSz)))
return -1;
memset(pVIBuf, 0, sizeof(H324_VENDORID_INDICATION) + payloadSz);
// VendorID is either an ObjectID or H.221 NonStandard identifer.
pVIBuf->isNonStandard = (type == t_h221NonStandard);
// VendorID field lengths are required.
pVIBuf->vendorIDLen = vendor_len;
pVIBuf->productNumberLen = prodNum_len; // MBZ unless productNumber populated
pVIBuf->versionNumberLen = verNum_len; // MBZ unless versionNumber populated
// Copy required vendor ID into VendorID indication buffer.
memcpy(&pVIBuf->bytes[0], vendor_p, vendor_len);
// Copy optional productNumber and versionNumber fields, if present.
if (prodNum_len)
memcpy(&pVIBuf->bytes[vendor_len], prodNum_p, prodNum_len);
if (verNum_len)
memcpy(&pVIBuf->bytes[vendor_len + prodNum_len], verNum_p, verNum_len);
// Send the VendorID indication.
result = h324VendorIDIndication(msphd, pVIBuf);
free(pVIBuf);
if (result != SUCCESS)
return -2;
return 0; // VendorID successfully sent.
}