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]


Reply via email to