This code performs a IR connection. The IrOpen, IrBind, and IrDiscoverReq works fine,
but it fails calling the IrConnectReq. What is wrong?
static void Test()
{
IrStatus estado;
err = SysLibFind(irLibName, &refNum);
ErrFatalDisplayIf(err, "Error cargando libreria");
err = IrOpen(refNum, irOpenOptSpeed9600);
ErrFatalDisplayIf(err, "Error en IrOpen");
irEstado = IR_ESPERANDO_BIND;
estado = IrBind(refNum, &con, callBack);
ErrFatalDisplayIf(estado == IR_STATUS_FAILED, "Error en IrBind");
}
static void callBack(IrConnect * irCon, IrCallBackParms * params)
{
IrStatus estado;
char s[100];
UInt i;
switch (params->event)
{
case LEVENT_DISCOVERY_CNF:
if (irEstado == IR_ESPERANDO_DISCOVER)
{
if (!params->deviceList->nItems)
{
irEstado = IR_INACTIVO;
IrUnbind(refNum, &con);
IrClose(refNum);
FrmAlert(ColocarElTelefonoAlert);
return;
}
else
{
if (!(params->deviceList->dev[0].xid[0] & IR_HINT_MODEM))
{
// El dispositivo no es un modem
irEstado = IR_INACTIVO;
IrUnbind(refNum, &con);
IrClose(refNum);
FrmAlert(DispositivoIRDesconocidoAlert);
return;
}
// Realizar la conexion
irEstado = IR_ESPERANDO_CONNECT;
IrSetConTypeTTP(&con);
packet.len = 0;
estado = IrConnectReq(refNum, &con, &packet, 0);
ErrFatalDisplayIf(estado != IR_STATUS_PENDING, "Error en IrConnect");
return;
}
}
break;
case LEVENT_STATUS_IND:
switch (params->status)
{
case IR_STATUS_MEDIA_NOT_BUSY:
if (irEstado == IR_ESPERANDO_BIND)
{
// Mandar un Discovery
estado = IrDiscoverReq(refNum, &con);
ErrFatalDisplayIf(estado == IR_STATUS_MEDIA_BUSY, "IR_STATUS_MEDIA_BUSY");
ErrFatalDisplayIf(estado == IR_STATUS_FAILED, "IR_STATUS_FAILED");
irEstado = IR_ESPERANDO_DISCOVER;
return;
}
break;
}
break;
}
}
Any idea?
Thanks.
[EMAIL PROTECTED]