Orientación?

Iniciado por Samy4ever, 14 Abril 2010, 03:27 AM

0 Miembros y 3 Visitantes están viendo este tema.

Samy4ever

Hola,

Llevo leyendo y leyendo sobre bluetooth... !!!

Estoy haciendo el PFC sobre esto, y os quería pedir que me aclararais algún concepto porque entre que la documentación antigua y la nueva cambia... Esto es un caos.

Mi proyecto en realidad es una pequeña parte de uno más grande. El tema es que ocurriran X eventos en un despacho/zona y un profesor debe recibir por bluetooth un aviso sobre esto. En principio los eventos son conocidos así que el aviso puede ser un mensaje de texto o bien una imagen.

Los teléfonos(bluetooth) de los profesores estan guardados en una base de datos préviamente, y lo que se tenga que mandar, también. De ésto no me encargo yo, a mí en teoría ya me llega dado qué mandar y a quién.

He estado jugando un poco y he hecho un inquiry XD En C. Pero nada más, y además creo que tampoco me hará falta, pero era algo sencillo que quería probar para empezar.

He estado leyendo como mandar algo y me "atormenta" el hecho de que se necesite confirmar un PIN en las dos partes para poder hacer una conexión. Entiendo que deba haber la seguridad bluetooth, pero si mi código tiene que ir sólo y no tengo información prévia de los bluetooth de los profesores, cómo hago para mandar algo? Sólo quiero que el receptor diga "me interesa, sí, acepto la conexión" o que diga "no, no acepto, no quiero saber nada de tí". Es posible? He leído que sí, luego que no... No me aclaro.

He estado leyendo y parece que el tema evolucionó, que antes no era así. Pero me confundo con algunas cosas.

He leído que se puede mandar algo si el receptor confirma que quiere recibirlo (sin PIN, sólo confirmación). Qué protocolo/herramienta/código/algo tengo que usar? Es posible?


He preguntado si me dejan tener una base de datos con los PINs o un PIN por defecto pero me han dicho que no... Por lo que voy muy perdido. Os agradecería que me comentaris por donde tengo que tirar, para poder seguir por ese camino, que hay taaaanta documentación y alguna desactualizada que ando perdido ahora mismo.

GRACIAS !!

PS: Encima mi tutor no tiene ni idea de programación ni de bluetooth apenas, sólo me dice que lo quiere así XD

Samy4ever

#1
Hola,

Me respondo a mí mismo con lo que he encontrado (observaciones o ampliaciones son bienvenidas siempre!).

He probado a usar el obexftp, así que pillando el móbl de mi hermana(un sony ericsson) y buscando sus protocolos veo:

CitarService Name: OBEX Object Push
Service RecHandle: 0x2008007
Service Class ID List:
 "OBEX Object Push" (0x1105)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
   Channel: 6
 "OBEX" (0x0008)
Profile Descriptor List:
 "OBEX Object Push" (0x1105)
   Version: 0x0101

Service Name: OBEX File Transfer
Service RecHandle: 0x2008008
Service Class ID List:
 "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
   Channel: 7
 "OBEX" (0x0008)
Profile Descriptor List:
 "OBEX File Transfer" (0x1106)
   Version: 0x0101

Así que he probado:

$ obexftp -b 00:23:45:BD:E9:33 -B 7 -U -p alarma.png

Y me ha pedido confirmación y PIN. Claro, era de esperar, el obex file transfer tiene eso, que pide autentificación.

Luego he probado a usar el protocolo obex object push y, voilá! Me ha pedido confirmación, le doy a SÍ, y sin pedirme PIN se ha mandado :) !!

Ahora mis preguntas son:

1) Esto va así en todos los móbiles o he tenido suerte?
2) Representa que el ObexFTP debería usar sólo la conexión obex file transfer, no? Es decir, porque he podido usar el otro protocolo "a pelo"??
3) Hay alguna alternativa para no usar obexftp?
4) Asumo que he podido hacerlo porque mi hermana tendría las conexiones configuradas como "posibles"... ¿No?
5) En caso de que la última respuesta sea afirmativa... Si alguien no tiene esto activado, es su problema, no? Quiero decir, yo no tengo manera de contactar con él y es su responsabilidad que no lo avise... O sí podría?

Creo que esas son todas... Cualquier otra observación es bienvenida.
Anda que como tuviera que tocar el código obexFTP no me moría, tiene mil cosas!

Muchas gracias por vuestra ayuda!

EDITO: He encontrado otra forma :)
$ ussp-push --dev hci0 00:23:45:BD:XX:XX@6 alarma.png alarma2.png

Otra pregunta más :) ¿Cuál de las dos opciones es mejor y por qué? ¿O es totalmente indiferente?

SirGraham

Hola,

Pedazo mensaje.

Te lo resumo brevemente mi respuesta.

Hay dos niveles basicos de proteccion en Bluetooth. Con confirmacion (solo pregunta) y con peticion de pin (autentificacion) + Confirmacion.

Dependiendo de como se creen los perfiles, se les puede adjudicar un nivel u otro.

"Tradicionalmente" y "en la mayoria de los terminales telefonicos" el perfil OBEX PUSH solo tiene nivel de confirmacion y el OBEX FTP lo tiene de autentificacion.
Por lo que eso te cuadrara con las pruebas que has echo.

Ahora bien... en tu caso es mas sencillo el tema. Siempre son los mismos moviles a los que envias el mensaje. Pueden autentificarse la primera vez (esa validacion queda en el telefono) y ya no habria problema para realizar todo tipo de operaciones con el terminal desde bluetooth.
:P

Saludos,
Sir Graham.
   

Samy4ever

Hola Sir Graham!

Sí, quizá me pasé un poco con el post haha

Gracias por tu ayuda. Y tengo una duda, usando el obexftp, si le digo el canal del obex push siempre debería funcionar, no? Aunque sea el obexftp, como lo mandará por el obex push -en caso de que el teléfono lo acepte- ya debería ir... Si no me equivoco.

De todas formas, el código del ussp... Me parece muuuucho más simple y mejor me quedo con este por si tengo que tocarlo o algo (igual me piden guardar información o cualquier tontería). He leído que bluetooth tiene posibilidad de hasta 7 u 8 canales para usar, sin embargo no he visto ninguna opción en ninguno de los dos programas para decirle cuál va a usar. ¿Teneis idea de si se puede? Mi tutor dijo que investigara sobre eso, pero no he visto nada al respecto. Tampoco me pidió nada concreto pero podría ser interesante para la memória almenos.

No sabía que se guardaban las conexiones ya hechas... Eso es un puntazo haha Genial :)

Gracias!
Sany

SirGraham

Hola,

No estoy totalmente puesto de como hacen "exactamente" esas aplicaciones las operaciones. Pero si te puedo marcar unas pautas.

CitarY tengo una duda, usando el obexftp, si le digo el canal del obex push siempre debería funcionar, no? Aunque sea el obexftp, como lo mandará por el obex push -en caso de que el teléfono lo acepte- ya debería ir... Si no me equivoco.

El programa se llama ObexFTP pero tengo entendido que tiene los dos protocolos (Obex FTP y Obex Push) que son diferentes. No solo tienes que saber el canal del perfil mediante el SDP, tambien tienes que usar el protocolo correcto. Salvando las diferencias, entiende al canal como si fuera un "puerto de TCP/IP" y el procotolo como si fuera "ftp", "http", "pop3", etc...

Tu puedes usar cualquier protocolo de estos en cualquier puerto, siempre y cuando el receptor y el emisor esten "de acuerdo". Para ello existe el SDP que permite saber como esta para un receptor todos los perfiles con su informacion.

En Bluetooth puedes saber ademas del canal, el tipo de servicio (el tipo de protocolo a usar) para un perfil concreto.

¿Con  esto que quiero decir? que no envies usando el protocolo Obex FTP sobre un perfil de bluetooth que sea Obex Push y viceversa.

CitarDe todas formas, el código del ussp... Me parece muuuucho más simple y mejor me quedo con este por si tengo que tocarlo o algo (igual me piden guardar información o cualquier tontería). He leído que bluetooth tiene posibilidad de hasta 7 u 8 canales para usar, sin embargo no he visto ninguna opción en ninguno de los dos programas para decirle cuál va a usar. ¿Teneis idea de si se puede? Mi tutor dijo que investigara sobre eso, pero no he visto nada al respecto. Tampoco me pidió nada concreto pero podría ser interesante para la memória almenos.

Es cierto que tienes la posibilidad de abrir varios perfiles de bluetooth desde un origen a distintos dispositivos remotos. Pero esto depende tambien del ancho de banda. No es infinito y normalmente con una gestion  de Obex Push no llegas a poder abrir mas de 4 o 5 (a poco que envies algo de informacion).

Para ello tendrias (no se si puedes) volver a abrir la aplicacion para otro dispositivo bluetooth y con su canal de el perfil obex push.

Nosotros no hacemos esa operacion con una aplicacion externa. Hemos implementado varios protocolos (entre ellos el obex push) y se lanza un thread (aproximadamente) por cada conexion que se quiere abrir desde el emisor....

Saludos,
Sir Graham.